Опытные пользователи нередко используют MATLAB для создания своих собственных систем. Этому во многом способствует идеология системы — хранение большей части команд и функций в виде m-файлов. Простота коррекции файлов и отсутствие необходимости явно объявлять создание новых команд и функций привели к появлению множества программных систем на базе MATLAB, особенно в таких областях, как решение задач линейной алгебры, моделирование различных систем и структур и т. д.
В новой версии MATLAB дескрипторная графика позволяет конструировать детали пользовательского интерфейса. Полный список команд и функций для проектирования пользовательского интерфейса можно получить, выполнив команду help uitools.
Ниже перечислены все команды и функции данного назначения. Функции пользовательского интерфейса GUI:
· ulcontrol — создание управляющего элемента;
· ulmenu — создание пользовательского меню;
· ginput — графический ввод с помощью мыши.
Перечень команд и функций пользовательского интерфейса:
· dragrect — создание выделяющего прямоугольника с помощью мыши;
· rbbox — растягивание прямоугольника мышью;
· selectmoveresize — интерактивное выделение, перемещение и копирование объектов с помощью мыши;
· waitforbuttonpress — ожидание нажатия клавиши клавиатуры или кнопки мыши в окне;
· waltfor — прекращение выполнения программы в ожидании уничтожения заданного графического объекта или изменения его свойств;
· uiwait — прекращение выполнения программы в ожидании вызова функции uiresume или закрытия заданного графического окна;
· inresume — возобновить выполнение после блокировки;
· uisuspend — прекращение интерактивного состояния фигуры;
· uirestore — возобновление интерактивного состояния фигуры.
Средства проектирования пользовательского интерфейса:
· guide — создание GUI;
· align — выровнять положение объектов интерфейса;
· cbedit — изменение повторного вызова объектов;
· menuedit — изменение меню;
· propedit — изменение свойств объектов.
Средства создания диалоговых окон:
· dialog — создание диалогового окна;
· axlimdlg — ограничение размеров диалогового окна;
· errordlg — создание окна с сообщением об ошибке;
· helpdlg — создание справочного окна;
· inputdlg — создание окна диалога ввода;
· listdlg — создание окна диалога для выбора вариантов параметра из списка;
· menu — создание меню диалогового ввода;
· msgbox — создание окна сообщений;
· questdlg — создание окна запроса;
· warndlg — создание окна предупреждения;
· uigetfile — создание стандартного окна открытия файлов;
· uiputfile — создание стандартного окна записи файлов;
· uisetcolor — создание окна выбора цвета;
· uisetfont — создание окна выбора шрифта;
· pagedlg — создание диалогового окна параметров страницы;
· printdlg — создание диалогового окна печати;
· waitbar — создание окна с индикатором прогресса.
Создание меню:
· makemenu — создать структуры меню;
· menubar — устанавливать типовые свойства для объекта MenuBar;
· umtoggle — изменять статус параметра "checked" для объекта uimenu;
· winmenu — создать подменю для меню Window.
Создание кнопок панели инструментов и управление ими:
· btngroup — создать кнопку панели инструментов;
· btnstate — запросить статус кнопки;
· btnpress — управление кнопкой;
· btndown — нажать кнопку;
· btnup — отпустить кнопку
Утилиты задания свойств объектов figure/axes:
· сlruprop — удалить свойство объекта;
· getuprop — запросить свойство объекта;
· setuprop — установить свойство объекта.
Вспомогательные утилиты:
· all child — запросить все порожденные объекты;
· findall — найти все объекты;
· hidegui — скрыть/открыть объекты GUI;
· edtext — интерактивное редактирование объектов text;
· getstatus — запросить свойства строки объекта figure;
· setstatus — установить свойства строки объекта figure;
· popupstr — запросить свойства строки выпадающего меню;
· remapflg — изменить положение объекта figure;
· setptr — установить указатель на объект figure;
· getptr — получить указатель на объект figure;
· overobj — запросить дескриптор объекта, над которым находится курсор мыши.
Таким образом, MATLAB содержит обширный набор команд и функций для создания типовых элементов пользовательского интерфейса. Объем данной книги не позволяет останавливаться на детальном описании этих функций, тем более что оно имеется в справочной системе. Поэтому мы ограничимся единственным примером: создание кнопки, на которой можно щелкнуть мышью и перевести ее в нажатое состояние.
Пример создания объекта интерфейса
Ниже представлена программа (распечатка m-файла с именем ui), которая при запуске создает 4 объекта интерфейса:
k1=uicontrol('Style','pushbutton'....
'Units'.'normalized','Position',[.7 .5 .2 .1],...
'String'.'click here');
k2=ui control('Style'.'pushbutton
'Units'.'normalized','Position',[.6 .3 .2 .1]....
'String'.'click here');
ck = uicontrol('Style', 'pushbutton', 'String', 'Clear'....
'Position', [150 150 100 70], 'Callback', 'da');
hpop = uicontrol('Style', 'popup'....
'String', 'hsv|hot|cool|gray'....
'Position', [30 320 100 50],...
'Callback ' , 'setmap');
Первые два объекта k1 и k2 — это малые кнопки с надписью click here («щелкни здесь»). Объект ck — это большая кнопка Clear (кстати, действующая). Объект hpop — раскрывающийся список (тоже действующий, хотя и содержащий незаполненные поименованные позиции). Для создания всех этих объектов используется команда ui control с соответствующими параметрами, задающими стиль (вид) объекта интерфейса, место его размещения и надпись (на кнопках). На рис. 7.9 построены все эти объекты, причем раскрывающийся список показан в открытом состоянии.
Рис. 7.9.Пример построения объектов пользовательского интерфейса
Дсскрипторная графика MATLAB позволяет создавать любые детали современного пользовательского интерфейса. Однако надо отметить, что пока она не поддерживает визуально-ориентированное программирование, при котором генерация нужных кодов осуществляется автоматически визуальным выбором нужного объекта интерфейса и размещением его в необходимом месте. Такой вид программирования поддерживает пакет Simulink, который в этой книге описан достаточно кратко.