From 79af0bb07a9cccfe9c07710cdb5a8aba9cbc99e9 Mon Sep 17 00:00:00 2001 From: Victor Date: Wed, 14 Nov 2018 19:46:08 +0200 Subject: [PATCH] 03 --- res/bin/en.instr | 208 ++++++++ res/bin/en.lang | 103 ++++ res/bin/ru.instr | 208 ++++++++ res/bin/ru.lang | 103 ++++ res/bin/test.mid | Bin 0 -> 148 bytes res/img/attr.png | Bin 0 -> 151 bytes res/img/attractive.png | Bin 0 -> 165 bytes res/img/attrcur.png | Bin 0 -> 165 bytes res/img/attrdata.png | Bin 0 -> 103 bytes res/img/attrdatacur.png | Bin 0 -> 103 bytes res/img/dot.png | Bin 0 -> 88 bytes res/img/en_GB.png | Bin 0 -> 588 bytes res/img/icon.png | Bin 0 -> 764 bytes res/img/keyPad.png | Bin 0 -> 127 bytes res/img/main/0.png | Bin 0 -> 1673 bytes res/img/main/1.png | Bin 0 -> 1394 bytes res/img/main/2.png | Bin 0 -> 1177 bytes res/img/main/3.png | Bin 0 -> 1134 bytes res/img/main/4.png | Bin 0 -> 1366 bytes res/img/main/5.png | Bin 0 -> 1809 bytes res/img/main/6.png | Bin 0 -> 1577 bytes res/img/main/7.png | Bin 0 -> 1099 bytes res/img/main/8.png | Bin 0 -> 1490 bytes res/img/notes0.png | Bin 0 -> 157 bytes res/img/notes1.png | Bin 0 -> 157 bytes res/img/nums0m.png | Bin 0 -> 117 bytes res/img/nums1m.png | Bin 0 -> 117 bytes res/img/ru_RU.png | Bin 0 -> 543 bytes res/img/triplet.png | Bin 0 -> 93 bytes res/lang/about_en | 11 + res/lang/about_ru | 11 + res/lang/help | 361 +++++++++++++ res/lang/instr_en.loc | 208 ++++++++ res/lang/instr_ru.loc | 208 ++++++++ res/lang/strings_en.loc | 94 ++++ res/lang/strings_ru.loc | 94 ++++ src/L.java | 153 ------ src/Main.java | 44 -- src/{ => main}/Key.java | 2 + src/{midedit => main}/L.java | 8 +- src/main/Main.java | 97 ++++ src/{ => main}/P.java | 39 +- src/{ => main}/Rms.java | 14 + src/{ => main}/text.txt | 6 +- src/midedit/CompositionForm.java | 111 ++-- src/midedit/Constants.java | 188 +++---- src/midedit/DrumsCanvas.java | 4 +- src/midedit/FileChooser.java | 233 --------- src/midedit/LangParser.java | 219 -------- src/midedit/MidiFile.java | 3 +- src/midedit/MixerCanvas.java | 490 +++++++++--------- src/midedit/MixerMain.java | 404 --------------- src/midedit/MixerModel.java | 20 +- src/midedit/NotesCanvas.java | 190 +++---- src/midedit/Rms.java | 76 --- src/midedit/Settings.java | 129 ----- src/midedit/TempoList.java | 16 +- src/midedit/VolumeForm.java | 10 +- src/midedit/WaitForm.java | 3 +- src/midedit/io/JSR75File.java | 7 +- src/midedit/media/AbstractPlayer.java | 2 +- src/midedit/media/Composition.java | 7 +- src/midedit/media/JSR135Player.java | 2 +- src/{ => ui}/FileManager.java | 36 +- src/{ => ui}/Menu.java | 114 +++- src/ui/SaveName_frm.java | 62 +++ src/ui/SettingsUI.java | 95 ++++ src/{About.java => ui/TextView.java} | 50 +- src/{ => ui}/UI.java | 3 + src/{midedit => util}/BufDataInputStream.java | 2 +- src/{ => util}/FWCashe.java | 2 + src/{ => util}/StringEncoder.java | 2 + 72 files changed, 2579 insertions(+), 1873 deletions(-) create mode 100644 res/bin/en.instr create mode 100644 res/bin/en.lang create mode 100644 res/bin/ru.instr create mode 100644 res/bin/ru.lang create mode 100644 res/bin/test.mid create mode 100644 res/img/attr.png create mode 100644 res/img/attractive.png create mode 100644 res/img/attrcur.png create mode 100644 res/img/attrdata.png create mode 100644 res/img/attrdatacur.png create mode 100644 res/img/dot.png create mode 100644 res/img/en_GB.png create mode 100644 res/img/icon.png create mode 100644 res/img/keyPad.png create mode 100644 res/img/main/0.png create mode 100644 res/img/main/1.png create mode 100644 res/img/main/2.png create mode 100644 res/img/main/3.png create mode 100644 res/img/main/4.png create mode 100644 res/img/main/5.png create mode 100644 res/img/main/6.png create mode 100644 res/img/main/7.png create mode 100644 res/img/main/8.png create mode 100644 res/img/notes0.png create mode 100644 res/img/notes1.png create mode 100644 res/img/nums0m.png create mode 100644 res/img/nums1m.png create mode 100644 res/img/ru_RU.png create mode 100644 res/img/triplet.png create mode 100644 res/lang/about_en create mode 100644 res/lang/about_ru create mode 100644 res/lang/help create mode 100644 res/lang/instr_en.loc create mode 100644 res/lang/instr_ru.loc create mode 100644 res/lang/strings_en.loc create mode 100644 res/lang/strings_ru.loc delete mode 100644 src/L.java delete mode 100644 src/Main.java rename src/{ => main}/Key.java (99%) rename src/{midedit => main}/L.java (96%) create mode 100644 src/main/Main.java rename src/{ => main}/P.java (54%) rename src/{ => main}/Rms.java (78%) rename src/{ => main}/text.txt (65%) delete mode 100644 src/midedit/FileChooser.java delete mode 100644 src/midedit/LangParser.java delete mode 100644 src/midedit/MixerMain.java delete mode 100644 src/midedit/Rms.java delete mode 100644 src/midedit/Settings.java rename src/{ => ui}/FileManager.java (93%) rename src/{ => ui}/Menu.java (68%) create mode 100644 src/ui/SaveName_frm.java create mode 100644 src/ui/SettingsUI.java rename src/{About.java => ui/TextView.java} (85%) rename src/{ => ui}/UI.java (99%) rename src/{midedit => util}/BufDataInputStream.java (99%) rename src/{ => util}/FWCashe.java (99%) rename src/{ => util}/StringEncoder.java (99%) diff --git a/res/bin/en.instr b/res/bin/en.instr new file mode 100644 index 0000000..b13fffd --- /dev/null +++ b/res/bin/en.instr @@ -0,0 +1,208 @@ +Drums +Acoustic Grand +Bright Acoustic +Electric Grand +Honky-Tonk +Electric Piano 1 +Electric Piano 2 +Harpsichord +Clav +Celesta +Glockenspiel +Music Box +Vibraphone +Marimba +Xylophone +Tubular Bells +Dulcimer +Drawbar Organ +Percussive Organ +Rock Organ +Church Organ +Reed Organ +Accoridan +Harmonica +Tango Accordian +Acoustic Guitar(nylon) +Acoustic Guitar(steel) +Electric Guitar(jazz) +Electric Guitar(clean) +Electric Guitar(muted) +Overdriven Guitar +Distortion Guitar +Guitar Harmonics +Acoustic Bass +Electric Bass(finger) +Electric Bass(pick) +Fretless Bass +Slap Bass 1 +Slap Bass 2 +Synth Bass 1 +Synth Bass 2 +Violin +Viola +Cello +Contrabass +Tremolo Strings +Pizzicato Strings +Orchestral Strings +Timpani +String Ensemble 1 +String Ensemble 2 +SynthStrings 1 +SynthStrings 2 +Choir Aahs +Voice Oohs +Synth Voice +Orchestra Hit +Trumpet +Trombone +Tuba +Muted Trumpet +French Horn +Brass Section +SynthBrass 1 +SynthBrass 2 +Soprano Sax +Alto Sax +Tenor Sax +Baritone Sax +Oboe +English Horn +Bassoon +Clarinet +Piccolo +Flute +Recorder +Pan Flute +Blown Bottle +Skakuhachi +Whistle +Ocarina +Lead 1 (square) +Lead 2 (sawtooth) +Lead 3 (calliope) +Lead 4 (chiff) +Lead 5 (charang) +Lead 6 (voice) +Lead 7 (fifths) +Lead 8 (bass+lead) +Pad 1 (new age) +Pad 2 (warm) +Pad 3 (polysynth) +Pad 4 (choir) +Pad 5 (bowed) +Pad 6 (metallic) +Pad 7 (halo) +Pad 8 (sweep) +FX 1 (rain) +FX 2 (soundtrack) +FX 3 (crystal) +FX 4 (atmosphere) +FX 5 (brightness) +FX 6 (goblins) +FX 7 (echoes) +FX 8 (sci-fi) +Sitar +Banjo +Shamisen +Koto +Kalimba +Bagpipe +Fiddle +Shanai +Tinkle Bell +Agogo +Steel Drums +Woodblock +Taiko Drum +Melodic Tom +Synth Drum +Reverse Cymbal +Guitar Fret Noise +Breath Noise +Seashore +Bird Tweet +Telephone Ring +Helicopter +Applause +Gunshot + +Piano +Chromatic Percussion +Organ +Guitar +Bass +Strings & Orchestral instruments +Ensemble +Brass +Reed +Pipe +Synth Lead +Synth Pad +Synth SFX +Ethnic Misc +Percussive +SFX + +HighQ +Slap +Scratch Push +Scratch Pull +Sticks +Square Click +Metronome Click +Metronome bell +Acoustic Bass Drum +Bass Drum 1 +Side Stick +Acoustic Snare +Hand Clap +Electric Snare +Low Floor Tom +Closed Hi-Hat +High Floor Tom +Pedal Hi-Hat +Low Tom +Open Hi-Hat +Low-Mid Tom +Hi-Mid Tom +Crash Cymbal 1 +High Tom +Ride Cymbal 1 +Chinese Cymbal +Ride Bell +Tambourine +Splash Cymbal +Cowbell +Crash Cymbal 2 +Vibraslap +Ride Cymbal 2 +Hi Bongo +Low Bongo +Mute Hi Conga +Open Hi Conga +Low Conga +High Timbale +Low Timbale +High Agogo +Low Agogo +Cabasa +Maracas +Short Whistle +Long Whistle +Short Guiro +Long Guiro +Claves +Hi Wood Block +Low Wood Block +Mute Cuica +Open Cuica +Mute Triangle +Open Triangle +Shaker +Jingle Bells +Belltree +Castanets +Mute Surdo +Open Surdo \ No newline at end of file diff --git a/res/bin/en.lang b/res/bin/en.lang new file mode 100644 index 0000000..c7e7bf9 --- /dev/null +++ b/res/bin/en.lang @@ -0,0 +1,103 @@ +New +Resume +About +Open +Save +Save As +File +Tools +Exit +RMS +Cancel +Save +Error +Opening Error +ListInstruments +Impossible +Saved +Saving Error +Saving +Opening +Chooser error +Update error +Api error +Instruments +Menu +Back +Insert note with current attributes +To change note's attribute (e.g. lenght) delete note, if already insert,choose attribute (<7>), change it (<0>,<*>,<#>) and insert a new note +Delete note +Undo +Note Volume '+'\'-' +Play from current position/Stop +Play note on cursor +Select note's attribute +Change selected note's attribute +Stop play +Navigation on composition +Quick navigation +Mark Begin +Mark End +Copy +Paste Insert +Paste Replace +Paste Overwrite +Delete&Shift +Clean +Play Channel On Screen +Undo +Play Channel All +Redo +Add Instrument +Edit +Set Instrument +Del Instrument +Tempo Box +Volume Box +Meter +Play +Play origin +Ok +Up One Level +Delete +Choose folder +Open file +Please, wait +Updating list +Save in this Folder +Insert Tempo +Delete Tempo +Temp +Time(Measure) +Seek +Meter +numerator +denominator(negative power of two) +Instruments +Meter = numerator/ (2^denominator). For example, use 4/4 (numerator=4; denominator=2) or 6/8 (numerator=6; denominator=3) +Delta +Play/Stop +Play all +Play screen +Track all +Track screen +Mark +Mark Begin +Mark End +UnMark +Modify block +Modify Mode +Copy +Paste +Insert +Replace +Blend +Clean Sel +Redo +Help +Key Map +Quick Commands +Navigation +Nums, otherWise KeyPad, when edit notes: +Icons otherWise List, inMain Menu +***** \ No newline at end of file diff --git a/res/bin/ru.instr b/res/bin/ru.instr new file mode 100644 index 0000000..51615a1 --- /dev/null +++ b/res/bin/ru.instr @@ -0,0 +1,208 @@ +Ударные +Рояль +Концертный(осветленный) рояль +Электронный рояль +Расстроенное(таперское) пианино +Электропиано +Электропиано 2 +Клавесин +Клавинет (клавесин 2) +Челеста +Колокольчики (бутылки) +'Музыкальная шкатулка' +Вибрафон +Маримба +Ксилофон +Колокола (трубчатые) +Цимбалы (сантур) +Электронный орган +Орган с перкуссией (с ударной атакой) +Рок-орган +Церковный орган +Деревянный (язычковый) органчик +Аккордеон +Гармоника +'Танго'-аккордеон +Гитара-нейлон +Гитара-сталь +Джазовая электрогитара +Акустическая электрогитара +Засурдиненная (приглушенная) электрогитара +Овердрайв (перегруз) +Дисторшн (исказитель) +Флажолет +Контрабас-пицикато +Бас-гитара пальцевым щипком +Бас-гитара медиатором +Бездадовый бас +Бас-слэп 1 +Бас-слэп 2 +Синт-бас 1 +Синт-бас 2 +Скрипка +Альт +Виолончель +Контрабас +Тремоло струнных +Пицикато струнных +Арфа +Литавры +Струнная группа 1 +Струнная группа 2 +Синтетические струнные 1 +Синтетические струнные 2 +Хор на слог 'а' +Голос на слог 'о' +Синтетический голос +'Удар' (весь оркестр) +Труба +Тромбон +Туба +Труба с сурдиной +Валторна +Медная группа +Синтетические медные 1 +Синтетические медные 2 +Сопрано-саксофон +Альт-саксофон +Тенор-саксофон +Баритон-саксофон +Гобой +Английский рожок +Фагот +Кларнет +Флейта-пикколо +Флейта +Блокфлейта +Пан-флейта +Дуновение в бутылки +Шакухачи +Свисток +Окарина +Соло-гитара (прямоугольная волна) +Соло-гитара (синусоидальная волна) +Calliope-гитара +Chiff-гитара +Charang-гитара +Соло-гитара (голосовой тембр) +Соло-гитара (с квинтовым обертоном) +Бас и соло-гитара +Синтезаторный звук нью-эйдж +Теплый синт-звук +Полисинтезатор +Синт-'хор' +Воздушный (смычковый синт-звук) +Металлический синт +Ореол +Развертывающийся(качающийся) звук +Дождь +Звуковая дорожка +Хрусталь (кристалл) +Атмосфера +Яркость +Гоблины +(Качающееся) эхо +Звездный (SciFi) +Ситар +Банджо +Шамисен +Кото +Калимба +Волынка (Bagpipe) +Уличная скрипка +Санаи (Shanai) +Колокольчик +Агого +Стальные барабаны +Гольцтон (деревянные коробочки) +Таико +Мелодик том +Электронные барабаны +Тарелка 'задом наперед'(реверс) +Свист гитарной струны (шум ладов) +Придыхание +Прибой +Птицы +Телефонный звонок +Вертолет +Алодисменты +Выстрел + +Фортепиано +Хроматиккаа и Перкуссия +Орган +Гитара +Бас +Струнные и Оркестровые +Ансамбль +Медные +Тростник +Труба +Ведущий синтезатор +Ситезатор 2-й голос +Синт-эффекты +Народные +Перкуссия +Звуковые эффекты + +Высокое Q +Слэп +Царапанье (от себя) +Царапанье (к себе) +Барабанные палочки +Электронный метроном +Метроном +Звенящий метроном +Акустический большой барабан +Большой барабан +Удар по ободу +Акустический малый барабан +Хлопок в ладоши +Электрический малый барабан +Низкий напольный томтом +Закрытый хэт +Высокий напольный томтом +Хэт (педалью) +Низкий томтом +Открытый хэт +Низкий средний томтом +Высокий средний томтом +Крэш-тарелка +Высокий томтом +Райд-тарелка +Китайская тарелка +Райд-тарелка (по центральной части) +Бубен +Сплэш-тарелка +Коровий (альпийский) колокольчик +Крэш-тарелка 2 +Вибрирующий слэп +Райд-тарелка 2 +Высокий бонго +Низкий бонго +Закрытый высокий бонго +Открытый высокий бонго +Низкая конга +Высокий тимбал +Низкий тимбал +Высокий агого +Низкий агого +Cabasa Кабаса +Маракас +Короткий свисток +Длинный свисток +Короткое гуиро +Длинное гуиро +Клавес +Высокая коробочка +Низкая коробочка +Закрытая куика +Открытая куика +Закрытый треугольник +Открытый треугольник +Шейкер +Бубенцы +Бунчук +Кастаньеты +Закрытый сурдо +Открытый сурдо \ No newline at end of file diff --git a/res/bin/ru.lang b/res/bin/ru.lang new file mode 100644 index 0000000..6dde74b --- /dev/null +++ b/res/bin/ru.lang @@ -0,0 +1,103 @@ +Новый +Продолжить +О программе +Открыть +Сохранить +Сохранить как +Файл +Настройки +Выход +РМС +Отмена +Сохранить +Ошибка +Ошибка открытия +Список инструментов +Невозможно +Сохранено +Ошибка сохранения +Сохранение +Открытие +Ошибка выбора файла +Ошибка обновления +Ваш телефон не поддерживает необходимые Api +Инструменты +Меню +Назад +Поставить ноту с текущими атрибутами +Для того, чтобы изменить атрибут ноты (напр длину), удалите ноту, если уже поставлена, выберите атрибут (<7>), измените его (<0>,<*>,<#>) и ставьте ноту +Удалить ноту +Откат +Громкость ноты '+'\'-' +Играть с текущей позиции/Стоп +Играть ноту под курсором +Выбрать атрибут ноты +Изменение атрибута +Стоп +Навигация по композиции +Быстрая навигация +Начало выделения +Конец выделения +Копировать +Вставить (раздвинуть) +Вставить (наложить) +Вставить (перезаписать) +Удалить и сдвинуть +Очистить +Играть канал с экрана +Отмена действия +Играть канал +Вернуть дейсвие +Добавить инструмент +Редактировать +Установить инструмент +Удалить инструмент +Темп-бокс +Громкость +Размер +Играть +Играть оригинал +Ok +Назад +Удалить +Выбрать папку +Открытый файл +Пожалуйста, подождите +Обновление списка +Сохранить здесь +Вставить Темп +Удалить Темп +Темп +Время(Мера) +Поиск +Размер +числитель +знаменатель(2 в степени) +Инструменты +Метр = числитель/ (2^знаменатель). Например, используйте 4/4 (numerator=4; denominator=2) или 6/8 (numerator=6; denominator=3) +Дельта-смещение +Воспроизведение +Играть все +Играть с экрана +Весь трэк +Трэк с экрана +Отметить +Конец Отметки +Начало отметки +Снять отметку +Изменение блока +Режим модификации +Копия +Вставить +Раздвинуть +Заменить +Наложить +Очистить буфер +Вернуть +Подсказка +Клавиши +Быстрые Команды +Навигация +Цифрами, иначе джойстиком, при редактировании нот +Иконки, иначе список, в главном меню +**** \ No newline at end of file diff --git a/res/bin/test.mid b/res/bin/test.mid new file mode 100644 index 0000000000000000000000000000000000000000..d808445cdab910889abf2583f18c17af5aa65fd4 GIT binary patch literal 148 zcmeYb$w*;fU|?fl1i}x#Aw}6hULC^$Muz`^%F!$q5dOU;qDq|NsC0 ze-P?G0NazR%$2|I14SAa?s@p1SIo6Pjm-T@}4e^Ar-fh6Ati;=~OgydQ5aq lR(^6}jY5?C%e;fE41edxHvTU8k_=SJ;OXk;vd$@?2>_ax8U_FW literal 0 HcmV?d00001 diff --git a/res/img/en_GB.png b/res/img/en_GB.png new file mode 100644 index 0000000000000000000000000000000000000000..60c0132377e8a638e6b0c86b4a7c442638dfb4f8 GIT binary patch literal 588 zcmV-S0<-;zP)tC-a|k7n7#o@lD3cK^oD?yBgcmf08#p>Yq(MoiJzTJqL}OK6t3zp`RA8@2X1Mh$ zEBYxbNo%(CE-w5lEmvl?oKbIDX1Mz=G50hy{xUTDHaPh?Ipsn@Ty)0zKR^FHJ*;4U zT7kL#MMbS+fnkBbWP`(GgU0_%Om2X~`%**yPEK)v!TD20a)QMDR7n3+RO?_(|5a7! zU|j!KSpQjB|6E*jj?({MU-@HS|6pPNWMqDk)&FH_dzZ$7mCpZdX@-{7jGWJnozRk@ z)ANCT{DOb?hj_o4weX6Ho~qLRihTEri~o*=pRe4buhpTj-J-DDjl9?YlZgM6jP#nF z^rEc)rKh*U+Qq=z|FNpP$?nO>Ce{a)Yb3M-0j)j?c3q>|LExd z?d<#f{Qdm+{Qdm?{rUa<{rUg@{{8*_{{8;`|Ns8}|Ns5}|Nj5~|GVr#1Lw0Wp1RarK%_=Eh?lBl~s~0D=o{*$zpJkOv$t^ zlaVSbk@sQ|UxsWDD;fh(=Ia9DG=w2$~I=;w?vnwBAqwj$L0000Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02y>eSaefwW^{L9 za%BKeVQFr3E>1;MAa*k@H7+@5BkA3 zCv( zshe8wzRxoZszV=mUp_qV=lyz~&qomcI@8nBahJ;lolb{(y^e*21=wshm`o-Z3hT-34IWb?YR#7Y# z**rf#53N?qg({T_nA+UjL^hj6GMQwoN~MB!yNzzQ z%Za_yYPHbmbl~xLB*APpC)d~4kxr+PNF)%6M6kNLihMqgW2e5NUyR_m_?>n1%s1F( zvS>6KaJ$`-;Pra3yu6G+Ab?OP#7zkOk*Dx{!C(;QhHLx^@{349DwSefnwRj&ytTE3$8Q^W{h^MXogI`) zC6vo$4xr>(tp=ylDG4-NCX?aRLZQG7Ha0de@n#>dOncbg-ewXKZJW%rO!@sKfr`mY z$<%>2@2JN4j`sI5eNWTEfL!`+Rr)<}Q=j?RH5ZR9YD6u&{_L z_rQhrFFqbcaUXm~y72%!qWtq>!szH|s)ydgpR(rQ_xrhsMxmsSpG){OQ)D`-8yFZk u!QZp5uWw>-a4;k*_&Zk{fVAr-fhfBc`%D9p%MR=CDX zv0+1&iNlSYOEFFnrd=k?Jc$`@J49nOC$a5d;>lmAq_a=$V9unwzK;b|?Daf7)PKY> ZF-&#~-rW@@Vh1#l!PC{xWt~$(696i(B>4aU literal 0 HcmV?d00001 diff --git a/res/img/main/0.png b/res/img/main/0.png new file mode 100644 index 0000000000000000000000000000000000000000..ca5780b371158345a78fb9e317853eb22fd6f7cf GIT binary patch literal 1673 zcmV;426p+0P)eiSfB?F9=z*xI?wd>_MUEO zY4M5s&%?Z?rlzR2w)Wz&W5-Iy$H!@Sc$m7nx~QU}g6wuXwY9a;^z<}kXJ=D;dpnht zl~HqZGj(@&)9u^0X>oCpwr}4~larGc7N#OSJ$)++`NRGD_x;B8nD5)SZ!F!9kjzpQl^5ZV7FfIPSu2bnV(Tx_tSvI5Rpr zN=&QP<#N3v+_w(%VkU6u`0?Xzm=&5}BqStIVPPS$DXG7|pK@|?C@CpPxWH^S3)AB} zD=UkNii+Sqx_R@axC;fWRx9n;vE#%)Vt_A|@@zYL^k~8A>Ze2T)z#(VFa*FwNgVI_`T68h}hZ2|V{D*OcEU*P<^TgF|~CHtyQ}a<6@Bx)g;s5>c6!3R_Q@-r00*m zs1SKUrgAkQnbgCwj7rnXXCx*BAqJh#w@9|6Wnf5zS!5L8J~E}6OE9Gy!vv5qDjCYB zBpM|^kY~V8NRH4RGt!E1BfyJ2m3dScN@<0U6(M5z_Nf`467dIsi9ndE)aX$Gr{)xy z31eD7udt}Z13{^2IH)4;sq2xriV`4}xm9aClODnZ1t?X`REDbd&s-ONPPZCHYNM}V zXiW%Hn6P>?QXqBBv>sy>(MTu~L?%&9u^-Shlh%|4N){*8g1TX-XL9uk#;EOQS~pP7 zpUJerVWWk`5Lql%CTI);AcX7cx&ReWe&V!| zhK7Ep1go0{hb)wml1vGfL}3Mq0gJ^#U$-UDC!gC`^FKs?;PqN4IXPL&Gcgm9p7s)) zUw&UeV-tN;xaoC~e&ycu^b`|(_8%}YF+pE`n@O3O*`nyk6fWC2Jw=58T!f5~e%Hc{ zFMB7glxBBwqiKz>kOU)X0{H#u#6K^>aw_=LoUoRVj9L_Mdp!~>ULnl3&9hOG%fhwI z-A%HAL7P^PpB+^fpnYyms;Hc@c^yG-F9qNp--B=2QmcSO9)IhNajJYJO%xP4!Q{}J zW-8y3C*C0deEnfVJ7of-{BMABcmlK^)L#*pfLqWXbar-nw4RW|#?jEw@XM)Fr(7v1 zDS~O3pVof2`uh5)cet2|7-(zZLs5j(!Xj%wI^|#QX4B043zVKZMK2eRi9SH~hD}XP z{b$dfeU-sIZcr|k?A^QfyT-=G5|`Ue=Cyx6wY-A3{ON>0^;$RizbNBhHn(uYz`y{V zKY#uXcgu&_3U{NrVjgz3z}qk8ojJ2-j%Q{|-49-vIp;g)dA{d;-uL^C z1l=epDY3fU?w9iO^Do$JHm5=Z$1o%sySuv^D=RDB;o;${b8~Zhv3uH&va+)BwzjtR zrlzLa!oorj0UQ%P695sw^71nJ`uYYtJ3HT>o}RuLn?Nfr?C9vYzPGohJnX?3jK!ES z0<`k4wzjs!gm5_gP=g0!F(zZnX=!PvYiep5)6>&I6NKzX30anfdBF{lv^KF#?*DhY4PN zZ*MP@kuXp|dAAb4Nm@BA^x};-L~6`bh*Ll#kj&j?Dlz!X%naVX^DaG^ak zzW015QV<9PkdcuQd%qsbVpKrCfv~yuFH;V)qgveo*4|qa_qd~R3hL|YMY&B*PSQ%rAg13XCvhNsf8NOo3RHB`QNM zF_+5)ICL$GEb+R%Rpgd-GLd^W*~G*I{#f`^bU}4v0G?lePR!8=Bx*znQ^2mJEfcm9 z8+Lv4Mi=EeM@Hys5NB}?KRPZ8f>TpdX!)yEeFvM6eGmj%Gg^d+*_>w0EG`9RCgf|p zx^FkX!JC_HfD@`3WmIjyuAw$iM>VgO9P)|WBeGCP36dxBQgHss^I{Q3`Hdz_cn;u6 zJ3Bk5uCB(5&KDs0pq3cbx%3$2_bfeHK-Zq2-^H?8EhLoUkD%Ln3Awqsq6t0d5R-H- zU>`Uf4t##$Gd%5j3erk+3Eb^Y6OlYw-FR3>lARk-$BD1u@puIJWM_y2+i{|U1HULU zGZWpeFJ0s6&ZsK8C?0=m3f4 z=4QD6cH>s$mN@q@2rE=jP{1EG!ZVueMzfjtKw)4Dm6V^3Piu57C)opRD6Z?QtSn?_ zXCH7iuiDJye%@7>h9(JB7%EmzI_S zPN%c3va&LbYgc!2J+|QP$y+=xqPx5M9>qtrm`NtUpG)^fMn*Pie}A0hJ;C`t>M`9I ztla$kJm|adc6)pKr-ao<5ZhX#XCk>2wM9imjisffENowlAJ7<=#Xn#} ze91njG0Q#>OiW}S1gAuSxJXEC={X{qS5G@RxHScoXE|SbuVviZQY~QYJqf6Y|`rw`>8yB;~4zw zpQ2c2EQHEpHnFoU=iq>&CG9`tKrZC$?d|=6Cog7;#bUyb#5{Rj_gv#4Cvx+|A{uEk z60CUeO5H{(Zyp&2A-+iQjq%^$y1R?w(<6sr(*GmH-|zk=(-0hT^8~1frudR~3uLo| z$c2+u@lu0Sl@>=`eOjBX<^)V!eoS%sj+fAN>lDS#O?#oyY)nx=;^Ji*WwgNDgZ8wx zaNRFZRj$jZ*cV&BW}7s43bt>nqxiY+G1OOooMI8h3jCK1wo?C$3M^lO`G<$8EUwwl z!n9rwT4NK%?y;XB_}4_Tues;udt6gS<)MQP2!~@7pX~n%4qovl`z)SYRBi!deT}$h zUy#QijHKxRgnb`StliK63FjG#zr5N39$kRqveFW$s?xGCjFZsm_?hDU_SXC?!T<4y z)hQ5vnx5SXMnPZ6un@WfzGp5L6)hyJ-(8^i#YP`VKtARj(I(itWp`!;IF8G$z?_&B z6TW1V5cWeL@RH&g?-VqCbd6#=7mk3b)JpNM&V3m-A#$(V66Ev(Y`}b- zQGvI9D!fx85aF3$7wN2^*|3Y5*Y+X$h1hu(48k}?Bi~*ESa`*nwTDv1mUCsbfJ*8d zV1vZ8&0yK;6k8`r4TyMXnZ_(HSdC@yx9c7w(c##zxi)UQlN5BxZQD zGFyV3DTMh6P*;D)tfxeQY{^JS@GQBIz(PWslIc?M>d765)_yK!pR{baE`dmzDIRch zdVxGZqzzJBB_@aGWPi=4TWG-#K_80=D22J#Y~$Oy=y*uJ{HQ0l^omQMuV(HhxNk!+ zz|MXsB^*~7K)>lIOIQt^5Q!Qn4vD7EcFvT$VH__Y`C0-cW27trIU>LDcsv+wD&-b< z?Y@^HIleSG)1ob(f;ysSc_HcfL`LYeS9TQnCR|!t@(d0R{^@i&KO;wUAn!Cr7dVE~ zeq4~`qB5df3drM4cwk`QDmkOi(%BUiQ3ckks%hwmMrX&y#@`Wq z@^))$iXf`0aFmf&%nUIuOlNP-$_C)my6QrwCLkmNs~Hw zTPc-FiT}U?rXavzuloA>0+^63()D;&(z10)0TwWUt!kR)V|Ub<_s*=O63Isdn7~#! zNSqdnMJZb+`qsYB_4i6O40ZblOR5LT#HwRL=@(7gan{m`)mOrNlq+~o` zwzQfakUFw)ay*bPWuC(W`8=x@VkXC`;Q@|z(PTVi$3=z!sub!r=cee(swEXvl74&` zk*@1Pztk(=DcP>UOTXVwH#ax5xw%OWhlA{PJE^KlHk+-ahBYt-&-L|n0oK^qD2U{E z0Mo8X5#RV!`Z9HDAuliA_yS)Y{rwQ5FCgMit5~wOGo@h^@91-GWjDo^ynJ+z`^uSYMwOU2WuCA_TqFU-hy0y2r0w%C=8peXb;2#SM3zwLHGXT*o z&+uYR&O3K$lw|95?&E3TLnNtZGDXgXZeRcln83DzB&W&c&dyFG7K?pfS65ey1LR9S zN+98In1cJeq`O^oS?i)R4?kTFI!o(x{^qqP=cofn#iOGmnwy&o&CJZaXRKuqkR=L4 zzTx(k&+I@;ON*bYoAXOz0?MP&C|O~phV!Z literal 0 HcmV?d00001 diff --git a/res/img/main/4.png b/res/img/main/4.png new file mode 100644 index 0000000000000000000000000000000000000000..a6c9a2000f2ac2d97981ccec3d8f13994b4f72b0 GIT binary patch literal 1366 zcmV-c1*!UpP)mCb#-;HH{R9N_0`(i+Ny6+a&oe{r>AF;KYF{n zyS?S*dJmMbLr%Y*s z!%A+qTRZ~`n1TR<#TOP9et`wrA*ILlDN}1p4qyQj*s8%`FtZ#9{;~5n@{|#X2rz-I za*`MoMbQQG{CyArCQqZv@zKdxy$=QMvjI$guT%Y*$$S4qdhB=&9HWpG;ATVIXwb|kD=X`*3dkV{aHCLAB7J>*)YQ~OB_$=~a5zHt zGAt~Nc6WEFrKN=$8yjhFZ;y(LixKBrDuRgiUX-D#s!3+ESuHCoqnMZ&;Wb8hczDPY z1aL+F$j;8Dyu3V`o}La^j*^5g1T5L-?6D#}mLFu(2vq?X#r5Lif-*8P=-}YM=RK5= zYTO|ZA0Pi=L_`FgpPvUToyU}$R8Y!|{BXHkVqcJs`3RsC0>$Vd*{}6VD>uT)A*P9m z3GoieEs1Ce1oYw|1hkUM>($j2&Ck!%cNhepPw(DQDNE;X$cDgNDRGRFJc4faE}=(0myuKcqo8iLlQw} zd|S?_0099oM)w*R7!XF%($Yfe1@QdjDz{?Dv(cP(ZRREiDz< zJ2W)(pb%hPZf-8s*VhYh%+u3TT3K1aSyMdUtALCN76G)fvXY95ibO{XwFf}4*w|QM z17Se@^C_5IKXj4W`=e0dzAajn@shcKX*3$i|A^+3j2nx;G5~;b+BS}L21EFr^1P!! zpv*+G2&Lp+pKL@G$bK(v;T>uEzrPJ_4tV8;5v=x+P+0TJPtWL|zwNA$j$Ce#anje{ zxah@8CtY7(2RwuXvdiy)>%p1OE*S^gfMncW9lGi0c$p=C&d)Bowp%!XKVovOTcF}T z$gz&g{ge~`Smk=Z45j-?c|V9z$o%Y6GMVs9bY@HEZ#PM-?S?W>{0X4H;M6rfK0eC{ zyRR~f6C{n?(}NMXF~~{hg3%j7Za02&+X1YVRiw=ifCFoAaPZaG*x0Z9`9im}v^2N8 zyzDTUOg=Az{gdJG*oEARg394W+9>Q+uPfJ@FNZg$B<4IG-GFc%jd!}Zl$sKU*T>N8p-YY zm_2jQxy{PpvBZvZC7jbIFZGm^bfj3V2ac(!sSQ3+|ITX6i`cvwS3LjY`7ci#zeK$L Y2jf!R$};skFaQ7m07*qoM6N<$g3x4>>i_@% literal 0 HcmV?d00001 diff --git a/res/img/main/5.png b/res/img/main/5.png new file mode 100644 index 0000000000000000000000000000000000000000..c47200f435fe126121d74c1ebb082b309fc8eda4 GIT binary patch literal 1809 zcmV+s2k!WZP)V{DCWY;BD{ zOsho`G-;|8wPL6dMR`SOTpCcUwz0@6T zV`DA8zP@;oZD3#k4TOX_OP(9E@QB(tIM39pI=yCU$6b&t)-2|LeoZ_l%aJ2yUPK|#Sb#+IKxed^oY-JKmD9}iVk zMQ5Ll*Y&pQ*c#*<+YF)=CX)%WEKj(W3`b;SBrnfyY;5$E+uPeCyu7@ksEfggfE7hC zz%Ke;!r{Inn0h(}Kb$^-zP>&&&f*S0x?4v>Ik+AVb4mP>A;J488$jrK zl@<4wo($k{tg5O)>eY0hnSf&nI7Skj>3M=yLiUy+lR?^`6ZYDARE7QltJUgp&tWbd z%K-k(;59Whn0tl52M9cgPzhh_B0mzlS|GjiA>paCwu9dFYM7DoGERmcLvnJmu@|4# zJ*m0l$nKQ5cNQ866sdR8q4m)TqsUe#0X3au)TT% zDJdx;GV-sT6$yyJNA9m1A-kX6y|V#%1t*}|T#%!cAqKi6Y>EB^cji}N_ljMVM(I@K z;zQ8~@G#>(va+%SVD8ytn0+D*8!9*9OmV&t@R(6Gk^ycE-qzNJ?donIg8VAeI)HWEG}DA1(aAt#5F6P-xX9`#O7ODDQr0Z0$+C=#Jjz#4Hk5lFebnA=mL)M zLqkD{OuX;y?Zw=tF19eSxxb=^1 zlpBV*V5A#(GW#Dq$3!%DYgpg(9{m0Njo9XS4u?bZXCWoVIP{hWzJb93V#Hs?K>q+r z9+!DcPQzTF=K`G~M}Pm2kGT=1pV@3!Z-k#4bNo(!Z|Su_b39WzJ=jS1Ea=XF$1vmx zoXKR3Vp}tj_*JpV$Pm&`&Mwozg+YGQP3%fdaI7e%VW93<9yP$5S|&|`MCM5<3B}KZ zLd#|J^z;~1>Wu0CpQTq&al=WkpMd}h5Y-9EEMaBX3S<5#4S4bm`*L0UT1Zo5s18-6 z+J-Vau2o+b5yBgA@zRaePtGa(?DcbS-Xr->l0{-NSrs8v-qVu?JTkzOgM)+df!BJ- zHMB{)jEn_~kZhefw1_C@aEr-Lz_#L@@bmK%S(CwY{-qEMA$Ld`{2F}mY0oCUj)}-| zXL#H^z>Oz;ocbXgngdzZ#aKRnnV|T3&2{X2{5kIZeh;7wd3pI&l-w>w;a`{Vef?2U zl;laoQkx5Xi33Vg;0 z+R%!3?yeP~3hPjHL_4K!r;HO*e#GR-lMMlTss&>*pj*mx=arqnuA6&A-IpUxFa^;v zWytrEi|7ufA7KQ{MX8ZALzVHz>4%XudkLuKkE)2H81Qu68g7JX$oC{HnX4c9*JV^Q z6I}fyuPj(oK;v7orwb#2XU_X0<<1FK`702u>lgi zL(E7EnTz+m*I`NGV!;}x=JCE03H_O952H)~(V{^oCS*ZwEeeibuj z&cOLOr;RI{UX&*KP~lF7YBGh;6SB75J;!_MJkG*QPh5y!7XF0q;`T!#zsEXa1UQfB zbz!2LG0&j_*3Q^UP*6|{SzKYa+t^txuvD0nHGyBghP)hoM=O4gs#>euUuo?f<-t#dGZ9s#l_7@NlCdB zq7H>pt4iO6Hy=HEwENVlQ#)qOniUxn6C={<^PXy=#^7u)u?(BdW}h}~+P<{3w420+ zDm^=aL^q(|ii(Pi%F4>Oh@Mvn+)Q11K?Z2ldx^1Hx-b5kk&#hK^`VsxKOBH=H0GwJ zrV#Sc6smlFFUkOx4+*Z1KwHAY!<)(Nz52j^m{9L`OjDDa00000NkvXXu0mjf8qImS literal 0 HcmV?d00001 diff --git a/res/img/main/6.png b/res/img/main/6.png new file mode 100644 index 0000000000000000000000000000000000000000..b71b7460b9dfcbe51298243f76f2269d57d0052d GIT binary patch literal 1577 zcmV+^2G;qBP)Nkl6B{eGPH#)U%=Id%IVZn zre?KPLtACSh9YKSnzBkIxOlrl*l~x)%fVgG^VQ#V9(RNdp6%J)zQ6D9`Fy_5>-Xma z7fDD+P-SFfoU!t%C%UAU-6+!^7sz&d!Ss4Gm{nT3T$*XY!w!GiN3h6&308 z^YiEFbUF|LOcFj501-fYdpoMDt7{G&I<)52ty?#p8|cKk{rmSf*=#n)R10G;7GpXI z(8>4q_xFnpqobo!sw|Afn2fFP_xF#;%F0?YZQ3-@2I2OpRK{Q|#$;^C*Vk7^?ucYI z6Nx#;Q>j!sjs0I?OvYA_XvnBSCNQ4Lz-?`9=yzpgPBYwY%Z(B+4>*hM{ZpAY&KS`SOGc&*alY)i`i_3N~LlV^d!8WY%3&JV3~-k zu%W)bJ}w`e`Ne>SOP8Sy4n|~TBu@X_irCm%%%4ABkf8d;JG=F;OTO4svK}EJAmOseKV2ACJP!WE2(_!q3l7Jg3qUTD((_mOtBYxbzK# zhK7!DyC-qRo=@+p97lF(S63G<-}oJ&5s`?Bib8Z$1ePvc3awU)k&zKlCX3S>jYhP# z8jzEfh1AqkLB6J@291r4!i(Q;i2*7i5 zlaLsp#Q@Z}_?rRiOLvRb8WB5 z{5YP^Je7vV+Z{0VnW0fSuz2xekx<5cN5Q#!+t7&(JM>t)EC;)ed<9d#6+uB-Bv6jL zl=GO#kDQzw@yqtu3$D2~hJehBg$Kv%*|YKfT7Q&P9!6e9iZ~fH4s3e$1#CO;8I%-P zWA`0ws;Gj7K!UY_h>wd!Nl^h}VqyeYw!`Y4;177fJwCGBy?a+=eCfsw0-RsswYa!A zY+1b=+YWvXmDC3xB}H+>hS=!oC|UiY$bPPj@kGXAY>yt0h1mxM1&w*e>vpRJDkT}9 z(j2jm!rW&P-7zdI%ws?C(1iX?LT_!DH_GwjSaQiVH8r7l$3Ap+_uMmP8-%2Apo_|| z_=CN;diAQ<>t0!&+OabST(i?tC+z9z!SS!ZfzdpSU;i+`VjU7;(dlBaBsB@gs((Nr zwdTJ~{dluXkDaftLP|;stX8YXCgh6cwGqk9h-Np6x9`KpUw)6ehM&m&HW6nUp;%jx z$72<*EL#XQSqcdagTqI{Tjd9E;lc%IG#anAClms1FznK{P9u(N--xZN3Pj!07{hD% zPx43=jfOkl%7TTWfrW*IL!tJ=+k1|owzk&mWc<%oEXO~X2G6eImyw*Dj0Fo8V9}$o zun;K6nY$qG8yFZsdU`rmEy@5pHk3R;Mp1s^TQSJwX*r=r5IigYfeS zld%=Vwu>$fmpH~;c2j*VXAH(-OvYAnp3%&=QfGU5&YU^^-1%H@x09t@ik!F{=Blcy zJEYqvS#K}_{#?3q<;oQcO}k{eYzA`ApU5@+VU#PQwY3%WUD&19>&pnMnuo5Oo=jvq z={y?2OQ`mfDC;$o`Eg3+IMCeOeA8esoT8;#QX_lc$L)d|aGyvNsRolP1Ehc52kz%W b;KhFcFVF=JL6>G(00000NkvXXu0mjfBUcQE literal 0 HcmV?d00001 diff --git a/res/img/main/7.png b/res/img/main/7.png new file mode 100644 index 0000000000000000000000000000000000000000..9b5da6dcf2708298e923df52f91b59ce5088dfbe GIT binary patch literal 1099 zcmV-R1ho5!P)mV9zptsO z`K%uk)SHEcg?&RqL#;(cMdt#6fNZzh(}0Sy!GQEVYywggfoa;r&9c0_3{z86(Z$8Z z=Z%excU&%4R2z&&qorM4FTc#p%qY7p)6>&RcXxL$VmdSfdV70Y$H&Ln1f)yT)zwu^ z_3yW%B!t!1*LRz+MWo&nkH^nfRaHSMm130hX^MqK6a^FCC=7$J5c4Wx+oVt^bkN~& z?4!jfSvJPiIG!YuBta||1!Mh0OY;}-FEfx#3z5fA~ z*E(VUPw!F$@E+d*mEM0fc}4n;UbRnhCy9h%Je*64v^QCl|Jxz z=3r@Q31nG@f`S6L9+*IIZ_d0iT36C4Tpk0|d-B%nt$@xOm2mH)%%1PJ6hnP|Ju5am zV#t6|7H9K@fU2vH!Q1LI<&+o6WRlB!SP#>dL!iDV=ExA*x`l;>niKkx&CP)7Jx>zS zJDaTl`uqFfM&~>W!I_p*@bE&Z=A9V^MEy%1CAxq9oPu+06A+0+*g`L!K8CK3<186@ z*HKwC9RfO{=jP@Z7;QuK$o>@ez?D4Jb6ZKMhJfZ!!Jz^~S2Dn6vw>`txy!MBj$~w2 zE(VPH1EbjPDg)WP+%f~}b(wn?WO_+s*>;kV=&_{C6D(f{a?xzGM&43vHV3j9kj;r* z$$@MJn8|@Hm*O~S#w(e~It1TRLLvE+l)Hc)#8&bP!rWvJE&+iXl z{Xflm13C-p>gwR;@d)b=%rvKntw`7${=%PyD0)+zD}I^1!QCc+`J)Gz5pK6rV~0m* z9%9ZTc0?>IEBlQP--5v)J7{>VC)!I&N)X)579>M>drHDW%n`&6iB6|8jD7m6fq{V} zQAmdj#h0=^m#W#UdYx}Rtx0PW24ek1%x8$5K!c>^a5(%9f6ETFx3^zvXlN*+Q;vGQ zofKjWF<@k5j+xyP||;!+ZIYTlsGc* z9f999H8l-;Jf1MJvJoH_i`i#qXFaHU@z=?|lLp}Ny;MU{{RjN zS!i5k6vt;OZWTeKw$);3W2K^P6{S8HX(J_wj|O~@f-gcfi4u|r2~yD)6F0+332$Z; zgJpov&(CkKs;X-7dcCyOm&fBFu)x#`Xl-rH9~c;rfYsI2Efp@Xz*Jj*PfbmYJr;{e zKr|ZNQh@;$m|$CmhK5pFT3Y5&StJs zTKp5ur=*hO%2kQInHN}w0va0|6;!{lu#i+L;Hvdus!1beUJ6?tr78OjX}Q@KEHJeK>gwtgYz{sc43eTg`jVRYiDIX}5IDvG#NQb2 z2S`7Lj`bFNMXj7e?|vvAW?!(tlmdEsdXCs^HU&>RH8rJadU{%dqfefYCz`$9E$!3K zg-?Gj!ac??hfYj%{!L-di5^Nf%&7tkOt7VZ+S*zLiIbC)nvjI{%TuPjNMmDTlB|zW z*Iqw{7{tc*rxI~4Jm6){1Jh6d)@FQsToVF=!63zUK10&%FF=2>FCd42%`c%3U z01tTSW56;Lz+Vgs))1Aef>9t4pxB=0r3<*nm_8<%5EJtIi8v2RmIoG?h62#0k&zKi zqobqorAT{?9M(M)v9*yoCYca3-|!nbIcMdCR|O6)bBv*Y>gs9*foPXrXywYM-_fOQ zyJ}oubITmA>oBZqyb#ZKrb3#r}+`|+LmZ1QCMN+UfeqKAhd_JEThi$EL7+psZZ@x#P zy>@NGslpiMa1`S-bT(g*TzHs$!2(k&pt7=3LHqDdsF#lwV!>#!+(z`^)AWmVhn#ZL zCtfEyl~456`!w>(8#0FP3A*nIa@m>$65w3F$rAz#Os#;5iV6j-!V9BbK2}H-&o5lO zOsgkz1cE26V<4dTlEP6P<9#yI{-?zHIY*V*7xQ2m3c%)YyWIx)SV5h}xqV2+Nv9N_ zC3@!r(bCsH&;-93VSPt9Cg6(as`8k8!O{xo?d?5WUS6&s8Sn0Td0Bo|Afb@cDH`XE zDX_%HN;a(9OF@T|{7xvI3wcbQ5aPiE8!x4MOG``rSR04Ku|^)2FCjlGFg#45p&?B{ zmOmjM&v{wMaVO+V;t3X*U|aZedT&utQDtXmr>xH~8|dX^xnY_xS7E`yLGrQOiNBDC z$2~*C$>9laFu(#6Z257*pW_EgN=n|&&(HVrivscYG}-O;HM)_|ze(mc56e=sL3HFe!n#Q*>R07*qoM6N<$g2&Xz`v3p{ literal 0 HcmV?d00001 diff --git a/res/img/notes0.png b/res/img/notes0.png new file mode 100644 index 0000000000000000000000000000000000000000..40bd8576a81cdcb65c6e1e2dfb6c1de250cbb0ab GIT binary patch literal 157 zcmeAS@N?(olHy`uVBq!ia0vp^PC(4X$P6T{CQ7XWQfvV}A+8G+JODDKl*{^oRFJ2O zV@SoVWRC}&c^Y4mYYrSRaC|Yn`8&588(SM&qXN6X{4wSeNdct}*OuEI3ueoi<#6*G zx6dcJIa|4Sc>0$a&i(X&r8_pMYyAWEPE*FKjYk>gy20$a&i(X&r8_pMYyAWEPE*FKjYk>gy2F!$rHr(XlVSHf75ri<7E9QioePhta;!r*5;o6X2uVRhN4SNzZn-#;9R@u#flK1 OE(T9mKbLh*2~7YjkS4GI literal 0 HcmV?d00001 diff --git a/res/img/nums1m.png b/res/img/nums1m.png new file mode 100644 index 0000000000000000000000000000000000000000..a23cf5b61fe0fc72425bb4836a15386dd7a95dab GIT binary patch literal 117 zcmeAS@N?(olHy`uVBq!ia0vp^20+Zp$P6SctN-2tQfvV}A+A9B!GZ>VtFUE2mX@cB zV@SoVR0089x0OtSz=>PyPFZb&J z05CB3?EnDp008j-0P_FS=RQ>WVFZV7kSXlnfI%e`RGV?Vx_%t-oKWg+jIr%y|(M4|cJw5tA zKhsHa_CiAXL`3&SM)ylgZ*To_a{l;GQ2A6xSXh01_4-|1fr0k>VPf2BjD>~w z{AOl|i1>_*`HzqGkB|D3llzvI{Fs>io16Wfp8lYq{;{$C<>l|^=ke+3^Xu#N?d|vP z@A>cV`|{r&y^{{H^||Nq*h zUm5@a0BlJ_K~#9!EsZ-00x%Q=U*bbBy$BXw(R+)QYCik1Fk8+HY`I6s;k|6(2z!$Z zM`&BseC$jXb;{S16AJ_V3*C|vzySJNG}0IVX8%YsvYkoHiNyt6vsU|%vWrVOCYxkh hBn_2|?U4Rw@dNgydbEYMIrIPk002ovPDHLkV1m&D5p4hf literal 0 HcmV?d00001 diff --git a/res/img/triplet.png b/res/img/triplet.png new file mode 100644 index 0000000000000000000000000000000000000000..f9e511aa6e677c34f8e29438e655deac8bb8a68a GIT binary patch literal 93 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1SIo6Pjm-TDxNNmAr-fh6Ati;=~Ogy20Xbi qCFx>&Fki24i=9uo;6uL{28NT&p^Qg " , + , + } + +#red +-= 2.2 =- #def + - . , . + - . ->-> "". + - , ## . . + - . ##+_ - . + - . + - " " " " ( ) + - . -= =- + - "" "", . + +#red +-= 2.1 =- #def + - "" . , , ( ). + - , . , . + - -. 3 9, 10 . . + - . , . -. + - JPEG. . . + - RGB. -= =- + - . -= =- -= =- + - CHAPI Sony Ericsson. , . , . + - - ProPaintFont. . -= =- + +#red +-= 2.0 =- #def + - Text2Image aNMPWR2.0. . + - . "", *, . , .5, . * . + - Siemens. . + - GIF SWF (JP-8) , SWF . + - . , - , . , . + + +#red +-= =- #def + : +2,Joy UP - +4,Joy LF - +6,Joy RT - +8,Joy DN - +1 - / +3 - / +7 - / +9 - / +5, - / +* - . +*() - . + - . + - . +##, - +##+0 - . +##+1 - (). +##+2 - . +##+3 - . +##+5 - . +##+9 - . +##+Joy(UP,DN,LF,RT) - . + - +0 - / +C - ( ) +1,3,7,9 . +. () - . + TouchScreen. + + , , : +4/6, / - / + - + - +7,9 - / + - + - + + , : +4/6, / - / +5 - +* - / +## - +1,3 - +0 - +2/8, / - . + + : +5 - RGB/HSV +1,2,3 - / (-,0,+) +4,6 - / (-,+) +7,8,9 - / (-,0,+) +*,## - () +0 - . + - + - + +, Text2Image: +2/8, / - / +4/6, / - / +1,7 - / +3,9 - +5 - + +#red +-= . =- #def + , -, , . ( ) , , ( ) , . + +#red +-= =- #def + PPM : + - .5 ( ) + - .5 , - + - .5, . (. ) + - .5 . +, - .5, . .5 - . . 7 9. +, - . "" . 1,7 3,9. +, - 5 , , . 5. + - . , . , . "" . , . + - . , - . + - 5 , . ##+1 . + - ( ) , "". ! + - , . (8 ): , , , ... , 10 . + - .5 . PPF . Ok. . . . 5 . + - , , , , . + - . - , - , . + - , . + - . .5. + - , , , - . .5. .5, . . + - . "" , , . - , - . + - . , . + - . + - , . . + +#red +-= =- #def + , , . + +#green +-= =- #def +#red +-= =- #def + . "" . - , . - , . + +#red +-= =- #def + -, , . + ( ) : + - . + - . + - . . + - . + - "1" (. 1.gif 1.png). GIF . + AniGif->Png png- . + - ( - 10 ). + - , , ( ). + - . + +#red +-= =- #def + . (png, jpg, gif, bmp, ppm) ( , ). , , , , , . + 1 3, , 255 - . + , 7 9, , 255. . 5. * , , . + . PNG, JPG, GIF " ", . . ##. , . + + +#green +-= =- #def + : +: ( , ). , . + : . +: . +: . 10 . +: , . +: . + : . +: . +: . + : , 1 3 . + : . -= =- + : . + + +#green +-= =- #def + : - , - . + - . + - ( , ) + HEX - RRGGBB ( 003377). + heap - , . + - , . + - , , , -. + - , . + - , . . + - , , . + 1:1 - , . +- - . , , . + +#red +-= =- #def + . , . + +#red +-= =- #def + , 7 9. + +#red +-= =- #def + "". + + +#green +-= =- #def +#red +-= =- #def +RGB/HSV: + , , , HSV , . . + . +: + . Ok. .0, . + +#red +-= =- #def + . / . , .5. *. .0 , . .## . 1,3 . . .2 8 . + 8 - . , - .. + 9 13 . RGB - , HSB // ( ). - "" . , - . . . + 14 - 22 - . , . + 23 - . . png 8 . + 24 - 27 - . , , . + 28 - 30 - , . (), . (28) 10 - . + 31, 32 - . + 33 - 35 - . + +#red +-= =- #def + . + . : , ( ). . . : + ( ), + ( ), + - . + +#red +-= =- #def + . , . . Bilinear , . , . + + +#green +-= =- #def + +#red +-= GIF =- #def + , . , . - , . , PPM, "" "1.*" (* - , 1.png, 1.bmp, 1.jpg ), " GIF ". , . gif-. Ok . + +#red +-= PNG =- #def +ProPaintMobile PNG-. ? , " -> " "". ( , PNG ). , (" -> ") PNG "PNG 8bit". . + +#red +-= =- #def + , ProPaintMobile - , "fonts" "brushes". 1 . , . . . + +#red +-= =- #def + PPM 2.2 , . + Effects effects.txt. 0 34. . + ( ) 0 1, 1 0. 1, 0, 2, 3, 4... + , "-1" . 0, -1, -1, 3, 4... -. + , Effects #red #def effects.txt . 33, 34, UserEffect, MyEffect. + +#red +-= =- #def + PPF , FNT. . PPF- PPB-. , . + +#red +-= =- #def + , .* , . , . + , " /". + +#red +-= =- #def + PPM . . , . - - . , "". , , . "" " ". .5 - . . . . () -> . 0. ok. + +#red +-= =- #def + . , .0 . . 5 . . . - 5 . + +#red +-= =- #def + 1.5 . ( 10 ) . "", .3. . ( - , - ). .5. , . . - . . : 5 , 10, - . 10 , 5- , , 3- , . . + +#red +-= Text2Image =- #def + (), . . aNMPWR, . .5 . + +#red +-= =- #def + ProPaintMobile . annimon.com . . , , : jpg, gif, png. , , " ". , . ok, - , . " " "", ok. . "" . + +#red +-= =- #def + : http://annimon.com/ - , Wiki ProPaintMobile, . + +Help by aNNiMON 10.08.2011 \ No newline at end of file diff --git a/res/lang/instr_en.loc b/res/lang/instr_en.loc new file mode 100644 index 0000000..925ed76 --- /dev/null +++ b/res/lang/instr_en.loc @@ -0,0 +1,208 @@ +Drums +Acoustic grand +Bright acoustic +Electric grand +Honky-tonk +Electric piano 1 +Electric piano 2 +Harpsichord +Clav +Celesta +Glockenspiel +Music box +Vibraphone +Marimba +Xylophone +Tubular bells +Dulcimer +Drawbar organ +Percussive organ +Rock organ +Church organ +Reed organ +Accoridan +Harmonica +Tango accordian +Acoustic guitar(nylon) +Acoustic guitar(steel) +Electric guitar(jazz) +Electric guitar(clean) +Electric guitar(muted) +Overdriven guitar +Distortion guitar +Guitar harmonics +Acoustic bass +Electric bass(finger) +Electric bass(pick) +Fretless bass +Slap bass 1 +Slap bass 2 +Synth bass 1 +Synth bass 2 +Violin +Viola +Cello +Contrabass +Tremolo strings +Pizzicato strings +Orchestral strings +Timpani +String ensemble 1 +String ensemble 2 +Synthstrings 1 +Synthstrings 2 +Choir aahs +Voice oohs +Synth voice +Orchestra hit +Trumpet +Trombone +Tuba +Muted trumpet +French horn +Brass section +Synthbrass 1 +Synthbrass 2 +Soprano sax +Alto sax +Tenor sax +Baritone sax +Oboe +English horn +Bassoon +Clarinet +Piccolo +Flute +Recorder +Pan flute +Blown bottle +Skakuhachi +Whistle +Ocarina +Lead 1 (square) +Lead 2 (sawtooth) +Lead 3 (calliope) +Lead 4 (chiff) +Lead 5 (charang) +Lead 6 (voice) +Lead 7 (fifths) +Lead 8 (bass+lead) +Pad 1 (new age) +Pad 2 (warm) +Pad 3 (polysynth) +Pad 4 (choir) +Pad 5 (bowed) +Pad 6 (metallic) +Pad 7 (halo) +Pad 8 (sweep) +Fx 1 (rain) +Fx 2 (soundtrack) +Fx 3 (crystal) +Fx 4 (atmosphere) +Fx 5 (brightness) +Fx 6 (goblins) +Fx 7 (echoes) +Fx 8 (sci-fi) +Sitar +Banjo +Shamisen +Koto +Kalimba +Bagpipe +Fiddle +Shanai +Tinkle bell +Agogo +Steel drums +Woodblock +Taiko drum +Melodic tom +Synth drum +Reverse cymbal +Guitar fret noise +Breath noise +Seashore +Bird tweet +Telephone ring +Helicopter +Applause +Gunshot + +Piano +Chromatic percussion +Organ +Guitar +Bass +Strings & orchestral instruments +Ensemble +Brass +Reed +Pipe +Synth lead +Synth pad +Synth sfx +Ethnic misc +Percussive +Sfx + +Highq +Slap +Scratch push +Scratch pull +Sticks +Square click +Metronome click +Metronome bell +Acoustic bass drum +Bass drum 1 +Side stick +Acoustic snare +Hand clap +Electric snare +Low floor tom +Closed hi-hat +High floor tom +Pedal hi-hat +Low tom +Open hi-hat +Low-mid tom +Hi-mid tom +Crash cymbal 1 +High tom +Ride cymbal 1 +Chinese cymbal +Ride bell +Tambourine +Splash cymbal +Cowbell +Crash cymbal 2 +Vibraslap +Ride cymbal 2 +Hi bongo +Low bongo +Mute hi conga +Open hi conga +Low conga +High timbale +Low timbale +High agogo +Low agogo +Cabasa +Maracas +Short whistle +Long whistle +Short guiro +Long guiro +Claves +Hi wood block +Low wood block +Mute cuica +Open cuica +Mute triangle +Open triangle +Shaker +Jingle bells +Belltree +Castanets +Mute surdo +Open surdo \ No newline at end of file diff --git a/res/lang/instr_ru.loc b/res/lang/instr_ru.loc new file mode 100644 index 0000000..82bb745 --- /dev/null +++ b/res/lang/instr_ru.loc @@ -0,0 +1,208 @@ +Ударные +Рояль +Концертный(осветленный) рояль +Электронный рояль +Расстроенное(таперское) пианино +Электропиано +Электропиано 2 +Клавесин +Клавинет (клавесин 2) +Челеста +Колокольчики (бутылки) +'Музыкальная шкатулка' +Вибрафон +Маримба +Ксилофон +Колокола (трубчатые) +Цимбалы (сантур) +Электронный орган +Орган с перкуссией (с ударной атакой) +Рок-орган +Церковный орган +Деревянный (язычковый) органчик +Аккордеон +Гармоника +'Танго'-аккордеон +Гитара-нейлон +Гитара-сталь +Джазовая электрогитара +Акустическая электрогитара +Засурдиненная (приглушенная) электрогитара +Овердрайв (перегруз) +Дисторшн (исказитель) +Флажолет +Контрабас-пицикато +Бас-гитара пальцевым щипком +Бас-гитара медиатором +Бездадовый бас +Бас-слэп 1 +Бас-слэп 2 +Синт-бас 1 +Синт-бас 2 +Скрипка +Альт +Виолончель +Контрабас +Тремоло струнных +Пицикато струнных +Арфа +Литавры +Струнная группа 1 +Струнная группа 2 +Синтетические струнные 1 +Синтетические струнные 2 +Хор на слог 'а' +Голос на слог 'о' +Синтетический голос +'Удар' (весь оркестр) +Труба +Тромбон +Туба +Труба с сурдиной +Валторна +Медная группа +Синтетические медные 1 +Синтетические медные 2 +Сопрано-саксофон +Альт-саксофон +Тенор-саксофон +Баритон-саксофон +Гобой +Английский рожок +Фагот +Кларнет +Флейта-пикколо +Флейта +Блокфлейта +Пан-флейта +Дуновение в бутылки +Шакухачи +Свисток +Окарина +Соло-гитара (прямоугольная волна) +Соло-гитара (синусоидальная волна) +Calliope-гитара +Chiff-гитара +Charang-гитара +Соло-гитара (голосовой тембр) +Соло-гитара (с квинтовым обертоном) +Бас и соло-гитара +Синтезаторный звук нью-эйдж +Теплый синт-звук +Полисинтезатор +Синт-'хор' +Воздушный (смычковый синт-звук) +Металлический синт +Ореол +Развертывающийся(качающийся) звук +Дождь +Звуковая дорожка +Хрусталь (кристалл) +Атмосфера +Яркость +Гоблины +(Качающееся) эхо +Звездный (SciFi) +Ситар +Банджо +Шамисен +Кото +Калимба +Волынка (Bagpipe) +Уличная скрипка +Санаи (Shanai) +Колокольчик +Агого +Стальные барабаны +Гольцтон (деревянные коробочки) +Таико +Мелодик том +Электронные барабаны +Тарелка 'задом наперед'(реверс) +Свист гитарной струны (шум ладов) +Придыхание +Прибой +Птицы +Телефонный звонок +Вертолет +Алодисменты +Выстрел + +Фортепиано +Хроматиккаа и Перкуссия +Орган +Гитара +Бас +Струнные и Оркестровые +Ансамбль +Медные +Тростник +Труба +Ведущий синтезатор +Ситезатор 2-й голос +Синт-эффекты +Народные +Перкуссия +Звуковые эффекты + +Высокое Q +Слэп +Царапанье (от себя) +Царапанье (к себе) +Барабанные палочки +Электронный метроном +Метроном +Звенящий метроном +Акустический большой барабан +Большой барабан +Удар по ободу +Акустический малый барабан +Хлопок в ладоши +Электрический малый барабан +Низкий напольный томтом +Закрытый хэт +Высокий напольный томтом +Хэт (педалью) +Низкий томтом +Открытый хэт +Низкий средний томтом +Высокий средний томтом +Крэш-тарелка +Высокий томтом +Райд-тарелка +Китайская тарелка +Райд-тарелка (по центральной части) +Бубен +Сплэш-тарелка +Коровий (альпийский) колокольчик +Крэш-тарелка 2 +Вибрирующий слэп +Райд-тарелка 2 +Высокий бонго +Низкий бонго +Закрытый высокий бонго +Открытый высокий бонго +Низкая конга +Высокий тимбал +Низкий тимбал +Высокий агого +Низкий агого +Cabasa Кабаса +Маракас +Короткий свисток +Длинный свисток +Короткое гуиро +Длинное гуиро +Клавес +Высокая коробочка +Низкая коробочка +Закрытая куика +Открытая куика +Закрытый треугольник +Открытый треугольник +Шейкер +Бубенцы +Бунчук +Кастаньеты +Закрытый сурдо +Открытый сурдо \ No newline at end of file diff --git a/res/lang/strings_en.loc b/res/lang/strings_en.loc new file mode 100644 index 0000000..ec109cc --- /dev/null +++ b/res/lang/strings_en.loc @@ -0,0 +1,94 @@ +Create +Resume +About +Open +Save +Save as +File +Options +Exit +Rms +Cancel +Error +Opening error +List instruments +Impossible +Saved +Saving error +Saving +Opening +Chooser error +Update error +Your device don't support required API +Instruments +Menu +Back +Insert note with current attributes +To change note's attribute (e.g. length) delete note. If already insert, choose attribute (<7>), change it (<0>,<*>,<#>) and insert a new note +Delete note +Undo +Note volume '+'\'-' +Play from current position/stop +Play note on cursor +Select note's attribute +Change selected note's attribute +Stop play +Navigation on composition +Quick navigation +Mark begin +Mark end +Copy +Paste insert +Paste replace +Paste overwrite +Delete&shift +Clean +Play channel on screen +Play channel all +Redo +Add instrument +Edit +Set instrument +Delete instr +Tempo box +Volume box +Meter +Play +Play origin +Ok +Up one level +Delete +Choose folder +Open file +Please wait +Updating list +Save in this folder +Insert tempo +Delete tempo +Tempo +Time(measure) +Seek +Numerator +Denominator(negative power of two) +Meter = numerator/ (2^denominator). For example, use 4/4 (numerator=4; denominator=2) or 6/8 (numerator=6; denominator=3) +Delta +Play/stop +Play all +Play screen +Track all +Track screen +Mark +Unmark +Modify block +Modify mode +Paste +Insert +Replace +Blend +Remove selection +Help +Key map +Quick commands +Navigation +Nums, otherwise keypad, when edit notes +Name \ No newline at end of file diff --git a/res/lang/strings_ru.loc b/res/lang/strings_ru.loc new file mode 100644 index 0000000..b666e1d --- /dev/null +++ b/res/lang/strings_ru.loc @@ -0,0 +1,94 @@ +Создать +Продолжить +О программе +Открыть +Сохранить +Сохранить как +Файл +Настройки +Выход +РМС +Отмена +Ошибка +Ошибка открытия +Список инструментов +Невозможно +Сохранено +Ошибка сохранения +Сохранение +Открытие +Ошибка выбора файла +Ошибка обновления +Ваш телефон не поддерживает необходимые API +Инструменты +Меню +Назад +Поставить ноту с текущими атрибутами +Для того, чтобы изменить атрибут ноты (напр длину), удалите ноту. Если уже поставлена, выберите атрибут (<7>), измените его (<0>,<*>,<#>) и ставьте ноту +Удалить ноту +Отмена действия +Громкость ноты '+'\'-' +Играть с текущей позиции/Стоп +Играть ноту под курсором +Выбрать атрибут ноты +Изменение атрибута +Стоп +Навигация по композиции +Быстрая навигация +Начало выделения +Конец выделения +Копировать +Вставить (раздвинуть) +Вставить (наложить) +Вставить (перезаписать) +Удалить и сдвинуть +Очистить +Играть канал с экрана +Играть канал +Вернуть дейсвие +Добавить инструмент +Редактировать +Установить инструмент +Удалить инструмент +Темп-бокс +Громкость +Размер +Играть +Играть оригинал +Ok +Назад +Удалить +Выбрать папку +Открытый файл +Пожалуйста, подождите +Обновление списка +Сохранить здесь +Вставить Темп +Удалить Темп +Темп +Время(Мера) +Поиск +числитель +знаменатель(2 в степени) +Метр = числитель/ (2^знаменатель). Например, используйте 4/4 (numerator=4; denominator=2) или 6/8 (numerator=6; denominator=3) +Дельта-смещение +Воспроизведение +Играть все +Играть с экрана +Весь трэк +Трэк с экрана +Отметить +Снять отметку +Изменение блока +Режим модификации +Вставить +Раздвинуть +Заменить +Наложить +Очистить буфер +Подсказка +Клавиши +Быстрые команды +Навигация +Цифрами, иначе джойстиком, при редактировании нот +Имя \ No newline at end of file diff --git a/src/L.java b/src/L.java deleted file mode 100644 index ca6a14b..0000000 --- a/src/L.java +++ /dev/null @@ -1,153 +0,0 @@ -import java.io.*; -import java.util.Vector; -import midedit.BufDataInputStream; - -/** - * - * @author aNNiMON - */ -public class L { - - /** */ - public static final byte - create = 0, - resume = 1, - about = 2, - open = 3, - save = 4, - saveAs = 5, - file = 6, - options = 7, - exit = 8, - RMS = 9, - cancel = 10, - error = 11, - openError = 12, - toolsList = 13, - impossible = 14, - saved = 15, - savingError = 16, - saving = 17, - opening = 18, - chooserError = 19, - updateError = 20, - apiError = 21, - instruments = 22, - menu = 23, - back = 24, - insertNoteWithCurrentAttributes = 25, - noteAttributeHelp = 26, - deleteNote = 27, - undo = 28, - noteVolume = 29, - playFromCurrent = 30, - playNoteOnCursor = 31, - selectNoteAttribute = 32, - changeNoteAttribute = 33, - stop = 34, - navigationOnComposition = 35, - quicknav = 36, - markBegin = 37, - markEnd = 38, - copy = 39, - pasteInsert = 40, - pasteReplace = 41, - pasteOverwrite = 42, - shiftDelete = 43, - clean = 44, - playChannelOnScreen = 45, - playChannelAll = 46, - redo = 47, - addInstrument = 48, - edit = 49, - setInstrument = 50, - delInstrument = 51, - tempoBox = 52, - volumeBox = 53, - meter = 54, - play = 55, - playOrigin = 56, - ok = 57, - upOneLevel = 58, - delete = 59, - chooseFolder = 60, - openFile = 61, - pleaseWait = 62, - updatingList = 63, - saveInThisFolder = 64, - insertTempo = 65, - deleteTempo = 66, - tempo = 67, - time = 68, - seek = 69, - numerator = 70, - denominator = 71, - meterInfo = 72, - delta = 73, - playStop = 74, - playAll = 75, - playScreen = 76, - trackAll = 77, - trackScreen = 78, - mark = 79, - unmark = 80, - modifyBlock = 81, - modifyMode = 82, - paste = 83, - insert = 84, - replace = 85, - blend = 86, - removeSelection = 87, - help = 88, - keymap = 89, - quickCommands = 90, - navigation = 91, - numkeysOptionString = 92, - iconsOptionString = 93; - - - /** */ - public static String[] str, instr; - - /** - * - * @param lang (en, ru) - * @param appLang (true), (false) - */ - public static void readLang(String lang, boolean appLang) { - try { - final String path = (appLang ? "strings" : "instr") + "_"; - System.out.println("/lang/" + path + lang + ".loc"); - BufDataInputStream bdis = new BufDataInputStream(Runtime.getRuntime().getClass().getResourceAsStream("/lang/" + path + lang + ".loc")); - if (!bdis.checkBOM()) { - bdis.close(); - } - char c = ' '; - Vector v = new Vector(); - StringBuffer s; - while (bdis.available() > 0) { - s = new StringBuffer(); - do { - c = bdis.readCharUTF(); - if (c == '\n') { - break; - } - s.append(c); - } while (bdis.available() > 0); - v.addElement(s.toString()); - } - if(appLang) { - str = new String[v.size()]; - v.copyInto(str); - } else { - instr = new String[v.size()]; - v.copyInto(instr); - } - bdis.close(); - v = null; - } catch (IOException ex) { - ex.printStackTrace(); - } - } - -} \ No newline at end of file diff --git a/src/Main.java b/src/Main.java deleted file mode 100644 index fbfe548..0000000 --- a/src/Main.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * aNNiMON 2011 - * For more info visit http://annimon.com/ - */ - -import javax.microedition.lcdui.*; -import javax.microedition.midlet.*; -import midedit.CompositionForm; -import midedit.MixerModel; - -/** - * @author aNNiMON - */ -public class Main extends MIDlet { - - public static Display dsp; - public static Main midlet; - - public Menu menu; - public MixerModel model; - public CompositionForm compositionForm; - - public Main() { - midlet = Main.this; - dsp = Display.getDisplay(Main.this); - } - - public void startApp() { - Rms.restoreOptions(); - L.readLang(Rms.languageApp, true); - menu = new Menu(); - model = new MixerModel(); - dsp.setCurrent(menu); - } - - public void pauseApp() { - } - - public void destroyApp(boolean ex) { - if(Rms.firstStart) Rms.firstStart = false; - Rms.saveOptions(); - notifyDestroyed(); - } -} diff --git a/src/Key.java b/src/main/Key.java similarity index 99% rename from src/Key.java rename to src/main/Key.java index 2873533..15ab0c3 100644 --- a/src/Key.java +++ b/src/main/Key.java @@ -1,3 +1,5 @@ +package main; + /* diff --git a/src/midedit/L.java b/src/main/L.java similarity index 96% rename from src/midedit/L.java rename to src/main/L.java index b664f2c..7e51948 100644 --- a/src/midedit/L.java +++ b/src/main/L.java @@ -1,7 +1,8 @@ -package midedit; +package main; import java.io.*; import java.util.Vector; +import util.BufDataInputStream; /** * @@ -24,7 +25,7 @@ public class L { cancel = 10, error = 11, openError = 12, - toolsList = 13, + listInstruments = 13, impossible = 14, saved = 15, savingError = 16, @@ -104,7 +105,7 @@ public class L { quickCommands = 90, navigation = 91, numkeysOptionString = 92, - iconsOptionString = 93; + midiName = 93; /** */ @@ -118,7 +119,6 @@ public class L { public static void readLang(String lang, boolean appLang) { try { final String path = (appLang ? "strings" : "instr") + "_"; - System.out.println("/lang/" + path + lang + ".loc"); BufDataInputStream bdis = new BufDataInputStream(Runtime.getRuntime().getClass().getResourceAsStream("/lang/" + path + lang + ".loc")); if (!bdis.checkBOM()) { bdis.close(); diff --git a/src/main/Main.java b/src/main/Main.java new file mode 100644 index 0000000..ca88854 --- /dev/null +++ b/src/main/Main.java @@ -0,0 +1,97 @@ +package main; + +/* + * aNNiMON 2011 + * For more info visit http://annimon.com/ + */ + +import midedit.Constants; +import midedit.CompositionForm; +import midedit.MixerModel; +import javax.microedition.lcdui.*; +import javax.microedition.midlet.*; +import ui.Menu; + +/** + * @author aNNiMON + */ +public class Main extends MIDlet { + + public static Display dsp; + public static Main midlet; + + public Menu menu; + public MixerModel model; + public CompositionForm compositionForm; + + public Main() { + midlet = Main.this; + dsp = Display.getDisplay(Main.this); + } + + public void startApp() { + Rms.restoreOptions(); + L.readLang(Rms.languageApp, true); + L.readLang(Rms.languageInstr, false); + Constants.setTimeConst(0); + P.comCancel = new Command(L.str[L.cancel], Command.BACK, 10); + menu = new Menu(); + model = new MixerModel(); + + dsp.setCurrent(menu); + } + + public void pauseApp() { + } + + public void destroyApp(boolean ex) { + if(Rms.firstStart) Rms.firstStart = false; + Rms.saveOptions(); + notifyDestroyed(); + } + + /** + * + * @param text + * @param appearanceMode + * @return + */ + public static Item createStringItem(String text, int appearanceMode) { + StringItem strItem = new StringItem(null, text, appearanceMode); + strItem.setFont(P.smPlain); + return strItem; + } + + public MixerModel getModel() { + return model; + } + + /** + * + */ + public void comBack() { + P.extMenu = true; + P.isRMSMode = false; + menu.addNewItems(); + setCurrentlistMenu(null); + } + /** + * + * @param a + */ + public void setCurrentlistMenu(Alert a) { + if (a != null) { + dsp.setCurrent(a, menu); + } else { + dsp.setCurrent(menu); + } + } + + /** + * + * @return + */ + public Displayable getCurrentlistMenu() { + return menu; + } +} diff --git a/src/P.java b/src/main/P.java similarity index 54% rename from src/P.java rename to src/main/P.java index 42b6235..89289ba 100644 --- a/src/P.java +++ b/src/main/P.java @@ -1,4 +1,5 @@ -import java.util.Random; +package main; + import javax.microedition.lcdui.*; /** @@ -16,30 +17,30 @@ public class P { /** */ public static final Font medBold = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_BOLD, Font.SIZE_MEDIUM); + /** */ + public static Command comCancel; + /** - */ public static String path = "/"; + /** */ + public static String openSaveString = "newmix"; + /** RMS */ + public static boolean isRMSMode = false; + /** (, .) */ + public static boolean extMenu = false; - - public static Random rnd = new Random(); - // //title and soft - public static int colup = 0xD01C712F; - public static int coldn = 0xD0093A14; - //selection (lang) - public static int selup = 0x1B991B; - public static int seldn = 0x646464; + public static int colup = 0xD0604080; + public static int coldn = 0xD0754E9C; // - public static int backgrnd = 0xEEEEEE; - // - public static int obv = 0x005804; + public static int backgrnd = 0xFFFFFF; + // + public static int obv = 0xA0A0E0; // - public static int fmback1 = 0x222222; - public static int fmtextcur = 0xD8C922; - public static int fmtextnc = 0x296321; - public static int fmbord = 0x008909; - public static int fmshadow = 0x282828; - public static int fmcurbord = 0xA89C1A; - public static int fmtextuppan = 0xE0FFFA; + public static int fmback1 = 0xEEEEEE; + public static int fmtextcur = 0x31316C; + public static int fmtextnc = 0x2B174A; + public static int fmbord = 0x9C80FD; } diff --git a/src/Rms.java b/src/main/Rms.java similarity index 78% rename from src/Rms.java rename to src/main/Rms.java index ddfb9c8..10d591c 100644 --- a/src/Rms.java +++ b/src/main/Rms.java @@ -1,3 +1,5 @@ +package main; + @@ -17,6 +19,10 @@ public class Rms { public static boolean firstStart = true; // public static String languageApp = "en"; // public static String languageInstr = "en"; // + public static String tempDir = "/e:/other/"; // + public static int noteWidth = 6; // + public static int noteHeight = 5; // + public static boolean numKeysEdit = false; // (true) (false) /** * @@ -30,6 +36,10 @@ public class Rms { dos.writeBoolean(firstStart); dos.writeUTF(languageApp); dos.writeUTF(languageInstr); + dos.writeUTF(tempDir); + dos.writeInt(noteWidth); + dos.writeInt(noteHeight); + dos.writeBoolean(numKeysEdit); dos.flush(); options = baos.toByteArray(); dos.close(); @@ -67,6 +77,10 @@ public class Rms { firstStart = dis.readBoolean(); // languageApp = dis.readUTF(); languageInstr = dis.readUTF(); + tempDir = dis.readUTF(); + noteWidth = dis.readInt(); + noteHeight = dis.readInt(); + numKeysEdit = dis.readBoolean(); dis.close(); } catch (Exception ex) { } diff --git a/src/text.txt b/src/main/text.txt similarity index 65% rename from src/text.txt rename to src/main/text.txt index 7917d24..372c189 100644 --- a/src/text.txt +++ b/src/main/text.txt @@ -3,10 +3,12 @@ MIDedit 2.1 / 3.0 , MidEdit 2.0.5 (http://sunet.dl.sourceforge.net/project/midedit/MideditProject.tgz) . : - .mid, .MID - - . . + - . + - . . -****** +******** + . - Help aNMPWR player.realize \ No newline at end of file diff --git a/src/midedit/CompositionForm.java b/src/midedit/CompositionForm.java index ffc5d49..7624230 100644 --- a/src/midedit/CompositionForm.java +++ b/src/midedit/CompositionForm.java @@ -4,6 +4,9 @@ package midedit; import midedit.media.Composition; import java.util.*; import javax.microedition.lcdui.*; +import main.L; +import main.P; +import main.Main; /** * @@ -17,7 +20,7 @@ public class CompositionForm extends Form implements CommandListener, Runnable, public static CompositionForm curForm; private static final byte SEEK_GAUGE_MAX = 10; private byte seekGaugeCur = 0; - private MixerMain control; + private Main control; private MixerModel model; private Display display; private NotesCanvas notesCanvas; @@ -32,48 +35,32 @@ public class CompositionForm extends Form implements CommandListener, Runnable, isWorking, isNew = false, isAdd; - private Command addInstrument = new Command(Constants.getStringName(50), Command.HELP, 3), - edit = new Command(Constants.getStringName(51), Command.HELP, 1), - setInstrument = new Command(Constants.getStringName(52), Command.ITEM, 1), - delInstrument = new Command(Constants.getStringName(53), Command.ITEM, 2), - temp = new Command(Constants.getStringName(54), Command.ITEM, 3), - volume = new Command(Constants.getStringName(55), Command.ITEM, 4), - meter = new Command(Constants.getStringName(56), Command.ITEM, 5), - rmsMode = new Command(Constants.getStringName(9), Command.ITEM, 6), - jsr75Mode = new Command(Constants.getStringName(6), Command.ITEM, 7); + private Command addInstrument = new Command(L.str[L.addInstrument], Command.HELP, 3), + edit = new Command(L.str[L.edit], Command.HELP, 1), + setInstrument = new Command(L.str[L.setInstrument], Command.ITEM, 1), + delInstrument = new Command(L.str[L.delInstrument], Command.ITEM, 2), + temp = new Command(L.str[L.tempoBox], Command.ITEM, 3), + volume = new Command(L.str[L.volumeBox], Command.ITEM, 4), + meter = new Command(L.str[L.meter], Command.ITEM, 5), + rmsMode = new Command(L.str[L.RMS], Command.ITEM, 6), + jsr75Mode = new Command(L.str[L.file], Command.ITEM, 7); - ; /** * */ - /** - * - */ - /** - * - */ - /** - * - */ - /** - * - */ - /** - * - */ - public static Command play = new Command(Constants.getStringName(57), Command.ITEM, 1), - playOrig = new Command(Constants.getStringName(58), Command.ITEM, 1), - stop = new Command(Constants.getStringName(35), Command.BACK, 0), - back = new Command(Constants.getStringName(25), Command.BACK, 2), + public static Command play = new Command(L.str[L.play], Command.ITEM, 1), + playOrig = new Command(L.str[L.playOrigin], Command.ITEM, 1), + stop = new Command(L.str[L.stop], Command.BACK, 0), + back = new Command(L.str[L.back], Command.BACK, 2), //cancel = new Command("Cancel",Command.BACK,1), - ok = new Command(Constants.getStringName(59), Command.ITEM, 1); + ok = new Command(L.str[L.ok], Command.ITEM, 1); /** * * @param ctrl * @throws Exception */ - public CompositionForm(MixerMain ctrl) throws Exception { + public CompositionForm(Main ctrl) throws Exception { this(ctrl, null); isNew = true; @@ -87,7 +74,7 @@ public class CompositionForm extends Form implements CommandListener, Runnable, * @param fName * @throws Exception */ - public CompositionForm(MixerMain ctrl, String fName) throws Exception { + public CompositionForm(Main ctrl, String fName) throws Exception { super((fName != null) ? fName : "New"); control = ctrl; model = control.getModel(); @@ -133,9 +120,9 @@ public class CompositionForm extends Form implements CommandListener, Runnable, * */ public void run() { - display = Display.getDisplay(MixerMain.curMIDlet); + display = main.Main.dsp; - WaitForm waitForm = new WaitForm(Constants.getStringName(19),//@@@ + WaitForm waitForm = new WaitForm(L.str[L.opening],//@@@ model.getWaitableFile(), control.getCurrentlistMenu(), model); @@ -154,7 +141,7 @@ public class CompositionForm extends Form implements CommandListener, Runnable, isWorking = true; } catch (Exception ex) { - Alert a = new Alert(Constants.getStringName(12), Constants.getStringName(13) + "\n" + ex, null, null);//@@@ + Alert a = new Alert(L.str[L.error], L.str[L.openError] + "\n" + ex, null, null);//@@@ a.setTimeout(Alert.FOREVER); waitForm.cancel(); isWorking = false; @@ -185,12 +172,12 @@ public class CompositionForm extends Form implements CommandListener, Runnable, throw new Exception("instruments==null"); } - choiseInstrument = new ChannelChoiceGroup(Constants.getStringName(23), instrumentsStrings, this.buildChansList()); + choiseInstrument = new ChannelChoiceGroup(L.str[L.menu], instrumentsStrings, this.buildChansList()); if (choiseInstrument == null) { throw new Exception("choiseInstrument==null"); } this.append(choiseInstrument); - seekingGauge = new Gauge(Constants.getStringName(71), true, SEEK_GAUGE_MAX, 0); + seekingGauge = new Gauge(L.str[L.seek], true, SEEK_GAUGE_MAX, 0); this.append(seekingGauge); this.addCommand(edit); this.addCommand(play); @@ -204,7 +191,7 @@ public class CompositionForm extends Form implements CommandListener, Runnable, this.addCommand(back); //this.addCommand(rmsMode); this.setCommandListener(this); - MixerModel.isRMSMode = true; + P.isRMSMode = true; } private byte[] buildChansList() { @@ -246,7 +233,7 @@ public class CompositionForm extends Form implements CommandListener, Runnable, } else { instrName = ((ChoiceGroup) i).getString(((ChoiceGroup) i).getSelectedIndex()); - instrumNum =Constants.instrVectorArr.indexOf(instrName)+1; + instrumNum = Constants.instrVectorArr.indexOf(instrName)+1; } // System.out.println("instrName = " + instrName); // System.out.println("instrumNum = " + instrumNum); @@ -281,7 +268,7 @@ public class CompositionForm extends Form implements CommandListener, Runnable, if (channel != -1) { choiseInstrument.appendChannel(instrName, channel); } else { - Alert a = new Alert(Constants.getStringName(14), Constants.getStringName(15), null, null); + Alert a = new Alert(L.str[L.listInstruments], L.str[L.impossible], null, null); display.setCurrent(a); try { Thread.sleep(1000); @@ -334,7 +321,7 @@ public class CompositionForm extends Form implements CommandListener, Runnable, } catch (Exception e) { msg("" + e); } - } else if (command == Settings.comCancel) { + } else if (command == P.comCancel) { model.stopPlay(); display.setCurrent(CompositionForm.this); } else if (command == stop) { @@ -393,13 +380,13 @@ public class CompositionForm extends Form implements CommandListener, Runnable, display.setCurrent(volForm); } else if (command == meter) { Form textBoxTemp = new Form(Constants.getInstrName(72)); - final TextField nomField = new TextField(Constants.getStringName(73), "" + composition.getNom(), 2, TextField.NUMERIC); + final TextField nomField = new TextField(L.str[L.numerator], "" + composition.getNom(), 2, TextField.NUMERIC); textBoxTemp.append(nomField); - final TextField denomField = new TextField(Constants.getStringName(74), "" + composition.getDenomE(), 1, TextField.NUMERIC); + final TextField denomField = new TextField(L.str[L.denominator], "" + composition.getDenomE(), 1, TextField.NUMERIC); textBoxTemp.append(denomField); - textBoxTemp.append(MixerMain.createStringItem(Constants.getStringName(76), 2)); + textBoxTemp.append(Main.createStringItem(L.str[L.meterInfo], 2)); textBoxTemp.addCommand(CompositionForm.ok); - textBoxTemp.addCommand(Settings.comCancel); + textBoxTemp.addCommand(P.comCancel); textBoxTemp.setCommandListener(new CommandListener() { public void commandAction(Command command, Displayable displayable) { @@ -412,18 +399,7 @@ public class CompositionForm extends Form implements CommandListener, Runnable, }); model.display.setCurrent(textBoxTemp); - } //else if(command == rmsMode) - //{ - //MixerModel.isRMSMode=true; - //this.removeCommand (rmsMode); - //this.addCommand (jsr75Mode); - //} - //else if(command == jsr75Mode) - //{ - //MixerModel.isRMSMode=false; - //this.removeCommand (jsr75Mode); - //this.addCommand (rmsMode); - //} + } else if (command == back) { control.comBack(); } @@ -440,7 +416,7 @@ public class CompositionForm extends Form implements CommandListener, Runnable, Thread runner = new Thread() { public void run() { - WaitForm waitForm = new WaitForm(Constants.getStringName(18) + "...", + WaitForm waitForm = new WaitForm(L.str[L.saving] + "...", model.getWaitableFile(), control.getCurrentlistMenu(), model); @@ -450,12 +426,11 @@ public class CompositionForm extends Form implements CommandListener, Runnable, composition.setName(nameFinal); try { String ans = model.saveMix(composition, nameFinal); - Alert a = new Alert(Constants.getStringName(16), ans, null, null); + Alert a = new Alert(L.str[L.saved], ans, null, null); a.setTimeout(Alert.FOREVER); control.setCurrentlistMenu(a); } catch (Exception ex) { - Alert a = new Alert(Constants.getStringName(12), - Constants.getStringName(17) + "\n" + ex.getMessage(), null, null); + Alert a = new Alert(L.str[L.error], L.str[L.savingError] + "\n" + ex.getMessage(), null, null); a.setTimeout(Alert.FOREVER); waitForm.cancel(); control.setCurrentlistMenu(a); @@ -480,8 +455,8 @@ public class CompositionForm extends Form implements CommandListener, Runnable, * @param s */ public static void msg(String s) { - Alert a = new Alert(Constants.getStringName(12), Constants.getStringName(12) + "\n" + s, null, null); - MixerMain.display.setCurrent(a); + Alert a = new Alert(L.str[L.error], L.str[L.error] + "\n" + s, null, AlertType.ERROR); + Main.dsp.setCurrent(a); } /*Form tabsInstruments (){ MyItem []groupsOfElements = new MyItem [16]; @@ -500,20 +475,20 @@ public class CompositionForm extends Form implements CommandListener, Runnable, // listOfElements[j] = j + i * 8 + 1 + ' ' + Constants.getInstrName(j + i * 8 + 1); // } String[] listOfElements = new String[8]; - System.arraycopy(Settings.parserInstr.stringResourses, i*8+1, listOfElements,0, 8); + System.arraycopy(L.instr, i*8+1, listOfElements,0, 8); groupsChoiseGroup[i] = new ChoiceGroup(Constants.getInstrName(129 + i), 4, listOfElements, null); //for (int j=0; j<8; j++) - //groupsOfElements[i].setFont(j,MixerMain.SMALL_FONT); + //groupsOfElements[i].setFont(j,Main.SMALL_FONT); groupsChoiseGroup[i].addCommand(play); groupsChoiseGroup[i].addCommand(ok); groupsChoiseGroup[i].setItemCommandListener(this); } - listInstrumentsForm = new Form(Constants.getStringName(75), groupsChoiseGroup); + listInstrumentsForm = new Form(L.str[L.instruments], groupsChoiseGroup); Item drums = new StringItem(Constants.getInstrName(0), null); drums.addCommand(ok); drums.setItemCommandListener(this); listInstrumentsForm.append(drums); - listInstrumentsForm.addCommand(Settings.comCancel); + listInstrumentsForm.addCommand(P.comCancel); listInstrumentsForm.setCommandListener(this); } //form.setItemStateListener(this); diff --git a/src/midedit/Constants.java b/src/midedit/Constants.java index 29e7b18..f1790ff 100644 --- a/src/midedit/Constants.java +++ b/src/midedit/Constants.java @@ -1,123 +1,101 @@ package midedit; - import java.util.Vector; - - +import main.Rms; +import main.L; //import java.util.*; //import java.lang.*; - /** * * @author user */ -public class Constants -{ +public class Constants { - /** - * - * @param index - * @param t - */ - public static String getStringName (int index){ - return Settings.parserLang.getStringResourses(index); - } + public static String getInstrName(int index) { + return L.instr[index]; + } - public static String getInstrName (int index){ - return Settings.parserInstr.getStringResourses(index); - } - - public static void setTimeConst(int t) - { - timeConst = t; - } - /** - * - * @return - */ + public static void setTimeConst(int t) { + timeConst = t; + } + /** + * + * @return + */ // public static String getInstruments(int i){ // return (String); // } - /** - * - */ - public static final int INV_CANVAS_CONST = 131; - /** - * - */ - public static final char FILE_DELIM = '/'; - /** - * - */ - public static int timeConst = 10; - /** - * - */ - public final static int N_INSTR = 127, - DRUMS_LENGTH=61,//27__87 - DRUMS_SHIFT = 27; - /** - * - */ - public final static int DRUMS_CHANNEL = 9; - /** - * - */ - public static final int NCHANNEL = 16; -// /** -// * -// */ -// public static final String[] noteNames = {"C","C#","D","D#","E", -// "F","F#","G","G#","A","A#","B"}; - /** - * - */ - public static final int MAX_NOTE_LENGTH = 8; // min == 1/(2^5) - /** - * - */ - public final static String[]KEY_MAP = { - "", getStringName(24), - "", getStringName(25), - ",<5>", getStringName(26)+"\n"+ - getStringName(27), - "<9>,", getStringName(28), - "", getStringName(29), - "", getStringName(30), - "<1>", getStringName(31), - "<3>", getStringName(32), - "<7>,", getStringName(33), - "<*>,<#>,<0>", getStringName(34), - //Settings.settingsIndex[4]==0? "<5>": "",getStringName(35), - Settings.settingsIndex[4]==0? ",,,": "<4>,<6>,<2>,<8> ",getStringName(36), - Settings.settingsIndex[4]==0? "<4>,<6>,<2>,<8>":",,,", getStringName(37), - }; - /** - * - */ - public final static String[]QUICK_COMMANDS = { - "<1> ",getStringName(38), - "<2> ",getStringName(39), - "<3> ",getStringName(40), - "<4> ",getStringName(41), - "<5> ",getStringName(42), - "<6> ",getStringName(43), - "<7> ",getStringName(44), - "<8> ",getStringName(45), - "<9> ",getStringName(46), - "<*> ",getStringName(29), - "<0> ",getStringName(48), - "<#> ",getStringName(49), - }; - static VectorArr instrVectorArr=new VectorArr(Settings.parserInstr.stringResourses, 1, 128); + /** + * + */ + public static final int INV_CANVAS_CONST = 131; + /** + * + */ + public static final char FILE_DELIM = '/'; + /** + * + */ + public static int timeConst = 10; + /** + * + */ + public final static int N_INSTR = 127, + DRUMS_LENGTH = 61,//27__87 + DRUMS_SHIFT = 27; + /** + * + */ + public final static int DRUMS_CHANNEL = 9; + /** + * + */ + public static final int NCHANNEL = 16; + /** + * + */ + public static final int MAX_NOTE_LENGTH = 8; // min == 1/(2^5) + /** + * + */ + public final static String[] KEY_MAP = { + "", L.str[L.menu], + "", L.str[L.back], + ",<5>", L.str[L.insertNoteWithCurrentAttributes] + "\n" + L.str[L.noteAttributeHelp], + "<9>,", L.str[L.deleteNote], + "", L.str[L.undo], + "", L.str[L.noteVolume], + + "<1>", L.str[L.playFromCurrent], + "<3>", L.str[L.playNoteOnCursor], + "<7>,", L.str[L.selectNoteAttribute], + "<*>,<#>,<0>", L.str[L.changeNoteAttribute], + Rms.numKeysEdit ? "<4>,<6>,<2>,<8>" : ",,,", L.str[L.navigationOnComposition], + Rms.numKeysEdit ? ",,," : "<4>,<6>,<2>,<8>", L.str[L.quicknav],}; + + public final static String[] QUICK_COMMANDS = { + "<1> ", L.str[L.markBegin], + "<2> ", L.str[L.markEnd], + "<3> ", L.str[L.copy], + "<4> ", L.str[L.pasteInsert], + "<5> ", L.str[L.pasteReplace], + "<6> ", L.str[L.pasteOverwrite], + "<7> ", L.str[L.shiftDelete], + "<8> ", L.str[L.clean], + "<9> ", L.str[L.playChannelOnScreen], + "<*> ", L.str[L.undo], + "<0> ", L.str[L.playChannelAll], + "<#> ", L.str[L.redo]}; + + static VectorArr instrVectorArr = new VectorArr(L.instr, 1, 128); -static class VectorArr extends Vector { - public VectorArr(Object src, int beg, int length) { - super(length); - setSize(length); - System.arraycopy(src, beg, elementData, 0, size()); + static class VectorArr extends Vector { + + public VectorArr(String[] src, int beg, int length) { + super(length); + setSize(length); + System.arraycopy(src, beg, super.elementData, 0, size()); + } } - -} } \ No newline at end of file diff --git a/src/midedit/DrumsCanvas.java b/src/midedit/DrumsCanvas.java index 1fbab76..539d14d 100644 --- a/src/midedit/DrumsCanvas.java +++ b/src/midedit/DrumsCanvas.java @@ -1,7 +1,7 @@ package midedit; import midedit.media.Composition; - +import main.Main; /** @@ -21,7 +21,7 @@ public class DrumsCanvas extends MixerCanvas * @param ctrl * @param c */ - public DrumsCanvas(MixerMain ctrl, Composition c) + public DrumsCanvas(Main ctrl, Composition c) { super(ctrl,c,Constants.DRUMS_CHANNEL); prepareConstants(); diff --git a/src/midedit/FileChooser.java b/src/midedit/FileChooser.java deleted file mode 100644 index 2f80ed9..0000000 --- a/src/midedit/FileChooser.java +++ /dev/null @@ -1,233 +0,0 @@ -package midedit; - - -import midedit.io.AbstractFile; -import javax.microedition.lcdui.*; - -/** - * - * @author user - */ -public class FileChooser extends List implements CommandListener, Runnable { - - private AbstractFile file; - private String path; - private String selectedFileName; - private AbstractListener listener = null; - private String[] fileNames; - private Displayable prevDisplay; - private Command up = new Command(Constants.getStringName(60), Command.BACK, 1), - delete = new Command(Constants.getStringName(61), Command.ITEM, 1), - saveThis; - private Form waitForm; - private boolean isSave; - /** - * - */ - public final static char FILE_DELIMITER = Constants.FILE_DELIM; - private String defaultPath; - - /** - * - * @param prev - * @param pathStr - * @param save - * @param aFile - */ - public FileChooser(Displayable prev, String pathStr, boolean save, AbstractFile aFile) { - - super((save) ?Constants.getStringName(62) : Constants.getStringName(63), List.IMPLICIT); - file = aFile; - isSave = save; - prevDisplay = prev; - path = pathStr; - defaultPath = pathStr; - selectedFileName = ""; - waitForm = new Form(Constants.getStringName(64)); - waitForm.append("\n\n"+Constants.getStringName(65)+".."); - if (!MixerModel.isRMSMode) { - this.addCommand(up); - } - if (isSave) { - saveThis = new Command(Constants.getStringName(66), Command.SCREEN, 0); - this.addCommand(saveThis); - } else if (MixerModel.isRMSMode) - this.addCommand(delete); - - this.addCommand(Settings.comCancel); - this.setCommandListener(this); - updateView(); - } - - /** - * - * @param aListener - */ - public void setAbstractListener(AbstractListener aListener) { - listener = aListener; - } - - /** - * - * @param command - * @param displayable - */ - public void commandAction(Command command, Displayable displayable) { - try { - if (command == up) { - int ind; - if (path.length() >= 3) - { - ind = path.lastIndexOf(FILE_DELIMITER, path.length() - 2); - String newPath; - if (ind >= 0) { - newPath = path.substring(0, ind + 1); - } else { - newPath = "" + FILE_DELIMITER; - } - path = newPath; - } - updateView(); - } else if (command == delete) { - int ind = this.getSelectedIndex(); - if (path.length() > 0) { - char ch = path.charAt(path.length() - 1); - if (ch != '/' && ch != '\\') { - path += FILE_DELIMITER; - } - } - selectedFileName = fileNames[ind]; - if (listener != null) { - file.delete(selectedFileName); - } - } else if (command == Settings.comCancel) { - path = null; - if (listener != null) { - listener.actionPerformed(0); - } - } else if (command == saveThis) { - if (listener != null) { - try{ - listener.actionPerformed(0); - } - catch (Exception e){ - Alert a = new Alert(Constants.getStringName(12),Constants.getStringName(20)+":\nlistener.actionPerformed "+ e.getMessage(), null, null); - MixerMain.display.setCurrent(a, prevDisplay); - } - } - } - - else - { - int ind = this.getSelectedIndex(); - String fullName; - if (path.length() > 0) { - char ch = path.charAt(path.length() - 1); - if (ch != '/' && ch != '\\') { - path += FILE_DELIMITER; - } - } - fullName = path; - fullName += fileNames[ind]; - if (file.isDirectory( - fullName)) { - selectedFileName = ""; - path = fullName; - if (path.charAt(path.length() - 1) != '/') { - path += FILE_DELIMITER; - } - updateView(); - } else if (!isSave) - { - selectedFileName = fileNames[ind]; - { - if (listener != null) { - listener.actionPerformed(0); - } - } - } - } - } catch (Exception e) { - Alert a = new Alert(Constants.getStringName(12),Constants.getStringName(20)+":\nFileChooser "+ e.getMessage(), null, null); - MixerMain.display.setCurrent(a, prevDisplay); - } - } - - /** - * - */ - public void update() { - MixerMain.display.callSerially(new Runnable() { - - public void run() { - updateView(); - } - }); - } - - private void updateView() { - MixerMain.display.setCurrent(waitForm); - - new Thread(this).start(); - } - - /** - * - */ - public void run() - { - try { - if (path == null) { - path = defaultPath; - } - - fileNames = file.list( - path); - path = file.getLastListPath(); - - - - for (int i = this.size() - 1; i >= 0; --i) { - this.delete(i); - } - - if (fileNames != null) { - for (int i = 0; i < fileNames.length; ++i) { - this.insert(i, fileNames[i], null); - } - } - - this.setTicker(new Ticker(path)); - MixerMain.display.setCurrent(this); - - - } catch (Exception e) { - Alert a = new Alert(Constants.getStringName(21),Constants.getStringName(21)+ ":\n" + e.getMessage() + "\npath=" + path, null, null); - MixerMain.display.setCurrent(a, prevDisplay); - path = null; - selectedFileName = ""; - } - - - - } - - /** - * - * @return - */ - public String getSelectedFilePath() { - if (path == null) { - return null; - } - return path + selectedFileName; - } - - /** - * - * @return - */ - public String getSelectedFolderPath() { - return path; - } -} diff --git a/src/midedit/LangParser.java b/src/midedit/LangParser.java deleted file mode 100644 index 102ada2..0000000 --- a/src/midedit/LangParser.java +++ /dev/null @@ -1,219 +0,0 @@ -package midedit; - -import java.io.*; -public class LangParser { -/** - -

- . , - JAR ( JAD) - . - -, , - . -MID- - . - -

-, - . , - , - . - */ - /** , - MID-. - * - AMS. - MID-. - */ - int isSupported=1; - private int maxSize; - String locale,extension;// = System.getProperty("microedition.locale"); - /** , - . - * , - : <>_<>.txt. - - , - . - - */ - String resourceFile;// ="bin/"+locale + ".lang"; - /* , , - . - * - */ - //private String encoding; - /** HashTable, - . - */ - String [] stringResourses; - /** - No-arg. - - . - , - . - JAR . - */ - public LangParser(String newLocale,String newExtension, int parSize) { - - /** - */ -extension=newExtension; -maxSize=parSize; -stringResourses = new String [maxSize]; -setLocale(newLocale,extension); - if (isSupported == 0) { - //do something, eg. throws Exception or generate Alert; - return; - } - } - - /** - , - . - - - @param key - -. - - @ , - . - */ - public String getStringResourses (int number){ - if (stringResourses[number] == null || number<0 || number>stringResourses.length) { - return "*******"; - } - - return stringResourses[number]; - } - - private void setLocale (String newLocale,String newExtension){ - locale=newLocale; - resourceFile ="/bin/"+locale + "."+newExtension; - loadResources(resourceFile); - } - /** - - . JAR - , . - J2MEWTK JAR , - bin/. - - @param file - - . - */ - private void loadResources(String file) { - Class = getClass(); - - if (file == null) { - isSupported=0; - file=("/bin/en."+extension); - } - InputStream is = null; - is = .getResourceAsStream(file); - if (is == null) { - isSupported=0; - file=("/bin/en."+extension); - } - if (is == null){ - for (int i=0;i[ \t]*:[ ]*<>, - <> and <> , - , - . - */ - private int readLine( - StringBuffer value, - Reader stream) { - if (value == null || - stream == null) { - return -1; - } - - try { - char c=0; - try{ - while (true){ - c=(char)stream.read(); - if (c==0x0D||c==0x0A){ - continue; - } - break; - } - while (true) { - if (c==0x0D||c==0x0A||c==-1||c==0xffff){ - break; - } - value.append (c); - //System.out.println (value.toString()+" "+locale+"."+extension+" c="+(int)c); - c=(char)stream.read(); - } - } catch (OutOfMemoryError ome){ - //System.out.println ("OutOfMemoryError "+locale+"."+extension); - } - } catch (IOException ioe) { - //ioe.printStackTrace(); - return -1; - } - if (value==null) - return -1; - return 0; - } - - - - /** - - */ - /** - - */ -} - diff --git a/src/midedit/MidiFile.java b/src/midedit/MidiFile.java index df0848a..8e62d23 100644 --- a/src/midedit/MidiFile.java +++ b/src/midedit/MidiFile.java @@ -3,6 +3,7 @@ package midedit; import midedit.media.Composition; import midedit.io.AbstractFile; import java.io.*; +import main.P; //import com.siemens.mp.io.File; public class MidiFile implements Waitable { @@ -72,7 +73,7 @@ public class MidiFile implements Waitable { } public void setFile() { - file = MixerModel.isRMSMode ? MixerModel.rmsFile : MixerModel.jsr75File; + file = P.isRMSMode ? MixerModel.rmsFile : MixerModel.jsr75File; } diff --git a/src/midedit/MixerCanvas.java b/src/midedit/MixerCanvas.java index b60593d..876f911 100644 --- a/src/midedit/MixerCanvas.java +++ b/src/midedit/MixerCanvas.java @@ -1,49 +1,49 @@ package midedit; - import midedit.media.Composition; import java.util.*; import java.io.*; import javax.microedition.lcdui.*; +import main.L; +import main.P; +import main.Main; +import main.Rms; /** * * @author user */ -abstract public class MixerCanvas extends Canvas implements Runnable -{ +abstract public class MixerCanvas extends Canvas implements Runnable { private static final Font defFont = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN, Font.SIZE_SMALL); - protected Composition composition; protected int channel; private Options options; - private boolean isOptionsView = false, + private boolean isOptionsView = false, isMarkMode = false, isMoveMode = false, isModeDesc = false, - isNumsControl = (Settings.settingsIndex[4] == 1) ? true : false; + isNumsControl = Rms.numKeysEdit; private Status status; - private MixerMain control; + private Main control; private MixerModel model; - private Display display = MixerMain.display; - private Thread playingThread ; - private final Runnable playingRunnable= new Runnable() { + private Display display = Main.dsp; + private Thread playingThread; + private final Runnable playingRunnable = new Runnable() { - public void run() { - System.out.println("getTimeToCanvasConct() = " + composition.getTime2CanvasConst()); - System.out.println("Thread.currentThread = " + Thread.currentThread()); - while (CompositionForm.isPlaying) { - try { - doSmallRight(); - Thread.sleep(31); - } catch (InterruptedException ex) { - System.out.println("ex = " + ex); - } - } + public void run() { + System.out.println("getTimeToCanvasConct() = " + composition.getTime2CanvasConst()); + System.out.println("Thread.currentThread = " + Thread.currentThread()); + while (CompositionForm.isPlaying) { + try { + doSmallRight(); + Thread.sleep(31); + } catch (InterruptedException ex) { + System.out.println("ex = " + ex); } - } ; - + } + } + }; /** * @@ -51,21 +51,21 @@ abstract public class MixerCanvas extends Canvas implements Runnable * @param c * @param ch */ - public MixerCanvas(MixerMain ctrl, Composition c, int ch) { - //if (MixerMain.IS_MIDP2) - setFullScreenMode(true); + public MixerCanvas(Main ctrl, Composition c, int ch) { + //if (Main.IS_MIDP2) + setFullScreenMode(true); control = ctrl; composition = c; channel = ch; - wOne = Settings.settingsIndex[1]; - hOne = Settings.settingsIndex[0]; + wOne = Rms.noteWidth; + hOne = Rms.noteHeight; screenHeight = getHeight(); screenWidth = getWidth(); statusBegY = screenHeight - statusHeight; nW = (screenWidth - wBeg - 5) / wOne; - nH = (screenHeight - statusHeight - 12) / hOne; - rollWidth = (nW * wOne + 1); - rollHeight = (nH * hOne + 1); + nH = (screenHeight - statusHeight - 12) / hOne; + rollWidth = (nW * wOne + 1); + rollHeight = (nH * hOne + 1); model = control.getModel(); runningStatus = true; options = new Options(); @@ -101,47 +101,47 @@ abstract public class MixerCanvas extends Canvas implements Runnable } if (keyPressedCount == 0) { keyPressedCount = 1; - } - int gameAction=0; - try{ - gameAction = getGameAction(keyCodePressed); - } - catch (IllegalArgumentException illegArg){ - } - if ((gameAction == FIRE)&(keyCodePressed!=-1)&(keyCodePressed!=-4)) { - doKEY_NUM5(); - needPaint = true; - needPaintStatus = true; - return/*break*/; - } else if (gameAction == LEFT||keyCodePressed==KEY_NUM4) { - if (isNumsControl^(keyCodePressed==KEY_NUM4)) - doBigLeft(); - else - doSmallLeft(); - status.resetTimeTune(); - return; - } else if (gameAction == RIGHT||keyCodePressed==KEY_NUM6) { - if (isNumsControl^(keyCodePressed==KEY_NUM6)) - doBigRight(); - else - doSmallRight(); - status.resetTimeTune(); - return; - } else if (gameAction == UP||keyCodePressed==KEY_NUM2) { - if (isNumsControl^(keyCodePressed==KEY_NUM2)) - doBigUp(); - else - doSmallUp(); - status.resetTimeTune(); - return; - } else if (gameAction == DOWN||keyCodePressed==KEY_NUM8) { - if (isNumsControl^(keyCodePressed==KEY_NUM8)) - doBigDown(); - else - doSmallDown(); - status.resetTimeTune(); - return; - } + } + int ga = getGameAction(keyCodePressed); + if (ga == FIRE) { + doKEY_NUM5(); + needPaint = true; + needPaintStatus = true; + return/*break*/; + } else if (ga == LEFT || keyCodePressed == KEY_NUM4) { + if (isNumsControl ^ (keyCodePressed == KEY_NUM4)) { + doBigLeft(); + } else { + doSmallLeft(); + } + status.resetTimeTune(); + return; + } else if (ga == RIGHT || keyCodePressed == KEY_NUM6) { + if (isNumsControl ^ (keyCodePressed == KEY_NUM6)) { + doBigRight(); + } else { + doSmallRight(); + } + status.resetTimeTune(); + return; + } else if (ga == UP || keyCodePressed == KEY_NUM2) { + if (isNumsControl ^ (keyCodePressed == KEY_NUM2)) { + doBigUp(); + } else { + doSmallUp(); + } + status.resetTimeTune(); + return; + } else if (ga == DOWN || keyCodePressed == KEY_NUM8) { + if (isNumsControl ^ (keyCodePressed == KEY_NUM8)) { + doBigDown(); + } else { + doSmallDown(); + } + status.resetTimeTune(); + return; + } + switch (keyCodePressed) { case KEY_NUM1: playFromCurrentPosition(); @@ -152,17 +152,18 @@ abstract public class MixerCanvas extends Canvas implements Runnable break; case KEY_NUM7: - case -10: case -4: + case -10: + case -4: status.nextView(); needPaintStatus = true; break; case KEY_NUM9: - case -8: + case -8: doKEY_NUM9(); needPaint = true; needPaintStatus = true; break; - case KEY_NUM0: + case KEY_NUM0: status.action(); needPaintStatus = true; break; @@ -174,14 +175,16 @@ abstract public class MixerCanvas extends Canvas implements Runnable status.curParamPlus(); needPaintStatus = true; break; - case -6: case -1: + case -6: + case -1: isOptionsView = true; options.resetMenu(); break; - case -7: case -12: + case -7: + case -12: CompositionForm.curForm.setComposForm(); break; - case -11: + case -11: composition.getUndoableAction().undo(); needPaintStatus = true; needPaint = true; @@ -245,7 +248,7 @@ abstract public class MixerCanvas extends Canvas implements Runnable ; - protected void doSmallDown() { + protected void doSmallDown() { if (curY < nH - 1) { curY++; } else if (hBase + curY < hMax) { @@ -258,7 +261,7 @@ abstract public class MixerCanvas extends Canvas implements Runnable ; - private void doBigLeft() { + private void doBigLeft() { wStepMeasure = (composition.getNom() * (32 >> composition.getDenomE())); if (xBase >= wStepMeasure) { xBase -= wStepMeasure; @@ -308,16 +311,14 @@ abstract public class MixerCanvas extends Canvas implements Runnable * * @return */ - protected boolean doKEY_NUM5() - { + protected boolean doKEY_NUM5() { if (isMoveMode == false && isMarkMode == false && curNote != null) { timeMarkBeg = getCurTime(); timeMarkEnd = getCurTime(); setMarkModeOn(); } - if (isMoveMode) - { + if (isMoveMode) { int noteShift = getCurNote() - OrigNote; if (this instanceof DrumsCanvas) { noteShift = -noteShift; @@ -332,9 +333,9 @@ abstract public class MixerCanvas extends Canvas implements Runnable if (curNote != null) { if (curNote.len > 0) { - Note noteTmp; - for (noteTmp = curNote.next; noteTmp != null && - (noteTmp.c != curNote.c || noteTmp.n != curNote.n || noteTmp.v != 0); + Note noteTmp; + for (noteTmp = curNote.next; noteTmp != null + && (noteTmp.c != curNote.c || noteTmp.n != curNote.n || noteTmp.v != 0); noteTmp = noteTmp.next); if (noteTmp != null && noteTmp.c == note.c && noteTmp.n == note.n) { @@ -358,7 +359,7 @@ abstract public class MixerCanvas extends Canvas implements Runnable /** * */ - private void doKEY_NUM9() { + private void doKEY_NUM9() { if (isMarkMode) { setMarkModeOff(); return; @@ -370,16 +371,15 @@ abstract public class MixerCanvas extends Canvas implements Runnable composition.delNote(getCurTime(), (byte) channel, (byte) getNoteFromLine(curY), (byte) 127); } } - + private void playFromCurrentPosition() { try { - if (CompositionForm.isPlaying){ + if (CompositionForm.isPlaying) { model.stopPlay(); playingThread.join(); - } - else{ + } else { model.playMix(composition, xBase * Constants.timeConst); - playingThread=new Thread(playingRunnable); + playingThread = new Thread(playingRunnable); playingThread.start(); System.out.println("CompositionForm.isPlaying = " + CompositionForm.isPlaying); } @@ -394,16 +394,16 @@ abstract public class MixerCanvas extends Canvas implements Runnable * @param keyCode */ protected void keyReleased(int keyCode) { - if (keyPressedCount > 0) {int gameAction=0; - try{ + if (keyPressedCount > 0) { + int gameAction = 0; + try { gameAction = getGameAction(keyCodePressed); - } - catch (IllegalArgumentException illegArg){ - } - if (keyCodePressed == KEY_NUM4 || keyCodePressed == KEY_NUM6 || - keyCodePressed == KEY_NUM2 || keyCodePressed == KEY_NUM8 || - keyCodePressed == KEY_POUND || keyCodePressed == KEY_STAR|| - gameAction==LEFT||gameAction==RIGHT||gameAction==UP||gameAction==DOWN) { + } catch (IllegalArgumentException illegArg) { + } + if (keyCodePressed == KEY_NUM4 || keyCodePressed == KEY_NUM6 + || keyCodePressed == KEY_NUM2 || keyCodePressed == KEY_NUM8 + || keyCodePressed == KEY_POUND || keyCodePressed == KEY_STAR + || gameAction == LEFT || gameAction == RIGHT || gameAction == UP || gameAction == DOWN) { setNeedPaint(); } } @@ -425,26 +425,25 @@ abstract public class MixerCanvas extends Canvas implements Runnable } if (keyPressedCount > 0) { - if (keyPressedCount < 25) - { + if (keyPressedCount < 25) { keyPressedCount++; - } else{ - int gameAction=0; - try{ - gameAction = getGameAction(keyCodePressed); + } else { + int gameAction = 0; + try { + gameAction = getGameAction(keyCodePressed); + } catch (IllegalArgumentException illegArg) { } - catch (IllegalArgumentException illegArg){ - } - if (keyCodePressed == KEY_NUM4 || keyCodePressed == KEY_NUM6 || - gameAction==LEFT||gameAction==RIGHT||gameAction==UP||gameAction==DOWN|| - keyCodePressed == KEY_NUM2 || keyCodePressed == KEY_NUM8 || - keyCodePressed == KEY_POUND || keyCodePressed == KEY_STAR) { - isblack = true; + if (keyCodePressed == KEY_NUM4 || keyCodePressed == KEY_NUM6 + || gameAction == LEFT || gameAction == RIGHT || gameAction == UP || gameAction == DOWN + || keyCodePressed == KEY_NUM2 || keyCodePressed == KEY_NUM8 + || keyCodePressed == KEY_POUND || keyCodePressed == KEY_STAR) { + isblack = true; - keyPressed(keyCodePressed); - }} + keyPressed(keyCodePressed); + } + } } paintUniEditor(g); @@ -454,10 +453,10 @@ abstract public class MixerCanvas extends Canvas implements Runnable * * @param g */ - private void paintUniEditor(Graphics g) { + private void paintUniEditor(Graphics g) { g.setColor(224, 192, 224); g.setGrayScale(0); - g.setFont(MixerMain.SMALL_FONT); + g.setFont(P.smPlain); if (needPaint == true) { int tmpN = getNoteFromLine(curY); if (tmpN < 0 || tmpN > 127) { @@ -494,9 +493,9 @@ abstract public class MixerCanvas extends Canvas implements Runnable private void paintRoll(Graphics g) { g.setColor(192, 192, 224); - g.fillRect(0, 0, screenWidth, statusBegY); + g.fillRect(0, 0, screenWidth, statusBegY); g.setColor(0); - g.drawRect(0, 0, screenWidth - 1, statusBegY); + g.drawRect(0, 0, screenWidth - 1, statusBegY); paintScale(g); g.translate(wBeg, hBeg); g.setGrayScale(96); @@ -504,7 +503,7 @@ abstract public class MixerCanvas extends Canvas implements Runnable g.drawLine(0, yt, rollWidth - 1, yt); } g.setColor(192, 160, 160); - yt = curY * hOne + 1 ; + yt = curY * hOne + 1; g.fillRect(0, yt, rollWidth - 1, hOne - 1); g.setGrayScale(96); int vLineStep = 32 >> composition.getDenomE(); @@ -531,8 +530,8 @@ abstract public class MixerCanvas extends Canvas implements Runnable for (note = composition.getFirstNote(tBeg, channel); note != null && note.t <= tMax; note = note.next) { if (note.c == channel && note.v != 0) { - if (note.t <= curTimePlus && note.n == curN && - (curTime < note.t + (note.len == 0 ? 1 : note.len))) { + if (note.t <= curTimePlus && note.n == curN + && (curTime < note.t + (note.len == 0 ? 1 : note.len))) { curNote = note; if (!isMarkMode) { g.setColor(150, 0, 0); @@ -554,8 +553,7 @@ abstract public class MixerCanvas extends Canvas implements Runnable } } } - if (isMoveMode) - { + if (isMoveMode) { int shiftTime = getCurTime() - OrigTime; int shiftNote = getCurNote() - OrigNote; @@ -641,7 +639,7 @@ abstract public class MixerCanvas extends Canvas implements Runnable yt = nH; } - g.fillRect(xt + 1 , yt * hOne + 1 , 2, hOne - 1); + g.fillRect(xt + 1, yt * hOne + 1, 2, hOne - 1); } } @@ -693,7 +691,7 @@ abstract public class MixerCanvas extends Canvas implements Runnable g.drawRect(DESC_BEGX, DESC_BEGY, DESC_WIDTH - 1, DESC_HEIGHT - 1); int nInd = modeDesc.indexOf('\n'); int strY; - if (nInd > 0) { + if (nInd > 0) { strY = DESC_BEGY + (DESC_HEIGHT - 2 * defFont.getBaselinePosition()) / 2; if (DESC_HEIGHT < 2 * defFont.getHeight()) { modeDesc = modeDesc.replace('\n', ' '); @@ -748,7 +746,7 @@ abstract public class MixerCanvas extends Canvas implements Runnable * @param t * @return */ - private int getX(int t) { + private int getX(int t) { return t / Constants.timeConst - xBase; } @@ -805,7 +803,7 @@ abstract public class MixerCanvas extends Canvas implements Runnable /** * */ - private void setMarkModeOn() { + private void setMarkModeOn() { if (timeMarkBeg != NOT_MARKED && timeMarkEnd != NOT_MARKED && timeMarkBeg <= timeMarkEnd) { if (isMarkMode) { NoteListUtils.unMarkNotes(composition, (byte) channel); @@ -821,7 +819,7 @@ abstract public class MixerCanvas extends Canvas implements Runnable /** * */ - private void setMarkModeOff() { + private void setMarkModeOff() { NoteListUtils.unMarkNotes(composition, (byte) channel); isMarkMode = false; timeMarkBeg = NOT_MARKED; @@ -833,7 +831,7 @@ abstract public class MixerCanvas extends Canvas implements Runnable isModeDesc = true; modeDesc = desc; } - private final static int NOT_MARKED = -1000; + private final static int NOT_MARKED = -1000; private int OrigTime, OrigNote, statusHeight = 21, @@ -842,21 +840,20 @@ abstract public class MixerCanvas extends Canvas implements Runnable statusBegY, nW, keyCodePressed = KEY_NUM1; - protected int - curY, + protected int curY, hMin, hMax = 15, hBase, hStep = 12, wBeg = 16, hBeg = 5, - wOne = Settings.settingsIndex[1], - hOne = Settings.settingsIndex[0], + wOne = Rms.noteWidth, + hOne = Rms.noteHeight, nH, - rollWidth, - rollHeight; + rollWidth, + rollHeight; //protected String str = " Hello "; - static private Image statusImg, + static private Image statusImg, statusImgSel, statusImgCur, statusImgData, statusImgDataCur, imgDot, imgTriplet; public static int curX, @@ -872,7 +869,7 @@ abstract public class MixerCanvas extends Canvas implements Runnable wStep = 5, wStepMeasure = 32, frameCount, - xt, yt, + xt, yt, dx, dy, tBeg, tMax, curTime, @@ -896,11 +893,10 @@ abstract public class MixerCanvas extends Canvas implements Runnable } } - private class Status { - private int statusMode; - private final static int MODE_NONE = -1, + private int statusMode; + private final static int MODE_NONE = -1, MODE_TIME = 0, MODE_LEN = 1, MODE_NOTE = 2, @@ -910,10 +906,10 @@ abstract public class MixerCanvas extends Canvas implements Runnable private int[] params; private int[] absParams; private int[] deltaParams; - private int pCount = 4; - private int indCurNoteLen; + private int pCount = 4; + private int indCurNoteLen; private byte[] noteLen = {1, 2, 4, 8, 16, 32}; - private int extLen; + private int extLen; public Status() { statusMode = MODE_NONE; @@ -926,10 +922,10 @@ abstract public class MixerCanvas extends Canvas implements Runnable deltaParams = new int[pCount]; params = absParams; - params[MODE_TIME] = 0; - params[MODE_LEN] = 10; - params[MODE_NOTE] = 0; - params[MODE_VOL] = 90; + params[MODE_TIME] = 0; + params[MODE_LEN] = 10; + params[MODE_NOTE] = 0; + params[MODE_VOL] = 90; resetDelta(); @@ -938,26 +934,26 @@ abstract public class MixerCanvas extends Canvas implements Runnable calcLen(); } - private void resetDelta() { - deltaParams[MODE_TIME] = 0; - deltaParams[MODE_LEN] = 0; - deltaParams[MODE_NOTE] = 0; - deltaParams[MODE_VOL] = 0; + private void resetDelta() { + deltaParams[MODE_TIME] = 0; + deltaParams[MODE_LEN] = 0; + deltaParams[MODE_NOTE] = 0; + deltaParams[MODE_VOL] = 0; } - private void setAbsParams() { + private void setAbsParams() { params = absParams; } - private void setDeltaParams() { + private void setDeltaParams() { params = deltaParams; } - private void nextView() { + private void nextView() { statusMode++; if (statusMode >= pCount) { - statusMode = MODE_NONE; + statusMode = MODE_NONE; } if (params == deltaParams) { if (!isValidTab()) { @@ -967,7 +963,7 @@ abstract public class MixerCanvas extends Canvas implements Runnable } - private boolean isValidTab() { + private boolean isValidTab() { boolean ok = true; if (params == deltaParams && (statusMode == 1 || statusMode == 2)) { ok = false; @@ -975,11 +971,11 @@ abstract public class MixerCanvas extends Canvas implements Runnable return ok; } - private void resetTimeTune() { + private void resetTimeTune() { params[MODE_TIME] = 0; } - private void curParamPlus() { + private void curParamPlus() { if (curNote != null && noteDelta != null) { return; } @@ -1006,7 +1002,7 @@ abstract public class MixerCanvas extends Canvas implements Runnable } } - private void curParamMinus() { + private void curParamMinus() { if (curNote != null && noteDelta != null) { return; } @@ -1039,7 +1035,7 @@ abstract public class MixerCanvas extends Canvas implements Runnable } } - private void volumePlus() { + private void volumePlus() { if (curNote != null && noteDelta != null) { return; } @@ -1051,7 +1047,7 @@ abstract public class MixerCanvas extends Canvas implements Runnable } - private void volumeMinus() { + private void volumeMinus() { if (curNote != null && noteDelta != null) { return; } @@ -1062,11 +1058,11 @@ abstract public class MixerCanvas extends Canvas implements Runnable } - private int getTimeTune() { + private int getTimeTune() { return params[MODE_TIME]; } - private byte getVolTune() { + private byte getVolTune() { return (byte) params[MODE_VOL]; } @@ -1076,21 +1072,20 @@ abstract public class MixerCanvas extends Canvas implements Runnable case 0: break; case 1: - len = len * 3 / 2; + len = len * 3 / 2; break; case 2: - len = len * 2 / 3; + len = len * 2 / 3; break; } params[MODE_LEN] = len; } - private int getLenTune() { + private int getLenTune() { return params[MODE_LEN]; } - private void action() - { + private void action() { if (statusMode == MODE_LEN) { extLen = (extLen + 1) % 3; calcLen(); @@ -1174,7 +1169,7 @@ abstract public class MixerCanvas extends Canvas implements Runnable getVolTune(), getLenTune()); } int m0, m1, m2, m3, m4; - int meterNom = composition.getNom(), meterDenom = 1 << composition.getDenomE(); + int meterNom = composition.getNom(), meterDenom = 1 << composition.getDenomE(); tick = composition.getTicksPer4() * 4 * meterNom / meterDenom; int mod = (composition.getTicksPer4() << 2) >> (composition.getDenomE()); switch (statusMode) { @@ -1255,9 +1250,9 @@ abstract public class MixerCanvas extends Canvas implements Runnable PrintSmallFont.print(g, note.n, 0, m4 - xIndent - 12, yIndent, color); } else if (MixerCanvas.this instanceof DrumsCanvas) { m1 = 2; - g.setFont(MixerMain.SMALL_FONT); - g.drawString(getNoteFromLine(curY)+" "+Constants.getInstrName(getNoteFromLine(curY) - DrumsCanvas.drumsShift+145), - m1, yIndent + 3, Graphics.BOTTOM | Graphics.LEFT); + g.setFont(P.smPlain); + g.drawString(getNoteFromLine(curY) + " " + Constants.getInstrName(getNoteFromLine(curY) - DrumsCanvas.drumsShift + 145), + m1, yIndent + 3, Graphics.BOTTOM | Graphics.LEFT); } break; @@ -1265,8 +1260,7 @@ abstract public class MixerCanvas extends Canvas implements Runnable m4 = 55; if (isMoveMode) { - g.drawString(Constants.getStringName(77), m4 - 18, yIndent + 3, Graphics.BOTTOM | Graphics.RIGHT); - + g.drawString(L.str[L.delta], m4 - 18, yIndent + 3, Graphics.BOTTOM | Graphics.RIGHT); } PrintSmallFont.print(g, note.v, 0, m4 - xIndent, yIndent, color); @@ -1292,17 +1286,17 @@ abstract public class MixerCanvas extends Canvas implements Runnable //System.out.println(this.toString() + " created"); if (screenHeight > 240) { ONE_LINE_HEIGHT = 22; - MENU_WIDTH = 120; + MENU_WIDTH = 140; } MENU_BEGX = (screenWidth - MENU_WIDTH) / 2; MENU_BEGY = (screenHeight - menuNumLines * ONE_LINE_HEIGHT) / 4; - mainMenu = new Menu(Constants.getStringName(24), null, MENU_BEGX, MENU_BEGY, MENU_WIDTH, menuNumLines, ONE_LINE_HEIGHT); + mainMenu = new Menu(L.str[L.menu], null, MENU_BEGX, MENU_BEGY, MENU_WIDTH, menuNumLines, ONE_LINE_HEIGHT); - Menu playMenu = new Menu(Constants.getStringName(78), mainMenu, MENU_BEGX, MENU_BEGY, MENU_WIDTH, menuNumLines, ONE_LINE_HEIGHT); - MenuItem playAllItem = new MenuItem(Constants.getStringName(79), 0) { + Menu playMenu = new Menu(L.str[L.playStop], mainMenu, MENU_BEGX, MENU_BEGY, MENU_WIDTH, menuNumLines, ONE_LINE_HEIGHT); + MenuItem playAllItem = new MenuItem(L.str[L.playAll], 0) { public boolean actionPerformed() { try { @@ -1313,7 +1307,7 @@ abstract public class MixerCanvas extends Canvas implements Runnable } }; playMenu.addItem(playAllItem); - MenuItem playItem = new MenuItem(Constants.getStringName(80), 0) { + MenuItem playItem = new MenuItem(L.str[L.playScreen], 0) { public boolean actionPerformed() { try { @@ -1325,7 +1319,7 @@ abstract public class MixerCanvas extends Canvas implements Runnable } }; playMenu.addItem(playItem); - MenuItem playTrackAllItem = new MenuItem(Constants.getStringName(81), 0) { + MenuItem playTrackAllItem = new MenuItem(L.str[L.trackAll], 0) { public boolean actionPerformed() { try { @@ -1337,7 +1331,7 @@ abstract public class MixerCanvas extends Canvas implements Runnable } }; playMenu.addItem(playTrackAllItem); - MenuItem playTrackItem = new MenuItem(Constants.getStringName(82), 0) { + MenuItem playTrackItem = new MenuItem(L.str[L.trackScreen], 0) { public boolean actionPerformed() { try { @@ -1349,7 +1343,7 @@ abstract public class MixerCanvas extends Canvas implements Runnable } }; playMenu.addItem(playTrackItem); - MenuItem stopItem = new MenuItem(Constants.getStringName(35), 0) { + MenuItem stopItem = new MenuItem(L.str[L.stop], 0) { public boolean actionPerformed() { model.stopPlay(); @@ -1361,14 +1355,14 @@ abstract public class MixerCanvas extends Canvas implements Runnable mainMenu.addItem(playMenu); - Menu editMenu = new Menu(Constants.getStringName(51), mainMenu, MENU_BEGX, MENU_BEGY, MENU_WIDTH, menuNumLines, ONE_LINE_HEIGHT); + Menu editMenu = new Menu(L.str[L.edit], mainMenu, MENU_BEGX, MENU_BEGY, MENU_WIDTH, menuNumLines, ONE_LINE_HEIGHT); - Menu markMenu = new Menu(Constants.getStringName(83), editMenu, MENU_BEGX, MENU_BEGY, MENU_WIDTH, menuNumLines, ONE_LINE_HEIGHT); - MenuItem item1 = new MenuItem(Constants.getStringName(84), KEY_NUM1); + Menu markMenu = new Menu(L.str[L.mark], editMenu, MENU_BEGX, MENU_BEGY, MENU_WIDTH, menuNumLines, ONE_LINE_HEIGHT); + MenuItem item1 = new MenuItem(L.str[L.markBegin], KEY_NUM1); markMenu.addItem(item1); - MenuItem item2 = new MenuItem(Constants.getStringName(85), KEY_NUM2); + MenuItem item2 = new MenuItem(L.str[L.markEnd], KEY_NUM2); markMenu.addItem(item2); - MenuItem item21 = new MenuItem(Constants.getStringName(86), 0) { + MenuItem item21 = new MenuItem(L.str[L.unmark], 0) { public boolean actionPerformed() { setMarkModeOff(); @@ -1378,49 +1372,49 @@ abstract public class MixerCanvas extends Canvas implements Runnable markMenu.addItem(item21); editMenu.addItem(markMenu); - MenuItem item22 = new MenuItem(Constants.getStringName(87), 0) { + MenuItem item22 = new MenuItem(L.str[L.modifyBlock], 0) { public boolean actionPerformed() { isMoveMode = true; NoteListUtils.deleteSelected(composition, (byte) channel); OrigTime = getCurTime(); OrigNote = getCurNote(); - viewModeDesc(Constants.getStringName(88)); + viewModeDesc(L.str[L.modifyMode]); return true; } }; editMenu.addItem(item22); - MenuItem item3 = new MenuItem(Constants.getStringName(89), KEY_NUM3); + MenuItem item3 = new MenuItem(L.str[L.copy], KEY_NUM3); editMenu.addItem(item3); - Menu menuPaste = new Menu(Constants.getStringName(90), editMenu, MENU_BEGX, MENU_BEGY, MENU_WIDTH, menuNumLines, ONE_LINE_HEIGHT); - MenuItem item4 = new MenuItem(Constants.getStringName(91), KEY_NUM4); + Menu menuPaste = new Menu(L.str[L.paste], editMenu, MENU_BEGX, MENU_BEGY, MENU_WIDTH, menuNumLines, ONE_LINE_HEIGHT); + MenuItem item4 = new MenuItem(L.str[L.insert], KEY_NUM4); menuPaste.addItem(item4); - MenuItem item5 = new MenuItem(Constants.getStringName(92), KEY_NUM5); + MenuItem item5 = new MenuItem(L.str[L.replace], KEY_NUM5); menuPaste.addItem(item5); - MenuItem item6 = new MenuItem(Constants.getStringName(93), KEY_NUM6); + MenuItem item6 = new MenuItem(L.str[L.blend], KEY_NUM6); menuPaste.addItem(item6); editMenu.addItem(menuPaste); - MenuItem item8 = new MenuItem(Constants.getStringName(94), KEY_NUM8); + MenuItem item8 = new MenuItem(L.str[L.removeSelection], KEY_NUM8); editMenu.addItem(item8); - MenuItem item7 = new MenuItem(Constants.getStringName(61), KEY_NUM7); + MenuItem item7 = new MenuItem(L.str[L.delete], KEY_NUM7); editMenu.addItem(item7); mainMenu.addItem(editMenu); - Menu undoMenu = new Menu(Constants.getStringName(29), mainMenu, MENU_BEGX, MENU_BEGY, MENU_WIDTH, menuNumLines, ONE_LINE_HEIGHT); - MenuItem itemStar = new MenuItem(Constants.getStringName(29), KEY_STAR); + Menu undoMenu = new Menu(L.str[L.undo], mainMenu, MENU_BEGX, MENU_BEGY, MENU_WIDTH, menuNumLines, ONE_LINE_HEIGHT); + MenuItem itemStar = new MenuItem(L.str[L.undo], KEY_STAR); undoMenu.addItem(itemStar); - MenuItem itemPound = new MenuItem(Constants.getStringName(95), KEY_POUND); + MenuItem itemPound = new MenuItem(L.str[L.redo], KEY_POUND); undoMenu.addItem(itemPound); mainMenu.addItem(undoMenu); - Menu helpMenu = new Menu(Constants.getStringName(96), mainMenu, MENU_BEGX, MENU_BEGY, MENU_WIDTH, menuNumLines, ONE_LINE_HEIGHT); - MenuItem mapItem = new MenuItem(Constants.getStringName(97), 0) { + Menu helpMenu = new Menu(L.str[L.help], mainMenu, MENU_BEGX, MENU_BEGY, MENU_WIDTH, menuNumLines, ONE_LINE_HEIGHT); + MenuItem mapItem = new MenuItem(L.str[L.keymap], 0) { public boolean actionPerformed() { - Form form = new Form(Constants.getStringName(97), createStringItems(Constants.KEY_MAP)); + Form form = new Form(L.str[L.quickCommands], createStringItems(Constants.KEY_MAP)); form.addCommand(CompositionForm.ok); form.setCommandListener(Options.this); MixerCanvas.this.display.setCurrent(form); @@ -1428,10 +1422,10 @@ abstract public class MixerCanvas extends Canvas implements Runnable } }; helpMenu.addItem(mapItem); - MenuItem quickItem = new MenuItem(Constants.getStringName(98), 0) { + MenuItem quickItem = new MenuItem(L.str[L.quickCommands], 0) { public boolean actionPerformed() { - Form form = new Form(Constants.getStringName(98), createStringItems(Constants.QUICK_COMMANDS)); + Form form = new Form(L.str[L.quickCommands], createStringItems(Constants.QUICK_COMMANDS)); form.addCommand(CompositionForm.ok); form.setCommandListener(Options.this); MixerCanvas.this.display.setCurrent(form); @@ -1440,7 +1434,7 @@ abstract public class MixerCanvas extends Canvas implements Runnable }; helpMenu.addItem(quickItem); mainMenu.addItem(helpMenu); - MenuItem exitItem = new MenuItem(Constants.getStringName(25), 0) { + MenuItem exitItem = new MenuItem(L.str[L.back], 0) { public boolean actionPerformed() { CompositionForm.curForm.setComposForm(); @@ -1453,20 +1447,20 @@ abstract public class MixerCanvas extends Canvas implements Runnable } - private Item[] createStringItems(String strings[]) { + private Item[] createStringItems(String strings[]) { StringItem[] strItem = new StringItem[strings.length / 2]; for (int i = 0; i < strings.length / 2; i++) { strItem[i] = new StringItem(strings[i * 2], strings[i * 2 + 1], 1); - strItem[i].setFont(Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN, Font.SIZE_SMALL)); + strItem[i].setFont(P.smPlain); } return strItem; } public void commandAction(Command c, Displayable displayable) { - MixerCanvas.this.display.setCurrent(MixerCanvas.this); + MixerCanvas.this.display.setCurrent(MixerCanvas.this); } - private void resetMenu() { + private void resetMenu() { menu = mainMenu; menu.reset(); } @@ -1481,36 +1475,36 @@ abstract public class MixerCanvas extends Canvas implements Runnable private boolean processCommand(int keyCode) { switch (keyCode) { - case KEY_NUM1: + case KEY_NUM1: timeMarkBeg = getCurTime(); setMarkModeOn(); break; - case KEY_NUM2: + case KEY_NUM2: timeMarkEnd = getCurTime(); setMarkModeOn(); break; - case KEY_NUM3: + case KEY_NUM3: model.getBuffer().copy2Buffer(composition, (byte) channel, timeMarkBeg, timeMarkEnd, false); break; - case KEY_NUM4: + case KEY_NUM4: int shiftLen = model.getBuffer().paste2Composition(composition, (byte) channel, getCurTime(), NoteListUtils.INSERT); setMarkModeOff(); break; - case KEY_NUM5: + case KEY_NUM5: model.getBuffer().paste2Composition(composition, (byte) channel, getCurTime(), NoteListUtils.REPLACE); setMarkModeOff(); break; - case KEY_NUM6: + case KEY_NUM6: model.getBuffer().paste2Composition(composition, (byte) channel, getCurTime(), NoteListUtils.OVERWRITE); setMarkModeOff(); break; - case KEY_NUM7: + case KEY_NUM7: if (timeMarkBeg < timeMarkEnd) { model.getBuffer().delete(composition, (byte) channel, timeMarkBeg, timeMarkEnd); setMarkModeOff(); } break; - case KEY_NUM8: + case KEY_NUM8: NoteListUtils.deleteSelected(composition, (byte) channel); setMarkModeOff(); @@ -1528,32 +1522,32 @@ abstract public class MixerCanvas extends Canvas implements Runnable } catch (Exception e) { } break; - case KEY_STAR: + case KEY_STAR: composition.getUndoableAction().undo(); break; - case KEY_POUND: + case KEY_POUND: composition.getUndoableAction().redo(); break; - case -10: + case -10: if (menu.getPrevMenu() != null) { menu = menu.getPrevMenu(); return false; } break; default: - int dir=0; - try{ - dir=getGameAction(keyCode); + int dir = 0; + try { + dir = getGameAction(keyCode); + } catch (IllegalArgumentException illegArg) { } - catch (IllegalArgumentException illegArg){} switch (dir) { - case Canvas.UP: + case Canvas.UP: menu.up(); return false; case Canvas.DOWN: menu.down(); return false; - case Canvas.RIGHT: + case Canvas.RIGHT: case Canvas.FIRE: return menu.actionPerformed(); case Canvas.LEFT: @@ -1590,13 +1584,13 @@ abstract public class MixerCanvas extends Canvas implements Runnable private Menu prevMenu; private int x, y, w, h; private int hMax; - private int lineBase, curLine; + private int lineBase, curLine; private int numLines; private int numLinesMaxVisible; private int LINE_HEIGHT; private boolean isScroll; - private Menu(String name, Menu prev, + private Menu(String name, Menu prev, int x1, int y1, int width, int nLines, int onelineHeight) { super(name, 0); @@ -1614,7 +1608,7 @@ abstract public class MixerCanvas extends Canvas implements Runnable reset(); } - private void addItem(MenuItem item) { + private void addItem(MenuItem item) { items.addElement(item); numLines = hMax / LINE_HEIGHT; @@ -1631,16 +1625,15 @@ abstract public class MixerCanvas extends Canvas implements Runnable protected void paint(Graphics g) { g.translate(x, y); - g.setColor(96, 64, 128); + g.setColor(P.colup); g.fillRect(0, 1, w, LINE_HEIGHT - 1); g.setColor(0); g.drawRect(0, 1, w - 1, LINE_HEIGHT - 1); g.setClip(0, 1, w - 1, LINE_HEIGHT - 1); g.setColor(255, 255, 255); - g.setFont(Font.getFont(Font.FACE_SYSTEM, Font.STYLE_BOLD, Font.SIZE_MEDIUM)); - g.drawString(this.getName(), (w - 4) / 2, 3, - Graphics.TOP | Graphics.HCENTER); + g.setFont(P.medBold); + g.drawString(this.getName(), (w - 4) / 2, 3, Graphics.TOP | Graphics.HCENTER); g.setFont(Font.getDefaultFont()); g.setClip(0, 0, getWidth(), getHeight()); @@ -1651,7 +1644,7 @@ abstract public class MixerCanvas extends Canvas implements Runnable g.setClip(1, 1, w - 1, hMax - 1); MenuItem item; int i; - for (i = 0; i < numLinesMaxVisible ; i++) { + for (i = 0; i < numLinesMaxVisible; i++) { if (i == curLine) { g.setColor(160, 160, 224); @@ -1700,10 +1693,10 @@ abstract public class MixerCanvas extends Canvas implements Runnable } - private void up() { + private void up() { if (lineBase + curLine > 0) { if (isScroll && curLine <= 1 && lineBase > 0) { - lineBase--; + lineBase--; } else { curLine--; } @@ -1717,26 +1710,26 @@ abstract public class MixerCanvas extends Canvas implements Runnable } } - private void down() { + private void down() { if (lineBase + curLine < items.size() - 1) { - if (isScroll && curLine >= numLines - 2 && - lineBase + numLines < items.size()) { + if (isScroll && curLine >= numLines - 2 + && lineBase + numLines < items.size()) { lineBase++; } else { curLine++; - } + } } else { this.reset(); } } - private void reset() { + private void reset() { lineBase = 0; curLine = 0; } - private Menu getPrevMenu() { + private Menu getPrevMenu() { return prevMenu; } } @@ -1748,13 +1741,12 @@ abstract public class MixerCanvas extends Canvas implements Runnable // public MenuItem() { // } - - private MenuItem(String str, int key) { + private MenuItem(String str, int key) { name = str; keyCode = key; } - protected String getName() { + protected String getName() { return name; } diff --git a/src/midedit/MixerMain.java b/src/midedit/MixerMain.java deleted file mode 100644 index e7241de..0000000 --- a/src/midedit/MixerMain.java +++ /dev/null @@ -1,404 +0,0 @@ -package midedit; - -import javax.microedition.midlet.*; -import javax.microedition.lcdui.*; -import java.io.IOException; - -/** - * - * @author user - */ -public class MixerMain extends MIDlet implements CommandListener, AbstractListener { - - /** - * - */ - public static final Font SMALL_FONT = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN, Font.SIZE_SMALL); - - - static MIDlet curMIDlet; - static Display display; - - private static final int CREATE_NEW = 0; - private static final int RESUME = 1; - private static final int OPEN = 2; - private static final int SAVE = 3; - private static final int SAVE_AS = 4; - private static final int RMS_FS = 5; - private static final int OPTIONS = 6; - private static final int ABOUT = 7; - private static final int EXIT = 8; - - private Item[] items; - private Item itemsRMS; - private Image[] iconsImgs; - private TextBox textBoxSave; - private String openSaveString; - private MixerModel model; - private Settings settings; - /** - */ - private CompositionForm compositionForm; - private FileChooser chooser; - //static boolean isRMSMode = false; - private static Form aboutForm; - private static Screen iconsMenu; - /** - * - */ - private static int ifFirstReturn = 0; - - - public MixerMain() { - curMIDlet = MixerMain.this; - display = Display.getDisplay(MixerMain.this); - } - - /** - * - */ - public void startApp() { - Rms.restoreOptions(); - L.readLang(Rms.languageApp, true); - //L.readLang(Rms.languageInstr, false); - settings = new Settings(MixerMain.this); - model = new MixerModel(); - readImages(); - createMenu(); - display.setCurrent(iconsMenu); - } - - /** - * - */ - public void pauseApp() {} - - /** - * - * @param unconditional - */ - public void destroyApp(boolean unconditional) { - if(Rms.firstStart) Rms.firstStart = false; - Rms.saveOptions(); - notifyDestroyed(); - } - - /** - * - */ - private void readImages() { - iconsImgs = new Image[9]; - for (int i = 0; i < iconsImgs.length; i++) { - try { - iconsImgs[i] = Image.createImage("/img/main/"+i+".png"); - } catch (IOException ioe) { - iconsImgs[i] = Image.createImage(1, 1); - } - } - } - - /** - * (, List , List ) - */ - private void createMenu() { - try { - iconsMenu = createListMenu(true); - } catch (Throwable ex) { - iconsMenu = createListMenu(false); - } - } - - /** - * - * @param names - * @param cl - * @return - */ - private List createListMenu(boolean withImgs) { - String[] menuNames = { - L.str[L.create], - L.str[L.resume], - L.str[L.open], - L.str[L.save], - L.str[L.saveAs], - L.str[L.file], - L.str[L.options], - L.str[L.about] - /*Constants.getStringName(1), - Constants.getStringName(2), - Constants.getStringName(3), - Constants.getStringName(4), - Constants.getStringName(5), - Constants.getStringName(6), - Constants.getStringName(7), - Constants.getStringName(8),*/ - }; - List list = new List("MIDEdit", 3, menuNames, withImgs ? iconsImgs : null); - list.setCommandListener(this); - return list; - } - - /** - * - * @param text - * @param appearanceMode - * @return - */ - public static Item createStringItem(String text, int appearanceMode) { - StringItem strItem = new StringItem(null, text, appearanceMode); - strItem.setFont(SMALL_FONT); - return strItem; - } - - /** - * - * @param c - * @param d - */ - public void commandAction(Command c, Displayable d) { - if (d == iconsMenu) { - try { - actionPerformed(((List) iconsMenu).getSelectedIndex()); - return; - } catch (ClassCastException clasCastE) { - } - } - actionPerformed(c.getPriority()); - } - - /** - * - * @param itemNum - */ - public void actionPerformed(int itemNum) { - switch (itemNum) { - case CREATE_NEW: - try { - model.newMix(); - if (compositionForm != null) { - compositionForm.releaseMem(); - } - compositionForm = null; - System.gc(); - openSaveString = "newmix"; - MixerModel.isRMSMode = true; - compositionForm = new CompositionForm(this); - if (compositionForm == null) { - throw new Exception("compositionForm == null"); - } - display.setCurrent(compositionForm); - new Thread(compositionForm).start(); - } catch (Exception e) { - e.printStackTrace(); - Alert a = new Alert(Constants.getStringName(12), e.getMessage(), null, null); - display.setCurrent(a); - } - break; - case RESUME: - if (ifFirstReturn == 0) { - return; - } - MixerModel.isRMSMode = true; - display.setCurrent(compositionForm); - break; - case ABOUT: - Item aboutItems[] = {createStringItem("Midedit - mobile midi editor\nAuthor - Bingo\n", 0), - createStringItem("http://bing.at.tut.by\n", 2), - createStringItem("Mods - Cryingangel\n", 0), - createStringItem("http://midedit.wen.ru", 2), - new TextField("Forum seclub.org", "http://seclub.org/forum/index.php?tid=6551", 60, TextField.ANY), - createStringItem("Thanks to:", 2), - createStringItem("Cyber_PUNK - adapted for Nokia\nmaxtr86 - adapted for Sony Erricson\nHelion810\nDark_Dancer - ideas, beta-testing\nsegOro - graphics", 0),}; - aboutForm = new Form("About", aboutItems); - aboutForm.addCommand(Settings.comCancel); - aboutForm.setCommandListener(this); - display.setCurrent(aboutForm); - break; - case OPEN: - openFile(); - break; - case SAVE: - if (ifFirstReturn == 0) { - return; - } - if (compositionForm.isNew()) { - saveAsFile(); - return; - } - openSaveString = compositionForm.getCompositionName(); - try { - model.setLocalFile(); - compositionForm.saveComposition(openSaveString); - compositionForm.setTitle(openSaveString); - } catch (Exception e) { - Alert a = new Alert(Constants.getStringName(12), e.getMessage(), null, null); - display.setCurrent(a); - } - break; - case SAVE_AS: - if (ifFirstReturn == 0) { - return; - } - saveAsFile(); - break; - case RMS_FS: - MixerModel.isRMSMode = !MixerModel.isRMSMode; - //model.setLocalFile(MixerModel.isRMSMode); - try { - try { - ((Form) iconsMenu).set(6, MixerModel.isRMSMode ? itemsRMS : items[6]);//!!!!! - } catch (IllegalStateException illegState) { - } - } catch (ClassCastException clasCast) { - ((List) iconsMenu).set(6, Constants.getStringName(MixerModel.isRMSMode ? 9 : 6), iconsImgs[6]); - } - break; - case OPTIONS: - display.setCurrent(settings.optionsForm); - // System.out.println("qwerty"); - break; - case EXIT: - MixerMain.curMIDlet.notifyDestroyed(); - break; - case 10: - setCurrentlistMenu(null); - break; - } - } - - public MixerModel getModel() { - return model; - } - - /** - * - * @param a - */ - public void setCurrentlistMenu(Alert a) { - if (a != null) { - display.setCurrent(a, iconsMenu); - } else { - display.setCurrent(iconsMenu); - } - } - - /** - * - * @return - */ - public Displayable getCurrentlistMenu() { - return iconsMenu; - } - - /** - * - */ - private void saveAsFile() { - model.setLocalFile(); - final FileChooser chooserForSave = new FileChooser(iconsMenu, "/", true, MixerModel.getLocalFile()); - chooserForSave.setAbstractListener(new AbstractListener() { - - public void actionPerformed(int itemNum) { - if (chooserForSave.getSelectedFolderPath() != null) { - openSaveString = compositionForm.getCompositionName(); - int indBeg = openSaveString.lastIndexOf(Constants.FILE_DELIM); - int indEnd = openSaveString.lastIndexOf('.'); - if (indEnd == -1) { - indEnd = openSaveString.length(); - } - openSaveString = openSaveString.substring(indBeg + 1, indEnd); - if (openSaveString.length() > 64) { - openSaveString = openSaveString.substring(0, 63); - } - textBoxSave = new TextBox(Constants.getStringName(5) + "...", openSaveString, 64, TextField.ANY); - textBoxSave.addCommand(Settings.comSave); - textBoxSave.addCommand(Settings.comCancel); - - //System.out.println ("save as success 2\nopenSaveString="+openSaveString); - textBoxSave.setCommandListener(new CommandListener() { - - public void commandAction(Command c, Displayable d) { - if (c == Settings.comSave) { - try { - openSaveString = chooserForSave.getSelectedFilePath() + textBoxSave.getString().trim() + ".mid"; - compositionForm.saveComposition(openSaveString); - compositionForm.setTitle(openSaveString); - compositionForm.setNew(false); - } catch (Exception e) { - Alert a = new Alert(Constants.getStringName(12), e.getMessage(), null, null); - display.setCurrent(a); - } - } else { - setCurrentlistMenu(null); - } - } - }); - display.setCurrent(textBoxSave); - } else { - setCurrentlistMenu(null); - } - } - }); - } - - /** - * - */ - private void openFile() { - model.setLocalFile(); - if (chooser == null || chooser.getSelectedFilePath() == null) { - final FileChooser chooserLocale = new FileChooser(iconsMenu, "/", false, MixerModel.getLocalFile()); - chooserLocale.setAbstractListener(new AbstractListener() { - - public void actionPerformed(int itemNum) { - if (chooserLocale.getSelectedFilePath() != null) { - try { - if (compositionForm != null) { - compositionForm.releaseMem(); - } - compositionForm = null; - System.gc(); - display.setCurrent(iconsMenu); - openSaveString = chooserLocale.getSelectedFilePath(); - compositionForm = - new CompositionForm(MixerMain.this, - openSaveString); - display.setCurrent(compositionForm); - new Thread(compositionForm).start(); - - } catch (Exception e) { - Alert a = new Alert(Constants.getStringName(13), Constants.getStringName(13) + ":\n" + e.getMessage(), null, null); - display.setCurrent(a); - if (compositionForm != null) { - compositionForm.releaseMem(); - } - compositionForm = null; - } - } else { - setCurrentlistMenu(null); - } - } - }); - } else { - chooser.update(); - display.setCurrent(chooser); - } - } - - /** - * - */ - public void comBack() { - ifFirstReturn = 1; - MixerModel.isRMSMode = false; - try { - try { - ((Form) iconsMenu).set(6, items[6]); - } catch (ClassCastException clasCast) { - ((List) iconsMenu).set(6, Constants.getStringName(6), iconsImgs[6]); - } - } catch (IllegalStateException ise) { - } - setCurrentlistMenu(null); - } -} diff --git a/src/midedit/MixerModel.java b/src/midedit/MixerModel.java index 29827aa..2683777 100644 --- a/src/midedit/MixerModel.java +++ b/src/midedit/MixerModel.java @@ -7,7 +7,10 @@ import midedit.media.JSR135Player; import midedit.io.RMSFile; import midedit.io.JSR75File; import midedit.io.AbstractFile; +import main.Main; import javax.microedition.lcdui.*; +import main.L; +import main.P; /** * @@ -16,11 +19,10 @@ import javax.microedition.lcdui.*; public class MixerModel extends Thread { private MidiFile mfile = null; - static boolean isRMSMode = false; /** * */ - public final Display display = MixerMain.display; + public final Display display = Main.dsp; /** * */ @@ -49,7 +51,7 @@ public class MixerModel extends Thread { } } } catch (Exception e) { - Alert a = new Alert(Constants.getStringName(22), Constants.getStringName(22) + ":\n" + e.getMessage(), null, null); + Alert a = new Alert(L.str[L.apiError], L.str[L.apiError] + ":\n" + e.getMessage(), null, null); display.setCurrent(a); } @@ -171,8 +173,7 @@ public class MixerModel extends Thread { * @throws Exception */ public String saveMix(Composition c, String name) throws Exception { - return mfile.writeMixWithName(c, 0, false, - name); + return mfile.writeMixWithName(c, 0, false, name); } /** @@ -218,13 +219,6 @@ public class MixerModel extends Thread { return mfile; } -// /** -// * -// * @param RMSMode -// */ -// public void setLocalFile(boolean RMSMode) { -// isRMSMode = RMSMode; -// } /** * */ @@ -237,6 +231,6 @@ public class MixerModel extends Thread { * @return */ public static AbstractFile getLocalFile() { - return isRMSMode ? rmsFile : jsr75File; + return P.isRMSMode ? rmsFile : jsr75File; } } diff --git a/src/midedit/NotesCanvas.java b/src/midedit/NotesCanvas.java index d836fe9..bdfefaf 100644 --- a/src/midedit/NotesCanvas.java +++ b/src/midedit/NotesCanvas.java @@ -1,7 +1,6 @@ package midedit; - - +import main.Main; import midedit.media.Composition; import javax.microedition.lcdui.*; @@ -9,120 +8,103 @@ import javax.microedition.lcdui.*; * * @author user */ -public class NotesCanvas extends MixerCanvas -{ +public class NotesCanvas extends MixerCanvas { + /** * * @param ctrl * @param c * @param ch */ - public NotesCanvas(MixerMain ctrl, Composition c, int ch) - { - super(ctrl, c, ch); - hMax = 127; - hBase = 60; - curY = 11; - } + public NotesCanvas(Main ctrl, Composition c, int ch) { + super(ctrl, c, ch); + hMax = 127; + hBase = 60; + curY = 11; + } - /** - * - * @param ch - */ - public void setChannel(int ch) - { - channel = ch; - } - /** - * - * @return - */ - public int getChannel() - { - return channel; - } + /** + * + * @param ch + */ + public void setChannel(int ch) { + channel = ch; + } - /** - * - * @return - */ - protected boolean doKEY_NUM5() - { - if(super.doKEY_NUM5() == false) - { - int dt; - dt = super.getCurLen(); - byte n = (byte)getNoteFromLine(curY); - int curT = getCurTime(); - composition.addNoteOn(curT, (byte) channel, n, super.getCurVol(), dt,true); - composition.addNoteOffWithoutSearch(curT + dt, (byte) channel, n, dt); - } - return true; - } + /** + * + * @return + */ + public int getChannel() { + return channel; + } + /** + * + * @return + */ + protected boolean doKEY_NUM5() { + if (super.doKEY_NUM5() == false) { + int dt; + dt = super.getCurLen(); + byte n = (byte) getNoteFromLine(curY); + int curT = getCurTime(); + composition.addNoteOn(curT, (byte) channel, n, super.getCurVol(), dt, true); + composition.addNoteOffWithoutSearch(curT + dt, (byte) channel, n, dt); + } + return true; + } - /** - * - * @return - */ - protected String getCurTuneString() - { - return "none"; - } + /** + * + * @return + */ + protected String getCurTuneString() { + return "none"; + } - /** - * - * @param g - * @param note - * @param shiftTime - * @param shiftNote - */ - protected void paintNote(Graphics g, Note note,int shiftTime,int shiftNote) - { - int x,h; - int dx, t=1; - x = getXInPixel(note.t +shiftTime); - h = getLineFromNote(note.n +shiftNote); - dx = (note.len*wOne)/Constants.timeConst; - if(dx==0) - dx=2; - if(x+dx>=0 && x= 0 && x < rollWidth) { - if(h>=0 && h= 0 && h < nH) { + g.fillRect(x + t, h * hOne + 1, dx - t, hOne - 1); + } else { + h = (h < 0) ? -1 : nH; + g.fillRect(x + t, h * hOne + 1, 2, hOne - 1); + } + } + } + /** + * + * @param n + * @return + */ + protected byte getLineFromNote(int n) { + return (byte) ((Constants.INV_CANVAS_CONST - n) - hBase); + } - - - - /** - * - * @param n - * @return - */ - protected byte getLineFromNote(int n) - { - return (byte)((Constants.INV_CANVAS_CONST - n) - hBase); - } - - /** - * - * @param ch - * @return - */ - protected int getNoteFromLine(int ch) - { - return (byte)getCurNote(); - } - + /** + * + * @param ch + * @return + */ + protected int getNoteFromLine(int ch) { + return (byte) getCurNote(); + } } diff --git a/src/midedit/Rms.java b/src/midedit/Rms.java deleted file mode 100644 index 0a3b7de..0000000 --- a/src/midedit/Rms.java +++ /dev/null @@ -1,76 +0,0 @@ -package midedit; - - -import java.io.*; -import javax.microedition.rms.*; - -/** - * - * @author aNNiMON - */ -public class Rms { - - private static final String rmsName = "MidEdit_2_1"; - private static RecordStore rmsStore; - - // - public static boolean firstStart = true; // - public static String languageApp = "en"; // - public static String languageInstr = "en"; // - - /** - * - */ - public static void saveOptions() { - if (rmsStore != null) { - byte[] options = null; - try { - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - DataOutputStream dos = new DataOutputStream(baos); - dos.writeBoolean(firstStart); - dos.writeUTF(languageApp); - dos.writeUTF(languageInstr); - dos.flush(); - options = baos.toByteArray(); - dos.close(); - rmsStore.setRecord(1, options, 0, options.length); - } catch (InvalidRecordIDException ridex) { - try { - rmsStore.addRecord(options, 0, options.length); - } catch (RecordStoreException ex) { - } - } catch (Exception ex) { - } - } - if (rmsStore != null) { - try { - rmsStore.closeRecordStore(); - rmsStore = null; - } catch (RecordStoreException ex) { - } - } - } - - /** - * - * dis.readBoolean() - */ - public static void restoreOptions() { - try { - rmsStore = RecordStore.openRecordStore(rmsName, true); - } catch (RecordStoreException ex) { - rmsStore = null; - } - if (rmsStore != null) { - try { - DataInputStream dis = new DataInputStream(new ByteArrayInputStream(rmsStore.getRecord(1))); - firstStart = dis.readBoolean(); // - languageApp = dis.readUTF(); - languageInstr = dis.readUTF(); - dis.close(); - } catch (Exception ex) { - } - } - } -} - diff --git a/src/midedit/Settings.java b/src/midedit/Settings.java deleted file mode 100644 index 575ec9d..0000000 --- a/src/midedit/Settings.java +++ /dev/null @@ -1,129 +0,0 @@ -package midedit; - -import javax.microedition.lcdui.*; -import java.io.IOException; -import javax.microedition.rms.*; - -public class Settings implements CommandListener { - - public static byte[] settingsIndex = {5, 6, 0, 0, 0, 0, 0, 0}; - public static String tempDir = "e:/other/", - setName = "MIDSET1"; - MixerMain mixerCntrl; - static LangParser parserLang, parserInstr; - //RMSFile rmsFile = new RMSFile(); - static String[] langList = {"en", "ru"}; - Image[] langImgs = {createImg("/img/en_GB.png"), createImg("/img/ru_RU.png")}, - controlImgs = {createImg("/img/keyPad.png"), createImg("/img/icon.png")}; - ChoiceGroup langChoice = new ChoiceGroup("Language", 1, langList, langImgs), - langInstr = new ChoiceGroup("Instruments Language", 1, langList, langImgs), - controlChoice;// = new ChoiceGroup("Controls", 1, controlList, controlImgs); - TextField tempDirField; - Gauge noteHeightGauge; - Gauge noteLengthGauge; - Item[] itemList; - Form optionsForm; - static Command comCancel, - comSave; - - Settings(MixerMain mixerControl) { - mixerCntrl = mixerControl; - readFromRms(); - //settingsIndex[2]= (byte) (settingsIndex[2]* parserLang.isSupported); - parserLang = new LangParser(langList[settingsIndex[2]], "lang", 103); - parserInstr = new LangParser(langList[settingsIndex[3]], "instr", 206); - String[] controlList = {Constants.getStringName(100), Constants.getStringName(101)}; - controlChoice = new ChoiceGroup(Constants.getStringName(99), 2, controlList, controlImgs); - tempDirField = new TextField("Temp Dir", tempDir, 30, 4); - noteHeightGauge = new Gauge("Note Height", true, 10, settingsIndex[0]); - noteLengthGauge = new Gauge("Note Length", true, 10, settingsIndex[1]); - Item[] itemListLocal = {langChoice, langInstr, controlChoice, noteHeightGauge, noteLengthGauge, tempDirField}; - optionsForm = new Form("Options", itemListLocal); - if (parserLang.isSupported == 0) { - optionsForm.append("File " + parserLang.resourceFile + " not found. To localizate programm translate 'en.lang' and 'en.instr' in UTF-8 encoding in the package and rename them into " + parserLang.resourceFile + " and " + parserInstr.resourceFile + "\n Also you\n can put your country's image '" + parserLang.locale + ".png' in the package /img/"); - } - langChoice.setSelectedIndex(settingsIndex[2] * parserLang.isSupported, true); - langInstr.setSelectedIndex(settingsIndex[3] * parserInstr.isSupported, true); - controlChoice.setSelectedIndex(0, settingsIndex[4] == 1); - controlChoice.setSelectedIndex(1, settingsIndex[5] == 1); - comCancel = new Command(Constants.getStringName(10), Command.BACK, 10); - comSave = new Command(Constants.getStringName(11), Command.CANCEL, 11); - optionsForm.addCommand(comCancel); - optionsForm.addCommand(comSave); - optionsForm.setCommandListener(this); - } - - public void commandAction(Command c, Displayable d) { - if (c == comSave) { - saveOptions(); - } - mixerCntrl.setCurrentlistMenu(null); - } - - void saveOptions() { - settingsIndex[0] = (byte) noteHeightGauge.getValue(); - settingsIndex[1] = (byte) noteLengthGauge.getValue(); - settingsIndex[2] = (byte) langChoice.getSelectedIndex(); - settingsIndex[3] = (byte) langInstr.getSelectedIndex(); - settingsIndex[4] = (byte) (controlChoice.isSelected(0) ? 1 : 0); - settingsIndex[5] = (byte) (controlChoice.isSelected(1) ? 1 : 0); - //System.out.println ("settingsIndex[4]="+settingsIndex[4]); - //System.out.println ("settingsIndex[5]="+settingsIndex[5]); - tempDir = tempDirField.getString(); - byte records[][] = {settingsIndex, tempDir.getBytes()}; - writeToRms(records); - } - - Image createImg(String path) { - Image img = null; - try { - img = Image.createImage(path); - } catch (IOException ex) { - } - return img; - } - - void writeToRms(byte[][] rec) { - try { - try { - RecordStore.deleteRecordStore(setName); - } catch (RecordStoreNotFoundException rse) { - } - RecordStore recordStore = RecordStore.openRecordStore(setName, true); - for (int i = 0; i < rec.length; i++) { - recordStore.addRecord(rec[i], 0, rec[i].length); - //System.out.println ("Success write "+id); - } - // System.out.println ("indexes = " + recordStore.getRecord(1)); - //System.out.println ("temp dir =" + new String(recordStore.getRecord(2))); - recordStore.closeRecordStore(); - } catch (RecordStoreException rse) { - //System.out.println ("RecordStoreException in read"); - } - } - - boolean readFromRms() { - try { - RecordStore recordStore;// = null; - try { - recordStore = RecordStore.openRecordStore(setName, false); - } catch (NullPointerException nullPointer) { - recordStore = null; - //System.out.println("NullPointerException in readFrom rms"+nullPointer.getMessage()); - } - if (recordStore == null) { - return false; - } - try { - settingsIndex = recordStore.getRecord(1); - tempDir = new String(recordStore.getRecord(2)); - recordStore.closeRecordStore(); - } catch (IllegalArgumentException illegArg) { - recordStore.closeRecordStore(); - } - } catch (RecordStoreException rse) { - return false; - } - return true; - } -} diff --git a/src/midedit/TempoList.java b/src/midedit/TempoList.java index 10fccb2..a7178ac 100644 --- a/src/midedit/TempoList.java +++ b/src/midedit/TempoList.java @@ -6,6 +6,8 @@ import midedit.media.Composition; import javax.microedition.lcdui.*; import java.util.*; import javax.microedition.lcdui.List; +import main.L; +import main.P; /** @@ -18,8 +20,8 @@ public class TempoList extends List implements CommandListener private MixerModel model; private Displayable backForm; private Vector tempNotes; - static private Command instempo = new Command(Constants.getStringName(67),Command.ITEM, 1); - static private Command deltempo = new Command(Constants.getStringName(68),Command.ITEM, 1); + static private Command instempo = new Command(L.str[L.insertTempo],Command.ITEM, 1); + static private Command deltempo = new Command(L.str[L.deleteTempo],Command.ITEM, 1); private int tick = 0; private int meterNom=4,meterDenom=4; private int editNum = -1; @@ -32,7 +34,7 @@ public class TempoList extends List implements CommandListener */ public TempoList(Composition c,MixerModel m,Displayable back) { - super(Constants.getStringName(69),IMPLICIT); + super(L.str[L.tempo],IMPLICIT); composition = c; model = m; backForm = back; @@ -78,13 +80,13 @@ public class TempoList extends List implements CommandListener } private void viewInsertForm(int time,int tempo) { - Form textBoxTemp = new Form(Constants.getStringName(67)); - final TextField timeField = new TextField(Constants.getStringName(70), ""+time, 4, TextField.NUMERIC); + Form textBoxTemp = new Form(L.str[L.insertTempo]); + final TextField timeField = new TextField(L.str[L.time], ""+time, 4, TextField.NUMERIC); textBoxTemp.append(timeField); - final TextField tempoField = new TextField(Constants.getStringName(69), "" + tempo, 4, TextField.NUMERIC); + final TextField tempoField = new TextField(L.str[L.tempo], "" + tempo, 4, TextField.NUMERIC); textBoxTemp.append(tempoField); textBoxTemp.addCommand(CompositionForm.ok); - textBoxTemp.addCommand(Settings.comCancel); + textBoxTemp.addCommand(P.comCancel); textBoxTemp.setCommandListener(new CommandListener() { public void commandAction(Command command, Displayable displayable) diff --git a/src/midedit/VolumeForm.java b/src/midedit/VolumeForm.java index c5a2921..cf1c104 100644 --- a/src/midedit/VolumeForm.java +++ b/src/midedit/VolumeForm.java @@ -4,6 +4,8 @@ package midedit; import midedit.media.Composition; import java.util.*; import javax.microedition.lcdui.*; +import main.Main; +import main.P; /** * @@ -61,7 +63,7 @@ public class VolumeForm extends Form implements CommandListener { this.addCommand(CompositionForm.play); this.addCommand(CompositionForm.playOrig); this.addCommand(CompositionForm.ok); - this.addCommand(Settings.comCancel); + this.addCommand(P.comCancel); this.setCommandListener(this); } @@ -73,10 +75,10 @@ public class VolumeForm extends Form implements CommandListener { public void commandAction(Command command, Displayable displayable) { if (command == CompositionForm.ok) { setVolumeFromGaugesSolo(); - MixerMain.display.setCurrent(backForm); - } else if (command == Settings.comCancel) { + Main.dsp.setCurrent(backForm); + } else if (command == P.comCancel) { restoreVolumesArr(); - MixerMain.display.setCurrent(backForm); + Main.dsp.setCurrent(backForm); } else if (command == CompositionForm.play) { setVolumeFromGaugesSolo(); try { diff --git a/src/midedit/WaitForm.java b/src/midedit/WaitForm.java index 362d3e9..97a1703 100644 --- a/src/midedit/WaitForm.java +++ b/src/midedit/WaitForm.java @@ -5,6 +5,7 @@ package midedit; import javax.microedition.lcdui.*; import javax.microedition.lcdui.Command; import javax.microedition.lcdui.Displayable; +import main.P; /** @@ -41,7 +42,7 @@ public class WaitForm extends Form implements Runnable, CommandListener memoryBar = new Gauge("Memory",false,100,(total-(int)r.freeMemory())*100/total); append(percentBar); append(memoryBar); - this.addCommand(Settings.comCancel); + this.addCommand(P.comCancel); this.setCommandListener(this); } private void setPercent(int percent) diff --git a/src/midedit/io/JSR75File.java b/src/midedit/io/JSR75File.java index 27f2d2e..0a3d2a7 100644 --- a/src/midedit/io/JSR75File.java +++ b/src/midedit/io/JSR75File.java @@ -1,10 +1,10 @@ package midedit.io; -import midedit.*; import java.io.*; import java.util.*; import javax.microedition.io.*; import javax.microedition.io.file.*; +import main.Rms; /** * @@ -166,11 +166,12 @@ public class JSR75File extends AbstractFile { */ public int open(String fileName, boolean isSaveMode) throws IOException { String fullName; + System.out.println("JSR75File.java : 169 "+fileName); if (fileName.charAt(0) != '/') { try { Enumeration e = FileSystemRegistry.listRoots(); if (e.hasMoreElements()) { - FileConnection fcTmp = (FileConnection) Connector.open(getPrefix() + Settings.tempDir); + FileConnection fcTmp = (FileConnection) Connector.open(getPrefix() + Rms.tempDir); if (!fcTmp.exists()) { fcTmp.mkdir(); } @@ -178,7 +179,7 @@ public class JSR75File extends AbstractFile { } catch (Exception e) { throw new IOException("Can't create tmp directory"); } - fullName = getPrefix() + "/" + Settings.tempDir + fileName; + fullName = getPrefix() + "/" + Rms.tempDir + fileName; } else { fullName = getPrefix() + fileName; } diff --git a/src/midedit/media/AbstractPlayer.java b/src/midedit/media/AbstractPlayer.java index d3c7608..039d3a7 100644 --- a/src/midedit/media/AbstractPlayer.java +++ b/src/midedit/media/AbstractPlayer.java @@ -1,6 +1,6 @@ package midedit.media; -import midedit.*; +import midedit.CompositionForm; import javax.microedition.lcdui.*; /** diff --git a/src/midedit/media/Composition.java b/src/midedit/media/Composition.java index e96e325..ed64b72 100644 --- a/src/midedit/media/Composition.java +++ b/src/midedit/media/Composition.java @@ -1,6 +1,11 @@ package midedit.media; -import midedit.*; +import midedit.Note; +import midedit.NoteLong; +import midedit.Constants; +import midedit.NoteList; +import midedit.MixerCanvas; +import midedit.UndoableAction; /** * diff --git a/src/midedit/media/JSR135Player.java b/src/midedit/media/JSR135Player.java index 4087b99..1d4d86e 100644 --- a/src/midedit/media/JSR135Player.java +++ b/src/midedit/media/JSR135Player.java @@ -1,6 +1,6 @@ package midedit.media; -import midedit.*; +import midedit.MixerModel; import javax.microedition.media.*; import java.io.*; diff --git a/src/FileManager.java b/src/ui/FileManager.java similarity index 93% rename from src/FileManager.java rename to src/ui/FileManager.java index 46ce4be..0db0664 100644 --- a/src/FileManager.java +++ b/src/ui/FileManager.java @@ -1,7 +1,13 @@ +package ui; + +import util.FWCashe; +import main.P; +import main.Main; +import main.Key; +import main.L; import java.util.*; import javax.microedition.lcdui.*; import midedit.CompositionForm; -import midedit.MixerMain; import midedit.io.AbstractFile; /** @@ -164,8 +170,8 @@ public class FileManager extends Canvas { if (showMenu) { drawMenu(g); } - UI.drawTitle(g, pathFile); - UI.drawSoftBar(g,L.str[L.menu],L.str[L.back]); + UI.drawTitle(g, P.isRMSMode ? L.str[L.RMS]: pathFile); + UI.drawSoftBar(g,L.str[L.menu], L.str[L.back]); } /** @@ -212,13 +218,13 @@ public class FileManager extends Canvas { for (int i = 0; i < menu.length; i++) { // if (i == curMenu) { - colorBack = P.fmbord; - colorObv = P.fmcurbord; - colorText = P.fmtextuppan; + colorBack = P.obv; + colorObv = P.fmbord; + colorText = P.fmtextnc; } else { colorBack = P.fmback1; colorObv = P.obv; - colorText = P.fmcurbord; + colorText = P.fmbord; } int hh = menuY + i * (FONT_HEIGHT - 1); g.setColor(colorBack); @@ -268,6 +274,20 @@ public class FileManager extends Canvas { } else if (cur.equals(L.str[L.saveInThisFolder])) { P.path = pathFile; + + String openSaveString = Main.midlet.compositionForm.getCompositionName(); + int indBeg = openSaveString.lastIndexOf(midedit.Constants.FILE_DELIM); + int indEnd = openSaveString.lastIndexOf('.'); + if (indEnd == -1) { + indEnd = openSaveString.length(); + } + openSaveString = openSaveString.substring(indBeg + 1, indEnd); + if (openSaveString.length() > 64) { + openSaveString = openSaveString.substring(0, 63); + } + P.openSaveString = openSaveString; + + Main.dsp.setCurrent(new SaveName_frm(this, pathFile)); } /*else if (cur.equals(L.str[L.newFolder])) { // @@ -329,7 +349,7 @@ public class FileManager extends Canvas { System.gc(); // String openSaveString = pathFile + s; - Main.midlet.compositionForm = new CompositionForm(new MixerMain(), openSaveString); + Main.midlet.compositionForm = new CompositionForm(Main.midlet, openSaveString); Main.dsp.setCurrent(Main.midlet.compositionForm); new Thread(Main.midlet.compositionForm).start(); diff --git a/src/Menu.java b/src/ui/Menu.java similarity index 68% rename from src/Menu.java rename to src/ui/Menu.java index 2977bab..7ec5d0b 100644 --- a/src/Menu.java +++ b/src/ui/Menu.java @@ -1,5 +1,12 @@ +package ui; + +import main.P; +import main.Main; +import main.Key; +import main.L; import java.io.IOException; import javax.microedition.lcdui.*; +import midedit.CompositionForm; import midedit.MixerModel; /** @@ -20,7 +27,7 @@ public class Menu extends Canvas { private static final int OPTIONS = 6; private static final int ABOUT = 7; private static final int EXIT = 8; - + /** */ private int w, h; /** , */ @@ -54,12 +61,10 @@ public class Menu extends Canvas { // menu = new String[] { L.str[L.create], - L.str[L.resume], L.str[L.open], - L.str[L.save], - L.str[L.saveAs], - L.str[L.file], + (P.isRMSMode ? L.str[L.RMS] : L.str[L.file]), L.str[L.options], + L.str[L.help], L.str[L.about], L.str[L.exit] }; @@ -67,6 +72,22 @@ public class Menu extends Canvas { stFh = P.medPlain.getHeight() + P.medPlain.getHeight() / 2; CursorY = FileY = startPrintFile = 0; } + + public void addNewItems() { + menu = new String[] { + L.str[L.create], + L.str[L.resume], + L.str[L.open], + L.str[L.save], + L.str[L.saveAs], + (P.isRMSMode ? L.str[L.RMS] : L.str[L.file]), + L.str[L.options], + L.str[L.help], + L.str[L.about], + L.str[L.exit] + }; + } + protected void sizeChanged(int w, int h) { this.w = getWidth(); @@ -99,7 +120,7 @@ public class Menu extends Canvas { g.setColor(P.fmtextnc); final String s = menu[i]; if (FileY == CursorY) { - g.setColor(P.fmshadow); + g.setColor(P.fmbord); g.drawString(s, iconsSize + 4, FileY + iconsSize / 4, Graphics.TOP | Graphics.LEFT); g.setColor(P.fmtextcur); } @@ -113,7 +134,7 @@ public class Menu extends Canvas { else if(s.equals(L.str[L.saveAs])) id = SAVE_AS; else if(s.equals(L.str[L.RMS]) || s.equals(L.str[L.file])) id = RMS_FS; else if(s.equals(L.str[L.options])) id = OPTIONS; - else if(s.equals(L.str[L.about])) id = ABOUT; + else if(s.equals(L.str[L.about]) || s.equals(L.str[L.help])) id = ABOUT; else if(s.equals(L.str[L.exit])) id = EXIT; g.drawImage(icons[id], iconsSize + 2, FileY + 1, 24); @@ -135,16 +156,76 @@ public class Menu extends Canvas { */ private void selectItem(int selected) { String v = menu[selected]; - /*if(v.equals(L.str[L.create])) Main.dsp.setCurrent(new CreateNew(this)); - else */if(v.equals(L.str[L.open])) Main.dsp.setCurrent(new FileManager(P.path, MixerModel.getLocalFile())); - /*else if(v.equals(L.str[L.save])) { + // + if(v.equals(L.str[L.create])) { + try { + Main.midlet.model.newMix(); + if (Main.midlet.compositionForm != null) { + Main.midlet.compositionForm.releaseMem(); + } + Main.midlet.compositionForm = null; + System.gc(); + P.openSaveString = "newmix"; + P.isRMSMode = true; + Main.midlet.compositionForm = new CompositionForm(Main.midlet); + Main.dsp.setCurrent(Main.midlet.compositionForm); + new Thread(Main.midlet.compositionForm).start(); + } catch (Exception e) { + e.printStackTrace(); + Alert a = new Alert(L.str[L.error], e.getMessage(), null, null); + Main.dsp.setCurrent(a); + } } + // + else if(v.equals(L.str[L.resume])) { + P.isRMSMode = true; + Main.dsp.setCurrent(Main.midlet.compositionForm); + } + // + else if(v.equals(L.str[L.open])) { + Main.midlet.model.setLocalFile(); + Main.dsp.setCurrent(new FileManager(P.path, MixerModel.getLocalFile())); + } + // + else if(v.equals(L.str[L.save])) { + if (Main.midlet.compositionForm.isNew()) { + saveAsFile(); + return; + } + String openSaveString = Main.midlet.compositionForm.getCompositionName(); + try { + Main.midlet.model.setLocalFile(); + Main.midlet.compositionForm.saveComposition(openSaveString); + Main.midlet.compositionForm.setTitle(openSaveString); + } catch (Exception e) { + Alert a = new Alert(L.str[L.error], e.getMessage(), null, null); + Main.dsp.setCurrent(a); + } + } + // + else if(v.equals(L.str[L.saveAs])) { + saveAsFile(); + } + // RMS | FS + else if(v.equals(L.str[L.RMS])) { + menu[selected] = L.str[L.file]; + P.isRMSMode = false; + } else if(v.equals(L.str[L.file])) { + menu[selected] = L.str[L.RMS]; + P.isRMSMode = true; + } + // + else if(v.equals(L.str[L.options])) { + Main.dsp.setCurrent(new SettingsUI(this)); + } + // else if(v.equals(L.str[L.help])) { - TextView tv = new TextView(); + /*TextView tv = new TextView(); tv.openFile("/lang/help", this, L.str[L.help]); - Main.dsp.setCurrent(tv); - }*/ - else if(v.equals(L.str[L.about])) Main.dsp.setCurrent(new About(this)); + Main.dsp.setCurrent(tv);*/ + } + // + else if(v.equals(L.str[L.about])) Main.dsp.setCurrent(new TextView(this, "about", L.str[L.about])); else if(v.equals(L.str[L.exit])) Main.midlet.destroyApp(true); } @@ -223,6 +304,11 @@ public class Menu extends Canvas { } } + private void saveAsFile() { + Main.midlet.model.setLocalFile(); + Main.dsp.setCurrent(new FileManager(P.path, this, MixerModel.getLocalFile())); + } + protected void pointerPressed(int pix, int piy) { int q = UI.getSoftBarHeight(); if(pix<2*q && piy>h-q) selectItem(cu); diff --git a/src/ui/SaveName_frm.java b/src/ui/SaveName_frm.java new file mode 100644 index 0000000..233445f --- /dev/null +++ b/src/ui/SaveName_frm.java @@ -0,0 +1,62 @@ +package ui; + +import javax.microedition.lcdui.*; +import main.*; + +/** + * Form + * @author aNNiMON + */ +public class SaveName_frm extends Form implements CommandListener { + + /** */ + private Displayable previousDisplayable; + + /** */ + private Command ok, back; + /** */ + private TextField nameTF; + + /** */ + private String name; + + /** */ + private String path; + + + public SaveName_frm(Displayable b, String path) { + super(L.str[L.midiName]); + name = P.openSaveString; + this.path = path; + nameTF = new TextField(L.str[L.midiName], name, 48, TextField.ANY); + back = new Command(L.str[L.back], Command.BACK, 3); + ok = new Command(L.str[L.ok], Command.OK, 1); + this.previousDisplayable=b; + append(nameTF); + addCommand(back); + addCommand(ok); + setCommandListener(this); + } + + public void commandAction(Command c, Displayable d) { + if(c==back && d==this) Main.dsp.setCurrent(previousDisplayable); + else if(c==ok && d==this) { + name=nameTF.getString(); + if (name.length() > 0) { + save(); + } + } + } + + private void save() { + try { + P.openSaveString = name; + Main.midlet.compositionForm.saveComposition(path + name + ".mid"); + Main.midlet.compositionForm.setTitle(name); + Main.midlet.compositionForm.setNew(false); + } catch (Exception e) { + Alert a = new Alert(L.str[L.error], e.getMessage(), null, null); + Main.dsp.setCurrent(a); + } + } +} diff --git a/src/ui/SettingsUI.java b/src/ui/SettingsUI.java new file mode 100644 index 0000000..007ec29 --- /dev/null +++ b/src/ui/SettingsUI.java @@ -0,0 +1,95 @@ +package ui; + +import javax.microedition.lcdui.*; +import main.*; + +/** + * + * @author aNNiMON + */ +public class SettingsUI extends Form implements CommandListener { + + private static final String[] langAppList = {"English", ""}; + private static final String[] langInstrList = {"English", ""}; + private static final String[] langChars = {"en", "ru", "ua"}; + + private Displayable previousScreen; + private Command back, ok; + + private ChoiceGroup langChoice, langInstr, controlChoice; + private Gauge noteHeightGauge; + private Gauge noteWidthGauge; + private TextField tempDirField; + + public SettingsUI(Displayable prev) { + super(L.str[L.options]); + previousScreen = prev; + initComponents(); + setComponentsParameters(); + // + append(langChoice); + append(langInstr); + append(noteWidthGauge); + append(noteHeightGauge); + append(controlChoice); + append(tempDirField); + addCommand(ok); + addCommand(back); + setCommandListener(SettingsUI.this); + } + + private void initComponents() { + // + ok = new Command(L.str[L.ok], Command.OK, 1); + back = new Command(L.str[L.back], Command.BACK, 3); + + // + langChoice = new ChoiceGroup("Language", ChoiceGroup.EXCLUSIVE, langAppList, null); + langInstr = new ChoiceGroup("Instruments Language", ChoiceGroup.EXCLUSIVE, langInstrList, null); + + // + noteHeightGauge = new Gauge("Note Height", true, 10, Rms.noteHeight); + noteWidthGauge = new Gauge("Note Length", true, 10, Rms.noteWidth); + + // + controlChoice = new ChoiceGroup(L.str[L.navigation], ChoiceGroup.MULTIPLE); + + // + tempDirField = new TextField("Temp Dir", Rms.tempDir, 64, 4); + } + + private void setComponentsParameters() { + // + for(int i = 0; i < langChars.length; i++) { + if(Rms.languageApp.equals(langChars[i])) { + langChoice.setSelectedIndex(i, true); + } + if(Rms.languageInstr.equals(langChars[i])) { + langInstr.setSelectedIndex(i, true); + } + } + // + controlChoice.append(L.str[L.numkeysOptionString], null); + controlChoice.setSelectedIndex(0, Rms.numKeysEdit); + } + + public void commandAction(Command c, Displayable d) { + if (c == back) { + Main.dsp.setCurrent(previousScreen); + } else if ((c == ok || c == List.SELECT_COMMAND)) { + // + Rms.languageApp = langChars[langChoice.getSelectedIndex()]; + Rms.languageInstr = langChars[langInstr.getSelectedIndex()]; + L.readLang(Rms.languageApp, true); + L.readLang(Rms.languageInstr, false); + + Rms.tempDir = tempDirField.getString(); + + Rms.noteWidth = noteWidthGauge.getValue(); + Rms.noteHeight = noteHeightGauge.getValue(); + + Rms.numKeysEdit = controlChoice.isSelected(0); + Main.dsp.setCurrent(previousScreen); + } + } +} diff --git a/src/About.java b/src/ui/TextView.java similarity index 85% rename from src/About.java rename to src/ui/TextView.java index 480b0ce..dd4893c 100644 --- a/src/About.java +++ b/src/ui/TextView.java @@ -1,7 +1,7 @@ - +package ui; /* - * aNNiMON 2010 + * aNNiMON 2011 * For more info visit http://annimon.com/ */ @@ -10,16 +10,23 @@ * www.mobilab.ru */ +import util.StringEncoder; +import main.P; +import main.Main; +import main.Rms; +import main.Key; +import main.L; import java.io.DataInputStream; import java.util.Vector; import javax.microedition.lcdui.*; -public class About extends Canvas { +public class TextView extends Canvas { private Font defaultFont; private Displayable dspl; private int fontHeight, defaultFontHeight; private String text; // + private String title; // private int w, h; // @@ -29,16 +36,45 @@ public class About extends Canvas { private int allTextHeight; // private Vector strLines; - public About(Displayable dspl) { + /** + * + * + */ + private TextView() { setFullScreenMode(true); - this.dspl = dspl; w = getWidth(); h = getHeight(); - text = getText("/lang/about_"+Rms.languageApp); fontHeight = UI.getSoftBarHeight()+2; defaultFont = Font.getDefaultFont(); scrollStep = defaultFontHeight = defaultFont.getHeight()+2; workingHeight = h - fontHeight*2 - 2; + } + + /** + * + * @param dspl + * @param textFile + * @param title + */ + public TextView(Displayable dspl, String textFile, String title) { + this(); + this.title = title; + this.dspl = dspl; + text = getText("/lang/"+textFile+"_"+Rms.languageApp); + setParameters(); + } + + /** + * + * @param text + * @param title + * @param dspl + */ + public TextView(String text, String title, Displayable dspl) { + this(); + this.title = title; + this.dspl = dspl; + this.text = text; setParameters(); } @@ -53,7 +89,7 @@ public class About extends Canvas { protected void paint(Graphics g) { g.setColor(P.backgrnd); g.fillRect(0, 0, w, h); - UI.drawTitle(g, L.str[L.about]); + UI.drawTitle(g, title); g.setColor(P.fmtextnc); g.setFont(defaultFont); g.setClip(0, fontHeight+1, w, workingHeight); diff --git a/src/UI.java b/src/ui/UI.java similarity index 99% rename from src/UI.java rename to src/ui/UI.java index 15846a5..8e6f5d4 100644 --- a/src/UI.java +++ b/src/ui/UI.java @@ -1,3 +1,6 @@ +package ui; + +import main.P; import java.util.Calendar; import javax.microedition.lcdui.*; diff --git a/src/midedit/BufDataInputStream.java b/src/util/BufDataInputStream.java similarity index 99% rename from src/midedit/BufDataInputStream.java rename to src/util/BufDataInputStream.java index 2abcbad..05165d9 100644 --- a/src/midedit/BufDataInputStream.java +++ b/src/util/BufDataInputStream.java @@ -1,4 +1,4 @@ -package midedit; +package util; import java.io.*; diff --git a/src/FWCashe.java b/src/util/FWCashe.java similarity index 99% rename from src/FWCashe.java rename to src/util/FWCashe.java index 20a2b97..314851b 100644 --- a/src/FWCashe.java +++ b/src/util/FWCashe.java @@ -1,3 +1,5 @@ +package util; + import javax.microedition.lcdui.Font; diff --git a/src/StringEncoder.java b/src/util/StringEncoder.java similarity index 99% rename from src/StringEncoder.java rename to src/util/StringEncoder.java index 0280952..0973b0e 100644 --- a/src/StringEncoder.java +++ b/src/util/StringEncoder.java @@ -1,3 +1,5 @@ +package util; + public class StringEncoder {