Difference between revisions of "User:Shainasabarwal/Openscad UI Brushup"

From BRL-CAD
(Future scope)
(Background Information)
 
(11 intermediate revisions by the same user not shown)
Line 17: Line 17:
 
*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
 
*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
 
*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 an active member of Linux User Group, Ludhiana where the students are made aware 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).
 
*I am quite familiar with git. Commit my work on git using github account(github.com/shaina7837).
  
Line 46: Line 46:
 
hide widgets and use Qt size policy to keep the editor expanding when
 
hide widgets and use Qt size policy to keep the editor expanding when
 
viewer is hidden and vice versa.
 
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:- '''
 
'''Better Code Editor Colors:- '''
Line 74: Line 58:
 
* Solarized http://ethanschoonover.com/solarized
 
* Solarized http://ethanschoonover.com/solarized
 
Can add more if required by developers.
 
Can add more if required by developers.
 +
This will require diving into highlighter.cc and adding more color themes.
 +
[[File:improved code editor.png]]
  
This will require diving into highlighter.cc and adding more color themes.
+
'''Custom designed toolbar:- '''
 +
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 a custom designed toolbar will be designed and added to the application so that the icons which user like to use very often can be added to the toolbar. This way, it will provide ease to use and precious time of the user. Though this toolbar is designed with intention of not covering much space of the editor, still there will be option to hide this toolbar.
 +
Qt has a class QStyle that will be used to develop this toolbar.
 +
[[File:Custom designed toolbar.png]]
 +
[[File:With Console.png]]
  
 
'''Better Model Colors:- '''
 
'''Better Model Colors:- '''
Line 82: Line 74:
 
rendered model. Currently, we can have figures in yellow and green
 
rendered model. Currently, we can have figures in yellow and green
 
color. That must have more options.
 
color. That must have more options.
 +
[[File:Colored model.png]]
 +
 +
'''Other Editors Review'''
 +
 +
These are the editors we can integrate into OpenSCAD application and have a better user experience of programming.
 +
 +
http://www.riverbankcomputing.co.uk/software/qscintilla/intro
 +
 +
http://bellard.org/qemacs/
 +
 +
https://github.com/pasnox/qodeedit
 +
 +
One of these will be chosen and integrated according to the agreement of mentor and feedback of the community
 +
 +
'''Launching Screen'''
 +
 +
A get started window will be provided to ask the user, what is his next approach like the one we have in Qt Creator application. Different approaches can be
  
'''Adding smart Indentation in code editor:- '''
+
*Examples
Identation is very important to the code readability. Almost any basic
+
*Get started tutorial
code editor would ident automatically when it encounters '{'.
+
*Open existing file
Currently In editor.cc, we have functions indentselection( ) and
+
*Create new project
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:-
+
'''Code line numbers'''
* Built our own simple indentation mechanism or
+
An option will be provided in the menu to add line number before each line of the code.
* Use a complete formatting library like http://astyle.sourceforge.net/
 
  
'''Code line numbers:- '''
+
'''Error Highlighting'''
 +
The line having error will be highlighted along with the line number.
 +
 
 +
'''Better Console'''
 +
Errors and warning will be shown in better way. Warning will also show line number with it.  A cross sign to hide the console will be on the console itself.
 +
 
 +
'''Export Dashboard'''
 +
A separate dialog box will be provided to export the model in different file formats.
 +
 
 +
'''Code line numbers'''
 
An option will be provided in the menu to add line number before each
 
An option will be provided in the menu to add line number before each
 
line of the code.
 
line of the code.
  
'''Error Highlighting:- '''
+
'''Error Highlighting'''
(Some doubts need to be cleared from mentor)
+
The line having error will be highlighted along with the line numbers.
  
 
==MILESTONES==
 
==MILESTONES==
 
 
'''Community Bonding Period'''
 
'''Community Bonding Period'''
 
* Talk to the community members
 
* Talk to the community members
 
* Get to know the code
 
* Get to know the code
  
'''Week 1(19 May)'''
+
'''Week 1(19th May)'''
*Get started and remove a bug
+
*Get started and remove the bug given in issue [https://github.com/openscad/openscad/issues/408 #408]
 
* Get comfortable with the code
 
* Get comfortable with the code
* Allow users to use Ctrl+C to copy
 
  
'''Week 2/3(26 May)'''
+
'''Week 2(26th May)'''
* Make the editor beautiful
+
* Take community feedback on the editors that can be integrated. (Given above in editors section)
* Add Color schemes to the code editor
+
* Decide one editor and start working on integrating it with openscad.
* Give users to choose color schemes or make their own
+
 
* Show Line numbers
+
'''Week 3(2nd June)'''
 +
*Improve on and integrate a good code editor.
  
 
'''Week 4(9 June)'''
 
'''Week 4(9 June)'''
*Highlight errors and warnings.
+
* Read about color contrast, and theory about designing themes for code editors.
 +
* Add themes to the code editor, at-least three of the proposed themes. 'ZenBurn', 'Monokai' and 'Solarized'
 +
* Give option to users to edit colors and addressing the issue [https://github.com/openscad/openscad/issues/643 #643]
  
 
'''Week 5(16 June)'''
 
'''Week 5(16 June)'''
*Make the View pane detatchable
+
* Add Better Highlighting and warnings.
 +
* Work towards a better console,  line numbers are not shown correct even counts them from include files.
 +
 
  
 
'''Week 6(23 June)'''
 
'''Week 6(23 June)'''
*Start working on menus
+
*Make the View pane detatchable as requested in issue
 +
[https://github.com/openscad/openscad/issues/233 #233] and issue
 +
[https://github.com/openscad/openscad/issues/451 #451].
 +
*Add various views, and allow user to switch between them.
  
 
'''MID TERM EVALUATION'''
 
'''MID TERM EVALUATION'''
  
 
'''Week 7(30 June)'''
 
'''Week 7(30 June)'''
*Continue working on menus and start working on Ribbon
+
*Take community feedback on toolbar and start working on toolbar.
 +
* Give an option to hide/show toolbar
  
 
'''Week 8(7 July)'''
 
'''Week 8(7 July)'''
*Add Ribbon UI
+
*Add more navigational elements in both editor and viewer. (Expand, Detach etc.)
 +
*Ability to change themes from the toolbar.
 +
 
 +
'''Week 9(14 JuLy)'''
 +
* Read color theory.
 +
* Work on colors of the viewer.
 +
* Add few color themes (after community feedback) to the viewer.
  
'''Week 9/10(14 JuLy)'''
+
'''Week 10(21 July)'''
*Beautify the viewer.
+
* Create an export dashboard, where a single dialog box can be used to export to various formats as adressed in issue (https://github.com/openscad/openscad/issues/649 )
*Give more colors to it.
 
  
'''Week 11(28 July)'''
+
'''Week 11 (28 July)'''
*Add the auto-indent feature to code editor.
+
* Create a first launch screen, where various examples made in openscad will be showcased.
  
 
'''Week 12(4 August)'''
 
'''Week 12(4 August)'''
*Icons to change formatting (font-size, font-family) on code editor
 
 
*Do heavy testing and clean the code.
 
*Do heavy testing and clean the code.
 +
*Time to make up for missed milestone (if any).
  
 
'''Week 13(11 July)'''
 
'''Week 13(11 July)'''
Line 169: Line 194:
 
===Email/Mailing List===
 
===Email/Mailing List===
  
I will be directly in contact with the mentors through Dr. Geo's
+
My email address is iamshainasabarwal@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.
mailing list (dr-geo@gnu.org). I am awared with the proper mailing
 
guidelines. I can also contact with mentor by personel mail, if
 
required.
 
  
 
===Real-Time Contact===
 
===Real-Time Contact===
Line 224: Line 246:
 
designing, so I can understand well what a user can expect while
 
designing, so I can understand well what a user can expect while
 
working with these softwares.
 
working with these softwares.
<will write here about patch after submission>
 
  
 
==Future scope==
 
==Future scope==

Latest revision as of 13:44, 21 March 2014

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.

Personal Information[edit]

  • Name: Shaina Sabarwal
  • Email-address: iamshainasabarwal@gmail.com
  • IRC username: shaina_
  • Contact Number: +917837091321
  • Blog: shainasabarwal.wordpress.com

Background Information[edit]

  • 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 aware 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[edit]

Title: OpenSCAD User Interface Brushup[edit]

Brief Summary[edit]

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[edit]

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.

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

Can add more if required by developers. This will require diving into highlighter.cc and adding more color themes. Improved code editor.png

Custom designed toolbar:- 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 a custom designed toolbar will be designed and added to the application so that the icons which user like to use very often can be added to the toolbar. This way, it will provide ease to use and precious time of the user. Though this toolbar is designed with intention of not covering much space of the editor, still there will be option to hide this toolbar. Qt has a class QStyle that will be used to develop this toolbar. Custom designed toolbar.png With Console.png

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. Colored model.png

Other Editors Review

These are the editors we can integrate into OpenSCAD application and have a better user experience of programming.

http://www.riverbankcomputing.co.uk/software/qscintilla/intro

http://bellard.org/qemacs/

https://github.com/pasnox/qodeedit

One of these will be chosen and integrated according to the agreement of mentor and feedback of the community

Launching Screen

A get started window will be provided to ask the user, what is his next approach like the one we have in Qt Creator application. Different approaches can be

  • Examples
  • Get started tutorial
  • Open existing file
  • Create new project

Code line numbers An option will be provided in the menu to add line number before each line of the code.

Error Highlighting The line having error will be highlighted along with the line number.

Better Console Errors and warning will be shown in better way. Warning will also show line number with it. A cross sign to hide the console will be on the console itself.

Export Dashboard A separate dialog box will be provided to export the model in different file formats.

Code line numbers An option will be provided in the menu to add line number before each line of the code.

Error Highlighting The line having error will be highlighted along with the line numbers.

MILESTONES[edit]

Community Bonding Period

  • Talk to the community members
  • Get to know the code

Week 1(19th May)

  • Get started and remove the bug given in issue #408
  • Get comfortable with the code

Week 2(26th May)

  • Take community feedback on the editors that can be integrated. (Given above in editors section)
  • Decide one editor and start working on integrating it with openscad.

Week 3(2nd June)

  • Improve on and integrate a good code editor.

Week 4(9 June)

  • Read about color contrast, and theory about designing themes for code editors.
  • Add themes to the code editor, at-least three of the proposed themes. 'ZenBurn', 'Monokai' and 'Solarized'
  • Give option to users to edit colors and addressing the issue #643

Week 5(16 June)

  • Add Better Highlighting and warnings.
  • Work towards a better console, line numbers are not shown correct even counts them from include files.


Week 6(23 June)

  • Make the View pane detatchable as requested in issue

#233 and issue #451.

  • Add various views, and allow user to switch between them.

MID TERM EVALUATION

Week 7(30 June)

  • Take community feedback on toolbar and start working on toolbar.
  • Give an option to hide/show toolbar

Week 8(7 July)

  • Add more navigational elements in both editor and viewer. (Expand, Detach etc.)
  • Ability to change themes from the toolbar.

Week 9(14 JuLy)

  • Read color theory.
  • Work on colors of the viewer.
  • Add few color themes (after community feedback) to the viewer.

Week 10(21 July)

Week 11 (28 July)

  • Create a first launch screen, where various examples made in openscad will be showcased.

Week 12(4 August)

  • Do heavy testing and clean the code.
  • Time to make up for missed milestone (if any).

Week 13(11 July)

  • More testing and cleaning.

Week 14(18 July)

  • FINAL EVALUATION

Deliverables[edit]

  • Better Code Editor
  • A Ribbon UI
  • Better View Plane
  • Better rendered model
  • Better render grids

Communication[edit]

Time Availability[edit]

I will be available 40 to 48 hours / week, can spend more, if needed.

Email/Mailing List[edit]

My email address is iamshainasabarwal@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[edit]

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[edit]

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?[edit]

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?[edit]

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?[edit]

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.

Future scope[edit]

  • 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