aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src-qt5/experimental/lumina-pdf/lumina-pdf.desktop10
-rw-r--r--src-qt5/experimental/lumina-pdf/lumina-pdf.pro101
-rw-r--r--src-qt5/experimental/lumina-pdf/main.cpp29
-rw-r--r--src-qt5/experimental/lumina-pdf/mainUI.cpp292
-rw-r--r--src-qt5/experimental/lumina-pdf/mainUI.h107
-rw-r--r--src-qt5/experimental/lumina-pdf/mainUI.ui153
6 files changed, 0 insertions, 692 deletions
diff --git a/src-qt5/experimental/lumina-pdf/lumina-pdf.desktop b/src-qt5/experimental/lumina-pdf/lumina-pdf.desktop
deleted file mode 100644
index c9632c9f..00000000
--- a/src-qt5/experimental/lumina-pdf/lumina-pdf.desktop
+++ /dev/null
@@ -1,10 +0,0 @@
-[Desktop Entry]
-Exec=lumina-pdf %f
-Icon=application-pdf
-Terminal=false
-Type=Application
-StartupNotify=true
-Categories=Utility;
-MimeType=application/pdf;
-Name=Lumina PDF Viewer
-Comment=View PDF Files
diff --git a/src-qt5/experimental/lumina-pdf/lumina-pdf.pro b/src-qt5/experimental/lumina-pdf/lumina-pdf.pro
deleted file mode 100644
index c1c1c681..00000000
--- a/src-qt5/experimental/lumina-pdf/lumina-pdf.pro
+++ /dev/null
@@ -1,101 +0,0 @@
-include("$${PWD}/../../OS-detect.pri")
-
-QT += core gui
-greaterThan(QT_MAJOR_VERSION, 4): QT += widgets concurrent
-
-
-TARGET = lumina-pdf
-TEMPLATE = app
-
-QT += printsupport
-
-target.path = $${L_BINDIR}
-
-#include all the special classes from the Lumina tree
-include(../../core/libLumina/LUtils.pri) #includes LUtils
-include(../../core/libLumina/LuminaXDG.pri)
-
-SOURCES += main.cpp \
- mainUI.cpp
-
-HEADERS += mainUI.h
-
-FORMS += mainUI.ui
-
-LIBS += -lpoppler-qt5
-INCLUDEPATH+= $${L_INCLUDEDIR}/poppler/qt5
-
-TRANSLATIONS = i18n/l-pdf_af.ts \
- i18n/l-pdf_ar.ts \
- i18n/l-pdf_az.ts \
- i18n/l-pdf_bg.ts \
- i18n/l-pdf_bn.ts \
- i18n/l-pdf_bs.ts \
- i18n/l-pdf_ca.ts \
- i18n/l-pdf_cs.ts \
- i18n/l-pdf_cy.ts \
- i18n/l-pdf_da.ts \
- i18n/l-pdf_de.ts \
- i18n/l-pdf_el.ts \
- i18n/l-pdf_en_GB.ts \
- i18n/l-pdf_en_ZA.ts \
- i18n/l-pdf_es.ts \
- i18n/l-pdf_et.ts \
- i18n/l-pdf_eu.ts \
- i18n/l-pdf_fa.ts \
- i18n/l-pdf_fi.ts \
- i18n/l-pdf_fr.ts \
- i18n/l-pdf_fr_CA.ts \
- i18n/l-pdf_gl.ts \
- i18n/l-pdf_he.ts \
- i18n/l-pdf_hi.ts \
- i18n/l-pdf_hr.ts \
- i18n/l-pdf_hu.ts \
- i18n/l-pdf_id.ts \
- i18n/l-pdf_is.ts \
- i18n/l-pdf_it.ts \
- i18n/l-pdf_ja.ts \
- i18n/l-pdf_ka.ts \
- i18n/l-pdf_ko.ts \
- i18n/l-pdf_lt.ts \
- i18n/l-pdf_lv.ts \
- i18n/l-pdf_mk.ts \
- i18n/l-pdf_mn.ts \
- i18n/l-pdf_ms.ts \
- i18n/l-pdf_mt.ts \
- i18n/l-pdf_nb.ts \
- i18n/l-pdf_nl.ts \
- i18n/l-pdf_pa.ts \
- i18n/l-pdf_pl.ts \
- i18n/l-pdf_pt.ts \
- i18n/l-pdf_pt_BR.ts \
- i18n/l-pdf_ro.ts \
- i18n/l-pdf_ru.ts \
- i18n/l-pdf_sk.ts \
- i18n/l-pdf_sl.ts \
- i18n/l-pdf_sr.ts \
- i18n/l-pdf_sv.ts \
- i18n/l-pdf_sw.ts \
- i18n/l-pdf_ta.ts \
- i18n/l-pdf_tg.ts \
- i18n/l-pdf_th.ts \
- i18n/l-pdf_tr.ts \
- i18n/l-pdf_uk.ts \
- i18n/l-pdf_uz.ts \
- i18n/l-pdf_vi.ts \
- i18n/l-pdf_zh_CN.ts \
- i18n/l-pdf_zh_HK.ts \
- i18n/l-pdf_zh_TW.ts \
- i18n/l-pdf_zu.ts
-
-dotrans.path=$${L_SHAREDIR}/lumina-desktop/i18n/
-dotrans.extra=cd i18n && $${LRELEASE} -nounfinished *.ts && cp *.qm $(INSTALL_ROOT)$${L_SHAREDIR}/lumina-desktop/i18n/
-
-desktop.files=lumina-pdf.desktop
-desktop.path=$${L_SHAREDIR}/applications/
-
-INSTALLS += target desktop
-
-WITH_I18N{
- INSTALLS += dotrans
-}
diff --git a/src-qt5/experimental/lumina-pdf/main.cpp b/src-qt5/experimental/lumina-pdf/main.cpp
deleted file mode 100644
index f0430fc8..00000000
--- a/src-qt5/experimental/lumina-pdf/main.cpp
+++ /dev/null
@@ -1,29 +0,0 @@
-#include <QTranslator>
-#include <QApplication>
-#include <QDebug>
-#include <QFile>
-
-#include "mainUI.h"
-#include <LUtils.h>
-//#include <LuminaThemes.h>
-
-int main(int argc, char ** argv)
-{
- //LTHEME::LoadCustomEnvSettings();
- unsetenv("QT_AUTO_SCREEN_SCALE_FACTOR"); //need pixel-perfect geometries
- QApplication a(argc, argv);
- LUtils::LoadTranslation(&a, "l-pdf");
-
- //Read the input variables
- QString path = "";
- for(int i=1; i<argc; i++){
- path = LUtils::PathToAbsolute( argv[i] );
- if(QFile::exists(path)){ break; } //already found a valid file
- }
-
- MainUI w;
- if(!path.isEmpty()){ w.loadFile(path); }
- w.show();
- int retCode = a.exec();
- return retCode;
-}
diff --git a/src-qt5/experimental/lumina-pdf/mainUI.cpp b/src-qt5/experimental/lumina-pdf/mainUI.cpp
deleted file mode 100644
index a5304221..00000000
--- a/src-qt5/experimental/lumina-pdf/mainUI.cpp
+++ /dev/null
@@ -1,292 +0,0 @@
-//===========================================
-// Lumina Desktop source code
-// Copyright (c) 2017, Ken Moore
-// Available under the 3-clause BSD license
-// See the LICENSE file for full details
-//===========================================
-#include "mainUI.h"
-#include "ui_mainUI.h"
-
-#include <QPainter>
-#include <QImage>
-#include <QSize>
-#include <QFileDialog>
-#include <QInputDialog>
-#include <QDebug>
-#include <QApplication>
-#include <QScreen>
-#include <QTimer>
-
-#include <QtConcurrent>
-
-#include <LuminaXDG.h>
-
-MainUI::MainUI() : QMainWindow(), ui(new Ui::MainUI()){
- ui->setupUi(this);
- presentationLabel = 0;
- this->setWindowTitle(tr("Lumina PDF Viewer"));
- this->setWindowIcon( LXDG::findIcon("application-pdf","unknown"));
- CurrentPage = 0;
- lastdir = QDir::homePath();
- Printer = new QPrinter();
- WIDGET = new QPrintPreviewWidget(Printer,this);
- this->setCentralWidget(WIDGET);
- connect(WIDGET, SIGNAL(paintRequested(QPrinter*)), this, SLOT(paintOnWidget(QPrinter*)) );
- DOC = 0;
- connect(this, SIGNAL(PageLoaded(int)), this, SLOT(slotPageLoaded(int)) );
-
- PrintDLG = new QPrintDialog(this);
- connect(PrintDLG, SIGNAL(accepted(QPrinter*)), this, SLOT(paintOnWidget(QPrinter*)) ); //Can change to PaintToPrinter() later
- connect(ui->menuStart_Presentation, SIGNAL(triggered(QAction*)), this, SLOT(slotStartPresentation(QAction*)) );
-
- //Create the other interface widgets
- progress = new QProgressBar(this);
- progress->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
- progress->setFormat("%v/%m (%p%)"); // [current]/[total]
- progAct = ui->toolBar->addWidget(progress);
- progAct->setVisible(false);
- //Put the various actions into logical groups
- QActionGroup *tmp = new QActionGroup(this);
- tmp->setExclusive(true);
- tmp->addAction(ui->actionFit_Width);
- tmp->addAction(ui->actionFit_Page);
- ui->actionFit_Page->setChecked(true);
-
- tmp = new QActionGroup(this);
- tmp->setExclusive(true);
- tmp->addAction(ui->actionSingle_Page);
- tmp->addAction(ui->actionDual_Pages);
- tmp->addAction(ui->actionAll_Pages);
- ui->actionSingle_Page->setChecked(true);
-
- //Connect up the buttons
- connect(ui->actionClose, SIGNAL(triggered()), this, SLOT(close()) );
- connect(ui->actionPrint, SIGNAL(triggered()), PrintDLG, SLOT(open()) );
- connect(ui->actionFit_Width, SIGNAL(triggered()), WIDGET, SLOT(fitToWidth()) );
- connect(ui->actionFit_Page, SIGNAL(triggered()), WIDGET, SLOT(fitInView()) );
- connect(ui->actionOpen_PDF, SIGNAL(triggered()), this, SLOT(OpenNewFile()) );
- connect(ui->actionSingle_Page, SIGNAL(triggered()), WIDGET, SLOT(setSinglePageViewMode()) );
- connect(ui->actionDual_Pages, SIGNAL(triggered()), WIDGET, SLOT(setFacingPagesViewMode()) );
- connect(ui->actionAll_Pages, SIGNAL(triggered()), WIDGET, SLOT(setAllPagesViewMode()) );
-
- //Setup all the icons
- ui->actionPrint->setIcon( LXDG::findIcon("document-print",""));
- ui->actionClose->setIcon( LXDG::findIcon("window-close",""));
- ui->actionFit_Width->setIcon(LXDG::findIcon("arrow-expand-all",""));
- ui->actionFit_Page->setIcon(LXDG::findIcon("zoom-fit-best",""));
- ui->actionOpen_PDF->setIcon(LXDG::findIcon("document-open",""));
- ui->actionSingle_Page->setIcon(LXDG::findIcon("view-preview",""));
- ui->actionDual_Pages->setIcon(LXDG::findIcon("format-view-agenda",""));
- ui->actionAll_Pages->setIcon(LXDG::findIcon("format-view-grid-small",""));
-}
-
-MainUI::~MainUI(){
-
-}
-
-void MainUI::loadFile(QString path){
-
- if(!QFile::exists(path) || path.isEmpty() ){ return; }
- Poppler::Document *TDOC = Poppler::Document::load(path);
- if(TDOC==0){
- qDebug() << "Could not open file:" << path;
- return;
- }else if(TDOC->isLocked()){
- //Prompt for password to unlock the document
- QString pass = "";
- bool ok = true; //flag this to go into the loop the first time (if password prompt is cancelled - this becomes false)
- while( (ok ? true : !TDOC->unlock(QByteArray(), pass.toLocal8Bit())) ){ //make sure the unlock function is only called when ok is true
- pass = QInputDialog::getText(this, tr("Unlock PDF"), tr("Password:"), QLineEdit::Password, "", &ok);
- }
- if(TDOC->isLocked()){ return; } //Cancelled - still locked
- }
-
- if(DOC!=0){
- //Clear out the old document first
- delete DOC;
- DOC=0;
- }
- loadingHash.clear(); //clear out this hash
- numPages = -1;
- DOC = TDOC; //Save this for later
- qDebug() << "Opening File:" << path;
- this->setWindowTitle(DOC->title());
- if(this->windowTitle().isEmpty()){ this->setWindowTitle(path.section("/",-1)); }
-
- //Setup the Document
- Poppler::Page *PAGE = DOC->page(0);
- if(PAGE!=0){
- lastdir = path.section("/",0,-2); //save this for later
- Printer->setPageSize( QPageSize(PAGE->pageSize(), QPageSize::Point) );
- Printer->setPageMargins(QMarginsF(0,0,0,0), QPageLayout::Point);
- switch(PAGE->orientation()){
- case Poppler::Page::Landscape:
- Printer->setOrientation(QPrinter::Landscape); break;
- default:
- Printer->setOrientation(QPrinter::Portrait);
- }
- delete PAGE;
- qDebug() << " - Document Setup";
- QTimer::singleShot(10, WIDGET, SLOT(updatePreview())); //start loading the file preview
- }
-
-}
-
-void MainUI::loadPage(int num, Poppler::Document *doc, MainUI *obj, QSize dpi, QSizeF page){
- //qDebug() << " - Render Page:" << num;
- Poppler::Page *PAGE = doc->page(num);
- if(PAGE!=0){
- loadingHash.insert(num, PAGE->renderToImage(3*dpi.width(), 3*dpi.height()).scaled(page.width(), page.height(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation) );
- }else{
- loadingHash.insert(num, QImage());
- }
- if(PAGE!=0){ delete PAGE; }
- obj->emit PageLoaded(num);
-}
-
-QScreen* MainUI::getScreen(bool current, bool &cancelled){
- //Note: the "cancelled" boolian is actually an output - not an input
- QList<QScreen*> screens = QApplication::screens();
- cancelled = false;
- if(screens.length() ==1){ return screens[0]; } //only one option
- //Multiple screens available - figure it out
- if(current){
- //Just return the screen the window is currently on
- for(int i=0; i<screens.length(); i++){
- if(screens[i]->geometry().contains( this->mapToGlobal(this->pos()) )){
- return screens[i];
- }
- }
- //If it gets this far, there was an error and it should just return the primary screen
- return QApplication::primaryScreen();
- }else{
- //Ask the user to select a screen (for presentations, etc..)
- QStringList names;
- for(int i=0; i<screens.length(); i++){
- QString screensize = QString::number(screens[i]->size().width())+"x"+QString::number(screens[i]->size().height());
- names << QString(tr("%1 (%2)")).arg(screens[i]->name(), screensize);
- }
- bool ok = false;
- QString sel = QInputDialog::getItem(this, tr("Select Screen"), tr("Screen:"), names, 0, false, &ok);
- cancelled = !ok;
- if(!ok){ return screens[0]; } //cancelled - just return the first one
- int index = names.indexOf(sel);
- if(index < 0){ return screens[0]; } //error - should never happen though
- return screens[index]; //return the selected screen
- }
-}
-
-void MainUI::startPresentation(bool atStart){
- if(DOC==0){ return; } //just in case
- bool cancelled = false;
- QScreen *screen = getScreen(false, cancelled); //let the user select which screen to use (if multiples)
- if(cancelled){ return;}
- int page = 0;
- if(!atStart){ page = CurrentPage; }
- //PDPI = QSize(SCALEFACTOR*screen->physicalDotsPerInchX(), SCALEFACTOR*screen->physicalDotsPerInchY());
- //Now create the full-screen window on the selected screen
- if(presentationLabel == 0){
- //Create the label and any special flags for it
- presentationLabel = new QLabel(0, Qt::Window | Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint);
- presentationLabel->setStyleSheet("background-color: black;");
- presentationLabel->setAlignment(Qt::AlignCenter);
- }
- //Now put the label in the proper location
- presentationLabel->setGeometry(screen->geometry());
- presentationLabel->showFullScreen();
-
- ui->actionStop_Presentation->setEnabled(true);
- ui->menuStart_Presentation->setEnabled(false);
- QApplication::processEvents();
- //Now start at the proper page
- ShowPage(page);
- this->grabKeyboard(); //Grab any keyboard events - even from the presentation window
-}
-
-void MainUI::ShowPage(int page){
- if(presentationLabel == 0 || !presentationLabel->isVisible()){ return; }
- //Check for valid document/page
- if(page<0 || page >=numPages ){
- endPresentation();
- return; //invalid - no document loaded or invalid page specified
- }
- CurrentPage = page;
- QImage PAGEIMAGE = loadingHash[page];
-
- //Now scale the image according to the user-designations and show it
- if(!PAGEIMAGE.isNull()){
- QPixmap pix;
- pix.convertFromImage( PAGEIMAGE.scaled( presentationLabel->size(), Qt::KeepAspectRatio, Qt::SmoothTransformation) );
- presentationLabel->setPixmap(pix);
- presentationLabel->show(); //always make sure it was not hidden
- }else{
- presentationLabel->setPixmap(QPixmap());
- endPresentation();
- }
-}
-
-void MainUI::endPresentation(){
- if(presentationLabel==0 || !presentationLabel->isVisible()){ return; } //not in presentation mode
- presentationLabel->hide(); //just hide this (no need to re-create the label for future presentations)
- ui->actionStop_Presentation->setEnabled(false);
- ui->menuStart_Presentation->setEnabled(true);
- this->releaseKeyboard();
-}
-
-void MainUI::startLoadingPages(QPrinter *printer){
- if(numPages>0){ return; } //currently loaded[ing]
- //qDebug() << " - Start Loading Pages";
- numPages = DOC->numPages();
- progress->setRange(0,numPages);
- progress->setValue(0);
- progAct->setVisible(true);
- QRectF pageSize = printer->pageRect(QPrinter::DevicePixel);
- QSize DPI(printer->resolution(),printer->resolution());
- for(int i=0; i<numPages; i++){
- //qDebug() << " - Kickoff page load:" << i;
- QtConcurrent::run(this, &MainUI::loadPage, i, DOC, this, DPI, pageSize.size() );
- }
-}
-
-void MainUI::slotPageLoaded(int page){
- //qDebug() << "Page Loaded:" << page;
- int finished = loadingHash.keys().length();
- if(finished == numPages){
- progress->setVisible(false);
- progAct->setVisible(false);
- QTimer::singleShot(0, WIDGET, SLOT(updatePreview()));
- }else{
- progress->setValue(finished);
- }
-}
-
-void MainUI::slotStartPresentation(QAction *act){
- startPresentation(act == ui->actionAt_Beginning);
-}
-
-void MainUI::paintOnWidget(QPrinter *PRINTER){
- if(DOC==0){ return; }
- //this->show();
- if(loadingHash.keys().length() != numPages){ startLoadingPages(PRINTER); return; }
-
- int pages = DOC->numPages();
- int firstpage = 0;
- //qDebug() << "Start Rendering PDF:" << PRINTER->fromPage() << PRINTER->toPage();
- if(PRINTER->fromPage() != PRINTER->toPage() || PRINTER->fromPage()!=0){
- firstpage = PRINTER->fromPage() - 1;
- pages = PRINTER->toPage();
- }
- QPainter painter(PRINTER);
- for(int i=firstpage; i<pages; i++){
- if(i != firstpage){ PRINTER->newPage(); } //this is the start of the next page (not needed for first)
- if(loadingHash.contains(i)){ painter.drawImage(0,0, loadingHash[i]); }
- else{ painter.drawImage(0,0, QImage()); }
- }
-}
-
-void MainUI::OpenNewFile(){
- //Prompt for a file
- QString path = QFileDialog::getOpenFileName(this, tr("Open PDF"), lastdir, tr("PDF Documents (*.pdf)"));
- //Now Open it
- if(!path.isEmpty()){ loadFile(path); }
-}
diff --git a/src-qt5/experimental/lumina-pdf/mainUI.h b/src-qt5/experimental/lumina-pdf/mainUI.h
deleted file mode 100644
index fa1d5a55..00000000
--- a/src-qt5/experimental/lumina-pdf/mainUI.h
+++ /dev/null
@@ -1,107 +0,0 @@
-//===========================================
-// Lumina Desktop source code
-// Copyright (c) 2017, Ken Moore
-// Available under the 3-clause BSD license
-// See the LICENSE file for full details
-//===========================================
-#ifndef _LUMINA_PDF_VIEWER_MAIN_WINDOW_H
-#define _LUMINA_PDF_VIEWER_MAIN_WINDOW_H
-
-#include <QPrintPreviewWidget>
-#include <QPrintDialog>
-#include <QPrinter>
-#include <QMainWindow>
-#include <QProgressBar>
-#include <QLabel>
-#include <QKeyEvent>
-#include <QDebug>
-
-#include <poppler-qt5.h>
-
-namespace Ui{
- class MainUI;
-};
-
-class MainUI : public QMainWindow{
- Q_OBJECT
-public:
- MainUI();
- ~MainUI();
-
- void loadFile(QString path);
-
-
-private:
- Poppler::Document *DOC;
- QPrintPreviewWidget *WIDGET;
- Ui::MainUI *ui;
- QPrinter* Printer;
- QPrintDialog *PrintDLG;
-
- QString lastdir;
-
- //Other Interface elements
- QProgressBar *progress;
- QAction *progAct; //action associated with the progressbar
-
- //PDF Page Loading cache variables
- QHash<int, QImage> loadingHash;
- int numPages;
-
- void loadPage(int num, Poppler::Document *doc, MainUI *obj, QSize dpi, QSizeF page);
-
- //Functions/variables for the presentation mode
- QLabel *presentationLabel;
- QScreen *getScreen(bool current, bool &cancelled);
- int CurrentPage;
- void startPresentation(bool atStart);
- void ShowPage(int page);
- void endPresentation();
-
-private slots:
- void startLoadingPages(QPrinter *printer);
- void slotPageLoaded(int);
- void slotStartPresentation(QAction *act);
-
- void paintOnWidget(QPrinter *PRINTER);
-
- //Button Slots
- void OpenNewFile();
-
-signals:
- void PageLoaded(int);
-
-protected:
- void keyPressEvent(QKeyEvent *event){
- //See if this is one of the special hotkeys and act appropriately
- // NOTE: Some of this is duplicated with the QShortcut definitions (for non-presentation mode)
- // This routine does not always work for the main window viewer due to differing widget focus policies
- if(presentationLabel!=0 && presentationLabel->isVisible()){
- //qDebug() << "Got Key Press:";
- if( event->key()==Qt::Key_Escape || event->key()==Qt::Key_Backspace){
- //qDebug() << " - Escape/Backspace";
- endPresentation();
- }else if(event->key()==Qt::Key_Right || event->key()==Qt::Key_Down || event->key()==Qt::Key_Space){
- //qDebug() << " - Right/Down/Spacebar";
- ShowPage( CurrentPage+1 );
- }else if(event->key()==Qt::Key_Left || event->key()==Qt::Key_Up){
- //qDebug() << " - Left/Up";
- ShowPage( CurrentPage-1 );
- }else if(event->key()==Qt::Key_Home){
- //qDebug() << " - Home";
- ShowPage(0); //go to the first page
- }else if(event->key()==Qt::Key_End){
- //qDebug() << " - End";
- ShowPage( numPages-1 ); //go to the last page
- }else if(event->key()==Qt::Key_F11){
- //qDebug() << " - F11";
- endPresentation();
- }else{
- QMainWindow::keyPressEvent(event);
- }
- }else{
- QMainWindow::keyPressEvent(event);
- }
- }
-};
-#endif
diff --git a/src-qt5/experimental/lumina-pdf/mainUI.ui b/src-qt5/experimental/lumina-pdf/mainUI.ui
deleted file mode 100644
index bbc76bab..00000000
--- a/src-qt5/experimental/lumina-pdf/mainUI.ui
+++ /dev/null
@@ -1,153 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0">
- <class>MainUI</class>
- <widget class="QMainWindow" name="MainUI">
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>659</width>
- <height>588</height>
- </rect>
- </property>
- <property name="windowTitle">
- <string>MainWindow</string>
- </property>
- <widget class="QWidget" name="centralwidget"/>
- <widget class="QMenuBar" name="menubar">
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>659</width>
- <height>24</height>
- </rect>
- </property>
- <widget class="QMenu" name="menuFile">
- <property name="title">
- <string>File</string>
- </property>
- <addaction name="actionPrint"/>
- <addaction name="separator"/>
- <addaction name="actionOpen_PDF"/>
- <addaction name="separator"/>
- <addaction name="actionClose"/>
- </widget>
- <widget class="QMenu" name="menuPresentation">
- <property name="title">
- <string>Presentation</string>
- </property>
- <widget class="QMenu" name="menuStart_Presentation">
- <property name="title">
- <string>Start Presentation</string>
- </property>
- <addaction name="actionAt_Beginning"/>
- </widget>
- <addaction name="menuStart_Presentation"/>
- <addaction name="actionStop_Presentation"/>
- </widget>
- <addaction name="menuFile"/>
- <addaction name="menuPresentation"/>
- </widget>
- <widget class="QStatusBar" name="statusbar"/>
- <widget class="QToolBar" name="toolBar">
- <property name="windowTitle">
- <string>toolBar</string>
- </property>
- <property name="movable">
- <bool>false</bool>
- </property>
- <property name="floatable">
- <bool>false</bool>
- </property>
- <attribute name="toolBarArea">
- <enum>TopToolBarArea</enum>
- </attribute>
- <attribute name="toolBarBreak">
- <bool>false</bool>
- </attribute>
- <addaction name="actionFit_Page"/>
- <addaction name="actionFit_Width"/>
- <addaction name="separator"/>
- <addaction name="actionSingle_Page"/>
- <addaction name="actionDual_Pages"/>
- <addaction name="actionAll_Pages"/>
- </widget>
- <action name="actionOpen_PDF">
- <property name="text">
- <string>Open PDF</string>
- </property>
- <property name="shortcut">
- <string>Ctrl+O</string>
- </property>
- </action>
- <action name="actionClose">
- <property name="text">
- <string>Close</string>
- </property>
- <property name="shortcut">
- <string>Ctrl+Q</string>
- </property>
- </action>
- <action name="actionFit_Page">
- <property name="checkable">
- <bool>true</bool>
- </property>
- <property name="text">
- <string>Fit Page</string>
- </property>
- </action>
- <action name="actionFit_Width">
- <property name="checkable">
- <bool>true</bool>
- </property>
- <property name="text">
- <string>Fit Width</string>
- </property>
- </action>
- <action name="actionPrint">
- <property name="text">
- <string>Print</string>
- </property>
- <property name="shortcut">
- <string>Ctrl+P</string>
- </property>
- </action>
- <action name="actionSingle_Page">
- <property name="checkable">
- <bool>true</bool>
- </property>
- <property name="text">
- <string>Single Page</string>
- </property>
- </action>
- <action name="actionDual_Pages">
- <property name="checkable">
- <bool>true</bool>
- </property>
- <property name="text">
- <string>Dual Pages</string>
- </property>
- </action>
- <action name="actionAll_Pages">
- <property name="checkable">
- <bool>true</bool>
- </property>
- <property name="text">
- <string>All Pages</string>
- </property>
- </action>
- <action name="actionAt_Beginning">
- <property name="text">
- <string>At Beginning</string>
- </property>
- </action>
- <action name="actionStop_Presentation">
- <property name="text">
- <string>Stop Presentation</string>
- </property>
- </action>
- </widget>
- <resources/>
- <connections/>
-</ui>
bgstack15