Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions app/bin/mytetra.qrc
Original file line number Diff line number Diff line change
Expand Up @@ -125,5 +125,6 @@
<file>resource/pic/move_right.svg</file>
<file>resource/pic/edit_zoom-in.svg</file>
<file>resource/pic/edit_zoom-out.svg</file>
<file>resource/pic/open_image.svg</file>
</qresource>
</RCC>
43 changes: 43 additions & 0 deletions app/bin/resource/pic/open_image.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
272 changes: 141 additions & 131 deletions app/bin/resource/translations/mytetra_fr.ts

Large diffs are not rendered by default.

283 changes: 149 additions & 134 deletions app/bin/resource/translations/mytetra_ru.ts

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions app/src/libraries/ShortcutManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,7 @@ void ShortcutManager::initDefaultKeyTable()
defaultKeyTable.insert("editor-tableMergeCells", Data{ QKeySequence(""), tr("Merge cells"), tr("") });
defaultKeyTable.insert("editor-tableSplitCell", Data{ QKeySequence(""), tr("Split cell"), tr("") });
defaultKeyTable.insert("editor-tableProperties", Data{ QKeySequence(""), tr("Table properties"), tr("") });
defaultKeyTable.insert("editor-openImage", Data{ QKeySequence("Ctrl+Shift+Y"), tr("Open image"), tr("Open selected image in external viewer") });
defaultKeyTable.insert("editor-insertImageFromFile", Data{ QKeySequence("Ctrl+Shift+I"), tr("Insert/edit image"), tr("Insert image from file or edit selected image properties") });
defaultKeyTable.insert("editor-insertHorizontalLine",Data{ QKeySequence("Ctrl+H"), tr("Insert horizontal line"), tr("Insert a horizontal line into the empty paragraph from cursor") });
defaultKeyTable.insert("editor-mathExpression", Data{ QKeySequence("Ctrl+Shift+M"), tr("Insert/edit math expression"), tr("") });
Expand Down
11 changes: 11 additions & 0 deletions app/src/libraries/wyedit/Editor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -367,6 +367,11 @@ void Editor::setupSignals(void)
referenceFormatter, &ReferenceFormatter::onClickedGotoReference,
Qt::DirectConnection);

// Клик по картинке, для ImageFormatter
connect(textArea, &EditorTextArea::clickOnImage,
imageFormatter, &ImageFormatter::onClickOnImage,
Qt::DirectConnection);

// Двойной клик по картинке, для ImageFormatter
connect(textArea, &EditorTextArea::doubleClickOnImage,
imageFormatter, &ImageFormatter::onDoubleClickOnImage,
Expand Down Expand Up @@ -422,6 +427,9 @@ void Editor::setupSignals(void)
connect(editorContextMenu, &EditorContextMenu::selectAll,
this, &Editor::onSelectAll,
Qt::DirectConnection);
connect(editorContextMenu, &EditorContextMenu::contextMenuOpenImage,
imageFormatter, &ImageFormatter::onContextMenuOpenImage,
Qt::DirectConnection);
connect(editorContextMenu, &EditorContextMenu::contextMenuEditImageProperties,
imageFormatter, &ImageFormatter::onContextMenuEditImageProperties,
Qt::DirectConnection);
Expand Down Expand Up @@ -581,6 +589,9 @@ void Editor::setupToolsSignals(void)


// Прочие кнопки
connect(editorToolBarAssistant->openImage, &QAction::triggered,
imageFormatter, &ImageFormatter::openImage);

connect(editorToolBarAssistant->insertImageFromFile, &QAction::triggered,
imageFormatter, &ImageFormatter::onInsertImageFromFileClicked);

Expand Down
19 changes: 19 additions & 0 deletions app/src/libraries/wyedit/EditorContextMenu.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ void EditorContextMenu::setupActions(void)
actionPasteAsPlainText=new QAction(this);
actionSelectAll=new QAction(this);

actionOpenImage=new QAction(this);
actionEditImageProperties=new QAction(this);
actionEditMathExpression=new QAction(this);
actionGotoReference=new QAction(this);
Expand All @@ -62,6 +63,10 @@ void EditorContextMenu::setupShortcuts(void)
shortcutManager.initAction("editor-pasteAsPlainText", actionPasteAsPlainText );
shortcutManager.initAction("editor-selectAll", actionSelectAll );

// "Умное" действие Открыть изображение
shortcutManager.initAction("editor-openImage", actionOpenImage);
actionOpenImage->setText(tr("Open image"));

// "Умное" действие Вставить изображение / Редактировать свойства изображения
shortcutManager.initAction("editor-insertImageFromFile", actionEditImageProperties );
actionEditImageProperties->setText(tr("Edit image properties")); // В контекстном меню это редактирование свойств изображения
Expand Down Expand Up @@ -146,6 +151,9 @@ void EditorContextMenu::setImageProperties(bool flag)
{
qDebug() << "In EditorContextMenu::setImageProperties() " << flag;

actionOpenImage->setVisible(flag);
actionOpenImage->setEnabled(flag);

actionEditImageProperties->setVisible(flag);
actionEditImageProperties->setEnabled(flag);
}
Expand Down Expand Up @@ -204,6 +212,7 @@ void EditorContextMenu::setupSignals(void)
connect(actionPasteAsPlainText,&QAction::triggered, this, &EditorContextMenu::onActionPasteAsPlainText);
connect(actionSelectAll, &QAction::triggered, this, &EditorContextMenu::onActionSelectAll);

connect(actionOpenImage, &QAction::triggered, this, &EditorContextMenu::onActionContextMenuOpenImage);
connect(actionEditImageProperties,&QAction::triggered, this, &EditorContextMenu::onActionContextMenuEditImageProperties);
connect(actionEditMathExpression, &QAction::triggered, this, &EditorContextMenu::onActionContextMenuEditMathExpression);
connect(actionGotoReference, &QAction::triggered, this, &EditorContextMenu::onActionContextMenuGotoReference);
Expand Down Expand Up @@ -236,6 +245,7 @@ void EditorContextMenu::setupMenu(void)
this->addSeparator();

this->addAction(actionSelectAll);
this->addAction(actionOpenImage);
this->addAction(actionEditImageProperties);
this->addAction(actionEditMathExpression);
this->addAction(actionGotoReference);
Expand Down Expand Up @@ -298,6 +308,15 @@ void EditorContextMenu::onActionSelectAll()
}
}

void EditorContextMenu::onActionContextMenuOpenImage()
{
update();
if(actionOpenImage->isEnabled())
{
emit contextMenuOpenImage();
}
}

void EditorContextMenu::onActionContextMenuEditImageProperties()
{
update();
Expand Down
5 changes: 4 additions & 1 deletion app/src/libraries/wyedit/EditorContextMenu.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ class EditorContextMenu : public QMenu

QList<QAction *> getActionsList(void);

void setImageProperties(bool flag); // Активирование добавочного пункта меню "Свойства картинки")
void setImageProperties(bool flag); // Активирование добавочного пункта меню "Свойства изображения")
void setEditMathExpression(bool flag); // Активирование добавочного пункта меню "Редактирование формулы")
void setGotoReference(bool flag); // Активирование добавочного пункта меню "Перейти по ссылке")
void setPasteAsPlainText(bool flag);
Expand All @@ -34,6 +34,7 @@ class EditorContextMenu : public QMenu
void paste(void);
void pasteAsPlainText(void);
void selectAll(void);
void contextMenuOpenImage(void);
void contextMenuEditImageProperties(void);
void contextMenuEditMathExpression(void);
void contextMenuGotoReference(void);
Expand All @@ -56,6 +57,7 @@ protected slots:
QAction *actionLowercase; // строчный
QAction *actionUppercase; // ПРОПИСНЫЕ

QAction *actionOpenImage;
QAction *actionEditImageProperties;
QAction *actionEditMathExpression;
QAction *actionGotoReference;
Expand All @@ -73,6 +75,7 @@ protected slots:
void onActionPaste(void);
void onActionPasteAsPlainText(void);
void onActionSelectAll(void);
void onActionContextMenuOpenImage();
void onActionContextMenuEditImageProperties(void);
void onActionContextMenuEditMathExpression(void);
void onActionContextMenuGotoReference(void);
Expand Down
81 changes: 76 additions & 5 deletions app/src/libraries/wyedit/EditorTextArea.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -163,11 +163,24 @@ void EditorTextArea::switchReferenceClickMode(bool flag)
globalParameters.getStatusBar()->showMessage(href);
qDebug() << "Cursor href in key event: " << href;
}
else
{
// Сразу нужно проверить, не наведен ли курсор на изображение, и если наведен, то поменять его вид
QString imageName = imageAt(currentMousePosition);

if(!imageName.isEmpty())
{
qApp->setOverrideCursor(QCursor(Qt::PointingHandCursor)); // Меняется форма курсора на указатель клика по ссылке
mouseCursorOverriden = true;
globalParameters.getStatusBar()->showMessage(imageName); // Имя изображения отображается в строке статуса
qDebug() << "Cursor image in mouse event: " << imageName;
}
}
}
else
{
// Вид курсора сбрасывается на основной. Нужно для того, чтобы курсор поменялся,
// если мышка в момент отжатия клавиши была наведена на ссылку и курсор был с указательным пальцем
// если мышка в момент отжатия клавиши была наведена на ссылку или изображение и курсор был с указательным пальцем
qApp->restoreOverrideCursor();

mouseCursorOverriden = false;
Expand Down Expand Up @@ -201,11 +214,26 @@ void EditorTextArea::mouseMoveEvent(QMouseEvent *event)
}
else
{
if(mouseCursorOverriden)
QString imageName = imageAt(currentMousePosition);

if(!imageName.isEmpty())
{
if(!mouseCursorOverriden)
{
qApp->setOverrideCursor(QCursor(Qt::PointingHandCursor)); // Меняется форма курсора на указатель клика по ссылке
mouseCursorOverriden = true;
globalParameters.getStatusBar()->showMessage(imageName); // Имя изображения отображается в строке статуса
qDebug() << "Cursor image in mouse event: " << imageName;
}
}
else
{
qApp->restoreOverrideCursor(); // Воостанавливается обычный курсор
mouseCursorOverriden = false;
globalParameters.getStatusBar()->showMessage("");
if(mouseCursorOverriden)
{
qApp->restoreOverrideCursor(); // Воостанавливается обычный курсор
mouseCursorOverriden = false;
globalParameters.getStatusBar()->showMessage("");
}
}
}
}
Expand All @@ -222,7 +250,22 @@ void EditorTextArea::mousePressEvent(QMouseEvent *event)
if( event->type()==QEvent::MouseButtonPress && (QApplication::keyboardModifiers() & Qt::ControlModifier) ) {
QString href = this->anchorAt(event->pos());
if(!href.isEmpty())
{
emit clickedOnReference(href);
}
else
{
QString imageName = imageAt(currentMousePosition);

if(!imageName.isEmpty())
{
// Устанавливаем курсор на изображение, по которому кликнули
setTextCursorFromPoint(currentMousePosition);

// Открываем изображение
emit clickOnImage();
}
}
} else {
qApp->restoreOverrideCursor();
}
Expand Down Expand Up @@ -676,3 +719,31 @@ void EditorTextArea::onChangeFontPointSize(int n)
setFontPointSize(n);
}

QString EditorTextArea::imageAt(const QPoint& point)
{
int scrollY = verticalScrollBar()->value();
int scrollX = horizontalScrollBar()->value();
QPoint mousePositionWithScroll = QPoint(point.x()+scrollX, point.y()+scrollY);
return document()->documentLayout()->imageAt(mousePositionWithScroll);
}

int EditorTextArea::hitTest(const QPointF &point, Qt::HitTestAccuracy accuracy)
{
int scrollY = verticalScrollBar()->value();
int scrollX = horizontalScrollBar()->value();
QPoint mousePositionWithScroll = QPoint(point.x()+scrollX, point.y()+scrollY);
return document()->documentLayout()->hitTest(mousePositionWithScroll, accuracy);
}

void EditorTextArea::setTextCursorFromPoint(const QPointF &point)
{
int pos = hitTest(point, Qt::ExactHit);
if (pos < 0)
return;
QTextCursor cursor(textCursor());
if (!cursor.atEnd())
pos+=1;
cursor.setPosition(pos);
setTextCursor(cursor);
}

4 changes: 4 additions & 0 deletions app/src/libraries/wyedit/EditorTextArea.h
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ class EditorTextArea : public QTextEdit

void downloadImages(const QString href);

void clickOnImage();
void doubleClickOnImage();

public slots:
Expand Down Expand Up @@ -90,6 +91,9 @@ class EditorTextArea : public QTextEdit
void mouseDoubleClickEvent(QMouseEvent *event);

void switchReferenceClickMode(bool flag);
QString imageAt(const QPoint& point);
int hitTest(const QPointF &point, Qt::HitTestAccuracy accuracy);
void setTextCursorFromPoint(const QPointF &point);
};

#endif // _EDITORTEXTAREA_H_
9 changes: 8 additions & 1 deletion app/src/libraries/wyedit/EditorToolBar.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -293,6 +293,12 @@ void EditorToolBar::setupToolBarTools(void)
tableProperties->setIcon(QIcon(":/resource/pic/edit_table_properties.svg"));
tableProperties->setObjectName("editor_tb_tableProperties");

// Кнопка открытия изображения
openImage=new QAction(this);
openImage->setIcon(QIcon(":/resource/pic/open_image.svg"));
openImage->setObjectName("editor_tb_openImage");

// Кнопка вставки / редактирования свойств изображения
insertImageFromFile=new QAction(this);
insertImageFromFile->setIcon(QIcon(":/resource/pic/edit_insert_image_from_file.svg"));
insertImageFromFile->setObjectName("editor_tb_insertImageFromFile");
Expand Down Expand Up @@ -378,7 +384,7 @@ void EditorToolBar::setupShortcuts(void)
shortcutManager.initAction("editor-backgroundColor", backgroundColor);

// Настраиваются скрытые кнопки действия, а надписи настраиваются для самого виджета
// Скрытые кнопки нужны чтобы работал выбор виджета по грячим кнопкам
// Скрытые кнопки нужны чтобы работал выбор виджета по горячим кнопкам
shortcutManager.initAction("editor-fontSelect", fontSelect->toolFocus.getSelectAction() );
fontSelect->setStatusTip( shortcutManager.getFullDescription("editor-fontSelect") );
fontSelect->setToolTip( shortcutManager.getDescriptionWithShortcut("editor-fontSelect") );
Expand All @@ -400,6 +406,7 @@ void EditorToolBar::setupShortcuts(void)
shortcutManager.initAction("editor-tableMergeCells", tableMergeCells);
shortcutManager.initAction("editor-tableSplitCell", tableSplitCell);
shortcutManager.initAction("editor-tableProperties", tableProperties);
shortcutManager.initAction("editor-openImage", openImage);
shortcutManager.initAction("editor-insertImageFromFile", insertImageFromFile);
shortcutManager.initAction("editor-insertHorizontalLine", insertHorizontalLine);
shortcutManager.initAction("editor-mathExpression", mathExpression);
Expand Down
1 change: 1 addition & 0 deletions app/src/libraries/wyedit/EditorToolBar.h
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@ class EditorToolBar : public QWidget
QAction *tableSplitCell;
QAction *tableProperties;

QAction *openImage;
QAction *insertImageFromFile;
QAction *insertHorizontalLine;
QAction *mathExpression;
Expand Down
Loading