Update about/status bar copyright info

This commit is contained in:
David Capello 2021-01-15 14:46:45 -03:00
parent b1b201a22c
commit 32106512dc
10 changed files with 130 additions and 45 deletions

View File

@ -50,12 +50,14 @@ You can ask for help in:
## Authors ## Authors
[Igara Studio](https://www.igarastudio.com/) is developing Aseprite: Aseprite is being developed by [Igara Studio](https://www.igarastudio.com/):
* [David Capello](https://davidcapello.com/): Lead developer, fixing * [David Capello](https://davidcapello.com/): Lead developer,
issues, new features, and user support. bug fixing & new features in desktop & web, and user support.
* [Gaspar Capello](https://github.com/Gasparoken): Developer, fixing * [Gaspar Capello](https://github.com/Gasparoken): Developer,
issues and new features. bug fixing & new features in desktop, and user support.
* [Martin Capello](https://github.com/martincapello): Developer,
new store website.
## Credits ## Credits

View File

@ -1,31 +1,33 @@
<!-- Aseprite --> <!-- Aseprite -->
<!-- Copyright (C) 2018-2019 Igara Studio S.A. --> <!-- Copyright (C) 2018-2021 Igara Studio S.A. -->
<!-- Copyright (C) 2018 David Capello --> <!-- Copyright (C) 2018 David Capello -->
<gui i18nwarnings="false"> <gui i18nwarnings="false">
<window id="about" text="About Aseprite"> <window id="about" text="About Aseprite">
<vbox> <vbox>
<label text="" id="title" /> <label text="" id="title" />
<label text="Animated sprite editor &amp;&amp; pixel art tool" /> <label text="Animated sprite editor &amp;&amp; pixel art tool" />
<separator text="Authors:" horizontal="true" /> <separator text="Developers:" horizontal="true" />
<grid columns="2"> <grid columns="2">
<link text="David Capello" url="https://twitter.com/davidcapello" /> <link text="David Capello" url="https://twitter.com/davidcapello" />
<label text="- Lead developer, graphics &amp;&amp; maintainer" /> <label text="- Lead developer, new features &amp;&amp; bug fixing in desktop &amp;&amp; web" />
<link text="Gaspar Capello" url="https://twitter.com/Gasparoken" /> <link text="Gaspar Capello" url="https://twitter.com/Gasparoken" />
<label text="- Programmer, bug fixing" /> <label text="- Developer, new features &amp;&amp; bug fixing in desktop" />
<link text="Martin Capello" url="https://twitter.com/martincapell0" />
<label text="- Developer, new store website" />
<separator text="Contributors:" horizontal="true" cell_hspan="2" /> <separator text="Contributors:" horizontal="true" cell_hspan="2" />
<link text="Ilija Melentijevic" url="https://ilkke.net/" /> <link text="Ilija Melentijevic" url="https://ilkke.net/" />
<label text="- Default skin &amp;&amp; graphics introduced in v0.8" /> <label text="- Default skin &amp;&amp; graphics introduced in v0.8" />
<hbox cell_hspan="2"> <hbox cell_hspan="2">
<link text="Other Contributors" url="https://www.aseprite.org/contributors/" /> <link text="Other Contributors" url="https://www.aseprite.org/contributors/" />
<label text="&amp;&amp;" /> <label text="&amp;&amp;" />
<link text="Third-Party Projects" url="" id="licenses" /> <link text="Third-Party Projects" url="" id="licenses" />
</hbox> </hbox>
</grid> </grid>
<separator horizontal="true" /> <separator horizontal="true" />
<hbox> <hbox>
<label text="Copyright (C) 2001-2020" /> <label text="Copyright (C) 2001-2021" />
<link text="Igara Studio S.A." url="https://www.igarastudio.com/" /> <link text="Igara Studio S.A." url="https://www.igarastudio.com/" />
</hbox> </hbox>
<link text="https://www.aseprite.org/" url="https://www.aseprite.org/" /> <link text="https://www.aseprite.org/" url="https://www.aseprite.org/" />

View File

@ -1,5 +1,5 @@
// Aseprite // Aseprite
// Copyright (C) 2018-2019 Igara Studio S.A. // Copyright (C) 2018-2021 Igara Studio S.A.
// Copyright (C) 2016-2017 David Capello // Copyright (C) 2016-2017 David Capello
// //
// This program is distributed under the terms of // This program is distributed under the terms of
@ -16,6 +16,7 @@
#include "app/ui/main_window.h" #include "app/ui/main_window.h"
#include "app/ui/separator_in_view.h" #include "app/ui/separator_in_view.h"
#include "app/ui/skin/skin_theme.h" #include "app/ui/skin/skin_theme.h"
#include "app/ui/status_bar.h"
#include "app/ui/workspace.h" #include "app/ui/workspace.h"
#include "base/file_handle.h" #include "base/file_handle.h"
#include "base/fs.h" #include "base/fs.h"
@ -567,7 +568,8 @@ WorkspaceView* BrowserView::cloneWorkspaceView()
void BrowserView::onWorkspaceViewSelected() void BrowserView::onWorkspaceViewSelected()
{ {
// Do nothing if (auto statusBar = StatusBar::instance())
statusBar->clearText();
} }
bool BrowserView::onCloseView(Workspace* workspace, bool quitting) bool BrowserView::onCloseView(Workspace* workspace, bool quitting)

View File

@ -1,5 +1,5 @@
// Aseprite // Aseprite
// Copyright (C) 2018-2020 Igara Studio S.A. // Copyright (C) 2018-2021 Igara Studio S.A.
// Copyright (C) 2001-2018 David Capello // Copyright (C) 2001-2018 David Capello
// //
// This program is distributed under the terms of // This program is distributed under the terms of
@ -241,7 +241,8 @@ WorkspaceView* DocView::cloneWorkspaceView()
void DocView::onWorkspaceViewSelected() void DocView::onWorkspaceViewSelected()
{ {
StatusBar::instance()->showDefaultText(m_document); if (auto statusBar = StatusBar::instance())
statusBar->showDefaultText(m_document);
} }
void DocView::onClonedFrom(WorkspaceView* from) void DocView::onClonedFrom(WorkspaceView* from)

View File

@ -1,5 +1,5 @@
// Aseprite // Aseprite
// Copyright (C) 2018-2020 Igara Studio S.A. // Copyright (C) 2018-2021 Igara Studio S.A.
// Copyright (C) 2001-2018 David Capello // Copyright (C) 2001-2018 David Capello
// //
// This program is distributed under the terms of // This program is distributed under the terms of
@ -264,9 +264,19 @@ void MainWindow::showHome()
m_tabsBar->selectTab(m_homeView); m_tabsBar->selectTab(m_homeView);
} }
bool MainWindow::isHomeSelected() void MainWindow::showDefaultStatusBar()
{ {
return (m_tabsBar->getSelectedTab() == m_homeView && m_homeView); if (DocView* docView = getDocView())
m_statusBar->showDefaultText(docView->document());
else if (isHomeSelected())
m_statusBar->showAbout();
else
m_statusBar->clearText();
}
bool MainWindow::isHomeSelected() const
{
return (m_homeView && m_workspace->activeView() == m_homeView);
} }
void MainWindow::showBrowser(const std::string& filename) void MainWindow::showBrowser(const std::string& filename)
@ -476,12 +486,12 @@ void MainWindow::onTabsContainerDoubleClicked(Tabs* tabs)
void MainWindow::onMouseOverTab(Tabs* tabs, TabView* tabView) void MainWindow::onMouseOverTab(Tabs* tabs, TabView* tabView)
{ {
// Note: tabView can be NULL // Note: tabView can be NULL
if (DocView* docView = dynamic_cast<DocView*>(tabView)) { if (DocView* docView = dynamic_cast<DocView*>(tabView))
m_statusBar->showDefaultText(docView->document()); m_statusBar->showDefaultText(docView->document());
} else if (tabView)
else { m_statusBar->setStatusText(0, tabView->getTabText());
else
m_statusBar->showDefaultText(); m_statusBar->showDefaultText();
}
} }
void MainWindow::onMouseLeaveTab() void MainWindow::onMouseLeaveTab()

View File

@ -1,5 +1,5 @@
// Aseprite // Aseprite
// Copyright (C) 2018-2019 Igara Studio S.A. // Copyright (C) 2018-2021 Igara Studio S.A.
// Copyright (C) 2001-2018 David Capello // Copyright (C) 2001-2018 David Capello
// //
// This program is distributed under the terms of // This program is distributed under the terms of
@ -71,9 +71,10 @@ namespace app {
void showNotification(INotificationDelegate* del); void showNotification(INotificationDelegate* del);
void showHomeOnOpen(); void showHomeOnOpen();
void showHome(); void showHome();
bool isHomeSelected(); void showDefaultStatusBar();
void showDevConsole(); void showDevConsole();
void showBrowser(const std::string& filename); void showBrowser(const std::string& filename);
bool isHomeSelected() const;
Mode getMode() const { return m_mode; } Mode getMode() const { return m_mode; }
void setMode(Mode mode); void setMode(Mode mode);

View File

@ -1,5 +1,5 @@
// Aseprite // Aseprite
// Copyright (C) 2018-2020 Igara Studio S.A. // Copyright (C) 2018-2021 Igara Studio S.A.
// Copyright (C) 2001-2018 David Capello // Copyright (C) 2001-2018 David Capello
// //
// This program is distributed under the terms of // This program is distributed under the terms of
@ -62,6 +62,40 @@ using namespace gfx;
using namespace ui; using namespace ui;
using namespace doc; using namespace doc;
class StatusBar::AboutStatusBar : public HBox {
public:
AboutStatusBar()
: m_label(fmt::format("{} {} by ", get_app_name(), get_app_version()))
, m_link("", "Igara Studio")
{
m_link.Click.connect(
[]{
Command* cmd = Commands::instance()->byId(CommandId::About());
UIContext::instance()->executeCommandFromMenuOrShortcut(cmd);
});
addChild(new BoxFiller);
addChild(&m_label);
addChild(&m_link);
addChild(new BoxFiller);
InitTheme.connect(
[this]{
SkinTheme* theme = static_cast<SkinTheme*>(this->theme());
ui::Style* style = theme->styles.workspaceLink();
noBorderNoChildSpacing();
m_label.setStyle(style);
m_link.setStyle(style);
m_label.noBorderNoChildSpacing();
m_link.noBorderNoChildSpacing();
});
initTheme();
}
ui::Label m_label;
ui::LinkLabel m_link;
};
class StatusBar::Indicators : public HBox { class StatusBar::Indicators : public HBox {
class Indicator : public Widget { class Indicator : public Widget {
@ -543,6 +577,7 @@ StatusBar* StatusBar::m_instance = NULL;
StatusBar::StatusBar(TooltipManager* tooltipManager) StatusBar::StatusBar(TooltipManager* tooltipManager)
: m_timeout(0) : m_timeout(0)
, m_about(new AboutStatusBar)
, m_indicators(new Indicators) , m_indicators(new Indicators)
, m_docControls(new HBox) , m_docControls(new HBox)
, m_tipwindow(nullptr) , m_tipwindow(nullptr)
@ -553,8 +588,12 @@ StatusBar::StatusBar(TooltipManager* tooltipManager)
setDoubleBuffered(true); setDoubleBuffered(true);
setFocusStop(true); setFocusStop(true);
m_about->setExpansive(true);
m_about->setVisible(true);
m_indicators->setExpansive(true); m_indicators->setExpansive(true);
m_indicators->setVisible(false);
m_docControls->setVisible(false); m_docControls->setVisible(false);
addChild(m_about);
addChild(m_indicators); addChild(m_indicators);
addChild(m_docControls); addChild(m_docControls);
@ -609,6 +648,7 @@ void StatusBar::onSelectedToolChange(tools::Tool* tool)
void StatusBar::clearText() void StatusBar::clearText()
{ {
showIndicators();
setStatusText(1, std::string()); setStatusText(1, std::string());
} }
@ -617,16 +657,11 @@ void StatusBar::clearText()
// details of the main window/docs/etc. // details of the main window/docs/etc.
void StatusBar::showDefaultText() void StatusBar::showDefaultText()
{ {
if (current_editor) { auto mainWindow = (App::instance() ? App::instance()->mainWindow(): nullptr);
showDefaultText(current_editor->document()); if (mainWindow)
} mainWindow->showDefaultStatusBar();
else if (App::instance()->mainWindow()->isHomeSelected()) { else
setStatusText(0, fmt::format("-- {} {} by David & Gaspar Capello -- Igara Studio --",
get_app_name(), get_app_version()));
}
else {
clearText(); clearText();
}
} }
void StatusBar::showDefaultText(Doc* doc) void StatusBar::showDefaultText(Doc* doc)
@ -653,18 +688,22 @@ void StatusBar::showDefaultText(Doc* doc)
void StatusBar::updateFromEditor(Editor* editor) void StatusBar::updateFromEditor(Editor* editor)
{ {
if (editor) if (editor) {
showIndicators();
m_zoomEntry->setZoom(editor->zoom()); m_zoomEntry->setZoom(editor->zoom());
}
} }
void StatusBar::showBackupIcon(BackupIcon icon) void StatusBar::showBackupIcon(BackupIcon icon)
{ {
showIndicators();
m_indicators->showBackupIcon(icon); m_indicators->showBackupIcon(icon);
} }
bool StatusBar::setStatusText(int msecs, const std::string& msg) bool StatusBar::setStatusText(int msecs, const std::string& msg)
{ {
if ((base::current_tick() > m_timeout) || (msecs > 0)) { if ((base::current_tick() > m_timeout) || (msecs > 0)) {
showIndicators();
IndicatorsGeneration(m_indicators).add(msg.c_str()); IndicatorsGeneration(m_indicators).add(msg.c_str());
m_timeout = base::current_tick() + msecs; m_timeout = base::current_tick() + msecs;
return true; return true;
@ -704,6 +743,7 @@ void StatusBar::showTip(int msecs, const std::string& msg)
void StatusBar::showColor(int msecs, const char* text, const app::Color& color) void StatusBar::showColor(int msecs, const char* text, const app::Color& color)
{ {
if ((base::current_tick() > m_timeout) || (msecs > 0)) { if ((base::current_tick() > m_timeout) || (msecs > 0)) {
showIndicators();
IndicatorsGeneration gen(m_indicators); IndicatorsGeneration gen(m_indicators);
gen.add(color); gen.add(color);
if (text) if (text)
@ -715,7 +755,9 @@ void StatusBar::showColor(int msecs, const char* text, const app::Color& color)
void StatusBar::showTool(int msecs, tools::Tool* tool) void StatusBar::showTool(int msecs, tools::Tool* tool)
{ {
ASSERT(tool != NULL); showIndicators();
ASSERT(tool != nullptr);
IndicatorsGeneration(m_indicators).add(tool); IndicatorsGeneration(m_indicators).add(tool);
m_timeout = base::current_tick() + msecs; m_timeout = base::current_tick() + msecs;
@ -843,4 +885,22 @@ void StatusBar::updateSnapToGridWindowPosition()
rc.y-m_snapToGridWindow->bounds().h); rc.y-m_snapToGridWindow->bounds().h);
} }
void StatusBar::showAbout()
{
if (!m_about->isVisible()) {
m_indicators->setVisible(false);
m_about->setVisible(true);
m_about->layout();
}
}
void StatusBar::showIndicators()
{
if (!m_indicators->isVisible()) {
m_about->setVisible(false);
m_indicators->setVisible(true);
m_indicators->layout();
}
}
} // namespace app } // namespace app

View File

@ -1,5 +1,5 @@
// Aseprite // Aseprite
// Copyright (C) 2018-2020 Igara Studio S.A. // Copyright (C) 2018-2021 Igara Studio S.A.
// Copyright (C) 2001-2018 David Capello // Copyright (C) 2001-2018 David Capello
// //
// This program is distributed under the terms of // This program is distributed under the terms of
@ -55,7 +55,8 @@ namespace app {
void clearText(); void clearText();
void showDefaultText(); void showDefaultText();
void showDefaultText(Doc* document); void showDefaultText(Doc* doc);
void showAbout();
bool setStatusText(int msecs, const std::string& text); bool setStatusText(int msecs, const std::string& text);
void showTip(int msecs, const std::string& msg); void showTip(int msecs, const std::string& msg);
@ -86,9 +87,14 @@ namespace app {
void newFrame(); void newFrame();
void onChangeZoom(const render::Zoom& zoom); void onChangeZoom(const render::Zoom& zoom);
void updateSnapToGridWindowPosition(); void updateSnapToGridWindowPosition();
void showIndicators();
base::tick_t m_timeout; base::tick_t m_timeout;
// About text
class AboutStatusBar;
AboutStatusBar* m_about;
// Indicators // Indicators
class Indicators; class Indicators;
class IndicatorsGeneration; class IndicatorsGeneration;

View File

@ -1,5 +1,5 @@
// Aseprite // Aseprite
// Copyright (C) 2019-2020 Igara Studio S.A. // Copyright (C) 2019-2021 Igara Studio S.A.
// Copyright (C) 2001-2018 David Capello // Copyright (C) 2001-2018 David Capello
// //
// This program is distributed under the terms of // This program is distributed under the terms of
@ -100,16 +100,17 @@ void UIContext::setActiveView(DocView* docView)
return; return;
if (docView) { if (docView) {
current_editor = docView->editor();
mainWin->getTabsBar()->selectTab(docView); mainWin->getTabsBar()->selectTab(docView);
if (mainWin->getWorkspace()->activeView() != docView) if (mainWin->getWorkspace()->activeView() != docView)
mainWin->getWorkspace()->setActiveView(docView); mainWin->getWorkspace()->setActiveView(docView);
if (current_editor)
current_editor->requestFocus();
} }
else
current_editor = (docView ? docView->editor(): nullptr); current_editor = nullptr;
if (current_editor)
current_editor->requestFocus();
mainWin->getPreviewEditor()->updateUsingEditor(current_editor); mainWin->getPreviewEditor()->updateUsingEditor(current_editor);
mainWin->getTimeline()->updateUsingEditor(current_editor); mainWin->getTimeline()->updateUsingEditor(current_editor);

View File

@ -23,7 +23,7 @@ BEGIN
VALUE "FileDescription", "Aseprite - Animated sprites editor & pixel art tool" VALUE "FileDescription", "Aseprite - Animated sprites editor & pixel art tool"
VALUE "FileVersion", "1,3,0,0" VALUE "FileVersion", "1,3,0,0"
VALUE "InternalName", "aseprite" VALUE "InternalName", "aseprite"
VALUE "LegalCopyright", "Copyright (C) 2001-2020 Igara Studio S.A." VALUE "LegalCopyright", "Copyright (C) 2001-2021 Igara Studio S.A."
VALUE "OriginalFilename", "aseprite.exe" VALUE "OriginalFilename", "aseprite.exe"
VALUE "ProductName", "ASEPRITE" VALUE "ProductName", "ASEPRITE"
VALUE "ProductVersion", "1,3,0,0" VALUE "ProductVersion", "1,3,0,0"