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

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

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

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

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

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

Миграция приложения GUIDE на App Designer

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

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

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

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

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

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

    • Если у вас еще не установлен Инструмент GUIDE to App Designer Migration, нажмите Install Support Package. Откроется браузер Add-On Explorer, в котором можно установить инструмент миграции. После установки инструмента снова откройте диалоговое окно «Опции удаления GUIDE».

    • После установки GUIDE to App Designer Migration Tool выберите правильный файл FIG и нажмите Migrate. Приложение мигрирует и автоматически открывается в App Designer.

  • Из App Designer откройте любое приложение и перейдите на вкладку Designer. В File разделе щелкните Open > Open GUIDE to App Designer Migration Tool.

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

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

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

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

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

Код коллбэка

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

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

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

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

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

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

Особые факторы

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

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

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

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

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

Ссылка на компоненты с помощью handles вместо этого структура или обновление кода для использования связанного компонента, свойств и значений App Designer.
nargin и nargchkФункции Helper переносятся на методы приложений и имеют 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. В этой таблице обобщены некоторые из этих различий.

РазличиеРуководство App DesignerДополнительная информация
Использование фигур и графики

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

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

Поддерживаются все графические функции MATLAB. Нет необходимости задавать целевые оси.

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

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

Большинство графических функций MATLAB поддерживаются.

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

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

App Designer создает каждый компонент UI со своей специальной функцией. Доступно больше компонентов, включая 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

Похожие темы