Compare commits
11 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| c67c6bc864 | |||
| d32d6ab1e6 | |||
| 06b2f841dc | |||
| b55b148cca | |||
| 086181cd8f | |||
| 51402c10d6 | |||
| c298a43b2f | |||
| 577280f001 | |||
| be3a94cf74 | |||
| 9537ece5fd | |||
| 704cfe0831 |
@@ -1,5 +1,13 @@
|
||||
NEWS - list of user-visible changes between releases of qlscribe
|
||||
|
||||
New in 0.12:
|
||||
Fixed bug for round text not updating last used font
|
||||
Main window stores/restores position and size from/to config
|
||||
Round text changes radius and angle when dragged by mouse instead of moving the center
|
||||
Added ability to open image as a document
|
||||
Bugfix for labels opened from commandline not updating menu
|
||||
Bugfix for not properly drawing partially covered window background
|
||||
|
||||
New in 0.11:
|
||||
Application settings added with default font to use and option to eject media
|
||||
Added functionality to eject media after print
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
#
|
||||
# $Id$
|
||||
|
||||
FIND_PATH( LSCRIBE_INCLUDE_DIR lightscribe.h /usr/local/include /usr/include/lightsribe $ENV{LIGHTSCRIBEDIR}/include )
|
||||
FIND_PATH( LSCRIBE_INCLUDE_DIR lightscribe.h /usr/local/include /usr/include/lightscribe $ENV{LIGHTSCRIBEDIR}/include )
|
||||
|
||||
FIND_LIBRARY( LSCRIBE_LIBRARY lightscribe /usr/local/lib /opt/lightscribe/lib /opt/lightscribe/lib32 $ENV{LIGHTSCRIBEDIR}/lib )
|
||||
|
||||
|
||||
Vendored
+2
-1
@@ -1,4 +1,5 @@
|
||||
qlscribe (0.11-0ubuntu1) unstable; urgency=low
|
||||
qlscribe (0.12-0ubuntu1) unstable; urgency=low
|
||||
* Release 0.12 imported
|
||||
* Release 0.11 imported
|
||||
* Release 0.10 imported
|
||||
* Release 0.9 imported
|
||||
|
||||
+27
-4
@@ -40,6 +40,8 @@
|
||||
#include <QCloseEvent>
|
||||
#include <QApplication>
|
||||
#include <QClipboard>
|
||||
#include <QSettings>
|
||||
#include <QImageReader>
|
||||
|
||||
|
||||
MainWindow::MainWindow( bool enablePrint )
|
||||
@@ -173,6 +175,13 @@ MainWindow::MainWindow( bool enablePrint )
|
||||
this, SLOT(updateMenu()) );
|
||||
|
||||
updateMenu();
|
||||
|
||||
QSettings settings;
|
||||
|
||||
settings.beginGroup( "MainWindow");
|
||||
resize( settings.value( "size", QSize(800, 400) ).toSize() );
|
||||
move( settings.value( "pos", QPoint(200, 200) ).toPoint() );
|
||||
settings.endGroup();
|
||||
}
|
||||
|
||||
MainWindow::~MainWindow()
|
||||
@@ -190,6 +199,8 @@ void MainWindow::open( const QStringList &files )
|
||||
delete newView;
|
||||
continue;
|
||||
}
|
||||
connect( scene, SIGNAL(selectionChanged()), this, SLOT(updateMenu()) );
|
||||
connect( scene, SIGNAL(changed()), this, SLOT(updateMenu()) );
|
||||
|
||||
QMdiSubWindow *subWindow = m_mdiArea->addSubWindow( newView );
|
||||
subWindow->show();
|
||||
@@ -255,6 +266,13 @@ bool MainWindow::saveScene( QCDScene *scene )
|
||||
return;
|
||||
}
|
||||
}
|
||||
QSettings settings;
|
||||
|
||||
settings.beginGroup( "MainWindow" );
|
||||
settings.setValue( "size", size());
|
||||
settings.setValue( "pos", pos());
|
||||
settings.endGroup();
|
||||
|
||||
event->accept();
|
||||
}
|
||||
|
||||
@@ -305,18 +323,23 @@ void MainWindow::onMenuInsert( int id )
|
||||
return;
|
||||
}
|
||||
|
||||
item->setFlag( QGraphicsItem::ItemIsMovable, true );
|
||||
item->setFlag( QGraphicsItem::ItemIsSelectable, true );
|
||||
cdscene->addItem( item );
|
||||
cdscene->setChanged();
|
||||
}
|
||||
|
||||
void MainWindow::onMenuOpen()
|
||||
{
|
||||
QString filter( tr("qlscribe document (*.qlx)\nImages ( ") );
|
||||
QList<QByteArray> list = QImageReader::supportedImageFormats();
|
||||
foreach( QByteArray arr, list ) {
|
||||
filter += QString( "*." ) + arr.data() + " ";
|
||||
}
|
||||
filter += tr( ")\nAll Files (*)" );
|
||||
|
||||
QString fileName = QFileDialog::getOpenFileName( this,
|
||||
tr( "Open:" ),
|
||||
QString(),
|
||||
tr("qlscribe document (*.qlx)") );
|
||||
filter );
|
||||
|
||||
if( fileName.isNull() )
|
||||
return;
|
||||
@@ -437,7 +460,7 @@ void MainWindow::onMenuAbout()
|
||||
QMessageBox::about( this,
|
||||
tr( "About" ),
|
||||
tr( "<h3>qlscribe - Qt lisghtScribe</h3>"
|
||||
"<p>release 0.11 $Revision$</p>"
|
||||
"<p>release 0.12 $Revision$</p>"
|
||||
"<p>visit project at home page "
|
||||
"<a href=\"http://qlscribe.sourceforge.net/\">qlscribe.sourceforge.net</a></p>" ) );
|
||||
}
|
||||
|
||||
+48
-24
@@ -20,6 +20,7 @@
|
||||
|
||||
#include "qcdscene.h"
|
||||
#include "qshapefactory.h"
|
||||
#include "qlightpixmapitem.h"
|
||||
|
||||
#include <QMenu>
|
||||
#include <QMessageBox>
|
||||
@@ -34,6 +35,7 @@
|
||||
#include <QApplication>
|
||||
#include <QClipboard>
|
||||
#include <QMimeData>
|
||||
#include <QRegExp>
|
||||
|
||||
QCDScene::QCDScene( QObject * parent )
|
||||
: QGraphicsScene( parent ),
|
||||
@@ -81,31 +83,53 @@ void QCDScene::start( LabelMode mode )
|
||||
|
||||
bool QCDScene::load( const QString &fileName, QString *errMessage )
|
||||
{
|
||||
QFile file( fileName );
|
||||
if( !file.open( QIODevice::ReadOnly | QIODevice::Text ) ) {
|
||||
if( errMessage )
|
||||
*errMessage = "cannot open file for reading";
|
||||
else
|
||||
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 ) {
|
||||
if( errMessage )
|
||||
*errMessage = err;
|
||||
else
|
||||
QMessageBox::critical( 0, tr( "Error" ), tr( "Cannot read file " ) + fileName + "\n" + err );
|
||||
return false;
|
||||
}
|
||||
m_fileName = fileName;
|
||||
m_saved = true;
|
||||
setName();
|
||||
if( QRegExp( ".*.\\.qlx$", Qt::CaseInsensitive ).exactMatch( fileName ) ) {
|
||||
QFile file( fileName );
|
||||
if( !file.open( QIODevice::ReadOnly | QIODevice::Text ) ) {
|
||||
if( errMessage )
|
||||
*errMessage = "cannot open file for reading";
|
||||
else
|
||||
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 ) {
|
||||
if( errMessage )
|
||||
*errMessage = err;
|
||||
else
|
||||
QMessageBox::critical( 0, tr( "Error" ), tr( "Cannot read file " ) + fileName + "\n" + err );
|
||||
return false;
|
||||
}
|
||||
m_fileName = fileName;
|
||||
m_saved = true;
|
||||
setName();
|
||||
|
||||
pushUndo();
|
||||
return true;
|
||||
pushUndo();
|
||||
return true;
|
||||
}
|
||||
QShapeFactory &sfactory = QShapeFactory::instance();
|
||||
QLightPixmapItem *item =
|
||||
static_cast<QLightPixmapItem *>(sfactory.create( QShapeControllerPixmap::Type ) );
|
||||
addItem( item );
|
||||
if( item->loadImage( fileName ) ) {
|
||||
QSize size = item->pixmap().size();
|
||||
item->setOffset( -QPointF( size.height(), size.width() ) / 2.0 );
|
||||
item->setTransform( QTransform().scale( size.width() ? 120.0 / size.width() : 1.0,
|
||||
size.height() ? 120.0 / size.height() : 1.0 ) );
|
||||
setName();
|
||||
pushUndo();
|
||||
return true;
|
||||
} else {
|
||||
if( errMessage )
|
||||
*errMessage = "cannot load image";
|
||||
else
|
||||
QMessageBox::critical( 0, tr( "Error" ), tr( "Cannot load image " ) +
|
||||
fileName + "\n" );
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
+3
-2
@@ -147,18 +147,19 @@ void QCDView::drawForeground ( QPainter * painter, const QRectF & rect )
|
||||
m_labelMode = cdscene->labelMode();
|
||||
|
||||
*m_mask = QPixmap( frameSize() );
|
||||
QRectF rectf( QPointF( -frameSize().width(), -frameSize().height() ), frameSize() * 2 );
|
||||
|
||||
{
|
||||
QPainter paint( m_mask );
|
||||
paint.setWorldTransform( painter->transform() );
|
||||
drawCD( &paint, rect, false );
|
||||
drawCD( &paint, rectf, false );
|
||||
}
|
||||
|
||||
{
|
||||
QPixmap alpha( frameSize() );
|
||||
QPainter paint( &alpha );
|
||||
paint.setWorldTransform( painter->transform() );
|
||||
drawCD( &paint, rect, true );
|
||||
drawCD( &paint, rectf, true );
|
||||
m_mask->setAlphaChannel( alpha );
|
||||
}
|
||||
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
#include "ui_qdialogroundtext.h"
|
||||
#include "qlightroundtextitem.h"
|
||||
#include "qcdscene.h"
|
||||
#include "qdialogsettings.h"
|
||||
|
||||
#include <QFontDialog>
|
||||
#include <QColorDialog>
|
||||
@@ -132,6 +133,7 @@ void QDialogRoundText::onFont()
|
||||
//font.setPointSizeF( font.pointSizeF() / 2.0 );
|
||||
if( ok ) {
|
||||
m_item->setFont( font );
|
||||
QDialogSettings::setLastUsedFont( font );
|
||||
fontChanged();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,6 +29,17 @@ QLightPixmapItem::QLightPixmapItem()
|
||||
{
|
||||
}
|
||||
|
||||
bool QLightPixmapItem::loadImage( const QString &name )
|
||||
{
|
||||
QPixmap pixmap( name );
|
||||
if( pixmap.isNull() )
|
||||
return false;
|
||||
m_imageName = name;
|
||||
setPixmap( pixmap );
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
QVariant QLightPixmapItem::itemChange( GraphicsItemChange change, const QVariant & value )
|
||||
{
|
||||
if( scene() && change == ItemPositionHasChanged )
|
||||
|
||||
@@ -25,11 +25,11 @@
|
||||
|
||||
#include "qshapefactory.h"
|
||||
|
||||
class QLightPixmapItem : public QGraphicsPixmapItem
|
||||
{
|
||||
class QLightPixmapItem : public QGraphicsPixmapItem {
|
||||
public:
|
||||
QLightPixmapItem();
|
||||
|
||||
bool loadImage( const QString &name );
|
||||
void imageName( const QString &name ) { m_imageName = name; }
|
||||
const QString &imageName() const { return m_imageName; }
|
||||
|
||||
|
||||
@@ -29,6 +29,7 @@
|
||||
#include <QMessageBox>
|
||||
#include <QXmlStreamWriter>
|
||||
#include <QTextLayout>
|
||||
#include <QGraphicsSceneMouseEvent>
|
||||
|
||||
#include <math.h>
|
||||
|
||||
@@ -231,14 +232,38 @@ void QLightRoundTextItem::paint( QPainter *painter, const QStyleOptionGraphicsIt
|
||||
}
|
||||
}
|
||||
|
||||
QVariant QLightRoundTextItem::itemChange( GraphicsItemChange change, const QVariant & value )
|
||||
inline
|
||||
double distance( const QPointF &p1, const QPointF &p2 )
|
||||
{
|
||||
if( scene() && change == ItemPositionHasChanged )
|
||||
static_cast<QCDScene *>( scene() )->itemMoved();
|
||||
|
||||
return value;
|
||||
QPointF d = p1 - p2;
|
||||
return sqrt( d.x() * d.x() + d.y() * d.y() );
|
||||
}
|
||||
|
||||
inline
|
||||
double angle( const QPointF &p1, const QPointF &p2 )
|
||||
{
|
||||
QPointF d = p1 - p2;
|
||||
return atan2( d.y(), d.x() ) * 180.0 / 3.14159;
|
||||
}
|
||||
|
||||
void QLightRoundTextItem::mouseMoveEvent( QGraphicsSceneMouseEvent *event )
|
||||
{
|
||||
if( event->buttons() & Qt::LeftButton ) {
|
||||
double dradi = distance( scenePos(), event->lastScenePos() ) - distance( scenePos(), event->scenePos() );
|
||||
double dangle = ::angle( scenePos(), event->lastScenePos() ) - ::angle( scenePos(), event->scenePos() );
|
||||
|
||||
prepareGeometryChange();
|
||||
m_radius -= dradi;
|
||||
m_angle -= dangle;
|
||||
if( m_angle > 360.0 ) m_angle -= 360.0;
|
||||
if( m_angle < 0.0 ) m_angle += 360.0;
|
||||
|
||||
static_cast<QCDScene *>( scene() )->itemMoved();
|
||||
} else
|
||||
event->ignore();
|
||||
}
|
||||
|
||||
|
||||
RegisterController< QShapeControllerRoundText > regControllerRoundText;
|
||||
|
||||
QString QShapeControllerRoundText::name() const
|
||||
|
||||
@@ -55,7 +55,7 @@ public:
|
||||
virtual int type() const { return Type; }
|
||||
|
||||
protected:
|
||||
virtual QVariant itemChange ( GraphicsItemChange change, const QVariant & value );
|
||||
virtual void mouseMoveEvent( QGraphicsSceneMouseEvent *event );
|
||||
|
||||
private:
|
||||
QFont m_font;
|
||||
|
||||
@@ -118,7 +118,13 @@ QString QShapeFactory::name( int type ) const
|
||||
QGraphicsItem *QShapeFactory::create( int type ) const
|
||||
{
|
||||
QShapeController *ctrl = getController( type );
|
||||
return ctrl ? ctrl->create() : 0;
|
||||
if( !ctrl ) return 0;
|
||||
QGraphicsItem *item = ctrl->create();
|
||||
if( item ) {
|
||||
item->setFlag( QGraphicsItem::ItemIsMovable, true );
|
||||
item->setFlag( QGraphicsItem::ItemIsSelectable, true );
|
||||
}
|
||||
return item;
|
||||
}
|
||||
|
||||
bool QShapeFactory::edit( QGraphicsItem *item, QWidget *parent ) const
|
||||
|
||||
Reference in New Issue
Block a user