User:Shainasabarwal/Openscad UI Brushup
User Interface Brushup Brief Description: The present Openscad user interface is just a window splited into three parts- a code editor, rendered object and a console. Under this project, interface will be brushed up by removing existing bugs and adding new features.
Contents
Personal Information
- Name: Shaina Sabarwal
- Email-address: iamshainasabarwal@gmail.com
- IRC username: shaina_
- Contact Number: +917837091321
- Blog: shainasabarwal.wordpress.com
Background Information
- Computer Science Engineering bachelor student at Guru Nanak Dev Engineering College, Ludhiana, Punjab, India. Presently studing in 3rd year.
- Working in C, C++, Wt(www.webtoolkit.eu) for last 2 years. I, in a team of 4 students developed a blogging engine in Wt. It is released under open source GPL license and the code is at https://github.com/GreatDevelopers/LBE
- Deeply interested in front-end development. Recently developing a wordpress theme for our blog cpp-tricks.com where C++11 will be promoted and different tutorials will be provided for Fundamentals of C++, Wt, Qt, boost. Screen Shots of the theme are: http://bit.ly/PDdNfq
- I am an active member of Linux User Group, Ludhiana where the students are made awared about the open source technologies and motivated to contribute in them.
- I am quite familiar with git. Commit my work on git using github account(github.com/shaina7837).
Project Information
Title: OpenSCAD User Interface Brushup
Brief Summary
This project aims to make the User Interface of the software OpenSCAD elegant. OpenSCAD is a great software for making 3D solid models and parametric designs but its user interface is lacking interesting features. The present menu is little messy. The code editor and 3D interaction requires proper detailing which increase the scope of the software to a higher level.
Detailed Description
Understanding the various requirements of the users of this software, following features will be added under the scope of this project.
Full Screen Editing and Viewing (Detatchable View Pane):- It would be nice if we'll be able to detach the render window and make it fullscreen. Currently we can hide the editor and console to get the output at full screen, but there is no option to detach it from the main window. The http://qt-project.org/doc/qt-4.8/qdockwidget.html QDockWidgetcan be used to detatch from the main window. For Full screen distraction free code editing or viewing we can also hide widgets and use Qt size policy to keep the editor expanding when viewer is hidden and vice versa.
Ribbon UI:- Finding the right menu through the menubar is a hectic task for the user. It takes lots of clicks and hassle going through various menus and submenus to just say change the font-size. So Instead of menu Based interface, icons are provided directly on the editing area so that user does not have to waste time digging inside menus to do a simple task. I am not talking here about Microsoft's Ribbon UI specifically (as it has some patent issues that we may not want to be involved in) but about the concept of having Icons at top instead of multi-level menus. Other examples of Ribbon UI can be found in http://qt-project.org/forums/viewthread/4214 We can even use the QtRibbon library for creating Ribbon widgets or just create buttons on the top to provide easy access. [Will upload a mockup for this, please stay tuned]
Better Code Editor Colors:- This option should be added in preferences to change the color of the syntax. Currently we can change the font and size of coding syntax but not the color. For long terms coding, the color scheme we chose has a direct effect on strain that our eyes suffer. A low contrast theme is advised but at the end it comes to personal taste. So I propose to add following color schemes in code editor along with an option to choose whatever color scheme the user desires
- Zenburn http://slinky.imukuppi.org/zenburn/
- Solarized http://ethanschoonover.com/solarized
Can add more if required by developers.
This will require diving into highlighter.cc and adding more color themes.
Better Model Colors:- ALso we can change the color of output window from prefrences but options are less .There should be different themes for colors of rendered model. Currently, we can have figures in yellow and green color. That must have more options.
Adding smart Indentation in code editor:- Identation is very important to the code readability. Almost any basic code editor would ident automatically when it encounters '{'. Currently In editor.cc, we have functions indentselection( ) and unindentselection( ) which are used to provide indentation on selecting the option from edit menu. Every time going to Edit menu and clicking on indent option is vey tedious task. The indentation should be smart, like an enter after { should put an indent of '\t'
This can be done via two approaches:-
- Built our own simple indentation mechanism or
- Use a complete formatting library like http://astyle.sourceforge.net/
Code line numbers:- An option will be provided in the menu to add line number before each line of the code.
Error Highlighting:- (Some doubts need to be cleared from mentor)
MILESTONES
Community Bonding Period
- Talk to the community members
- Get to know the code
Week 1(19 May)
- Get started and remove a bug
- Get comfortable with the code
- Allow users to use Ctrl+C to copy
Week 2/3(26 May)
- Make the editor beautiful
- Add Color schemes to the code editor
- Give users to choose color schemes or make their own
- Show Line numbers
Week 4(9 June)
- Highlight errors and warnings.
Week 5(16 June)
- Make the View pane detatchable
Week 6(23 June)
- Start working on menus
MID TERM EVALUATION
Week 7(30 June)
- Continue working on menus and start working on Ribbon
Week 8(7 July)
- Add Ribbon UI
Week 9/10(14 JuLy)
- Beautify the viewer.
- Give more colors to it.
Week 11(28 July)
- Add the auto-indent feature to code editor.
Week 12(4 August)
- Icons to change formatting (font-size, font-family) on code editor
- Do heavy testing and clean the code.
Week 13(11 July)
- More testing and cleaning.
Week 14(18 July)
- FINAL EVALUATION
Deliverables
- Better Code Editor
- A Ribbon UI
- Better View Plane
- Better rendered model
- Better render grids
Communication
Time Availability
I will be available 40 to 48 hours / week, can spend more, if needed.
Email/Mailing List
My email address is shainasabarwal@gmail.com, I have subscribed to both brlcad and openscad mailing lists. I have been in contact through these mailing lists with other community members.
Real-Time Contact
I can interact with the mentors through OpenSCAD's IRC channel(#openscad) on freenode. My nick name on IRC is shaina_ . I am also comfortable with talking to my mentor via telephone if need arises. Contact Number: +91 7837091321
Code Review
My mentor will be able to see my progress as I push the code to the git repository of project (https://github.com/shaina7837/UI-Brushup-of-OpenSCAD)
Why OpenSCAD?
OpenSCAD is an open source CAD software application used to make 3D solid models. It has various applications in mechanical, civil, electronics and designing hardware tools for research and education purposes. The software has potential to be used by the large number of professionals and hardware developers. I personally like the community. This is the first time, I am contributing into an open source community and participating in GSOC but while discussing on various topics, like problems in compilations, issues, projects and proposal on mailing list (OpenSCAD@rocklinux.org) and IRC (#openscad), I felt very confortable to discuss and come up with new ideas.
Why UI interface project?
When I decided to work under this community. I explored various projects, I can work in and finally liked this one the most. As I am very much intersted in working UI. UI are not just looks and colors and providing shortcuts. One has to identify the audience and its interest and work accordingly. I am sure, I will be able to make the software more alive. Also the interface is in Qt and I have great experience in Wt(www.webtoolkit.eu) so working effiently in Qt won't be a big deal for me. I have also explored various classes and libraries of Qt also to make my self ready for working in this project.
Why Me?
I am very much passionate for the programming and always wanted to work under an open source community. Even after the completion of the project. I will love to keep on contributing and maintaing various projects of the community. Also graphics is my favourite field, I will be able to keep on working with full zeal and interest for long. Working in this project will enhance my programming, and UI skills and give me chance to come up with new ideas to solve real time problems that I will love to. Also I personally like to use such softwares for 2D and 3D model designing, so I can understand well what a user can expect while working with these softwares. <will write here about patch after submission>
Future scope
- Add some of the vim bindings to the to code editor
- Store themes in separate theme files which can be then shared among other users
- Improving the Wireframes
- Improving the mouse interaction