Calligra/ShapeSelector

From KDE Community Wiki

Usecase / design / information about the ShapeSelector for KOffice

KOffice applications can hold content in various different shapes, like images or text. Users should be able to have a broad selection of content to insert and the user should not have to care about which basic shape type that content is based on. The idea of the shape selector is that the user should be able to insert any type of content from it and be able to create collections of shape-templates herself to insert into documents with ease.

Using the shape selector we can create new shapes in any KOffice application by visually selecting the type of shape we wish to have in our document. By default all installed shape-plugins are available as templates. So the user can find one of the vector-shape based templates (like the flower) in the selector and drag/and/drop it to her document canvas. The shape selector with just the standard templates is just a basis, the content selection can easily be extended and shared to have a much richer user experience all using the same docker.

Use Cases:

  • Alissa needs to inventorize the network layout and all the equipment thats used for a certain customer. She chooses to do that in Kivio. One of the components that is used quite often is a specific type of switch and its got some distinguishing features that other switches do not have. For this reason she created a new Stencil. She wants to add be able to insert it into her kivio documents.

My proposal for this is to have user-defined templates. Each template is shown in the Shape Selector and users can use them to create the stencils, just like they can use the default templates.

  • Bjorn is a colleague of Alissa and one week when she is sick Bjorn has to update a chart Alissa created earlier. For this update he needs to add a router that Alissa earlier created a stencil for. He wants to reuse that stencil for inserting it in the document.

The shape selector introduces the concept of a book which is a visual collection of templates. Each book can contain any number of templates and you can give a book a name. A specifically useful feature of a book is that you can save it to disk and thus exchange it with friends or colleagues. All that Bjorn needs to do is import the book of templates that Alissa made and insert the router template from there.

  • Collin is working on a project for his customer MegaCorp inc. He already created various presentations in KPresenter and now he will be creating a full page poster in KWord together with Krita and Karbon. While he was working on the presentation he already found the logo in svg format and he will be reusing that now. Some text-phrases used in the presentation are also required to appear on the poster.

The shape selector can contain content as well as templates; to the user there is little difference between the two. Content is typically copied using the clipboard and as such this usecase would be quite easy to implement by visualizing the current clipboard and allowing the user to move the content to a book where it will stay available for insertion into any document in any KOffice application later. Notice that with 'book' we are talking about the concept that was introduced in usecase B; a visual collection of templates. Being able to add any shape from the clipboard to it and still being able to save a book as one file on disk satisfies our usecase and allows for various other options.

Current state

You can find the shape selector in koffice svn in plugins/dockers/shapeselector/

Basic selector

Selector with folders

Brainstorming

The ideal solution for the user to be able to manage not only default templates but also user-made content as well as things like a kivio-stencil-set is to use the shape selector. The shape selector would have multiple books which the user can show or close and each book would contain a user selected set of content. For instance one book would be a set of network stencils. Another book a set of logos for companies the user created documents for. Another book contains a set of legal phrases (text-snippets) that the user shares with her colleagues.

Each book thus contains a set of items, each item is either a shape-template, a stencil or some general content that is copied via the clipboard into the shape selector. (i.e. text or an image).

In the usecases it was suggested to be able to load/save a book to disk. Which would be useful to share a book with a colleague. Another option that would be useful is to use KDEs KIO slaves and save the book on an ftp server or even go one step further and use one of the collaboration frameworks to have a book that you give read and/or write rights to with friends so dropping a shape on it would instantly become available to your friend or colleague also on the network.

The current implementation is using books very sparingly; the reason is that books visually are not that appealing yet and here are some thoughts to improve that. A book should be able to get an icon and you should be able to turn a book into an iconified version. Which means you can hide the contents to avoid clutter but access it again with just little extra work. I think we also want to be able to search for a book by name and give it a color etc. Currently the books can be navigated using a zoomed user interface; which turns out to be more trouble than its worth, so it would probably be a good idea to instead put stuff in a scroll area and have some features like putting a book on a grid and iconifiying a book it will make the books below it come into view.

References

http://wiki.openusability.org/kivio/index.php/StencilSets