-
Notifications
You must be signed in to change notification settings - Fork 3
/
todo.txt
executable file
·284 lines (239 loc) · 16.3 KB
/
todo.txt
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
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
# Release 0.6.1
FIX - Infinite loop in dialog - Done
# Release 0.6.0
FIX - Source version works again, remove FileControl from tcui init.py - Done
FIX - Irregular buildings work again - Needs test
ADD - Remember last folder location for open/save files - Done
FIX - Z dimensions now permitted up to 16 (from previous max of 4) - Done
ADD - Browse dialog for makeobj path selection - Done
FIX - Cutting masks incorrectly generated on OSX platform - Done
# TODO 0.6.2
Copyright notice for images
Should be able to show up to 4 lines on a paksize height black border at bottom
Saved in tcp file
Edited via another window
# TODO 1.0
Padding/general layout optimisation
-> Layout optimisation for mac
-> Use platform-specific layout file with offset/padding per-platform?
-> Implement UI for each platform seperately to allow for complete control over layout?
Add tick/cross functionality to input boxes
Replace current yellow text-highlighting on windows with tick/cross function
Extend tick/cross functionality to provide more info - POSTPONE 0.7
Produce msi installer for windows - 0.7
Add unit tests for cutting engine
JSON serialisation of project information with forward-compatible scheme for representing data - DONE
Completely remove dependancy on wx for running in CLI mode
Need to split App into tcproject/tc.py bits and the UI part
Allow for much quicker running of the core application when UI not needed
# Fix bugs!
## UI Change suggestions: ##
Move same image for all button to the menu bar under tools - Moved to tools
Make icon for reload image much bigger or replace with text button - Replaced with text
Replace direction facing control with "compass", or depiction of a tile with directions marked - Added tile graphic with directions
Move the "fine" selection below the mask offset control - Done
Move the paths at the bottom into either a dialog box or into a "pop-up" panel at the bottom of
the image window, which can then be accessed via a button
Add a progress indicator for export
Move the Cut image and Compile .pak buttons onto a single bottom bar after relocating file paths - Done
Have the right/left toolbar run all the way down to the bottom of the screen - Done
Mac
Need to make file drop on icon work properly - Done
Need to allow for .png file drop on icon (replace active image)
Fix initial state of radio buttons on mac - Done
Logging - must log to correct places on OSX - Done
Config - must read/write config from correct places on OSX - Done
Make .dmg distribution of the py2app application (automated if possible) - Partially done
Windows
msi installer, simple + command line capable
- copy files into %PROGRAMFILES%
- Install desktop icon
- Install start menu group
- Shortcut to .exe
- Uninstall link
- Shortcut to online documentation
- register file type extension (for double click to open handling)
- right-click "process with tilecutter" option for .tcp files (automatic output)
- Options: "TileCutter -> Output .dat/.png" (cut image + output .dat)
"TileCutter -> Create .pak" (also output .pak files using makeobj)
- Register add/remove products icon
Standalone script that does the same file registrations as the installer
Drag+drop support for files onto main window
Logging - correct place - Done
Config - correct place - Done
Add a status bar, displaying status information about the program
Make icons in main menu much bigger (double size)
New graphics for the offset control buttons that look nicer/are bigger
# Release 0.5.9
ADD: Better preferences dialog now lets you set:
Path to makeobj, log file location, default pak size for new projects, debug level
FIX: On mac opening a dialog and then switching away from/back to TileCutter no longer brings wrong window to foreground
FIX: Layout of dat editing dialog to prevent text from being cut off
ADD: Several new translation strings added to SimuTranslator - please translate them!
CHANGE: Final cleanup of UI to remove old way of doing things
ADD: Update translations with latest values from SimuTranslator
FIX: Translator properly handles translation files with newlines in improper places
ADD: New French translation from mEGa
ADD: Mac specific distribution in app format
# Release 0.5.8
ADD: Completely new save format (JSON-based)
Older files can still be opened, but all new files will be saved in the new format
New format can be edited by hand if you are careful
CHANGE: Much better code layout and optimisation (ongoing)
FIX: Further Unicode issues which should now be fully resolved
FIX: Opening files again works
CHANGE: About dialog now has no button and closes on any key press
CHANGE: UI layout minor tweaks to look better cross-platform
CHANGE: New larger icons for controls
FIX: Flickering when language changes
FIX: Changing language now resizes the main window properly
ADD: Better hashing system for projects (to check changes) built into new project
# Release 0.5.7
FIX: Many unicode issues relating to information passed into program
FIX: Logger now handles multiline output properly
FIX: Proper handling of UTF-8 files
FIX: Translations for file dialogs now work properly
CHANGE: tilecutter.py/tilecutter.pyw are now wrapper scripts that call main.py -
should be a small speed boost from bytecode compilation of main program
CHANGE: Now known as "tilecutter.exe" rather than "tilecutter5.exe"
FIX: Issues relating to scope in main.py/mainwindow.py
ADD: Basis for Mac-specific distribution via py2app
ADD: New translations imported from SimuTranslator
ADD: Some new translation strings added to SimuTranslator:
"&File", "&Tools", "&Help"
FIX: Improper action when load dialog closed with X rather than cancel
FIX: Close button on dialog didn't work (language, about and preferences)
CHANGE: TCP load/save now uses the string versions of pickle/unpickle, rather than working on files directly
FIX: Display refreshing on OSX - no OnPaint method defined for window
WORKAROUND: Bug where setting title of parent window causes child windows to need a refresh
Solved by adding OnPaint method to child window and calling this via update() method
CHANGE: TCP load/save functions moved into seperate module - tcp.py
CHANGE: Objects to be pickled/unpickled have standard prep_serialise/post_serialise functions to handle stuff that shouldn't be passed to pickle
ADD: Framework for addition of JSON-based save format
FIX: Loading files at root of drives on Windows now works (.tcp files and .png files)
ADD: If directories in a save path do not exist (for .tcp and .dat/.png export) the directories will be created
FIX: Robustness for file opening, fails nicely if file doesn't exist now
CHANGE: To allow files to be opened with the GUI from the command line (argv emulation on OSX for example) the CLI must
now be invoked explicitly. You *must* specify the -c flag to invoke the command line processing. Any existing automation
scripts which make use of TileCutter for command line processing will likely need to change.
ADD: Drag and drop of .tcp files onto dock icon opens file both while running and not
ADD: Should be able to double-click on .tcp files on OSX to open them automatically
CHANGE: Configuration is now stored per-user under user-specific directories
On OSX config is stored at: ~/.tilecutter/tilecutter.config
On Windows config is stored at: %USERPROFILE%\Application Data\tilecutter\tilecutter.config
On all other platforms config is stored at: ~/.tilecutter/tilecutter.config
CHANGE: Default logging behaviour is to log to a platform-dependant location (you can still override this by changing the logfile setting in the config)
On OSX default logging location is: ~/Library/logs/tilecutter.log
On Windows default logging location is: %USERPROFILE$\Application Data\tilecutter\tilecutter.log
On all other platforms default logging location is: ~/.tilecutter/tilecutter.log
ADD: If directories in the config file path don't exist they will be created as needed
FIX: Start state of radio buttons on OSX
ADD: Replace methods for finding default file locations with os.path.expanduser()
# Release 0.5.5 (beta)
ADD: Proper selection of path to makeobj via GUI
ADD: Command line scriptability:
Specify path to multiple .tcp files for automatic processing
Override output location of .dat/.png
Specify .pak output if required
Usage: "TileCutter5 -h" will give command line usage info
ADD: Ability to select .dat file output via UI checkbox
FIX: Selecting a file at the root of a drive on Windows leads to wrong path display
ADD: Basic documentation now available on website (via Online Help link in menu)
# Release 0.5.4
FIX: Better controls layout
FIX: Bug with mask production on wxGTK
FIX: Better handling of save locations, caching of last save location
FIX: Dialog boxes positioned centered on application, not centered on window
ADD: Application window fits to size of contents on start
ADD: Updated translations
# Release 0.5.3
FIX: Export error with Python character mapping
FIX: Translation of strings in image path entry box
FIX: Layout of About window incorrect
FIX: Default language setting not being saved
ADD: Filepath of saved file displayed in the title bar, indicates saved/unsaved status
ADD: Exception handling for case of no WX being installed
ADD: Better integration with SimuTranslator
DEL: Removed flags for country code - not a good way to indicate language
# Todo:
BUG - Source image locations do not update to reflect changes to the project save path
BUG - Translation file with windows newlines on unix doesn't work
BUG - If abs path to save doesn't have slash at the end, browse dialog uses end path
segment as filename
BUG - Season select does not set to summer when enable winter is unchecked - FIXED
BUG - Translation for static boxes in UI components - DONE
BUG - Active image isn't set to the correct one after project load - FIXED
BUG - Selecting a file at the root of a drive on Windows leads to wrong path display - FIXED 0.5.5
BUG - Unicode filenames causing logging to break, due to str() rather than unicode()
and also due to incorrect codec used in logging module - FIXED 0.5.2
Move debug into own module, to allow it to be easily accessed by other modules - DONE
Fix debug so that it logs to a file instead - DONE
Remove debug frame - DONE
Text entry boxes visible position at end, or cursor, rather than beginning - 0.7
- needs full revamp of text entry box class to deal with special stuff really - 0.7
Speed optimisations - switching views seems really sluggish!
Optimise code for generating lists in comboboxes (translation slowing this?)
Find some way to eliminate flickering on translation update/initial load - DONE
Cutting mask display based on dimensions - DONE
Make .dat and input images relative to save location path - DONE
Finish output file boxes, switching them to use the new set of functions - DONE
Do the project save/load/new etc. and management functionality (using pickle & hash) - DONE
Multi-project system for later versions - POSTPONE 0.7
Multi-project version implemented as object, contains projects in a dict
referenced by keyword lookup, this has lookup methods for the active project
so that all of that stuff can be taken out of the main program entirely
This stuff will likely go into tcproject
Produce frames picker control - POSTPONE
Dialog to set program options - DONE
Program settings, load from a config file (using json) - DONE
Move all static variables and program option variables into config class - DONE
Offset/Mask control - internal functions, click modifies model & triggers redrawing - DONE
Dims control - click modifies model & triggers redrawing - DONE
Direction/Season/Dims - trigger redrawing - DONE
Translation system - On the fly translation system now possible - DONE
Menu translations - DONE
Translation system needs work to function correctly with unicode strings - DONE (files MUST be UTF-8)
Find some way of translating the entries in combo boxes! - DONE
Current view context built into activeproject, details of the currently selected view - DONE
Implement current view context to all view controls - DONE
Source image control (needs current view context) - DONE
-> File must exist - DONE
-> Implement modal dialog for browse - DONE
-> Allow text entry, highlight in red if file does not exist?? - DONE
-> Implement modal confirmation dialog for "open same file for all" button - DONE
-> Function to reload the current view's image - DONE
# UI
Move UI classes into a module to enhance loading speed - DONE
Add display/direct edit boxes to the offset control -
Needs much better error handling, add try/except clauses in critical places
Add the TileCutter icon - DONE Icon made, works well in windows
Use img2py to compile icon image into the application - DONE
Can use the same technique for all the other images, e.g. bitmap buttons etc. - DONE
Need higher detail icons for the mac version - DONE (Test icon display in OSX)
About dialog - DONE
# Distribution
Make py2exe, look into producing smaller packages - DONE
Import only bits of wx needed, to reduce py2exe package?
Test with Linux, Mac OSX, Windows (xp), try and have the same code across all platforms!
Produce help documentation - Web documentation available
-> Quick start guide (interface should be fairly self-explanatory though)
# Cutting engine
Dynamic mask generation + caching - DONE
New cutting engine able to cope with all settings except frames - DONE
-> Test this cutting engine in all circumstances
Full .dat editing capability - 0.7
"Pretty" output mode - 0.7
# Aims v.0.5
Rewrite core cutting engine and output engine
Produce minimal testing UI
- Set X/Y/Z dims, X/Y offsets, facing/season
- Determine output .png, .dat etc.
Debugging system with nice output
Translation function implemented
Project save/load functions
- Implement using pickle
# Aims v.0.6
Extend UI, include dat editor
Project save/load functions
# Aims v.0.7
Multi-project support