diff options
author | Ken Moore <ken@ixsystems.com> | 2017-01-23 12:50:27 -0500 |
---|---|---|
committer | Ken Moore <ken@ixsystems.com> | 2017-01-23 12:50:27 -0500 |
commit | dd9179e59a699f096f8373a6ae56c91f303b14b6 (patch) | |
tree | 5a276af25b4330fa988c7efebdac5ccd0fd8f1b2 | |
parent | Merge branch 'master' of github.com:trueos/lumina (diff) | |
download | lumina-dd9179e59a699f096f8373a6ae56c91f303b14b6.tar.gz lumina-dd9179e59a699f096f8373a6ae56c91f303b14b6.tar.bz2 lumina-dd9179e59a699f096f8373a6ae56c91f303b14b6.zip |
Add a check/warning when closing the screenshot tool when the current screenshot has not been saved to disk yet. Also add an option to the settings tab to turn off that popup warning as desired.
-rw-r--r-- | src-qt5/desktop-utils/lumina-screenshot/MainUI.cpp | 25 | ||||
-rw-r--r-- | src-qt5/desktop-utils/lumina-screenshot/MainUI.h | 4 | ||||
-rw-r--r-- | src-qt5/desktop-utils/lumina-screenshot/MainUI.ui | 277 |
3 files changed, 193 insertions, 113 deletions
diff --git a/src-qt5/desktop-utils/lumina-screenshot/MainUI.cpp b/src-qt5/desktop-utils/lumina-screenshot/MainUI.cpp index 57314249..40c9857b 100644 --- a/src-qt5/desktop-utils/lumina-screenshot/MainUI.cpp +++ b/src-qt5/desktop-utils/lumina-screenshot/MainUI.cpp @@ -14,6 +14,7 @@ MainUI::MainUI() : QMainWindow(), ui(new Ui::MainUI){ ui->setupUi(this); //load the designer file mousegrabbed = false; + picSaved = false; XCB = new LXCB(); IMG = new ImageEditor(this); ui->scrollArea->setWidget(IMG); @@ -51,7 +52,7 @@ MainUI::MainUI() : QMainWindow(), ui(new Ui::MainUI){ connect(ui->slider_zoom, SIGNAL(valueChanged(int)), this, SLOT(sliderChanged()) ); connect(scaleTimer, SIGNAL(timeout()), this, SLOT(imgScalingChanged()) ); connect(tabbar, SIGNAL(currentChanged(int)), this, SLOT(tabChanged(int)) ); - + connect(ui->check_show_popups, SIGNAL(toggled(bool)), this, SLOT(showPopupsChanged(bool)) ); settings = new QSettings("lumina-desktop", "lumina-screenshot",this); if(settings->value("screenshot-target", "window").toString() == "window") { ui->radio_window->setChecked(true); @@ -59,6 +60,7 @@ MainUI::MainUI() : QMainWindow(), ui(new Ui::MainUI){ ui->radio_all->setChecked(true); } ui->spin_delay->setValue(settings->value("screenshot-delay", 0).toInt()); + ui->check_show_popups->setChecked( settings->value("showPopupWarnings",true).toBool() ); ui->tool_resize->setVisible(false); //not implemented yet this->show(); @@ -99,6 +101,7 @@ void MainUI::saveScreenshot(){ if( !IMG->image().save(filepath, "png") ){ showSaveError(filepath); }else{ + picSaved = true; ppath = filepath.section("/",0,-2); //just the directory } } @@ -111,10 +114,12 @@ void MainUI::quicksave(){ QString path = savedir + QString( "Screenshot-%1.png" ).arg( lastScreenShot.toString("yyyy-MM-dd-hh-mm-ss") ); if(IMG->image().save(path, "png") ){ + picSaved = true; QProcess::startDetached("lumina-open -select \""+path+"\""); }else{ showSaveError(path); } + } void MainUI::startScreenshot(){ @@ -152,6 +157,10 @@ void MainUI::tabChanged(int tab){ ui->frame_modify->setVisible(tab==0); } +void MainUI::showPopupsChanged(bool show){ + settings->setValue("showPopupWarnings", show); +} + bool MainUI::getWindow(){ //Use this function to set cwin cwin = 0; @@ -194,6 +203,7 @@ void MainUI::getPixmap(){ this->setGeometry(lastgeom); lastScreenShot = QDateTime::currentDateTime(); //Now display the pixmap on the label as well + picSaved = false; IMG->LoadImage( cpic.toImage() ); } @@ -228,3 +238,16 @@ void MainUI::mouseReleaseEvent(QMouseEvent *ev){ void MainUI::resizeEvent(QResizeEvent*){ IMG->setDefaultSize( ui->scrollArea->maximumViewportSize() ); } + +void MainUI::closeEvent(QCloseEvent *ev){ + //qDebug() << "Close Event:" << ui->check_show_popups->isChecked() << picSaved; + if(ui->check_show_popups->isChecked() && !picSaved){ + //Ask what to do about the unsaved changed + if(QMessageBox::Yes != QMessageBox::warning(this, tr("Unsaved Screenshot"), tr("The current screenshot has not been saved yet. Do you want to quit anyway?"), QMessageBox::Yes | QMessageBox::No, QMessageBox::No) ){ + //cancelled close of window + ev->ignore(); + return; + } + } + QMainWindow::closeEvent(ev); +} diff --git a/src-qt5/desktop-utils/lumina-screenshot/MainUI.h b/src-qt5/desktop-utils/lumina-screenshot/MainUI.h index cb740d33..396bfafe 100644 --- a/src-qt5/desktop-utils/lumina-screenshot/MainUI.h +++ b/src-qt5/desktop-utils/lumina-screenshot/MainUI.h @@ -41,7 +41,7 @@ public slots: private: Ui::MainUI *ui; - bool mousegrabbed; + bool mousegrabbed, picSaved; QRect lastgeom; QString ppath; //previous file path WId cwin; //current window to screenshot @@ -71,6 +71,7 @@ private slots: void sliderChanged(); void tabChanged(int); + void showPopupsChanged(bool); //Utility functions to perform a screenshot bool getWindow(); //set the "cwin" variable as appropriate @@ -79,6 +80,7 @@ private slots: protected: void mouseReleaseEvent(QMouseEvent *ev); void resizeEvent(QResizeEvent *ev); + void closeEvent( QCloseEvent *ev); }; #endif diff --git a/src-qt5/desktop-utils/lumina-screenshot/MainUI.ui b/src-qt5/desktop-utils/lumina-screenshot/MainUI.ui index 5e3aabb4..cddee009 100644 --- a/src-qt5/desktop-utils/lumina-screenshot/MainUI.ui +++ b/src-qt5/desktop-utils/lumina-screenshot/MainUI.ui @@ -244,121 +244,176 @@ <enum>QLayout::SetMinimumSize</enum> </property> <item> - <layout class="QHBoxLayout" name="horizontalLayout"> - <property name="spacing"> - <number>0</number> + <widget class="QGroupBox" name="groupBox"> + <property name="title"> + <string>Screen Capture Settings</string> </property> - <property name="sizeConstraint"> - <enum>QLayout::SetMinimumSize</enum> - </property> - <item> - <widget class="QRadioButton" name="radio_all"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Minimum" vsizetype="Minimum"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="text"> - <string>Entire Session</string> - </property> - </widget> - </item> - <item> - <widget class="QSpinBox" name="spin_delay"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Minimum" vsizetype="Minimum"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="suffix"> - <string> Sec Delay</string> - </property> - <property name="prefix"> - <string/> - </property> - <property name="maximum"> - <number>20</number> - </property> - </widget> - </item> - </layout> - </item> - <item> - <layout class="QHBoxLayout" name="horizontalLayout_2"> - <property name="spacing"> - <number>0</number> - </property> - <property name="sizeConstraint"> - <enum>QLayout::SetMinimumSize</enum> - </property> - <item> - <widget class="QRadioButton" name="radio_monitor"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Minimum" vsizetype="Minimum"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="text"> - <string>Single Screen</string> - </property> - </widget> - </item> - <item> - <widget class="QSpinBox" name="spin_monitor"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Minimum" vsizetype="Minimum"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="prefix"> - <string notr="true"># </string> - </property> - <property name="minimum"> - <number>1</number> - </property> - </widget> - </item> - </layout> + <layout class="QVBoxLayout" name="verticalLayout"> + <property name="spacing"> + <number>2</number> + </property> + <property name="leftMargin"> + <number>2</number> + </property> + <property name="topMargin"> + <number>2</number> + </property> + <property name="rightMargin"> + <number>2</number> + </property> + <property name="bottomMargin"> + <number>2</number> + </property> + <item> + <layout class="QHBoxLayout" name="horizontalLayout"> + <property name="spacing"> + <number>0</number> + </property> + <property name="sizeConstraint"> + <enum>QLayout::SetMinimumSize</enum> + </property> + <item> + <widget class="QRadioButton" name="radio_all"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Minimum" vsizetype="Minimum"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text"> + <string>Entire Session</string> + </property> + </widget> + </item> + <item> + <widget class="QSpinBox" name="spin_delay"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Minimum" vsizetype="Minimum"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="suffix"> + <string> Sec Delay</string> + </property> + <property name="prefix"> + <string/> + </property> + <property name="maximum"> + <number>20</number> + </property> + </widget> + </item> + </layout> + </item> + <item> + <layout class="QHBoxLayout" name="horizontalLayout_2"> + <property name="spacing"> + <number>0</number> + </property> + <property name="sizeConstraint"> + <enum>QLayout::SetMinimumSize</enum> + </property> + <item> + <widget class="QRadioButton" name="radio_monitor"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Minimum" vsizetype="Minimum"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text"> + <string>Single Screen</string> + </property> + </widget> + </item> + <item> + <widget class="QSpinBox" name="spin_monitor"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Minimum" vsizetype="Minimum"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="prefix"> + <string notr="true"># </string> + </property> + <property name="minimum"> + <number>1</number> + </property> + </widget> + </item> + </layout> + </item> + <item> + <layout class="QHBoxLayout" name="horizontalLayout_3"> + <property name="spacing"> + <number>0</number> + </property> + <property name="sizeConstraint"> + <enum>QLayout::SetMinimumSize</enum> + </property> + <item> + <widget class="QRadioButton" name="radio_window"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Minimum" vsizetype="Minimum"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text"> + <string>Single Window</string> + </property> + </widget> + </item> + <item> + <widget class="QCheckBox" name="check_frame"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Minimum" vsizetype="Minimum"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text"> + <string>Include Borders</string> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </widget> </item> <item> - <layout class="QHBoxLayout" name="horizontalLayout_3"> - <property name="spacing"> - <number>0</number> + <widget class="QGroupBox" name="groupBox_2"> + <property name="title"> + <string>General Settings</string> </property> - <property name="sizeConstraint"> - <enum>QLayout::SetMinimumSize</enum> - </property> - <item> - <widget class="QRadioButton" name="radio_window"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Minimum" vsizetype="Minimum"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="text"> - <string>Single Window</string> - </property> - </widget> - </item> - <item> - <widget class="QCheckBox" name="check_frame"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Minimum" vsizetype="Minimum"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="text"> - <string>Include Borders</string> - </property> - </widget> - </item> - </layout> + <layout class="QVBoxLayout" name="verticalLayout_7"> + <property name="spacing"> + <number>2</number> + </property> + <property name="leftMargin"> + <number>2</number> + </property> + <property name="topMargin"> + <number>2</number> + </property> + <property name="rightMargin"> + <number>2</number> + </property> + <property name="bottomMargin"> + <number>2</number> + </property> + <item> + <widget class="QCheckBox" name="check_show_popups"> + <property name="text"> + <string>Show popup warnings about unsaved screenshots</string> + </property> + </widget> + </item> + </layout> + </widget> </item> <item> <spacer name="verticalSpacer"> |