Skip to content

Commit

Permalink
fix: 合并1051功能并修改最小尺寸
Browse files Browse the repository at this point in the history
合并1051功能并修改最小尺寸

Log: 合并1051功能并修改最小尺寸
Change-Id: Id05d31f5c4e97faf9d0792e84d0edce3f907a9a0
  • Loading branch information
tanl123 committed May 10, 2022
1 parent 7537944 commit d819245
Show file tree
Hide file tree
Showing 69 changed files with 4,786 additions and 5,597 deletions.
Original file line number Diff line number Diff line change
@@ -1,12 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="gl_ES">
<?xml version="1.0" ?><!DOCTYPE TS><TS language="gl_ES" sourcelanguage="en_US" version="2.1">
<context>
<name>CEraser</name>
<message>
<location filename="../ceraser.cpp" line="18"/>
<source>eraser</source>
<translation type="unfinished"></translation>
<source>Eraser</source>
<translation>Borrador</translation>
</message>
</context>
</TS>
2 changes: 1 addition & 1 deletion deepin-draw.desktop
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ GenericName[zh_CN]=画板
GenericName[zh_HK]=畫板
GenericName[zh_TW]=畫板
Icon=deepin-draw
MimeType=image/bmp;image/bmp24;image/ico;image/jpg;image/jpe;image/jpeg;image/jpeg24;image/jng;image/pcd;image/pcx;image/png;image/tga;image/tif;image/tiff;image/tiff24;image/psd;image/xpm;image/dds;image/gif;image/sgi;image/j2k;image/jp2;image/pct;image/webp;image/wdp;image/cr2;image/pef;image/arw;image/nef;image/icb;image/dng;image/vda;image/vst;image/raf;image/orf;image/svg;image/ptif;image/mef;image/mrw;image/xbm;application/x-ddf
MimeType=image/bmp;image/bmp24;image/jpg;image/jpe;image/jpeg;image/jpeg24;image/jng;image/png;image/tif;image/tiff;image/tiff24;image/xpm;image/xbm;image/pbm;image/pgm;image/ppm;image/xpm;image/x-portable-graymap;image/x-xpixmap;image/x-portable-pixmap;application/x-ddf
Name=Deepin Draw
Name[am_ET]=ዲፕኢን መሳያ
Name[ar]=رسام ديبين
Expand Down
2 changes: 1 addition & 1 deletion src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ find_package(PkgConfig REQUIRED)

# 检查第三方库(这里检查了名字为dtkwidget的库和名字为dtkgui的库),然后取名3RMODULES
pkg_check_modules(3RMODULES REQUIRED
dtkwidget dtkgui
dtkwidget dtkgui dtkcore
)
# 添加第三方库的所有文件夹路径到工程中来(注意 *_INCLUDE_DIRS)
target_include_directories(${BASE_LIB} PUBLIC ${3RMODULES_INCLUDE_DIRS})
Expand Down
160 changes: 135 additions & 25 deletions src/application.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,27 @@ Application::Application(int &argc, char **argv)
s_drawApp = this;
}

supReadFormats = QStringList() << "ddf" << "png" << "jpeg" << "jpg" << "bmp" << "tif" << "tiff" << "ppm" << "xbm" << "xpm" << "pgm" << "pbm";
supReadFormatsFilter = QStringList() << QObject::tr("DDF Drawings") + "(*.ddf)"
<< "PNG(*.png)"
<< "JPEG(*.jpeg *.jpg)"
<< "BMP(*.bmp)"
<< "TIFF(*.tif *.tiff)"
<< "PPM(*.ppm)"
<< "XBM(*.xbm)"
<< "XPM(*.xpm)";
supWriteFormatFilters = QStringList() << QObject::tr("DDF Drawings") + "(*.ddf)"
<< "PNG(*.png)"
<< "JPEG(*.jpeg *.jpg)"
<< "BMP(*.bmp)"
<< "TIFF(*.tif *.tiff)"
<< "PDF(*.pdf)"
<< "PPM(*.ppm)"
<< "XBM(*.xbm)"
<< "XPM(*.xpm)";

supWriteFormats = QStringList() << "ddf" << "png" << "jpeg" << "jpg" << "bmp" << "tif" << "tiff" << "pdf" << "ppm" << "xbm" << "xpm";

#if (DTK_VERSION < DTK_VERSION_CHECK(5, 4, 0, 0))
_dApp = new DApplication(argc, argv);
#else
Expand All @@ -83,7 +104,7 @@ Application::Application(int &argc, char **argv)
_dApp->setApplicationDisplayName(tr("Draw"));
_dApp->setQuitOnLastWindowClosed(true);

_dApp->loadTranslator();
//_dApp->loadTranslator();
loadTools();

connect(_dApp, &DApplication::focusChanged, this, &Application::onFocusChanged);
Expand Down Expand Up @@ -132,6 +153,12 @@ int Application::execDraw(const QStringList &paths)
Dtk::Core::DLogManager::registerConsoleAppender();
Dtk::Core::DLogManager::registerFileAppender();

QString savingDirectory = QStandardPaths::writableLocation(QStandardPaths::PicturesLocation) + "/Draw";
QDir dir(savingDirectory);
if (!dir.exists()) {
dir.mkpath(savingDirectory);
}

// 应用已保存的主题设置
DApplicationSettings saveTheme;

Expand Down Expand Up @@ -165,36 +192,13 @@ TopTilte *Application::topToolbar() const
return nullptr;
}

//DrawToolManager *Application::leftToolBar() const
//{
// if (topMainWindow() != nullptr)
// return topMainWindow()->drawBoard()->toolManager();
// return nullptr;
//}

DrawBoard *Application::drawBoard() const
{
if (topMainWindow() != nullptr)
return topMainWindow()->drawBoard();
return nullptr;
}

//CColorPickWidget *Application::colorPickWidget()
//{
// if (drawBoard() != nullptr) {
// if (drawBoard()->attributionWidget() != nullptr) {
// auto w = drawBoard()->attributionWidget()->widgetOfAttr(EPenColor);
// if (w != nullptr) {
// CColorSettingButton *button = qobject_cast<CColorSettingButton *>(w);
// if (button != nullptr) {
// return button->colorPick();
// }
// }
// }
// }
// return nullptr;
//}

DrawAttribution::CAttributeManagerWgt *Application::attributionsWgt()
{
return topToolbar()->attributionsWgt();
Expand Down Expand Up @@ -499,7 +503,9 @@ void Application::waitShowThenLoad(const QStringList &paths)
if (!actWin->isVisible()) {
QMetaObject::invokeMethod(this, "waitShowThenLoad", Qt::QueuedConnection, Q_ARG(const QStringList &, paths));
} else {
actWin->loadFiles(paths);
QMetaObject::invokeMethod(this, [ = ] {
actWin->loadFiles(paths);
}, Qt::QueuedConnection);
}

}
Expand Down Expand Up @@ -580,6 +586,7 @@ void Application::quitApp()
settings.setValue("geometry", topMainWindow()->saveGeometry());
settings.setValue("windowState", topMainWindow()->saveState());
settings.setValue("opened", "true");
drawApp->saveSettings();
qApp->quit();
}

Expand Down Expand Up @@ -711,3 +718,106 @@ bool Application::isFileExist(QString &filePath)
}
return true;
}

QStringList Application::readableFormats()
{
return supReadFormats;
}

QStringList Application::writableFormats()
{
return supWriteFormats;
}

QStringList Application::readableFormatNameFilters()
{
return supReadFormatsFilter;
}

QStringList Application::writableFormatNameFilters()
{
return supWriteFormatFilters;
}

QString Application::defaultFileDialogPath() const
{
QDir dir(_defaultFileDialogPath);
if (dir.exists())
return _defaultFileDialogPath;
else {
auto s = const_cast<QString *>(&_defaultFileDialogPath);
auto standerPath = QStandardPaths::writableLocation(QStandardPaths::PicturesLocation) + "/Draw";
*s = standerPath;
}

return _defaultFileDialogPath;
}

void Application::setDefaultFileDialogPath(const QString &defaultPath)
{
_defaultFileDialogPath = defaultPath;
}

QString Application::defaultFileDialogNameFilter() const
{
return _defaultFileDialogNameFilter;
}

void Application::setDefaultFileDialogNameFilter(const QString &nameFilter)
{
_defaultFileDialogNameFilter = nameFilter;
}

void Application::readSettings()
{
QString fileName = Global::configPath() + "/config.conf";
QSettings settings(fileName, QSettings::IniFormat);

// [0] judge is first load draw process
bool opened = settings.value("opened").toBool();
if (!opened) {
//Dtk::Widget::moveToCenter(this);
//修复初次装机,画板不能还原窗口
int w = dApp->desktop()->screenGeometry().width() / 2;
int h = dApp->desktop()->screenGeometry().height() / 2 ;
actWin->resize(w, h);
actWin->showMaximized();
} else {
actWin->restoreGeometry(settings.value("geometry").toByteArray());
actWin->restoreState(settings.value("windowState").toByteArray());
}
QVariant var = settings.value("EnchValue");
if (var.isValid()) {
int value = var.toInt();
if (value >= 0 && value <= 100)
drawBoard()->setTouchFeelingEnhanceValue(var.toInt());
}

_defaultFileDialogPath = settings.value("defaultFileDialogPath").toString();

if (_defaultFileDialogPath.isEmpty()) {
_defaultFileDialogPath = QStandardPaths::writableLocation(QStandardPaths::PicturesLocation);
QFileInfo dir(_defaultFileDialogPath);
if (dir.isDir() && dir.isWritable()) {
_defaultFileDialogPath += "/Draw";
}
}

_defaultFileDialogNameFilter = settings.value("defaultFileDialogNameFilter").toString();

if (_defaultFileDialogNameFilter.isEmpty()) {
if (!supWriteFormatFilters.isEmpty())
_defaultFileDialogNameFilter = supWriteFormatFilters.first();
}
}

void Application::saveSettings()
{
QString fileName = Global::configPath() + "/config.conf";
QSettings settings(fileName, QSettings::IniFormat);
settings.setValue("geometry", topMainWindow()->saveGeometry());
settings.setValue("windowState", topMainWindow()->saveState());
settings.setValue("opened", "true");
settings.setValue("defaultFileDialogPath", _defaultFileDialogPath);
settings.setValue("defaultFileDialogNameFilter", _defaultFileDialogNameFilter);
}
35 changes: 35 additions & 0 deletions src/application.h
Original file line number Diff line number Diff line change
Expand Up @@ -197,6 +197,33 @@ class Application : public QObject
* @return 最大支持的图片尺寸
*/
QSize maxPicSize();

QStringList readableFormats();
QStringList writableFormats();
QStringList readableFormatNameFilters();
QStringList writableFormatNameFilters();

/**
* @brief defaultFileDialogPath 文件对话框的默认路径
*/
QString defaultFileDialogPath() const;

/**
* @brief setDefaultFileDialogPath 设置文件对话框的默认路径
*/
void setDefaultFileDialogPath(const QString &defaultPath);

/**
* @brief defaultFileDialogNameFilter 文件对话框的默认选中过滤信息
*/
QString defaultFileDialogNameFilter() const;

/**
* @brief setDefaultFileDialogNameFilter 设置文件对话框的默认选中过滤信息
*/
void setDefaultFileDialogNameFilter(const QString &nameFilter);
void readSettings();
void saveSettings();
private:
// enum EFileClassEnum {ENotFile = 0,
// ENotExist,
Expand Down Expand Up @@ -258,5 +285,13 @@ public slots:
QStack<QCursor> _cursorStack;

QMap<void *, QMap<int, QVariant>> _defaultAttriVars;

QStringList supReadFormats;
QStringList supReadFormatsFilter;
QStringList supWriteFormatFilters;
QStringList supWriteFormats;

QString _defaultFileDialogPath;
QString _defaultFileDialogNameFilter;
};
#endif // APPLICATION_H
1 change: 1 addition & 0 deletions src/deepin-draw/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,7 @@ int main(int argc, char *argv[])
#endif
DApplication::setAttribute(Qt::AA_UseHighDpiPixmaps);
Application a(argc, argv);
a.dApplication()->loadTranslator();

QCommandLineOption openImageOption(QStringList() << "o" << "open",
"Specify a path to load an image.", "PATH");
Expand Down
32 changes: 20 additions & 12 deletions src/drawshape/cdrawparamsigleton.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -239,11 +239,22 @@ bool PageContext::save(const QString &file)

// if (isEmpty())
// return true;

bool rs = false;
if (page() != nullptr && page()->borad() != nullptr) {
return page()->borad()->fileHander()->saveToDdf(this, filePath);
QFileInfo info(filePath);
if ("ddf" == info.suffix().toLower()) {
rs = page()->borad()->fileHander()->saveToDdf(this, filePath);
} else {
rs = page()->borad()->fileHander()->saveToImage(this, filePath);
//保存成功
if (rs) {
setFile(filePath);
setDirty(false);
}
}
//return page()->borad()->fileHander()->saveToDdf(this, filePath);
}
return false;
return rs;
}

bool PageContext::isDirty() const
Expand All @@ -254,17 +265,14 @@ bool PageContext::isDirty() const
void PageContext::setDirty(bool dirty)
{
if (_dirty != dirty) {
bool drawboardIsModified = (page() != nullptr) ? page()->borad()->isAnyPageModified() : false;
_dirty = dirty;
emit dirtyChanged(dirty);
if (page() != nullptr) {
auto lastModified = page()->borad()->isAnyPageModified();
_dirty = dirty;

auto nowModified = page()->borad()->isAnyPageModified();
if (lastModified != nowModified) {
emit page()->borad()->modified(nowModified);
}
bool nowDrawboardIsModified = (page() != nullptr) ? page()->borad()->isAnyPageModified() : false;
if (drawboardIsModified != nowDrawboardIsModified) {
emit page()->borad()->modified(nowDrawboardIsModified);
}
_dirty = dirty;

update();
}
}
Expand Down
10 changes: 8 additions & 2 deletions src/drawshape/cdrawscene.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -605,6 +605,12 @@ void assignmentZ(const QList<CGraphicsItem *> &items, qreal &beginZ, PageScene::
CGraphicsItem *p = items.at(i);
if (p->isBzItem()) {
p->setZValue(beginZ);
auto dynamicLayer = dynamic_cast<JDynamicLayer *>(p);
//动态图元移动了需要记录命令 用于保存和二次打开
if (nullptr != dynamicLayer) {
auto cmd = new JGeomeCommand(dynamicLayer);
dynamicLayer->appendComand(cmd, false, false);
}
++beginZ;
} else if (p->isBzGroup()) {
auto pGroup = static_cast<CGraphicsItemGroup *>(p);
Expand Down Expand Up @@ -935,10 +941,10 @@ void PageScene::blockSelectionStyle(bool b)
{
if (b) {
selectGroup()->setNoContent(true, false);
CGraphicsItem::paintSelectedBorderLine = false;
CGraphicsItem::paintInteractBorderLine = false;
} else {
selectGroup()->setNoContent(false, false);
CGraphicsItem::paintSelectedBorderLine = true;
CGraphicsItem::paintInteractBorderLine = true;
}
this->update();
}
Expand Down
4 changes: 2 additions & 2 deletions src/drawshape/drawItems/bzItems/cgraphicsitem.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ class CGraphicsItem::CGraphicsItem_private
};

const int inccW = 10;
bool CGraphicsItem::paintSelectedBorderLine = true;
bool CGraphicsItem::paintInteractBorderLine = true;
QPainterPath CGraphicsItem::getGraphicsItemShapePathByOrg(const QPainterPath &orgPath,
const QPen &pen,
bool penStrokerShape,
Expand Down Expand Up @@ -1255,7 +1255,7 @@ void CGraphicsItem::clearHandle()

void CGraphicsItem::paintMutBoundingLine(QPainter *painter, const QStyleOptionGraphicsItem *option)
{
if (!paintSelectedBorderLine)
if (!paintInteractBorderLine)
return;

if (isMutiSelected()) {
Expand Down
Loading

0 comments on commit d819245

Please sign in to comment.