Difference between revisions of "Refactoring projects"
Jump to navigation
Jump to search
(Created page with " {{DevDiscussion}} A List of Refactoring Projects = Little Projects = * Derive SPStar from SPShape (not SPPolygon), update 'object/README'. * Move sp-item-transform.h funct...") |
|||
(37 intermediate revisions by 3 users not shown) | |||
Line 3: | Line 3: | ||
A List of Refactoring Projects | A List of Refactoring Projects | ||
See [[Development Project Ideas]] and [[Projects | Funded Project Ideas]] for more possible projects. | |||
See [[Refactoring plan]] for guidelines on how to refactor. | |||
= Little Projects = | = Little Projects = | ||
Line 10: | Line 14: | ||
* Move sp-item-update-cns.h function into SPItem. | * Move sp-item-update-cns.h function into SPItem. | ||
* Move sp-item-rm-unsatisfied-cns.h function into SPItem. | * Move sp-item-rm-unsatisfied-cns.h function into SPItem. | ||
* Remove config.h code (or document why it is needed). | * Remove config.h code (or document why it is needed). DOCUMENT/Autogenerated | ||
* Remove macros.h (or document why it is needed). | * <strike>Remove macros.h (or document why it is needed). DELETE</strike> | ||
* Remove dependence on Glib::object in ResourceManager(). | * <strike>Remove dependence on Glib::object in ResourceManager().</strike> | ||
* Simplify ResourceManager... it does only one thing: fix broken links. | * Simplify ResourceManager... it does only one thing: fix broken links. | ||
* In SPObject one can write: | * In SPObject one can write: | ||
getRepr()->setAttribute("x", "y"); | getRepr()->setAttribute("x", "y"); | ||
Line 19: | Line 23: | ||
setKeyValue( sp_attribute_lookup("x"), "y"); | setKeyValue( sp_attribute_lookup("x"), "y"); | ||
These are redundant and neither is really convenient. SPObject perhaps should have it's own setAttribute() function. | These are redundant and neither is really convenient. SPObject perhaps should have it's own setAttribute() function. | ||
* Rename helper-fns.h with a better discriptive name and move to util(?). | * Rename helper-fns.h with a better discriptive name and move to util(?). MOVE/RENAME | ||
* Remove dependence on object-set.h in files in src/livarot directory. | |||
* Evaluate all the functions in io/sys.h/.cpp. See if we can't use standard glib functions. | |||
* Remove helper/ucompose.hpp and it's use in src/event-log.cpp | |||
* Move functionality of src/line-geometry.h/.cpp into lib2geom or elsewhere. | |||
* Remove deprecated GDK_POINTER_MOTION_HINT_MASK (motion events are compressed since Gdk 3.8). | |||
* Turn DrawAnchor into a proper class (or figure out how to get rid of it all together). | |||
* Clean up constructors and signals in selcue.cpp. | |||
* Remove need to write out and read back in a PNG file with createBitmapImage(). | |||
= Medium Projects = | = Medium Projects = | ||
* Remove god-awful SPWidget (only used for selection). | * <strike>Remove god-awful SPWidget (only used for selection).</strike> Yeah!!! | ||
* Move most files in 'src' to subdirectories, add ''README'' for each directory with description of contents. | * Move most files in 'src' to subdirectories, add ''README'' for each directory with description of contents. (Tav) | ||
* In toolbars, use ''dataKludge'' or ''data'' or ''tbl'' or ''holder'' ... but not all four! ( | * In toolbars, use ''dataKludge'' or ''data'' or ''tbl'' or ''holder'' ... but not all four! (Side benefit of C++ify toolbars.) (Alex) | ||
* Remove InkAction class. Normal GTK button actions should be able to handle SVG icons... no need for derived class. (Alex) | |||
* Make data members private in SPI::Base and derived class. Add set() function. Default to SP_STYLE_UNSET in constructor, setting to SP_STYLE_SRC_PROP in set(). (Tav) | |||
* Sort out URL/file handling. See [[URIs and Filenames]]. | |||
* Find all the ways we output error/status messages to users (this does not include developer focused error messages that use std::cerr). Pick one and use it everywhere. The goal should be to be able to build Inkscape without a GUI but if the GUI is used, the user will see the messages on the desktop. | |||
* Look at Inkscape::URIReference and derived classes to see if they can't be simplified/templated/etc. | |||
* Make sp_repr_set_svg_double etc. member functions of Inkscape::XML::Node. [sp_repr_set_svg_double() -> setAttributeSvgDouble()]. | |||
* Redo Save/Export separating Lossless vs Lossy formats. Create one path for all Exports that share processing so that all options (that make sense) are available to all output formats. | |||
* Refactor toolbase and derived classes. The conversion from C to C++ seems to be only partially done. | |||
* Move the functionality found in SPDesktop to SPCanvas or InkscapeWindow, then kill it as well as View! | |||
* Divide display directory into: | |||
** canvas: GUI related routines, move to ui/ | |||
** drawing: Generic rendering routines | |||
* Clean-up Key events. Check to see if get_latin_keyval() can be moved to InkscapeWindow::on_key_press() and removed everywhere else. (Must make sure it doesn't interfere with typing text.) | |||
* Get rid of all Glib::wrap's. | |||
* Git rid of all gobj()'s. | |||
* Make liblcms2 a hard dependency and git rid of 92 #ifdefs. | |||
* Merge old knot code with "new" control-point code. | |||
= Large Projects = | = Large Projects = | ||
* C++ify toolbars. | * C++ify toolbars. (Alex) | ||
* Convert | * Convert all GtkActions's and Gtk::Action's to Gio::Action's. See [[GtkAction migration]] (Alex) | ||
* Add a one or two line description of what each file contains at the top of the file if it is missing. | * Add a one or two line description of what each file contains at the top of the file if it is missing. (Everyone) | ||
* Remove livarot, moving any needed functionality into lib2geom or other files. | |||
* Remove desktop dependence on reading and setting style on a document. In particular remove sp_desktop_set_style(). | |||
* C++ify SPCanvasItem and all its derived class. <strike>Use Gtk::Object as base so that it can be memory managed by Canvas widget.</strike> | |||
= Super Large Projects = | = Super Large Projects = | ||
* Convert | * Convert verbs to Gio::Action's. | ||
* Convert GUI to XML files. | * Convert GUI to XML files. (Long term.) | ||
* Invert 'y' coordinate system to match SVG. | * <strike>Invert 'y' coordinate system to match SVG. (Look at previous patch... link?)</strike> |
Revision as of 08:24, 26 July 2020
A List of Refactoring Projects
See Development Project Ideas and Funded Project Ideas for more possible projects.
See Refactoring plan for guidelines on how to refactor.
Little Projects
- Derive SPStar from SPShape (not SPPolygon), update 'object/README'.
- Move sp-item-transform.h functions into SPItem.
- Move sp-item-update-cns.h function into SPItem.
- Move sp-item-rm-unsatisfied-cns.h function into SPItem.
- Remove config.h code (or document why it is needed). DOCUMENT/Autogenerated
Remove macros.h (or document why it is needed). DELETERemove dependence on Glib::object in ResourceManager().- Simplify ResourceManager... it does only one thing: fix broken links.
- In SPObject one can write:
getRepr()->setAttribute("x", "y");
or
setKeyValue( sp_attribute_lookup("x"), "y");
These are redundant and neither is really convenient. SPObject perhaps should have it's own setAttribute() function.
- Rename helper-fns.h with a better discriptive name and move to util(?). MOVE/RENAME
- Remove dependence on object-set.h in files in src/livarot directory.
- Evaluate all the functions in io/sys.h/.cpp. See if we can't use standard glib functions.
- Remove helper/ucompose.hpp and it's use in src/event-log.cpp
- Move functionality of src/line-geometry.h/.cpp into lib2geom or elsewhere.
- Remove deprecated GDK_POINTER_MOTION_HINT_MASK (motion events are compressed since Gdk 3.8).
- Turn DrawAnchor into a proper class (or figure out how to get rid of it all together).
- Clean up constructors and signals in selcue.cpp.
- Remove need to write out and read back in a PNG file with createBitmapImage().
Medium Projects
Remove god-awful SPWidget (only used for selection).Yeah!!!- Move most files in 'src' to subdirectories, add README for each directory with description of contents. (Tav)
- In toolbars, use dataKludge or data or tbl or holder ... but not all four! (Side benefit of C++ify toolbars.) (Alex)
- Remove InkAction class. Normal GTK button actions should be able to handle SVG icons... no need for derived class. (Alex)
- Make data members private in SPI::Base and derived class. Add set() function. Default to SP_STYLE_UNSET in constructor, setting to SP_STYLE_SRC_PROP in set(). (Tav)
- Sort out URL/file handling. See URIs and Filenames.
- Find all the ways we output error/status messages to users (this does not include developer focused error messages that use std::cerr). Pick one and use it everywhere. The goal should be to be able to build Inkscape without a GUI but if the GUI is used, the user will see the messages on the desktop.
- Look at Inkscape::URIReference and derived classes to see if they can't be simplified/templated/etc.
- Make sp_repr_set_svg_double etc. member functions of Inkscape::XML::Node. [sp_repr_set_svg_double() -> setAttributeSvgDouble()].
- Redo Save/Export separating Lossless vs Lossy formats. Create one path for all Exports that share processing so that all options (that make sense) are available to all output formats.
- Refactor toolbase and derived classes. The conversion from C to C++ seems to be only partially done.
- Move the functionality found in SPDesktop to SPCanvas or InkscapeWindow, then kill it as well as View!
- Divide display directory into:
- canvas: GUI related routines, move to ui/
- drawing: Generic rendering routines
- Clean-up Key events. Check to see if get_latin_keyval() can be moved to InkscapeWindow::on_key_press() and removed everywhere else. (Must make sure it doesn't interfere with typing text.)
- Get rid of all Glib::wrap's.
- Git rid of all gobj()'s.
- Make liblcms2 a hard dependency and git rid of 92 #ifdefs.
- Merge old knot code with "new" control-point code.
Large Projects
- C++ify toolbars. (Alex)
- Convert all GtkActions's and Gtk::Action's to Gio::Action's. See GtkAction migration (Alex)
- Add a one or two line description of what each file contains at the top of the file if it is missing. (Everyone)
- Remove livarot, moving any needed functionality into lib2geom or other files.
- Remove desktop dependence on reading and setting style on a document. In particular remove sp_desktop_set_style().
- C++ify SPCanvasItem and all its derived class.
Use Gtk::Object as base so that it can be memory managed by Canvas widget.
Super Large Projects
- Convert verbs to Gio::Action's.
- Convert GUI to XML files. (Long term.)
Invert 'y' coordinate system to match SVG. (Look at previous patch... link?)