- •Теоретична частина
- •1.1. Основні апаратні та програмні платформи.
- •1.2 Стан корпоративного програмного середовища типовою організації
- •1.3 Крос-платформні технології
- •2. Розробка програмного забезпечення
- •2.1 Бібілотека Juce
- •2.2 Підтримувані компілятори
- •2.3 Отримання і типи ліцензій
- •2.4 Клас Label
- •2.5 Клас TextEditor
- •2.7 Клас ComboBox
- •3.Демонстрація роботи програми
- •Висновки
- •Список використаних літературних джерел
- •Список використаних інтернет-ресурсів
2.5 Клас TextEditor
У більшості GUI framework-ів є окремі компоненти або віджети для створення однорядкового і многострочного полів введення (наприклад, класи QLineEdit і QTextEdit в Qt). У бібліотеці Juce для цих цілей використовується один і той же клас, TextEditor, зовнішній вигляд і поведінку примірників якого може значно відрізнятися, в залежності від налаштувань, що задаються програмістом.
Віджети цього класу надають користувачеві можливості для введення і редагування даних, тексту і чисел, а також обміну даними з буфером обміну (вирізання, копіювання і вставка), що позбавляє розробника від додаткової реалізації. Текст можна виділяти за допомогою миші, клавіатури і контекстного меню.
Введення тексту користувачем у віджеті TextEditor може здійснюватися як в один рядок, так і в кілька рядків. Режим введення задається методом void TextEditor :: setMultiLine (bool shouldBeMultiLine, bool shouldWordWrap = true). Цю функцію необхідно викликати відразу ж після оголошення об'єкта класу TextEditor (втім, якщо ви хочете отримати однорядкове поле введення, то її можна не викликати). Якщо перший з її параметрів приймає значення false, то віджет приймає вид однорядкового поля введення, а якщо true, то з'являється можливість вводити кілька рядків. Якщо значення другого параметра дорівнює true, то в віджеті перенесення рядків буде здійснюватися автоматично по досягненні його краю при наборі тексту. В іншому випадку перенесення рядка буде здійснюватися виключно після натискання клавіші <ENTER>.
Текст, що знаходиться в віджеті, повертає метод const String TextEditor:: getText () const. Новий текст в ньому задає функція void TextEditor :: setText (const String & newText, bool sendTextChangeMessage = true). Вона очищає поле введення і вставляє в віджет текст newText. У тому випадку, якщо параметр sendTextChangeMessage приймає значення true, то надсилається повідомлення про зміну тексту всім слухачам (listeners) поля введення.
Для приміщення тексту в область віджету, крім методу setText, можна скористатися функцією void TextEditor :: insertTextAtCaret (const String & textToInsert), яка вставляє текст textToInsert на поточній позиції курсору. У випадку, якщо якась ділянка тексту був виділений, то при виклику функції він замінюється на рядок-параметр. Цим можна скористатися для програмного видалення будь-якого ділянки тексту: викликати спочатку функцію-член void TextEditor :: setHighlightedRegion (const Range <int> & newSelection), щоб виділити ділянку тексту, а потім - метод insertTextAtCaret з путой рядком (String :: empty) як параметр.
Як правило, натискання користувачем клавіші <ENTER> на клавіатурі означає завершення введення рядка і перехід на нову. Проте в деяких випадках потрібна інша реакція на натискання цієї клавіші. За допомогою функції void TextEditor :: setReturnKeyStartsNewLine (bool shouldStartNewLine) можна змінити поведінку текстового поля введення на натискання клавіші <ENTER>. Якщо параметр shouldStartNewLine приймає значення false, то натискання на клавішу не приводить до переходу на новий рядок, а повідомлення про цю подію буде оброблено в слухачі поля введення (TextEditor :: Listener). У випадку, якщо поле введення є однорядковим, метод setReturnKeyStartsNewLine можна не викликати.
Виклик методу void TextEditor :: setReadOnly (bool shouldBeReadOnly) з параметром true встановлює режим, який дає можливість тільки перегляду тексту, але не редагування його користувачем. У разі необхідності змінити текст, його можна передати віджет програмно, наприклад, функцією setText.
У випадку, якщо об'єкт класу TextEditor використовується як однорядкове поле введення, можна включити режим введення пароля. Цей режим встановлюється в конструкторі компонента TextEditor :: TextEditor (const String & componentName = String :: empty, juce_wchar passwordCharacter = 0). У випадку, якщо другий параметр приймає значення, відмінне від нуля, то все вводяться користувачем символи будуть заміщатися яким-небудь іншим. Параметр passwordCharacter, власне, і містить код заміщує символу. Детальніше з використанням TextEditor в якості поля введення пароля можна познайомитися на прикладі, наведеному нижче.
У випадку, якщо ви використовуєте об'єкт класу TextEditor в якості многострочного поля введення, який відображається текст може перевищувати розміри віджета. При цьому перегляд тексту можливий за допомогою смуг прокрутки. Для їх автоматичного відображення необхідно викликати метод void TextEditor :: setScrollbarsShown (bool shouldBeEnabled) з параметром true. Якщо товщина смуг прокрутки по замовчуванню вас з яких-небудь причин не влаштовує, її можна задати програмно викликом функції void TextEditor :: setScrollBarThickness (int newThicknessPixels), де параметр - товщина використовуваних смуг прокрутки в пікселях.
2.6 Клас TextButton
Кнопки представляють, мабуть, одну з найбільш часто використовуваних груп віджетів. Базовим класом для них є Button, якому успадковують класи кнопки з текстом TextButton (приклад її використання розглядався нами в "Розробка власних компонентів" і
багатьох наступних розділах), кнопки зі стрілкою ArrowButton, кнопок із зображеннями (ImageButton, DrawableButton і ShapeButton), кнопки панелі інструментів (ToolbarItemComponent), а також ряд компонентів, які мають за своїми функціями лише непряме відношення до кнопок: гіперпосилання (HyperlinkButton), прапорець (ToggleButton), який розглядався нами в "Компоненти введення і відображення текстової, цифрової та ієрархічної інформації. Компоненти відображення стану "і вкладка (TabBarButton).
TextButton - це кнопка зі стандартними (для Juce) формою і фоном і відображається на поверхні рядком тексту. Кнопка TextButton може працювати в двох режимах: проста керуюча кнопка (включено за замовчуванням) і кнопка з фіксацією натиснутого стану. Для включення останнього режиму необхідно викликати метод void Button :: setClickingTogglesState (bool shouldToggle) throw () з параметром true. Крім того, можливе використання набору кнопок з фіксацією натиснутого стану, де в натиснутому (on) стані може перебувати одна і тільки одна кнопка. Для створення подібної групи використовують методи void Button :: setToggleState (bool shouldBeOn, bool sendChangeNotification) для завдання режиму фіксації і void Button :: setRadioGroupId (int newGroupId) для включення кнопок в єдину групу шляхом завдання загального ID. Використання цих методів абсолютно ідентично такому у ToggleButton "Компоненти введення і відображення текстової, цифрової та ієрархічної інформації. Компоненти відображення стану".
Слід зауважити, що, на відміну від інших бібліотек для побудови графічного інтерфейсу користувача, в Juce кнопка в натиснутому стані змінює тільки колір фону. Кольори кнопки в натиснутому (on) і отжатом (off) стані визначаються значеннями ідентифікаторів кольору перечислимого типу enum TextButton :: Colourlds:
buttonColourld - колір фону кнопки в ненажатом стані;
buttonOnColourld - колір фону кнопки в натиснутому стані;
textColourOffld - колір тексту кнопки в ненажатом стані;
textColourOnld - колір тексту кнопки в натиснутому стані.
Задати необхідне значення кольору фону або тексту кнопки можна викликом методу void Component:: setColour (int colourld, const Colour & colour), передавши як параметр один з ідентифікаторів Colourlds.
Основна властивість з точки зору зовнішнього вигляду кнопки з текстом - це, звичайно ж, напис. Для роботи з нею клас TextButton включає два методи, успадковані від класу Button:
void Button :: setButtonText (const String & newText змінює напис на кнопці на newText
const String Button :: getButtonText () const- повертає текст, що відображається на кнопці.
