Compare commits
32 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 8d3ae587dd | |||
| 4f826f942d | |||
| 5497269ca7 | |||
| f3a8eef96f | |||
| c8a517b222 | |||
| 76ea823c6f | |||
| 0b80340d5e | |||
| e3d9befa07 | |||
| 545eb3a9bb | |||
| 3dc6e5badd | |||
| 14fb9dfd2b | |||
| 890990fb64 | |||
| 759cf0f28a | |||
| 178c6ad757 | |||
| e196cb6bf5 | |||
| 4ed5ad84db | |||
| a828af2348 | |||
| 9c8e9bde5f | |||
| 6bba618cad | |||
| db061768d7 | |||
| 40e1c7291a | |||
| 3d0c7be90c | |||
| 31136eeb12 | |||
| 79813e4a8a | |||
| e0f6307fd4 | |||
| 65e862bdd6 | |||
| 85fc6fed99 | |||
| 00e160bf1f | |||
| 357067be63 | |||
| 78eafba502 | |||
| 2031990216 | |||
| e8125ce680 |
@@ -21,9 +21,14 @@ Then go to the source directory and type:
|
||||
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 "sudo qlscribe"
|
||||
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:
|
||||
|
||||
@@ -1,5 +1,29 @@
|
||||
NEWS - list of user-visible changes between releases of qlscribe
|
||||
|
||||
New in 0.6:
|
||||
Label mode and background color is added to scene
|
||||
Added dialog to edit properties (color and mode) of the scene (label)
|
||||
Scene passes mode to the print dialog
|
||||
|
||||
New in 0.5:
|
||||
Bugfix for crash on writing
|
||||
CD inner size increased to 25mm on QCDView
|
||||
Maximum image size increased to 150
|
||||
Fixed bug with not setting color on round text
|
||||
Text scaled to 1/2
|
||||
Fixed bug with missing button "OK" on pixmap edit dialog
|
||||
|
||||
New in 0.4:
|
||||
Scene detects when item is moved by mouse and changes status to unsaved
|
||||
On installation sticky bit is set, qlscribe becomes root when burns label
|
||||
Bugfix on progress dialog crush with empty document printed
|
||||
|
||||
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
|
||||
|
||||
@@ -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 )
|
||||
|
||||
+12
-6
@@ -18,14 +18,17 @@
|
||||
#
|
||||
# $Id$
|
||||
|
||||
SET( QLSCRIBE_SRCS main.cpp mainwindow.cpp qcdscene.cpp qcdview.cpp qdialogpixmap.cpp qdialogroundtext.cpp
|
||||
qdialogtext.cpp qgraphicsroundtextitem.cpp qlightscribe.cpp qshapecontrollers.cpp qshapefactory.cpp
|
||||
qdialogprint.cpp qdialogprogress.cpp )
|
||||
SET( QLSCRIBE_SRCS main.cpp mainwindow.cpp qcdscene.cpp qcdview.cpp
|
||||
qdialogpixmap.cpp qdialogroundtext.cpp qdialogtext.cpp qlightroundtextitem.cpp
|
||||
qlightscribe.cpp qshapefactory.cpp qlighttextitem.cpp qlightpixmapitem.cpp
|
||||
qdialogprint.cpp qdialogprogress.cpp qdialogcdproperties.cpp)
|
||||
|
||||
SET( QLSCRIBE_UIS qdialogtext.ui qdialogroundtext.ui qdialogpixmap.ui qdialogprint.ui qdialogprogress.ui )
|
||||
SET( QLSCRIBE_UIS qdialogtext.ui qdialogroundtext.ui qdialogpixmap.ui
|
||||
qdialogprint.ui qdialogprogress.ui qdialogcdproperties.ui)
|
||||
|
||||
SET( QLSCRIBE_MOC_HDRS mainwindow.h qcdscene.h qdialogpixmap.h qdialogroundtext.h
|
||||
qdialogtext.h qlightscribe.h qdialogprint.h qdialogprogress.h )
|
||||
qdialogtext.h qlightscribe.h qdialogprint.h qdialogprogress.h
|
||||
qdialogcdproperties.h)
|
||||
|
||||
ADD_DEFINITIONS( -Wall )
|
||||
|
||||
@@ -41,4 +44,7 @@ ADD_EXECUTABLE( qlscribe ${QLSCRIBE_SRCS} ${QLSCRIBE_MOC_SRCS} ${QLSCRIBE_UI_HDR
|
||||
|
||||
TARGET_LINK_LIBRARIES( qlscribe ${QT_LIBRARIES} ${LSCRIBE_LIBRARIES} )
|
||||
|
||||
INSTALL( TARGETS qlscribe DESTINATION bin )
|
||||
INSTALL( TARGETS qlscribe
|
||||
DESTINATION bin
|
||||
PERMISSIONS OWNER_READ OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE SETUID )
|
||||
|
||||
|
||||
+22
-1
@@ -19,13 +19,34 @@
|
||||
$Id$ */
|
||||
|
||||
#include <QApplication>
|
||||
#include <QMessageBox>
|
||||
#include "mainwindow.h"
|
||||
|
||||
uid_t realUserId;
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
QApplication app(argc, argv);
|
||||
app.addLibraryPath( "/usr/lib32/qt4/plugins" );
|
||||
MainWindow mwindow;
|
||||
|
||||
bool enablePrint = false;
|
||||
if( geteuid() ) {
|
||||
if( QMessageBox::question( 0,
|
||||
QObject::tr( "Confirmation" ),
|
||||
QObject::tr( "Print functionality requires setuid (sticky) flag set on the application\n"
|
||||
"This program does not seem to have it set, print functiionality will be disabled\n"
|
||||
"You still will be able to do print preview and edit documents\n"
|
||||
"Do you want to continue?" ),
|
||||
QMessageBox::Yes | QMessageBox::No,
|
||||
QMessageBox::No )
|
||||
== QMessageBox::No )
|
||||
return 1;
|
||||
} else {
|
||||
realUserId = getuid();
|
||||
setreuid( 0, realUserId );
|
||||
enablePrint = true;
|
||||
}
|
||||
MainWindow mwindow( enablePrint );
|
||||
mwindow.show();
|
||||
|
||||
return app.exec();
|
||||
|
||||
+130
-66
@@ -19,13 +19,14 @@
|
||||
$Id$ */
|
||||
|
||||
#include "mainwindow.h"
|
||||
#include "qgraphicsroundtextitem.h"
|
||||
#include "qlightroundtextitem.h"
|
||||
#include "qcdview.h"
|
||||
#include "qcdscene.h"
|
||||
#include "qshapefactory.h"
|
||||
#include "qlightscribe.h"
|
||||
#include "qdialogprint.h"
|
||||
#include "qdialogprogress.h"
|
||||
#include "qdialogcdproperties.h"
|
||||
|
||||
#include <QMenuBar>
|
||||
#include <QStatusBar>
|
||||
@@ -34,30 +35,39 @@
|
||||
#include <QMessageBox>
|
||||
#include <QSignalMapper>
|
||||
#include <QFileDialog>
|
||||
#include <QXmlStreamWriter>
|
||||
#include <QLabel>
|
||||
#include <QCloseEvent>
|
||||
|
||||
/*#include <QImage>
|
||||
#include <QBuffer>
|
||||
#include <QGraphicsScene>
|
||||
#include <QFontDialog>
|
||||
#include <QPainter>*/
|
||||
|
||||
//#include <lightscribe.h>
|
||||
|
||||
MainWindow::MainWindow(QWidget *parent) :
|
||||
QMainWindow(parent),
|
||||
MainWindow::MainWindow( bool enablePrint )
|
||||
: QMainWindow( 0 ),
|
||||
m_mdiArea( new QMdiArea( this ) ),
|
||||
m_menuFile( 0 ), m_menuInsert( 0 ),
|
||||
m_insertMapper( new QSignalMapper( this ) )
|
||||
m_insertMapper( new QSignalMapper( this ) ),
|
||||
m_newLabelMapper( new QSignalMapper( this ) )
|
||||
{
|
||||
setCentralWidget( m_mdiArea );
|
||||
|
||||
m_menuFile = menuBar()->addMenu( tr( "File", "Menu item \"File\"" ) );
|
||||
|
||||
m_menuFile->addAction( tr( "New", "Menu item \"New\"" ),
|
||||
this,
|
||||
SLOT(onMenuNew()) );
|
||||
{
|
||||
QMenu *newSubMenu = m_menuFile->addMenu( tr( "New label", "Menu item \"New lable\"" ) );
|
||||
QAction *action = newSubMenu->addAction( tr( "Full", "Menu item \"Full\"" ),
|
||||
m_newLabelMapper,
|
||||
SLOT(map()) );
|
||||
m_newLabelMapper->setMapping( action, modeFull );
|
||||
|
||||
action = newSubMenu->addAction( tr( "Content", "Menu item \"Content\"" ),
|
||||
m_newLabelMapper,
|
||||
SLOT(map()) );
|
||||
m_newLabelMapper->setMapping( action, modeContent );
|
||||
|
||||
action = newSubMenu->addAction( tr( "Title", "Menu item \"Title\"" ),
|
||||
m_newLabelMapper,
|
||||
SLOT(map()) );
|
||||
m_newLabelMapper->setMapping( action, modeTitle );
|
||||
}
|
||||
connect( m_newLabelMapper, SIGNAL(mapped(int)), this, SLOT(onMenuNewLabel(int)) );
|
||||
|
||||
m_menuFile->addAction( tr( "Open...", "Menu item \"Open\"" ),
|
||||
this,
|
||||
@@ -74,13 +84,22 @@ MainWindow::MainWindow(QWidget *parent) :
|
||||
|
||||
m_menuFile->addSeparator();
|
||||
|
||||
m_menuFile->addAction( tr( "Label properties...", "Menu item \"Label propeties...\"" ),
|
||||
this,
|
||||
SLOT(onMenuProperties()) );
|
||||
|
||||
m_menuFile->addSeparator();
|
||||
|
||||
m_menuFile->addAction( tr( "Print preview...", "Menu item \"Print preview\"" ),
|
||||
this,
|
||||
SLOT(onMenuPrintPreview()) );
|
||||
|
||||
m_menuFile->addAction( tr( "Print...", "Menu item \"Print\"" ),
|
||||
this,
|
||||
SLOT(onMenuPrint()) );
|
||||
QAction *printAction =
|
||||
m_menuFile->addAction( tr( "Print...", "Menu item \"Print\"" ),
|
||||
this,
|
||||
SLOT(onMenuPrint()) );
|
||||
if( !enablePrint )
|
||||
printAction->setEnabled( false );
|
||||
|
||||
m_menuFile->addAction( tr( "Exit", "Menu item \"Exit\"" ),
|
||||
this,
|
||||
@@ -116,11 +135,76 @@ MainWindow::~MainWindow()
|
||||
lscribe->wait( 1000 );
|
||||
}
|
||||
|
||||
void MainWindow::onMenuNew()
|
||||
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::onMenuNewLabel( int mode )
|
||||
{
|
||||
QCDView *newView = new QCDView;
|
||||
newView->setScene( new QCDScene( newView ) );
|
||||
//newView->setWindowTitle( "Baba" );
|
||||
QCDScene *scene = new QCDScene( newView );
|
||||
scene->setLabelMode( LabelMode( mode ) );
|
||||
newView->setScene( scene );
|
||||
scene->setName();
|
||||
|
||||
QMdiSubWindow *subWindow = m_mdiArea->addSubWindow( newView );
|
||||
subWindow->show();
|
||||
}
|
||||
@@ -161,6 +245,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 +258,38 @@ 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::onMenuProperties()
|
||||
{
|
||||
QCDScene *scene = getScene( m_mdiArea );
|
||||
if( scene )
|
||||
QDialogCDProperties::exec( this, scene );
|
||||
}
|
||||
|
||||
void MainWindow::onMenuPrintPreview()
|
||||
@@ -209,6 +299,7 @@ void MainWindow::onMenuPrintPreview()
|
||||
return;
|
||||
|
||||
QLightScribe::PrintParameters params;
|
||||
params.m_labelMode = cdscene->labelMode();
|
||||
QLightDrive *drive = QDialogPrint::exec( this, params );
|
||||
if( !drive )
|
||||
return;
|
||||
@@ -219,6 +310,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 +327,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>release 0.2 $Revision$</p>"
|
||||
"<p>release 0.6 $Revision$</p>"
|
||||
"<p>visit project at home page "
|
||||
"<a href=\"http://qlscribe.sourceforge.net/\">qlscribe.sourceforge.net</a></p>" ) );
|
||||
}
|
||||
|
||||
+11
-2
@@ -25,19 +25,25 @@
|
||||
|
||||
class QMdiArea;
|
||||
class QSignalMapper;
|
||||
class QCDScene;
|
||||
|
||||
class MainWindow : public QMainWindow {
|
||||
Q_OBJECT
|
||||
Q_DISABLE_COPY(MainWindow)
|
||||
public:
|
||||
explicit MainWindow(QWidget *parent = 0);
|
||||
explicit MainWindow( bool enablePrint );
|
||||
virtual ~MainWindow();
|
||||
|
||||
bool saveScene( QCDScene *scene );
|
||||
protected:
|
||||
virtual void closeEvent( QCloseEvent *event );
|
||||
|
||||
private slots:
|
||||
void onMenuNew();
|
||||
void onMenuNewLabel( int mode );
|
||||
void onMenuOpen();
|
||||
void onMenuSave();
|
||||
void onMenuSaveAs();
|
||||
void onMenuProperties();
|
||||
void onMenuPrintPreview();
|
||||
void onMenuPrint();
|
||||
void onMenuInsert( int id );
|
||||
@@ -45,6 +51,8 @@ private slots:
|
||||
void onMenuQtAbout();
|
||||
|
||||
private:
|
||||
bool saveSceneAs( QCDScene *scene );
|
||||
|
||||
QMdiArea *m_mdiArea;
|
||||
|
||||
QMenu *m_menuFile;
|
||||
@@ -52,6 +60,7 @@ private:
|
||||
QMenu *m_menuHelp;
|
||||
|
||||
QSignalMapper *m_insertMapper;
|
||||
QSignalMapper *m_newLabelMapper;
|
||||
};
|
||||
|
||||
#endif // MAINWINDOW_H
|
||||
|
||||
+164
-2
@@ -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,19 @@
|
||||
#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 ),
|
||||
m_labelMode( modeFull ),
|
||||
m_cdColor( Qt::white )
|
||||
{
|
||||
setSceneRect( -60.0, -60.0, 60.0 * 2, 60.0 * 2 );
|
||||
}
|
||||
@@ -39,10 +48,117 @@ 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::setLabelMode( LabelMode mode )
|
||||
{
|
||||
m_labelMode = mode;
|
||||
update();
|
||||
setChanged();
|
||||
}
|
||||
|
||||
void QCDScene::setCDColor( const QColor &color )
|
||||
{
|
||||
m_cdColor = color;
|
||||
update();
|
||||
setChanged();
|
||||
}
|
||||
|
||||
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 = tr( "Label: ", "Window title \"Label\"" ) + m_name;
|
||||
if( !m_saved )
|
||||
name += " *";
|
||||
|
||||
QList<QGraphicsView *> allViews = views();
|
||||
foreach( QGraphicsView *view, allViews ) {
|
||||
view->setWindowTitle( name );
|
||||
}
|
||||
}
|
||||
|
||||
void QCDScene::redrawViews() const
|
||||
{
|
||||
}
|
||||
|
||||
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();
|
||||
writer.writeStartElement( "scene" );
|
||||
writer.writeAttribute( QXmlStreamAttribute( "mode", QString::number( m_labelMode ) ) );
|
||||
writer.writeAttribute( QXmlStreamAttribute( "color", m_cdColor.name() ) );
|
||||
|
||||
QShapeFactory &sfactory = QShapeFactory::instance();
|
||||
QList<QGraphicsItem *> list = items();
|
||||
@@ -76,6 +192,9 @@ void QCDScene::read( QXmlStreamReader &reader )
|
||||
throw QString( "QCDScene: missing expected root element \"scene\", got \"" )
|
||||
+ elementName + "\" intead";
|
||||
|
||||
m_labelMode = LabelMode( reader.attributes().value( "mode" ).toString().toInt() );
|
||||
QString colorStr = reader.attributes().value( "color" ).toString();
|
||||
m_cdColor = colorStr.isEmpty() ? Qt::white : QColor( colorStr );
|
||||
gotScene = true;
|
||||
continue;
|
||||
}
|
||||
@@ -110,6 +229,9 @@ void QCDScene::contextMenuEvent( QGraphicsSceneContextMenuEvent *mouseEvent )
|
||||
item->setSelected( true );
|
||||
QMenu menu;
|
||||
menu.addAction( tr( "edit..." ), this, SLOT( onMenuEdit() ) );
|
||||
menu.addAction( tr( "bring to Front" ), this, SLOT( onMenuToFront() ) );
|
||||
menu.addAction( tr( "send to Back" ), this, SLOT( onMenuToBack() ) );
|
||||
menu.addAction( tr( "delete" ), this, SLOT( onMenuDelete() ) );
|
||||
menu.exec( mouseEvent->screenPos() );
|
||||
}
|
||||
|
||||
@@ -121,3 +243,43 @@ void QCDScene::onMenuEdit()
|
||||
QGraphicsItem *item = list.front();
|
||||
QShapeFactory::instance().edit( item, 0 );
|
||||
}
|
||||
|
||||
void QCDScene::onMenuToFront()
|
||||
{
|
||||
sendItemTo( true );
|
||||
}
|
||||
|
||||
void QCDScene::onMenuToBack()
|
||||
{
|
||||
sendItemTo( false );
|
||||
}
|
||||
|
||||
void QCDScene::onMenuDelete()
|
||||
{
|
||||
QList<QGraphicsItem *> list = selectedItems();
|
||||
if( list.empty() )
|
||||
return;
|
||||
QGraphicsItem *item = list.front();
|
||||
removeItem( item );
|
||||
delete item;
|
||||
setChanged();
|
||||
}
|
||||
|
||||
void QCDScene::sendItemTo( bool front )
|
||||
{
|
||||
if ( selectedItems().isEmpty())
|
||||
return;
|
||||
|
||||
QGraphicsItem *selectedItem = selectedItems().first();
|
||||
QList<QGraphicsItem *> overlapItems = selectedItem->collidingItems();
|
||||
|
||||
qreal zValue = 0;
|
||||
foreach( QGraphicsItem *item, overlapItems ) {
|
||||
if( front && item->zValue() >= zValue )
|
||||
zValue = item->zValue() + 0.1;
|
||||
|
||||
if( !front && item->zValue() <= zValue )
|
||||
zValue = item->zValue() - 0.1;
|
||||
}
|
||||
selectedItem->setZValue( zValue );
|
||||
}
|
||||
|
||||
+37
-3
@@ -16,11 +16,13 @@
|
||||
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
|
||||
|
||||
#include "qlscribe.h"
|
||||
|
||||
#include <QGraphicsScene>
|
||||
|
||||
class QXmlStreamWriter;
|
||||
@@ -32,14 +34,46 @@ public:
|
||||
QCDScene( QObject * parent = 0 );
|
||||
virtual ~QCDScene();
|
||||
|
||||
void write( QXmlStreamWriter &writer );
|
||||
void read( QXmlStreamReader &reader );
|
||||
LabelMode labelMode() const { return m_labelMode; }
|
||||
void setLabelMode( LabelMode mode );
|
||||
|
||||
QColor cdColor() const { return m_cdColor; }
|
||||
void setCDColor( const QColor &color );
|
||||
|
||||
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;
|
||||
void redrawViews() const;
|
||||
QString name() const { return m_name; }
|
||||
|
||||
protected:
|
||||
virtual void contextMenuEvent( QGraphicsSceneContextMenuEvent *contextMenuEvent );
|
||||
|
||||
private slots:
|
||||
void onMenuEdit();
|
||||
void onMenuToFront();
|
||||
void onMenuToBack();
|
||||
void onMenuDelete();
|
||||
|
||||
private:
|
||||
void write( QXmlStreamWriter &writer );
|
||||
void read( QXmlStreamReader &reader );
|
||||
void sendItemTo( bool front );
|
||||
|
||||
private:
|
||||
QString m_name;
|
||||
QString m_fileName;
|
||||
int m_index;
|
||||
bool m_saved;
|
||||
LabelMode m_labelMode;
|
||||
QColor m_cdColor;
|
||||
};
|
||||
|
||||
#endif //QCDSCENE_H
|
||||
|
||||
+80
-8
@@ -16,14 +16,19 @@
|
||||
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 ),
|
||||
m_mask( new QPixmap )
|
||||
m_mask( new QPixmap ),
|
||||
m_labelMode( -1 )
|
||||
{
|
||||
setHorizontalScrollBarPolicy( Qt::ScrollBarAlwaysOff );
|
||||
setVerticalScrollBarPolicy( Qt::ScrollBarAlwaysOff );
|
||||
@@ -49,10 +54,37 @@ 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 )
|
||||
{
|
||||
painter->drawEllipse( -radi, -radi, radi * 2, radi * 2 );
|
||||
painter->drawEllipse( QRectF( -radi, -radi, radi * 2, radi * 2 ) );
|
||||
}
|
||||
|
||||
void QCDView::drawCD( QPainter *painter, const QRectF & rect, bool alpha )
|
||||
@@ -60,11 +92,47 @@ void QCDView::drawCD( QPainter *painter, const QRectF & rect, bool alpha )
|
||||
painter->setBrush( alpha ? Qt::lightGray : Qt::gray );
|
||||
painter->drawRect( rect );
|
||||
|
||||
painter->setBrush( alpha ? Qt::black : Qt::white );
|
||||
drawCircle( painter, 59.0 );
|
||||
const double fullInner = 24.7, fullOuter = 60.0;
|
||||
|
||||
painter->setBrush( alpha ? Qt::lightGray : Qt::darkGray );
|
||||
drawCircle( painter, 21.7 );
|
||||
QCDScene *cdscene = scene();
|
||||
if( cdscene ) {
|
||||
double inner = 0, outer = 0;
|
||||
switch( cdscene->labelMode() ) {
|
||||
case modeFull : inner = 24.7; outer = 60.0; break;
|
||||
case modeTitle : inner = 32.0; outer = 37.4; break;
|
||||
case modeContent : inner = 25.8; outer = 37.4; break;
|
||||
}
|
||||
if( alpha ) {
|
||||
painter->setBrush( Qt::black );
|
||||
drawCircle( painter, outer );
|
||||
|
||||
painter->setBrush( Qt::lightGray );
|
||||
drawCircle( painter, inner );
|
||||
} else {
|
||||
QColor darker( cdscene->cdColor().darker( 150 ) );
|
||||
if( outer < fullOuter ) {
|
||||
painter->setBrush( darker );
|
||||
drawCircle( painter, fullOuter );
|
||||
}
|
||||
|
||||
painter->setBrush( cdscene->cdColor() );
|
||||
drawCircle( painter, outer );
|
||||
|
||||
if( inner > fullInner ) {
|
||||
painter->setBrush( darker );
|
||||
drawCircle( painter, inner );
|
||||
}
|
||||
|
||||
painter->setBrush( Qt::darkGray );
|
||||
drawCircle( painter, fullInner );
|
||||
}
|
||||
} else {
|
||||
painter->setBrush( alpha ? Qt::black : Qt::white );
|
||||
drawCircle( painter, fullOuter );
|
||||
|
||||
painter->setBrush( alpha ? Qt::lightGray : Qt::darkGray );
|
||||
drawCircle( painter, fullInner );
|
||||
}
|
||||
|
||||
painter->setBrush( alpha ? Qt::white : Qt::gray );
|
||||
drawCircle( painter, 10.7 );
|
||||
@@ -73,7 +141,11 @@ void QCDView::drawCD( QPainter *painter, const QRectF & rect, bool alpha )
|
||||
void QCDView::drawForeground ( QPainter * painter, const QRectF & rect )
|
||||
{
|
||||
if( !painter ) return;
|
||||
if( m_mask->size() != frameSize() ) {
|
||||
QCDScene *cdscene = scene();
|
||||
if( m_mask->size() != frameSize() || ( cdscene && m_labelMode != cdscene->labelMode() ) ) {
|
||||
if( cdscene )
|
||||
m_labelMode = cdscene->labelMode();
|
||||
|
||||
*m_mask = QPixmap( frameSize() );
|
||||
|
||||
{
|
||||
|
||||
+3
-1
@@ -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 );
|
||||
@@ -48,6 +49,7 @@ private:
|
||||
void drawCD( QPainter * painter, const QRectF & rect, bool alpha );
|
||||
|
||||
QPixmap *m_mask;
|
||||
int m_labelMode;
|
||||
};
|
||||
|
||||
#endif // QCDVIEW_H
|
||||
|
||||
@@ -0,0 +1,100 @@
|
||||
/* 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 "qdialogcdproperties.h"
|
||||
#include "ui_qdialogcdproperties.h"
|
||||
|
||||
#include "qcdscene.h"
|
||||
|
||||
#include <QColorDialog>
|
||||
|
||||
QDialogCDProperties::QDialogCDProperties(QWidget *parent) :
|
||||
QDialog(parent),
|
||||
m_ui(new Ui::QDialogCDProperties)
|
||||
{
|
||||
m_ui->setupUi(this);
|
||||
connect( m_ui->btnColor, SIGNAL(clicked()), this, SLOT(onColor()) );
|
||||
connect( m_ui->radioModeFull, SIGNAL(toggled(bool)), this, SLOT(onChangeMode()) );
|
||||
connect( m_ui->radioModeContent, SIGNAL(toggled(bool)), this, SLOT(onChangeMode()) );
|
||||
connect( m_ui->radioModeTitle, SIGNAL(toggled(bool)), this, SLOT(onChangeMode()) );
|
||||
}
|
||||
|
||||
bool QDialogCDProperties::exec( QWidget *parent, QCDScene *scene )
|
||||
{
|
||||
QCDScene lscene;
|
||||
lscene.setLabelMode( scene->labelMode() );
|
||||
lscene.setCDColor( scene->cdColor() );
|
||||
|
||||
QDialogCDProperties dialog( parent );
|
||||
dialog.setWindowTitle( tr( "Label properties: ", "Dialog title \"Label properties: \"" )
|
||||
+ scene->name() );
|
||||
dialog.m_ui->cdView->setScene( &lscene );
|
||||
switch( scene->labelMode() ) {
|
||||
case modeFull : dialog.m_ui->radioModeFull->setChecked( true ); break;
|
||||
case modeTitle : dialog.m_ui->radioModeTitle->setChecked( true ); break;
|
||||
case modeContent : dialog.m_ui->radioModeContent->setChecked( true ); break;
|
||||
}
|
||||
|
||||
if( dialog.QDialog::exec() == Rejected ) return false;
|
||||
|
||||
scene->setLabelMode( lscene.labelMode() );
|
||||
scene->setCDColor( lscene.cdColor() );
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
QDialogCDProperties::~QDialogCDProperties()
|
||||
{
|
||||
delete m_ui;
|
||||
}
|
||||
|
||||
void QDialogCDProperties::changeEvent(QEvent *e)
|
||||
{
|
||||
switch (e->type()) {
|
||||
case QEvent::LanguageChange:
|
||||
m_ui->retranslateUi(this);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void QDialogCDProperties::onChangeMode()
|
||||
{
|
||||
QCDScene *scene = m_ui->cdView->scene();
|
||||
if( m_ui->radioModeFull->isChecked() )
|
||||
scene->setLabelMode( modeFull );
|
||||
|
||||
if( m_ui->radioModeTitle->isChecked() )
|
||||
scene->setLabelMode( modeTitle );
|
||||
|
||||
if( m_ui->radioModeContent->isChecked() )
|
||||
scene->setLabelMode( modeContent );
|
||||
}
|
||||
|
||||
void QDialogCDProperties::onColor()
|
||||
{
|
||||
QCDScene *scene = m_ui->cdView->scene();
|
||||
QColor color = QColorDialog::getColor( scene->cdColor(), this );
|
||||
if( color.isValid() ){
|
||||
scene->setCDColor( color );
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
/* 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 QDIALOGCDPROPERTIES_H
|
||||
#define QDIALOGCDPROPERTIES_H
|
||||
|
||||
#include <QtGui/QDialog>
|
||||
|
||||
namespace Ui {
|
||||
class QDialogCDProperties;
|
||||
}
|
||||
|
||||
class QCDScene;
|
||||
|
||||
class QDialogCDProperties : public QDialog {
|
||||
Q_OBJECT
|
||||
Q_DISABLE_COPY(QDialogCDProperties)
|
||||
public:
|
||||
static bool exec( QWidget *parent, QCDScene *scene );
|
||||
|
||||
protected:
|
||||
virtual void changeEvent(QEvent *e);
|
||||
|
||||
private slots:
|
||||
void onChangeMode();
|
||||
void onColor();
|
||||
|
||||
private:
|
||||
explicit QDialogCDProperties(QWidget *parent = 0);
|
||||
virtual ~QDialogCDProperties();
|
||||
|
||||
Ui::QDialogCDProperties *m_ui;
|
||||
};
|
||||
|
||||
#endif // QDIALOGCDPROPERTIES_H
|
||||
@@ -0,0 +1,191 @@
|
||||
<ui version="4.0" >
|
||||
<class>QDialogCDProperties</class>
|
||||
<widget class="QDialog" name="QDialogCDProperties" >
|
||||
<property name="windowModality" >
|
||||
<enum>Qt::NonModal</enum>
|
||||
</property>
|
||||
<property name="geometry" >
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>398</width>
|
||||
<height>532</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle" >
|
||||
<string>Label properties</string>
|
||||
</property>
|
||||
<property name="modal" >
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_3" >
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="verticalLayout" >
|
||||
<item>
|
||||
<widget class="QFrame" name="frame" >
|
||||
<property name="frameShape" >
|
||||
<enum>QFrame::StyledPanel</enum>
|
||||
</property>
|
||||
<property name="frameShadow" >
|
||||
<enum>QFrame::Raised</enum>
|
||||
</property>
|
||||
<property name="lineWidth" >
|
||||
<number>3</number>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_4" >
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout" >
|
||||
<item>
|
||||
<layout class="QFormLayout" name="formLayout" >
|
||||
<item row="0" column="0" >
|
||||
<widget class="QLabel" name="label" >
|
||||
<property name="text" >
|
||||
<string>Label mode:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1" >
|
||||
<widget class="QFrame" name="frame_2" >
|
||||
<property name="frameShape" >
|
||||
<enum>QFrame::StyledPanel</enum>
|
||||
</property>
|
||||
<property name="frameShadow" >
|
||||
<enum>QFrame::Raised</enum>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_3" >
|
||||
<item>
|
||||
<widget class="QRadioButton" name="radioModeFull" >
|
||||
<property name="text" >
|
||||
<string>Full</string>
|
||||
</property>
|
||||
<property name="checked" >
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QRadioButton" name="radioModeTitle" >
|
||||
<property name="text" >
|
||||
<string>Title</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QRadioButton" name="radioModeContent" >
|
||||
<property name="text" >
|
||||
<string>Content</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="btnColor" >
|
||||
<property name="text" >
|
||||
<string>Change color...</string>
|
||||
</property>
|
||||
<property name="autoDefault" >
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</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>
|
||||
<widget class="QCDView" name="cdView" >
|
||||
<property name="sizePolicy" >
|
||||
<sizepolicy vsizetype="Expanding" hsizetype="Expanding" >
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>2</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="baseSize" >
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="interactive" >
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QDialogButtonBox" name="buttonBox" >
|
||||
<property name="orientation" >
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="standardButtons" >
|
||||
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<customwidgets>
|
||||
<customwidget>
|
||||
<class>QCDView</class>
|
||||
<extends>QGraphicsView</extends>
|
||||
<header>qcdview.h</header>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<tabstops>
|
||||
<tabstop>buttonBox</tabstop>
|
||||
</tabstops>
|
||||
<resources/>
|
||||
<connections>
|
||||
<connection>
|
||||
<sender>buttonBox</sender>
|
||||
<signal>accepted()</signal>
|
||||
<receiver>QDialogCDProperties</receiver>
|
||||
<slot>accept()</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel" >
|
||||
<x>258</x>
|
||||
<y>582</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel" >
|
||||
<x>157</x>
|
||||
<y>274</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>buttonBox</sender>
|
||||
<signal>rejected()</signal>
|
||||
<receiver>QDialogCDProperties</receiver>
|
||||
<slot>reject()</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel" >
|
||||
<x>326</x>
|
||||
<y>582</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel" >
|
||||
<x>286</x>
|
||||
<y>274</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
</connections>
|
||||
</ui>
|
||||
@@ -79,6 +79,7 @@ bool QDialogPixmap::exec( QGraphicsItem *graphicsItem )
|
||||
m_ui->spinWidth->setValue( scale.x() );
|
||||
m_ui->spinHeight->setValue( scale.y() );
|
||||
m_ui->lockedRatio->setChecked( scale.x() == scale.y() ? Qt::Checked : Qt::Unchecked );
|
||||
m_ui->buttonBox->setStandardButtons( m_ui->buttonBox->standardButtons() | QDialogButtonBox::Ok );
|
||||
}
|
||||
|
||||
connect( m_ui->spinX, SIGNAL(valueChanged(double)),
|
||||
|
||||
@@ -94,7 +94,7 @@
|
||||
<double>1.000000000000000</double>
|
||||
</property>
|
||||
<property name="maximum" >
|
||||
<double>70.000000000000000</double>
|
||||
<double>200.000000000000000</double>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@@ -111,7 +111,7 @@
|
||||
<double>1.000000000000000</double>
|
||||
</property>
|
||||
<property name="maximum" >
|
||||
<double>70.000000000000000</double>
|
||||
<double>200.000000000000000</double>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
|
||||
+11
-2
@@ -54,6 +54,12 @@ QLightDrive *QDialogPrint::exec( QWidget *parent, QLightScribe::PrintParameters
|
||||
return 0;
|
||||
}
|
||||
QDialogPrint dialog( parent );
|
||||
switch( params.m_labelMode ) {
|
||||
case modeFull : dialog.m_ui->radioModeFull->setChecked( true ); break;
|
||||
case modeContent : dialog.m_ui->radioModeContent->setChecked( true ); break;
|
||||
case modeTitle : dialog.m_ui->radioModeTitle->setChecked( true ); break;
|
||||
}
|
||||
|
||||
int index = 0;
|
||||
foreach( QLightDrive *drv, drives ) {
|
||||
dialog.m_ui->comboDrive->insertItem( index++, drv->displayName() );
|
||||
@@ -63,11 +69,14 @@ QLightDrive *QDialogPrint::exec( QWidget *parent, QLightScribe::PrintParameters
|
||||
|
||||
params = QLightScribe::PrintParameters(); // reset to default
|
||||
|
||||
if( dialog.m_ui->radioModeFull->isChecked() )
|
||||
params.m_labelMode = modeFull;
|
||||
|
||||
if( dialog.m_ui->radioModeTitle->isChecked() )
|
||||
params.m_labelMode = QLightScribe::modeTitle;
|
||||
params.m_labelMode = modeTitle;
|
||||
|
||||
if( dialog.m_ui->radioModeContent->isChecked() )
|
||||
params.m_labelMode = QLightScribe::modeContent;
|
||||
params.m_labelMode = modeContent;
|
||||
|
||||
if( dialog.m_ui->radioQualityNormal->isChecked() )
|
||||
params.m_printQuality = QLightScribe::qualityNormal;
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
#include "ui_qdialogprogress.h"
|
||||
#include "qlightscribe.h"
|
||||
#include "qdialogprint.h"
|
||||
#include "qcdscene.h"
|
||||
|
||||
#include <QMessageBox>
|
||||
#include <QAbstractButton>
|
||||
@@ -61,12 +62,14 @@ void QDialogProgress::changeEvent(QEvent *e)
|
||||
bool QDialogProgress::exec( QWidget *parent, QCDScene *scene )
|
||||
{
|
||||
QLightScribe::PrintParameters params;
|
||||
params.m_labelMode = scene->labelMode();
|
||||
QLightDrive *drive = QDialogPrint::exec( parent, params );
|
||||
if( !drive )
|
||||
return false;
|
||||
|
||||
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)) );
|
||||
@@ -105,7 +108,7 @@ void QDialogProgress::onLabelProgress( long current, long final )
|
||||
m_ui->progressPrinting->setMaximum( final );
|
||||
m_ui->progressPrinting->setValue( current );
|
||||
|
||||
if( current && double( current ) / final > 0.1 ) {
|
||||
if( current && final / double( current ) < 10.0 ) {
|
||||
int elapsed = m_start->elapsed();
|
||||
int estimate = double( elapsed ) / current * final;
|
||||
m_ui->timeEstimated->setTime( QTime().addMSecs( estimate ) );
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
|
||||
#include "qdialogroundtext.h"
|
||||
#include "ui_qdialogroundtext.h"
|
||||
#include "qgraphicsroundtextitem.h"
|
||||
#include "qlightroundtextitem.h"
|
||||
#include "qcdscene.h"
|
||||
|
||||
#include <QFontDialog>
|
||||
@@ -55,13 +55,13 @@ void QDialogRoundText::changeEvent(QEvent *e)
|
||||
|
||||
bool QDialogRoundText::exec( QGraphicsItem *graphicsItem )
|
||||
{
|
||||
QGraphicsRoundTextItem *item = dynamic_cast< QGraphicsRoundTextItem * >( graphicsItem );
|
||||
QLightRoundTextItem *item = dynamic_cast< QLightRoundTextItem * >( graphicsItem );
|
||||
if( !item )
|
||||
return false;
|
||||
|
||||
QCDScene scene;
|
||||
m_ui->cdView->setScene( &scene );
|
||||
m_item = new QGraphicsRoundTextItem;
|
||||
m_item = new QLightRoundTextItem;
|
||||
|
||||
m_item->setPos( item->pos() );
|
||||
m_item->setText( item->text() );
|
||||
@@ -129,6 +129,7 @@ void QDialogRoundText::onFont()
|
||||
{
|
||||
bool ok = true;
|
||||
QFont font = QFontDialog::getFont( &ok, m_item->font(), this );
|
||||
//font.setPointSizeF( font.pointSizeF() / 2.0 );
|
||||
if( ok ) {
|
||||
m_item->setFont( font );
|
||||
fontChanged();
|
||||
|
||||
@@ -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 QDIALOGROUNDTEXT_H
|
||||
#define QDIALOGROUNDTEXT_H
|
||||
@@ -27,7 +27,7 @@ namespace Ui {
|
||||
class QDialogRoundText;
|
||||
}
|
||||
|
||||
class QGraphicsRoundTextItem;
|
||||
class QLightRoundTextItem;
|
||||
|
||||
class QDialogRoundText : public QItemDialog {
|
||||
Q_OBJECT
|
||||
@@ -54,8 +54,8 @@ private slots:
|
||||
void locChanged();
|
||||
|
||||
private:
|
||||
Ui::QDialogRoundText *m_ui;
|
||||
QGraphicsRoundTextItem *m_item;
|
||||
Ui::QDialogRoundText *m_ui;
|
||||
QLightRoundTextItem *m_item;
|
||||
};
|
||||
|
||||
#endif // QDIALOGROUNDTEXT_H
|
||||
|
||||
@@ -206,6 +206,9 @@
|
||||
</item>
|
||||
<item row="0" column="1" >
|
||||
<widget class="QFontComboBox" name="fontName" >
|
||||
<property name="enabled" >
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="editable" >
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
|
||||
+4
-3
@@ -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 "qdialogtext.h"
|
||||
#include "ui_qdialogtext.h"
|
||||
@@ -32,8 +32,8 @@ QDialogText::QDialogText(QWidget *parent) :
|
||||
m_item( 0 )
|
||||
{
|
||||
m_ui->setupUi(this);
|
||||
connect( m_ui->btnFont, SIGNAL(clicked()), this, SLOT(onFont()) );
|
||||
connect( m_ui->btnColor, SIGNAL(clicked()), this, SLOT(onColor()) );
|
||||
connect( m_ui->btnFont, SIGNAL(clicked()), this, SLOT(onFont()) );
|
||||
connect( m_ui->btnColor, SIGNAL(clicked()), this, SLOT(onColor()) );
|
||||
}
|
||||
|
||||
QDialogText::~QDialogText()
|
||||
@@ -66,6 +66,7 @@ bool QDialogText::exec( QGraphicsItem *graphicsItem )
|
||||
m_item->setText( item->text() );
|
||||
m_item->setFont( item->font() );
|
||||
m_item->setBrush( item->brush() );
|
||||
m_item->setTransform( item->transform() );
|
||||
|
||||
scene.addItem( m_item );
|
||||
|
||||
|
||||
@@ -18,78 +18,25 @@
|
||||
|
||||
$Id$ */
|
||||
|
||||
#include "qshapecontrollers.h"
|
||||
#include "qdialogtext.h"
|
||||
#include "qlightpixmapitem.h"
|
||||
#include "qdialogpixmap.h"
|
||||
#include "qcdscene.h"
|
||||
|
||||
#include <QXmlStreamWriter>
|
||||
#include <QXmlStreamReader>
|
||||
|
||||
RegisterController< QShapeControllerText > regControllerText;
|
||||
|
||||
QString QShapeControllerText::name() const
|
||||
QLightPixmapItem::QLightPixmapItem()
|
||||
{
|
||||
return "text";
|
||||
}
|
||||
|
||||
QString QShapeControllerText::menuName() const
|
||||
QVariant QLightPixmapItem::itemChange( GraphicsItemChange change, const QVariant & value )
|
||||
{
|
||||
return QObject::tr( "Text", "QShapeControllerText name" );
|
||||
if( scene() && change == ItemPositionHasChanged )
|
||||
static_cast<QCDScene *>( scene() )->setChanged();
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
QGraphicsItem *QShapeControllerText::create() const
|
||||
{
|
||||
return new QGraphicsSimpleTextItem;
|
||||
}
|
||||
|
||||
QItemDialog *QShapeControllerText::createDialog( QWidget *parent ) const
|
||||
{
|
||||
return new QDialogText( parent );
|
||||
}
|
||||
|
||||
void QShapeControllerText::writeData( QXmlStreamWriter &writer, const QGraphicsItem *item ) const
|
||||
{
|
||||
const QGraphicsSimpleTextItem *textItem = static_cast< const QGraphicsSimpleTextItem * >( item );
|
||||
writer.writeEmptyElement( "pos" );
|
||||
writer.writeAttribute( QXmlStreamAttribute( "x", QString::number( textItem->pos().x() ) ) );
|
||||
writer.writeAttribute( QXmlStreamAttribute( "y", QString::number( textItem->pos().y() ) ) );
|
||||
|
||||
writer.writeTextElement( "font", textItem->font().toString() );
|
||||
writer.writeTextElement( "color", textItem->brush().color().name() );
|
||||
writer.writeTextElement( "text", textItem->text() );
|
||||
}
|
||||
|
||||
|
||||
void QShapeControllerText::readData( const QString &element,
|
||||
const QXmlStreamAttributes &attrs,
|
||||
const QString &data,
|
||||
QGraphicsItem *item ) const
|
||||
{
|
||||
QGraphicsSimpleTextItem *textItem = static_cast< QGraphicsSimpleTextItem * >( item );
|
||||
|
||||
if( element == "pos" ) {
|
||||
textItem->setPos( attrs.value( "x" ).toString().toDouble(),
|
||||
attrs.value( "y" ).toString().toDouble() );
|
||||
return;
|
||||
}
|
||||
|
||||
if( element == "font" ) {
|
||||
QFont font;
|
||||
font.fromString( data );
|
||||
textItem->setFont( font );
|
||||
return;
|
||||
}
|
||||
|
||||
if( element == "color" ) {
|
||||
textItem->setBrush( QColor( data ) );
|
||||
return;
|
||||
}
|
||||
|
||||
if( element == "text" ) {
|
||||
textItem->setText( data );
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
RegisterController< QShapeControllerPixmap > regControllerPixmap;
|
||||
|
||||
@@ -105,7 +52,7 @@ QString QShapeControllerPixmap::menuName() const
|
||||
|
||||
QGraphicsItem *QShapeControllerPixmap::create() const
|
||||
{
|
||||
QGraphicsPixmapItem *item = new QGraphicsPixmapItem;
|
||||
QGraphicsPixmapItem *item = new QLightPixmapItem;
|
||||
item->setShapeMode( QGraphicsPixmapItem::BoundingRectShape );
|
||||
item->setTransformationMode( Qt::SmoothTransformation );
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
/* 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 QLIGHTPIXMAPITEM_H
|
||||
#define QLIGHTPIXMAPITEM_H
|
||||
|
||||
#include <QGraphicsPixmapItem>
|
||||
|
||||
#include "qshapefactory.h"
|
||||
|
||||
class QLightPixmapItem : public QGraphicsPixmapItem
|
||||
{
|
||||
public:
|
||||
QLightPixmapItem();
|
||||
|
||||
protected:
|
||||
virtual QVariant itemChange ( GraphicsItemChange change, const QVariant & value );
|
||||
};
|
||||
|
||||
class QShapeControllerPixmap : public QShapeController {
|
||||
public:
|
||||
enum { Type = QLightPixmapItem::Type };
|
||||
|
||||
virtual QString name() const;
|
||||
virtual QString menuName() const;
|
||||
|
||||
virtual QGraphicsItem *create() const;
|
||||
|
||||
protected:
|
||||
virtual QItemDialog *createDialog( QWidget *parent ) const;
|
||||
virtual void writeData( QXmlStreamWriter &writer, const QGraphicsItem *item ) const;
|
||||
virtual void readData( const QString &element,
|
||||
const QXmlStreamAttributes &attrs,
|
||||
const QString &data,
|
||||
QGraphicsItem *item ) const;
|
||||
};
|
||||
|
||||
|
||||
#endif // QLIGHTPIXMAPITEM_H
|
||||
@@ -18,93 +18,96 @@
|
||||
|
||||
$Id$ */
|
||||
|
||||
#include "qgraphicsroundtextitem.h"
|
||||
#include "qlightroundtextitem.h"
|
||||
#include "qdialogroundtext.h"
|
||||
#include "qcdscene.h"
|
||||
|
||||
#include <QPainter>
|
||||
#include <QFontMetrics>
|
||||
#include <QStyleOptionGraphicsItem>
|
||||
#include <QMessageBox>
|
||||
#include <QXmlStreamWriter>
|
||||
#include <QTextLayout>
|
||||
|
||||
#include <math.h>
|
||||
|
||||
QGraphicsRoundTextItem::QGraphicsRoundTextItem( QGraphicsItem *parent )
|
||||
QLightRoundTextItem::QLightRoundTextItem( QGraphicsItem *parent )
|
||||
: QAbstractGraphicsShapeItem( parent ),
|
||||
m_radius( 40.0 ),
|
||||
m_angle( 0.0 ),
|
||||
m_alignment( Qt::AlignLeft ),
|
||||
m_outside( true )
|
||||
{
|
||||
setBrush( Qt::black );
|
||||
}
|
||||
|
||||
const QFont & QGraphicsRoundTextItem::font() const
|
||||
const QFont & QLightRoundTextItem::font() const
|
||||
{
|
||||
return m_font;
|
||||
}
|
||||
|
||||
const QString & QGraphicsRoundTextItem::text() const
|
||||
const QString & QLightRoundTextItem::text() const
|
||||
{
|
||||
return m_text;
|
||||
}
|
||||
|
||||
double QGraphicsRoundTextItem::radius() const
|
||||
double QLightRoundTextItem::radius() const
|
||||
{
|
||||
return m_radius;
|
||||
}
|
||||
|
||||
double QGraphicsRoundTextItem::angle() const
|
||||
double QLightRoundTextItem::angle() const
|
||||
{
|
||||
return m_angle;
|
||||
}
|
||||
|
||||
Qt::Alignment QGraphicsRoundTextItem::alignment() const
|
||||
Qt::Alignment QLightRoundTextItem::alignment() const
|
||||
{
|
||||
return m_alignment;
|
||||
}
|
||||
|
||||
bool QGraphicsRoundTextItem::outside() const
|
||||
bool QLightRoundTextItem::outside() const
|
||||
{
|
||||
return m_outside;
|
||||
}
|
||||
|
||||
void QGraphicsRoundTextItem::setFont( const QFont &font )
|
||||
void QLightRoundTextItem::setFont( const QFont &font )
|
||||
{
|
||||
prepareGeometryChange();
|
||||
m_font = font;
|
||||
}
|
||||
|
||||
void QGraphicsRoundTextItem::setText( const QString &text )
|
||||
void QLightRoundTextItem::setText( const QString &text )
|
||||
{
|
||||
prepareGeometryChange();
|
||||
m_text = text;
|
||||
}
|
||||
|
||||
void QGraphicsRoundTextItem::setRadius( double radius )
|
||||
void QLightRoundTextItem::setRadius( double radius )
|
||||
{
|
||||
prepareGeometryChange();
|
||||
m_radius = radius;
|
||||
}
|
||||
|
||||
void QGraphicsRoundTextItem::setAngle( double angle )
|
||||
void QLightRoundTextItem::setAngle( double angle )
|
||||
{
|
||||
prepareGeometryChange();
|
||||
m_angle = angle;
|
||||
}
|
||||
|
||||
void QGraphicsRoundTextItem::setAlignment( Qt::Alignment alignment )
|
||||
void QLightRoundTextItem::setAlignment( Qt::Alignment alignment )
|
||||
{
|
||||
prepareGeometryChange();
|
||||
m_alignment = alignment;
|
||||
}
|
||||
|
||||
void QGraphicsRoundTextItem::setOutside( bool outside )
|
||||
void QLightRoundTextItem::setOutside( bool outside )
|
||||
{
|
||||
prepareGeometryChange();
|
||||
m_outside = outside;
|
||||
}
|
||||
|
||||
QRectF QGraphicsRoundTextItem::boundingRect() const
|
||||
QRectF QLightRoundTextItem::boundingRect() const
|
||||
{
|
||||
double height = m_radius;
|
||||
if( m_outside ) {
|
||||
@@ -115,9 +118,11 @@ QRectF QGraphicsRoundTextItem::boundingRect() const
|
||||
return QRectF( -height, -height, 2 * height, 2 * height );
|
||||
}
|
||||
|
||||
QPainterPath QGraphicsRoundTextItem::shape() const
|
||||
QPainterPath QLightRoundTextItem::shape() const
|
||||
{
|
||||
QFontMetrics mcs( m_font );
|
||||
QFont font( m_font );
|
||||
font.setPointSizeF( m_font.pointSizeF() / 2 );
|
||||
QFontMetrics mcs( font );
|
||||
double arcAngle = 0.0;
|
||||
const double pad = 1;
|
||||
|
||||
@@ -164,18 +169,20 @@ QPainterPath QGraphicsRoundTextItem::shape() const
|
||||
}
|
||||
|
||||
|
||||
void QGraphicsRoundTextItem::paint( QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget )
|
||||
void QLightRoundTextItem::paint( QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget )
|
||||
{
|
||||
Q_UNUSED( option );
|
||||
Q_UNUSED( widget );
|
||||
if( !painter || !m_radius ) return;
|
||||
painter->save();
|
||||
|
||||
painter->setFont( m_font );
|
||||
QFont font( m_font );
|
||||
font.setPointSizeF( m_font.pointSizeF() / 2 );
|
||||
painter->setFont( font );
|
||||
|
||||
//painter->drawEllipse( - m_radius, - m_radius, m_radius * 2, m_radius * 2 );
|
||||
|
||||
QFontMetrics mcs( m_font );
|
||||
QFontMetrics mcs( font );
|
||||
|
||||
const double radi = m_radius - ( m_outside ? 0 : mcs.xHeight() );
|
||||
const double diam = 2 * radi;
|
||||
@@ -192,8 +199,14 @@ void QGraphicsRoundTextItem::paint( QPainter *painter, const QStyleOptionGraphic
|
||||
|
||||
QTransform trans;
|
||||
trans.rotateRadians( angle );
|
||||
painter->setRenderHint( QPainter::TextAntialiasing, true );
|
||||
painter->setWorldTransform( trans, true );
|
||||
|
||||
QPen p;
|
||||
p.setBrush( brush() );
|
||||
painter->setPen( p );
|
||||
painter->setBrush( Qt::NoBrush );
|
||||
|
||||
int prevWidth = 0;
|
||||
for( int i = 0; i < m_text.size(); ++i ) {
|
||||
QChar ch = m_text[ i ];
|
||||
@@ -202,9 +215,12 @@ void QGraphicsRoundTextItem::paint( QPainter *painter, const QStyleOptionGraphic
|
||||
trans.reset();
|
||||
trans.rotateRadians( m_outside ? d : -d );
|
||||
painter->setWorldTransform( trans, true );
|
||||
|
||||
prevWidth = mcs.width( ch );
|
||||
|
||||
painter->drawText( -prevWidth / 2.0, m_outside ? -m_radius : m_radius, ch );
|
||||
painter->drawText( int( -prevWidth / 2.0 ),
|
||||
int( m_outside ? -m_radius : m_radius ),
|
||||
ch );
|
||||
}
|
||||
painter->restore();
|
||||
if (option->state & QStyle::State_Selected) {
|
||||
@@ -214,6 +230,14 @@ void QGraphicsRoundTextItem::paint( QPainter *painter, const QStyleOptionGraphic
|
||||
}
|
||||
}
|
||||
|
||||
QVariant QLightRoundTextItem::itemChange( GraphicsItemChange change, const QVariant & value )
|
||||
{
|
||||
if( scene() && change == ItemPositionHasChanged )
|
||||
static_cast<QCDScene *>( scene() )->setChanged();
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
RegisterController< QShapeControllerRoundText > regControllerRoundText;
|
||||
|
||||
QString QShapeControllerRoundText::name() const
|
||||
@@ -228,7 +252,8 @@ QString QShapeControllerRoundText::menuName() const
|
||||
|
||||
QGraphicsItem *QShapeControllerRoundText::create() const
|
||||
{
|
||||
return new QGraphicsRoundTextItem;
|
||||
QLightRoundTextItem *item = new QLightRoundTextItem;
|
||||
return item;
|
||||
}
|
||||
|
||||
QItemDialog *QShapeControllerRoundText::createDialog( QWidget *parent ) const
|
||||
@@ -238,7 +263,7 @@ QItemDialog *QShapeControllerRoundText::createDialog( QWidget *parent ) const
|
||||
|
||||
void QShapeControllerRoundText::writeData( QXmlStreamWriter &writer, const QGraphicsItem *item ) const
|
||||
{
|
||||
const QGraphicsRoundTextItem *textItem = static_cast< const QGraphicsRoundTextItem * >( item );
|
||||
const QLightRoundTextItem *textItem = static_cast< const QLightRoundTextItem * >( item );
|
||||
writer.writeEmptyElement( "pos" );
|
||||
writer.writeAttribute( QXmlStreamAttribute( "x", QString::number( textItem->pos().x() ) ) );
|
||||
writer.writeAttribute( QXmlStreamAttribute( "y", QString::number( textItem->pos().y() ) ) );
|
||||
@@ -257,7 +282,7 @@ void QShapeControllerRoundText::readData( const QString &element,
|
||||
const QString &data,
|
||||
QGraphicsItem *item ) const
|
||||
{
|
||||
QGraphicsRoundTextItem *textItem = static_cast< QGraphicsRoundTextItem * >( item );
|
||||
QLightRoundTextItem *textItem = static_cast< QLightRoundTextItem * >( item );
|
||||
|
||||
if( element == "pos" ) {
|
||||
textItem->setPos( attrs.value( "x" ).toString().toDouble(),
|
||||
@@ -16,21 +16,21 @@
|
||||
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 QGRAPHICSROUNDTEXTITEM_H
|
||||
#define QGRAPHICSROUNDTEXTITEM_H
|
||||
#ifndef QLIGHTROUNDTEXTITEM_H
|
||||
#define QLIGHTROUNDTEXTITEM_H
|
||||
|
||||
#include "qshapefactory.h"
|
||||
|
||||
#include <QAbstractGraphicsShapeItem>
|
||||
#include <QFont>
|
||||
|
||||
class QGraphicsRoundTextItem : public QAbstractGraphicsShapeItem {
|
||||
class QLightRoundTextItem : public QAbstractGraphicsShapeItem {
|
||||
public:
|
||||
enum { Type = UserType + 1 };
|
||||
|
||||
QGraphicsRoundTextItem( QGraphicsItem * parent = 0 );
|
||||
QLightRoundTextItem( QGraphicsItem * parent = 0 );
|
||||
|
||||
const QFont &font() const;
|
||||
const QString &text() const;
|
||||
@@ -53,6 +53,10 @@ public:
|
||||
QWidget *widget );
|
||||
|
||||
virtual int type() const { return Type; }
|
||||
|
||||
protected:
|
||||
virtual QVariant itemChange ( GraphicsItemChange change, const QVariant & value );
|
||||
|
||||
private:
|
||||
QFont m_font;
|
||||
QString m_text;
|
||||
@@ -64,7 +68,7 @@ private:
|
||||
|
||||
class QShapeControllerRoundText : public QShapeController {
|
||||
public:
|
||||
enum { Type = QGraphicsRoundTextItem::Type };
|
||||
enum { Type = QLightRoundTextItem::Type };
|
||||
|
||||
virtual QString name() const;
|
||||
virtual QString menuName() const;
|
||||
@@ -81,4 +85,4 @@ protected:
|
||||
};
|
||||
|
||||
|
||||
#endif // QGRAPHICSROUNDTEXTITEM_H
|
||||
#endif // QLIGHTROUNDTEXTITEM_H
|
||||
+119
-51
@@ -201,6 +201,69 @@ bool QLightScribe::clReportLabelTimeEstimate(long time)
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
namespace {
|
||||
class AutoUidSetter {
|
||||
public:
|
||||
AutoUidSetter() : m_saved( 0 ) {}
|
||||
AutoUidSetter( uid_t userId ) : m_saved( 0 ) { set( userId ); }
|
||||
~AutoUidSetter() { unset(); }
|
||||
|
||||
void set( uid_t userId )
|
||||
{
|
||||
if( userId ) {
|
||||
setreuid( userId, 0 );
|
||||
m_saved = userId;
|
||||
}
|
||||
}
|
||||
void unset()
|
||||
{
|
||||
if( m_saved ) {
|
||||
setreuid( 0, m_saved );
|
||||
m_saved = 0;
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
uid_t m_saved;
|
||||
};
|
||||
|
||||
typedef void (LightScribe::DiscPrinter::*DiscPrinterOp)();
|
||||
|
||||
template<DiscPrinterOp dlock, DiscPrinterOp dunlock >
|
||||
class AutoOp {
|
||||
public:
|
||||
AutoOp( LightScribe::DiscPrinter &printer ) : m_printer( &printer ), m_locked( false ) {}
|
||||
AutoOp() { unlock(); }
|
||||
|
||||
void lock()
|
||||
{
|
||||
if( !m_locked ) {
|
||||
(m_printer->*dlock)();
|
||||
m_locked = true;
|
||||
}
|
||||
}
|
||||
|
||||
void unlock()
|
||||
{
|
||||
if( m_locked ) {
|
||||
try {
|
||||
(m_printer->*dunlock)();
|
||||
}
|
||||
catch(...){}
|
||||
m_locked = false;
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
LightScribe::DiscPrinter *m_printer;
|
||||
bool m_locked;
|
||||
};
|
||||
}
|
||||
|
||||
extern uid_t realUserId;
|
||||
|
||||
void QLightScribe::run()
|
||||
{
|
||||
QMutexLocker lock( m_mutex );
|
||||
@@ -254,69 +317,74 @@ void QLightScribe::run()
|
||||
throw tr( "Cannot find drive: \"" ) + m_task->m_selectedDrive->displayName() + "\"";
|
||||
|
||||
DiscPrinter printer = printers.Item( found );
|
||||
function = "LS_DiscPrinter_OpenPrintSession";
|
||||
DiscPrintSession session = printer.OpenPrintSession();
|
||||
|
||||
LS_PrintCallbacks callbacks;
|
||||
callbacks.AbortLabel = clAbortLabel;
|
||||
callbacks.ReportPrepareProgress = clReportPrepareProgress;
|
||||
callbacks.ReportLabelProgress = clReportLabelProgress;
|
||||
callbacks.ReportFinished = clReportFinished;
|
||||
callbacks.ReportLabelTimeEstimate = clReportLabelTimeEstimate;
|
||||
AutoUidSetter autoUid;
|
||||
AutoOp< &DiscPrinter::AddExclusiveUse, &DiscPrinter::ReleaseExclusiveUse > autoExclusive( printer );
|
||||
AutoOp< &DiscPrinter::LockDriveTray, &DiscPrinter::UnlockDriveTray > autoLock( printer );
|
||||
|
||||
session.SetProgressCallback( &callbacks );
|
||||
if( m_task->m_action == Task::print ) {
|
||||
autoUid.set( realUserId );
|
||||
function = "LS_DiscPrinter_AddExclusiveUse";
|
||||
autoExclusive.lock();
|
||||
function = "LS_DiscPrinter_LockDriveTray";
|
||||
autoLock.lock();
|
||||
}
|
||||
|
||||
const size_t bitmapHeaderSize = 54;
|
||||
{
|
||||
function = "LS_DiscPrinter_OpenPrintSession";
|
||||
DiscPrintSession session = printer.OpenPrintSession();
|
||||
|
||||
if( m_task->m_action == Task::preview ) {
|
||||
LS_PrintCallbacks callbacks;
|
||||
callbacks.AbortLabel = clAbortLabel;
|
||||
callbacks.ReportPrepareProgress = clReportPrepareProgress;
|
||||
callbacks.ReportLabelProgress = clReportLabelProgress;
|
||||
callbacks.ReportFinished = clReportFinished;
|
||||
callbacks.ReportLabelTimeEstimate = clReportLabelTimeEstimate;
|
||||
|
||||
LS_Size size;
|
||||
size.x = m_task->m_size.width();
|
||||
size.y = m_task->m_size.height();
|
||||
session.SetProgressCallback( &callbacks );
|
||||
|
||||
m_task->m_tmpFile.open();
|
||||
const size_t bitmapHeaderSize = 54;
|
||||
|
||||
function = "LS_DiscPrintSession_PrintPreview";
|
||||
session.PrintPreview( LS_windows_bitmap,
|
||||
LS_LabelMode( m_task->m_parameters.m_labelMode ),
|
||||
LS_DrawOptions( m_task->m_parameters.m_drawOptions ),
|
||||
LS_PrintQuality( m_task->m_parameters.m_printQuality ),
|
||||
LS_MediaOptimizationLevel( m_task->m_parameters.m_mediaOptimizationLevel ),
|
||||
if( m_task->m_action == Task::preview ) {
|
||||
|
||||
LS_Size size;
|
||||
size.x = m_task->m_size.width();
|
||||
size.y = m_task->m_size.height();
|
||||
|
||||
m_task->m_tmpFile.open();
|
||||
|
||||
function = "LS_DiscPrintSession_PrintPreview";
|
||||
session.PrintPreview( LS_windows_bitmap,
|
||||
LS_LabelMode( m_task->m_parameters.m_labelMode ),
|
||||
LS_DrawOptions( m_task->m_parameters.m_drawOptions ),
|
||||
LS_PrintQuality( m_task->m_parameters.m_printQuality ),
|
||||
LS_MediaOptimizationLevel( m_task->m_parameters.m_mediaOptimizationLevel ),
|
||||
ba.data() + 14,
|
||||
bitmapHeaderSize - 14,
|
||||
ba.data() + bitmapHeaderSize,
|
||||
ba.size() - bitmapHeaderSize,
|
||||
m_task->m_tmpFile.fileName().toAscii().data(),
|
||||
LS_windows_bitmap,
|
||||
size,
|
||||
true );
|
||||
} else {
|
||||
PrintParameters params = m_task->m_parameters;
|
||||
delete m_task;
|
||||
m_task = 0;
|
||||
lock.unlock();
|
||||
// print here
|
||||
session.PrintDisc( LS_windows_bitmap,
|
||||
LS_LabelMode( params.m_labelMode ),
|
||||
LS_DrawOptions( params.m_drawOptions ),
|
||||
LS_PrintQuality( params.m_printQuality ),
|
||||
LS_MediaOptimizationLevel( params.m_mediaOptimizationLevel ),
|
||||
ba.data() + 14,
|
||||
bitmapHeaderSize - 14,
|
||||
ba.data() + bitmapHeaderSize,
|
||||
ba.size() - bitmapHeaderSize,
|
||||
m_task->m_tmpFile.fileName().toAscii().data(),
|
||||
LS_windows_bitmap,
|
||||
size,
|
||||
true );
|
||||
} else {
|
||||
PrintParameters params = m_task->m_parameters;
|
||||
delete m_task;
|
||||
m_task = 0;
|
||||
lock.unlock();
|
||||
// print here
|
||||
try {
|
||||
//printer.AddExclusiveUse();
|
||||
//printer.LockDriveTray();
|
||||
session.PrintDisc( LS_windows_bitmap,
|
||||
LS_LabelMode( params.m_labelMode ),
|
||||
LS_DrawOptions( params.m_drawOptions ),
|
||||
LS_PrintQuality( params.m_printQuality ),
|
||||
LS_MediaOptimizationLevel( params.m_mediaOptimizationLevel ),
|
||||
ba.data() + 14,
|
||||
bitmapHeaderSize - 14,
|
||||
ba.data() + bitmapHeaderSize,
|
||||
ba.size() - bitmapHeaderSize );
|
||||
ba.size() - bitmapHeaderSize );
|
||||
}
|
||||
catch( LightScribe::LSException &ex ) {
|
||||
emit finished( ex.GetCode() );
|
||||
throw;
|
||||
}
|
||||
|
||||
//printer.UnlockDriveTray();
|
||||
//printer.ReleaseExclusiveUse();
|
||||
}
|
||||
|
||||
function = "";
|
||||
}
|
||||
}
|
||||
|
||||
+2
-9
@@ -21,6 +21,8 @@
|
||||
#ifndef QLIGHTSCRIBE_H
|
||||
#define QLIGHTSCRIBE_H
|
||||
|
||||
#include "qlscribe.h"
|
||||
|
||||
#include <QThread>
|
||||
#include <QPixmap>
|
||||
|
||||
@@ -37,15 +39,6 @@ class QLightDrive;
|
||||
class QLightScribe : public QThread {
|
||||
Q_OBJECT
|
||||
public:
|
||||
enum LabelMode {
|
||||
/** label the entire disc */
|
||||
modeFull=0,
|
||||
/** label within the title mode constraints */
|
||||
modeTitle=1,
|
||||
/** label within the content mode constraints */
|
||||
modeContent=2
|
||||
};
|
||||
|
||||
enum DrawOptions {
|
||||
/** disable scaling of bitmaps; they will be cropped if needed */
|
||||
drawDefault=0,
|
||||
|
||||
@@ -0,0 +1,110 @@
|
||||
/* 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 "qlighttextitem.h"
|
||||
#include "qdialogtext.h"
|
||||
#include "qcdscene.h"
|
||||
|
||||
#include <QXmlStreamWriter>
|
||||
#include <QXmlStreamReader>
|
||||
|
||||
|
||||
QLightTextItem::QLightTextItem()
|
||||
{
|
||||
}
|
||||
|
||||
QVariant QLightTextItem::itemChange( GraphicsItemChange change, const QVariant & value )
|
||||
{
|
||||
if( scene() && change == ItemPositionHasChanged )
|
||||
static_cast<QCDScene *>( scene() )->setChanged();
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
|
||||
RegisterController< QShapeControllerText > regControllerText;
|
||||
|
||||
QString QShapeControllerText::name() const
|
||||
{
|
||||
return "text";
|
||||
}
|
||||
|
||||
QString QShapeControllerText::menuName() const
|
||||
{
|
||||
return QObject::tr( "Text", "QShapeControllerText name" );
|
||||
}
|
||||
|
||||
QGraphicsItem *QShapeControllerText::create() const
|
||||
{
|
||||
QGraphicsItem *item = new QLightTextItem;
|
||||
item->setTransform( QTransform().scale( 0.5, 0.5 ), true );
|
||||
item->setPos( 0, -40.0 );
|
||||
|
||||
return item;
|
||||
}
|
||||
|
||||
QItemDialog *QShapeControllerText::createDialog( QWidget *parent ) const
|
||||
{
|
||||
return new QDialogText( parent );
|
||||
}
|
||||
|
||||
void QShapeControllerText::writeData( QXmlStreamWriter &writer, const QGraphicsItem *item ) const
|
||||
{
|
||||
const QGraphicsSimpleTextItem *textItem = static_cast< const QGraphicsSimpleTextItem * >( item );
|
||||
writer.writeEmptyElement( "pos" );
|
||||
writer.writeAttribute( QXmlStreamAttribute( "x", QString::number( textItem->pos().x() ) ) );
|
||||
writer.writeAttribute( QXmlStreamAttribute( "y", QString::number( textItem->pos().y() ) ) );
|
||||
|
||||
writer.writeTextElement( "font", textItem->font().toString() );
|
||||
writer.writeTextElement( "color", textItem->brush().color().name() );
|
||||
writer.writeTextElement( "text", textItem->text() );
|
||||
}
|
||||
|
||||
|
||||
void QShapeControllerText::readData( const QString &element,
|
||||
const QXmlStreamAttributes &attrs,
|
||||
const QString &data,
|
||||
QGraphicsItem *item ) const
|
||||
{
|
||||
QGraphicsSimpleTextItem *textItem = static_cast< QGraphicsSimpleTextItem * >( item );
|
||||
|
||||
if( element == "pos" ) {
|
||||
textItem->setPos( attrs.value( "x" ).toString().toDouble(),
|
||||
attrs.value( "y" ).toString().toDouble() );
|
||||
return;
|
||||
}
|
||||
|
||||
if( element == "font" ) {
|
||||
QFont font;
|
||||
font.fromString( data );
|
||||
textItem->setFont( font );
|
||||
return;
|
||||
}
|
||||
|
||||
if( element == "color" ) {
|
||||
textItem->setBrush( QColor( data ) );
|
||||
return;
|
||||
}
|
||||
|
||||
if( element == "text" ) {
|
||||
textItem->setText( data );
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -18,17 +18,26 @@
|
||||
|
||||
$Id$ */
|
||||
|
||||
#ifndef QSHAPECONTROLLERS_H
|
||||
#define QSHAPECONTROLLERS_H
|
||||
#ifndef QLIGHTTEXTITEM_H
|
||||
#define QLIGHTTEXTITEM_H
|
||||
|
||||
#include <QGraphicsSimpleTextItem>
|
||||
|
||||
#include "qshapefactory.h"
|
||||
|
||||
#include <QGraphicsSimpleTextItem>
|
||||
#include <QGraphicsPixmapItem>
|
||||
class QLightTextItem : public QGraphicsSimpleTextItem
|
||||
{
|
||||
public:
|
||||
QLightTextItem();
|
||||
|
||||
protected:
|
||||
virtual QVariant itemChange ( GraphicsItemChange change, const QVariant & value );
|
||||
|
||||
};
|
||||
|
||||
class QShapeControllerText : public QShapeController {
|
||||
public:
|
||||
enum { Type = QGraphicsSimpleTextItem::Type };
|
||||
enum { Type = QLightTextItem::Type };
|
||||
|
||||
virtual QString name() const;
|
||||
virtual QString menuName() const;
|
||||
@@ -44,22 +53,4 @@ protected:
|
||||
QGraphicsItem *item ) const;
|
||||
};
|
||||
|
||||
class QShapeControllerPixmap : public QShapeController {
|
||||
public:
|
||||
enum { Type = QGraphicsPixmapItem::Type };
|
||||
|
||||
virtual QString name() const;
|
||||
virtual QString menuName() const;
|
||||
|
||||
virtual QGraphicsItem *create() const;
|
||||
|
||||
protected:
|
||||
virtual QItemDialog *createDialog( QWidget *parent ) const;
|
||||
virtual void writeData( QXmlStreamWriter &writer, const QGraphicsItem *item ) const;
|
||||
virtual void readData( const QString &element,
|
||||
const QXmlStreamAttributes &attrs,
|
||||
const QString &data,
|
||||
QGraphicsItem *item ) const;
|
||||
};
|
||||
|
||||
#endif // QSHAPECONTROLLERS_H
|
||||
#endif // QLIGHTTEXTITEM_H
|
||||
@@ -0,0 +1,33 @@
|
||||
/* 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 QLSCRIBE_H
|
||||
#define QLSCRIBE_H
|
||||
|
||||
enum LabelMode {
|
||||
/** label the entire disc */
|
||||
modeFull=0,
|
||||
/** label within the title mode constraints */
|
||||
modeTitle=1,
|
||||
/** label within the content mode constraints */
|
||||
modeContent=2
|
||||
};
|
||||
|
||||
#endif // QLSCRIBE_H
|
||||
+13
-7
@@ -7,32 +7,38 @@ QMAKE_LFLAGS += -m32
|
||||
QMAKE_LIBDIR = /usr/lib32
|
||||
SOURCES += main.cpp \
|
||||
mainwindow.cpp \
|
||||
qgraphicsroundtextitem.cpp \
|
||||
qlightroundtextitem.cpp \
|
||||
qcdview.cpp \
|
||||
qcdscene.cpp \
|
||||
qshapefactory.cpp \
|
||||
qshapecontrollers.cpp \
|
||||
qdialogtext.cpp \
|
||||
qdialogroundtext.cpp \
|
||||
qlightscribe.cpp \
|
||||
qdialogpixmap.cpp \
|
||||
qdialogprint.cpp \
|
||||
qdialogprogress.cpp
|
||||
qdialogprogress.cpp \
|
||||
qlighttextitem.cpp \
|
||||
qlightpixmapitem.cpp \
|
||||
qdialogcdproperties.cpp
|
||||
QMAKE_LIBS += -llightscribe
|
||||
HEADERS += mainwindow.h \
|
||||
qgraphicsroundtextitem.h \
|
||||
qlightroundtextitem.h \
|
||||
qcdview.h \
|
||||
qcdscene.h \
|
||||
qshapefactory.h \
|
||||
qshapecontrollers.h \
|
||||
qdialogtext.h \
|
||||
qdialogroundtext.h \
|
||||
qlightscribe.h \
|
||||
qdialogpixmap.h \
|
||||
qdialogprint.h \
|
||||
qdialogprogress.h
|
||||
qdialogprogress.h \
|
||||
qlighttextitem.h \
|
||||
qlightpixmapitem.h \
|
||||
qlscribe.h \
|
||||
qdialogcdproperties.h
|
||||
FORMS += qdialogtext.ui \
|
||||
qdialogroundtext.ui \
|
||||
qdialogpixmap.ui \
|
||||
qdialogprint.ui \
|
||||
qdialogprogress.ui
|
||||
qdialogprogress.ui \
|
||||
qdialogcdproperties.ui
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user