Демонстрация на GUI на редактора на икони
Пример "Демонстрация на GUI на редактора на икони". Описанието е съставено с участието на студента Е. Г. Улченко. (SamSTU).
Моделът на графичния интерфейс на редактора на пиктограми се съдържа в Simulink-Stateflow-Examples.

Фиг. 1 Стартиране на демонстрацията
След като стартираме модела, ще видим следния прозорец.

В превод на руски език надписите означават следното.

Блокът за инжектор на събития играе ролята на система за проследяване, която следи за промяната в състоянието на мишката и синтезира съответните изходни събития. Можем да видим вътрешната структура на блока Event Injector на Фигура 4:
Фиг. 4 "Вътрешна структура на блока на инжектора на събития"
Движение на мишката „BM“ - Преместете мишката
„NBD“ Нормален (ляв) бутон на мишката надолу - натиснат левия бутон на мишката
Бутон на мишката „BU“ - Бутонът на мишката е освободен
„ABD“ Алтернативен (десен) бутон на мишката надолу - Натиска се десният бутон на мишката
Резултатът от тази функция е низ от четири елемента. Промяната на съответния елемент на масива от 0 на 1 или обратно - показва появата на това събитие.
Например, ако оригиналният изходен масив е бил, тогава след натискане и освобождаване, например, левия бутон на мишката, изходният масив ще се промени на - което съответства на появата на две събития: натискане на левия бутон ('NBD') и освобождаване на бутона ('BU'). Ако сега натиснете и отпуснете десния бутон на мишката, изходът ще бъде .

Блокът „Chart“ е контролна програма, написана на алгоритмичен език, използван за изграждане на модели на Stateflow. Така блокът „Chart“ е алгоритъм на модел, управляван от събития. Вътрешната структура на блока "Chart" е показана на фигура 6.

Фиг.6 "Вътрешна структура на блока" Chart "
Както можете да видите от фигурата, в блока „Chart“ има три подсистеми: Main, Focus, ToolBar, всяка от които реализира отделен алгоритъм.
Всички подсистеми работят паралелно, но на фигура 6 в правоъгълника има бележка - „Забележка: Уверете се, че„ Focus “идва преди„ Tool “. Състоянието на инструмента зависи от актуалната информация за Focus. ', Което гласи: „Уверете се, че„ Focus “е пред„ Tool “. Състоянието на„ Tool “зависи от текущата информация за„ Focus “.“ Тези. изчисляването на променливи, използвани в „ToolBar“, но изчислено във „Focus“, трябва да се извърши преди да се използват техните стойности в „ToolBar“.
Блокът „Chart“ използва:
Подсистема „Фокус“.

Фиг.7 "Подсистема" Фокус "
Тази подсистема е предназначена да проследява позицията на курсора на мишката в работния прозорец на редактора на иконите на Stateflow.
-'ToolBar' - 'Toolbar' - област на лентата с инструменти (на фиг. 5 - лента с инструменти).
-„Палитра“ - „Палитра“ - област на палитрата, която е подразделена на области „Swatch“ - „Swatch“ и „None“ - „None“. („Swatch“ - областта на цветовете на палитрата; „Няма“ - останалата част от палитрата, тази област включва и индикатора, показващ избрания цвят).
-„Платно“ - „Платно“ - зона за рисуване (на фиг. 5 - голям бял квадрат).
-„Икона“ - „Пиктограма“ - област на показване на намалена икона (на фиг. 5 - малък бял квадрат в долния ляв ъгъл).
-„Няма“ - „Няма“ - празна област, т.е. област, която не принадлежи към нито едно от горепосочените (на фиг. 5 тази област е изпълнена с ярко синьо).
Трябва да се отбележи, че входното събитие за подсистемата „Фокус“ е само събитието BM - движение на мишката.
Характеристиката на позицията на курсора на мишката не се ограничава до горните пет области, тъй като областите "Палитра" и "Лента с инструменти" имат свои подрайони, отделни цветове в палитрата и седем контролни бутона в лентата с инструменти.
Проследяването на позицията на мишката в палитрата се извършва вътре в модула sf_edit_icon.m, а проследяването на позицията на мишката в лентата с инструменти се извършва с помощта на функцията set_focusedIcon (), която представлява набор от условия, при които стойността на определя се променливата 'focusIcon', което от своя страна е характеристика на курсора на позицията.

Проследяването на стойността на тази променлива започва от момента, в който подсистемата „Focus“ преминава в състояние „ToolBar“, продължава, докато „Focus“ е в това състояние и при излизане от състоянието „ToolBar“ на променливата focusIcon се присвоява стойността 0, което съответства на случая, когато курсорът на мишката не е върху нито един от бутоните на контролния панел. Така стойността на променливата focusIcon е началната стойност за работата на алгоритъма на подсистемата „ToolBar“, поради което алгоритъмът „Focus“ трябва да бъде изпълнен преди алгоритъма „ToolBar“.