Skip to content

Commit

Permalink
feat: DTK Changed-Toolbar and edit navigation
Browse files Browse the repository at this point in the history
DTK Changed-Toolbar and edit navigation.
  • Loading branch information
N0rthHXD committed Nov 15, 2023
1 parent f14cd86 commit 54ca4ca
Show file tree
Hide file tree
Showing 98 changed files with 342 additions and 7,277 deletions.
1 change: 1 addition & 0 deletions src/plugins/builder/builder.qrc
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,6 @@
<file>images/rebuild.png</file>
<file>images/clean.svg</file>
<file>images/cancel.svg</file>
<file>images/build.svg</file>
</qresource>
</RCC>
7 changes: 7 additions & 0 deletions src/plugins/builder/images/build.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
7 changes: 7 additions & 0 deletions src/plugins/builder/images/find.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
7 changes: 7 additions & 0 deletions src/plugins/builder/images/run.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion src/plugins/builder/mainframe/buildmanager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ void BuildManager::addMenu()

d->buildAction.reset(new QAction(MWMBA_BUILD));
actionInit(d->buildAction.get(), "Build.Build", QKeySequence(Qt::Modifier::CTRL | Qt::Key::Key_B),
":/buildercore/images/build.png");
":/buildercore/images/build.svg");
windowService->addToolBarActionItem("toolbar.Build", d->buildAction.get(), "Build.End");

d->rebuildAction.reset(new QAction(MWMBA_REBUILD));
Expand Down
1 change: 1 addition & 0 deletions src/plugins/codeeditor/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,7 @@ target_link_libraries(${PROJECT_NAME}
services
${QtUseModules}
${PkgUserModules}
${PkgUserModules}
)

install(TARGETS ${PROJECT_NAME} LIBRARY DESTINATION ${PLUGIN_INSTALL_PATH})
16 changes: 8 additions & 8 deletions src/plugins/codeeditor/mainframe/autohidedockwidget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,42 +7,42 @@
#include <QEvent>

AutoHideDockWidget::AutoHideDockWidget(const QString &title, QWidget *parent, Qt::WindowFlags flags)
: QDockWidget (title, parent, flags)
: DDockWidget (title, parent, flags)
{

}

AutoHideDockWidget::AutoHideDockWidget(QWidget *parent, Qt::WindowFlags flags)
: QDockWidget (parent, flags)
: DDockWidget (parent, flags)
{

}

QWidget *AutoHideDockWidget::widget() const
DWidget *AutoHideDockWidget::widget() const
{
return QDockWidget::widget();
}

void AutoHideDockWidget::setWidget(QWidget *widget)
void AutoHideDockWidget::setWidget(DWidget *widget)
{
if (widget) {
widget->installEventFilter(this);
}
return QDockWidget::setWidget(widget);
return DDockWidget::setWidget(widget);
}

bool AutoHideDockWidget::eventFilter(QObject *obj, QEvent *e)
{
if (obj == widget()) {
switch (e->type()){
case QEvent::HideToParent:
QDockWidget::hide();
DDockWidget::hide();
return true;
case QEvent::ShowToParent:
QDockWidget::show();
DDockWidget::show();
return true;
case QEvent::Destroy:
QDockWidget::hide();
DDockWidget::hide();
return true;
default:
return false;
Expand Down
11 changes: 7 additions & 4 deletions src/plugins/codeeditor/mainframe/autohidedockwidget.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,12 @@
#ifndef AUTOHIDEDOCKWIDGET_H
#define AUTOHIDEDOCKWIDGET_H

#include <QDockWidget>
#include <DDockWidget>
#include <DWidget>

class AutoHideDockWidget : public QDockWidget
DWIDGET_USE_NAMESPACE

class AutoHideDockWidget : public DDockWidget
{
Q_OBJECT
public:
Expand All @@ -16,9 +19,9 @@ class AutoHideDockWidget : public QDockWidget
explicit AutoHideDockWidget(QWidget *parent = nullptr,
Qt::WindowFlags flags = Qt::WindowFlags());

QWidget *widget() const;
DWidget *widget() const;

void setWidget(QWidget *widget);
void setWidget(DWidget *widget);

protected:
bool eventFilter(QObject *obj, QEvent *e) override;
Expand Down
64 changes: 39 additions & 25 deletions src/plugins/codeeditor/mainframe/naveditmainwindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@
#include "common/common.h"
#include "toolbarmanager.h"

#include <DTitlebar>

#include <QDebug>
#include <QDockWidget>
#include <QEvent>
Expand All @@ -22,7 +24,7 @@

using namespace dpfservice;
static NavEditMainWindow *ins{nullptr};
int findIndex(QTabWidget* tabWidget, const QString &text)
int findIndex(DTabWidget* tabWidget, const QString &text)
{
for (int index = 0; index < tabWidget->count(); index ++) {
if (tabWidget->tabText(index) == text) {
Expand All @@ -40,7 +42,7 @@ NavEditMainWindow *NavEditMainWindow::instance()
}

NavEditMainWindow::NavEditMainWindow(QWidget *parent, Qt::WindowFlags flags)
: QMainWindow (parent, flags)
: DMainWindow (parent)
{
qInfo() << __FUNCTION__;
auto &ctx = dpfInstance.serviceContext();
Expand All @@ -62,20 +64,26 @@ NavEditMainWindow::NavEditMainWindow(QWidget *parent, Qt::WindowFlags flags)
windowService->setToolBarItemDisable = std::bind(&NavEditMainWindow::setToolBarItemDisable, this, _1, _2);
}

if (!windowService->getEditToolBar) {
windowService->getEditToolBar = std::bind(&NavEditMainWindow::getEditToolBar, this);
}

QObject::connect(EditorCallProxy::instance(), &EditorCallProxy::toSwitchContext,
this, &NavEditMainWindow::switchWidgetContext);

QObject::connect(EditorCallProxy::instance(), &EditorCallProxy::toSwitchWorkspace,
this, &NavEditMainWindow::switchWidgetWorkspace);

qDockWidgetContext = new AutoHideDockWidget(QDockWidget::tr("Context"), this);
qDockWidgetContext->setFeatures(QDockWidget::DockWidgetMovable);
qTabWidgetContext = new QTabWidget(qDockWidgetContext);
qDockWidgetContext = new AutoHideDockWidget(DDockWidget::tr("Context"), this);
qDockWidgetContext->setFeatures(DDockWidget::DockWidgetMovable);
qTabWidgetContext = new DTabWidget(qDockWidgetContext);
qTabWidgetContext->setMinimumHeight(100);
qDockWidgetContext->setWidget(qTabWidgetContext);
addDockWidget(Qt::DockWidgetArea::BottomDockWidgetArea, qDockWidgetContext);
mainToolBar = new ToolBarManager(tr("toolbar"));
addToolBar(Qt::ToolBarArea::TopToolBarArea, mainToolBar->getToolBar());

titlebar()->setParent(nullptr);
titlebar()->hide();
}

NavEditMainWindow::~NavEditMainWindow()
Expand All @@ -96,31 +104,31 @@ QStringList NavEditMainWindow::contextWidgetTitles() const
void NavEditMainWindow::addWidgetWorkspace(const QString &title, AbstractWidget *treeWidget)
{
if (!qDockWidgetWorkspace) {
qTabWidgetWorkspace = new QTabWidget();
qTabWidgetWorkspace = new DTabWidget();
QFont font = qTabWidgetWorkspace->font();
font.setItalic(true);
qTabWidgetWorkspace->setFont(font);
qTabWidgetWorkspace->setMinimumHeight(300);
qTabWidgetWorkspace->setTabPosition(QTabWidget::West);
qDockWidgetWorkspace = new AutoHideDockWidget(QDockWidget::tr("Workspace"), this);
qDockWidgetWorkspace->setFeatures(QDockWidget::DockWidgetMovable);
qTabWidgetWorkspace->setTabPosition(DTabWidget::West);
qDockWidgetWorkspace = new AutoHideDockWidget(DDockWidget::tr("Workspace"), this);
qDockWidgetWorkspace->setFeatures(DDockWidget::DockWidgetMovable);
qDockWidgetWorkspace->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
addDockWidget(Qt::DockWidgetArea::LeftDockWidgetArea, qDockWidgetWorkspace);
setCorner(Qt::BottomLeftCorner, Qt::DockWidgetArea::LeftDockWidgetArea);
qDockWidgetWorkspace->setWidget(qTabWidgetWorkspace);
}

if (qTabWidgetWorkspace) {
auto qTreeWidget = static_cast<QWidget*>(treeWidget->qWidget());
auto qTreeWidget = static_cast<DWidget*>(treeWidget->qWidget());
qTabWidgetWorkspace->addTab(qTreeWidget, title);
}
adjustWorkspaceItemOrder();
}

QWidget *NavEditMainWindow::setWidgetEdit(AbstractCentral *editWidget)
DWidget *NavEditMainWindow::setWidgetEdit(AbstractCentral *editWidget)
{
QWidget *oldWidget = qWidgetEdit;
qWidgetEdit = static_cast<QWidget*>(editWidget->qWidget());
DWidget *oldWidget = qWidgetEdit;
qWidgetEdit = static_cast<DWidget*>(editWidget->qWidget());
// avoid be deleted when setCentralWidget.
if (oldWidget) {
oldWidget->setParent(nullptr);
Expand All @@ -132,16 +140,16 @@ QWidget *NavEditMainWindow::setWidgetEdit(AbstractCentral *editWidget)
return oldWidget;
}

QWidget *NavEditMainWindow::setWidgetWatch(AbstractWidget *watchWidget)
DWidget *NavEditMainWindow::setWidgetWatch(AbstractWidget *watchWidget)
{
if (!qDockWidgetWatch) {
qDockWidgetWatch = new AutoHideDockWidget(QDockWidget::tr("Watcher"), this);
qDockWidgetWatch->setFeatures(QDockWidget::AllDockWidgetFeatures);
qDockWidgetWatch = new AutoHideDockWidget(DDockWidget::tr("Watcher"), this);
qDockWidgetWatch->setFeatures(DDockWidget::AllDockWidgetFeatures);
qDockWidgetWatch->hide();
addDockWidget(Qt::DockWidgetArea::RightDockWidgetArea, qDockWidgetWatch);
}
QWidget *oldWidget = qWidgetWatch;
qWidgetWatch = static_cast<QWidget*>(watchWidget->qWidget());
DWidget *oldWidget = qWidgetWatch;
qWidgetWatch = static_cast<DWidget*>(watchWidget->qWidget());
qWidgetWatch->setParent(qDockWidgetWatch);
// avoid be deleted when setWidget.
if (oldWidget) {
Expand All @@ -159,7 +167,7 @@ QWidget *NavEditMainWindow::setWidgetWatch(AbstractWidget *watchWidget)
void NavEditMainWindow::addContextWidget(const QString &title, AbstractWidget *contextWidget, const QString &group)
{
QMutexLocker locker(&mutex);
QWidget *qWidget = static_cast<QWidget*>(contextWidget->qWidget());
DWidget *qWidget = static_cast<DWidget*>(contextWidget->qWidget());
if (!qWidget || !qTabWidgetContext || group.isEmpty()) {
return;
}
Expand Down Expand Up @@ -188,7 +196,7 @@ void NavEditMainWindow::addContextWidget(const QString &title, AbstractWidget *c

void NavEditMainWindow::removeContextWidget(AbstractWidget *contextWidget)
{
QWidget *qWidget = static_cast<QWidget*>(contextWidget->qWidget());
DWidget *qWidget = static_cast<DWidget*>(contextWidget->qWidget());
if (!qWidget || !qTabWidgetContext)
return;

Expand Down Expand Up @@ -235,9 +243,9 @@ void NavEditMainWindow::addFindToolBar(AbstractWidget *findToolbar)
return;

if (!qDockWidgetFindToolBar) {
qDockWidgetFindToolBar = new AutoHideDockWidget(QDockWidget::tr("Find ToolBar"), this);
qDockWidgetFindToolBar = new AutoHideDockWidget(DDockWidget::tr("Find ToolBar"), this);
addDockWidget(Qt::DockWidgetArea::TopDockWidgetArea, qDockWidgetFindToolBar);
QWidget *widget = static_cast<QWidget*>(findToolbar->qWidget());
DWidget *widget = static_cast<DWidget*>(findToolbar->qWidget());
qDockWidgetFindToolBar->setWidget(widget);
qDockWidgetFindToolBar->hide();
}
Expand All @@ -260,9 +268,9 @@ void NavEditMainWindow::addValgrindBar(AbstractWidget *valgrindbar)
return;

if (!qDockWidgetValgrindBar) {
qDockWidgetValgrindBar = new AutoHideDockWidget(QDockWidget::tr("Valgrind"), this);
qDockWidgetValgrindBar = new AutoHideDockWidget(DDockWidget::tr("Valgrind"), this);
addDockWidget(Qt::DockWidgetArea::TopDockWidgetArea, qDockWidgetValgrindBar);
QWidget *widget = static_cast<QWidget*>(valgrindbar->qWidget());
DWidget *widget = static_cast<DWidget*>(valgrindbar->qWidget());
qDockWidgetValgrindBar->setWidget(widget);
qDockWidgetValgrindBar->hide();
}
Expand Down Expand Up @@ -319,3 +327,9 @@ void NavEditMainWindow::adjustWorkspaceItemOrder()
tabBar->moveTab(i, 1);
}
}

DWidget *NavEditMainWindow::getEditToolBar()
{
DWidget *toolBar = static_cast<DWidget*>(mainToolBar->getToolBar());
return toolBar;
}
24 changes: 15 additions & 9 deletions src/plugins/codeeditor/mainframe/naveditmainwindow.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,14 @@
#ifndef NAVEDITMAINWINDOW_H
#define NAVEDITMAINWINDOW_H

#include <QMainWindow>
#include <DMainWindow>
#include <DWidget>
#include <DTabWidget>

#include <QMutex>

DWIDGET_USE_NAMESPACE

class QGridLayout;
class QTabWidget;
class AbstractCentral;
Expand All @@ -17,7 +22,7 @@ class QDockWidget;
class AutoHideDockWidget;
class ToolBarManager;

class NavEditMainWindow : public QMainWindow
class NavEditMainWindow : public DMainWindow
{
Q_OBJECT
AutoHideDockWidget *qDockWidgetWorkspace{nullptr};
Expand All @@ -26,11 +31,11 @@ class NavEditMainWindow : public QMainWindow
AutoHideDockWidget *qDockWidgetFindToolBar{nullptr};
AutoHideDockWidget *qDockWidgetValgrindBar{nullptr};
AutoHideDockWidget *qDockWidgetTools{nullptr};
QWidget *qWidgetEdit{nullptr};
QWidget *qWidgetWatch{nullptr};
QTabWidget *qTabWidgetContext{nullptr};
QTabWidget *qTabWidgetWorkspace{nullptr};
QTabWidget *qTabWidgetTools{nullptr};
DWidget *qWidgetEdit{nullptr};
DWidget *qWidgetWatch{nullptr};
DTabWidget *qTabWidgetContext{nullptr};
DTabWidget *qTabWidgetWorkspace{nullptr};
DTabWidget *qTabWidgetTools{nullptr};
ToolBarManager *mainToolBar{nullptr};
QList<QString> contextList;
QMutex mutex;
Expand All @@ -41,9 +46,9 @@ class NavEditMainWindow : public QMainWindow
QStringList contextWidgetTitles() const;
void addWidgetWorkspace(const QString &title, AbstractWidget *treeWidget);
// return old edit widget
QWidget *setWidgetEdit(AbstractCentral *editWidget);
DWidget *setWidgetEdit(AbstractCentral *editWidget);
// return old watch widget
QWidget *setWidgetWatch(AbstractWidget *watchWidget);
DWidget *setWidgetWatch(AbstractWidget *watchWidget);
void addContextWidget(const QString &title, AbstractWidget *contextWidget, const QString &group);
// the page widget itself is not deleted.
void removeContextWidget(AbstractWidget *contextWidget);
Expand All @@ -59,6 +64,7 @@ class NavEditMainWindow : public QMainWindow
void removeToolBarItem(const QString &id);
void setToolBarItemDisable(const QString &id, bool disable);

DWidget *getEditToolBar();
private:
void adjustWorkspaceItemOrder();
};
Expand Down
Loading

0 comments on commit 54ca4ca

Please sign in to comment.