A layered image editor for Linux and Omarchy, ported from Compositor (github.com/robbietilton/Compositor), whose Swift source is its specification. It reads and writes Compositor's .comp projects. Packages for Ubuntu, Fedora and Arch come from the release workflow; scripts/install/ holds one install script per distribution family, and flake.nix serves NixOS. Co-Authored-By: Claude <noreply@anthropic.com>
35 lines
954 B
C++
35 lines
954 B
C++
#pragma once
|
|
#include "Document/EditorSession.h"
|
|
#include <QLabel>
|
|
#include <QLineEdit>
|
|
#include <QMimeData>
|
|
#include <QPushButton>
|
|
#include <QWidget>
|
|
#include <functional>
|
|
|
|
// The welcome: a new canvas, a project or an image.
|
|
class NewCanvasSheet : public QWidget {
|
|
Q_OBJECT
|
|
public:
|
|
NewCanvasSheet(EditorSession &session, std::function<void(int, int)> onCreate, std::function<void()> onOpen, QWidget *parent = nullptr);
|
|
|
|
// A copied picture's size, read from its header alone.
|
|
static std::optional<QSize> clipboardDimensions(const QMimeData *clipboard);
|
|
|
|
protected:
|
|
void showEvent(QShowEvent *event) override;
|
|
|
|
private:
|
|
void synchronize();
|
|
void validate();
|
|
void create();
|
|
|
|
EditorSession &m_session;
|
|
const std::function<void(int, int)> m_onCreate;
|
|
QLineEdit *const m_width;
|
|
QLineEdit *const m_height;
|
|
QLabel *const m_note;
|
|
QPushButton *const m_create;
|
|
bool m_suggestedClipboardSize = false;
|
|
};
|