~kile/kile/livepreview-xenial

« back to all changes in this revision

Viewing changes to src/kile.cpp

  • Committer: Package Import Robot
  • Author(s): Prasad Murthy
  • Date: 2013-01-24 19:03:35 UTC
  • mfrom: (1.1.24)
  • Revision ID: package-import@ubuntu.com-20130124190335-29sj32fdx0d2kcmw
Tags: 1:2.1.3-0ubuntu1
* New upstream release
* Drop kubuntu_02_disable_embedded_kbibtex.diff as kbibtex is now usable with kde4
* Add kbibtex to suggests
* Change the Vcs links to the Ubuntu bzr branch

Show diffs side-by-side

added added

removed removed

Lines of Context:
23
23
#include <QHideEvent>
24
24
#include <QPointer>
25
25
#include <QShowEvent>
26
 
#include <QSplashScreen>
27
26
 
28
27
#include <KAboutApplicationDialog>
29
28
#include <KAction>
39
38
#include <KRecentFilesAction>
40
39
#include <KRun>
41
40
#include <KShortcutsDialog>
 
41
#include <KSplashScreen>
42
42
#include <KStandardDirs>
43
43
#include <KStatusBar>
44
44
#include <KTipDialog>
109
109
        m_parserProgressBarShowTimer(NULL)
110
110
{
111
111
        setObjectName(name);
112
 
        // publish the D-Bus interfaces
113
 
        new MainAdaptor(this);
114
 
        QDBusConnection dbus = QDBusConnection::sessionBus();
115
 
        dbus.registerObject("/main", this);
116
 
        dbus.registerService("net.sourceforge.kile"); // register under a constant names
117
 
 
118
 
        // BUG 220343: Under some circumstances (Qt 4.5.3 or KDE 4.3 issues (?)) Kile doesn't terminate when the
119
 
        //             main window is closed. So, we force this here. Everything seems to work fine with Qt 4.6.
120
 
//      connect(m_mainWindow, SIGNAL(destroyed(QObject*)), kapp, SLOT(quit()));
121
 
 
122
 
        QSplashScreen splashScreen(QPixmap(KGlobal::dirs()->findResource("appdata", "pics/kile_splash.png")), Qt::WindowStaysOnTopHint);
 
112
 
 
113
        // Under some circumstances (Qt or KDE issues like a KIO process still running (?)), Kile doesn't terminate
 
114
        // when the main window is closed (bugs 220343 and 299569). So, we force this here.
 
115
        // This still seems to happen with Qt 4.8.1 and KDE 4.8.2.
 
116
        connect(m_mainWindow, SIGNAL(destroyed(QObject*)), kapp, SLOT(quit()));
 
117
 
 
118
        KSplashScreen splashScreen(QPixmap(KGlobal::dirs()->findResource("appdata", "pics/kile_splash.png")), Qt::WindowStaysOnTopHint);
123
119
        if(KileConfig::showSplashScreen()) {
124
120
                splashScreen.show();
 
121
                kapp->processEvents();
125
122
        }
126
123
 
 
124
 
127
125
        m_config = KGlobal::config();
128
126
 
129
127
        m_jScriptManager = new KileScript::Manager(this, m_config.data(), actionCollection(), parent, "KileScript::Manager");
137
135
        m_AutosaveTimer = new QTimer();
138
136
        connect(m_AutosaveTimer,SIGNAL(timeout()),this,SLOT(autoSaveAll()));
139
137
 
 
138
        // process events for correctly displaying the splash screen
 
139
        kapp->processEvents();
 
140
 
140
141
        m_latexCommands = new KileDocument::LatexCommands(m_config.data(), this);  // at first (dani)
141
142
        m_edit = new KileDocument::EditorExtension(this);
142
143
        m_help = new KileHelp::Help(m_edit, m_mainWindow);
156
157
        m_wantState = "Editor";
157
158
        m_bWatchFile = m_logPresent = false;
158
159
 
 
160
        // process events for correctly displaying the splash screen
 
161
        kapp->processEvents();
 
162
 
159
163
        viewManager()->setClient(m_mainWindow);
160
164
        connect(viewManager(), SIGNAL(currentViewChanged(QWidget*)), this, SLOT(newCaption()));
161
165
        connect(viewManager(), SIGNAL(currentViewChanged(QWidget*)), this, SLOT(activateView(QWidget*)));
197
201
        connect(m_signalMapper, SIGNAL(mapped(const QString &)),
198
202
             this, SLOT(runTool(const QString &)));
199
203
 
 
204
        // process events for correctly displaying the splash screen
 
205
        kapp->processEvents();
 
206
 
200
207
        setupBottomBar();
201
208
        m_verticalSplitter->addWidget(m_bottomBar);
202
209
        m_topWidgetStack->addWidget(m_horizontalSplitter);
220
227
 
221
228
        newCaption();
222
229
 
223
 
        m_lyxserver = new KileLyxServer(KileConfig::runLyxServer());
224
 
        connect(m_lyxserver, SIGNAL(insert(const KileAction::TagData &)), this, SLOT(insertTag(const KileAction::TagData &)));
225
 
 
226
230
        m_help->setUserhelp(m_manager, m_userHelpActionMenu);     // kile user help (dani)
227
231
 
 
232
        // process events for correctly displaying the splash screen
 
233
        kapp->processEvents();
 
234
 
228
235
        connect(docManager(), SIGNAL(updateModeStatus()), this, SLOT(updateModeStatus()));
229
236
        connect(docManager(), SIGNAL(updateStructure(bool, KileDocument::Info*)), viewManager(), SLOT(updateStructure(bool, KileDocument::Info*)));
230
237
        connect(docManager(), SIGNAL(closingDocument(KileDocument::Info* )), m_kwStructure, SLOT(closeDocumentInfo(KileDocument::Info *)));
260
267
                splashScreen.finish(m_mainWindow);
261
268
        }
262
269
 
 
270
        // Due to 'processEvents' being called earlier we only create the DBUS adaptor and
 
271
        // the LyX server when all of Kile's structures have been set up.
 
272
        // publish the D-Bus interfaces
 
273
        new MainAdaptor(this);
 
274
        QDBusConnection dbus = QDBusConnection::sessionBus();
 
275
        dbus.registerObject("/main", this);
 
276
        dbus.registerService("net.sourceforge.kile"); // register under a constant names
 
277
 
 
278
        m_lyxserver = new KileLyxServer(KileConfig::runLyxServer());
 
279
        connect(m_lyxserver, SIGNAL(insert(const KileAction::TagData &)), this, SLOT(insertTag(const KileAction::TagData &)));
 
280
 
263
281
        if(m_listUserTools.count() > 0) {
264
282
                KMessageBox::information(0, i18n("You have defined some tools in the User menu. From now on these tools will be available from the Build->Other menu and can be configured in the configuration dialog (go to the Settings menu and choose Configure Kile). This has some advantages; your own tools can now be used in a QuickBuild command if you wish."), i18n("User Tools Detected"));
265
283
                m_listUserTools.clear();
450
468
        m_toolBox = new QToolBox(m_sideBar);
451
469
        m_sideBar->addPage(m_toolBox,SmallIcon("math0"),i18n("Symbols"));
452
470
 
453
 
        m_symbolViewMFUS = new KileWidget::SymbolView(m_toolBox, KileWidget::SymbolView::MFUS);
 
471
        m_symbolViewMFUS = new KileWidget::SymbolView(this, m_toolBox, KileWidget::SymbolView::MFUS);
454
472
        m_toolBox->addItem(m_symbolViewMFUS,i18n("Most Frequently Used"));
455
473
        m_toolBox->setItemEnabled(m_toolBox->indexOf(m_symbolViewMFUS),false);
456
474
        connect(m_symbolViewMFUS, SIGNAL(insertText(const QString& ,const QList<Package>&)),
457
475
                this, SLOT(insertText(const QString& ,const QList<Package>&)));
458
476
 
459
 
        m_symbolViewRelation = new KileWidget::SymbolView(m_toolBox, KileWidget::SymbolView::Relation);
 
477
        m_symbolViewRelation = new KileWidget::SymbolView(this, m_toolBox, KileWidget::SymbolView::Relation);
460
478
        m_toolBox->addItem(m_symbolViewRelation,SmallIcon("math1"),i18n("Relation"));
461
479
        connect(m_symbolViewRelation, SIGNAL(insertText(const QString& ,const QList<Package>&)),
462
480
                 this, SLOT(insertText(const QString& ,const QList<Package>&)));
463
481
 
464
 
        m_symbolViewOperators = new KileWidget::SymbolView(m_toolBox, KileWidget::SymbolView::Operator);
 
482
        m_symbolViewOperators = new KileWidget::SymbolView(this, m_toolBox, KileWidget::SymbolView::Operator);
465
483
        m_toolBox->addItem(m_symbolViewOperators,SmallIcon("math2"),i18n("Operators"));
466
484
        connect(m_symbolViewOperators, SIGNAL(insertText(const QString& ,const QList<Package>&)),
467
485
                this, SLOT(insertText(const QString& ,const QList<Package>&)));
468
486
 
469
 
        m_symbolViewArrows = new KileWidget::SymbolView(m_toolBox, KileWidget::SymbolView::Arrow);
 
487
        m_symbolViewArrows = new KileWidget::SymbolView(this, m_toolBox, KileWidget::SymbolView::Arrow);
470
488
        m_toolBox->addItem(m_symbolViewArrows,SmallIcon("math3"),i18n("Arrows"));
471
489
        connect(m_symbolViewArrows, SIGNAL(insertText(const QString& ,const QList<Package>&)),
472
490
                this, SLOT(insertText(const QString& ,const QList<Package>&)));
473
491
 
474
 
        m_symbolViewMiscMath = new KileWidget::SymbolView(m_toolBox, KileWidget::SymbolView::MiscMath);
 
492
        m_symbolViewMiscMath = new KileWidget::SymbolView(this, m_toolBox, KileWidget::SymbolView::MiscMath);
475
493
        m_toolBox->addItem(m_symbolViewMiscMath,SmallIcon("math4"),i18n("Miscellaneous Math"));
476
494
        connect(m_symbolViewMiscMath, SIGNAL(insertText(const QString& ,const QList<Package>&)),
477
495
                this, SLOT(insertText(const QString& ,const QList<Package>&)));
478
496
 
479
 
        m_symbolViewMiscText = new KileWidget::SymbolView(m_toolBox, KileWidget::SymbolView::MiscText);
 
497
        m_symbolViewMiscText = new KileWidget::SymbolView(this, m_toolBox, KileWidget::SymbolView::MiscText);
480
498
        m_toolBox->addItem(m_symbolViewMiscText,SmallIcon("math5"),i18n("Miscellaneous Text"));
481
499
        connect(m_symbolViewMiscText, SIGNAL(insertText(const QString& ,const QList<Package>&)),
482
500
                this, SLOT(insertText(const QString& ,const QList<Package>&)));
483
501
 
484
 
        m_symbolViewDelimiters= new KileWidget::SymbolView(m_toolBox, KileWidget::SymbolView::Delimiters);
 
502
        m_symbolViewDelimiters= new KileWidget::SymbolView(this, m_toolBox, KileWidget::SymbolView::Delimiters);
485
503
        m_toolBox->addItem(m_symbolViewDelimiters,SmallIcon("math6"),i18n("Delimiters"));
486
504
        connect(m_symbolViewDelimiters, SIGNAL(insertText(const QString& ,const QList<Package>&)),
487
505
                this, SLOT(insertText(const QString& ,const QList<Package>&)));
488
506
 
489
 
        m_symbolViewGreek = new KileWidget::SymbolView(m_toolBox, KileWidget::SymbolView::Greek);
 
507
        m_symbolViewGreek = new KileWidget::SymbolView(this, m_toolBox, KileWidget::SymbolView::Greek);
490
508
        m_toolBox->addItem(m_symbolViewGreek,SmallIcon("math7"),i18n("Greek"));
491
509
        connect(m_symbolViewGreek, SIGNAL(insertText(const QString& ,const QList<Package>&)),
492
510
                 this, SLOT(insertText(const QString& ,const QList<Package>&)));
493
511
 
494
 
        m_symbolViewSpecial = new KileWidget::SymbolView(m_toolBox, KileWidget::SymbolView::Special);
 
512
        m_symbolViewSpecial = new KileWidget::SymbolView(this, m_toolBox, KileWidget::SymbolView::Special);
495
513
        m_toolBox->addItem(m_symbolViewSpecial,SmallIcon("math8"),i18n("Special Characters"));
496
514
        connect(m_symbolViewSpecial, SIGNAL(insertText(const QString& ,const QList<Package>&)),
497
515
                 this, SLOT(insertText(const QString& ,const QList<Package>&)));
498
516
 
499
 
        m_symbolViewCyrillic = new KileWidget::SymbolView(m_toolBox, KileWidget::SymbolView::Cyrillic);
 
517
        m_symbolViewCyrillic = new KileWidget::SymbolView(this, m_toolBox, KileWidget::SymbolView::Cyrillic);
500
518
        m_toolBox->addItem(m_symbolViewCyrillic,SmallIcon("math10"),i18n("Cyrillic Characters"));
501
519
        connect(m_symbolViewCyrillic, SIGNAL(insertText(const QString& ,const QList<Package>&)),
502
520
                 this, SLOT(insertText(const QString& ,const QList<Package>&)));
503
521
 
504
 
        m_symbolViewUser = new KileWidget::SymbolView(m_toolBox, KileWidget::SymbolView::User);
 
522
        m_symbolViewUser = new KileWidget::SymbolView(this, m_toolBox, KileWidget::SymbolView::User);
505
523
        m_toolBox->addItem(m_symbolViewUser,SmallIcon("math9"),i18n("User Defined"));
506
524
        connect(m_symbolViewUser, SIGNAL(insertText(const QString& ,const QList<Package>&)),
507
525
                 this, SLOT(insertText(const QString& ,const QList<Package>&)));
859
877
        createAction(i18n("LaTeX Reference"), "help_latex_reference", "help-contents", this, SLOT(helpLaTex()));
860
878
        actionCollection()->addAction(KStandardAction::HelpContents, help_menu, SLOT(appHelpActivated()));
861
879
        actionCollection()->addAction(KStandardAction::ReportBug, help_menu, SLOT(reportBug()));
862
 
        actionCollection()->addAction(KStandardAction::AboutApp, help_menu, SLOT(aboutApplication()));
863
 
        actionCollection()->addAction(KStandardAction::AboutKDE, help_menu, SLOT(aboutKDE()));
864
 
        createAction(i18n("&About Editor Component"), "help_about_editor", this, SLOT(aboutEditorComponent()));
 
880
        act = actionCollection()->addAction(KStandardAction::AboutApp, help_menu, SLOT(aboutApplication()));
 
881
        act->setMenuRole(QAction::AboutRole); // for Mac OS X, to get the right about menu in the application menu
 
882
        act = actionCollection()->addAction(KStandardAction::AboutKDE, help_menu, SLOT(aboutKDE()));
 
883
        act->setMenuRole(QAction::NoRole);
 
884
        act = createAction(i18n("&About Editor Component"), "help_about_editor", this, SLOT(aboutEditorComponent()));
 
885
        act->setMenuRole(QAction::NoRole);
865
886
 
866
887
        KAction *kileconfig = KStandardAction::preferences(this, SLOT(generalOptions()), actionCollection());
867
888
        kileconfig->setIcon(KIcon("configure-kile"));
1191
1212
        }
1192
1213
 
1193
1214
        for (int i = 0; i < m_listDocsOpenOnStart.count(); ++i) {
1194
 
                docManager()->fileOpen(KUrl::fromPathOrUrl(m_listDocsOpenOnStart[i]));
 
1215
                docManager()->fileOpen(KUrl::fromPathOrUrl(m_listDocsOpenOnStart[i]), m_listEncodingsOfDocsOpenOnStart[i]);
1195
1216
        }
1196
1217
 
1197
1218
        if (ModeAction) {
1201
1222
 
1202
1223
        m_listProjectsOpenOnStart.clear();
1203
1224
        m_listDocsOpenOnStart.clear();
 
1225
        m_listEncodingsOfDocsOpenOnStart.clear();
1204
1226
 
1205
1227
        KILE_DEBUG() << "lastDocument=" << KileConfig::lastDocument() << endl;
1206
1228
        KTextEditor::Document *doc = docManager()->docFor(KUrl::fromPathOrUrl(KileConfig::lastDocument()));
1472
1494
 
1473
1495
        m_listProjectsOpenOnStart.clear();
1474
1496
        m_listDocsOpenOnStart.clear();
 
1497
        m_listEncodingsOfDocsOpenOnStart.clear();
1475
1498
 
1476
1499
        for(int i = 0; i < viewManager()->textViewCount(); ++i) {
1477
 
                m_listDocsOpenOnStart.append(viewManager()->textView(i)->document()->url().toLocalFile());
 
1500
                KTextEditor::Document *doc = viewManager()->textView(i)->document();
 
1501
                m_listDocsOpenOnStart.append(doc->url().toLocalFile());
 
1502
                m_listEncodingsOfDocsOpenOnStart.append(doc->encoding());
1478
1503
        }
1479
1504
 
1480
1505
        KILE_DEBUG() << "#projects = " << docManager()->projects().count() << endl;
2373
2398
        int n = group.readEntry("NoDOOS", 0);
2374
2399
        for (int i = 0; i < n; ++i) {
2375
2400
                m_listDocsOpenOnStart.append(group.readPathEntry("DocsOpenOnStart" + QString::number(i), ""));
 
2401
                m_listEncodingsOfDocsOpenOnStart.append(group.readPathEntry("EncodingsOfDocsOpenOnStart" + QString::number(i), ""));
2376
2402
        }
2377
2403
 
2378
2404
        n = group.readEntry("NoPOOS", 0);
2424
2450
                KileConfig::setSingleFileMasterDocument(getMasterDocument());
2425
2451
                configGroup.writeEntry("NoDOOS", m_listDocsOpenOnStart.count());
2426
2452
                for (int i = 0; i < m_listDocsOpenOnStart.count(); ++i) {
2427
 
                        configGroup.writePathEntry("DocsOpenOnStart"+QString::number(i), m_listDocsOpenOnStart[i]);
 
2453
                        configGroup.writePathEntry("DocsOpenOnStart" + QString::number(i), m_listDocsOpenOnStart[i]);
 
2454
                        configGroup.writePathEntry("EncodingsOfDocsOpenOnStart" + QString::number(i), m_listEncodingsOfDocsOpenOnStart[i]);
2428
2455
                }
2429
2456
 
2430
2457
                configGroup.writeEntry("NoPOOS", m_listProjectsOpenOnStart.count());
2604
2631
/////////////// KEYS - TOOLBARS CONFIGURATION ////////////////
2605
2632
void Kile::configureKeys()
2606
2633
{
2607
 
        KShortcutsDialog dlg(KShortcutsEditor::AllActions, KShortcutsEditor::LetterShortcutsDisallowed, m_mainWindow);
2608
 
        QList<KXMLGUIClient*> clients = m_mainWindow->guiFactory()->clients();
2609
 
        for(QList<KXMLGUIClient*>::iterator it = clients.begin(); it != clients.end(); ++it) {
2610
 
                dlg.addCollection((*it)->actionCollection());
 
2634
        KShortcutsDialog dlg(KShortcutsEditor::AllActions, KShortcutsEditor::LetterShortcutsAllowed, m_mainWindow);
 
2635
 
 
2636
// due to bug 280988, we can't add all the clients...
 
2637
//      QList<KXMLGUIClient*> clients = m_mainWindow->guiFactory()->clients();
 
2638
//      for(QList<KXMLGUIClient*>::iterator it = clients.begin(); it != clients.end(); ++it) {
 
2639
//              dlg.addCollection((*it)->actionCollection());
 
2640
//      }
 
2641
        dlg.addCollection(mainWindow()->actionCollection());
 
2642
        KTextEditor::View *view = m_viewManager->currentTextView();
 
2643
        if(view) {
 
2644
                dlg.addCollection(view->actionCollection());
2611
2645
        }
2612
2646
        dlg.configure();
2613
2647