https://techbase.kde.org/api.php?action=feedcontributions&user=Moofang&feedformat=atomKDE TechBase - User contributions [en]2024-03-28T17:46:53ZUser contributionsMediaWiki 1.40.2https://techbase.kde.org/index.php?title=Projects/Plasma/PlasMate&diff=50481Projects/Plasma/PlasMate2010-04-01T06:20:59Z<p>Moofang: </p>
<hr />
<div>== PlasMate ==<br />
<br />
A complete solution for developing Plasma “widgets”, themes, dataengines, ions and krunners. Lowering the bar for contribution to the KDE community.<br />
<br />
<br />
=== First Impressions ===<br />
<br />
On launch the window will contain only a "start page". Logo at the top, tagline<br />
describing what it does right under that (bonus points for an animation when it<br />
appears).<br />
<br />
Beneath that three sets of options: Continue Working On.., Create a New...,<br />
Open An Existing...<br />
<br />
Each of those options will then have a list of clickable links to get started.<br />
<br />
Continue Working On will list the last few projects opened, or be hidden if<br />
there are no recent projects.<br />
<br />
Create A New will include options for Widgets, DataEngine or Theme.<br />
<br />
Open An Existing will provide those as well, but launch a file dialog.<br />
<br />
The intended user experience is "launch, click, work!" No menu bars, no project<br />
workspace by default (like a normal IDE tends to) on first launch.<br />
<br />
Once started, the work flow is: edit, preview, repeat, save point, repeat,<br />
publish ... repeat. ;) <br />
<br />
<br />
=== The Work Interface ===<br />
<br />
The main work interface will be divided into two area: the editor/viewer as the<br />
main widget, and toolboxes to provide workflow.<br />
<br />
The most important toolbox will be the Package Listing. This will be a tree that<br />
shows the contents of a Plasma::PackageStructure. Given that we know from the<br />
PackageStructure the mimetypes, etc, of each entry we can use this to make it<br />
easy to add items.<br />
<br />
Each directory in the listing will have an "Add.." entry, and the <br />
metadata.desktop file will also be listed. Behind the scenes, it will use a<br />
KDirWatch to update based on the filesystem.<br />
<br />
Other toolboxes will include:<br />
<br />
* the Widget previewer: with buttons to set the form factor and location as well<br />
as reload the widget. This way the author can simply preview their widget as<br />
they go, including interction.<br />
<br />
* timeline: save point browser and selector<br />
<br />
* notes/todos: a place for the author to collect their thoughts as they work (<-- very very nice idea)<br />
<br />
* documentation<br />
<br />
* widgets explorer (listing of Plasma::Widgets, links to the doc)<br />
<br />
<br />
=== Editor / Viewer ===<br />
<br />
When an entry is selected in the Package Listing, the selected file will be<br />
shown in the Editor/Viewer. Using KParts for all but a few types of entries will<br />
allow the user to edit code, view SVGs (we probably don't want the user to<br />
view/edit svgs with a kpart. dunno if you remember the application i made some<br />
time ago to help testing themes, but I think that i can integrate that with some<br />
information taken from plasma, like elements that can be themed... this requires<br />
some thinking...), etc. without having to write any appreciable amount of code<br />
ourselves.<br />
<br />
There are some editors that will need to be written from scratch, however. These<br />
include:<br />
<br />
* Metadata: a simple form that lets one fill in the metadata. Plasmagik should<br />
have some code about this.<br />
<br />
* KConfigXt: a form to create KConfigXt files; this will be used for both the<br />
configuration entries in a widget as well as Service .operation files.<br />
<br />
* SVG theme visualizer (look at ruphy's app)<br />
<br />
Integrating Qt Designer would also be a goal at some point. Tricky though,<br />
especially for the code it will generate. Requires further thinking, and not for<br />
the first releases.<br />
<br />
=== Integrated Revision Control, or the Save-less Interface ===<br />
<br />
Integrating a simple git-based revision control system will be critical to<br />
providing both a smooth user experience as well as making publishing and social<br />
interaction possible.<br />
<br />
When creating a new widget, it will be automatically saved into the plasmate<br />
appdata dir and a local git repository started for it. The user will be able to<br />
create Save Points as they go. This will simply do a git commit of all the work<br />
done to this point, adding files that are new, etc. The user will be prompted<br />
for a summary of changes.<br />
<br />
This will allow the user to then "roll back" to any given save point via the<br />
timeline toolbox.<br />
<br />
We will then provide an online git hosting system on plasma.kde.org. (based on<br />
gitorious?) When the user hits "Publish" they will be prompted whether they<br />
would like to create a local package or publish it publicly. If the latter is<br />
chosen, a git push will be done and their work will appear on our shared git<br />
repo. <br />
<br />
The hosting system will create Plasma::Packages out of the git repos for<br />
download; this is simply a matter of getting rid of any git metadata in the<br />
directry structure and creating a zip archive out of that, which is an easily<br />
automated task. Consumers will get Packages, creators can push and pull repos.<br />
<br />
Neither consumer nor user should have to understand what's actually happening.<br />
<br />
If the user does not already have an account on the shared git repo, they will<br />
be prompted to create one at this point. Some basic oversight will be needed:<br />
basically, just watching what new stuff goes up.<br />
<br />
Eventually, we will want to have a widget browser integrated into Plasmate so<br />
that the user can see what is already available on plasma.kde.org and, with a<br />
click of a button, fork that widget and start working on it locally.<br />
<br />
The required git functionality is therefore pretty basic on the Plasmate side:<br />
<br />
* init a repo (milestone 1)<br />
* add files (milestone 1)<br />
* simple commits (milestone 1)<br />
* change to a different commit, aka "roll back" (milestone 2)<br />
* push (milestone 2)<br />
* diffs (milestone 2)<br />
* pull (milestone 3)<br />
<br />
(what about enabling powerful users to get access to more advanced solutions? hmmm...<br />
obviously we should only do that if it doesn't clutter things for the target audience)<br />
<br />
=== User Actions ===<br />
<br />
Actions will be provided to the user in the work interface through a simple <br />
"see and click" interface that will be more like a toolbar or ribbon than a menu<br />
bar. These actions will include:<br />
<br />
* Save Point<br />
* Roll back (with history graph provided by the Timeline toolbox)<br />
* Publish<br />
* Exit / Leave<br />
<br />
<br />
=== Code Design ===<br />
<br />
Classes:<br />
<br />
* StartPage<br />
* Takes a pointer ot the main window<br />
* Creates the ProjectBox and other default toolboxes for a given action<br />
when selected<br />
<br />
* ProjectBox<br />
* ProjectView tree (maybe just a generic QTreeView?)<br />
* ProjectModel<br />
* based on Plasma::Package<br />
* uses a KDirModel internally to keep sync'd with disk<br />
* Takes a pointer to the main window to load viewers/editors with<br />
* Hosts the revision control object<br />
<br />
* WidgetPreview<br />
* Provides a Corona and View<br />
* Controls for: form factor, location, refresh. Translucent buttons at<br />
the top of the Previewer with those labels? Click on FF or L and a<br />
list of relevant choices will appear as an overlay?<br />
<br />
* Actions<br />
<br />
* Timeline<br />
<br />
* SaveSystem<br />
* Use the git classes from vng?<br />
<br />
* Application<br />
* Creates the main window<br />
* Creates the start page<br />
<br />
=== Art / Design ===<br />
<br />
Artwork and design work required:<br />
<br />
* PlasMate logo: the Plasma logo with some elegant text<br />
* The PlasMate tagline<br />
* The layout of the main page. Qt Creator's take on this is very nice; should feel "webby"<br />
<br />
<br />
=== Todo / Notes ===<br />
<br />
Right now the plasmoid use-case is the most complete. What's possible:<br />
<br />
* Creating projects and importing/exporting projects (to file)<br />
* Editting code and metadata, auto-saving, previewing<br />
* Creating / reverting to save points<br />
* Browsing techbase tutorials and Plasma API references<br />
* Publish to/Import from GHNS<br />
<br />
Finished items:<br />
<br />
* Proper file overwrite handling during project export.<br />
<br />
Fit and finish items:<br />
<br />
* Plasmoid previwer control buttons need proper icons and placement<br />
* Get rid of wokflow box, replace with streamlined toolbar<br />
* Treeview shouldn't show + signs on non-expandable items<br />
* Treeview doesn't support drag and drop<br />
* Todo note taker details<br />
* Metadata editor icon setter doesn't actually work.<br />
* Immediately load the main script file on project load<br />
<br />
The following features are planned but are not yet implemented / do not work yet:<br />
<br />
Critical<br />
:* Proper templates/packaging for runners, dataengines and themes.<br />
:* Previewing for runners, themes and dataengines<br />
:* Project description class to hold project related information<br />
<br />
Desired<br />
:* Per-project todo-style notes<br />
:* Project deletion from project management dialog.<br />
:* Project search/filter for project management dialog.<br />
:* Import/Export all projects.<br />
:* Show author + version number in project list.<br />
:* Allow file import (so that images can be added to project)<br />
:* Code auto completion for the script editor<br />
<br />
Eventually<br />
:* Per-project window/dockwidget settings<br />
:* QtDesigner integration<br />
:* Separate process for previewer<br />
<br />
Project related information that should be encapsulated:<br />
<br />
* What languages are supported<br />
* What previewer to use<br />
* If publishing is supported</div>Moofanghttps://techbase.kde.org/index.php?title=Projects/Plasma/PlasMate&diff=49949Projects/Plasma/PlasMate2010-03-06T04:41:04Z<p>Moofang: </p>
<hr />
<div>== PlasMate ==<br />
<br />
A complete solution for developing Plasma “widgets”, themes, dataengines, ions and krunners. Lowering the bar for contribution to the KDE community.<br />
<br />
<br />
=== First Impressions ===<br />
<br />
On launch the window will contain only a "start page". Logo at the top, tagline<br />
describing what it does right under that (bonus points for an animation when it<br />
appears).<br />
<br />
Beneath that three sets of options: Continue Working On.., Create a New...,<br />
Open An Existing...<br />
<br />
Each of those options will then have a list of clickable links to get started.<br />
<br />
Continue Working On will list the last few projects opened, or be hidden if<br />
there are no recent projects.<br />
<br />
Create A New will include options for Widgets, DataEngine or Theme.<br />
<br />
Open An Existing will provide those as well, but launch a file dialog.<br />
<br />
The intended user experience is "launch, click, work!" No menu bars, no project<br />
workspace by default (like a normal IDE tends to) on first launch.<br />
<br />
Once started, the work flow is: edit, preview, repeat, save point, repeat,<br />
publish ... repeat. ;) <br />
<br />
<br />
=== The Work Interface ===<br />
<br />
The main work interface will be divided into two area: the editor/viewer as the<br />
main widget, and toolboxes to provide workflow.<br />
<br />
The most important toolbox will be the Package Listing. This will be a tree that<br />
shows the contents of a Plasma::PackageStructure. Given that we know from the<br />
PackageStructure the mimetypes, etc, of each entry we can use this to make it<br />
easy to add items.<br />
<br />
Each directory in the listing will have an "Add.." entry, and the <br />
metadata.desktop file will also be listed. Behind the scenes, it will use a<br />
KDirWatch to update based on the filesystem.<br />
<br />
Other toolboxes will include:<br />
<br />
* the Widget previewer: with buttons to set the form factor and location as well<br />
as reload the widget. This way the author can simply preview their widget as<br />
they go, including interction.<br />
<br />
* timeline: save point browser and selector<br />
<br />
* notes/todos: a place for the author to collect their thoughts as they work (<-- very very nice idea)<br />
<br />
* documentation<br />
<br />
* widgets explorer (listing of Plasma::Widgets, links to the doc)<br />
<br />
<br />
=== Editor / Viewer ===<br />
<br />
When an entry is selected in the Package Listing, the selected file will be<br />
shown in the Editor/Viewer. Using KParts for all but a few types of entries will<br />
allow the user to edit code, view SVGs (we probably don't want the user to<br />
view/edit svgs with a kpart. dunno if you remember the application i made some<br />
time ago to help testing themes, but I think that i can integrate that with some<br />
information taken from plasma, like elements that can be themed... this requires<br />
some thinking...), etc. without having to write any appreciable amount of code<br />
ourselves.<br />
<br />
There are some editors that will need to be written from scratch, however. These<br />
include:<br />
<br />
* Metadata: a simple form that lets one fill in the metadata. Plasmagik should<br />
have some code about this.<br />
<br />
* KConfigXt: a form to create KConfigXt files; this will be used for both the<br />
configuration entries in a widget as well as Service .operation files.<br />
<br />
* SVG theme visualizer (look at ruphy's app)<br />
<br />
Integrating Qt Designer would also be a goal at some point. Tricky though,<br />
especially for the code it will generate. Requires further thinking, and not for<br />
the first releases.<br />
<br />
=== Integrated Revision Control, or the Save-less Interface ===<br />
<br />
Integrating a simple git-based revision control system will be critical to<br />
providing both a smooth user experience as well as making publishing and social<br />
interaction possible.<br />
<br />
When creating a new widget, it will be automatically saved into the plasmate<br />
appdata dir and a local git repository started for it. The user will be able to<br />
create Save Points as they go. This will simply do a git commit of all the work<br />
done to this point, adding files that are new, etc. The user will be prompted<br />
for a summary of changes.<br />
<br />
This will allow the user to then "roll back" to any given save point via the<br />
timeline toolbox.<br />
<br />
We will then provide an online git hosting system on plasma.kde.org. (based on<br />
gitorious?) When the user hits "Publish" they will be prompted whether they<br />
would like to create a local package or publish it publicly. If the latter is<br />
chosen, a git push will be done and their work will appear on our shared git<br />
repo. <br />
<br />
The hosting system will create Plasma::Packages out of the git repos for<br />
download; this is simply a matter of getting rid of any git metadata in the<br />
directry structure and creating a zip archive out of that, which is an easily<br />
automated task. Consumers will get Packages, creators can push and pull repos.<br />
<br />
Neither consumer nor user should have to understand what's actually happening.<br />
<br />
If the user does not already have an account on the shared git repo, they will<br />
be prompted to create one at this point. Some basic oversight will be needed:<br />
basically, just watching what new stuff goes up.<br />
<br />
Eventually, we will want to have a widget browser integrated into Plasmate so<br />
that the user can see what is already available on plasma.kde.org and, with a<br />
click of a button, fork that widget and start working on it locally.<br />
<br />
The required git functionality is therefore pretty basic on the Plasmate side:<br />
<br />
* init a repo (milestone 1)<br />
* add files (milestone 1)<br />
* simple commits (milestone 1)<br />
* change to a different commit, aka "roll back" (milestone 2)<br />
* push (milestone 2)<br />
* diffs (milestone 2)<br />
* pull (milestone 3)<br />
<br />
(what about enabling powerful users to get access to more advanced solutions? hmmm...<br />
obviously we should only do that if it doesn't clutter things for the target audience)<br />
<br />
=== User Actions ===<br />
<br />
Actions will be provided to the user in the work interface through a simple <br />
"see and click" interface that will be more like a toolbar or ribbon than a menu<br />
bar. These actions will include:<br />
<br />
* Save Point<br />
* Roll back (with history graph provided by the Timeline toolbox)<br />
* Publish<br />
* Exit / Leave<br />
<br />
<br />
=== Code Design ===<br />
<br />
Classes:<br />
<br />
* StartPage<br />
* Takes a pointer ot the main window<br />
* Creates the ProjectBox and other default toolboxes for a given action<br />
when selected<br />
<br />
* ProjectBox<br />
* ProjectView tree (maybe just a generic QTreeView?)<br />
* ProjectModel<br />
* based on Plasma::Package<br />
* uses a KDirModel internally to keep sync'd with disk<br />
* Takes a pointer to the main window to load viewers/editors with<br />
* Hosts the revision control object<br />
<br />
* WidgetPreview<br />
* Provides a Corona and View<br />
* Controls for: form factor, location, refresh. Translucent buttons at<br />
the top of the Previewer with those labels? Click on FF or L and a<br />
list of relevant choices will appear as an overlay?<br />
<br />
* Actions<br />
<br />
* Timeline<br />
<br />
* SaveSystem<br />
* Use the git classes from vng?<br />
<br />
* Application<br />
* Creates the main window<br />
* Creates the start page<br />
<br />
=== Art / Design ===<br />
<br />
Artwork and design work required:<br />
<br />
* PlasMate logo: the Plasma logo with some elegant text<br />
* The PlasMate tagline<br />
* The layout of the main page. Qt Creator's take on this is very nice; should feel "webby"<br />
<br />
<br />
=== Todo / Notes ===<br />
<br />
Fit and finish items:<br />
<br />
* Plasmoid previwer control buttons need proper icons and placement<br />
* Get rid of wokflow box, replace with streamlined toolbar<br />
* Treeview shouldn't show + signs on non-expandable items<br />
* Treeview doesn't support drag and drop<br />
* Todo note taker details<br />
* Proper file overwrite handling during project export.<br />
* Metadata editor icon setter doesn't actually work.<br />
* Immediately load the main script file on project load<br />
<br />
Right now the plasmoid use-case is the most complete. What's possible:<br />
<br />
* Creating projects and importing/exporting projects (to file)<br />
* Editting code and metadata, auto-saving, previewing<br />
* Creating / reverting to save points<br />
* Browsing techbase tutorials and Plasma API references<br />
* Publish to/Import from GHNS<br />
<br />
The following features are planned but are not yet implemented / do not work yet:<br />
<br />
Critical<br />
:* Proper templates/packaging for runners, dataengines and themes(?).<br />
:* Previewing for runners, themes(?) and dataengines(?)<br />
:* Project description class to hold project related information<br />
<br />
Desired<br />
:* Per-project todo-style notes<br />
:* Project deletion from project management dialog.<br />
:* Project search/filter for project management dialog.<br />
:* Import/Export all projects.<br />
:* Show author + version number in project list.<br />
:* Allow file import (so that images can be added to project)<br />
<br />
Eventually<br />
:* Per-project window/dockwidget settings<br />
:* QtDesigner integration<br />
:* Separate process for previewer<br />
<br />
Project related information that should be encapsulated:<br />
<br />
* What languages are supported<br />
* What previewer to use<br />
* If publishing is supported</div>Moofanghttps://techbase.kde.org/index.php?title=Projects/Plasma/PlasMate&diff=49948Projects/Plasma/PlasMate2010-03-06T04:35:45Z<p>Moofang: </p>
<hr />
<div>== PlasMate ==<br />
<br />
A complete solution for developing Plasma “widgets”, themes, dataengines, ions and krunners. Lowering the bar for contribution to the KDE community.<br />
<br />
<br />
=== First Impressions ===<br />
<br />
On launch the window will contain only a "start page". Logo at the top, tagline<br />
describing what it does right under that (bonus points for an animation when it<br />
appears).<br />
<br />
Beneath that three sets of options: Continue Working On.., Create a New...,<br />
Open An Existing...<br />
<br />
Each of those options will then have a list of clickable links to get started.<br />
<br />
Continue Working On will list the last few projects opened, or be hidden if<br />
there are no recent projects.<br />
<br />
Create A New will include options for Widgets, DataEngine or Theme.<br />
<br />
Open An Existing will provide those as well, but launch a file dialog.<br />
<br />
The intended user experience is "launch, click, work!" No menu bars, no project<br />
workspace by default (like a normal IDE tends to) on first launch.<br />
<br />
Once started, the work flow is: edit, preview, repeat, save point, repeat,<br />
publish ... repeat. ;) <br />
<br />
<br />
=== The Work Interface ===<br />
<br />
The main work interface will be divided into two area: the editor/viewer as the<br />
main widget, and toolboxes to provide workflow.<br />
<br />
The most important toolbox will be the Package Listing. This will be a tree that<br />
shows the contents of a Plasma::PackageStructure. Given that we know from the<br />
PackageStructure the mimetypes, etc, of each entry we can use this to make it<br />
easy to add items.<br />
<br />
Each directory in the listing will have an "Add.." entry, and the <br />
metadata.desktop file will also be listed. Behind the scenes, it will use a<br />
KDirWatch to update based on the filesystem.<br />
<br />
Other toolboxes will include:<br />
<br />
* the Widget previewer: with buttons to set the form factor and location as well<br />
as reload the widget. This way the author can simply preview their widget as<br />
they go, including interction.<br />
<br />
* timeline: save point browser and selector<br />
<br />
* notes/todos: a place for the author to collect their thoughts as they work (<-- very very nice idea)<br />
<br />
* documentation<br />
<br />
* widgets explorer (listing of Plasma::Widgets, links to the doc)<br />
<br />
<br />
=== Editor / Viewer ===<br />
<br />
When an entry is selected in the Package Listing, the selected file will be<br />
shown in the Editor/Viewer. Using KParts for all but a few types of entries will<br />
allow the user to edit code, view SVGs (we probably don't want the user to<br />
view/edit svgs with a kpart. dunno if you remember the application i made some<br />
time ago to help testing themes, but I think that i can integrate that with some<br />
information taken from plasma, like elements that can be themed... this requires<br />
some thinking...), etc. without having to write any appreciable amount of code<br />
ourselves.<br />
<br />
There are some editors that will need to be written from scratch, however. These<br />
include:<br />
<br />
* Metadata: a simple form that lets one fill in the metadata. Plasmagik should<br />
have some code about this.<br />
<br />
* KConfigXt: a form to create KConfigXt files; this will be used for both the<br />
configuration entries in a widget as well as Service .operation files.<br />
<br />
* SVG theme visualizer (look at ruphy's app)<br />
<br />
Integrating Qt Designer would also be a goal at some point. Tricky though,<br />
especially for the code it will generate. Requires further thinking, and not for<br />
the first releases.<br />
<br />
=== Integrated Revision Control, or the Save-less Interface ===<br />
<br />
Integrating a simple git-based revision control system will be critical to<br />
providing both a smooth user experience as well as making publishing and social<br />
interaction possible.<br />
<br />
When creating a new widget, it will be automatically saved into the plasmate<br />
appdata dir and a local git repository started for it. The user will be able to<br />
create Save Points as they go. This will simply do a git commit of all the work<br />
done to this point, adding files that are new, etc. The user will be prompted<br />
for a summary of changes.<br />
<br />
This will allow the user to then "roll back" to any given save point via the<br />
timeline toolbox.<br />
<br />
We will then provide an online git hosting system on plasma.kde.org. (based on<br />
gitorious?) When the user hits "Publish" they will be prompted whether they<br />
would like to create a local package or publish it publicly. If the latter is<br />
chosen, a git push will be done and their work will appear on our shared git<br />
repo. <br />
<br />
The hosting system will create Plasma::Packages out of the git repos for<br />
download; this is simply a matter of getting rid of any git metadata in the<br />
directry structure and creating a zip archive out of that, which is an easily<br />
automated task. Consumers will get Packages, creators can push and pull repos.<br />
<br />
Neither consumer nor user should have to understand what's actually happening.<br />
<br />
If the user does not already have an account on the shared git repo, they will<br />
be prompted to create one at this point. Some basic oversight will be needed:<br />
basically, just watching what new stuff goes up.<br />
<br />
Eventually, we will want to have a widget browser integrated into Plasmate so<br />
that the user can see what is already available on plasma.kde.org and, with a<br />
click of a button, fork that widget and start working on it locally.<br />
<br />
The required git functionality is therefore pretty basic on the Plasmate side:<br />
<br />
* init a repo (milestone 1)<br />
* add files (milestone 1)<br />
* simple commits (milestone 1)<br />
* change to a different commit, aka "roll back" (milestone 2)<br />
* push (milestone 2)<br />
* diffs (milestone 2)<br />
* pull (milestone 3)<br />
<br />
(what about enabling powerful users to get access to more advanced solutions? hmmm...<br />
obviously we should only do that if it doesn't clutter things for the target audience)<br />
<br />
=== User Actions ===<br />
<br />
Actions will be provided to the user in the work interface through a simple <br />
"see and click" interface that will be more like a toolbar or ribbon than a menu<br />
bar. These actions will include:<br />
<br />
* Save Point<br />
* Roll back (with history graph provided by the Timeline toolbox)<br />
* Publish<br />
* Exit / Leave<br />
<br />
<br />
=== Code Design ===<br />
<br />
Classes:<br />
<br />
* StartPage<br />
* Takes a pointer ot the main window<br />
* Creates the ProjectBox and other default toolboxes for a given action<br />
when selected<br />
<br />
* ProjectBox<br />
* ProjectView tree (maybe just a generic QTreeView?)<br />
* ProjectModel<br />
* based on Plasma::Package<br />
* uses a KDirModel internally to keep sync'd with disk<br />
* Takes a pointer to the main window to load viewers/editors with<br />
* Hosts the revision control object<br />
<br />
* WidgetPreview<br />
* Provides a Corona and View<br />
* Controls for: form factor, location, refresh. Translucent buttons at<br />
the top of the Previewer with those labels? Click on FF or L and a<br />
list of relevant choices will appear as an overlay?<br />
<br />
* Actions<br />
<br />
* Timeline<br />
<br />
* SaveSystem<br />
* Use the git classes from vng?<br />
<br />
* Application<br />
* Creates the main window<br />
* Creates the start page<br />
<br />
=== Art / Design ===<br />
<br />
Artwork and design work required:<br />
<br />
* PlasMate logo: the Plasma logo with some elegant text<br />
* The PlasMate tagline<br />
* The layout of the main page. Qt Creator's take on this is very nice; should feel "webby"<br />
<br />
<br />
=== Todo / Notes ===<br />
<br />
Fit and finish items:<br />
<br />
* Plasmoid previwer control buttons need proper icons and placement<br />
* Get rid of wokflow box, replace with streamlined toolbar<br />
* Treeview shouldn't show + signs on non-expandable items<br />
* Treeview doesn't support drag and drop<br />
* Todo note taker details<br />
* Proper file overwrite handling during project export.<br />
* Metadata editor icon setter doesn't actually work.<br />
* Allow file import (so that images can be added to project)<br />
* Immediately load the main script file on project load<br />
<br />
Right now the plasmoid use-case is the most complete. What's possible:<br />
<br />
* Creating projects and importing/exporting projects (to file)<br />
* Editting code and metadata, auto-saving, previewing<br />
* Creating / reverting to save points<br />
* Browsing techbase tutorials and Plasma API references<br />
* Publish to/Import from GHNS<br />
<br />
The following features are planned but are not yet implemented / do not work yet:<br />
<br />
Critical<br />
:* Proper templates/packaging for runners, dataengines and themes(?).<br />
:* Previewing for runners, themes(?) and dataengines(?)<br />
:* Project description class to hold project related information<br />
<br />
Desired<br />
:* Per-project todo-style notes<br />
:* Project deletion from project management dialog.<br />
:* Project search/filter for project management dialog.<br />
:* Import/Export all projects.<br />
:* Show author + version number in project list.<br />
<br />
Eventually<br />
:* Per-project window/dockwidget settings<br />
:* QtDesigner integration<br />
:* Separate process for previewer<br />
<br />
Project related information that should be encapsulated:<br />
<br />
* What languages are supported<br />
* What previewer to use<br />
* If publishing is supported</div>Moofanghttps://techbase.kde.org/index.php?title=Projects/Plasma/PlasMate&diff=49937Projects/Plasma/PlasMate2010-03-05T16:40:50Z<p>Moofang: </p>
<hr />
<div>== PlasMate ==<br />
<br />
A complete solution for developing Plasma “widgets”, themes, dataengines, ions and krunners. Lowering the bar for contribution to the KDE community.<br />
<br />
<br />
=== First Impressions ===<br />
<br />
On launch the window will contain only a "start page". Logo at the top, tagline<br />
describing what it does right under that (bonus points for an animation when it<br />
appears).<br />
<br />
Beneath that three sets of options: Continue Working On.., Create a New...,<br />
Open An Existing...<br />
<br />
Each of those options will then have a list of clickable links to get started.<br />
<br />
Continue Working On will list the last few projects opened, or be hidden if<br />
there are no recent projects.<br />
<br />
Create A New will include options for Widgets, DataEngine or Theme.<br />
<br />
Open An Existing will provide those as well, but launch a file dialog.<br />
<br />
The intended user experience is "launch, click, work!" No menu bars, no project<br />
workspace by default (like a normal IDE tends to) on first launch.<br />
<br />
Once started, the work flow is: edit, preview, repeat, save point, repeat,<br />
publish ... repeat. ;) <br />
<br />
<br />
=== The Work Interface ===<br />
<br />
The main work interface will be divided into two area: the editor/viewer as the<br />
main widget, and toolboxes to provide workflow.<br />
<br />
The most important toolbox will be the Package Listing. This will be a tree that<br />
shows the contents of a Plasma::PackageStructure. Given that we know from the<br />
PackageStructure the mimetypes, etc, of each entry we can use this to make it<br />
easy to add items.<br />
<br />
Each directory in the listing will have an "Add.." entry, and the <br />
metadata.desktop file will also be listed. Behind the scenes, it will use a<br />
KDirWatch to update based on the filesystem.<br />
<br />
Other toolboxes will include:<br />
<br />
* the Widget previewer: with buttons to set the form factor and location as well<br />
as reload the widget. This way the author can simply preview their widget as<br />
they go, including interction.<br />
<br />
* timeline: save point browser and selector<br />
<br />
* notes/todos: a place for the author to collect their thoughts as they work (<-- very very nice idea)<br />
<br />
* documentation<br />
<br />
* widgets explorer (listing of Plasma::Widgets, links to the doc)<br />
<br />
<br />
=== Editor / Viewer ===<br />
<br />
When an entry is selected in the Package Listing, the selected file will be<br />
shown in the Editor/Viewer. Using KParts for all but a few types of entries will<br />
allow the user to edit code, view SVGs (we probably don't want the user to<br />
view/edit svgs with a kpart. dunno if you remember the application i made some<br />
time ago to help testing themes, but I think that i can integrate that with some<br />
information taken from plasma, like elements that can be themed... this requires<br />
some thinking...), etc. without having to write any appreciable amount of code<br />
ourselves.<br />
<br />
There are some editors that will need to be written from scratch, however. These<br />
include:<br />
<br />
* Metadata: a simple form that lets one fill in the metadata. Plasmagik should<br />
have some code about this.<br />
<br />
* KConfigXt: a form to create KConfigXt files; this will be used for both the<br />
configuration entries in a widget as well as Service .operation files.<br />
<br />
* SVG theme visualizer (look at ruphy's app)<br />
<br />
Integrating Qt Designer would also be a goal at some point. Tricky though,<br />
especially for the code it will generate. Requires further thinking, and not for<br />
the first releases.<br />
<br />
=== Integrated Revision Control, or the Save-less Interface ===<br />
<br />
Integrating a simple git-based revision control system will be critical to<br />
providing both a smooth user experience as well as making publishing and social<br />
interaction possible.<br />
<br />
When creating a new widget, it will be automatically saved into the plasmate<br />
appdata dir and a local git repository started for it. The user will be able to<br />
create Save Points as they go. This will simply do a git commit of all the work<br />
done to this point, adding files that are new, etc. The user will be prompted<br />
for a summary of changes.<br />
<br />
This will allow the user to then "roll back" to any given save point via the<br />
timeline toolbox.<br />
<br />
We will then provide an online git hosting system on plasma.kde.org. (based on<br />
gitorious?) When the user hits "Publish" they will be prompted whether they<br />
would like to create a local package or publish it publicly. If the latter is<br />
chosen, a git push will be done and their work will appear on our shared git<br />
repo. <br />
<br />
The hosting system will create Plasma::Packages out of the git repos for<br />
download; this is simply a matter of getting rid of any git metadata in the<br />
directry structure and creating a zip archive out of that, which is an easily<br />
automated task. Consumers will get Packages, creators can push and pull repos.<br />
<br />
Neither consumer nor user should have to understand what's actually happening.<br />
<br />
If the user does not already have an account on the shared git repo, they will<br />
be prompted to create one at this point. Some basic oversight will be needed:<br />
basically, just watching what new stuff goes up.<br />
<br />
Eventually, we will want to have a widget browser integrated into Plasmate so<br />
that the user can see what is already available on plasma.kde.org and, with a<br />
click of a button, fork that widget and start working on it locally.<br />
<br />
The required git functionality is therefore pretty basic on the Plasmate side:<br />
<br />
* init a repo (milestone 1)<br />
* add files (milestone 1)<br />
* simple commits (milestone 1)<br />
* change to a different commit, aka "roll back" (milestone 2)<br />
* push (milestone 2)<br />
* diffs (milestone 2)<br />
* pull (milestone 3)<br />
<br />
(what about enabling powerful users to get access to more advanced solutions? hmmm...<br />
obviously we should only do that if it doesn't clutter things for the target audience)<br />
<br />
=== User Actions ===<br />
<br />
Actions will be provided to the user in the work interface through a simple <br />
"see and click" interface that will be more like a toolbar or ribbon than a menu<br />
bar. These actions will include:<br />
<br />
* Save Point<br />
* Roll back (with history graph provided by the Timeline toolbox)<br />
* Publish<br />
* Exit / Leave<br />
<br />
<br />
=== Code Design ===<br />
<br />
Classes:<br />
<br />
* StartPage<br />
* Takes a pointer ot the main window<br />
* Creates the ProjectBox and other default toolboxes for a given action<br />
when selected<br />
<br />
* ProjectBox<br />
* ProjectView tree (maybe just a generic QTreeView?)<br />
* ProjectModel<br />
* based on Plasma::Package<br />
* uses a KDirModel internally to keep sync'd with disk<br />
* Takes a pointer to the main window to load viewers/editors with<br />
* Hosts the revision control object<br />
<br />
* WidgetPreview<br />
* Provides a Corona and View<br />
* Controls for: form factor, location, refresh. Translucent buttons at<br />
the top of the Previewer with those labels? Click on FF or L and a<br />
list of relevant choices will appear as an overlay?<br />
<br />
* Actions<br />
<br />
* Timeline<br />
<br />
* SaveSystem<br />
* Use the git classes from vng?<br />
<br />
* Application<br />
* Creates the main window<br />
* Creates the start page<br />
<br />
=== Art / Design ===<br />
<br />
Artwork and design work required:<br />
<br />
* PlasMate logo: the Plasma logo with some elegant text<br />
* The PlasMate tagline<br />
* The layout of the main page. Qt Creator's take on this is very nice; should feel "webby"<br />
<br />
<br />
=== Todo / Notes ===<br />
<br />
Fit and finish items:<br />
<br />
* Plasmoid previwer control buttons need proper icons and placement<br />
* Get rid of wokflow box, replace with streamlined toolbar<br />
* Treeview shouldn't show + signs on non-expandable items<br />
* Treeview doesn't support drag and drop<br />
* Todo note taker details<br />
* Proper file overwrite handling during project export.<br />
* Metadata editor icon setter doesn't actually work.<br />
* Allow file import (so that images can be added to project)<br />
<br />
Right now the plasmoid use-case is the most complete. What's possible:<br />
<br />
* Creating projects and importing/exporting projects (to file)<br />
* Editting code and metadata, auto-saving, previewing<br />
* Creating / reverting to save points<br />
* Browsing techbase tutorials and Plasma API references<br />
* Publish to/Import from GHNS<br />
<br />
The following features are planned but are not yet implemented / do not work yet:<br />
<br />
Critical<br />
:* Proper templates/packaging for runners, dataengines and themes(?).<br />
:* Previewing for runners, themes(?) and dataengines(?)<br />
:* Project description class to hold project related information<br />
<br />
Desired<br />
:* Per-project todo-style notes<br />
:* Project deletion from project management dialog.<br />
:* Project search/filter for project management dialog.<br />
:* Import/Export all projects.<br />
:* Show author + version number in project list.<br />
<br />
Eventually<br />
:* Per-project window/dockwidget settings<br />
:* QtDesigner integration<br />
<br />
Project related information that should be encapsulated:<br />
<br />
* What languages are supported<br />
* What previewer to use<br />
* If publishing is supported</div>Moofanghttps://techbase.kde.org/index.php?title=Projects/Plasma/PlasMate&diff=49936Projects/Plasma/PlasMate2010-03-05T16:15:46Z<p>Moofang: </p>
<hr />
<div>== PlasMate ==<br />
<br />
A complete solution for developing Plasma “widgets”, themes, dataengines, ions and krunners. Lowering the bar for contribution to the KDE community.<br />
<br />
<br />
=== First Impressions ===<br />
<br />
On launch the window will contain only a "start page". Logo at the top, tagline<br />
describing what it does right under that (bonus points for an animation when it<br />
appears).<br />
<br />
Beneath that three sets of options: Continue Working On.., Create a New...,<br />
Open An Existing...<br />
<br />
Each of those options will then have a list of clickable links to get started.<br />
<br />
Continue Working On will list the last few projects opened, or be hidden if<br />
there are no recent projects.<br />
<br />
Create A New will include options for Widgets, DataEngine or Theme.<br />
<br />
Open An Existing will provide those as well, but launch a file dialog.<br />
<br />
The intended user experience is "launch, click, work!" No menu bars, no project<br />
workspace by default (like a normal IDE tends to) on first launch.<br />
<br />
Once started, the work flow is: edit, preview, repeat, save point, repeat,<br />
publish ... repeat. ;) <br />
<br />
<br />
=== The Work Interface ===<br />
<br />
The main work interface will be divided into two area: the editor/viewer as the<br />
main widget, and toolboxes to provide workflow.<br />
<br />
The most important toolbox will be the Package Listing. This will be a tree that<br />
shows the contents of a Plasma::PackageStructure. Given that we know from the<br />
PackageStructure the mimetypes, etc, of each entry we can use this to make it<br />
easy to add items.<br />
<br />
Each directory in the listing will have an "Add.." entry, and the <br />
metadata.desktop file will also be listed. Behind the scenes, it will use a<br />
KDirWatch to update based on the filesystem.<br />
<br />
Other toolboxes will include:<br />
<br />
* the Widget previewer: with buttons to set the form factor and location as well<br />
as reload the widget. This way the author can simply preview their widget as<br />
they go, including interction.<br />
<br />
* timeline: save point browser and selector<br />
<br />
* notes/todos: a place for the author to collect their thoughts as they work (<-- very very nice idea)<br />
<br />
* documentation<br />
<br />
* widgets explorer (listing of Plasma::Widgets, links to the doc)<br />
<br />
<br />
=== Editor / Viewer ===<br />
<br />
When an entry is selected in the Package Listing, the selected file will be<br />
shown in the Editor/Viewer. Using KParts for all but a few types of entries will<br />
allow the user to edit code, view SVGs (we probably don't want the user to<br />
view/edit svgs with a kpart. dunno if you remember the application i made some<br />
time ago to help testing themes, but I think that i can integrate that with some<br />
information taken from plasma, like elements that can be themed... this requires<br />
some thinking...), etc. without having to write any appreciable amount of code<br />
ourselves.<br />
<br />
There are some editors that will need to be written from scratch, however. These<br />
include:<br />
<br />
* Metadata: a simple form that lets one fill in the metadata. Plasmagik should<br />
have some code about this.<br />
<br />
* KConfigXt: a form to create KConfigXt files; this will be used for both the<br />
configuration entries in a widget as well as Service .operation files.<br />
<br />
* SVG theme visualizer (look at ruphy's app)<br />
<br />
Integrating Qt Designer would also be a goal at some point. Tricky though,<br />
especially for the code it will generate. Requires further thinking, and not for<br />
the first releases.<br />
<br />
=== Integrated Revision Control, or the Save-less Interface ===<br />
<br />
Integrating a simple git-based revision control system will be critical to<br />
providing both a smooth user experience as well as making publishing and social<br />
interaction possible.<br />
<br />
When creating a new widget, it will be automatically saved into the plasmate<br />
appdata dir and a local git repository started for it. The user will be able to<br />
create Save Points as they go. This will simply do a git commit of all the work<br />
done to this point, adding files that are new, etc. The user will be prompted<br />
for a summary of changes.<br />
<br />
This will allow the user to then "roll back" to any given save point via the<br />
timeline toolbox.<br />
<br />
We will then provide an online git hosting system on plasma.kde.org. (based on<br />
gitorious?) When the user hits "Publish" they will be prompted whether they<br />
would like to create a local package or publish it publicly. If the latter is<br />
chosen, a git push will be done and their work will appear on our shared git<br />
repo. <br />
<br />
The hosting system will create Plasma::Packages out of the git repos for<br />
download; this is simply a matter of getting rid of any git metadata in the<br />
directry structure and creating a zip archive out of that, which is an easily<br />
automated task. Consumers will get Packages, creators can push and pull repos.<br />
<br />
Neither consumer nor user should have to understand what's actually happening.<br />
<br />
If the user does not already have an account on the shared git repo, they will<br />
be prompted to create one at this point. Some basic oversight will be needed:<br />
basically, just watching what new stuff goes up.<br />
<br />
Eventually, we will want to have a widget browser integrated into Plasmate so<br />
that the user can see what is already available on plasma.kde.org and, with a<br />
click of a button, fork that widget and start working on it locally.<br />
<br />
The required git functionality is therefore pretty basic on the Plasmate side:<br />
<br />
* init a repo (milestone 1)<br />
* add files (milestone 1)<br />
* simple commits (milestone 1)<br />
* change to a different commit, aka "roll back" (milestone 2)<br />
* push (milestone 2)<br />
* diffs (milestone 2)<br />
* pull (milestone 3)<br />
<br />
(what about enabling powerful users to get access to more advanced solutions? hmmm...<br />
obviously we should only do that if it doesn't clutter things for the target audience)<br />
<br />
=== User Actions ===<br />
<br />
Actions will be provided to the user in the work interface through a simple <br />
"see and click" interface that will be more like a toolbar or ribbon than a menu<br />
bar. These actions will include:<br />
<br />
* Save Point<br />
* Roll back (with history graph provided by the Timeline toolbox)<br />
* Publish<br />
* Exit / Leave<br />
<br />
<br />
=== Code Design ===<br />
<br />
Classes:<br />
<br />
* StartPage<br />
* Takes a pointer ot the main window<br />
* Creates the ProjectBox and other default toolboxes for a given action<br />
when selected<br />
<br />
* ProjectBox<br />
* ProjectView tree (maybe just a generic QTreeView?)<br />
* ProjectModel<br />
* based on Plasma::Package<br />
* uses a KDirModel internally to keep sync'd with disk<br />
* Takes a pointer to the main window to load viewers/editors with<br />
* Hosts the revision control object<br />
<br />
* WidgetPreview<br />
* Provides a Corona and View<br />
* Controls for: form factor, location, refresh. Translucent buttons at<br />
the top of the Previewer with those labels? Click on FF or L and a<br />
list of relevant choices will appear as an overlay?<br />
<br />
* Actions<br />
<br />
* Timeline<br />
<br />
* SaveSystem<br />
* Use the git classes from vng?<br />
<br />
* Application<br />
* Creates the main window<br />
* Creates the start page<br />
<br />
=== Art / Design ===<br />
<br />
Artwork and design work required:<br />
<br />
* PlasMate logo: the Plasma logo with some elegant text<br />
* The PlasMate tagline<br />
* The layout of the main page. Qt Creator's take on this is very nice; should feel "webby"<br />
<br />
<br />
=== Todo / Notes ===<br />
<br />
Fit and finish items:<br />
<br />
* Plasmoid previwer control buttons need proper icons and placement<br />
* Get rid of wokflow box, replace with streamlined toolbar<br />
* Treeview shouldn't show + signs on non-expandable items<br />
* Treeview doesn't support drag and drop<br />
* Todo note taker details<br />
* Proper file overwrite handling during project export.<br />
* Metadata editor icon setter doesn't actually work.<br />
<br />
Right now the plasmoid use-case is the most complete. What's possible:<br />
<br />
* Creating projects and importing/exporting projects (to file)<br />
* Editting code and metadata, auto-saving, previewing<br />
* Creating / reverting to save points<br />
* Browsing techbase tutorials and Plasma API references<br />
* Publish to/Import from GHNS<br />
<br />
The following features are planned but are not yet implemented / do not work yet:<br />
<br />
Critical<br />
:* Proper templates/packaging for runners, dataengines and themes(?).<br />
:* Previewing for runners, themes(?) and dataengines(?)<br />
:* Project description class to hold project related information<br />
<br />
Desired<br />
:* Per-project todo-style notes<br />
:* Project deletion from project management dialog.<br />
:* Project search/filter for project management dialog.<br />
:* Import/Export all projects.<br />
:* Show author + version number in project list.<br />
<br />
Eventually<br />
:* Per-project window/dockwidget settings<br />
:* QtDesigner integration<br />
<br />
Project related information that should be encapsulated:<br />
<br />
* What languages are supported<br />
* What previewer to use<br />
* If publishing is supported</div>Moofanghttps://techbase.kde.org/index.php?title=Projects/Plasma/PlasMate&diff=49935Projects/Plasma/PlasMate2010-03-05T15:48:25Z<p>Moofang: </p>
<hr />
<div>== PlasMate ==<br />
<br />
A complete solution for developing Plasma “widgets”, themes, dataengines, ions and krunners. Lowering the bar for contribution to the KDE community.<br />
<br />
<br />
=== First Impressions ===<br />
<br />
On launch the window will contain only a "start page". Logo at the top, tagline<br />
describing what it does right under that (bonus points for an animation when it<br />
appears).<br />
<br />
Beneath that three sets of options: Continue Working On.., Create a New...,<br />
Open An Existing...<br />
<br />
Each of those options will then have a list of clickable links to get started.<br />
<br />
Continue Working On will list the last few projects opened, or be hidden if<br />
there are no recent projects.<br />
<br />
Create A New will include options for Widgets, DataEngine or Theme.<br />
<br />
Open An Existing will provide those as well, but launch a file dialog.<br />
<br />
The intended user experience is "launch, click, work!" No menu bars, no project<br />
workspace by default (like a normal IDE tends to) on first launch.<br />
<br />
Once started, the work flow is: edit, preview, repeat, save point, repeat,<br />
publish ... repeat. ;) <br />
<br />
<br />
=== The Work Interface ===<br />
<br />
The main work interface will be divided into two area: the editor/viewer as the<br />
main widget, and toolboxes to provide workflow.<br />
<br />
The most important toolbox will be the Package Listing. This will be a tree that<br />
shows the contents of a Plasma::PackageStructure. Given that we know from the<br />
PackageStructure the mimetypes, etc, of each entry we can use this to make it<br />
easy to add items.<br />
<br />
Each directory in the listing will have an "Add.." entry, and the <br />
metadata.desktop file will also be listed. Behind the scenes, it will use a<br />
KDirWatch to update based on the filesystem.<br />
<br />
Other toolboxes will include:<br />
<br />
* the Widget previewer: with buttons to set the form factor and location as well<br />
as reload the widget. This way the author can simply preview their widget as<br />
they go, including interction.<br />
<br />
* timeline: save point browser and selector<br />
<br />
* notes/todos: a place for the author to collect their thoughts as they work (<-- very very nice idea)<br />
<br />
* documentation<br />
<br />
* widgets explorer (listing of Plasma::Widgets, links to the doc)<br />
<br />
<br />
=== Editor / Viewer ===<br />
<br />
When an entry is selected in the Package Listing, the selected file will be<br />
shown in the Editor/Viewer. Using KParts for all but a few types of entries will<br />
allow the user to edit code, view SVGs (we probably don't want the user to<br />
view/edit svgs with a kpart. dunno if you remember the application i made some<br />
time ago to help testing themes, but I think that i can integrate that with some<br />
information taken from plasma, like elements that can be themed... this requires<br />
some thinking...), etc. without having to write any appreciable amount of code<br />
ourselves.<br />
<br />
There are some editors that will need to be written from scratch, however. These<br />
include:<br />
<br />
* Metadata: a simple form that lets one fill in the metadata. Plasmagik should<br />
have some code about this.<br />
<br />
* KConfigXt: a form to create KConfigXt files; this will be used for both the<br />
configuration entries in a widget as well as Service .operation files.<br />
<br />
* SVG theme visualizer (look at ruphy's app)<br />
<br />
Integrating Qt Designer would also be a goal at some point. Tricky though,<br />
especially for the code it will generate. Requires further thinking, and not for<br />
the first releases.<br />
<br />
=== Integrated Revision Control, or the Save-less Interface ===<br />
<br />
Integrating a simple git-based revision control system will be critical to<br />
providing both a smooth user experience as well as making publishing and social<br />
interaction possible.<br />
<br />
When creating a new widget, it will be automatically saved into the plasmate<br />
appdata dir and a local git repository started for it. The user will be able to<br />
create Save Points as they go. This will simply do a git commit of all the work<br />
done to this point, adding files that are new, etc. The user will be prompted<br />
for a summary of changes.<br />
<br />
This will allow the user to then "roll back" to any given save point via the<br />
timeline toolbox.<br />
<br />
We will then provide an online git hosting system on plasma.kde.org. (based on<br />
gitorious?) When the user hits "Publish" they will be prompted whether they<br />
would like to create a local package or publish it publicly. If the latter is<br />
chosen, a git push will be done and their work will appear on our shared git<br />
repo. <br />
<br />
The hosting system will create Plasma::Packages out of the git repos for<br />
download; this is simply a matter of getting rid of any git metadata in the<br />
directry structure and creating a zip archive out of that, which is an easily<br />
automated task. Consumers will get Packages, creators can push and pull repos.<br />
<br />
Neither consumer nor user should have to understand what's actually happening.<br />
<br />
If the user does not already have an account on the shared git repo, they will<br />
be prompted to create one at this point. Some basic oversight will be needed:<br />
basically, just watching what new stuff goes up.<br />
<br />
Eventually, we will want to have a widget browser integrated into Plasmate so<br />
that the user can see what is already available on plasma.kde.org and, with a<br />
click of a button, fork that widget and start working on it locally.<br />
<br />
The required git functionality is therefore pretty basic on the Plasmate side:<br />
<br />
* init a repo (milestone 1)<br />
* add files (milestone 1)<br />
* simple commits (milestone 1)<br />
* change to a different commit, aka "roll back" (milestone 2)<br />
* push (milestone 2)<br />
* diffs (milestone 2)<br />
* pull (milestone 3)<br />
<br />
(what about enabling powerful users to get access to more advanced solutions? hmmm...<br />
obviously we should only do that if it doesn't clutter things for the target audience)<br />
<br />
=== User Actions ===<br />
<br />
Actions will be provided to the user in the work interface through a simple <br />
"see and click" interface that will be more like a toolbar or ribbon than a menu<br />
bar. These actions will include:<br />
<br />
* Save Point<br />
* Roll back (with history graph provided by the Timeline toolbox)<br />
* Publish<br />
* Exit / Leave<br />
<br />
<br />
=== Code Design ===<br />
<br />
Classes:<br />
<br />
* StartPage<br />
* Takes a pointer ot the main window<br />
* Creates the ProjectBox and other default toolboxes for a given action<br />
when selected<br />
<br />
* ProjectBox<br />
* ProjectView tree (maybe just a generic QTreeView?)<br />
* ProjectModel<br />
* based on Plasma::Package<br />
* uses a KDirModel internally to keep sync'd with disk<br />
* Takes a pointer to the main window to load viewers/editors with<br />
* Hosts the revision control object<br />
<br />
* WidgetPreview<br />
* Provides a Corona and View<br />
* Controls for: form factor, location, refresh. Translucent buttons at<br />
the top of the Previewer with those labels? Click on FF or L and a<br />
list of relevant choices will appear as an overlay?<br />
<br />
* Actions<br />
<br />
* Timeline<br />
<br />
* SaveSystem<br />
* Use the git classes from vng?<br />
<br />
* Application<br />
* Creates the main window<br />
* Creates the start page<br />
<br />
=== Art / Design ===<br />
<br />
Artwork and design work required:<br />
<br />
* PlasMate logo: the Plasma logo with some elegant text<br />
* The PlasMate tagline<br />
* The layout of the main page. Qt Creator's take on this is very nice; should feel "webby"<br />
<br />
<br />
=== Todo / Notes ===<br />
<br />
Fit and finish items:<br />
<br />
* Plasmoid previwer control buttons need proper icons and placement<br />
* Get rid of wokflow box, replace with streamlined toolbar<br />
* Treeview shouldn't show + signs on non-expandable items<br />
* Treeview doesn't support drag and drop<br />
* Todo note taker details<br />
* Proper file overwrite handling during project export.<br />
<br />
Right now the plasmoid use-case is the most complete. What's possible:<br />
<br />
* Creating projects and importing/exporting projects (to file)<br />
* Editting code and metadata, auto-saving, previewing<br />
* Creating / reverting to save points<br />
* Browsing techbase tutorials and Plasma API references<br />
* Publish to/Import from GHNS<br />
<br />
The following features are planned but are not yet implemented / do not work yet:<br />
<br />
Critical<br />
:* Proper templates/packaging for runners, dataengines and themes(?).<br />
:* Previewing for runners, themes(?) and dataengines(?)<br />
:* Project description class to hold project related information<br />
<br />
Desired<br />
:* Per-project todo-style notes<br />
:* Project deletion from project management dialog.<br />
:* Project search/filter for project management dialog.<br />
:* Import/Export all projects.<br />
:* Show author + version number in project list.<br />
<br />
Eventually<br />
:* Per-project window/dockwidget settings<br />
:* QtDesigner integration<br />
<br />
Project related information that should be encapsulated:<br />
<br />
* What languages are supported<br />
* What previewer to use<br />
* If publishing is supported</div>Moofanghttps://techbase.kde.org/index.php?title=Projects/Plasma/PlasMate&diff=49139Projects/Plasma/PlasMate2010-02-05T13:38:45Z<p>Moofang: Added "what's possible"</p>
<hr />
<div>== PlasMate ==<br />
<br />
A complete solution for developing Plasma “widgets”, themes, dataengines, ions and krunners. Lowering the bar for contribution to the KDE community.<br />
<br />
<br />
=== First Impressions ===<br />
<br />
On launch the window will contain only a "start page". Logo at the top, tagline<br />
describing what it does right under that (bonus points for an animation when it<br />
appears).<br />
<br />
Beneath that three sets of options: Continue Working On.., Create a New...,<br />
Open An Existing...<br />
<br />
Each of those options will then have a list of clickable links to get started.<br />
<br />
Continue Working On will list the last few projects opened, or be hidden if<br />
there are no recent projects.<br />
<br />
Create A New will include options for Widgets, DataEngine or Theme.<br />
<br />
Open An Existing will provide those as well, but launch a file dialog.<br />
<br />
The intended user experience is "launch, click, work!" No menu bars, no project<br />
workspace by default (like a normal IDE tends to) on first launch.<br />
<br />
Once started, the work flow is: edit, preview, repeat, save point, repeat,<br />
publish ... repeat. ;) <br />
<br />
<br />
=== The Work Interface ===<br />
<br />
The main work interface will be divided into two area: the editor/viewer as the<br />
main widget, and toolboxes to provide workflow.<br />
<br />
The most important toolbox will be the Package Listing. This will be a tree that<br />
shows the contents of a Plasma::PackageStructure. Given that we know from the<br />
PackageStructure the mimetypes, etc, of each entry we can use this to make it<br />
easy to add items.<br />
<br />
Each directory in the listing will have an "Add.." entry, and the <br />
metadata.desktop file will also be listed. Behind the scenes, it will use a<br />
KDirWatch to update based on the filesystem.<br />
<br />
Other toolboxes will include:<br />
<br />
* the Widget previewer: with buttons to set the form factor and location as well<br />
as reload the widget. This way the author can simply preview their widget as<br />
they go, including interction.<br />
<br />
* timeline: save point browser and selector<br />
<br />
* notes/todos: a place for the author to collect their thoughts as they work (<-- very very nice idea)<br />
<br />
* documentation<br />
<br />
* widgets explorer (listing of Plasma::Widgets, links to the doc)<br />
<br />
<br />
=== Editor / Viewer ===<br />
<br />
When an entry is selected in the Package Listing, the selected file will be<br />
shown in the Editor/Viewer. Using KParts for all but a few types of entries will<br />
allow the user to edit code, view SVGs (we probably don't want the user to<br />
view/edit svgs with a kpart. dunno if you remember the application i made some<br />
time ago to help testing themes, but I think that i can integrate that with some<br />
information taken from plasma, like elements that can be themed... this requires<br />
some thinking...), etc. without having to write any appreciable amount of code<br />
ourselves.<br />
<br />
There are some editors that will need to be written from scratch, however. These<br />
include:<br />
<br />
* Metadata: a simple form that lets one fill in the metadata. Plasmagik should<br />
have some code about this.<br />
<br />
* KConfigXt: a form to create KConfigXt files; this will be used for both the<br />
configuration entries in a widget as well as Service .operation files.<br />
<br />
* SVG theme visualizer (look at ruphy's app)<br />
<br />
Integrating Qt Designer would also be a goal at some point. Tricky though,<br />
especially for the code it will generate. Requires further thinking, and not for<br />
the first releases.<br />
<br />
=== Integrated Revision Control, or the Save-less Interface ===<br />
<br />
Integrating a simple git-based revision control system will be critical to<br />
providing both a smooth user experience as well as making publishing and social<br />
interaction possible.<br />
<br />
When creating a new widget, it will be automatically saved into the plasmate<br />
appdata dir and a local git repository started for it. The user will be able to<br />
create Save Points as they go. This will simply do a git commit of all the work<br />
done to this point, adding files that are new, etc. The user will be prompted<br />
for a summary of changes.<br />
<br />
This will allow the user to then "roll back" to any given save point via the<br />
timeline toolbox.<br />
<br />
We will then provide an online git hosting system on plasma.kde.org. (based on<br />
gitorious?) When the user hits "Publish" they will be prompted whether they<br />
would like to create a local package or publish it publicly. If the latter is<br />
chosen, a git push will be done and their work will appear on our shared git<br />
repo. <br />
<br />
The hosting system will create Plasma::Packages out of the git repos for<br />
download; this is simply a matter of getting rid of any git metadata in the<br />
directry structure and creating a zip archive out of that, which is an easily<br />
automated task. Consumers will get Packages, creators can push and pull repos.<br />
<br />
Neither consumer nor user should have to understand what's actually happening.<br />
<br />
If the user does not already have an account on the shared git repo, they will<br />
be prompted to create one at this point. Some basic oversight will be needed:<br />
basically, just watching what new stuff goes up.<br />
<br />
Eventually, we will want to have a widget browser integrated into Plasmate so<br />
that the user can see what is already available on plasma.kde.org and, with a<br />
click of a button, fork that widget and start working on it locally.<br />
<br />
The required git functionality is therefore pretty basic on the Plasmate side:<br />
<br />
* init a repo (milestone 1)<br />
* add files (milestone 1)<br />
* simple commits (milestone 1)<br />
* change to a different commit, aka "roll back" (milestone 2)<br />
* push (milestone 2)<br />
* diffs (milestone 2)<br />
* pull (milestone 3)<br />
<br />
(what about enabling powerful users to get access to more advanced solutions? hmmm...<br />
obviously we should only do that if it doesn't clutter things for the target audience)<br />
<br />
=== User Actions ===<br />
<br />
Actions will be provided to the user in the work interface through a simple <br />
"see and click" interface that will be more like a toolbar or ribbon than a menu<br />
bar. These actions will include:<br />
<br />
* Save Point<br />
* Roll back (with history graph provided by the Timeline toolbox)<br />
* Publish<br />
* Exit / Leave<br />
<br />
<br />
=== Code Design ===<br />
<br />
Classes:<br />
<br />
* StartPage<br />
* Takes a pointer ot the main window<br />
* Creates the ProjectBox and other default toolboxes for a given action<br />
when selected<br />
<br />
* ProjectBox<br />
* ProjectView tree (maybe just a generic QTreeView?)<br />
* ProjectModel<br />
* based on Plasma::Package<br />
* uses a KDirModel internally to keep sync'd with disk<br />
* Takes a pointer to the main window to load viewers/editors with<br />
* Hosts the revision control object<br />
<br />
* WidgetPreview<br />
* Provides a Corona and View<br />
* Controls for: form factor, location, refresh. Translucent buttons at<br />
the top of the Previewer with those labels? Click on FF or L and a<br />
list of relevant choices will appear as an overlay?<br />
<br />
* Actions<br />
<br />
* Timeline<br />
<br />
* SaveSystem<br />
* Use the git classes from vng?<br />
<br />
* Application<br />
* Creates the main window<br />
* Creates the start page<br />
<br />
=== Art / Design ===<br />
<br />
Artwork and design work required:<br />
<br />
* PlasMate logo: the Plasma logo with some elegant text<br />
* The PlasMate tagline<br />
* The layout of the main page. Qt Creator's take on this is very nice; should feel "webby"<br />
<br />
<br />
=== Todo / Notes ===<br />
<br />
Right now the plasmoid use-case is the most complete. What's possible:<br />
<br />
* Creating projects and importing/exporting projects (to file)<br />
* Editting code and metadata, auto-saving, previewing<br />
* Creating / reverting to save points<br />
* Browsing techbase tutorials and Plasma API references<br />
<br />
The following features are planned but are not yet implemented / do not work yet.<br />
<br />
* Publish to/Import from GHNS (stub UI for publish present)<br />
* Per-project todo-style notes<br />
* Per-project window/dockwidget settings<br />
* QtDesigner integration<br />
* Proper templates/packaging for runners, dataengines and themes(?).<br />
* Previewing for runners, themes(?) and dataengines(?)<br />
* Project deletion from project management dialog.<br />
* Project search/filter for project management dialog.<br />
* Import/Export all projects.<br />
* Show author + version number in project list.</div>Moofanghttps://techbase.kde.org/index.php?title=Projects/Plasma/PlasMate&diff=49138Projects/Plasma/PlasMate2010-02-05T13:27:57Z<p>Moofang: Added simple "todo" for PlasMate</p>
<hr />
<div>== PlasMate ==<br />
<br />
A complete solution for developing Plasma “widgets”, themes, dataengines, ions and krunners. Lowering the bar for contribution to the KDE community.<br />
<br />
<br />
=== First Impressions ===<br />
<br />
On launch the window will contain only a "start page". Logo at the top, tagline<br />
describing what it does right under that (bonus points for an animation when it<br />
appears).<br />
<br />
Beneath that three sets of options: Continue Working On.., Create a New...,<br />
Open An Existing...<br />
<br />
Each of those options will then have a list of clickable links to get started.<br />
<br />
Continue Working On will list the last few projects opened, or be hidden if<br />
there are no recent projects.<br />
<br />
Create A New will include options for Widgets, DataEngine or Theme.<br />
<br />
Open An Existing will provide those as well, but launch a file dialog.<br />
<br />
The intended user experience is "launch, click, work!" No menu bars, no project<br />
workspace by default (like a normal IDE tends to) on first launch.<br />
<br />
Once started, the work flow is: edit, preview, repeat, save point, repeat,<br />
publish ... repeat. ;) <br />
<br />
<br />
=== The Work Interface ===<br />
<br />
The main work interface will be divided into two area: the editor/viewer as the<br />
main widget, and toolboxes to provide workflow.<br />
<br />
The most important toolbox will be the Package Listing. This will be a tree that<br />
shows the contents of a Plasma::PackageStructure. Given that we know from the<br />
PackageStructure the mimetypes, etc, of each entry we can use this to make it<br />
easy to add items.<br />
<br />
Each directory in the listing will have an "Add.." entry, and the <br />
metadata.desktop file will also be listed. Behind the scenes, it will use a<br />
KDirWatch to update based on the filesystem.<br />
<br />
Other toolboxes will include:<br />
<br />
* the Widget previewer: with buttons to set the form factor and location as well<br />
as reload the widget. This way the author can simply preview their widget as<br />
they go, including interction.<br />
<br />
* timeline: save point browser and selector<br />
<br />
* notes/todos: a place for the author to collect their thoughts as they work (<-- very very nice idea)<br />
<br />
* documentation<br />
<br />
* widgets explorer (listing of Plasma::Widgets, links to the doc)<br />
<br />
<br />
=== Editor / Viewer ===<br />
<br />
When an entry is selected in the Package Listing, the selected file will be<br />
shown in the Editor/Viewer. Using KParts for all but a few types of entries will<br />
allow the user to edit code, view SVGs (we probably don't want the user to<br />
view/edit svgs with a kpart. dunno if you remember the application i made some<br />
time ago to help testing themes, but I think that i can integrate that with some<br />
information taken from plasma, like elements that can be themed... this requires<br />
some thinking...), etc. without having to write any appreciable amount of code<br />
ourselves.<br />
<br />
There are some editors that will need to be written from scratch, however. These<br />
include:<br />
<br />
* Metadata: a simple form that lets one fill in the metadata. Plasmagik should<br />
have some code about this.<br />
<br />
* KConfigXt: a form to create KConfigXt files; this will be used for both the<br />
configuration entries in a widget as well as Service .operation files.<br />
<br />
* SVG theme visualizer (look at ruphy's app)<br />
<br />
Integrating Qt Designer would also be a goal at some point. Tricky though,<br />
especially for the code it will generate. Requires further thinking, and not for<br />
the first releases.<br />
<br />
=== Integrated Revision Control, or the Save-less Interface ===<br />
<br />
Integrating a simple git-based revision control system will be critical to<br />
providing both a smooth user experience as well as making publishing and social<br />
interaction possible.<br />
<br />
When creating a new widget, it will be automatically saved into the plasmate<br />
appdata dir and a local git repository started for it. The user will be able to<br />
create Save Points as they go. This will simply do a git commit of all the work<br />
done to this point, adding files that are new, etc. The user will be prompted<br />
for a summary of changes.<br />
<br />
This will allow the user to then "roll back" to any given save point via the<br />
timeline toolbox.<br />
<br />
We will then provide an online git hosting system on plasma.kde.org. (based on<br />
gitorious?) When the user hits "Publish" they will be prompted whether they<br />
would like to create a local package or publish it publicly. If the latter is<br />
chosen, a git push will be done and their work will appear on our shared git<br />
repo. <br />
<br />
The hosting system will create Plasma::Packages out of the git repos for<br />
download; this is simply a matter of getting rid of any git metadata in the<br />
directry structure and creating a zip archive out of that, which is an easily<br />
automated task. Consumers will get Packages, creators can push and pull repos.<br />
<br />
Neither consumer nor user should have to understand what's actually happening.<br />
<br />
If the user does not already have an account on the shared git repo, they will<br />
be prompted to create one at this point. Some basic oversight will be needed:<br />
basically, just watching what new stuff goes up.<br />
<br />
Eventually, we will want to have a widget browser integrated into Plasmate so<br />
that the user can see what is already available on plasma.kde.org and, with a<br />
click of a button, fork that widget and start working on it locally.<br />
<br />
The required git functionality is therefore pretty basic on the Plasmate side:<br />
<br />
* init a repo (milestone 1)<br />
* add files (milestone 1)<br />
* simple commits (milestone 1)<br />
* change to a different commit, aka "roll back" (milestone 2)<br />
* push (milestone 2)<br />
* diffs (milestone 2)<br />
* pull (milestone 3)<br />
<br />
(what about enabling powerful users to get access to more advanced solutions? hmmm...<br />
obviously we should only do that if it doesn't clutter things for the target audience)<br />
<br />
=== User Actions ===<br />
<br />
Actions will be provided to the user in the work interface through a simple <br />
"see and click" interface that will be more like a toolbar or ribbon than a menu<br />
bar. These actions will include:<br />
<br />
* Save Point<br />
* Roll back (with history graph provided by the Timeline toolbox)<br />
* Publish<br />
* Exit / Leave<br />
<br />
<br />
=== Code Design ===<br />
<br />
Classes:<br />
<br />
* StartPage<br />
* Takes a pointer ot the main window<br />
* Creates the ProjectBox and other default toolboxes for a given action<br />
when selected<br />
<br />
* ProjectBox<br />
* ProjectView tree (maybe just a generic QTreeView?)<br />
* ProjectModel<br />
* based on Plasma::Package<br />
* uses a KDirModel internally to keep sync'd with disk<br />
* Takes a pointer to the main window to load viewers/editors with<br />
* Hosts the revision control object<br />
<br />
* WidgetPreview<br />
* Provides a Corona and View<br />
* Controls for: form factor, location, refresh. Translucent buttons at<br />
the top of the Previewer with those labels? Click on FF or L and a<br />
list of relevant choices will appear as an overlay?<br />
<br />
* Actions<br />
<br />
* Timeline<br />
<br />
* SaveSystem<br />
* Use the git classes from vng?<br />
<br />
* Application<br />
* Creates the main window<br />
* Creates the start page<br />
<br />
=== Art / Design ===<br />
<br />
Artwork and design work required:<br />
<br />
* PlasMate logo: the Plasma logo with some elegant text<br />
* The PlasMate tagline<br />
* The layout of the main page. Qt Creator's take on this is very nice; should feel "webby"<br />
<br />
<br />
=== Todo / Notes ===<br />
<br />
The following features are planned but are not yet implemented / do not work yet.<br />
<br />
* Publish to/Import from GHNS (stub UI for publish present)<br />
* Per-project todo-style notes<br />
* Per-project window/dockwidget settings<br />
* QtDesigner integration<br />
* Proper templates/packaging for runners, dataengines and themes(?).<br />
* Previewing for runners, themes(?) and dataengines(?)<br />
* Project deletion from project management dialog.<br />
* Project search/filter for project management dialog.<br />
* Import/Export all projects.<br />
* Show author + version number in project list.</div>Moofang