12 Commits

Author SHA1 Message Date
ruglory 038e449c0f Tagging the 0.3 release
git-svn-id: https://svn.code.sf.net/p/qlscribe/svn/tags/release-0.3@30 cac9541e-1b8d-4bfa-827e-589bba606050
2009-01-29 02:33:22 +00:00
ruglory 85fc6fed99 News for release 0.3 added
git-svn-id: https://svn.code.sf.net/p/qlscribe/svn/trunk@29 cac9541e-1b8d-4bfa-827e-589bba606050
2009-01-29 02:30:43 +00:00
ruglory 00e160bf1f Confirmation dialog added on main window close to save changed documents
Confirmation dialog added to QCDView close to save if changed


git-svn-id: https://svn.code.sf.net/p/qlscribe/svn/trunk@28 cac9541e-1b8d-4bfa-827e-589bba606050
2009-01-29 02:18:28 +00:00
ruglory 357067be63 When new item added or edited by dialog cdscene notified to be changed
git-svn-id: https://svn.code.sf.net/p/qlscribe/svn/trunk@27 cac9541e-1b8d-4bfa-827e-589bba606050
2009-01-28 21:42:15 +00:00
ruglory 78eafba502 Install updated
git-svn-id: https://svn.code.sf.net/p/qlscribe/svn/trunk@26 cac9541e-1b8d-4bfa-827e-589bba606050
2009-01-28 21:10:08 +00:00
ruglory 2031990216 Added environment variable LIGHTSCRIBEDIR to help cmake find lightScribe api
git-svn-id: https://svn.code.sf.net/p/qlscribe/svn/trunk@25 cac9541e-1b8d-4bfa-827e-589bba606050
2009-01-28 21:06:37 +00:00
ruglory e8125ce680 Added filename and name to cd scene
Added name title on cdview window
Open, "save as" and save reimplemented


git-svn-id: https://svn.code.sf.net/p/qlscribe/svn/trunk@24 cac9541e-1b8d-4bfa-827e-589bba606050
2009-01-28 05:45:57 +00:00
ruglory efebbd450f release 0.2 prepared
git-svn-id: https://svn.code.sf.net/p/qlscribe/svn/trunk@22 cac9541e-1b8d-4bfa-827e-589bba606050
2009-01-27 02:52:28 +00:00
ruglory b1be23c186 Image items can be scaled
git-svn-id: https://svn.code.sf.net/p/qlscribe/svn/trunk@21 cac9541e-1b8d-4bfa-827e-589bba606050
2009-01-27 02:48:48 +00:00
ruglory f6adb5e773 Round text reading bug fixed (did not read angle)
git-svn-id: https://svn.code.sf.net/p/qlscribe/svn/trunk@20 cac9541e-1b8d-4bfa-827e-589bba606050
2009-01-27 01:18:25 +00:00
ruglory d2eac1cb69 Estimated and elapsed time updated on progress dialog
git-svn-id: https://svn.code.sf.net/p/qlscribe/svn/trunk@19 cac9541e-1b8d-4bfa-827e-589bba606050
2009-01-27 01:14:48 +00:00
ruglory cb36403f64 Proper README and INSTALL created
git-svn-id: https://svn.code.sf.net/p/qlscribe/svn/trunk@18 cac9541e-1b8d-4bfa-827e-589bba606050
2009-01-26 18:55:32 +00:00
23 changed files with 601 additions and 102 deletions
+38
View File
@@ -0,0 +1,38 @@
Qt lightScribe Installaton instructions
=======================================
To compile and install, first download release from http://qlscribe.sourceforge.net/
or check out project from subversion repository for particular release:
svn co https://qlscribe.svn.sourceforge.net/svnroot/qlscribe/tags/release-N.M qlscribe
or if you want to test latest development version:
svn co https://qlscribe.svn.sourceforge.net/svnroot/qlscribe/trunk qlscribe
Then go to the source directory and type:
mkdir build
cd build
cmake ..
(If you want to install in a different path, use instead:
cmake .. -DCMAKE_INSTALL_PREFIX=/install/path)
make
sudo make install
If cmake fails to find lightScribe API specify environment variable LIGHTSCRIBEDIR:
LIGHTSCRIBEDIR=/opt/lightscribe cmake ..
Include files should be in ${LIGHTSCRIBEDIR}/include and lib in ${LIGHTSCRIBEDIR}/lib
Once installed, you can start Qt lightScribe by typing "qlscribe", but due to API
requirement if you want to burn qlscribe has to be started by root as "sudo qlscribe"
You need to download lightScribe SDK for qlscribe to build and lightScribe runtime
for qlscribe to run. For details see lightScribe webpage:
http://www.lightscribe.org/
Enjoy!
+14 -3
View File
@@ -1,6 +1,17 @@
NEWS - list of user-visible changes between releases of qlscribe
New in 0.1:
* First release of qlscribe
* *
New in 0.3:
Documents keep their names and detect changes (changes on item postion through window
itself is not detected yet)
Main window on close scan all documents and confirm to save changed ones
Document window confirm to save on close
New in 0.2:
Print progress dialog shows elapsed/estimated time
Bugfix for not loading angle in round text item
Image items can be scaled now
New in 0.1:
Open/save as implemented. Text, round text and image items can be inserted and edited
Print preview and print is working (no exclusive lock or tray lock on printing yet)
+14 -4
View File
@@ -1,7 +1,17 @@
qlscribe
********
Qt lightScribe V 0.1 by Vyacheslav Kononenko <vyacheslav@kononenko.net>
Introduction
============
Qt lightScribe is Qt base application to burn CD/DVD labels on lightScribe capable
drives and medias
This is the first alpha release. Program functionality is very limited at this stage.
Please check the project page for more information, and to report new bugs.
http://qlscribe.sourceforge.net/
Application based on lightScribe(c) API: http://www.lightscribe.org
and requires lightScribe API, available to download from:
http://www.lightscribe.org/downloadSection/linux/index.aspx
Thanks and regards,
Vyacheslav
+3 -2
View File
@@ -18,13 +18,14 @@
#
# $Id$
FIND_PATH( LSCRIBE_INCLUDE_DIR lightscribe.h /usr/local/include )
FIND_PATH( LSCRIBE_INCLUDE_DIR lightscribe.h /usr/local/include $ENV{LIGHTSCRIBEDIR}/include )
FIND_LIBRARY( LSCRIBE_LIBRARY lightscribe /usr/local/lib )
FIND_LIBRARY( LSCRIBE_LIBRARY lightscribe /usr/local/lib $ENV{LIGHTSCRIBEDIR}/lib )
if( LSCRIBE_INCLUDE_DIR AND LSCRIBE_LIBRARY )
SET( LSCRIBE_FOUND TRUE )
SET( LSCRIBE_LIBRARIES ${LSCRIBE_LIBRARY} )
INCLUDE_DIRECTORIES(${LSCRIBE_INCLUDE_DIR})
ENDIF( LSCRIBE_INCLUDE_DIR AND LSCRIBE_LIBRARY )
IF( LSCRIBE_FOUND )
+1
View File
@@ -24,6 +24,7 @@
int main(int argc, char **argv)
{
QApplication app(argc, argv);
app.addLibraryPath( "/usr/lib32/qt4/plugins" );
MainWindow mwindow;
mwindow.show();
+84 -56
View File
@@ -34,16 +34,8 @@
#include <QMessageBox>
#include <QSignalMapper>
#include <QFileDialog>
#include <QXmlStreamWriter>
#include <QLabel>
/*#include <QImage>
#include <QBuffer>
#include <QGraphicsScene>
#include <QFontDialog>
#include <QPainter>*/
//#include <lightscribe.h>
#include <QCloseEvent>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
@@ -116,11 +108,75 @@ MainWindow::~MainWindow()
lscribe->wait( 1000 );
}
bool MainWindow::saveSceneAs( QCDScene *scene )
{
QString fileName =
QFileDialog::getSaveFileName( this,
scene->name() + tr( ": save as" ),
QString(),
tr("qlscribe document (*.qlx)") );
if( fileName.isNull() )
return false;
if( !fileName.contains( '.' ) )
fileName += ".qlx";
return scene->saveAs( fileName );
}
bool MainWindow::saveScene( QCDScene *scene )
{
return scene->isUnnamed() ? saveSceneAs( scene ) : scene->save();
}
void MainWindow::closeEvent(QCloseEvent *event)
{
bool saveAll = false;
QList< QMdiSubWindow * > subs = m_mdiArea->subWindowList();
foreach( QMdiSubWindow *sub, subs ) {
QCDView *cdview = dynamic_cast< QCDView * >( sub->widget() );
if( !cdview )
continue;
QCDScene *scene = cdview->scene();
if( !scene || scene->isSaved() )
continue;
bool save = saveAll;
if( !save ) {
QMessageBox::StandardButton button =
QMessageBox::question( this,
tr( "Confirmation" ),
scene->name() + tr( " is unsaved, do you want to save?" ),
QMessageBox::Save | QMessageBox::SaveAll | QMessageBox::Discard | QMessageBox::Cancel );
if( button == QMessageBox::Cancel ) {
event->ignore();
return;
}
if( button == QMessageBox::SaveAll ) {
saveAll = true;
save = true;
}
if( button == QMessageBox::Save )
save = true;
}
if( save )
if( !saveScene( scene ) ) {
event->ignore();
return;
}
}
event->accept();
}
void MainWindow::onMenuNew()
{
QCDView *newView = new QCDView;
newView->setScene( new QCDScene( newView ) );
//newView->setWindowTitle( "Baba" );
QCDScene *scene = new QCDScene( newView );
newView->setScene( scene );
scene->setName();
QMdiSubWindow *subWindow = m_mdiArea->addSubWindow( newView );
subWindow->show();
}
@@ -161,6 +217,7 @@ void MainWindow::onMenuInsert( int id )
item->setFlag( QGraphicsItem::ItemIsMovable, true );
item->setFlag( QGraphicsItem::ItemIsSelectable, true );
cdscene->addItem( item );
cdscene->setChanged();
}
void MainWindow::onMenuOpen()
@@ -173,33 +230,31 @@ void MainWindow::onMenuOpen()
if( fileName.isNull() )
return;
QFile file( fileName );
if( !file.open( QIODevice::ReadOnly | QIODevice::Text ) ) {
QMessageBox::critical( this, tr( "Error" ), tr( "Cannot open file for reading\n" ) + fileName );
return;
}
QCDView *newView = new QCDView;
QCDScene *scene = new QCDScene( newView );
newView->setScene( scene );
QXmlStreamReader reader( &file );
try {
scene->read( reader );
}
catch( const QString &err ) {
QMessageBox::critical( this, tr( "Error" ), tr( "Cannot read file " ) + fileName + "\n" + err );
if( !scene->load( fileName ) ) {
delete newView;
return;
}
//newView->setWindowTitle( "Baba" );
}
QMdiSubWindow *subWindow = m_mdiArea->addSubWindow( newView );
subWindow->show();
}
void MainWindow::onMenuSave()
{
QCDScene *scene = getScene( m_mdiArea );
if( scene )
saveScene( scene );
}
void MainWindow::onMenuSaveAs()
{
QCDScene *scene = getScene( m_mdiArea );
if( scene )
saveSceneAs( scene );
}
void MainWindow::onMenuPrintPreview()
@@ -219,6 +274,7 @@ void MainWindow::onMenuPrintPreview()
QLabel *label = new QLabel;
label->setPixmap( pixmap );
QMdiSubWindow *subWindow = m_mdiArea->addSubWindow( label );
subWindow->setWindowTitle( "Preview: " + cdscene->name() );
subWindow->show();
}
catch( const QString &err ) {
@@ -235,40 +291,12 @@ void MainWindow::onMenuPrint()
QDialogProgress::exec( this, cdscene );
}
void MainWindow::onMenuSaveAs()
{
QCDScene *cdscene = getScene( m_mdiArea );
if( !cdscene )
return;
QString fileName =
QFileDialog::getSaveFileName( this,
tr( "Save as:" ),
QString(),
tr("qlscribe document (*.qlx)") );
if( fileName.isNull() )
return;
if( !fileName.contains( '.' ) )
fileName += ".qlx";
QFile file( fileName );
if( !file.open( QIODevice::WriteOnly | QIODevice::Truncate | QIODevice::Text ) ) {
QMessageBox::warning( this, tr( "Warning" ), tr( "Cannot open file for writing: " ) + fileName );
return;
}
QXmlStreamWriter writer( &file );
writer.setAutoFormatting( true );
cdscene->write( writer );
}
void MainWindow::onMenuAbout()
{
QMessageBox::about( this,
tr( "About" ),
tr( "<h3>qlscribe - Qt lisghtScribe</h3>"
"<p>$Revision$</p>"
"<p>release 0.3 $Revision$</p>"
"<p>visit project at home page "
"<a href=\"http://qlscribe.sourceforge.net/\">qlscribe.sourceforge.net</a></p>" ) );
}
+7
View File
@@ -25,6 +25,7 @@
class QMdiArea;
class QSignalMapper;
class QCDScene;
class MainWindow : public QMainWindow {
Q_OBJECT
@@ -33,6 +34,10 @@ public:
explicit MainWindow(QWidget *parent = 0);
virtual ~MainWindow();
bool saveScene( QCDScene *scene );
protected:
virtual void closeEvent( QCloseEvent *event );
private slots:
void onMenuNew();
void onMenuOpen();
@@ -45,6 +50,8 @@ private slots:
void onMenuQtAbout();
private:
bool saveSceneAs( QCDScene *scene );
QMdiArea *m_mdiArea;
QMenu *m_menuFile;
+96 -2
View File
@@ -16,7 +16,7 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
$Id:$ */
$Id$ */
#include "qcdscene.h"
#include "qshapefactory.h"
@@ -25,10 +25,17 @@
#include <QMessageBox>
#include <QGraphicsItem>
#include <QGraphicsSceneMouseEvent>
#include <QFile>
#include <QXmlStreamReader>
#include <QXmlStreamWriter>
#include <QMessageBox>
#include <QGraphicsView>
#include <QRegExp>
QCDScene::QCDScene( QObject * parent )
: QGraphicsScene( parent )
: QGraphicsScene( parent ),
m_index( 0 ),
m_saved( true )
{
setSceneRect( -60.0, -60.0, 60.0 * 2, 60.0 * 2 );
}
@@ -39,6 +46,93 @@ QCDScene::~QCDScene()
{
}
bool QCDScene::load( const QString &fileName )
{
QFile file( fileName );
if( !file.open( QIODevice::ReadOnly | QIODevice::Text ) ) {
QMessageBox::critical( 0, tr( "Error" ), tr( "Cannot open file for reading\n" ) + fileName );
return false;
}
QXmlStreamReader reader( &file );
try {
read( reader );
}
catch( const QString &err ) {
QMessageBox::critical( 0, tr( "Error" ), tr( "Cannot read file " ) + fileName + "\n" + err );
return false;
}
m_fileName = fileName;
m_saved = true;
setName();
return true;
}
bool QCDScene::save()
{
QFile file( m_fileName );
if( !file.open( QIODevice::WriteOnly | QIODevice::Truncate | QIODevice::Text ) ) {
QMessageBox::warning( 0, tr( "Warning" ), tr( "Cannot open file for writing: " ) + m_fileName );
return false;
}
QXmlStreamWriter writer( &file );
writer.setAutoFormatting( true );
write( writer );
m_saved = true;
setName();
return true;
}
void QCDScene::setName()
{
if( m_fileName.isEmpty() ) {
if( !m_index ) {
static int index = 1;
m_index = index++;
}
m_name = "Unnamed_" + QString::number( m_index );
} else {
QRegExp rx( "(.*/)?(.*)\\.qlx" );
rx.indexIn( m_fileName );
m_name = rx.cap( 2 );
}
updateTitles();
}
void QCDScene::setChanged()
{
m_saved = false;
updateTitles();
}
void QCDScene::updateTitles() const
{
QString name = m_name;
if( !m_saved )
name += " *";
QList<QGraphicsView *> allViews = views();
foreach( QGraphicsView *view, allViews ) {
view->setWindowTitle( name );
}
}
bool QCDScene::saveAs( const QString &fileName )
{
QFile file( fileName );
if( !file.open( QIODevice::WriteOnly | QIODevice::Truncate | QIODevice::Text ) ) {
QMessageBox::warning( 0, tr( "Warning" ), tr( "Cannot open file for writing: " ) + fileName );
return false;
}
QXmlStreamWriter writer( &file );
writer.setAutoFormatting( true );
write( writer );
m_saved = true;
m_fileName = fileName;
setName();
return true;
}
void QCDScene::write( QXmlStreamWriter &writer )
{
writer.writeStartDocument();
+22 -3
View File
@@ -16,7 +16,7 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
$Id:$ */
$Id$ */
#ifndef QCDSCENE_H
#define QCDSCENE_H
@@ -32,14 +32,33 @@ public:
QCDScene( QObject * parent = 0 );
virtual ~QCDScene();
void write( QXmlStreamWriter &writer );
void read( QXmlStreamReader &reader );
bool isSaved() const { return m_saved; }
bool isUnnamed() const { return m_fileName.isEmpty(); }
void setChanged();
void setName();
bool load( const QString &fileName );
bool save();
bool saveAs( const QString &fileName );
void updateTitles() const;
QString name() const { return m_name; }
protected:
virtual void contextMenuEvent( QGraphicsSceneContextMenuEvent *contextMenuEvent );
private slots:
void onMenuEdit();
private:
void write( QXmlStreamWriter &writer );
void read( QXmlStreamReader &reader );
private:
QString m_name;
QString m_fileName;
int m_index;
bool m_saved;
};
#endif //QCDSCENE_H
+32 -1
View File
@@ -16,10 +16,14 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
$Id:$ */
$Id$ */
#include "qcdview.h"
#include "qcdscene.h"
#include "mainwindow.h"
#include <QCloseEvent>
#include <QMessageBox>
QCDView::QCDView( QWidget *parent )
: QGraphicsView( parent ),
@@ -49,6 +53,33 @@ QCDScene *QCDView::scene() const
return static_cast< QCDScene * >( QGraphicsView::scene() );
}
void QCDView::closeEvent( QCloseEvent *event )
{
QCDScene *cdscene = scene();
if( cdscene && !cdscene->isSaved() ) {
QMessageBox::StandardButton button =
QMessageBox::question( this,
tr( "Confitmation" ),
cdscene->name() + tr( " is changed, do you want to save it?" ),
QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel );
if( button == QMessageBox::Cancel ) {
event->ignore();
return;
}
if( button == QMessageBox::Yes ) {
QWidget *parent = parentWidget();
for( ; parent->parentWidget(); parent = parent->parentWidget() );
if( !static_cast< MainWindow * >( parent )->saveScene( cdscene ) ) {
event->ignore();
return;
}
}
}
event->accept();
}
inline
void drawCircle( QPainter *painter, double radi )
{
+2 -1
View File
@@ -16,7 +16,7 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
$Id:$ */
$Id$ */
#ifndef QCDVIEW_H
#define QCDVIEW_H
@@ -39,6 +39,7 @@ public:
virtual QSize sizeHint () const;
protected:
virtual void closeEvent( QCloseEvent *event );
void drawForeground ( QPainter * painter, const QRectF & rect );
void drawBackground ( QPainter * painter, const QRectF & rect );
+46 -1
View File
@@ -66,11 +66,20 @@ bool QDialogPixmap::exec( QGraphicsItem *graphicsItem )
m_item->setOffset( item->offset() );
m_item->setPixmap( item->pixmap() );
m_item->setData( 0, item->data( 0 ) );
m_item->setTransform( item->transform() );
scene.addItem( m_item );
m_ui->spinX->setValue( m_item->pos().x() );
m_ui->spinY->setValue( m_item->pos().y() );
m_ui->lineEdit->setText( m_item->data( 0 ).toString() );
if( !m_item->pixmap().isNull() ) {
QSize size = m_item->pixmap().size();
QPointF scale = m_item->transform().map( QPointF( size.width(), size.height() ) );
m_ui->spinWidth->setValue( scale.x() );
m_ui->spinHeight->setValue( scale.y() );
m_ui->lockedRatio->setChecked( scale.x() == scale.y() ? Qt::Checked : Qt::Unchecked );
}
connect( m_ui->spinX, SIGNAL(valueChanged(double)),
this, SLOT(posChanged()) );
@@ -78,12 +87,25 @@ bool QDialogPixmap::exec( QGraphicsItem *graphicsItem )
connect( m_ui->spinY, SIGNAL(valueChanged(double)),
this, SLOT(posChanged()) );
connect( m_ui->spinWidth, SIGNAL(valueChanged(double)),
this, SLOT(sizeChanged()) );
connect( m_ui->spinHeight, SIGNAL(valueChanged(double)),
this, SLOT(sizeChanged()) );
connect( m_ui->btnSizeReset, SIGNAL(clicked()),
this, SLOT(onResetSize()) );
connect( m_ui->lockedRatio, SIGNAL(stateChanged(int)),
this, SLOT(sizeChanged()) );
if( QDialog::exec() == Rejected ) return false;
item->setPos( m_item->pos() );
item->setOffset( m_item->offset() );
item->setPixmap( m_item->pixmap() );
item->setData( 0, m_item->data( 0 ) );
item->setTransform( m_item->transform() );
return true;
}
@@ -109,13 +131,36 @@ void QDialogPixmap::onLoadImage()
}
m_item->setPixmap( pixmap );
m_item->setData( 0, fileName );
m_item->setOffset( -QPointF( pixmap.size().height(), pixmap.size().width() ) / 2.0 );
m_item->setOffset( -QPointF( pixmap.size().width(), pixmap.size().height() ) / 2.0 );
m_ui->lineEdit->setText( fileName );
m_ui->buttonBox->setStandardButtons( m_ui->buttonBox->standardButtons() | QDialogButtonBox::Ok );
onResetSize();
}
void QDialogPixmap::posChanged()
{
m_item->setPos( m_ui->spinX->value(), m_ui->spinY->value() );
}
void QDialogPixmap::onResetSize()
{
m_ui->spinWidth->setValue( m_item->pixmap().size().width() / 10.0 );
m_ui->spinHeight->setValue( m_item->pixmap().size().height() / 10.0 );
}
void QDialogPixmap::sizeChanged()
{
if( m_ui->lockedRatio->checkState() == Qt::Checked ) {
QObject *senderObj = sender();
QSize size = m_item->pixmap().size();
if( senderObj == m_ui->spinWidth || senderObj == m_ui->lockedRatio ) {
m_ui->spinHeight->setValue( m_ui->spinWidth->value() / size.width() * size.height() );
} else {
m_ui->spinWidth->setValue( m_ui->spinHeight->value() / size.height() * size.width() );
}
}
m_item->setTransform( QTransform().scale( m_ui->spinWidth->value() / m_item->pixmap().size().width(),
m_ui->spinHeight->value() / m_item->pixmap().size().height() ) );
}
+2
View File
@@ -44,6 +44,8 @@ protected:
private slots:
void onLoadImage();
void posChanged();
void onResetSize();
void sizeChanged();
private:
Ui::QDialogPixmap *m_ui;
+88 -22
View File
@@ -8,12 +8,12 @@
<rect>
<x>0</x>
<y>0</y>
<width>542</width>
<height>649</height>
<width>464</width>
<height>618</height>
</rect>
</property>
<property name="windowTitle" >
<string>Text properties</string>
<string>Image properties</string>
</property>
<property name="modal" >
<bool>false</bool>
@@ -32,15 +32,9 @@
<property name="lineWidth" >
<number>3</number>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2" >
<layout class="QVBoxLayout" name="verticalLayout_3" >
<item>
<layout class="QHBoxLayout" name="horizontalLayout" >
<property name="sizeConstraint" >
<enum>QLayout::SetMaximumSize</enum>
</property>
<property name="bottomMargin" >
<number>0</number>
</property>
<item>
<layout class="QFormLayout" name="formLayout" >
<item row="0" column="0" >
@@ -86,33 +80,105 @@
</layout>
</item>
<item>
<layout class="QFormLayout" name="formLayout_3" >
<property name="fieldGrowthPolicy" >
<enum>QFormLayout::ExpandingFieldsGrow</enum>
</property>
<layout class="QFormLayout" name="formLayout_2" >
<item row="0" column="0" >
<widget class="QLabel" name="label_5" >
<widget class="QLabel" name="label_3" >
<property name="text" >
<string>Image:</string>
<string>Width:</string>
</property>
</widget>
</item>
<item row="0" column="1" >
<widget class="QLineEdit" name="lineEdit" >
<property name="readOnly" >
<bool>true</bool>
<widget class="QDoubleSpinBox" name="spinWidth" >
<property name="minimum" >
<double>1.000000000000000</double>
</property>
<property name="maximum" >
<double>70.000000000000000</double>
</property>
</widget>
</item>
<item row="1" column="0" >
<widget class="QLabel" name="label_4" >
<property name="text" >
<string>Height:</string>
</property>
</widget>
</item>
<item row="1" column="1" >
<widget class="QPushButton" name="btnImage" >
<property name="text" >
<string>Load image...</string>
<widget class="QDoubleSpinBox" name="spinHeight" >
<property name="minimum" >
<double>1.000000000000000</double>
</property>
<property name="maximum" >
<double>70.000000000000000</double>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout_2" >
<item>
<widget class="QCheckBox" name="lockedRatio" >
<property name="text" >
<string>Locked ratio</string>
</property>
<property name="checked" >
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="btnSizeReset" >
<property name="text" >
<string>Reset size</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<spacer name="horizontalSpacer" >
<property name="orientation" >
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0" >
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item>
<layout class="QFormLayout" name="formLayout_3" >
<property name="fieldGrowthPolicy" >
<enum>QFormLayout::ExpandingFieldsGrow</enum>
</property>
<item row="0" column="0" >
<widget class="QLabel" name="label_5" >
<property name="text" >
<string>Image:</string>
</property>
</widget>
</item>
<item row="0" column="1" >
<widget class="QLineEdit" name="lineEdit" >
<property name="readOnly" >
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="1" >
<widget class="QPushButton" name="btnImage" >
<property name="text" >
<string>Load image...</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
+20
View File
@@ -1,3 +1,23 @@
/* qlscribe - Qt based application to print lightScribe discs
Copyright (C) 2009 Vyacheslav Kononenko <vyacheslav@kononenko.net>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
$Id$ */
#include "qdialogprint.h"
#include "ui_qdialogprint.h"
+20
View File
@@ -1,3 +1,23 @@
/* qlscribe - Qt based application to print lightScribe discs
Copyright (C) 2009 Vyacheslav Kononenko <vyacheslav@kononenko.net>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
$Id$ */
#ifndef QDIALOGPRINT_H
#define QDIALOGPRINT_H
+47 -2
View File
@@ -1,21 +1,51 @@
/* qlscribe - Qt based application to print lightScribe discs
Copyright (C) 2009 Vyacheslav Kononenko <vyacheslav@kononenko.net>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
$Id$ */
#include "qdialogprogress.h"
#include "ui_qdialogprogress.h"
#include "qlightscribe.h"
#include "qdialogprint.h"
#include "qcdscene.h"
#include <QMessageBox>
#include <QAbstractButton>
#include <QTime>
#include <QTimer>
QDialogProgress::QDialogProgress(QWidget *parent) :
QDialog(parent),
m_ui(new Ui::QDialogProgress)
m_ui(new Ui::QDialogProgress),
m_start( new QTime ),
m_timer( new QTimer( this ) )
{
m_ui->setupUi(this);
m_start->start();
connect( m_timer, SIGNAL(timeout()), this, SLOT(onTimeout()) );
m_timer->start( 500 );
}
QDialogProgress::~QDialogProgress()
{
delete m_ui;
delete m_start;
delete m_timer;
delete m_ui;
}
void QDialogProgress::changeEvent(QEvent *e)
@@ -38,6 +68,7 @@ bool QDialogProgress::exec( QWidget *parent, QCDScene *scene )
QLightScribe *scribe = QLightScribe::instance();
QDialogProgress dialog( parent );
dialog.setWindowTitle( tr( "Printing: " ) + scene->name() );
connect( dialog.m_ui->buttonBox, SIGNAL(clicked(QAbstractButton*)), &dialog, SLOT(onButtonClicked(QAbstractButton*)) );
connect( scribe, SIGNAL(prepareProgress(long,long)), &dialog, SLOT(onPrepareProgress(long,long)) );
@@ -75,14 +106,28 @@ void QDialogProgress::onLabelProgress( long current, long final )
{
m_ui->progressPrinting->setMaximum( final );
m_ui->progressPrinting->setValue( current );
if( current && double( current ) / final > 0.1 ) {
int elapsed = m_start->elapsed();
int estimate = double( elapsed ) / current * final;
m_ui->timeEstimated->setTime( QTime().addMSecs( estimate ) );
}
}
void QDialogProgress::onTimeEstimate( long time )
{
m_ui->timeEstimated->setTime( QTime().addSecs( time ) );
}
void QDialogProgress::onFinished(int status )
{
m_timer->stop();
m_ui->progressPrinting->setValue( m_ui->progressPrinting->maximum() );
m_ui->lineResult->setText( status ? tr( "Failed - error code: 0x" ) + QString::number( status, 16 ) : tr( "Success" ) );
m_ui->buttonBox->setStandardButtons( QDialogButtonBox::Close );
}
void QDialogProgress::onTimeout()
{
m_ui->timeElapsed->setTime( QTime().addMSecs( m_start->elapsed() ) );
}
+25
View File
@@ -1,3 +1,23 @@
/* qlscribe - Qt based application to print lightScribe discs
Copyright (C) 2009 Vyacheslav Kononenko <vyacheslav@kononenko.net>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
$Id$ */
#ifndef QDIALOGPROGRESS_H
#define QDIALOGPROGRESS_H
@@ -9,6 +29,8 @@ namespace Ui {
class QCDScene;
class QAbstractButton;
class QTime;
class QTimer;
class QDialogProgress : public QDialog {
Q_OBJECT
@@ -22,6 +44,7 @@ protected slots:
void onLabelProgress( long current, long final );
void onTimeEstimate( long time );
void onFinished(int status );
void onTimeout();
protected:
virtual void changeEvent(QEvent *e);
@@ -31,6 +54,8 @@ private:
virtual ~QDialogProgress();
Ui::QDialogProgress *m_ui;
QTime *m_start;
QTimer *m_timer;
};
#endif // QDIALOGPROGRESS_H
+10 -1
View File
@@ -10,7 +10,7 @@
</rect>
</property>
<property name="windowTitle" >
<string>Dialog</string>
<string>Print progress</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2" >
<item>
@@ -85,6 +85,9 @@
<property name="displayFormat" >
<string>hh:mm:ss</string>
</property>
<property name="currentSectionIndex" >
<number>0</number>
</property>
</widget>
</item>
<item row="1" column="0" >
@@ -172,6 +175,12 @@
</item>
</layout>
</widget>
<tabstops>
<tabstop>buttonBox</tabstop>
<tabstop>lineResult</tabstop>
<tabstop>timeEstimated</tabstop>
<tabstop>timeElapsed</tabstop>
</tabstops>
<resources/>
<connections/>
</ui>
+6 -1
View File
@@ -16,7 +16,7 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
$Id:$ */
$Id$ */
#include "qgraphicsroundtextitem.h"
#include "qdialogroundtext.h"
@@ -287,6 +287,11 @@ void QShapeControllerRoundText::readData( const QString &element,
return;
}
if( element == "angle" ) {
textItem->setAngle( data.toDouble() );
return;
}
if( element == "alignment" ) {
textItem->setAlignment( Qt::Alignment( data.toInt() ) );
return;
+1
View File
@@ -1,6 +1,7 @@
TEMPLATE = app
LANGUAGE = C++
CONFIG += qt
INCLUDEPATH += ../build/src
QMAKE_CXXFLAGS += -m32
QMAKE_LFLAGS += -m32
QMAKE_LIBDIR = /usr/lib32
+17 -2
View File
@@ -105,7 +105,11 @@ QString QShapeControllerPixmap::menuName() const
QGraphicsItem *QShapeControllerPixmap::create() const
{
return new QGraphicsPixmapItem;
QGraphicsPixmapItem *item = new QGraphicsPixmapItem;
item->setShapeMode( QGraphicsPixmapItem::BoundingRectShape );
item->setTransformationMode( Qt::SmoothTransformation );
return item;
}
QItemDialog *QShapeControllerPixmap::createDialog( QWidget *parent ) const
@@ -121,10 +125,16 @@ void QShapeControllerPixmap::writeData( QXmlStreamWriter &writer, const QGraphic
writer.writeEmptyElement( "pos" );
writer.writeAttribute(
QXmlStreamAttribute( "x", QString::number( pixmapItem->pos().x() ) ) );
writer.writeAttribute(
QXmlStreamAttribute( "y", QString::number( pixmapItem->pos().y() ) ) );
QPointF scale = pixmapItem->transform().map( QPointF( 1.0, 1.0 ) );
writer.writeEmptyElement( "scale" );
writer.writeAttribute(
QXmlStreamAttribute( "sx", QString::number( scale.x() ) ) );
writer.writeAttribute(
QXmlStreamAttribute( "sy", QString::number( scale.y() ) ) );
writer.writeTextElement( "image", pixmapItem->data( 0 ).toString() );
}
@@ -142,6 +152,11 @@ void QShapeControllerPixmap::readData( const QString &element,
return;
}
if( element == "scale" ) {
pixmapItem->setTransform( QTransform().scale( attrs.value( "sx" ).toString().toDouble(),
attrs.value( "sy" ).toString().toDouble() ) );
}
if( element == "image" ) {
pixmapItem->setData( 0, data );
QPixmap pixmap( data );
+6 -1
View File
@@ -16,9 +16,10 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
$Id:$ */
$Id$ */
#include "qshapefactory.h"
#include "qcdscene.h"
#include <QGraphicsItem>
#include <QMessageBox>
@@ -43,6 +44,10 @@ bool QShapeController::edit( QGraphicsItem *item, QWidget *parent ) const
throw;
}
delete dialog;
if( rez && item->scene() )
static_cast< QCDScene * >( item->scene() )->setChanged();
return rez;
}