User experience Framework By Inraz Ltd.
The Challenge Complete separation between GUI and Development C/C++ developers unaware of the UI platform (C# WPF or Web technology) Using UI functions and libraries is simple as calling win32 API
Anatomy Complete separation between designers and developers divisions Requirements FRS ORS Operational Design Development Functionality
System Overview
Working modes and interfaces Two separated processes (good for debugging) TCP/IP Shared memory Single process includes App & FEApp Direct functions call
Working modes and interfaces Async Sync configuration Type Single process Multi process TCP UDP Direct API call Share memory
Control definition (WPF example) metadata [notify{mouse};] type{button | toggle | tab | check | imagebutton | stateImage | image}; defines default behavior [group{all buttons name participate in the group including this one};] Only for type=check states{ 1=.\Bitmaps\btn-new_enable.bmp, 1(hot)=.\Bitmaps\btn-new_hot.bmp, 2=.\Bitmaps\btn-new_selected.bmp, 2(hot)=.\Bitmaps\btn-new_selectedhot.bmp, 3=.\Bitmaps\btn-new_disable.bmp, 3(hot)=.\Bitmaps\btn-new_disableHot.bmp, 4=“text on button”, 4(hot)=“hot text on button”, 5=#NAME_CTRL_TXT, 5(hot)=#NAME_CTRL_TXT enable=1, click=2, notclick=1[checkbox only], disable=3, MouseLeftButtonDown=2}; named state [defaultState={any state above or empty to hide the control};] default state and visibility on startup [ statesMachine{MouseLeftButtonDown:1=2,2=3,3=1| MouseRightButtonDown:1=2,2=3,3=1 | MouseEnter: ... | MouseLeave: ... | MouseLeftButtonUp: ... | MouseRightButtonUp: ... }; ]
State machine Each and Every GUI control is always in a well defined state button, slider, textbox, label For simplicity and uniformity: changing state is via SetState function for all controls Each control can be configured to report it’s new state Reporting a new state includes the state change and the initiator: user or application
Control definition in C++ Application
Calling methods from App Function and object parsed from string Methods and properties get/set parsed from string
Debugging and Profiling Debugging levels: Notifications Warnings Errors Software errors Profiling GUI-App send/receive messages load GUI input messages GUI output messages
Summary Proposed system as a core solution System architecture defines separation between designers and developers Scalability Fast and simple MMI updates Debugging capabilities