Стратегии миграции GUIDE

В R2019b, MathWorks® объявленный, что GUIDE, исходная среда перетаскивания для создания приложений в MATLAB®, будет удален в будущем релизе. После того, как GUIDE удален, существующие приложения GUIDE (графический интерфейсы пользователя) продолжат запускаться в MATLAB, и программные файлы приложения все еще будут доступны для редактирования, если необходимо изменить поведение приложения.

Чтобы продолжить редактировать макет существующего приложения GUIDE и справки обеспечивают ее совместимость с будущими релизами MATLAB, необходимо использовать одну из предложенных стратегий миграции, перечисленных в этой таблице.

Потребности разработки приложенийСтратегия миграцииКак мигрировать
Случайное редактированиеЭкспортируйте свое приложение в один файл MATLAB, чтобы управлять вашим размещением приложения и кодом с помощью функций MATLAB.Откройте приложение в GUIDE и выберите File> Export to MATLAB-file. В диалоговом окне Опций Удаления GUIDE нажмите Export.
Продолжающаяся разработкаПереместите свое приложение на App Designer.Откройте приложение в GUIDE и выберите File> Migrate to App Designer. В диалоговом окне Опций Удаления GUIDE нажмите Migrate.

Экспортируйте приложение GUIDE в файл MATLAB

Экспорт приложения GUIDE преобразует его в программное приложение путем воссоздания FIG GUIDE и программных файлов вместе в одном файле программы MATLAB.

Используйте эту опцию, если вы планируете к:

  • Внесите незначительные изменения в размещение или поведение вашего приложения.

  • Разработайте свое приложение программно, не в интерактивном режиме.

Чтобы экспортировать ваше приложение, откройте его в GUIDE и выберите File> Export to MATLAB-file, или щелкните правой кнопкой по файлу FIG по браузеру Current Folder MATLAB и выберите Export to MATLAB-file. Это поднимает диалоговое окно Опций Удаления GUIDE. Проверьте, что правильный файл FIG выбран, и затем нажмите Export. MATLAB создает программный файл с _export добавленный к имени файла. Новый файл содержит ваш исходный код коллбэка плюс автоматически сгенерированные функции, которые обрабатывают создание и размещение приложения. Пример этих добавленных функций показывают здесь.

Generated function code to handle app creation.

Переместите приложение GUIDE на App Designer

Миграция вашего приложения GUIDE к App Designer позволяет вам продолжать разрабатывать размещение своего приложения в интерактивном режиме. Это также позволяет вам использовать в своих интересах функции как расширенный набор компонента пользовательского интерфейса и опции автообратного течения, чтобы сделать ваше приложение быстро реагирующим к изменениям в размере экрана. И это дает вам способность создать и совместно использовать ваше приложение как веб-приложение (требует MATLAB Compiler™).

GUIDE к Инструменту Миграции App Designer для MATLAB был сначала выпущен в R2018a, чтобы упростить процесс преобразования. Это доступно через Add-On Explorer в рабочем столе MATLAB или посредством Обмена файлами на MATLAB Central™.

Начиная в R2020a, инструмент миграции имеет существенные улучшения, которые решительно уменьшают время и количество ручных обновлений кода, требуемых получить ваше приложение, запускающееся в App Designer. Для получения дополнительной информации об этих улучшениях, см. Код Коллбэка.

Используйте эту опцию для приложений GUIDE, которые требуют значительной или продолжающейся разработки комплекта.

Существует несколько способов переместить ваше приложение, в зависимости от которой среды вы начинаете в.

  • Откройте диалоговое окно Опций Удаления GUIDE путем открытия приложения в GUIDE и выбора File> Migrate to App Designer, или щелчка правой кнопкой по файлу FIG по браузеру Current Folder MATLAB и выбора Migrate to App Designer.

    • Если у вас уже нет GUIDE к Инструменту Миграции App Designer установленным, нажмите Install Support Package. Это открывает Add-On Explorer, где можно установить инструмент миграции. Если вы установили инструмент, вновь откройте диалоговое окно Опций Удаления GUIDE.

    • Если вы установили GUIDE на Инструменте Миграции App Designer, выбираете правильный файл FIG и затем нажимаете Migrate. Приложение мигрирует и автоматически открывается в App Designer.

  • Из App Designer, открытого любое приложение и, переходят к вкладке Designer. В разделе File нажмите Open> Open GUIDE to App Designer Migration Tool.

Функции инструмента миграции

Инструмент миграции помогает вам преобразовать свои приложения путем чтения в файле FIG GUIDE и автоматически генерации App Designer эквивалентные компоненты и размещение в файле MLAPP. Ваш код коллбэка GUIDE и другие пользовательские функции копируются в файл MLAPP. Это полуавтоматическое преобразование кода также создает отчет миграции, который предлагает действия для любых ручных обновлений кода, которые необходимы. Некоторые функции инструмента описаны в этой таблице.

Функции инструмента миграцииОписание
Преобразование файлаЧитайте в файле FIG GUIDE и сопоставленном коде и затем сгенерируйте файл MLAPP App Designer. Имя файла App Designer принимает форму guideFileName_App.mlapp.
Компоненты и размещение приложения

Преобразуйте компоненты и настройки свойства к эквивалентам App Designer, и сохраните размещение приложения.

A GUIDE app and an App Designer app to calculate mass. The layout and functionality of each app is the same. There are minor visual differences, such as the color of the buttons.

Код коллбэкаСохраните копию кода коллбэка GUIDE и пользовательских функций в файле MLAPP.
ПримерПродвиньтесь через изменения, внесенные в ваше перемещенное приложение.
Отчет миграцииОбобщите действия, успешно завершенные инструментом миграции. Перечислите любые ограничения или неподдерживаемую функциональность, характерную для вашего приложения, с предлагаемыми действиями при наличии.

Код коллбэка

Для того, чтобы сделать ваш код коллбэка стиля GUIDE совместимым с компонентами пользовательского интерфейса App Designer в вашем приложении, инструмент миграции использует функцию под названием convertToGUIDECallbackArguments. Эта функция преобразует аргументы коллбэка App Designer в аргументы коллбэка стиля GUIDE, которых требует ваш код. convertToGUIDECallbackArguments функция добавляется к началу каждой перемещенной функции обратного вызова. Это берет аргументы app коллбэка App Designer и event и возвращает аргументы hObject коллбэка стиля GUIDEДанные о событиях, и handles. Например:

An example of a call to the convertToGUIDECallbackArguments function inside an App Designer callback.

hObject указатель объекта, коллбэк которого выполняется. Для компонентов из вашего приложения GUIDE, которые были UIControl или ButtonGroup объекты, hObject указатель на UIControlPropertiesConverter или ButtonGroupPropertiesConverter объект. Эти объекты создаются, чтобы заставить ваш код стиля GUIDE работать в ваших функциях обратного вызова App Designer.

eventdata обычно пусто, но может быть структура, содержащая определенную информацию о событии коллбэка.

handles структура, которая содержит перемещенные дочерние компоненты фигуры пользовательского интерфейса, которые имеют 'Tag' значение свойства установлено. Дочерние компоненты, которые были UIControl объектами в вашем приложении GUIDE является UIControlPropertiesConverter объекты в перемещенном приложении. Точно так же дочерний ButtonGroup объектами является ButtonGroupPropertiesConverter объекты в перемещенном приложении.

UIControlPropertiesConverter и ButtonGroupPropertiesConverter объекты действуют как адаптеры между кодом стиля GUIDE и компонентами App Designer и коллбэками. UIControlPropertiesConverter объект создается для каждого компонента в вашем приложении GUIDE, которое было UIControl объект. Эти объекты конвертера сопоставлены с компонентом пользовательского интерфейса App Designer в вашем перемещенном приложении. Объект конвертера имеет те же свойства и значения как исходный UIControl из вашего приложения GUIDE, но это применяет их к своему связанному App Designer компонент пользовательского интерфейса.

Точно так же для ButtonGroup объекты от GUIDE, ButtonGroupPropertiesConverter объект создается в App Designer. Этот объект позволяет установить SelectedObject свойство к UIControlPropertiesConverter возразите так, чтобы группа кнопок SelectionChangedFcn логика коллбэка будет функционировать.

Специальные замечания

Существуют некоторые обстоятельства, которые требуют, чтобы вы сделали дополнительные шаги прежде или после того, как вы перемещаете свое приложение. Эта таблица приводит общие сценарии и шаблоны кодирования, которые требуют дополнительных шагов или ручных обновлений кода. Это не предназначается, чтобы быть всесторонним списком.

Функция приложения GUIDEОписаниеПредлагаемые действия
Приложения мультиокна (то есть, два или больше приложения, которые осуществляют обмен данными),Приложения мультиокна требуют, чтобы каждое приложение было перемещено отдельно. Перемещенные имена файла приложения добавлены с _App. Вызовы этих приложений из других приложений должны быть обновлены.Переместите каждое приложение отдельно. В приложении вызова обновите имя приложения, которое называется к новому имени файла.
Переключатели и коллбэки переключателя

Инструмент миграции не перемещает переключатели, которые не порождаются к группе переключателей или функциям обратного вызова для отдельных переключателей.

Создайте группу кнопок в App Designer и добавьте переключатели в него. Чтобы выполнить поведение, когда выбор переключателя будет изменен, создайте SelectionChangedFcn функция обратного вызова для группы кнопок. Для получения дополнительной информации смотрите uiradiobutton и свойства ButtonGroup.
uistack и clf с 'reset' аргумент Вызывание этих функций в App Designer не поддерживается.Определите, очень важна ли эта функциональность для вашего приложения перед миграцией. В App Designer нет никакого обходного решения.
findobjfindall, и gcbo

Используя findobjfindall, или gcbo сослаться на компоненты и установить свойства могут ошибка. UIControl объекты перемещаются на эквивалентный App Designer компонент пользовательского интерфейса. Чтобы получить доступ и установить свойства на этих перемещенных компонентах, необходимо установить его на UIControlPropertiesConverter объекты. Или, можно обновить код, чтобы использовать его связанный компонент App Designer, свойства и значения.

Ссылочные компоненты с помощью handles структура или обновление ваш код, чтобы использовать связанный компонент App Designer, свойства и значения.
nargin и nargchkФункции помощника перемещаются на методы приложения и имеют app как дополнительный входной параметр. Это может вызвать неправильный nargin или nargchk логика.Инкрементные контрольные числа 1.
OutputFcn(varargout) и Figure вывод

В App Designer нет никакой эквивалентной функциональности.

Когда вы инстанцируете перемещенного приложения App Designer, выход всегда является объектом приложения, не Figure объект.

Если ваш OutputFcn функция включает код инициализации, который очень важен для вашего приложения, затем добавьте его в конец OpeningFcn вместо этого.

Если ваш OutputFcn функция задает выход, который будет присвоен рабочей области, когда вы инстанцируете приложения, такого как Figure объект, затем необходимо создать функцию, которая инстанцирует приложения. Например:

function out = MyGUIDEApp(varargin)
    app = MyMigratedApp(varargin{:});
    out = app.UIFigure;            
end

Если ваше приложение GUIDE интегрирует сторонние компоненты с помощью функций как actxcontrol, см. Рекомендации для Приложений MATLAB Используя Java и ActiveX.

Средства для того, чтобы добавить новые опции или полностью принять стиль кода App Designer

App Designer и GUIDE имеют различные структуры кода, синтаксисы коллбэка и методы для доступа к компонентам пользовательского интерфейса и обмена данными. Понимание этих различий полезно, если вы планируете добавить новые опции App Designer к своему перемещенному приложению или хотеть обновить его, чтобы использовать стиль кода App Designer и соглашения. Эта таблица суммирует некоторые из этих различий.

РазличиеGUIDE Дизайнер приложенийБольше информации
Используя фигуры и графику

GUIDE вызывает figure функция, чтобы создать окно приложения.

GUIDE вызывает axes функция, чтобы создать оси для отображения графиков.

Все функции графики MATLAB поддерживаются. Нет никакой потребности задать целевые оси.

App Designer вызывает uifigure функция, чтобы создать окно приложения.

App Designer вызывает uiaxes функция, чтобы создать оси для отображения графиков.

Поддерживается большинство функций графики MATLAB.

Отобразите графику в App Designer
Используя компоненты

GUIDE создает большинство компонентов с uicontrol функция. Меньше компонентов доступно.

App Designer создает каждый компонент пользовательского интерфейса со своей собственной специализированной функцией. Больше компонентов доступно, включая Tree, Gauge, TabGroup, и DatePicker.

Компоненты App Building
Доступ к свойствам компонентов

GUIDE использует set и get к свойствам компонентов доступа и использованию handles задавать компонент.

Например,
name = get(handles.Fig,'Name')

App Designer поддерживает set и get, но поощряет использование записи через точку получать доступ к свойствам компонентов и использует app задавать компонент.

Например,
name = app.UIFigure.Name

Запись обратных вызовов в App Designer
Код приложения управления

Код задан как основная функция, которая может вызвать локальные функции. Весь код доступен для редактирования.

Код задан как класс MATLAB. Только коллбэки, функции помощника и пользовательские свойства доступны для редактирования.

Управляйте кодом в представлении кода App Designer
Запись коллбэков

Необходимыми входными параметрами коллбэка является handles, hObject, и eventdata.

Например,
myCallback(hObject,evendata,handles)

Необходимыми входными параметрами коллбэка является app и event.

Например,
myCallback(app,event)

Запись обратных вызовов в App Designer
Обмен данными

Чтобы сохранить и осуществлять обмен данными между коллбэками и функциями, используйте UserData свойство, handles структура, или guidata, setappdata, или getappdata функция.

Например,
handles.currSelection = selection;
guidata(hObject,handles);

Чтобы сохранить и осуществлять обмен данными между коллбэками и функциями, используйте пользовательские свойства создать переменные.

Например,
app.currSelection = selection

Осуществляйте обмен данными в рамках приложений App Designer

Похожие темы