File indexing completed on 2024-05-19 04:39:49
0001 /* 0002 SPDX-FileCopyrightText: 2006-2007 Alexander Dymo <adymo@kdevelop.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include "example1main.h" 0008 0009 #include <QMenu> 0010 #include <QMenuBar> 0011 #include <QListView> 0012 #include <QTextEdit> 0013 #include <QLayout> 0014 #include <QPushButton> 0015 #include <QUrl> 0016 #include <QDebug> 0017 0018 #include <sublime/view.h> 0019 #include <sublime/area.h> 0020 #include <sublime/sublimedefs.h> 0021 #include <sublime/tooldocument.h> 0022 #include <sublime/urldocument.h> 0023 #include <sublime/controller.h> 0024 #include <sublime/mainwindow.h> 0025 0026 Example1Main::Example1Main() 0027 :KXmlGuiWindow(nullptr) 0028 { 0029 //documents 0030 m_controller = new Sublime::Controller(this); 0031 Sublime::Document *doc1 = new Sublime::UrlDocument(m_controller, QUrl::fromLocalFile(QStringLiteral("~/foo.cpp"))); 0032 Sublime::Document *doc2 = new Sublime::UrlDocument(m_controller, QUrl::fromLocalFile(QStringLiteral("~/boo.cpp"))); 0033 Sublime::Document *doc3 = new Sublime::UrlDocument(m_controller, QUrl::fromLocalFile(QStringLiteral("~/moo.cpp"))); 0034 0035 //documents for tool views 0036 Sublime::Document *tool1 = new Sublime::ToolDocument(QStringLiteral("ListView"), m_controller, 0037 new Sublime::SimpleToolWidgetFactory<QListView>(QStringLiteral("ListView"))); 0038 Sublime::Document *tool2 = new Sublime::ToolDocument(QStringLiteral("TextEdit"), m_controller, 0039 new Sublime::SimpleToolWidgetFactory<QTextEdit>(QStringLiteral("TextEdit"))); 0040 0041 //areas (aka perspectives) 0042 qDebug() << "constructing area 1"; 0043 m_area1 = new Sublime::Area(m_controller, QStringLiteral("Area 1")); 0044 m_controller->addDefaultArea(m_area1); 0045 m_area1->addView(doc1->createView()); 0046 m_area1->addView(doc2->createView()); 0047 m_area1->addView(doc3->createView()); 0048 m_area1->addToolView(tool1->createView(), Sublime::Left); 0049 m_area1->addToolView(tool2->createView(), Sublime::Bottom); 0050 0051 qDebug() << "constructing area 2"; 0052 m_area2 = new Sublime::Area(m_controller, QStringLiteral("Area 2")); 0053 m_controller->addDefaultArea(m_area2); 0054 Sublime::View *view1 = doc1->createView(); 0055 m_area2->addView(view1); 0056 Sublime::View *view2 = doc2->createView(); 0057 m_area2->addView(view2, view1, Qt::Vertical); 0058 m_area2->addView(doc3->createView(), view2, Qt::Horizontal); 0059 m_area2->addToolView(tool1->createView(), Sublime::Bottom); 0060 m_area2->addToolView(tool2->createView(), Sublime::Right); 0061 0062 //example main window stuff 0063 auto* w = new QWidget(this); 0064 setCentralWidget(w); 0065 auto *l = new QVBoxLayout(w); 0066 QMenu *areaMenu = menuBar()->addMenu(QStringLiteral("Areas")); 0067 areaMenu->addAction(QStringLiteral("Area 1"), this, SLOT(selectArea1())); 0068 areaMenu->addAction(QStringLiteral("Area 2"), this, SLOT(selectArea2())); 0069 auto* b1 = new QPushButton(QStringLiteral("Area 1"), this); 0070 connect(b1, &QPushButton::clicked, this, &Example1Main::selectArea1); 0071 l->addWidget(b1); 0072 auto* b2 = new QPushButton(QStringLiteral("Area 2"), this); 0073 connect(b2, &QPushButton::clicked, this, &Example1Main::selectArea2); 0074 l->addWidget(b2); 0075 } 0076 0077 void Example1Main::selectArea1() 0078 { 0079 auto *main = new Sublime::MainWindow(m_controller); 0080 connect(main, &Sublime::MainWindow::areaChanged, this, &Example1Main::updateTitle); 0081 m_controller->showArea(m_area1, main); 0082 main->show(); 0083 } 0084 0085 void Example1Main::selectArea2() 0086 { 0087 auto *main = new Sublime::MainWindow(m_controller); 0088 connect(main, &Sublime::MainWindow::areaChanged, this, &Example1Main::updateTitle); 0089 m_controller->showArea(m_area2, main); 0090 main->show(); 0091 } 0092 0093 void Example1Main::updateTitle(Sublime::Area *area) 0094 { 0095 auto *main = qobject_cast<Sublime::MainWindow*>(sender()); 0096 main->setWindowTitle(area->objectName()); 0097 } 0098 0099 #include "moc_example1main.cpp"