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

(Email/Mailing List)
(Detailed Description)
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:withouttoolbar.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:withoutconsole.png]]
 +
[[File:withconsole.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:coloredmodel.png]]
  
 
'''Adding smart Indentation in code editor:- '''
 
'''Adding smart Indentation in code editor:- '''
Line 101: Line 94:
  
 
'''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==

Revision as of 08:42, 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

  • 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.

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. File:Withouttoolbar.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. File:Withoutconsole.png File:Withconsole.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. File:Coloredmodel.png

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:-

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

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 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

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