/*
Copyright 2006-2026 The QElectroTech Team
This file is part of QElectroTech.
QElectroTech is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
QElectroTech is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with QElectroTech. If not, see .
*/
#ifndef BORDERPROPERTIESWIDGET_H
#define BORDERPROPERTIESWIDGET_H
#include "../borderproperties.h"
#include
namespace Ui {
class BorderPropertiesWidget;
}
/**
@brief The BorderPropertiesWidget class
this widget edit the properties of a border
*/
class BorderPropertiesWidget : public QWidget
{
Q_OBJECT
public:
explicit BorderPropertiesWidget(const BorderProperties &bp, QWidget *parent = nullptr);
~BorderPropertiesWidget() override;
void setProperties(const BorderProperties &bp);
const BorderProperties &properties();
void setReadOnly (const bool &ro);
void setTitleBlockSize(int height, Qt::Edge edge);
private:
void applyPaperSize();
void showMatchingPaperSize();
bool fitPaperSize(int index, bool landscape,
int &columns, int &column_width,
int &rows, int &row_height) const;
Ui::BorderPropertiesWidget *ui;
BorderProperties m_properties;
/// height of the title block the folio is drawn with, and
/// the edge it sits on: it counts in the size of the page
int m_titleblock_height = 0;
Qt::Edge m_titleblock_edge = Qt::BottomEdge;
/// true while the widget itself changes the spin boxes
bool m_updating = false;
/// true once the user picked a paper size, until the columns or
/// rows are edited by hand
bool m_paper_picked = false;
};
#endif // BORDERPROPERTIESWIDGET_H