TODO.xml 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550
  1. <!-- Stuff that is scheduled to be done. Ideas do not go here, put
  2. them into the old TODO file for now.
  3. This is used to generate the online TODO list for GIMP using the
  4. script docs/make-todo. There is a script on developer.gimp.org
  5. that updates this file daily from anoncvs. If you modify this file,
  6. you should check for parse errors by running:
  7. $ docs/make-todo TODO.xml > /dev/null
  8. before committing, or you may screw up the online version -->
  9. <todo logourl="wilber.png">
  10. <title>GIMP TODO List</title>
  11. <section>
  12. <title>General</title>
  13. <entry size="big" difficulty="advanced" status="90%" target="1.4">
  14. <title>Port to glib-2.0 and gtk+-2.0</title>
  15. <description>
  16. <p>
  17. Most of the porting work is completed. By default all files
  18. are compiled with the DISABLE_DEPRECATED definitions that
  19. prevent us from using deprecated API. Some files however still
  20. work around this. Mostly this is because they use legacy
  21. widgets like GtkCList, GtkList or GtkPreview.
  22. </p>
  23. </description>
  24. <contact>
  25. GIMP Developer List &lt;gimp-developer@xcf.berkeley.edu&gt;
  26. </contact>
  27. </entry>
  28. <entry size="medium" difficulty="easy" status="95%" target="1.4">
  29. <title>Header cleanup</title>
  30. <description>
  31. <p>
  32. Headers should only include other headers if absolutely necessary
  33. (for derived objects for example). All functions must be
  34. properly prototyped.
  35. </p>
  36. </description>
  37. <contact>
  38. GIMP Developer List &lt;gimp-developer@xcf.berkeley.edu&gt;
  39. </contact>
  40. </entry>
  41. <entry size="big" difficulty="medium" status="90%" target="1.4">
  42. <title>Code reorganization</title>
  43. <description>
  44. <p>
  45. Split the core into several subdirectories and build libtool
  46. convenience libraries which are then linked together to form
  47. the gimp binary.
  48. </p>
  49. </description>
  50. <contact>
  51. GIMP Developer List &lt;gimp-developer@xcf.berkeley.edu&gt;
  52. </contact>
  53. </entry>
  54. <entry size="medium" difficulty="medium" status="80%" target="1.4">
  55. <title>Unify color data types</title>
  56. <description>
  57. <p>
  58. LibGimp already has a new type GimpRGB. This should be used
  59. whereever possible. If necessary we can change this to a
  60. more generic struct later. Migrating to GimpRGB first will make
  61. this much easier.
  62. </p>
  63. </description>
  64. <contact>
  65. GIMP Developer List &lt;gimp-developer@xcf.berkeley.edu&gt;
  66. </contact>
  67. </entry>
  68. <entry size="medium" difficulty="advanced" status="0%" target="1.4">
  69. <title>Script-Fu overhaul</title>
  70. <description>
  71. <p>
  72. Script-Fu shouldn't be an extension running all the time, but
  73. an interpreter that gets started once a script is run and
  74. terminates after script execution. This should also solve the
  75. problem of having multiple scripts running at the same time.
  76. </p>
  77. </description>
  78. <contact>
  79. GIMP Developer List &lt;gimp-developer@xcf.berkeley.edu&gt;
  80. </contact>
  81. </entry>
  82. <entry size="small" difficulty="easy" status="0%" target="1.4">
  83. <title>Image/File Information</title>
  84. <description>
  85. <p>
  86. Additionally to the image comment, GIMP should save and
  87. manage File Information like "description", "keywords",
  88. "copyright", "year", etc.
  89. </p>
  90. <p>
  91. File Info data sets should be saveable separately and
  92. importable from standard formats. See also
  93. <a href="http://bugzilla.gnome.org/show_bug.cgi?id=56443">this
  94. bug-report></a>.
  95. </p>
  96. </description>
  97. <contact>
  98. GIMP Developer List &lt;gimp-developer@xcf.berkeley.edu&gt;
  99. </contact>
  100. </entry>
  101. </section> <!-- General -->
  102. <section>
  103. <title>Objectification</title>
  104. <entry size="small" difficulty="easy" status="100%" target="1.4">
  105. <title>Generic GimpObject</title>
  106. <description>
  107. <p>
  108. Directly derived from GObject, should probably have a name
  109. argument.
  110. </p>
  111. </description>
  112. <contact>
  113. GIMP Developer List &lt;gimp-developer@xcf.berkeley.edu&gt;
  114. </contact>
  115. </entry>
  116. <entry size="medium" difficulty="medium" status="90%" target="1.4">
  117. <title>Cleanup existing internal objects</title>
  118. <description>
  119. <p>
  120. GimpDrawable, Layer, GimpImage, GDisplay need to be redone as
  121. proper GimpObjects. Write new objects (with proper names) and
  122. port all stuff to the new objects incrementally.
  123. </p>
  124. </description>
  125. <contact>
  126. GIMP Developer List &lt;gimp-developer@xcf.berkeley.edu&gt;
  127. </contact>
  128. </entry>
  129. <entry size="medium" difficulty="advanced" status="90%" target="1.4">
  130. <title>Generic data structures</title>
  131. <description>
  132. <p>
  133. Brushes, Patterns, Gradients should be derived from a GimpData
  134. object. This object has to provide hooks to generate previews.
  135. </p>
  136. </description>
  137. <contact>
  138. GIMP Developer List &lt;gimp-developer@xcf.berkeley.edu&gt;
  139. </contact>
  140. </entry>
  141. <entry size="medium" difficulty="medium" status="100%" target="1.4">
  142. <title>Generic object container(s)</title>
  143. <description>
  144. <p>
  145. A GimpContainer that holds GimpObject objects. Comparable to
  146. the GCimContainer, but no serialization for now. Should probably
  147. dispatch "changed" (or other) signals from its children.
  148. </p>
  149. <p>
  150. This container will be used for lists of brushes, patterns,
  151. layers, channels, paths, ...
  152. </p>
  153. </description>
  154. <contact>
  155. GIMP Developer List &lt;gimp-developer@xcf.berkeley.edu&gt;
  156. </contact>
  157. </entry>
  158. <entry size="medium" difficulty="advanced" status="20%" target="1.4">
  159. <title>Abstract GimpBrush object and derived brush types</title>
  160. <description>
  161. <p>
  162. The GimpBrush object we have now is not a generic BrushProvider.
  163. We need an abstract object to derive the different kinds of brushes
  164. from (BrushPipes, parametric brushes, ...). It has to provide
  165. methods for the PaintCore to transparently select and use the brush
  166. data. Paint tools should have to care about the brush type as less
  167. as possible.
  168. </p>
  169. </description>
  170. <contact>
  171. GIMP Developer List &lt;gimp-developer@xcf.berkeley.edu&gt;
  172. </contact>
  173. </entry>
  174. </section> <!-- Objectification -->
  175. <section>
  176. <title>Tools</title>
  177. <entry size="medium" difficulty="advanced" status="20%" target="1.4">
  178. <title>Rewrite Path Tool</title>
  179. <description>
  180. <p>
  181. The Path tool should be rewritten from scratch.
  182. </p>
  183. </description>
  184. <contact>
  185. GIMP Developer List &lt;gimp-developer@xcf.berkeley.edu&gt;
  186. </contact>
  187. </entry>
  188. <entry size="medium" difficulty="advanced" status="50%" target="1.4">
  189. <title>Rewrite Text Tool</title>
  190. <description>
  191. <p>
  192. The Text tool should be rewritten from scratch using Pango to
  193. layout and PangoFT2 to render.
  194. </p>
  195. </description>
  196. <contact>
  197. GIMP Developer List &lt;gimp-developer@xcf.berkeley.edu&gt;
  198. </contact>
  199. </entry>
  200. <entry size="small" difficulty="medium" status="0%" target="1.4">
  201. <title>Add Options to "Stroke"</title>
  202. <description>
  203. <p>
  204. The "Stroke" function should be configurable to optionally
  205. stroke inside or outside the current selection only.
  206. </p>
  207. </description>
  208. <contact>
  209. GIMP Developer List &lt;gimp-developer@xcf.berkeley.edu&gt;
  210. </contact>
  211. </entry>
  212. <entry size="small" difficulty="medium" status="0%" target="1.4">
  213. <title>Allow Transformations on Layer Masks</title>
  214. <description>
  215. <p>
  216. Layers that have masks attached can currently not be manipulated
  217. using the Transform Tool. It shouldn't be too hard to extend the
  218. Transform Tool to handle layers with masks correctly.
  219. </p>
  220. </description>
  221. <contact>
  222. GIMP Developer List &lt;gimp-developer@xcf.berkeley.edu&gt;
  223. </contact>
  224. </entry>
  225. </section> <!-- Tools -->
  226. <section>
  227. <title>LibGimp</title>
  228. <entry size="medium" difficulty="medium" status="95%" target="1.4">
  229. <title>Restructure LibGimp</title>
  230. <description>
  231. <p>
  232. Put libgimp, libgimpui (and new libs) into their own
  233. subdirectories. Install all header files under
  234. $prefix/include/gimp-MAJOR.MINOR/ and change gimptool
  235. accordingly.
  236. </p>
  237. </description>
  238. <contact>
  239. GIMP Developer List &lt;gimp-developer@xcf.berkeley.edu&gt;
  240. </contact>
  241. </entry>
  242. <entry size="small" difficulty="easy" status="30%" target="1.4">
  243. <title>Utility library</title>
  244. <description>
  245. <p>
  246. Put utility functions that are also used by the core into
  247. a separate library.
  248. </p>
  249. </description>
  250. <contact>
  251. GIMP Developer List &lt;gimp-developer@xcf.berkeley.edu&gt;
  252. </contact>
  253. </entry>
  254. <entry size="medium" difficulty="medium" status="0%" target="1.4">
  255. <title>File plug-in library</title>
  256. <description>
  257. <p>
  258. Write a library with a bunch of common functions for file plug-ins
  259. to remove code duplication in these plug-ins.
  260. </p>
  261. </description>
  262. <contact>
  263. GIMP Developer List &lt;gimp-developer@xcf.berkeley.edu&gt;
  264. </contact>
  265. </entry>
  266. <entry size="medium" difficulty="medium" status="95%" target="1.4">
  267. <title>Move GCK functionality into LibGimp</title>
  268. <description>
  269. <p>
  270. libgck, as found in the plug-ins dir has some nice functions we
  271. want to clean up and make available in LibGimp so they can be
  272. used by the core and plug-ins.
  273. </p>
  274. </description>
  275. <contact>
  276. GIMP Developer List &lt;gimp-developer@xcf.berkeley.edu&gt;
  277. </contact>
  278. </entry>
  279. </section> <!-- LibGimp -->
  280. <section>
  281. <title>User Interface</title>
  282. <entry size="medium" difficulty="medium" status="90%" target="1.4">
  283. <title>Abstract Container Views</title>
  284. <description>
  285. <p>
  286. Views on data stored in a GimpContainer. The objects need to provide
  287. hooks that this view can use to show data like patterns, brushes,
  288. etc. in different views (list, grid, ...)
  289. </p>
  290. </description>
  291. <contact>
  292. GIMP Developer List &lt;gimp-developer@xcf.berkeley.edu&gt;
  293. </contact>
  294. </entry>
  295. <entry size="big" difficulty="advanced" status="10%" target="1.4">
  296. <title>Effect Preview Widget</title>
  297. <description>
  298. <p>
  299. A generic preview widget with functions like scrolling and zooming
  300. useable by effect filters. Should have adaptive supersampling,
  301. progressive display (if possible) and other neat stuff. This
  302. would also fix the problem that many plug-ins still use the
  303. deprecated GtkPreview widget.
  304. </p>
  305. </description>
  306. <contact>
  307. GIMP Developer List &lt;gimp-developer@xcf.berkeley.edu&gt;
  308. </contact>
  309. </entry>
  310. <entry size="small" difficulty="easy" status="100%" target="1.4">
  311. <title>Optionally disable tearoff windows</title>
  312. <description>
  313. <p>
  314. Add an option to the Preferences to disable tearoff menus. Some
  315. people seem to be annoyed by it and it should be trivial to
  316. make them optional.
  317. </p>
  318. </description>
  319. <contact>
  320. GIMP Developer List &lt;gimp-developer@xcf.berkeley.edu&gt;
  321. </contact>
  322. </entry>
  323. <entry size="small" difficulty="easy" status="100%" target="1.4">
  324. <title>Implement "Save a Copy as..."</title>
  325. <description>
  326. <p>
  327. Add a "Save a Copy as" function which works as "Save as" but
  328. leaves the image's name untouched.
  329. </p>
  330. </description>
  331. <contact>
  332. GIMP Developer List &lt;gimp-developer@xcf.berkeley.edu&gt;
  333. </contact>
  334. </entry>
  335. <entry size="small" difficulty="easy" status="0%" target="1.4">
  336. <title>Implement "Open into layer"</title>
  337. <description>
  338. <p>
  339. Add "Open into layer" that will load a file into the
  340. current image as a new layer (or layers).
  341. </p>
  342. </description>
  343. <contact>
  344. GIMP Developer List &lt;gimp-developer@xcf.berkeley.edu&gt;
  345. </contact>
  346. </entry>
  347. <entry size="small" difficulty="easy" status="100%" target="1.4">
  348. <title>Optionally set a different background for the image window</title>
  349. <description>
  350. <p>
  351. It's often useful to view the image you're editing on a pure
  352. white or pure black background instead of the theme's default
  353. background.
  354. </p>
  355. </description>
  356. <contact>
  357. GIMP Developer List &lt;gimp-developer@xcf.berkeley.edu&gt;
  358. </contact>
  359. </entry>
  360. <entry size="small" difficulty="medium" status="0%" target="1.4">
  361. <title>Fullscreen image view</title>
  362. <description>
  363. <p>
  364. Add a possibility to show the image fullscreen (padded with the
  365. configured canvas background color).
  366. </p>
  367. </description>
  368. <contact>
  369. GIMP Developer List &lt;gimp-developer@xcf.berkeley.edu&gt;
  370. </contact>
  371. </entry>
  372. <entry size="medium" difficulty="medium" status="90%" target="1.4">
  373. <title>Cleanup GIMP's color selectors</title>
  374. <description>
  375. <p>
  376. The pluggable color selectors need to be overhauled. Move
  377. the numerical input fields, the sliders, the "old" and "new"
  378. color buttons and a color history out of the notebook so
  379. they are always visible. Optionally allow an alpha value to
  380. be specified. Maybe reduce the size of the color area in the
  381. "GIMP" color selector.
  382. </p>
  383. </description>
  384. <contact>
  385. GIMP Developer List &lt;gimp-developer@xcf.berkeley.edu&gt;
  386. </contact>
  387. </entry>
  388. <entry size="medium" difficulty="medium" status="60%" target="1.4">
  389. <title>Better keyboard navigation</title>
  390. <description>
  391. <p>
  392. Think about a proper way to make all menus and dialogs accesible
  393. and navigationable without using a mouse. GTK+-2.0 has very much
  394. improved in this area. We need to go through all our dialogs and
  395. install the relevant hooks to get a reasonable focus chain.
  396. </p>
  397. </description>
  398. <contact>
  399. GIMP Developer List &lt;gimp-developer@xcf.berkeley.edu&gt;
  400. </contact>
  401. </entry>
  402. <entry size="medium" difficulty="medium" status="0%" target="1.4">
  403. <title>Move DND functions into LibGimp</title>
  404. <description>
  405. <p>
  406. Move the DND functionality into LibGimp. This needs to be done
  407. differently for app and plug-ins, but should be handled
  408. transparently.
  409. </p>
  410. </description>
  411. <contact>
  412. GIMP Developer List &lt;gimp-developer@xcf.berkeley.edu&gt;
  413. </contact>
  414. </entry>
  415. <entry size="medium" difficulty="medium" status="20%" target="1.4">
  416. <title>Add more widgets</title>
  417. <description>
  418. <p>
  419. Lost of existing user interface elements can be implemented as
  420. proper widgets in libgimpui, so they are useable from everywhere.
  421. </p>
  422. </description>
  423. <contact>
  424. GIMP Developer List &lt;gimp-developer@xcf.berkeley.edu&gt;
  425. </contact>
  426. </entry>
  427. <entry size="small" difficulty="easy" status="100%" target="1.4">
  428. <title>Add an Option to separately switch off the Layer Boundary</title>
  429. <description>
  430. <p>
  431. Currently the Layer boundary (the yellow dotted line around
  432. the active layer) can only be switched off together with the
  433. selection. This is evil.
  434. </p>
  435. </description>
  436. <contact>
  437. GIMP Developer List &lt;gimp-developer@xcf.berkeley.edu&gt;
  438. </contact>
  439. </entry>
  440. <entry size="small" difficulty="easy" status="50%" target="1.4">
  441. <title>Display the Memory Consumption of the Image</title>
  442. <description>
  443. <p>
  444. The current memory size of the image should always be
  445. available in the interface. Also show the new size of the
  446. image in the "Resize" and "Set Canvas Size" dialogs.
  447. </p>
  448. </description>
  449. <contact>
  450. GIMP Developer List &lt;gimp-developer@xcf.berkeley.edu&gt;
  451. </contact>
  452. </entry>
  453. </section> <!-- User Interface -->
  454. <section>
  455. <title>Help System</title>
  456. <entry size="medium" difficulty="medium" status="0%" target="1.4">
  457. <title>Rethink Plug-In and Script Help</title>
  458. <description>
  459. <p>
  460. Currently a Plug-In's help file determined by the application
  461. from it's executable name. This is broken because is does not
  462. cover multiple PDB procedures implemented in one Plug-In.
  463. </p>
  464. <p>
  465. A possible solution would be to pass the relative path to the
  466. help file to gimp_install_procedure(). A similar fix should be
  467. applied to Script-Fu and Perl.
  468. </p>
  469. </description>
  470. <contact>
  471. GIMP Developer List &lt;gimp-developer@xcf.berkeley.edu&gt;
  472. </contact>
  473. </entry>
  474. </section> <!-- Help System -->
  475. <section>
  476. <title>Internationalization</title>
  477. <entry size="small" difficulty="medium" status="0%" target="1.4">
  478. <title>Context-Sensitive Translations</title>
  479. <description>
  480. <p>
  481. The same english string used in different contexts may need to
  482. be translated differently in other languages. Think of a way to
  483. implement this using gettext or come up with something better.
  484. </p>
  485. <p>
  486. There is a patch with a possible solution on ftp.gimp.org,
  487. but actually we'd like something cleaner if possible.
  488. </p>
  489. </description>
  490. <url>ftp://ftp.gimp.org/pub/gimp/patches/gimp-chyla-20001207-0.patch</url>
  491. <contact>
  492. GIMP Developer List &lt;gimp-developer@xcf.berkeley.edu&gt;
  493. </contact>
  494. </entry>
  495. </section> <!-- Internationalization -->
  496. </todo>