summaryrefslogtreecommitdiff
path: root/TODO
blob: e6fc7c241a2ff783f65047201ad8c9a8158522bf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
Features:
--------
User callbacks:
- add entries / user data has to be represented with a hoversel for the type + value

Containers generic support: box, menus...
   Issue: Menu container 
   - need to avoid reloading of genlist, when adding item.
   - maybe add manager_wdg_reload, which reloads eo without deleting wdg from objtree
     Looks like it can be a little bit difficult, to reload each widget.
     T.e. main_menu is created only once for win. Deleting one item is not possible,
     so need to delete all menu. But this main win has very strong connection with win,
     so we cant delete only it's(menu's) Eo and create it again....

   Issues: Part Container.
   a. Suppose we have Elm_Flip. Content can be set to "front" and "back" parts.
   If NULL passed as part, content will be set to "front".

   b. elm_container_content_set() deletes object, which is already set to this part.
      So if we have object which is set to "front", adding object to "null" will
      delete first Eo object. In some cases it can segs.

      Need to add flag, which will forbid do content_set on NULL part.

Deletion by the user - have to register callback to set:
   - public widgets pointers as NULL in generator.
   - Eo pointers to NULL in simulator.

Factory: add all the widgets

-2 When create new project, choose project type: desktop or mobile and depending on it provide usual window's menu or some mobile?

Resource paths
- Need to add in project settings the local/installed path to the images (or something like that)

Fixes:
-----
- Egui:
   - Fix value types for parameters in property view.
   - Resize sub-windows according to application resolution
   - Don't propagate events when selecting widget
- refactor _callbacks_expand (propview.c)
- add Undo/Redo when resizing with dragging
- Check resizing of main objects in different modes: dragging, from propview and other (if they exist)
- Add memento when resizing/moving objects
- fix propview (create property and change item from grey to white) when dragging
- Add reordering (enable Up/Down buttons) for Table, because several objects can be packed into the same cell,
  so we want to set one lower, and other upper

Improvements:
------------
- Prettify the UI
- stringshare
- need to think how handle _prop_new_value, which is outside of  gui_widget
- Have to improve the egui UI
   - goal: give an identity to egui -> recognizable just by the UI
   - theme: edc files proper to the application
   - entries to improve: min size...
- add scroll_bars to layout windows, if actual size is larger than frame
- DnD widget from one box to another; content_set, etc.
- _action_dep_resolve uses active_context_get() because there is no another way to find widget.

- A lot of logs to add, it will help us to debug

Known EFL bugs:
--------------
- button: if size_set will be before part_text_set, text will be ellipsed!!! need some fixes in recalculation
- Hoversel with a lot of elements prevent access to those not displayed on the screen

Future:
------
- Generator: source files in different formats
- 3D representation of the exploded window:
   - shows every widget-layer of the win (win, containers, basic) created by the user
- Evas objects
- Screenshot feature:
   - for tests, demos
   - one jpeg per window
   - Exactness?

Add Instructions file:
---------------------
- Install GraphViz:
sudo add-apt-repository ppa:gviz-adm/graphviz-dev
sudo apt-get update
sudo apt-get install libgraphviz4
sudo apt-get install libgraphviz-dev


========== Undo / Redo ==========

struct Gui_Memento
{
   const Gui_Widget *wdg;
   const Gui_Widget_Property *old_property;
   const Gui_Widget_Property *new_property;
   const Eina_List *old_containees_list;
   const Eina_List *new_containees_list;
};

1. Stack, possible to do undo/redo. If after undo new action was made, drop redo items.

stack item holds old/new property or old/new content list for undo/redo.
Before/after operation need to save old/new property into this item.

Stack
--- item1 ---
old: color(128)
new: color(256)
--- item2 ---
old: size(10)
new: size(20)
--- item3 ---
old: pack(obj1)
new: pack(obj2)
--- item4 ---

Usual operation, doing something:
  Before calling eo_do():
       - create new Memento in stack
       - save OLD_STATE
  After eo_do():
       - save NEW_STATE

  Pointer points to current item.

Undo:
  Call eo_do() on OLD_STATE.
  Move pointer to the previous item

Redo:
  Move pointer to the next item
  Call eo_do() on NEW_STATE

2. Delete widget
   - Mark widget as pre_deleted (make it's ID - 0).
   - Add pre_deleted flag to some place.
   - Add code which checks if widget is pre_deleted, so don't do pack/ don't show in objtree.


================================================

   The window would be created outside of the GUI.
   - Generation:
       - Sequences: set their priority for cb_add as low, so when developer
   adds his own callback from the code, he can easily cancel the next cbs
   (i.e sequence).
       - Create functions for every main object (wins, boxes) and add
   parent as argument. The GUI structure will be specific to the main object.
       - "GUI" cannot be the type of the struct.

- Scroller in workspace: useful when you have many app windows. Add a
  grid instead of the E bg.

- Resource manager/strings: alias will be generated as macros
   - Add alias and string. alias must be in capital letters.
   - In entry..., use $alias to access it
   - During generation, "#define ALIAS "string" and use ALIAS where it
   has to.