mirror of
https://github.com/aseprite/aseprite.git
synced 2025-01-15 19:52:05 +00:00
Update about/status bar copyright info
This commit is contained in:
parent
b1b201a22c
commit
32106512dc
12
README.md
12
README.md
@ -50,12 +50,14 @@ You can ask for help in:
|
||||
|
||||
## 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
|
||||
issues, new features, and user support.
|
||||
* [Gaspar Capello](https://github.com/Gasparoken): Developer, fixing
|
||||
issues and new features.
|
||||
* [David Capello](https://davidcapello.com/): Lead developer,
|
||||
bug fixing & new features in desktop & web, and user support.
|
||||
* [Gaspar Capello](https://github.com/Gasparoken): Developer,
|
||||
bug fixing & new features in desktop, and user support.
|
||||
* [Martin Capello](https://github.com/martincapello): Developer,
|
||||
new store website.
|
||||
|
||||
## Credits
|
||||
|
||||
|
@ -1,17 +1,19 @@
|
||||
<!-- Aseprite -->
|
||||
<!-- Copyright (C) 2018-2019 Igara Studio S.A. -->
|
||||
<!-- Copyright (C) 2018-2021 Igara Studio S.A. -->
|
||||
<!-- Copyright (C) 2018 David Capello -->
|
||||
<gui i18nwarnings="false">
|
||||
<window id="about" text="About Aseprite">
|
||||
<vbox>
|
||||
<label text="" id="title" />
|
||||
<label text="Animated sprite editor && pixel art tool" />
|
||||
<separator text="Authors:" horizontal="true" />
|
||||
<separator text="Developers:" horizontal="true" />
|
||||
<grid columns="2">
|
||||
<link text="David Capello" url="https://twitter.com/davidcapello" />
|
||||
<label text="- Lead developer, graphics && maintainer" />
|
||||
<label text="- Lead developer, new features && bug fixing in desktop && web" />
|
||||
<link text="Gaspar Capello" url="https://twitter.com/Gasparoken" />
|
||||
<label text="- Programmer, bug fixing" />
|
||||
<label text="- Developer, new features && 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" />
|
||||
<link text="Ilija Melentijevic" url="https://ilkke.net/" />
|
||||
@ -25,7 +27,7 @@
|
||||
</grid>
|
||||
<separator horizontal="true" />
|
||||
<hbox>
|
||||
<label text="Copyright (C) 2001-2020" />
|
||||
<label text="Copyright (C) 2001-2021" />
|
||||
<link text="Igara Studio S.A." url="https://www.igarastudio.com/" />
|
||||
</hbox>
|
||||
<link text="https://www.aseprite.org/" url="https://www.aseprite.org/" />
|
||||
|
@ -1,5 +1,5 @@
|
||||
// Aseprite
|
||||
// Copyright (C) 2018-2019 Igara Studio S.A.
|
||||
// Copyright (C) 2018-2021 Igara Studio S.A.
|
||||
// Copyright (C) 2016-2017 David Capello
|
||||
//
|
||||
// This program is distributed under the terms of
|
||||
@ -16,6 +16,7 @@
|
||||
#include "app/ui/main_window.h"
|
||||
#include "app/ui/separator_in_view.h"
|
||||
#include "app/ui/skin/skin_theme.h"
|
||||
#include "app/ui/status_bar.h"
|
||||
#include "app/ui/workspace.h"
|
||||
#include "base/file_handle.h"
|
||||
#include "base/fs.h"
|
||||
@ -567,7 +568,8 @@ WorkspaceView* BrowserView::cloneWorkspaceView()
|
||||
|
||||
void BrowserView::onWorkspaceViewSelected()
|
||||
{
|
||||
// Do nothing
|
||||
if (auto statusBar = StatusBar::instance())
|
||||
statusBar->clearText();
|
||||
}
|
||||
|
||||
bool BrowserView::onCloseView(Workspace* workspace, bool quitting)
|
||||
|
@ -1,5 +1,5 @@
|
||||
// Aseprite
|
||||
// Copyright (C) 2018-2020 Igara Studio S.A.
|
||||
// Copyright (C) 2018-2021 Igara Studio S.A.
|
||||
// Copyright (C) 2001-2018 David Capello
|
||||
//
|
||||
// This program is distributed under the terms of
|
||||
@ -241,7 +241,8 @@ WorkspaceView* DocView::cloneWorkspaceView()
|
||||
|
||||
void DocView::onWorkspaceViewSelected()
|
||||
{
|
||||
StatusBar::instance()->showDefaultText(m_document);
|
||||
if (auto statusBar = StatusBar::instance())
|
||||
statusBar->showDefaultText(m_document);
|
||||
}
|
||||
|
||||
void DocView::onClonedFrom(WorkspaceView* from)
|
||||
|
@ -1,5 +1,5 @@
|
||||
// Aseprite
|
||||
// Copyright (C) 2018-2020 Igara Studio S.A.
|
||||
// Copyright (C) 2018-2021 Igara Studio S.A.
|
||||
// Copyright (C) 2001-2018 David Capello
|
||||
//
|
||||
// This program is distributed under the terms of
|
||||
@ -264,9 +264,19 @@ void MainWindow::showHome()
|
||||
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)
|
||||
@ -476,13 +486,13 @@ void MainWindow::onTabsContainerDoubleClicked(Tabs* tabs)
|
||||
void MainWindow::onMouseOverTab(Tabs* tabs, TabView* tabView)
|
||||
{
|
||||
// Note: tabView can be NULL
|
||||
if (DocView* docView = dynamic_cast<DocView*>(tabView)) {
|
||||
if (DocView* docView = dynamic_cast<DocView*>(tabView))
|
||||
m_statusBar->showDefaultText(docView->document());
|
||||
}
|
||||
else {
|
||||
else if (tabView)
|
||||
m_statusBar->setStatusText(0, tabView->getTabText());
|
||||
else
|
||||
m_statusBar->showDefaultText();
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::onMouseLeaveTab()
|
||||
{
|
||||
|
@ -1,5 +1,5 @@
|
||||
// Aseprite
|
||||
// Copyright (C) 2018-2019 Igara Studio S.A.
|
||||
// Copyright (C) 2018-2021 Igara Studio S.A.
|
||||
// Copyright (C) 2001-2018 David Capello
|
||||
//
|
||||
// This program is distributed under the terms of
|
||||
@ -71,9 +71,10 @@ namespace app {
|
||||
void showNotification(INotificationDelegate* del);
|
||||
void showHomeOnOpen();
|
||||
void showHome();
|
||||
bool isHomeSelected();
|
||||
void showDefaultStatusBar();
|
||||
void showDevConsole();
|
||||
void showBrowser(const std::string& filename);
|
||||
bool isHomeSelected() const;
|
||||
|
||||
Mode getMode() const { return m_mode; }
|
||||
void setMode(Mode mode);
|
||||
|
@ -1,5 +1,5 @@
|
||||
// Aseprite
|
||||
// Copyright (C) 2018-2020 Igara Studio S.A.
|
||||
// Copyright (C) 2018-2021 Igara Studio S.A.
|
||||
// Copyright (C) 2001-2018 David Capello
|
||||
//
|
||||
// This program is distributed under the terms of
|
||||
@ -62,6 +62,40 @@ using namespace gfx;
|
||||
using namespace ui;
|
||||
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 Indicator : public Widget {
|
||||
@ -543,6 +577,7 @@ StatusBar* StatusBar::m_instance = NULL;
|
||||
|
||||
StatusBar::StatusBar(TooltipManager* tooltipManager)
|
||||
: m_timeout(0)
|
||||
, m_about(new AboutStatusBar)
|
||||
, m_indicators(new Indicators)
|
||||
, m_docControls(new HBox)
|
||||
, m_tipwindow(nullptr)
|
||||
@ -553,8 +588,12 @@ StatusBar::StatusBar(TooltipManager* tooltipManager)
|
||||
setDoubleBuffered(true);
|
||||
setFocusStop(true);
|
||||
|
||||
m_about->setExpansive(true);
|
||||
m_about->setVisible(true);
|
||||
m_indicators->setExpansive(true);
|
||||
m_indicators->setVisible(false);
|
||||
m_docControls->setVisible(false);
|
||||
addChild(m_about);
|
||||
addChild(m_indicators);
|
||||
addChild(m_docControls);
|
||||
|
||||
@ -609,6 +648,7 @@ void StatusBar::onSelectedToolChange(tools::Tool* tool)
|
||||
|
||||
void StatusBar::clearText()
|
||||
{
|
||||
showIndicators();
|
||||
setStatusText(1, std::string());
|
||||
}
|
||||
|
||||
@ -617,17 +657,12 @@ void StatusBar::clearText()
|
||||
// details of the main window/docs/etc.
|
||||
void StatusBar::showDefaultText()
|
||||
{
|
||||
if (current_editor) {
|
||||
showDefaultText(current_editor->document());
|
||||
}
|
||||
else if (App::instance()->mainWindow()->isHomeSelected()) {
|
||||
setStatusText(0, fmt::format("-- {} {} by David & Gaspar Capello -- Igara Studio --",
|
||||
get_app_name(), get_app_version()));
|
||||
}
|
||||
else {
|
||||
auto mainWindow = (App::instance() ? App::instance()->mainWindow(): nullptr);
|
||||
if (mainWindow)
|
||||
mainWindow->showDefaultStatusBar();
|
||||
else
|
||||
clearText();
|
||||
}
|
||||
}
|
||||
|
||||
void StatusBar::showDefaultText(Doc* doc)
|
||||
{
|
||||
@ -653,18 +688,22 @@ void StatusBar::showDefaultText(Doc* doc)
|
||||
|
||||
void StatusBar::updateFromEditor(Editor* editor)
|
||||
{
|
||||
if (editor)
|
||||
if (editor) {
|
||||
showIndicators();
|
||||
m_zoomEntry->setZoom(editor->zoom());
|
||||
}
|
||||
}
|
||||
|
||||
void StatusBar::showBackupIcon(BackupIcon icon)
|
||||
{
|
||||
showIndicators();
|
||||
m_indicators->showBackupIcon(icon);
|
||||
}
|
||||
|
||||
bool StatusBar::setStatusText(int msecs, const std::string& msg)
|
||||
{
|
||||
if ((base::current_tick() > m_timeout) || (msecs > 0)) {
|
||||
showIndicators();
|
||||
IndicatorsGeneration(m_indicators).add(msg.c_str());
|
||||
m_timeout = base::current_tick() + msecs;
|
||||
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)
|
||||
{
|
||||
if ((base::current_tick() > m_timeout) || (msecs > 0)) {
|
||||
showIndicators();
|
||||
IndicatorsGeneration gen(m_indicators);
|
||||
gen.add(color);
|
||||
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)
|
||||
{
|
||||
ASSERT(tool != NULL);
|
||||
showIndicators();
|
||||
|
||||
ASSERT(tool != nullptr);
|
||||
IndicatorsGeneration(m_indicators).add(tool);
|
||||
|
||||
m_timeout = base::current_tick() + msecs;
|
||||
@ -843,4 +885,22 @@ void StatusBar::updateSnapToGridWindowPosition()
|
||||
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
|
||||
|
@ -1,5 +1,5 @@
|
||||
// Aseprite
|
||||
// Copyright (C) 2018-2020 Igara Studio S.A.
|
||||
// Copyright (C) 2018-2021 Igara Studio S.A.
|
||||
// Copyright (C) 2001-2018 David Capello
|
||||
//
|
||||
// This program is distributed under the terms of
|
||||
@ -55,7 +55,8 @@ namespace app {
|
||||
|
||||
void clearText();
|
||||
void showDefaultText();
|
||||
void showDefaultText(Doc* document);
|
||||
void showDefaultText(Doc* doc);
|
||||
void showAbout();
|
||||
|
||||
bool setStatusText(int msecs, const std::string& text);
|
||||
void showTip(int msecs, const std::string& msg);
|
||||
@ -86,9 +87,14 @@ namespace app {
|
||||
void newFrame();
|
||||
void onChangeZoom(const render::Zoom& zoom);
|
||||
void updateSnapToGridWindowPosition();
|
||||
void showIndicators();
|
||||
|
||||
base::tick_t m_timeout;
|
||||
|
||||
// About text
|
||||
class AboutStatusBar;
|
||||
AboutStatusBar* m_about;
|
||||
|
||||
// Indicators
|
||||
class Indicators;
|
||||
class IndicatorsGeneration;
|
||||
|
@ -1,5 +1,5 @@
|
||||
// Aseprite
|
||||
// Copyright (C) 2019-2020 Igara Studio S.A.
|
||||
// Copyright (C) 2019-2021 Igara Studio S.A.
|
||||
// Copyright (C) 2001-2018 David Capello
|
||||
//
|
||||
// This program is distributed under the terms of
|
||||
@ -100,16 +100,17 @@ void UIContext::setActiveView(DocView* docView)
|
||||
return;
|
||||
|
||||
if (docView) {
|
||||
current_editor = docView->editor();
|
||||
mainWin->getTabsBar()->selectTab(docView);
|
||||
|
||||
if (mainWin->getWorkspace()->activeView() != docView)
|
||||
mainWin->getWorkspace()->setActiveView(docView);
|
||||
}
|
||||
|
||||
current_editor = (docView ? docView->editor(): nullptr);
|
||||
|
||||
if (current_editor)
|
||||
current_editor->requestFocus();
|
||||
}
|
||||
else
|
||||
current_editor = nullptr;
|
||||
|
||||
mainWin->getPreviewEditor()->updateUsingEditor(current_editor);
|
||||
mainWin->getTimeline()->updateUsingEditor(current_editor);
|
||||
|
@ -23,7 +23,7 @@ BEGIN
|
||||
VALUE "FileDescription", "Aseprite - Animated sprites editor & pixel art tool"
|
||||
VALUE "FileVersion", "1,3,0,0"
|
||||
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 "ProductName", "ASEPRITE"
|
||||
VALUE "ProductVersion", "1,3,0,0"
|
||||
|
Loading…
Reference in New Issue
Block a user