diff --git a/README.md b/README.md
index be5b8f2cc..f6fa46f08 100644
--- a/README.md
+++ b/README.md
@@ -49,21 +49,15 @@ You can ask for help in:
## Authors
-* David Capello [davidcapello@gmail.com](mailto:davidcapello@gmail.com)
- Programmer, designer, and maintainer.
- http://davidcapello.com/
-* Ilija Melentijevic
- New GUI skin for Aseprite v0.8. A lot of good ideas.
- http://ilkke.blogspot.com/
- http://www.pixeljoint.com/p/9270.htm
-* Contributors
- http://www.aseprite.org/contributors/
-
-Thanks to all the people who have contributed ideas, patches, bugs
-report, feature requests, donations, and help me developing Aseprite.
+* [David Capello](https://github.com/dacap): Lead developer, bug fixing, new features, designer, and maintainer.
+* [Gaspar Capello](https://github.com/Gasparoken): Developer, bug fixing.
## Credits
+The default Aseprite theme was introduced in v0.8, created by:
+
+* [Ilija Melentijevic](https://twitter.com/ilkkke)
+
Aseprite includes color palettes created by:
* [Richard "DawnBringer" Fhager](http://pixeljoint.com/p/23821.htm), [16 colors](http://pixeljoint.com/forum/forum_posts.asp?TID=12795), [32 colors](http://pixeljoint.com/forum/forum_posts.asp?TID=16247).
@@ -72,13 +66,18 @@ Aseprite includes color palettes created by:
* [Hyohnoo Games](https://twitter.com/Hyohnoo), [mail24](https://twitter.com/Hyohnoo/status/797472587974639616) palette.
* [Davit Masia](https://twitter.com/DavitMasia), [matriax8c](https://twitter.com/DavitMasia/status/834862452164612096) palette.
* [Javier Guerrero](https://twitter.com/Xavier_Gd), [nyx8](https://twitter.com/Xavier_Gd/status/868519467864686594) palette.
+* [Adigun A. Polack](https://twitter.com/adigunpolack), [AAP-64](http://pixeljoint.com/pixelart/119466.htm), [AAP-Splendor128](http://pixeljoint.com/pixelart/120714.htm), [SimpleJPC-16](http://pixeljoint.com/pixelart/119844.htm), and [AAP-Micro12](http://pixeljoint.com/pixelart/121151.htm) palette.
+* [PineTreePizza](https://twitter.com/PineTreePizza), [Rosy-42](https://twitter.com/PineTreePizza/status/1006536191955623938) palette
It tries to replicate some pixel-art algorithms:
* [RotSprite](http://forums.sonicretro.org/index.php?showtopic=8848&st=15&p=159754entry159754) by Xenowhirl.
* [Pixel perfect drawing algorithm](http://deepnight.net/pixel-perfect-drawing/) by [Sébastien Bénard](https://twitter.com/deepnightfr) and [Carduus](https://twitter.com/CarduusHimself/status/420554200737935361).
-Aseprite uses [several third-party open source projects](docs/LICENSES.md).
+Thanks to [third-party open source projects](docs/LICENSES.md), to
+[contributors](http://www.aseprite.org/contributors/), and all the
+people who have contributed ideas, patches, bugs report, feature
+requests, donations, and help me to develop Aseprite.
## License
diff --git a/data/widgets/about.xml b/data/widgets/about.xml
new file mode 100644
index 000000000..41c2d3108
--- /dev/null
+++ b/data/widgets/about.xml
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/app/commands/cmd_about.cpp b/src/app/commands/cmd_about.cpp
index b388cb062..349f7fa17 100644
--- a/src/app/commands/cmd_about.cpp
+++ b/src/app/commands/cmd_about.cpp
@@ -1,5 +1,5 @@
// Aseprite
-// Copyright (C) 2001-2017 David Capello
+// Copyright (C) 2001-2018 David Capello
//
// This program is distributed under the terms of
// the End-User License Agreement for Aseprite.
@@ -13,7 +13,8 @@
#include "app/modules/gui.h"
#include "app/ui/main_window.h"
#include "base/bind.h"
-#include "ui/ui.h"
+
+#include "about.xml.h"
namespace app {
@@ -35,75 +36,14 @@ AboutCommand::AboutCommand()
void AboutCommand::onExecute(Context* context)
{
- base::UniquePtr window(new Window(Window::WithTitleBar, "About " PACKAGE));
- auto box1 = new Box(VERTICAL);
- auto grid = new Grid(2, false);
- auto title = new Label(PACKAGE " v" VERSION);
- auto subtitle = new Label("Animated sprite editor & pixel art tool");
- auto authors_separator1 = new Separator("Authors:", HORIZONTAL | TOP);
- auto authors_separator2 = new Separator("", HORIZONTAL);
- auto author1 = new LinkLabel("http://davidcapello.com/", "David Capello");
- auto author1_desc = new Label("- Lead developer, graphics & maintainer");
- auto author2 = new LinkLabel("http://ilkke.blogspot.com/", "Ilija Melentijevic");
- auto author2_desc = new Label("- Default skin & graphics introduced in v0.8");
- auto author3 = new LinkLabel(WEBSITE_CONTRIBUTORS, "Contributors");
- auto author4 = new Label("and");
- auto author5 = new LinkLabel("", "Open Source Projects");
- auto author3_line = new Box(HORIZONTAL);
- auto bottom_box1 = new Box(HORIZONTAL);
- auto bottom_box2 = new Box(HORIZONTAL);
- auto bottom_box3 = new Box(HORIZONTAL);
- auto copyright = new Label(COPYRIGHT);
- auto website = new LinkLabel(WEBSITE);
- auto close_button = new Button("&Close");
-
- grid->addChildInCell(title, 2, 1, 0);
- grid->addChildInCell(subtitle, 2, 1, 0);
- grid->addChildInCell(authors_separator1, 2, 1, 0);
- grid->addChildInCell(author1, 1, 1, 0);
- grid->addChildInCell(author1_desc, 1, 1, 0);
- grid->addChildInCell(author2, 1, 1, 0);
- grid->addChildInCell(author2_desc, 1, 1, 0);
- grid->addChildInCell(author3_line, 2, 1, 0);
- grid->addChildInCell(authors_separator2, 2, 1, 0);
- grid->addChildInCell(copyright, 2, 1, 0);
- grid->addChildInCell(website, 2, 1, 0);
- grid->addChildInCell(bottom_box1, 2, 1, 0);
-
- close_button->processMnemonicFromText();
- close_button->setFocusMagnet(true);
- close_button->setMinSize(gfx::Size(60*guiscale(), 0));
-
- author3_line->addChild(author3);
- author3_line->addChild(author4);
- author3_line->addChild(author5);
-
- bottom_box2->setExpansive(true);
- bottom_box3->setExpansive(true);
-
- bottom_box1->addChild(bottom_box2);
- bottom_box1->addChild(close_button);
- bottom_box1->addChild(bottom_box3);
-
- box1->addChild(grid);
- window->addChild(box1);
-
- close_button->setBorder(
- gfx::Border(
- close_button->border().left() + 16*guiscale(),
- close_button->border().top(),
- close_button->border().right() + 16*guiscale(),
- close_button->border().bottom()));
-
- close_button->Click.connect(base::Bind(&Window::closeWindow, window.get(), close_button));
-
- author5->Click.connect(
+ gen::About window;
+ window.title()->setText(PACKAGE " v" VERSION);
+ window.licenses()->Click.connect(
[&window]{
- window->closeWindow(nullptr);
+ window.closeWindow(nullptr);
App::instance()->mainWindow()->showBrowser("docs/LICENSES.md");
});
-
- window->openWindowInForeground();
+ window.openWindowInForeground();
}
Command* CommandFactory::createAboutCommand()