66 | | ''Internal documentation. Show models, explain the architecture. Do anything that may help a new developer to extend this project.'' |
| 74 | Most of the widgets are written from scratch. If you want to extend or add new ones, here are some hints: |
| 75 | |
| 76 | * layouting of morphs in combination with embedded text morphs can be problematic in the first place as the dimensions are not correct |
| 77 | * see optimizations and fixes in `UiComboBox` |
| 78 | * put all [wiki:signals signals] of a widget class into the ''signals'' protocol |
| 79 | * for each signal, explain with a comment when it will generally be sent, e.g., ''"This signal is emitted whenever the user clicks with the left mouse button."'' |
| 80 | * try to write as compact classes as possible, i.e., avoid having several classes for buttons, buttons with icons, buttons with icons and text, but write exactly one class and make these features configurable |
| 81 | * consider the [wiki:designer Morphic Designer] and implement on the class-side of your widget class: |
| 82 | * `#isWidgetClass` ... used by the designer as a widget |
| 83 | * `#widgetCategory` ... as grouped in the designer's widget tree |
| 84 | * `#widgetProperties` ... appended to the end of the designer's property table |
| 85 | * `#widgetPropertiesToIgnore` ... hidden in the designer's property table |
| 86 | * `#widgetClassIcon` ... icon in the designer's widget tree |
| 87 | * `#widgetClassName` ... text in the designer's widget tree |
| 88 | |