diff options
15 files changed, 15183 insertions, 105 deletions
diff --git a/editors/calligra/Makefile b/editors/calligra/Makefile index 36889951226f..e85d413c5897 100644 --- a/editors/calligra/Makefile +++ b/editors/calligra/Makefile @@ -7,6 +7,7 @@ PORTNAME= koffice PORTVERSION= 1.4.0a +PORTREVISION= 1 PORTEPOCH= 1 CATEGORIES= editors kde MASTER_SITES= ${MASTER_SITE_KDE} diff --git a/editors/calligra/files/patch-1.4.0_patchset_1.diff b/editors/calligra/files/patch-1.4.0_patchset_1.diff new file mode 100644 index 000000000000..bf61a1b9ba41 --- /dev/null +++ b/editors/calligra/files/patch-1.4.0_patchset_1.diff @@ -0,0 +1,5060 @@ +Index: kformula/kformulapart.desktop +=================================================================== +--- kformula/kformulapart.desktop (revision 427945) ++++ kformula/kformulapart.desktop (working copy) +@@ -19,6 +19,7 @@ + Name[pt]=Componente de Fórmulas do KOffice + Name[pt_BR]=Componente de Fórmulas do KOffice + Name[ru]=Компонент формул KOffice ++Name[sl]=Komponenta za enačbe za KOffice + Name[sr]=KOffice-ова компонента за формуле + Name[sr@Latn]=KOffice-ova komponenta za formule + Name[sv]=Koffice-formelkomponent +Index: servicetypes/koplugin.desktop +=================================================================== +--- servicetypes/koplugin.desktop (revision 427945) ++++ servicetypes/koplugin.desktop (working copy) +@@ -22,6 +22,7 @@ + Comment[fi]=KOffice-laajennus + Comment[fo]=KSkrivstovu-ístingur + Comment[fr]=Module externe de KOffice ++Comment[ga]=Breiseán KOffice + Comment[he]=תוסף של KOffice + Comment[hr]=KOffice dodatak + Comment[hu]=KOffice-bővítőmodul +Index: servicetypes/kofficepart.desktop +=================================================================== +--- servicetypes/kofficepart.desktop (revision 427945) ++++ servicetypes/kofficepart.desktop (working copy) +@@ -22,6 +22,7 @@ + Comment[fa]=KOffice اجزای + Comment[fi]=KOffice-komponentti + Comment[fr]=Composant KOffice ++Comment[ga]=Comhpháirt KOffice + Comment[he]=רכיב של KOffice + Comment[hr]=KOffice komponenta + Comment[hu]=KOffice-komponens +Index: servicetypes/kofilter.desktop +=================================================================== +--- servicetypes/kofilter.desktop (revision 427945) ++++ servicetypes/kofilter.desktop (working copy) +@@ -22,6 +22,7 @@ + Comment[fi]=KOffice-suodin + Comment[fo]=KSkrivstovu-filtur + Comment[fr]=Filtre KOffice ++Comment[ga]=Scagaire KOffice + Comment[he]=מסנן של KOffice + Comment[hr]=KOffice filter + Comment[hu]=KOffice-szűrő +Index: kword/kwordpart.desktop +=================================================================== +--- kword/kwordpart.desktop (revision 427945) ++++ kword/kwordpart.desktop (working copy) +@@ -20,6 +20,7 @@ + Name[pt]=Componente de Processamento de Texto do KOffice + Name[pt_BR]=Componente de Processamento de Texto do KOffice + Name[ru]=Компонент текстового редактора KOffice ++Name[sl]=Komponenta za obdelovanje besedil za KOffice + Name[sr]=KOffice-ова компонента за обраду текста + Name[sr@Latn]=KOffice-ova komponenta za obradu teksta + Name[sv]=Koffice-ordbehandlingskomponent +Index: kword/kwmailmerge.desktop +=================================================================== +--- kword/kwmailmerge.desktop (revision 427945) ++++ kword/kwmailmerge.desktop (working copy) +@@ -17,6 +17,7 @@ + Comment[et]=KWordi kirjakoosteplugin + Comment[fi]=KWord-postituslaajennus + Comment[fr]=Module fusion de courrier pour KWord ++Comment[ga]=Breiseán postchumaisc KWord + Comment[he]=תוסף מיזוג דואר ל־KWord + Comment[hr]=KWord dodatak za mailmerge + Comment[hu]=KWord körlevél-bővítőmodul +Index: kword/configfootnotedia.h +=================================================================== +--- kword/configfootnotedia.h (revision 427945) ++++ kword/configfootnotedia.h (working copy) +@@ -28,7 +28,7 @@ + class QRadioButton; + class KIntNumInput; + class QComboBox; +-class KoUnitDoubleSpinBox; ++class KoBuggyUnitDoubleSpinBox; + + class KWConfigFootNoteDia : public KDialogBase + { +@@ -47,7 +47,7 @@ + QRadioButton *rbPosCentered; + QRadioButton *rbPosRight; + KIntNumInput *spLength; +- KoUnitDoubleSpinBox *spWidth; ++ KoBuggyUnitDoubleSpinBox *spWidth; + QComboBox *m_cbLineType; + protected slots: + virtual void slotOk(); +Index: kword/kwconfig.cc +=================================================================== +--- kword/kwconfig.cc (revision 427945) ++++ kword/kwconfig.cc (working copy) +@@ -301,7 +301,7 @@ + + QHBox* hbGridX = new QHBox( gbInterfaceGroup ); + QLabel* labelGridX = new QLabel( i18n("&Horizontal grid size:"), hbGridX ); +- gridX=new KoUnitDoubleSpinBox( hbGridX, ++ gridX=new KoBuggyUnitDoubleSpinBox( hbGridX, + 0.1, + 50, + 0.1, +@@ -313,7 +313,7 @@ + + QHBox* hbGridY = new QHBox( gbInterfaceGroup ); + QLabel* labelGridY = new QLabel( i18n("&Vertical grid size:"), hbGridY ); +- gridY=new KoUnitDoubleSpinBox( hbGridY, ++ gridY=new KoBuggyUnitDoubleSpinBox( hbGridY, + 0.1, + 50, + 0.1, +@@ -326,7 +326,7 @@ + + QHBox* hbIndent = new QHBox( gbInterfaceGroup ); + QLabel* labelIdent = new QLabel( i18n("&Paragraph indent by toolbar buttons:"), hbIndent ); +- indent = new KoUnitDoubleSpinBox( hbIndent, ++ indent = new KoBuggyUnitDoubleSpinBox( hbIndent, + 0.1, + 50, + 0.1, +@@ -662,7 +662,7 @@ + + QHBox* hbColumnSpacing = new QHBox( gbDocumentDefaults ); + QLabel* columnSpacingLabel = new QLabel( i18n("Default column spacing:"), hbColumnSpacing ); +- m_columnSpacing = new KoUnitDoubleSpinBox( hbColumnSpacing, ++ m_columnSpacing = new KoBuggyUnitDoubleSpinBox( hbColumnSpacing, + 0.1, + 50, + 0.1, +@@ -764,7 +764,7 @@ + + QHBox* hbTabStop = new QHBox( gbDocumentSettings ); + tabStop = new QLabel(i18n("Tab stop (%1):").arg(doc->unitName()), hbTabStop); +- m_tabStopWidth = new KoUnitDoubleSpinBox( hbTabStop, ++ m_tabStopWidth = new KoBuggyUnitDoubleSpinBox( hbTabStop, + MM_TO_POINT(2), + doc->ptPaperWidth(), + 0.1, +Index: kword/framedia.cc +=================================================================== +--- kword/framedia.cc (revision 427945) ++++ kword/framedia.cc (working copy) +@@ -956,7 +956,7 @@ + lx->resize( lx->sizeHint() ); + pGrid->addWidget( lx, 1, 0 ); + +- sx = new KoUnitDoubleSpinBox( grp1, 0, 9999, 1, 0.0, doc->unit() ); ++ sx = new KoBuggyUnitDoubleSpinBox( grp1, 0, 9999, 1, 0.0, doc->unit() ); + + sx->resize( sx->sizeHint() ); + pGrid->addWidget( sx, 1, 1 ); +@@ -965,7 +965,7 @@ + ly->resize( ly->sizeHint() ); + pGrid->addWidget( ly, 1, 2 ); + +- sy = new KoUnitDoubleSpinBox( grp1, 0, 9999, 1, 0.0, doc->unit() ); ++ sy = new KoBuggyUnitDoubleSpinBox( grp1, 0, 9999, 1, 0.0, doc->unit() ); + sy->resize( sy->sizeHint() ); + pGrid->addWidget( sy, 1, 3 ); + +@@ -973,7 +973,7 @@ + lw->resize( lw->sizeHint() ); + pGrid->addWidget( lw, 2, 0 ); + +- sw = new KoUnitDoubleSpinBox( grp1, 0, 9999, 1, 0.0, doc->unit() ); ++ sw = new KoBuggyUnitDoubleSpinBox( grp1, 0, 9999, 1, 0.0, doc->unit() ); + + sw->resize( sw->sizeHint() ); + connect( sw, SIGNAL(valueChanged(double)), +@@ -985,7 +985,7 @@ + lh->resize( lh->sizeHint() ); + pGrid->addWidget( lh, 2, 2 ); + +- sh = new KoUnitDoubleSpinBox( grp1, 0, 9999, 1, 0.0, doc->unit() ); ++ sh = new KoBuggyUnitDoubleSpinBox( grp1, 0, 9999, 1, 0.0, doc->unit() ); + connect( sh, SIGNAL(valueChanged(double)), + this, SLOT(slotUpdateWidthForHeight(double)) ); + +@@ -1095,7 +1095,7 @@ + + f=allFrames.next(); + } +- // TODO port to KoUnitDoubleSpinBox ++ // TODO port to KoBuggyUnitDoubleSpinBox + // and TODO show a special value when frames have a different width/height + if ( sw->isEnabled() ) + sw->setValue( KoUnit::toUserValue( commonWidth, doc->unit() ) ); +@@ -2103,7 +2103,7 @@ + //lml->resize( lml->sizeHint() ); + mGrid->addWidget( lml, 2, 0 ); + +- m_inputLeft = new KoUnitDoubleSpinBox( grp2, 0, 9999, 1, 0.0, doc->unit() ); ++ m_inputLeft = new KoBuggyUnitDoubleSpinBox( grp2, 0, 9999, 1, 0.0, doc->unit() ); + + mGrid->addWidget( m_inputLeft, 2, 1 ); + +@@ -2111,7 +2111,7 @@ + //lmt->resize( lmt->sizeHint() ); + mGrid->addWidget( lmt, 2, 2 ); + +- m_inputTop = new /*KDoubleNumInput*/KoUnitDoubleSpinBox( grp2, 0, 9999, 1, 0.0, doc->unit() ); ++ m_inputTop = new /*KDoubleNumInput*/KoBuggyUnitDoubleSpinBox( grp2, 0, 9999, 1, 0.0, doc->unit() ); + + //m_inputTop->resize( m_inputTop->sizeHint() ); + +@@ -2121,7 +2121,7 @@ + //lmr->resize( lmr->sizeHint() ); + mGrid->addWidget( lmr, 3, 0 ); + +- m_inputRight = new KoUnitDoubleSpinBox( grp2, 0, 9999, 1, 0.0, doc->unit() ); ++ m_inputRight = new KoBuggyUnitDoubleSpinBox( grp2, 0, 9999, 1, 0.0, doc->unit() ); + + //m_inputRight->resize( m_inputRight->sizeHint() ); + mGrid->addWidget( m_inputRight, 3, 1 ); +@@ -2130,7 +2130,7 @@ + //lmb->resize( lmb->sizeHint() ); + mGrid->addWidget( lmb, 3, 2 ); + +- m_inputBottom = new KoUnitDoubleSpinBox( grp2, 0, 9999, 1, 0.0, doc->unit() ); ++ m_inputBottom = new KoBuggyUnitDoubleSpinBox( grp2, 0, 9999, 1, 0.0, doc->unit() ); + + //m_inputBottom->resize( m_inputBottom->sizeHint() ); + mGrid->addWidget( m_inputBottom, 3, 3 ); +Index: kword/resizetabledia.cc +=================================================================== +--- kword/resizetabledia.cc (revision 427945) ++++ kword/resizetabledia.cc (working copy) +@@ -77,7 +77,7 @@ + else + value->setValue( type == ROW ? (rowSelected+1) : (colSelected+1) ); + rc = new QLabel( type == ROW ? i18n( "Height (%1):" ).arg(doc->unitName()) : i18n( "Width (%1):" ).arg(doc->unitName()), page ); +- position= new KoUnitDoubleSpinBox( page, 0.01, table->anchorFrameset()->isFloating() ? table->anchorFrameset()->frame(0)->width(): 9999, 1, 0.0, doc->unit(), doc->unit() ); ++ position= new KoBuggyUnitDoubleSpinBox( page, 0.01, table->anchorFrameset()->isFloating() ? table->anchorFrameset()->frame(0)->width(): 9999, 1, 0.0, doc->unit(), doc->unit() ); + slotValueChanged( value->value()); + connect( value, SIGNAL( valueChanged ( int )), this, SLOT( slotValueChanged( int ))); + +Index: kword/mailmerge/sql/kwserialletter_qtsqldb.desktop +=================================================================== +--- kword/mailmerge/sql/kwserialletter_qtsqldb.desktop (revision 427945) ++++ kword/mailmerge/sql/kwserialletter_qtsqldb.desktop (working copy) +@@ -4,6 +4,7 @@ + ServiceTypes=KWord/MailMergePlugin + + Name=Qt-SQL Source (single table) ++Name[cy]=Ffynhonell Qt-SQL (tabl sengl) + Name[da]=Qt-SQL-kilde (enkelt tabel) + Name[de]=Qt-SQL (Einzeltabelle) + Name[el]=Qt-SQL πηγή (μονός πίνακας) +Index: kword/mailmerge/kspread/kwmailmerge_kspread.desktop +=================================================================== +--- kword/mailmerge/kspread/kwmailmerge_kspread.desktop (revision 427945) ++++ kword/mailmerge/kspread/kwmailmerge_kspread.desktop (working copy) +@@ -22,6 +22,7 @@ + Name[pt]=Fonte de Tabela do KSpread + Name[pt_BR]=Fonte de Tabela do KSpread + Name[ru]=Источник таблиц KSpread ++Name[sl]=Vir tabel KSpread + Name[sr]=KSpread-ов извор табеле + Name[sr@Latn]=KSpread-ov izvor tabele + Name[sv]=Kspread-tabellkällfil +Index: kword/framedia.h +=================================================================== +--- kword/framedia.h (revision 427945) ++++ kword/framedia.h (working copy) +@@ -81,7 +81,7 @@ + void slotValueChanged( double ); + + private: +- KoUnitDoubleSpinBox *m_inputLeft, *m_inputRight, *m_inputTop, *m_inputBottom; ++ KoBuggyUnitDoubleSpinBox *m_inputLeft, *m_inputRight, *m_inputTop, *m_inputBottom; + QCheckBox *m_synchronize; + KWDocument *doc; + bool m_changed; +@@ -168,7 +168,7 @@ + QWidget *tab4; + QGroupBox *grp1; + QLabel *lx, *ly, *lw, *lh; +- KoUnitDoubleSpinBox *sx, *sy, *sw, *sh; ++ KoBuggyUnitDoubleSpinBox *sx, *sy, *sw, *sh; + KWFourSideConfigWidget* m_paddingConfigWidget; + QCheckBox *floating; + QCheckBox *protectSize; +Index: kword/kwconfig.h +=================================================================== +--- kword/kwconfig.h (revision 427945) ++++ kword/kwconfig.h (working copy) +@@ -29,7 +29,7 @@ + class KWView; + class QCheckBox; + class KIntNumInput; +-class KoUnitDoubleSpinBox; ++class KoBuggyUnitDoubleSpinBox; + class KConfig; + class QComboBox; + class KIntNumInput; +@@ -69,8 +69,8 @@ + KWView* m_pView; + KConfig* config; + QComboBox *m_unitCombo; +- KoUnitDoubleSpinBox* gridX,*gridY; +- KoUnitDoubleSpinBox* indent; ++ KoBuggyUnitDoubleSpinBox* gridX,*gridY; ++ KoBuggyUnitDoubleSpinBox* indent; + KIntNumInput* recentFiles; + QCheckBox *showStatusBar, *showScrollBar, *pgUpDownMovesCaret; + int oldNbRecentFiles; +@@ -114,7 +114,7 @@ + QLabel *fontName; + QLabel *tabStop; + +- KoUnitDoubleSpinBox* m_columnSpacing; ++ KoBuggyUnitDoubleSpinBox* m_columnSpacing; + + KIntNumInput* autoSave; + int oldAutoSaveValue; +@@ -123,7 +123,7 @@ + int m_oldStartingPage; + bool m_oldBackupFile; + KIntNumInput* m_variableNumberOffset; +- KoUnitDoubleSpinBox *m_tabStopWidth; ++ KoBuggyUnitDoubleSpinBox *m_tabStopWidth; + QCheckBox *m_cursorInProtectedArea; + QCheckBox *m_createBackupFile; + // QCheckBox *m_directInsertCursor; +Index: kword/configfootnotedia.cc +=================================================================== +--- kword/configfootnotedia.cc (revision 427945) ++++ kword/configfootnotedia.cc (working copy) +@@ -106,7 +106,7 @@ + + QGridLayout *layout = new QGridLayout( 0, 1, 1, 0, 6); + +- spWidth = new KoUnitDoubleSpinBox(page, 0, 5, 0.5, 1.0, m_doc->unit(), 1); ++ spWidth = new KoBuggyUnitDoubleSpinBox(page, 0, 5, 0.5, 1.0, m_doc->unit(), 1); + spWidth->setValue( m_doc->footNoteSeparatorLineWidth()); + layout->addWidget( spWidth, 1, 1 ); + +Index: kword/templates/DTP/SimpleLayout.desktop +=================================================================== +--- kword/templates/DTP/SimpleLayout.desktop (revision 427945) ++++ kword/templates/DTP/SimpleLayout.desktop (working copy) +@@ -21,6 +21,7 @@ + Name[fa]=نمونه طرح بندی + Name[fi]=Yksinkertainen taittomalli + Name[fr]=Mise en page simple ++Name[ga]=Leagan Amach Simplí + Name[he]=פריסה פשוטה + Name[hr]=Jednostavni raspored + Name[hu]=Egyszerű elrendezés +Index: kword/templates/DTP/Empty.desktop +=================================================================== +--- kword/templates/DTP/Empty.desktop (revision 427945) ++++ kword/templates/DTP/Empty.desktop (working copy) +@@ -17,6 +17,7 @@ + Name[fa]=صفحه خالی + Name[fi]=Tyhjä sivu + Name[fr]=Page vide ++Name[ga]=Leathanach Folamh + Name[he]=דף ריק + Name[hr]=Prazna stranica + Name[hu]=Üres oldal +Index: kword/templates/DTP/fax.desktop +=================================================================== +--- kword/templates/DTP/fax.desktop (revision 427945) ++++ kword/templates/DTP/fax.desktop (working copy) +@@ -20,6 +20,7 @@ + Name[fa]=نمونه دورنگار + Name[fi]=Faksipohja + Name[fr]=Modèle de fax ++Name[ga]=Teimpléad Facs + Name[he]=תבנית פקס + Name[hr]=Fax predložak + Name[hu]=Faxsablon +@@ -63,6 +64,7 @@ + Comment[et]=Faks päisega + Comment[fi]=Faksiasiakirja otsikolla + Comment[fr]=Document de fax. avec en-tête ++Comment[ga]=Cáipéis fhacs, le ceanntásc + Comment[he]=מסמך פקס עם כותרת + Comment[hr]=Faks dokument, sa zaglavljem + Comment[hu]=Fax dokumentum (fejléccel) +Index: kword/templates/Wordprocessing/TwoColumns.desktop +=================================================================== +--- kword/templates/Wordprocessing/TwoColumns.desktop (revision 427945) ++++ kword/templates/Wordprocessing/TwoColumns.desktop (working copy) +@@ -22,6 +22,7 @@ + Name[fi]=Kaksi palstaa + Name[fo]=Tveir teigar + Name[fr]=Deux colonnes ++Name[ga]=Dhá Cholún + Name[he]=שני טורים + Name[hr]=Dva stupca + Name[hu]=Kétoszlopos +Index: kword/resizetabledia.h +=================================================================== +--- kword/resizetabledia.h (revision 427945) ++++ kword/resizetabledia.h (working copy) +@@ -31,7 +31,7 @@ + class QRadioButton; + class QLabel; + class QSpinBox; +-class KoUnitDoubleSpinBox; ++class KoBuggyUnitDoubleSpinBox; + + class KWResizeTableDia : public KDialogBase + { +@@ -48,7 +48,7 @@ + KWDocument *doc; + ResizeType type; + KWCanvas *canvas; +- KoUnitDoubleSpinBox *position; ++ KoBuggyUnitDoubleSpinBox *position; + double resetValue; + protected slots: + virtual void slotOk(); +Index: kexi/plugins/forms/kexilabel.cpp +=================================================================== +--- kexi/plugins/forms/kexilabel.cpp (revision 427945) ++++ kexi/plugins/forms/kexilabel.cpp (working copy) +@@ -33,6 +33,20 @@ + #define SHADOW_DIAGONAL_FACTOR 1.0 + #define SHADOW_THICKNESS 1 + ++class KexiLabelPrivate : public QLabel { ++ friend class KexiLabel; ++ public: ++ KexiLabelPrivate( KexiLabel* ); ++ virtual ~KexiLabelPrivate(); ++ private: ++ QImage makeShadow( const QImage& textImage, const QColor &bgColor, const QRect& boundingRect ); ++ QRect getBounding( const QImage &image, const QRect& startRect ); ++// double defaultDecay( QImage& source, int i, int j ); ++ KPixmap getShadowPixmap(); ++ ++ QRect p_shadowRect; ++}; ++ + KexiLabelPrivate::KexiLabelPrivate( KexiLabel* parent ) + : QLabel( parent ) + { +@@ -404,6 +418,40 @@ + QLabel::paintEvent( e ); + } + ++void KexiLabel::fontChange( const QFont& font ) { ++ p_pixmapDirty = true; ++ p_privateLabel->setFont( font ); ++ QLabel::fontChange( font ); ++} ++ ++void KexiLabel::styleChange( QStyle& style ) { ++ p_pixmapDirty = true; ++ QLabel::styleChange( style ); ++} ++ ++void KexiLabel::enabledChange( bool enabled ) { ++ p_pixmapDirty = true; ++ p_privateLabel->setEnabled( enabled ); ++ QLabel::enabledChange( enabled ); ++} ++ ++void KexiLabel::paletteChange( const QPalette& pal ) { ++ p_pixmapDirty = true; ++ p_privateLabel->setPalette( pal ); ++ QLabel::paletteChange( pal ); ++} ++ ++void KexiLabel::frameChanged() { ++ p_pixmapDirty = true; ++ p_privateLabel->frameChanged(); ++ QFrame::frameChanged(); ++} ++ ++void KexiLabel::showEvent( QShowEvent* e ) { ++ p_pixmapDirty = true; ++ QLabel::showEvent( e ); ++} ++ + void KexiLabel::setValueInternal( const QVariant& add, bool removeOld ) { + if (removeOld) + setText(add.toString()); +Index: kexi/plugins/forms/kexilabel.h +=================================================================== +--- kexi/plugins/forms/kexilabel.h (revision 427945) ++++ kexi/plugins/forms/kexilabel.h (working copy) +@@ -32,20 +32,10 @@ + class QTimer; + class KexiLabel; + +-class KexiLabelPrivate : public QLabel { +- friend class KexiLabel; +- public: +- KexiLabelPrivate( KexiLabel* ); +- virtual ~KexiLabelPrivate(); +- private: +- QImage makeShadow( const QImage& textImage, const QColor &bgColor, const QRect& boundingRect ); +- QRect getBounding( const QImage &image, const QRect& startRect ); +-// double defaultDecay( QImage& source, int i, int j ); +- KPixmap getShadowPixmap(); ++class KexiLabelPrivate; + +- QRect p_shadowRect; +-}; + ++ + /** + An extended, data-aware, read-only text label. + It's text may have a drop-shadow. +@@ -139,40 +129,14 @@ + */ + virtual void setValueInternal( const QVariant& add, bool removeOld ); + +- virtual void fontChange( const QFont& font ) { +- p_pixmapDirty = true; +- p_privateLabel->setFont( font ); +- QLabel::fontChange( font ); +- } ++ virtual void fontChange( const QFont& font ); ++ virtual void styleChange( QStyle& style ); ++ virtual void enabledChange( bool enabled ); + +- virtual void styleChange( QStyle& style ) { +- p_pixmapDirty = true; +- QLabel::styleChange( style ); +- } ++ virtual void paletteChange( const QPalette& pal ); ++ virtual void frameChanged(); ++ virtual void showEvent( QShowEvent* e ); + +- virtual void enabledChange( bool enabled ) { +- p_pixmapDirty = true; +- p_privateLabel->setEnabled( enabled ); +- QLabel::enabledChange( enabled ); +- } +- +- virtual void paletteChange( const QPalette& pal ) { +- p_pixmapDirty = true; +- p_privateLabel->setPalette( pal ); +- QLabel::paletteChange( pal ); +- } +- +- virtual void frameChanged() { +- p_pixmapDirty = true; +- p_privateLabel->frameChanged(); +- QFrame::frameChanged(); +- } +- +- virtual void showEvent( QShowEvent* e ) { +- p_pixmapDirty = true; +- QLabel::showEvent( e ); +- } +- + private: + void updatePixmapLater(); + +Index: kexi/plugins/kugar/kexikugarhandler.desktop +=================================================================== +--- kexi/plugins/kugar/kexikugarhandler.desktop (revision 427945) ++++ kexi/plugins/kugar/kexikugarhandler.desktop (working copy) +@@ -60,7 +60,7 @@ + Comment[nn]=Integrasjon av Kugar-basert rapportgenerering + Comment[pt]=Integração da geração de relatórios do Kugar + Comment[pt_BR]=Integração do Kugar baseada na geração de relatório +-Comment[ru]=Интеграция с Kugar для построения отчётов ++Comment[ru]=Отчёт посредством Kugar + Comment[sk]=Integrácia generovaných správ založených na Kugar + Comment[sl]=Integracija ustvarjanja poročil na osnovi Kugarja + Comment[sr]=Интеграција прављења извештаја заснованог на Kugar-у +Index: kexi/plugins/reports/kexireportfactory.desktop +=================================================================== +--- kexi/plugins/reports/kexireportfactory.desktop (revision 427945) ++++ kexi/plugins/reports/kexireportfactory.desktop (working copy) +@@ -19,6 +19,7 @@ + Name[pt]=Elementos de Relatório do Kexi + Name[pt_BR]=Widgets de Relatório do Kexi + Name[ru]=Элементы управления для отчётов Kexi ++Name[sl]=Gradniki za poročila za Kexi + Name[sr]=Kexi-јеве контроле за извештаје + Name[sr@Latn]=Kexi-jeve kontrole za izveštaje + Name[sv]=Kexi-rapportkomponenter +Index: kexi/kexipart.desktop +=================================================================== +--- kexi/kexipart.desktop (revision 427945) ++++ kexi/kexipart.desktop (working copy) +@@ -19,6 +19,7 @@ + Name[pt]=Componente de Bases de Dados do KOffice + Name[pt_BR]=Componente de Banco de Dados do KOffice + Name[ru]=Компонент баз данных KOffice ++Name[sl]=Komponenta za zbirke podatkov za KOffice + Name[sr]=KOffice-ова компонента за базе података + Name[sr@Latn]=KOffice-ova komponenta za baze podataka + Name[sv]=Koffice-databaskomponent +Index: kexi/filters/import/csv/kexicsvimport.desktop +=================================================================== +--- kexi/filters/import/csv/kexicsvimport.desktop (revision 427945) ++++ kexi/filters/import/csv/kexicsvimport.desktop (working copy) +@@ -42,7 +42,7 @@ + Comment[pl]=Import pliku CVS... + Comment[pt]=Importar um Ficheiro CSV... + Comment[pt_BR]=Importar Arquivo CSV... +-Comment[ru]=Импорт данных из CSV... ++Comment[ru]=Импорт из CSV... + Comment[sk]=Import súborov CSV... + Comment[sl]=Uvoz datoteke CSV ... + Comment[sr]=Увози се CSV фајл... +Index: kexi/filters/import/kspread_chain/kexikspreadimport.desktop +=================================================================== +--- kexi/filters/import/kspread_chain/kexikspreadimport.desktop (revision 427945) ++++ kexi/filters/import/kspread_chain/kexikspreadimport.desktop (working copy) +@@ -38,7 +38,7 @@ + Comment[nn]=Importer KSpread-lesbar fil ... + Comment[pt]=Importar um ficheiro KSpread... + Comment[pt_BR]=Importar arquivo legível do KSpread... +-Comment[ru]=Импорт в KSpread... ++Comment[ru]=Импорт данных из KSpread... + Comment[sk]=Import súboru podporovaného KSpread... + Comment[sl]=Uvoz datoteke za KSpread ... + Comment[sr]=Увози се фајл који се може читати KSpread-ом... +Index: kexi/data/x-kexiproject-sqlite2.desktop +=================================================================== +--- kexi/data/x-kexiproject-sqlite2.desktop (revision 427945) ++++ kexi/data/x-kexiproject-sqlite2.desktop (working copy) +@@ -21,6 +21,7 @@ + Comment[pt]=Projecto do Kexi em Ficheiro de Base de Dados + Comment[pt_BR]=Projeto Baseado em Arquivo de Banco de Dados do Kexi + Comment[ru]=Проект Kexi с хранилищем данных в файлах ++Comment[sl]=Na datotekah zasnovan projekt zbirke podatkov Kexi + Comment[sr]=Kexi-јев пројекат базе података заснован на фајлу + Comment[sr@Latn]=Kexi-jev projekat baze podataka zasnovan na fajlu + Comment[sv]=Kexi filbaserat databasprojekt +Index: kexi/data/x-kexiproject-sqlite3.desktop +=================================================================== +--- kexi/data/x-kexiproject-sqlite3.desktop (revision 427945) ++++ kexi/data/x-kexiproject-sqlite3.desktop (working copy) +@@ -21,6 +21,7 @@ + Comment[pt]=Projecto do Kexi em Ficheiro de Base de Dados + Comment[pt_BR]=Projeto Baseado em Arquivo de Banco de Dados do Kexi + Comment[ru]=Проект Kexi с хранилищем данных в файлах ++Comment[sl]=Na datotekah zasnovan projekt zbirke podatkov Kexi + Comment[sr]=Kexi-јев пројекат базе података заснован на фајлу + Comment[sr@Latn]=Kexi-jev projekat baze podataka zasnovan na fajlu + Comment[sv]=Kexi filbaserat databasprojekt +Index: kexi/data/x-kexiproject-sqlite.desktop +=================================================================== +--- kexi/data/x-kexiproject-sqlite.desktop (revision 427945) ++++ kexi/data/x-kexiproject-sqlite.desktop (working copy) +@@ -22,6 +22,7 @@ + Comment[pt]=Projecto do Kexi em Ficheiro de Base de Dados + Comment[pt_BR]=Projeto Baseado em Arquivo de Banco de Dados do Kexi + Comment[ru]=Проект Kexi с хранилищем данных в файлах ++Comment[sl]=Na datotekah zasnovan projekt zbirke podatkov Kexi + Comment[sr]=Kexi-јев пројекат базе података заснован на фајлу + Comment[sr@Latn]=Kexi-jev projekat baze podataka zasnovan na fajlu + Comment[sv]=Kexi filbaserat databasprojekt +Index: kexi/data/kde32compat/x-sqlite2.desktop +=================================================================== +--- kexi/data/kde32compat/x-sqlite2.desktop (revision 427945) ++++ kexi/data/kde32compat/x-sqlite2.desktop (working copy) +@@ -21,6 +21,7 @@ + Comment[pt]=Ficheiro de Base de Dados do SQLite2 + Comment[pt_BR]=Ficheiro de Base de Dados do SQLite2 + Comment[ru]=База данных SQLite2 ++Comment[sl]=Datoteka zbirke podatkov SQLite2 + Comment[sr]=Фајл базе података SQLite2 + Comment[sr@Latn]=Fajl baze podataka SQLite2 + Comment[sv]=SQLite2-databasfil +Index: kexi/data/kde32compat/x-sqlite3.desktop +=================================================================== +--- kexi/data/kde32compat/x-sqlite3.desktop (revision 427945) ++++ kexi/data/kde32compat/x-sqlite3.desktop (working copy) +@@ -20,6 +20,7 @@ + Comment[pt]=Ficheiro de Base de Dados do SQLite3 + Comment[pt_BR]=Ficheiro de Base de Dados do SQLite3 + Comment[ru]=База данных SQLite3 ++Comment[sl]=Datoteka zbirke podatkov SQLite3 + Comment[sr]=Фајл базе података SQLite3 + Comment[sr@Latn]=Fajl baze podataka SQLite3 + Comment[sv]=SQLite3-databasfil +Index: kexi/data/kexiscripthandler.desktop +=================================================================== +--- kexi/data/kexiscripthandler.desktop (revision 427945) ++++ kexi/data/kexiscripthandler.desktop (working copy) +@@ -5,6 +5,7 @@ + + GenericName=Scripts + GenericName[br]=Urzhiaouegoù ++GenericName[cy]=Sgriptiau + GenericName[da]=Scripter + GenericName[de]=Skripte + GenericName[el]=Σενάρια +@@ -27,6 +28,7 @@ + GenericName[zh_CN]=脚本 + Name=Scripts + Name[br]=Urzhiaouegoù ++Name[cy]=Sgriptiau + Name[da]=Scripter + Name[de]=Skripte + Name[el]=Σενάρια +Index: kexi/formeditor/kdevelop_plugin/kformdesigner_kdev_part.desktop +=================================================================== +--- kexi/formeditor/kdevelop_plugin/kformdesigner_kdev_part.desktop (revision 427945) ++++ kexi/formeditor/kdevelop_plugin/kformdesigner_kdev_part.desktop (working copy) +@@ -17,6 +17,7 @@ + Name[pt]='Plugin' para o KDevelop de Desenho de Formulários + Name[pt_BR]=Plugin do Desenhista de Formulário do KDevelop + Name[ru]=Модуль форм KDevelop ++Name[sl]=Vstavek za oblikovanje obrazcev za KDevelop + Name[sr]=Прикључак дизајнера форми за KDevelop + Name[sr@Latn]=Priključak dizajnera formi za KDevelop + Name[sv]=KDevelop insticksprogram för formulärkonstruktion +Index: tools/thumbnail/kofficethumbnail.desktop +=================================================================== +--- tools/thumbnail/kofficethumbnail.desktop (revision 427945) ++++ tools/thumbnail/kofficethumbnail.desktop (working copy) +@@ -20,6 +20,7 @@ + Name[fi]=KOffice-tiedostot + Name[fo]=KSkrivstovu-fílir + Name[fr]=Fichiers KOffice ++Name[ga]=Comhaid KOffice + Name[he]=קבצי KOffice + Name[hr]=KOffice datoteke + Name[hu]=KOffice-fájlok +Index: tools/kfile-plugins/koffice/kfile_koffice.desktop +=================================================================== +--- tools/kfile-plugins/koffice/kfile_koffice.desktop (revision 427945) ++++ tools/kfile-plugins/koffice/kfile_koffice.desktop (working copy) +@@ -5,6 +5,7 @@ + Name[af]=Koffice Inligting + Name[ar]=معلومات KOffice + Name[bg]=Информация за KOffice ++Name[br]=Titouroù diwar-benn KOffice + Name[ca]=Informació KOffice + Name[cs]=KOffice info + Name[cy]=Gwybodaeth KOffice +@@ -18,6 +19,7 @@ + Name[fi]=KOffice tiedot + Name[fo]=KSkrivstovu-upplýsingar + Name[fr]=Informations sur KOffice ++Name[ga]=Eolas faoi KOffice + Name[he]=מידע KOffice + Name[hu]=KOffice-információ + Name[it]=Informazioni KOffice +@@ -32,7 +34,7 @@ + Name[pl]=Dane koffice + Name[pt]=Informação do KOffice + Name[pt_BR]=Informações do KOffice +-Name[ru]=Информация о KOffice ++Name[ru]=Информация KOffice + Name[se]=KOffice-dieđut + Name[sk]=Informácie o KOffice + Name[sl]=Informacije o KOffice +Index: tools/kfile-plugins/ooo/kfile_ooo.desktop +=================================================================== +--- tools/kfile-plugins/ooo/kfile_ooo.desktop (revision 427945) ++++ tools/kfile-plugins/ooo/kfile_ooo.desktop (working copy) +@@ -13,6 +13,7 @@ + Name[et]=OpenOffice.org-i info + Name[fi]=KOffice tiedot + Name[fr]=Informations sur OpenOffice.org ++Name[ga]=Eolas faoi OpenOffice.org + Name[he]=מידע OpenOffice.org + Name[hu]=OpenOffice.org-információ + Name[it]=Informazioni OpenOffice.org +@@ -23,7 +24,7 @@ + Name[pl]=Informacja OpenOffice.org + Name[pt]=Informação do OpenOffice.org + Name[pt_BR]=Informações do OpenOffice.org +-Name[ru]=Информация об OpenOffice.org ++Name[ru]=Информация OpenOffice.org + Name[se]=OpenOffice.org-dieđut + Name[sk]=Informácie o OpenOffice.org + Name[sl]=Informacije o OpenOffice.org +Index: lib/kofficecore/koApplication.cc +=================================================================== +--- lib/kofficecore/koApplication.cc (revision 427945) ++++ lib/kofficecore/koApplication.cc (working copy) +@@ -149,7 +149,10 @@ + shell->setRootDocument( doc ); + } + else ++ { ++ delete doc; + return false; ++ } + + QObject::disconnect(doc, SIGNAL(sigProgress(int)), shell, SLOT(slotProgress(int))); + } else { +Index: lib/kofficecore/koMainWindow.cc +=================================================================== +--- lib/kofficecore/koMainWindow.cc (revision 427945) ++++ lib/kofficecore/koMainWindow.cc (working copy) +@@ -1033,6 +1033,13 @@ + if ( !newdoc->initDoc( (KoDocument::InitDocFlags)initDocFlags, this ) ) + { + delete newdoc; ++ // See cancelQuits() in KoTemplateChooseDia. ++ // The quit() must be done here so that the KoDocument got deleted already. ++ bool onlyDoc = !KoDocument::documentList() || KoDocument::documentList()->isEmpty(); ++ bool onlyMainWindow = !KMainWindow::memberList || KMainWindow::memberList->count() <= 1; ++ if ( onlyDoc && onlyMainWindow && kapp->instanceName() != "koshell" ) { ++ kapp->quit(); ++ } + return; + } + disconnect(newdoc, SIGNAL(sigProgress(int)), this, SLOT(slotProgress(int))); +Index: lib/kofficecore/koDocument.cc +=================================================================== +--- lib/kofficecore/koDocument.cc (revision 427945) ++++ lib/kofficecore/koDocument.cc (working copy) +@@ -890,6 +890,9 @@ + kdDebug(30003)<<k_funcinfo<<" external (don't save) url:" << childDoc->url().url()<<endl; + path = childDoc->url().url(); + } ++ // OOo uses a trailing slash for the path to embedded objects (== directories) ++ if ( !path.endsWith( "/" ) ) ++ path += '/'; + manifestWriter->addManifestEntry( path, childDoc->nativeOasisMimeType() ); + } + } +@@ -1793,7 +1796,9 @@ + //if ( !oasisStore.loadAndParse( "tar:/META-INF/manifest.xml", manifestDoc, d->lastErrorMessage ) ) + // return false; + +- (void)oasisStore.loadAndParse( "settings.xml", settingsDoc, d->lastErrorMessage ); ++ if ( store->hasFile( "settings.xml" ) ) { ++ (void)oasisStore.loadAndParse( "settings.xml", settingsDoc, d->lastErrorMessage ); ++ } + if ( !loadOasis( contentDoc, oasisStyles, settingsDoc, store ) ) + return false; + +@@ -1920,9 +1925,12 @@ + KoDocument *doc = it.current()->document(); + if ( doc ) + { +- if ( doc->isStoredExtern() ) //###TODO: Handle non-native mimetype docs ++ bool foo = doc->isStoredExtern(); ++ kdDebug(36001) << "========== isStoredExtern() returned " ++ << foo << " ==========" << endl; ++ ++ if ( foo ) //###TODO: Handle non-native mimetype docs + { +- if ( doc->isModified() ) + { + kdDebug(30003)<<k_funcinfo<<" found modified child: "<<doc->url().url()<<" extern="<<doc->isStoredExtern()<<endl; + if ( doc->queryCloseDia() == KMessageBox::Cancel ) +Index: lib/kofficecore/koDocumentChild.cc +=================================================================== +--- lib/kofficecore/koDocumentChild.cc (revision 427945) ++++ lib/kofficecore/koDocumentChild.cc (working copy) +@@ -230,6 +230,8 @@ + QString relPath = KURL( m_tmpURL ).path(); + path += relPath.mid( 1 ); // remove leading '/' + } ++ if ( !path.endsWith( "/" ) ) ++ path += '/'; + const QString mimeType = KoOasisStore::mimeForPath( manifestDoc, path ); + kdDebug() << k_funcinfo << "path for manifest file=" << path << " mimeType=" << mimeType << endl; + if ( mimeType.isEmpty() ) { +@@ -312,6 +314,8 @@ + } + if ( !res ) + { ++ // Keep the error message from the attempted loading ++ QString errorMessage = d->m_doc->errorMessage(); + delete d->m_doc; + d->m_doc = 0; + QString tmpURL = m_tmpURL; // keep a copy, createUnavailDocument will erase it +@@ -322,7 +326,7 @@ + d->m_doc->setProperty( "realURL", tmpURL ); // so that it gets saved correctly + d->m_doc->setStoreInternal( true ); + if ( internalURL ) +- d->m_doc->setProperty( "unavailReason", i18n( "Could not load embedded object." ) ); ++ d->m_doc->setProperty( "unavailReason", i18n( "Could not load embedded object." ) + "\n" + errorMessage ); + else + d->m_doc->setProperty( "unavailReason", i18n( "External document not found:\n%1" ).arg( tmpURL ) ); + } +Index: lib/kofficeui/koTemplateChooseDia.cc +=================================================================== +--- lib/kofficeui/koTemplateChooseDia.cc (revision 427945) ++++ lib/kofficeui/koTemplateChooseDia.cc (working copy) +@@ -210,6 +210,7 @@ + d=0L; + } + ++// Keep in sync with KoMainWindow::chooseNewDocument + static bool cancelQuits() { + bool onlyDoc = !KoDocument::documentList() || KoDocument::documentList()->count() <= 1; + bool onlyMainWindow = !KMainWindow::memberList || KMainWindow::memberList->count() <= 1; +@@ -261,10 +262,6 @@ + } + + delete dlg; +- if ( rt == Cancel && dialogType == Everything && cancelQuits() ) +- // The button says quit, so let's quit +- kapp->quit(); +- + return rt; + } + +@@ -458,8 +455,8 @@ + d->m_jwidget->showPage(templateNum); + else if ( defaultTemplateGroup != -1) + d->m_jwidget->showPage(defaultTemplateGroup); +- + ++ + // Set the initially selected template, possibly from the last usage of the dialog + currentChanged(itemtoselect); + +Index: lib/kofficeui/koUnitWidgets.h +=================================================================== +--- lib/kofficeui/koUnitWidgets.h (revision 427945) ++++ lib/kofficeui/koUnitWidgets.h (working copy) +@@ -77,7 +77,7 @@ + */ + QString getVisibleText( double value ) const; + /** +- * Transfrom a string inot a double, while taking care of locale specific symbols. ++ * Transfrom a string into a double, while taking care of locale specific symbols. + * @param str the string to transform into a number + * @param ok true, if the conversion was succesful + * @return the value as double +@@ -94,11 +94,11 @@ + * Spin box for double precision numbers with unit display + * \since 1.4 (change of behavior) + */ +-class KOFFICEUI_EXPORT KoUnitDoubleSpinBox : public KDoubleSpinBox, public KoUnitDoubleBase ++class KOFFICEUI_EXPORT KoBuggyUnitDoubleSpinBox : public KDoubleSpinBox, public KoUnitDoubleBase + { + public: + // lower, upper, step and value are in pt +- KoUnitDoubleSpinBox( QWidget *parent, double lower, double upper, double step, double value = 0.0, ++ KoBuggyUnitDoubleSpinBox( QWidget *parent, double lower, double upper, double step, double value = 0.0, + KoUnit::Unit unit = KoUnit::U_PT, unsigned int precision = 2, const char *name = 0 ); + + virtual void changeValue( double ); +@@ -123,6 +123,22 @@ + }; + + /** ++ * Temporary class that will be merged with koBuggyUnitDoubleSpinBox ++ * and renamed into KoUnitDoubleSpinBox when all the users of that ++ * class have been converted. ++ */ ++class KOFFICEUI_EXPORT KoUnitDoubleSpinBox2 : public KoBuggyUnitDoubleSpinBox ++{ ++public: ++ // lower, upper, step and value are in pt ++ KoUnitDoubleSpinBox2( QWidget *parent, double lower, double upper, double step, double value = 0.0, ++ KoUnit::Unit unit = KoUnit::U_PT, unsigned int precision = 2, const char *name = 0 ); ++ ++ virtual void changeValue( double ); ++}; ++ ++ ++/** + * Line edit for double precision numbers with unit display + * \since 1.4 (change of behavior) + */ +Index: lib/kofficeui/kolinewidthaction.cpp +=================================================================== +--- lib/kofficeui/kolinewidthaction.cpp (revision 427945) ++++ lib/kofficeui/kolinewidthaction.cpp (working copy) +@@ -160,7 +160,7 @@ + { + public: + KoUnit::Unit m_unit; +- KoUnitDoubleSpinBox* m_lineWidthUSBox; ++ KoBuggyUnitDoubleSpinBox* m_lineWidthUSBox; + }; + + KoLineWidthChooser::KoLineWidthChooser(QWidget* parent, const char* name) +@@ -174,7 +174,7 @@ + setMainWidget(mainWidget); + QGridLayout* gl = new QGridLayout(mainWidget, 1, 2, KDialog::marginHint(), KDialog::spacingHint()); + QLabel* textLbl = new QLabel(i18n("Line width:"), mainWidget); +- d->m_lineWidthUSBox = new KoUnitDoubleSpinBox(mainWidget, 0.0, 1000.0, 0.1, 1.0, d->m_unit, 2); ++ d->m_lineWidthUSBox = new KoBuggyUnitDoubleSpinBox(mainWidget, 0.0, 1000.0, 0.1, 1.0, d->m_unit, 2); + gl->addWidget(textLbl, 0, 0); + gl->addWidget(d->m_lineWidthUSBox, 0, 1); + } +Index: lib/kofficeui/koUnitWidgets.cc +=================================================================== +--- lib/kofficeui/koUnitWidgets.cc (revision 427945) ++++ lib/kofficeui/koUnitWidgets.cc (working copy) +@@ -25,6 +25,7 @@ + #include <qpushbutton.h> + #include <qlayout.h> + ++ + KoUnitDoubleValidator::KoUnitDoubleValidator( KoUnitDoubleBase *base, QObject *parent, const char *name ) + : KDoubleValidator( parent, name ), m_base( base ) + { +@@ -108,7 +109,10 @@ + } + + +-KoUnitDoubleSpinBox::KoUnitDoubleSpinBox( QWidget *parent, double lower, double upper, double step, double value, KoUnit::Unit unit, unsigned int precision, const char *name ) ++// ---------------------------------------------------------------- ++ ++ ++KoBuggyUnitDoubleSpinBox::KoBuggyUnitDoubleSpinBox( QWidget *parent, double lower, double upper, double step, double value, KoUnit::Unit unit, unsigned int precision, const char *name ) + : KDoubleSpinBox( lower, upper, step, value, precision, parent, name ), KoUnitDoubleBase( unit, precision ), + m_lowerInPoints( lower ), m_upperInPoints( upper ), m_stepInPoints( step ) + { +@@ -120,7 +124,7 @@ + } + + void +-KoUnitDoubleSpinBox::changeValue( double val ) ++KoBuggyUnitDoubleSpinBox::changeValue( double val ) + { + KDoubleSpinBox::setValue( val ); + // TODO: emit valueChanged ONLY if the value was out-of-bounds +@@ -129,7 +133,7 @@ + } + + void +-KoUnitDoubleSpinBox::setUnit( KoUnit::Unit unit ) ++KoBuggyUnitDoubleSpinBox::setUnit( KoUnit::Unit unit ) + { + double oldvalue = KoUnit::fromUserValue( KDoubleSpinBox::value(), m_unit ); + KDoubleSpinBox::setMinValue( KoUnit::toUserValue( m_lowerInPoints, unit ) ); +@@ -140,31 +144,53 @@ + setSuffix( KoUnit::unitName( unit ).prepend( ' ' ) ); + } + +-double KoUnitDoubleSpinBox::value( void ) const ++double KoBuggyUnitDoubleSpinBox::value( void ) const + { + return KoUnit::fromUserValue( KDoubleSpinBox::value(), m_unit ); + } + +-void KoUnitDoubleSpinBox::setMinValue( double min ) ++void KoBuggyUnitDoubleSpinBox::setMinValue( double min ) + { + m_lowerInPoints = min; + KDoubleSpinBox::setMinValue( KoUnit::toUserValue( m_lowerInPoints, m_unit ) ); + } + +-void KoUnitDoubleSpinBox::setMaxValue( double max ) ++void KoBuggyUnitDoubleSpinBox::setMaxValue( double max ) + { + m_upperInPoints = max; + KDoubleSpinBox::setMaxValue( KoUnit::toUserValue( m_upperInPoints, m_unit ) ); + } + +-void KoUnitDoubleSpinBox::setLineStep( double step ) ++void KoBuggyUnitDoubleSpinBox::setLineStep( double step ) + { + m_stepInPoints = step; + KDoubleSpinBox::setLineStep( KoUnit::toUserValue( m_stepInPoints, m_unit ) ); + } + + ++// ---------------------------------------------------------------- + ++ ++KoUnitDoubleSpinBox2::KoUnitDoubleSpinBox2( QWidget *parent, double lower, double upper, double step, double value, KoUnit::Unit unit, unsigned int precision, const char *name ) ++ : KoBuggyUnitDoubleSpinBox( parent, lower, upper, step, value, unit, precision, name ) ++{ ++ m_validator = new KoUnitDoubleValidator( this, this ); ++ QSpinBox::setValidator( m_validator ); ++ setAcceptLocalizedNumbers( true ); ++ setUnit( unit ); ++ changeValue( value ); ++} ++ ++void ++KoUnitDoubleSpinBox2::changeValue( double val ) ++{ ++ KDoubleSpinBox::setValue( KoUnit::toUserValue( val, m_unit ) ); ++} ++ ++ ++// ---------------------------------------------------------------- ++ ++ + KoUnitDoubleLineEdit::KoUnitDoubleLineEdit( QWidget *parent, double lower, double upper, double value, KoUnit::Unit unit, + unsigned int precision, const char *name ) + : KLineEdit( parent, name ), KoUnitDoubleBase( unit, precision ), m_value( value ), m_lower( lower ), m_upper( upper ), +Index: lib/CHANGES +=================================================================== +--- lib/CHANGES (revision 427945) ++++ lib/CHANGES (working copy) +@@ -1,6 +1,15 @@ ++Changes after KOffice-1.4 ++========================= ++KOfficeCore: ++- OASIS loading/saving fix for embedded objects ++- Fix crash when pressing Quit in the initial startup dialog (#107911) ++ ++KoText: ++- Fix crash when updating a TOC with a table inside it (#107961) ++ + Changes after KOffice-1.4-beta1 + =============================== +-KForumula: ++KFormula: + - Disable the matrix actions when the cursor isn't in a matrix element. + - Do not crash when exporting to PNG. + +Index: lib/kotext/kotextdocument.cc +=================================================================== +--- lib/kotext/kotextdocument.cc (revision 427945) ++++ lib/kotext/kotextdocument.cc (working copy) +@@ -135,6 +135,7 @@ + flow_->clear(); + while ( fParag ) { + KoTextParag *p = fParag->next(); ++ fParag->string()->clear(); // avoid the "unregister custom items" code, not needed + delete fParag; + fParag = p; + } +@@ -142,6 +143,7 @@ + if ( createEmptyParag ) + fParag = lParag = createParag( this ); + selections.clear(); ++ customItems.clear(); + } + + /* +Index: lib/kotext/kotextparag.cc +=================================================================== +--- lib/kotext/kotextparag.cc (revision 427945) ++++ lib/kotext/kotextparag.cc (working copy) +@@ -109,6 +109,17 @@ + KoTextParag::~KoTextParag() + { + //kdDebug(32500) << "KoTextParag::~KoTextParag " << this << " id=" << paragId() << endl; ++ ++ // #107961: unregister custom items; KoTextString::clear() will delete them ++ const int len = str->length(); ++ for ( int i = 0; i < len; ++i ) { ++ KoTextStringChar *c = at( i ); ++ if ( doc && c->isCustom() ) { ++ doc->unregisterCustomItem( c->customItem(), this ); ++ //removeCustomItem(); ++ } ++ } ++ + delete str; + str = 0; + // if ( doc && p == doc->minwParag ) { +Index: filters/kword/ascii/kword_ascii_import.desktop +=================================================================== +--- filters/kword/ascii/kword_ascii_import.desktop (revision 427945) ++++ filters/kword/ascii/kword_ascii_import.desktop (working copy) +@@ -5,6 +5,7 @@ + Name[br]=Sil Enporzh ASCII KWord + Name[ca]=Filtre d'importació ASCII per a KWord + Name[cs]=KWord ASCII importní filtr ++Name[cy]=Hidlen Fewnforio Ascii KWord + Name[da]=KWord ASCII-importfilter + Name[de]=ASCII-Importfilter für KWord + Name[el]=Φίλτρο εισαγωγής ascii του KWord +Index: filters/kspread/excel/sidewinder/excel.cpp +=================================================================== +--- filters/kspread/excel/sidewinder/excel.cpp (revision 427945) ++++ filters/kspread/excel/sidewinder/excel.cpp (working copy) +@@ -5412,7 +5412,7 @@ + case 10: valueFormat = "0.00%"; break; + case 11: valueFormat = "0.00E+00"; break; + case 12: valueFormat = "#?/?"; break; +- case 13: valueFormat = "#\?\?\/\?\?"; break; ++ case 13: valueFormat = "#\?\?/\?\?"; break; + case 14: valueFormat = "M/D/YY"; break; + case 15: valueFormat = "D-MMM-YY"; break; + case 16: valueFormat = "D-MMM"; break; +Index: filters/karbon/svg/svgexport.cc +=================================================================== +--- filters/karbon/svg/svgexport.cc (revision 427945) ++++ filters/karbon/svg/svgexport.cc (working copy) +@@ -36,8 +36,10 @@ + #include "vfill.h" + #include "vgradient.h" + #include "vgroup.h" ++#include "vimage.h" + #include "vlayer.h" + #include "vpath.h" ++#include "vpattern.h" + #include "vsegment.h" + #include "vselection.h" + #include "vstroke.h" +@@ -119,11 +121,9 @@ + "\"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd\">" + << endl; + +- // add some PR ++ // add some PR. one line is more than enough. + *m_defs << +- "<!-- This file was created using the SVG export filter from Karbon14, a free vector drawing app. -->" << endl; +- *m_defs << +- "<!-- It is part of koffice, the free, integrated office suite for KDE (http://www.koffice.org/). -->" << endl; ++ "<!-- Created using Karbon14, part of koffice: http://www.koffice.org/karbon -->" << endl; + + *m_defs << + "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"" << +@@ -164,7 +164,30 @@ + *m_body << "</g>" << endl; + } + ++// horrible but at least something gets exported now ++// will need this for patterns + void ++SvgExport::visitVImage( VImage& image ) ++{ ++ *m_body << "<image "; ++ VVisitor::visitVImage( image ); ++ *m_body << "x=\"" << "\" "; ++ *m_body << "y=\"" << "\" "; ++ *m_body << "width=\"" << "\" "; ++ *m_body << "height=\"" << "\" "; ++ *m_body << "xlink:href=\"" << "\""; ++ *m_body << " />" << endl; ++} ++ ++void ++SvgExport::visitVLayer( VLayer& layer ) ++{ ++ *m_body << "<g" << getID( &layer ) << ">" << endl; ++ VVisitor::visitVLayer( layer ); ++ *m_body << "</g>" << endl; ++} ++ ++void + SvgExport::visitVPath( VPath& composite ) + { + *m_body << "<path" << getID( &composite ); +@@ -261,9 +284,50 @@ + *m_defs << "</radialGradient>" << endl; + *m_body << "url(#" << uid << ")"; + } ++ // gah! pointless abbreviation of conical to conic ++ else if( grad.type() == VGradient::conic ) ++ { ++ // fake conical grad as radial. ++ // fugly but better than data loss. ++ *m_defs << "<radialGradient id=\"" << uid << "\" "; ++ *m_defs << "gradientUnits=\"userSpaceOnUse\" "; ++ *m_defs << "cx=\"" << grad.origin().x() << "\" "; ++ *m_defs << "cy=\"" << grad.origin().y() << "\" "; ++ *m_defs << "fx=\"" << grad.focalPoint().x() << "\" "; ++ *m_defs << "fy=\"" << grad.focalPoint().y() << "\" "; ++ double r = sqrt( pow( grad.vector().x() - grad.origin().x(), 2 ) + pow( grad.vector().y() - grad.origin().y(), 2 ) ); ++ *m_defs << "r=\"" << QString().setNum( r ) << "\" "; ++ if( grad.repeatMethod() == VGradient::reflect ) ++ *m_defs << "spreadMethod=\"reflect\" "; ++ else if( grad.repeatMethod() == VGradient::repeat ) ++ *m_defs << "spreadMethod=\"repeat\" "; ++ *m_defs << ">" << endl; ++ ++ // color stops ++ getColorStops( grad.colorStops() ); ++ ++ *m_defs << "</radialGradient>" << endl; ++ *m_body << "url(#" << uid << ")"; ++ } + } + ++// better than nothing + void ++SvgExport::getPattern( const VPattern & patt ) ++{ ++ QString uid = createUID(); ++ *m_defs << "<pattern id=\"" << uid << "\" "; ++ *m_defs << "width=\"" << "\" "; ++ *m_defs << "height=\"" << "\" "; ++ *m_defs << "patternUnits=\"userSpaceOnUse\" "; ++ *m_defs << "patternContentUnits=\"userSpaceOnUse\" "; ++ *m_defs << " />" << endl; ++ // TODO: insert hard work here ;) ++ *m_defs << "</pattern>" << endl; ++ *m_body << "url(#" << uid << ")"; ++} ++ ++void + SvgExport::getFill( const VFill& fill ) + { + *m_body << " fill=\""; +@@ -271,6 +335,8 @@ + *m_body << "none"; + else if( fill.type() == VFill::grad ) + getGradient( fill.gradient() ); ++ else if( fill.type() == VFill::patt ) ++ getPattern( fill.pattern() ); + else + getHexColor( m_body, fill.color() ); + *m_body << "\""; +Index: filters/karbon/svg/svgexport.h +=================================================================== +--- filters/karbon/svg/svgexport.h (revision 427945) ++++ filters/karbon/svg/svgexport.h (working copy) +@@ -35,6 +35,7 @@ + class VDocument; + class VFill; + class VGroup; ++class VImage; + class VLayer; + class VSubpath; + class VStroke; +@@ -55,6 +56,8 @@ + virtual void visitVPath( VPath& composite ); + virtual void visitVDocument( VDocument& document ); + virtual void visitVGroup( VGroup& group ); ++ virtual void visitVImage( VImage& image ); ++ virtual void visitVLayer( VLayer& layer ); + virtual void visitVSubpath( VSubpath& path ); + virtual void visitVText( VText& text ); + +@@ -62,6 +65,7 @@ + void getColorStops( const QPtrVector<VColorStop> &colorStops ); + void getFill( const VFill& fill ); + void getGradient( const VGradient& grad ); ++ void getPattern( const VPattern& patt ); + void getHexColor( QTextStream *, const VColor& color ); + QString getID( VObject *obj ); + +Index: filters/generic_wrapper/generic_filter.desktop +=================================================================== +--- filters/generic_wrapper/generic_filter.desktop (revision 427945) ++++ filters/generic_wrapper/generic_filter.desktop (working copy) +@@ -3,6 +3,7 @@ + Name=Generic KOffice Filter + Name[ca]=Filtre genèric de KOffice + Name[cs]=Obecný filtr KOffice ++Name[cy]=Hidlen generig KOffice + Name[da]=Generisk KOffice-filter + Name[de]=Generischer KOffice-Filter + Name[el]=Γενικό φίλτρο του KOffice +Index: krita/plugins/cimg/CImg.h +=================================================================== +--- krita/plugins/cimg/CImg.h (revision 427945) ++++ krita/plugins/cimg/CImg.h (working copy) +@@ -5135,7 +5135,7 @@ + if (ny1<0 || ny0>=dimy()) return *this; + if (ny0<0) { nx0-=ny0*(nx1-nx0)/(ny1-ny0); ny0=0; } + if (ny1>=dimy()) { nx1+=(ny1-dimy())*(nx0-nx1)/(ny1-ny0); ny1=dimy()-1;} +- const unsigned int dmax = (unsigned int)cimg::max(std::abs(nx1-nx0),ny1-ny0), whz = width*height*depth; ++ const unsigned int dmax = (unsigned int)cimg::max(std::abs((long int)(nx1-nx0)),(long int)(ny1-ny0)), whz = width*height*depth; + const float px = dmax?(nx1-nx0)/(float)dmax:0, py = dmax?(ny1-ny0)/(float)dmax:0; + float x = (float)nx0, y = (float)ny0; + if (opacity>=1) for (unsigned int t=0; t<=dmax; t++) { +Index: krita/plugins/tool_polygon/kritatoolpolygon.desktop +=================================================================== +--- krita/plugins/tool_polygon/kritatoolpolygon.desktop (revision 427945) ++++ krita/plugins/tool_polygon/kritatoolpolygon.desktop (working copy) +@@ -2,6 +2,7 @@ + Encoding=UTF-8 + Name=Polygon Tool + Name[br]=Ostilh liestueg ++Name[cy]=Erfyn Polygon + Name[da]=Polygonværktøj + Name[de]=Polygon-Werkzeug + Name[el]=Εργαλείο πολυγώνου +Index: krita/plugins/tool_polyline/kritatoolpolyline.desktop +=================================================================== +--- krita/plugins/tool_polyline/kritatoolpolyline.desktop (revision 427945) ++++ krita/plugins/tool_polyline/kritatoolpolyline.desktop (working copy) +@@ -1,6 +1,7 @@ + [Desktop Entry] + Encoding=UTF-8 + Name=Polyline Tool ++Name[cy]=Erfyn Polylinell + Name[da]=Flerlinjeværktøj + Name[de]=Polylinien-Werkzeug + Name[el]=Εργαλείο Polyline +Index: krita/plugins/imagemagick/kritamagick.desktop +=================================================================== +--- krita/plugins/imagemagick/kritamagick.desktop (revision 427945) ++++ krita/plugins/imagemagick/kritamagick.desktop (working copy) +@@ -14,7 +14,8 @@ + Name[nn]=ImageMagick-omslag + Name[pt]=Interface para ImageMagick + Name[pt_BR]=Wrapper do ImageMagick +-Name[ru]=Интерфейс к ImageMagick ++Name[ru]=Оболочка к ImageMagick ++Name[sl]=Ovojnik za ImageMagick + Name[sr]=Омотач ImageMagick-а + Name[sr@Latn]=Omotač ImageMagick-a + Name[sv]=ImageMagick-gränssnitt +@@ -35,7 +36,7 @@ + Comment[nn]=ImageMagick-basert import, eksport og filkonvertering + Comment[pt]=Importação/exportação e conversão de ficheiro com o ImageMagick + Comment[pt_BR]=Conversão de arquivos e filtro de importação/exportação baseado no ImageMagick +-Comment[ru]=Фильтр импорта/экспорта рисунков посредством ImageMagick ++Comment[ru]=Фильтр импорта/экспорта и преобразования формата посредством ImageMagick + Comment[sr]=Увоз, извоз и конверзија фајлова помоћу ImageMagick-а + Comment[sr@Latn]=Uvoz, izvoz i konverzija fajlova pomoću ImageMagick-a + Comment[sv]=ImageMagick-baserad import, export och filkonvertering +Index: krita/plugins/tool_crop/kritatoolcrop.desktop +=================================================================== +--- krita/plugins/tool_crop/kritatoolcrop.desktop (revision 427945) ++++ krita/plugins/tool_crop/kritatoolcrop.desktop (working copy) +@@ -16,7 +16,7 @@ + Name[nn]=Beskjæringsverktøy + Name[pt]=Ferramenta de Recorte + Name[pt_BR]=Ferramenta de Recorte +-Name[ru]=Инструмент обрезки ++Name[ru]=Обрезка + Name[sl]=Orodje za obrezavo + Name[sr]=Алат за сасецање + Name[sr@Latn]=Alat za sasecanje +Index: krita/plugins/selectiontools/kritaselectiontools.desktop +=================================================================== +--- krita/plugins/selectiontools/kritaselectiontools.desktop (revision 427945) ++++ krita/plugins/selectiontools/kritaselectiontools.desktop (working copy) +@@ -2,12 +2,14 @@ + Encoding=UTF-8 + Name=Selection Tools + Name[ca]=Eines de selecció ++Name[cy]=Offer Detholi + Name[da]=Markeringsværktøj + Name[de]=Auswahlwerkzeuge + Name[el]=Εργαλεία επιλογής + Name[es]=Herramientas de selección + Name[et]=Valikutööriistad + Name[fr]=Outils de sélection ++Name[ga]=Uirlisí Roghnúcháin + Name[he]=כלי בחירה + Name[hu]=Kiválasztó eszközök + Name[it]=Strumenti di selezione +Index: krita/plugins/tool_star/kritatoolstar.desktop +=================================================================== +--- krita/plugins/tool_star/kritatoolstar.desktop (revision 427945) ++++ krita/plugins/tool_star/kritatoolstar.desktop (working copy) +@@ -2,6 +2,7 @@ + Encoding=UTF-8 + Name=Star Tool + Name[br]=Ostilh steredenn ++Name[cy]=Erfyn Seren + Name[da]=Stjerneværktøj + Name[de]=Sterne-Werkzeug + Name[el]=Εργαλείο αστέρα +@@ -18,6 +19,7 @@ + Name[pt]=Ferramenta de Estrelas + Name[pt_BR]=Ferramenta Estrela + Name[ru]=Звёзды ++Name[sl]=Zvezdno orodje + Name[sr]=Алат за звезде + Name[sr@Latn]=Alat za zvezde + Name[sv]=Stjärnverktyg +Index: krita/plugins/tool_transform/kritatooltransform.desktop +=================================================================== +--- krita/plugins/tool_transform/kritatooltransform.desktop (revision 427945) ++++ krita/plugins/tool_transform/kritatooltransform.desktop (working copy) +@@ -16,7 +16,7 @@ + Name[nn]=Beskjæringsverktøy + Name[pt]=Ferramenta de Recorte + Name[pt_BR]=Ferramenta de Recorte +-Name[ru]=Инструмент обрезки ++Name[ru]=Обрезка + Name[sl]=Orodje za obrezavo + Name[sr]=Алат за сасецање + Name[sr@Latn]=Alat za sasecanje +Index: krita/krita.desktop +=================================================================== +--- krita/krita.desktop (revision 427945) ++++ krita/krita.desktop (working copy) +@@ -22,6 +22,7 @@ + GenericName[fa]=برنامه دستکاری تصویر + GenericName[fi]=Kuvienmuokkausohjelma + GenericName[fr]=Logiciel de manipulation d'images ++GenericName[ga]=Clár Ionramhála na nÍomhánna + GenericName[he]=תוכנית לטיפול בתמונות + GenericName[hr]=Program za obradu slika + GenericName[hu]=Képszerkesztő +@@ -39,7 +40,7 @@ + GenericName[pt]=Programa de Manipulação de Imagens + GenericName[pt_BR]=Manipulador de Imagens + GenericName[ro]=Program de procesare imagini +-GenericName[ru]=Редактор графических изображений ++GenericName[ru]=Программа редактирования изображений + GenericName[sk]=Program pre úpravu obrázkov + GenericName[sl]=Program za obdelavo slik + GenericName[sr]=Програм за уређивање слика +Index: krita/core/kis_paint_device.cc +=================================================================== +--- krita/core/kis_paint_device.cc (revision 427945) ++++ krita/core/kis_paint_device.cc (working copy) +@@ -791,24 +791,23 @@ + QRect r = m_selection -> selectedRect(); + r = r.normalize(); + ++ for (Q_INT32 y = 0; y < r.height(); y++) { ++ KisHLineIterator devIt = createHLineIterator(r.x(), r.y() + y, r.width(), true); ++ KisHLineIterator selectionIt = m_selection -> createHLineIterator(r.x(), r.y() + y, r.width(), false); + +- KisRectIterator devIt = createRectIterator(r.x(), r.y(), r.width(), r.height(), true); +- KisRectIterator selectionIt = m_selection -> createRectIterator(r.x(), r.y(), r.width(), r.height(), false); ++ while (!devIt.isDone()) { ++ KisPixel p = toPixel(devIt.rawData()); ++ KisPixel s = m_selection -> toPixel(selectionIt.rawData()); ++ Q_UINT16 p_alpha, s_alpha; ++ p_alpha = p.alpha(); ++ s_alpha = MAX_SELECTED - s.alpha(); + +- while (!devIt.isDone()) { +- KisPixel p = toPixel(devIt.rawData()); +- KisPixel s = m_selection -> toPixel(selectionIt.rawData()); +- Q_UINT16 p_alpha, s_alpha; +- p_alpha = p.alpha(); +- s_alpha = MAX_SELECTED - s.alpha(); +- +- p.alpha() = (Q_UINT8) ((p_alpha * s_alpha) >> 8); ++ p.alpha() = (Q_UINT8) ((p_alpha * s_alpha) >> 8); + +- ++devIt; +- ++selectionIt; ++ ++devIt; ++ ++selectionIt; ++ } + } +- +- + } + + void KisPaintDevice::applySelectionMask(KisSelectionSP mask) +Index: krita/core/kis_selection_manager.cc +=================================================================== +--- krita/core/kis_selection_manager.cc (revision 427945) ++++ krita/core/kis_selection_manager.cc (working copy) +@@ -319,20 +319,22 @@ + + // Apply selection mask. + +- KisRectIterator layerIt = clip -> createRectIterator(0, 0, r.width(), r.height(), true); +- KisRectIterator selectionIt = selection -> createRectIterator(r.x(), r.y(), r.width(), r.height(), false); ++ for (Q_INT32 y = 0; y < r.height(); y++) { ++ KisHLineIterator layerIt = clip -> createHLineIterator(0, y, r.width(), true); ++ KisHLineIterator selectionIt = selection -> createHLineIterator(r.x(), r.y() + y, r.width(), false); + +- while (!layerIt.isDone()) { +- KisPixel p = clip -> toPixel(layerIt.rawData()); +- KisPixel s = selection -> toPixel(selectionIt.rawData()); +- Q_UINT16 p_alpha, s_alpha; +- p_alpha = p.alpha(); +- s_alpha = s.alpha(); +- +- p.alpha() = (Q_UINT8) ((p_alpha * s_alpha) >> 8); +- +- ++layerIt; +- ++selectionIt; ++ while (!layerIt.isDone()) { ++ KisPixel p = clip -> toPixel(layerIt.rawData()); ++ KisPixel s = selection -> toPixel(selectionIt.rawData()); ++ Q_UINT16 p_alpha, s_alpha; ++ p_alpha = p.alpha(); ++ s_alpha = s.alpha(); ++ ++ p.alpha() = (Q_UINT8) ((p_alpha * s_alpha) >> 8); ++ ++ ++layerIt; ++ ++selectionIt; ++ } + } + + // kdDebug() << "Selection copied: " +Index: krita/core/tiles/kis_tiledrectiterator.cc +=================================================================== +--- krita/core/tiles/kis_tiledrectiterator.cc (revision 427945) ++++ krita/core/tiles/kis_tiledrectiterator.cc (working copy) +@@ -66,7 +66,8 @@ + m_xInTile = m_leftInTile; + m_yInTile = m_topInTile; + +- fetchTileData(m_col, m_row); ++ if (! m_beyondEnd) ++ fetchTileData(m_col, m_row); + m_offset = m_pixelSize * (m_yInTile * KisTile::WIDTH + m_xInTile); + } + +Index: krita/core/builder/kis_image_magick_converter.cc +=================================================================== +--- krita/core/builder/kis_image_magick_converter.cc (revision 427945) ++++ krita/core/builder/kis_image_magick_converter.cc (working copy) +@@ -64,10 +64,10 @@ + */ + KisStrategyColorSpaceSP getColorSpaceForColorType(ColorspaceType type) { + if (type == GRAYColorspace) { +- KisColorSpaceRegistry::instance() -> get(KisID("CMYK", "")); ++ return KisColorSpaceRegistry::instance() -> get(KisID("GRAYA", "")); + } + else if (type == CMYKColorspace) { +- return KisColorSpaceRegistry::instance() -> get(KisID("GRAYA", "")); ++ return KisColorSpaceRegistry::instance() -> get(KisID("CMYK", "")); + } + else if (type == RGBColorspace || type == sRGBColorspace || type == TransparentColorspace) { + return KisColorSpaceRegistry::instance() -> get(KisID("RGBA", "")); +Index: krita/core/kis_view.cc +=================================================================== +--- krita/core/kis_view.cc (revision 427945) ++++ krita/core/kis_view.cc (working copy) +@@ -218,8 +218,7 @@ + { + delete m_dcop; + delete m_dockerManager; +- +- ++ delete m_selectionManager; + } + + DCOPObject* KisView::dcopObject() +Index: krita/core/kis_iterators_pixel.h +=================================================================== +--- krita/core/kis_iterators_pixel.h (revision 427945) ++++ krita/core/kis_iterators_pixel.h (working copy) +@@ -37,6 +37,7 @@ + public: + KisHLineIteratorPixel( KisPaintDevice *ndevice, KisDataManager *dm, KisDataManager *sel_dm, Q_INT32 x , Q_INT32 y , Q_INT32 w, Q_INT32 offsetx, Q_INT32 offsety, bool writable); + ++ ~KisHLineIteratorPixel() { delete m_selectionIterator; } + inline KisHLineIteratorPixel & operator ++() { KisHLineIterator::operator++(); advance(1); return *this;} + + /// Advances a number of pixels until it reaches the end of the line +@@ -52,6 +53,7 @@ + { + public: + KisVLineIteratorPixel( KisPaintDevice *ndevice, KisDataManager *dm, KisDataManager *sel_dm, Q_INT32 xpos , Q_INT32 ypos , Q_INT32 height, Q_INT32 offsetx, Q_INT32 offsety, bool writable); ++ ~KisVLineIteratorPixel() { delete m_selectionIterator; } + + inline KisVLineIteratorPixel & operator ++() { KisVLineIterator::operator++(); advance(1); return *this;} + +@@ -65,6 +67,7 @@ + { + public: + KisRectIteratorPixel( KisPaintDevice *ndevice, KisDataManager *dm, KisDataManager *sel_dm, Q_INT32 x, Q_INT32 y, Q_INT32 w, Q_INT32 h, Q_INT32 offsetx, Q_INT32 offsety, bool writable); ++ ~KisRectIteratorPixel() { delete m_selectionIterator; } + + inline KisRectIteratorPixel & operator ++() { KisRectIterator::operator++(); advance(1); return *this;} + +Index: krita/paintops/kritadefaultpaintops.desktop +=================================================================== +--- krita/paintops/kritadefaultpaintops.desktop (revision 427945) ++++ krita/paintops/kritadefaultpaintops.desktop (working copy) +@@ -15,7 +15,7 @@ + Name[nn]=Standard måleoperasjonar + Name[pt]=Operações de Pintura Predefinidas + Name[pt_BR]=Operações de pintura padrão +-Name[ru]=Стандартные действия рисования ++Name[ru]=Стандартные операции рисования + Name[sr]=Подразумеване сликарске операције + Name[sr@Latn]=Podrazumevane slikarske operacije + Name[sv]=Förvalda målningsoperationer +@@ -36,7 +36,7 @@ + Comment[nn]=Standard måleoperasjonar + Comment[pt]=Operações de pintura predefinidas + Comment[pt_BR]=Operações de pintura padrão +-Comment[ru]=Действия рисования по умолчанию ++Comment[ru]=Операции рисования по умолчанию + Comment[sr]=Подразумеване сликарске операције + Comment[sr@Latn]=Podrazumevane slikarske operacije + Comment[sv]=Förvalda ritåtgärder +Index: krita/modules/colorspace_ws/kritawsplugin.desktop +=================================================================== +--- krita/modules/colorspace_ws/kritawsplugin.desktop (revision 427945) ++++ krita/modules/colorspace_ws/kritawsplugin.desktop (working copy) +@@ -13,7 +13,7 @@ + Name[nn]=Fargemodell for vått lerret + Name[pt]=Modelo de Cores de Tela Molhado e Pegajoso + Name[pt_BR]=Modelo de cores de tela Molhada & Pegajosa +-Name[ru]=Цветовая модель влажности и прилипания ++Name[ru]=Цветовая модель с параметрами влажности и прилипания + Name[sr]=Модел боја мокрог и лепљивог платна + Name[sr@Latn]=Model boja mokrog i lepljivog platna + Name[sv]=Våt och klibbig dukfärgmodell +Index: krita/modules/colorspace_rgb/templates/transparent_1280x1024.desktop +=================================================================== +--- krita/modules/colorspace_rgb/templates/transparent_1280x1024.desktop (revision 427945) ++++ krita/modules/colorspace_rgb/templates/transparent_1280x1024.desktop (working copy) +@@ -4,6 +4,7 @@ + URL=.source/transparent_1280x1024.kra + Icon=template_rgb_empty + Name=Transparent 1280 x 1024 ++Name[br]=Treuzwelus 1280 x 1024 + Name[da]=Gennemsigtig 1280 x 1024 + Name[el]=Διαφανής 1280 x 1024 + Name[es]=1280 x 1024 transparente +@@ -16,7 +17,7 @@ + Name[nn]=Gjennomsiktig 1280 × 1024 + Name[pt]=Transparente 1280 x 1024 + Name[pt_BR]=Transparente de 1280 x 1024 +-Name[ru]=Прозрачный 1280x1024 ++Name[ru]=Рисунок 1280x1024, прозрачный фон + Name[sl]=Prosojna 1280 x 1024 + Name[sr]=Провидна 1280 x 1024 + Name[sr@Latn]=Providna 1280 x 1024 +@@ -39,7 +40,7 @@ + Comment[nn]=Lagar eit gjennomsiktig bilete på 1280 × 1024 pikslar. + Comment[pt]=Cria uma imagem transparente com 1280 x 1024 pontos. + Comment[pt_BR]=Cria uma imagem transparente de 1280 x 1024 pixels. +-Comment[ru]=Прозрачное, 1280x1024. ++Comment[ru]=Рисунок 1280x1024, прозрачный фон. + Comment[sl]=Ustvari prosojno sliko velikosti 1280 x 1024 točk. + Comment[sr]=Прави провидну слику са 1280 x 1024 пиксела. + Comment[sr@Latn]=Pravi providnu sliku sa 1280 x 1024 piksela. +Index: krita/modules/colorspace_rgb/templates/transparent_640x480.desktop +=================================================================== +--- krita/modules/colorspace_rgb/templates/transparent_640x480.desktop (revision 427945) ++++ krita/modules/colorspace_rgb/templates/transparent_640x480.desktop (working copy) +@@ -4,6 +4,7 @@ + URL=.source/transparent_1600x1200.kra + Icon=template_rgb_empty + Name=Transparent 640 x 480 ++Name[br]=Treuzwelus 640 x 480 + Name[da]=Gennemsigtig 640 x 480 + Name[el]=Διαφανής 640 x 480 + Name[es]=640 x 480 transparente +@@ -16,7 +17,7 @@ + Name[nn]=Gjennomsiktig 640 × 480 + Name[pt]=Transparente 640 x 480 + Name[pt_BR]=Transparente de 640 x 480 +-Name[ru]=Прозрачный 640x480 ++Name[ru]=Рисунок 640x480, прозрачный фон + Name[sl]=Prosojna 640 x 480 + Name[sr]=Провидна 640 x 480 + Name[sr@Latn]=Providna 640 x 480 +@@ -39,7 +40,7 @@ + Comment[nn]=Lagar eit gjennomsiktig bilete på 640 × 480 pikslar. + Comment[pt]=Cria uma imagem transparente com 640 x 480 pontos. + Comment[pt_BR]=Cria uma imagem transparente de 640 x 480 pixels. +-Comment[ru]=Прозрачное, 640x480. ++Comment[ru]=Рисунок 640x480, прозрачный фон. + Comment[sl]=Ustvari prosojno sliko velikosti 640 x 480 točk. + Comment[sr]=Прави провидну слику са 640 x 480 пиксела. + Comment[sr@Latn]=Pravi providnu sliku sa 640 x 480 piksela. +Index: krita/modules/colorspace_rgb/templates/white_1600x1200.desktop +=================================================================== +--- krita/modules/colorspace_rgb/templates/white_1600x1200.desktop (revision 427945) ++++ krita/modules/colorspace_rgb/templates/white_1600x1200.desktop (working copy) +@@ -10,6 +10,7 @@ + Name[es]=1600 x 1200 blanco + Name[et]=Valge 1600 x 1200 + Name[fr]=Image blanche 1600 x 1200 ++Name[ga]=Bán 1600×1200 + Name[he]=לבן 1600 x 1200 + Name[hu]=Fehér 1600 x 1200 + Name[it]=Bianco 1600 x 1200 +@@ -17,7 +18,7 @@ + Name[nn]=Kvitt 1600 × 1200 + Name[pt]=Branca 1600 x 1200 + Name[pt_BR]=1600 x 1200 em Branco +-Name[ru]=Белый 1600x1200 ++Name[ru]=Рисунок 1600x1200, белый фон + Name[sl]=Bela 1600 x 1200 + Name[sr]=Бела 1600 x 1200 + Name[sr@Latn]=Bela 1600 x 1200 +@@ -39,7 +40,7 @@ + Comment[nn]=Lagar eit kvitt RGB-bilete på 1600 × 1200 pikslar. + Comment[pt]=Cria uma imagem RGB branca com 1600 x 1200 pontos. + Comment[pt_BR]=Cria uma imagem RGB em branco de 1600 x 1200 pixels. +-Comment[ru]=Белое в формате RGB, 1600x1200. ++Comment[ru]=Рисунок RGB 1600x1200, белый фон. + Comment[sl]=Ustvari belo sliko RGB velikosti 1600 x 1200 točk. + Comment[sr]=Прави белу RGB слику са 1600 x 1200 пиксела. + Comment[sr@Latn]=Pravi belu RGB sliku sa 1600 x 1200 piksela. +Index: krita/modules/colorspace_rgb/templates/white_1024x768.desktop +=================================================================== +--- krita/modules/colorspace_rgb/templates/white_1024x768.desktop (revision 427945) ++++ krita/modules/colorspace_rgb/templates/white_1024x768.desktop (working copy) +@@ -13,6 +13,7 @@ + Name[es]=1024 x 768 blanco + Name[et]=Valge 1024 x 768 + Name[fr]=Image blanche 1024 x 768 ++Name[ga]=Bán 1024×768 + Name[he]=לבן 1024 x 768 + Name[hu]=Fehér 1024 x 768 + Name[it]=Bianco 1024 x 768 +@@ -21,7 +22,7 @@ + Name[nn]=Kvitt 1024 × 768 + Name[pt]=Branca 1024 x 768 + Name[pt_BR]=1024 x 768 em Branco +-Name[ru]=Белый 1024x768 ++Name[ru]=Рисунок 1024x768, белый фон + Name[sl]=Bela 1024 x 768 + Name[sr]=Бела 1024 x 768 + Name[sr@Latn]=Bela 1024 x 768 +@@ -46,7 +47,7 @@ + Comment[nn]=Lagar eit kvitt RGB-bilete på 1024 × 768 pikslar. + Comment[pt]=Cria uma imagem RGB branca com 1024 x 768 pontos. + Comment[pt_BR]=Cria uma imagem RGB em branco de 1024 x 768 pixéis. +-Comment[ru]=Белое в формате RGB, 1024x768. ++Comment[ru]=Рисунок RGB 1024x768, белый фон. + Comment[sl]=Ustvari belo sliko RGB velikosti 1024 x 768 točk. + Comment[sr]=Прави белу RGB слику са 1024 x 768 пиксела. + Comment[sr@Latn]=Pravi belu RGB sliku sa 1024 x 768 piksela. +Index: krita/modules/colorspace_rgb/templates/white_1280x1024.desktop +=================================================================== +--- krita/modules/colorspace_rgb/templates/white_1280x1024.desktop (revision 427945) ++++ krita/modules/colorspace_rgb/templates/white_1280x1024.desktop (working copy) +@@ -10,6 +10,7 @@ + Name[es]=1280 x 1024 blanco + Name[et]=Valge 1280 x 1024 + Name[fr]=Image blanche 1280 x 1024 ++Name[ga]=Bán 1280×1024 + Name[he]=לבן 1280 x 1024 + Name[hu]=Fehér 1280 x 1024 + Name[it]=Bianco 1280 x 1024 +@@ -17,7 +18,7 @@ + Name[nn]=Kvitt 1280 × 1024 + Name[pt]=Branca 1280 x 1024 + Name[pt_BR]=1280 x 1024 em Branco +-Name[ru]=Белый 1280x1024 ++Name[ru]=Рисунок 1280x1024, белый фон + Name[sl]=Bela 1280 x 1024 + Name[sr]=Бела 1280 x 1024 + Name[sr@Latn]=Bela 1280 x 1024 +@@ -39,7 +40,7 @@ + Comment[nn]=Lagar eit kvitt RGB-bilete på 1280 × 1024 pikslar. + Comment[pt]=Cria uma imagem RGB branca com 1280 x 1024 pontos. + Comment[pt_BR]=Cria uma imagem RGB em branco de 1280 x 1024 pixels. +-Comment[ru]=Белое в формате RGB, 1280x1024. ++Comment[ru]=Рисунок RGB 1280x1024, белый фон. + Comment[sl]=Ustvari belo sliko RGB velikosti 1280 x 1024 točk. + Comment[sr]=Прави белу RGB слику са 1280 x 1024 пиксела. + Comment[sr@Latn]=Pravi belu RGB sliku sa 1280 x 1024 piksela. +Index: krita/modules/colorspace_rgb/templates/white_640x480.desktop +=================================================================== +--- krita/modules/colorspace_rgb/templates/white_640x480.desktop (revision 427945) ++++ krita/modules/colorspace_rgb/templates/white_640x480.desktop (working copy) +@@ -13,6 +13,7 @@ + Name[es]=640x480 blanco + Name[et]=Valge 640x480 + Name[fr]=Image blanche 640 x 480 ++Name[ga]=Bán 640×480 + Name[he]=לבן 640x480 + Name[hu]=Fehér 640 x 480 + Name[it]=Bianco 640x480 +@@ -21,7 +22,7 @@ + Name[nn]=Kvitt 640 × 480 + Name[pt]=Branca 640x480 + Name[pt_BR]=640x480 em Branco +-Name[ru]=Белый 640x480 ++Name[ru]=Рисунок 640x480, белый фон + Name[sl]=Bela 640x480 + Name[sr]=Бела 640x480 + Name[sr@Latn]=Bela 640x480 +@@ -42,11 +43,11 @@ + Comment[hu]=Létrehoz egy 640 x 480 képpontos fehér RGB képet. + Comment[it]=Crea un'immagine RGB bianca di 640 x 480 pixel. + Comment[nb]=Lager et hvitt bilde på 640 x 480 piksler. +-Comment[nl]=Maakt een witte RGB-afbeelding aan van 540 x 480 pixels. ++Comment[nl]=Maakt een witte RGB-afbeelding aan van 640 x 480 pixels. + Comment[nn]=Lagar eit kvitt RGB-bilete på 640 × 480 pikslar. + Comment[pt]=Cria uma imagem RGB branca com 640 x 480 pontos. + Comment[pt_BR]=Cria uma imagem RGB em branco de 640 x 480 pixéis. +-Comment[ru]=Белое в формате RGB, 640x480. ++Comment[ru]=Рисунок RGB 640x480, белый фон. + Comment[sl]=Ustvari belo sliko RGB velikosti 640 x 480 točk. + Comment[sr]=Прави белу RGB слику са 640 x 480 пиксела. + Comment[sr@Latn]=Pravi belu RGB sliku sa 640 x 480 piksela. +Index: krita/modules/colorspace_rgb/templates/transparent_1600x1200.desktop +=================================================================== +--- krita/modules/colorspace_rgb/templates/transparent_1600x1200.desktop (revision 427945) ++++ krita/modules/colorspace_rgb/templates/transparent_1600x1200.desktop (working copy) +@@ -5,6 +5,7 @@ + Icon=template_rgb_empty + Name=Transparent 1600 x 1200 + Name[bg]=Прозрачно 1600 x 1200 ++Name[br]=Treuzwelus 1600 x 1200 + Name[da]=Gennemsigtig 1600 x 1200 + Name[el]=Διαφανής 1600 x 1200 + Name[es]=1600 x 1200 transparente +@@ -18,7 +19,7 @@ + Name[nn]=Gjennomsiktig 1600 × 1200 + Name[pt]=Transparente 1600 x 1200 + Name[pt_BR]=Transparente de 1600 x 1200 +-Name[ru]=Прозрачный 1600x1200 ++Name[ru]=Рисунок 1600x1200, прозрачный фон + Name[sl]=Prosojna 1600 x 1200 + Name[sr]=Провидна 1600 x 1200 + Name[sr@Latn]=Providna 1600 x 1200 +@@ -44,7 +45,7 @@ + Comment[nn]=Lagar eit gjennomsiktig bilete på 1600 × 1200 pikslar. + Comment[pt]=Cria uma imagem transparente com 1600 x 1200 pontos. + Comment[pt_BR]=Cria uma imagem transparente de 1600 x 1200 pixéis. +-Comment[ru]=Прозрачное, 1600x1200. ++Comment[ru]=Рисунок 1600x1200, прозрачный фон. + Comment[sl]=Ustvari prosojno sliko velikosti 1600 x 1200 točk. + Comment[sr]=Прави провидну слику са 1600 x 1200 пиксела. + Comment[sr@Latn]=Pravi providnu sliku sa 1600 x 1200 piksela. +Index: krita/modules/colorspace_rgb/templates/transparent_1024x768.desktop +=================================================================== +--- krita/modules/colorspace_rgb/templates/transparent_1024x768.desktop (revision 427945) ++++ krita/modules/colorspace_rgb/templates/transparent_1024x768.desktop (working copy) +@@ -4,6 +4,7 @@ + URL=.source/transparent_1024x768.kra + Icon=template_rgb_empty + Name=Transparent 1024 x 768 ++Name[br]=Treuzwelus 1024 x 768 + Name[da]=Gennemsigtig 1024 x 768 + Name[el]=Διαφανής 1024 x 768 + Name[es]=1024 x 768 transparente +@@ -16,7 +17,7 @@ + Name[nn]=Gjennomsiktig 1024 × 768 + Name[pt]=Transparente 1024 x 768 + Name[pt_BR]=Transparente de 1024 x 768 +-Name[ru]=Прозрачный 1024x768 ++Name[ru]=Рисунок 1024x768, прозрачный фон + Name[sl]=Prosojna 1024 x 768 + Name[sr]=Провидна 1024 x 768 + Name[sr@Latn]=Providna 1024 x 768 +@@ -39,7 +40,7 @@ + Comment[nn]=Lagar eit gjennomsiktig bilete på 1024 × 768 pikslar. + Comment[pt]=Cria uma imagem transparente com 1024 x 768 pontos. + Comment[pt_BR]=Cria uma imagem transparente de 1024 x 768 pixels. +-Comment[ru]=Прозрачное, 1024x768. ++Comment[ru]=Рисунок 1024x768, прозрачный фон. + Comment[sl]=Ustvari prosojno sliko velikosti 1024 x 768 točk. + Comment[sr]=Прави провидну слику са 1024 x 768 пиксела. + Comment[sr@Latn]=Pravi providnu sliku sa 1024 x 768 piksela. +Index: krita/modules/krita_module.desktop +=================================================================== +--- krita/modules/krita_module.desktop (revision 427945) ++++ krita/modules/krita_module.desktop (working copy) +@@ -19,6 +19,7 @@ + Comment[pt]=Módulo de funcionalidade nuclear para o Krita + Comment[pt_BR]=Módulo de funcionalidades principais para o Krita + Comment[ru]=Движок Krita ++Comment[sl]=Modul za osnovne zmožnosti Krite + Comment[sr]=Модел основне функционалности за Krita-у + Comment[sr@Latn]=Model osnovne funkcionalnosti za Krita-u + Comment[sv]=Modul med kärnfunktioner för Krita +Index: krita/modules/colorspace_gray/templates/white_640x480.desktop +=================================================================== +--- krita/modules/colorspace_gray/templates/white_640x480.desktop (revision 427945) ++++ krita/modules/colorspace_gray/templates/white_640x480.desktop (working copy) +@@ -12,6 +12,7 @@ + Name[es]=Fondo blanco, 640 x 480 + Name[et]=Valge taust, 640 x 480 + Name[fr]=Fond blanc 640 x 480 ++Name[ga]=Cúlra Bán, 640×480 + Name[he]=רקע לבן, 640 x 480 + Name[hu]=Fehér háttér, 640 x 480 + Name[it]=Sfondo bianco, 640 x 480 +@@ -20,7 +21,7 @@ + Name[nn]=Kvit bakgrunn, 640 × 480 + Name[pt]=Fundo Branco, 640 x 480 + Name[pt_BR]=Fundo em branco, 640 x 480 +-Name[ru]=Белый фон, 640x480 ++Name[ru]=Рисунок 640x480, белый фон + Name[sl]=Belo ozadje, 640 x 480 + Name[sr]=Бела позадина, 640 x 480 + Name[sr@Latn]=Bela pozadina, 640 x 480 +@@ -46,7 +47,7 @@ + Comment[nn]=Lagar eit bilete på 640 × 480 pikslar med ein kvit bakgrunn. + Comment[pt]=Cria uma imagem de 640 x 480 pontos com um fundo branco. + Comment[pt_BR]=Cria uma imagem de 640 x 480 pixéis com um fundo branco. +-Comment[ru]=Белое, 640x480. ++Comment[ru]=Рисунок 640x480, белый фон. + Comment[sl]=Ustvari sliko velikosti 640 x 480 točk z belim ozadjem. + Comment[sr]=Прави слику од 640 x 480 пиксела са белом позадином. + Comment[sr@Latn]=Pravi sliku od 640 x 480 piksela sa belom pozadinom. +Index: krita/modules/colorspace_cmyk/kritacmykplugin.desktop +=================================================================== +--- krita/modules/colorspace_cmyk/kritacmykplugin.desktop (revision 427945) ++++ krita/modules/colorspace_cmyk/kritacmykplugin.desktop (working copy) +@@ -46,7 +46,7 @@ + Comment[nn]=Fargemodell for CMYK-bilete med 8 bit per kanal + Comment[pt]=Modelo de cor para imagens CMYK com 8 bits por canal + Comment[pt_BR]=Modelo de cor para imagens com 8-bits de canal CMYK +-Comment[ru]=Цветовая модель для изображений в CMYK (болотный, пурпурный, жёлтый, чёрный) 8-бит/канал ++Comment[ru]=Цветовая модель для изображений в CMYK (циан, пурпурный, жёлтый, чёрный) 8-бит/канал + Comment[sl]=Barvni model za slike CMYK z 8 biti/kanal + Comment[sr]=Модел боја за CMYK слике са 8 битова/каналу + Comment[sr@Latn]=Model boja za CMYK slike sa 8 bitova/kanalu +Index: krita/modules/colorspace_cmyk/templates/white_2000x800.desktop +=================================================================== +--- krita/modules/colorspace_cmyk/templates/white_2000x800.desktop (revision 427945) ++++ krita/modules/colorspace_cmyk/templates/white_2000x800.desktop (working copy) +@@ -12,6 +12,7 @@ + Name[es]=2000 x 800 blanco + Name[et]=Valge 2000 x 800 + Name[fr]=Image blanche 2000 x 800 ++Name[ga]=Bán 2000×800 + Name[he]=לבן 2000 x 800 + Name[hu]=fehér 2000 x 800 + Name[it]=Bianco 2000 x 800 +@@ -45,7 +46,7 @@ + Comment[nn]=Lagar eit kvitt CMYK-bilete på 2000 × 800 pikslar. + Comment[pt]=Cria uma imagem CMYK branca com 2000 x 800 pontos. + Comment[pt_BR]=Cria uma imagem CMYK em branco de 2000 x 800 pixéis. +-Comment[ru]=Белое в формате CMYK, 2000x800. ++Comment[ru]=Рисунок CMYK, 2000x800, белый фон. + Comment[sl]=Ustvari belo sliko CMYK velikosti 2000 x 800 točk. + Comment[sr]=Прави белу CMYK слику са 2000 x 800 пиксела. + Comment[sr@Latn]=Pravi belu CMYK sliku sa 2000 x 800 piksela. +Index: krita/data/krita_module.desktop +=================================================================== +--- krita/data/krita_module.desktop (revision 427945) ++++ krita/data/krita_module.desktop (working copy) +@@ -19,6 +19,7 @@ + Comment[pt]=Módulo de funcionalidade nuclear para o Krita + Comment[pt_BR]=Módulo de funcionalidades principais para o Krita + Comment[ru]=Движок Krita ++Comment[sl]=Modul za osnovne zmožnosti Krite + Comment[sr]=Модел основне функционалности за Krita-у + Comment[sr@Latn]=Model osnovne funkcionalnosti za Krita-u + Comment[sv]=Modul med kärnfunktioner för Krita +Index: krita/data/krita_paintop.desktop +=================================================================== +--- krita/data/krita_paintop.desktop (revision 427945) ++++ krita/data/krita_paintop.desktop (working copy) +@@ -17,6 +17,7 @@ + Comment[pt]=Módulo de operações de pintura do Krita + Comment[pt_BR]=plugin de operação de pintura para o Krita + Comment[ru]=Модуль рисования Krita ++Comment[sl]=vstavek za dejanja slikanja za Krito + Comment[sr]=Прикључак за сликарске операције за Krita-у + Comment[sr@Latn]=Priključak za slikarske operacije za Krita-u + Comment[sv]=Målningsinsticksprogram för Krita +Index: krita/kritapart.desktop +=================================================================== +--- krita/kritapart.desktop (revision 427945) ++++ krita/kritapart.desktop (working copy) +@@ -18,7 +18,7 @@ + Name[nn]=KOffice-komponent for biletmanipulering + Name[pt]=Componente de Manipulação de Imagens do KOffice + Name[pt_BR]=Componente de Manipulação de Imagens do KOffice +-Name[ru]=Компонент редактирования изображений KOffice ++Name[ru]=Компонент редактирования изображений + Name[sl]=Komponenta za obdelavo slik za KOffice + Name[sr]=KOffice-ова компонента за манипулацију сликама + Name[sr@Latn]=KOffice-ova komponenta za manipulaciju slikama +@@ -49,7 +49,7 @@ + GenericName[nn]=Bilethandsaming + GenericName[pt]=Manipulação de Imagens + GenericName[pt_BR]=Manipulação de Imagens +-GenericName[ru]=Редактор графических изображений ++GenericName[ru]=Редактирование изображений + GenericName[sl]=Obdelava slik + GenericName[sr]=Манипулација сликама + GenericName[sr@Latn]=Manipulacija slikama +Index: krita/ui/kis_layerbox.cc +=================================================================== +--- krita/ui/kis_layerbox.cc (revision 427945) ++++ krita/ui/kis_layerbox.cc (working copy) +@@ -372,7 +372,7 @@ + void KisLayerBoxItem::init(const QString& label, QListBox *parent, + KisLayerBox::flags f) + { +- KIconLoader il; ++ KIconLoader il( "krita" ); + + m_label = label; + +Index: krita/ui/kis_dockframedocker.cc +=================================================================== +--- krita/ui/kis_dockframedocker.cc (revision 427945) ++++ krita/ui/kis_dockframedocker.cc (working copy) +@@ -125,7 +125,6 @@ + m_page -> lblCaption -> show(); + m_page -> bnShade -> show(); + m_page -> lblCaption -> setText(caption()); +- resize(sizeHint()); + } + else { + m_docked = false; +@@ -133,7 +132,6 @@ + m_page -> bnShade -> hide(); + m_page -> tabWidget -> show(); + m_page -> lblCaption -> setText(""); +- resize(sizeHint()); + } + + } +Index: kchart/kchartpart.desktop +=================================================================== +--- kchart/kchartpart.desktop (revision 427945) ++++ kchart/kchartpart.desktop (working copy) +@@ -20,6 +20,7 @@ + Name[pt]=Componente de Gráficos do KOffice + Name[pt_BR]=Componente de Gráficos do KOffice + Name[ru]=Компонент диаграмм KOffice ++Name[sl]=Komponenta za grafe za KOffice + Name[sr]=KOffice-ова компонента за графике + Name[sr@Latn]=KOffice-ova komponenta za grafike + Name[sv]=Koffice-diagramkomponent +Index: kchart/kdchart/KDDrawText.cpp +=================================================================== +--- kchart/kdchart/KDDrawText.cpp (revision 427945) ++++ kchart/kdchart/KDDrawText.cpp (working copy) +@@ -256,10 +256,12 @@ + painter->setPen( QColor( Qt::darkGreen ) ); + painter->drawRect(x,y,txtWidth,txtHeight); + }else{ ++#if 0 + // Working around a strange Qt bug: Rotated painter must be + // initialized by drawing before text can be painted there. + painter->setPen( QColor( Qt::white ) ); + painter->drawLine( 30000,0,30001,0 ); ++#endif + } + painter->setPen( savePen ); + } +Index: kchart/kchartWizardSelectChartTypePage.cc +=================================================================== +--- kchart/kchartWizardSelectChartTypePage.cc (revision 427945) ++++ kchart/kchartWizardSelectChartTypePage.cc (working copy) +@@ -16,11 +16,11 @@ + namespace KChart + { + +-KChartButton::KChartButton(QWidget *parent, const QString & _text, QPixmap *_pixmap) ++KChartButton::KChartButton(QWidget *parent, const QString & _text, const QPixmap &_pixmap) + : QVBox(parent) + { + m_button = new QPushButton(this); +- m_button->setPixmap(*_pixmap); ++ m_button->setPixmap(_pixmap); + m_button->setToggleButton( true ); + QLabel *label = new QLabel(_text, this); + label->setSizePolicy(QSizePolicy::Fixed,QSizePolicy::Fixed); +@@ -30,16 +30,16 @@ + KChartButton::~KChartButton() + { + } +- ++ + void KChartWizardSelectChartTypePage::addButton(const QString &name, + const QString &icon_name, + int type) + { +- KChartButton *button = new KChartButton( this, name, &BarIcon( icon_name,KIcon::SizeMedium, KIcon::DefaultState,KChartFactory::global() ) ); ++ KChartButton *button = new KChartButton( this, name, BarIcon( icon_name,KIcon::SizeMedium, KIcon::DefaultState,KChartFactory::global() ) ); + _layout->addWidget(button,r_pos,c_pos); + _typeBG->insert( button->button(), type ); + +- if (c_pos == 3) ++ if (c_pos == 3) + { + c_pos=0; + r_pos++; //place the next button in the second row +Index: kchart/kchartWizardSelectChartTypePage.h +=================================================================== +--- kchart/kchartWizardSelectChartTypePage.h (revision 427945) ++++ kchart/kchartWizardSelectChartTypePage.h (working copy) +@@ -23,9 +23,9 @@ + { + Q_OBJECT + public: +- KChartButton(QWidget* parent, const QString &, QPixmap *); ++ KChartButton(QWidget* parent, const QString &, const QPixmap &); + ~KChartButton(); +- ++ + QPushButton *button() const { return m_button;} + private: + QPushButton *m_button; +Index: mimetypes/kde32/vnd.stardivision.math.desktop +=================================================================== +--- mimetypes/kde32/vnd.stardivision.math.desktop (revision 427945) ++++ mimetypes/kde32/vnd.stardivision.math.desktop (working copy) +@@ -25,7 +25,7 @@ + Comment[nn]=StarOffice-formel + Comment[pt]=Documento Matemático do StarOffice + Comment[pt_BR]=Documento do StarOffice Math +-Comment[ru]=Формулы StarOffice ++Comment[ru]=Формула StarOffice + Comment[sl]=Dokument za StarOffice Math + Comment[sr]=StarOffice Math-ов документ + Comment[sr@Latn]=StarOffice Math-ov dokument +Index: mimetypes/kde32/vnd.stardivision.writer-global.desktop +=================================================================== +--- mimetypes/kde32/vnd.stardivision.writer-global.desktop (revision 427945) ++++ mimetypes/kde32/vnd.stardivision.writer-global.desktop (working copy) +@@ -23,7 +23,7 @@ + Comment[nn]=StarOffice Writer-hovuddokument + Comment[pt]=Documento Mestre do Writer do StarOffice + Comment[pt_BR]=Documento Mestre do StarOffice Writer +-Comment[ru]=Основной документ StarOffice Writer ++Comment[ru]=Мастер-документ StarOffice + Comment[sl]=Dokument za StarOffice Writer Master + Comment[sr]=StarOffice Writer-ов главни документ + Comment[sr@Latn]=StarOffice Writer-ov glavni dokument +Index: mimetypes/kde32/vnd.sun.xml.writer.master.desktop +=================================================================== +--- mimetypes/kde32/vnd.sun.xml.writer.master.desktop (revision 427945) ++++ mimetypes/kde32/vnd.sun.xml.writer.master.desktop (working copy) +@@ -20,7 +20,7 @@ + Comment[nn]=OpenOffice.org-hovudtekstdokument + Comment[pt]=Documento Mestre de Texto do OpenOffice.org + Comment[pt_BR]=Documento Mestre de Texto do OpenOffice.org +-Comment[ru]=Основной текстовый документ OpenOffice.org ++Comment[ru]=Мастер-документ OpenOffice.org + Comment[sr]=OpenOffice.org-ов главни текстуални документ + Comment[sr@Latn]=OpenOffice.org-ov glavni tekstualni dokument + Comment[sv]=Openoffice.org huvudtextdokument +Index: mimetypes/kde32/vnd.sun.xml.writer.template.desktop +=================================================================== +--- mimetypes/kde32/vnd.sun.xml.writer.template.desktop (revision 427945) ++++ mimetypes/kde32/vnd.sun.xml.writer.template.desktop (working copy) +@@ -21,7 +21,7 @@ + Comment[nn]=OpenOffice.org-tekstdokumentmal + Comment[pt]=Modelo de Documento de Texto do OpenOffice.org + Comment[pt_BR]=Modelo de Documento de Texto do OpenOffice.org +-Comment[ru]=Шаблон текстового документа OpenОffice.org ++Comment[ru]=Шаблон документа OpenOffice.org + Comment[sl]=Predloga besedilnega dokumenta za OpenOffice.org + Comment[sr]=OpenOffice.org-ов шаблон текстуалног документа + Comment[sr@Latn]=OpenOffice.org-ov šablon tekstualnog dokumenta +Index: mimetypes/kde32/vnd.stardivision.draw.desktop +=================================================================== +--- mimetypes/kde32/vnd.stardivision.draw.desktop (revision 427945) ++++ mimetypes/kde32/vnd.stardivision.draw.desktop (working copy) +@@ -23,7 +23,7 @@ + Comment[nn]=StarOffice-teikning + Comment[pt]=Desenho do StarOffice + Comment[pt_BR]=Desenho do StarOffice +-Comment[ru]=Изображение StarOffice ++Comment[ru]=Рисунок StarOffice + Comment[sl]=Risanje za StarOffice + Comment[sr]=StarOffice-ов цртеж + Comment[sr@Latn]=StarOffice-ov crtež +Index: mimetypes/kde32/vnd.sun.xml.draw.template.desktop +=================================================================== +--- mimetypes/kde32/vnd.sun.xml.draw.template.desktop (revision 427945) ++++ mimetypes/kde32/vnd.sun.xml.draw.template.desktop (working copy) +@@ -20,7 +20,7 @@ + Comment[nn]=OpenOffice.org-teikningsmal + Comment[pt]=Modelo de Desenho do OpenOffice.org + Comment[pt_BR]=Modelo de Desenho do OpenOffice.org +-Comment[ru]=Шаблон изображения OpenOffice.org ++Comment[ru]=Шаблон рисунка OpenOffice.org + Comment[sl]=Predloga risanja za OpenOffice.org + Comment[sr]=OpenOffice.org-ов шаблон цртежа + Comment[sr@Latn]=OpenOffice.org-ov šablon crteža +Index: mimetypes/kde32/vnd.sun.xml.calc.template.desktop +=================================================================== +--- mimetypes/kde32/vnd.sun.xml.calc.template.desktop (revision 427945) ++++ mimetypes/kde32/vnd.sun.xml.calc.template.desktop (working copy) +@@ -21,7 +21,7 @@ + Comment[nn]=OpenOffice.org-reknearkmal + Comment[pt]=Modelo de Folha de Cálculo do OpenOffice.org + Comment[pt_BR]=Modelo de Planilha OpenOffice.org +-Comment[ru]=Шаблон таблицы OpenOffice.org ++Comment[ru]=Шаблон электронной таблицы OpenOffice.org + Comment[sl]=Predloga preglednice za OpenOffice.org + Comment[sr]=OpenOffice.org-ов шаблон прорачунског листа + Comment[sr@Latn]=OpenOffice.org-ov šablon proračunskog lista +Index: mimetypes/kde33/vnd.oasis.opendocument.graphics-template.desktop +=================================================================== +--- mimetypes/kde33/vnd.oasis.opendocument.graphics-template.desktop (revision 427945) ++++ mimetypes/kde33/vnd.oasis.opendocument.graphics-template.desktop (working copy) +@@ -22,7 +22,7 @@ + Comment[nn]=OASIS OpenDocument-teikningsmal + Comment[pt]=Modelo de Desenho OASIS OpenDocument + Comment[pt_BR]=Modelo de Gráfico OpenDocument OASIS +-Comment[ru]=Шаблон графики OASIS OpenDocument Graphics ++Comment[ru]=Шаблон рисунка OASIS OpenDocument Graphics + Comment[sl]=Predloga grafike OASIS OpenDocument + Comment[sr]=OASIS-ов OpenDocument графички шаблон + Comment[sr@Latn]=OASIS-ov OpenDocument grafički šablon +Index: mimetypes/kde33/vnd.oasis.opendocument.graphics.desktop +=================================================================== +--- mimetypes/kde33/vnd.oasis.opendocument.graphics.desktop (revision 427945) ++++ mimetypes/kde33/vnd.oasis.opendocument.graphics.desktop (working copy) +@@ -22,7 +22,7 @@ + Comment[nn]=OASIS OpenDocument-teikning + Comment[pt]=Desenho OASIS OpenDocument + Comment[pt_BR]=Gráfico OpenDocument OASIS +-Comment[ru]=Графика OASIS OpenDocument ++Comment[ru]=Рисунок OASIS OpenDocument + Comment[sl]=Grafika OASIS OpenDocument + Comment[sr]=OASIS-ова OpenDocument графика + Comment[sr@Latn]=OASIS-ova OpenDocument grafika +Index: kivio/kiviopart/kivio_stencil_geometry_panel.cpp +=================================================================== +--- kivio/kiviopart/kivio_stencil_geometry_panel.cpp (revision 427945) ++++ kivio/kiviopart/kivio_stencil_geometry_panel.cpp (working copy) +@@ -96,10 +96,10 @@ + lw->setPixmap( QPixmap((const char **)width_xpm) ); + lh->setPixmap( QPixmap((const char **)height_xpm) ); + +- m_pX = new KoUnitDoubleSpinBox(this, -1000.0, 1000.0, 0.5, 0.0); +- m_pY = new KoUnitDoubleSpinBox(this, -1000.0, 1000.0, 0.5, 0.0); +- m_pW = new KoUnitDoubleSpinBox(this, -1000.0, 1000.0, 0.5, 0.0); +- m_pH = new KoUnitDoubleSpinBox(this, -1000.0, 1000.0, 0.5, 0.0); ++ m_pX = new KoBuggyUnitDoubleSpinBox(this, -1000.0, 1000.0, 0.5, 0.0); ++ m_pY = new KoBuggyUnitDoubleSpinBox(this, -1000.0, 1000.0, 0.5, 0.0); ++ m_pW = new KoBuggyUnitDoubleSpinBox(this, -1000.0, 1000.0, 0.5, 0.0); ++ m_pH = new KoBuggyUnitDoubleSpinBox(this, -1000.0, 1000.0, 0.5, 0.0); + m_rotationSBox = new KIntSpinBox(-360, 360, 1, 0, 10, this); + m_rotationSBox->hide(); + +Index: kivio/kiviopart/kivio_stencil_geometry_panel.h +=================================================================== +--- kivio/kiviopart/kivio_stencil_geometry_panel.h (revision 427945) ++++ kivio/kiviopart/kivio_stencil_geometry_panel.h (working copy) +@@ -5,14 +5,14 @@ + #include <koUnit.h> + + class KoPageLayout; +-class KoUnitDoubleSpinBox; ++class KoBuggyUnitDoubleSpinBox; + class KIntSpinBox; + + class KivioStencilGeometryPanel : public QWidget + { + Q_OBJECT + protected: +- KoUnitDoubleSpinBox *m_pX, *m_pY, *m_pW, *m_pH; ++ KoBuggyUnitDoubleSpinBox *m_pX, *m_pY, *m_pW, *m_pH; + KIntSpinBox* m_rotationSBox; + KoUnit::Unit m_unit; + bool m_emitSignals; +Index: kivio/kiviopart/kivio_view.h +=================================================================== +--- kivio/kiviopart/kivio_view.h (revision 427945) ++++ kivio/kiviopart/kivio_view.h (working copy) +@@ -63,7 +63,7 @@ + class DCOPObject; + class KoRuler; + class KoZoomHandler; +-class KoUnitDoubleSpinBox; ++class KoBuggyUnitDoubleSpinBox; + class KStatusBarLabel; + class KoLineWidthAction; + class KoLineStyleAction; +Index: kivio/kiviopart/ui/kiviostencilformatdlg.cpp +=================================================================== +--- kivio/kiviopart/ui/kiviostencilformatdlg.cpp (revision 427945) ++++ kivio/kiviopart/ui/kiviostencilformatdlg.cpp (working copy) +@@ -46,7 +46,7 @@ + QGridLayout* gl = new QGridLayout(mainWidget, 3, 2, KDialog::marginHint(), KDialog::spacingHint()); + + QLabel* lineWidthLbl = new QLabel(i18n("Line &width:"), mainWidget); +- m_lineWidthUSBox = new KoUnitDoubleSpinBox(mainWidget, 0.0, 1000.0, 0.1, 1.0, m_unit, 2); ++ m_lineWidthUSBox = new KoBuggyUnitDoubleSpinBox(mainWidget, 0.0, 1000.0, 0.1, 1.0, m_unit, 2); + lineWidthLbl->setBuddy(m_lineWidthUSBox); + QLabel* lineColorLbl = new QLabel(i18n("Line &color:"), mainWidget); + m_lineCBtn = new KColorButton(mainWidget); +Index: kivio/kiviopart/ui/kiviostencilformatdlg.h +=================================================================== +--- kivio/kiviopart/ui/kiviostencilformatdlg.h (revision 427945) ++++ kivio/kiviopart/ui/kiviostencilformatdlg.h (working copy) +@@ -24,7 +24,7 @@ + + #include <koUnit.h> + +-class KoUnitDoubleSpinBox; ++class KoBuggyUnitDoubleSpinBox; + class KColorButton; + class KComboBox; + class KivioView; +@@ -61,7 +61,7 @@ + void initLineEndStyles(); + + protected: +- KoUnitDoubleSpinBox* m_lineWidthUSBox; ++ KoBuggyUnitDoubleSpinBox* m_lineWidthUSBox; + KColorButton* m_lineCBtn; + KColorButton* m_fillCBtn; + KComboBox* m_patternCBox; +Index: kivio/kiviopart/ui/kiviooptionsdialog.cpp +=================================================================== +--- kivio/kiviopart/ui/kiviooptionsdialog.cpp (revision 427945) ++++ kivio/kiviopart/ui/kiviooptionsdialog.cpp (working copy) +@@ -178,20 +178,20 @@ + gridColorLbl->setBuddy(m_gridColorBtn); + QGroupBox* spacingGrp = new QGroupBox(2, Qt::Horizontal, i18n("Spacing"), page); + QLabel* spaceHorizLbl = new QLabel(i18n("&Horizontal:"), spacingGrp); +- m_spaceHorizUSpin = new KoUnitDoubleSpinBox(spacingGrp, 0.0, pgw, 0.1, ++ m_spaceHorizUSpin = new KoBuggyUnitDoubleSpinBox(spacingGrp, 0.0, pgw, 0.1, + fw, unit); + spaceHorizLbl->setBuddy(m_spaceHorizUSpin); + QLabel* spaceVertLbl = new QLabel(i18n("&Vertical:"), spacingGrp); +- m_spaceVertUSpin = new KoUnitDoubleSpinBox(spacingGrp, 0.0, pgh, 0.1, ++ m_spaceVertUSpin = new KoBuggyUnitDoubleSpinBox(spacingGrp, 0.0, pgh, 0.1, + fh, unit); + spaceVertLbl->setBuddy(m_spaceVertUSpin); + QGroupBox* snapGrp = new QGroupBox(2, Qt::Horizontal, i18n("Snap Distance"), page); + QLabel* snapHorizLbl = new QLabel(i18n("H&orizontal:"), snapGrp); +- m_snapHorizUSpin = new KoUnitDoubleSpinBox(snapGrp, 0.0, fw, 0.1, ++ m_snapHorizUSpin = new KoBuggyUnitDoubleSpinBox(snapGrp, 0.0, fw, 0.1, + sw, unit); + snapHorizLbl->setBuddy(m_snapHorizUSpin); + QLabel* snapVertLbl = new QLabel(i18n("V&ertical:"), snapGrp); +- m_snapVertUSpin = new KoUnitDoubleSpinBox(snapGrp, 0.0, fh, 0.1, ++ m_snapVertUSpin = new KoBuggyUnitDoubleSpinBox(snapGrp, 0.0, fh, 0.1, + sh, unit); + snapVertLbl->setBuddy(m_snapVertUSpin); + +@@ -245,7 +245,7 @@ + orientBGrp->insert(m_orientVertRBtn); + QLabel* posLbl = new QLabel(i18n("&Position:"), m_propertiesGrp); + KoUnit::Unit unit = view->doc()->units(); +- m_posUSpin = new KoUnitDoubleSpinBox(m_propertiesGrp, 0.0, 0.0, 0.0, unit); ++ m_posUSpin = new KoBuggyUnitDoubleSpinBox(m_propertiesGrp, 0.0, 0.0, 0.0, unit); + posLbl->setBuddy(m_posUSpin); + + QGridLayout* pgl = new QGridLayout(m_propertiesGrp->layout()); +Index: kivio/kiviopart/ui/kivioarrowheadformatdlg.cpp +=================================================================== +--- kivio/kiviopart/ui/kivioarrowheadformatdlg.cpp (revision 427945) ++++ kivio/kiviopart/ui/kivioarrowheadformatdlg.cpp (working copy) +@@ -53,10 +53,10 @@ + loadArrowHeads(m_startAHTypeCBox, false); + startAHTypeLbl->setBuddy(m_startAHTypeCBox); + QLabel* startAHWidthLbl = new QLabel(i18n("&Width:"), startGBox); +- m_startAHWidthUSBox = new KoUnitDoubleSpinBox(startGBox, 0.0, 1000.0, 0.1, 1.0, m_unit, 2); ++ m_startAHWidthUSBox = new KoBuggyUnitDoubleSpinBox(startGBox, 0.0, 1000.0, 0.1, 1.0, m_unit, 2); + startAHWidthLbl->setBuddy(m_startAHWidthUSBox); + QLabel* startAHHeightLbl = new QLabel(i18n("&Length:"), startGBox); +- m_startAHHeightUSBox = new KoUnitDoubleSpinBox(startGBox, 0.0, 1000.0, 0.1, 1.0, m_unit, 2); ++ m_startAHHeightUSBox = new KoBuggyUnitDoubleSpinBox(startGBox, 0.0, 1000.0, 0.1, 1.0, m_unit, 2); + startAHHeightLbl->setBuddy(m_startAHHeightUSBox); + + QGroupBox* endGBox = new QGroupBox(2, Qt::Horizontal, i18n("Arrowhead at End"), mainWidget); +@@ -65,10 +65,10 @@ + loadArrowHeads(m_endAHTypeCBox, true); + endAHTypeLbl->setBuddy(m_endAHTypeCBox); + QLabel* endAHWidthLbl = new QLabel(i18n("W&idth:"), endGBox); +- m_endAHWidthUSBox = new KoUnitDoubleSpinBox(endGBox, 0.0, 1000.0, 0.1, 1.0, m_unit, 2); ++ m_endAHWidthUSBox = new KoBuggyUnitDoubleSpinBox(endGBox, 0.0, 1000.0, 0.1, 1.0, m_unit, 2); + endAHWidthLbl->setBuddy(m_endAHWidthUSBox); + QLabel* endAHHeightLbl = new QLabel(i18n("L&ength:"), endGBox); +- m_endAHHeightUSBox = new KoUnitDoubleSpinBox(endGBox, 0.0, 1000.0, 0.1, 1.0, m_unit, 2); ++ m_endAHHeightUSBox = new KoBuggyUnitDoubleSpinBox(endGBox, 0.0, 1000.0, 0.1, 1.0, m_unit, 2); + endAHHeightLbl->setBuddy(m_endAHHeightUSBox); + + gl->addWidget(startGBox, 0, 0); +Index: kivio/kiviopart/ui/kiviooptionsdialog.h +=================================================================== +--- kivio/kiviopart/ui/kiviooptionsdialog.h (revision 427945) ++++ kivio/kiviopart/ui/kiviooptionsdialog.h (working copy) +@@ -32,7 +32,7 @@ + class QRadioButton; + class KColorButton; + class KURLRequester; +-class KoUnitDoubleSpinBox; ++class KoBuggyUnitDoubleSpinBox; + class KivioGuideLineData; + class QGroupBox; + class QFont; +@@ -105,17 +105,17 @@ + KoPageLayout m_layout; + QLabel* m_fontTxtLbl; + QFont m_font; +- KoUnitDoubleSpinBox* m_spaceHorizUSpin; +- KoUnitDoubleSpinBox* m_spaceVertUSpin; +- KoUnitDoubleSpinBox* m_snapHorizUSpin; +- KoUnitDoubleSpinBox* m_snapVertUSpin; ++ KoBuggyUnitDoubleSpinBox* m_spaceHorizUSpin; ++ KoBuggyUnitDoubleSpinBox* m_spaceVertUSpin; ++ KoBuggyUnitDoubleSpinBox* m_snapHorizUSpin; ++ KoBuggyUnitDoubleSpinBox* m_snapVertUSpin; + QCheckBox* m_gridChBox; + QCheckBox* m_snapChBox; + KColorButton* m_gridColorBtn; + KListView* m_guideList; + QRadioButton* m_orientHorizRBtn; + QRadioButton* m_orientVertRBtn; +- KoUnitDoubleSpinBox* m_posUSpin; ++ KoBuggyUnitDoubleSpinBox* m_posUSpin; + QCheckBox* m_snapGuideChBox; + QCheckBox* m_guidesChBox; + KColorButton* m_guideColorBtn; +Index: kivio/kiviopart/ui/kivioarrowheadformatdlg.h +=================================================================== +--- kivio/kiviopart/ui/kivioarrowheadformatdlg.h (revision 427945) ++++ kivio/kiviopart/ui/kivioarrowheadformatdlg.h (working copy) +@@ -24,7 +24,7 @@ + + #include <koUnit.h> + +-class KoUnitDoubleSpinBox; ++class KoBuggyUnitDoubleSpinBox; + class KComboBox; + class KivioView; + +@@ -58,10 +58,10 @@ + void loadArrowHeads(KComboBox* combo, bool endArrow); + + protected: +- KoUnitDoubleSpinBox* m_startAHWidthUSBox; +- KoUnitDoubleSpinBox* m_startAHHeightUSBox; +- KoUnitDoubleSpinBox* m_endAHWidthUSBox; +- KoUnitDoubleSpinBox* m_endAHHeightUSBox; ++ KoBuggyUnitDoubleSpinBox* m_startAHWidthUSBox; ++ KoBuggyUnitDoubleSpinBox* m_startAHHeightUSBox; ++ KoBuggyUnitDoubleSpinBox* m_endAHWidthUSBox; ++ KoBuggyUnitDoubleSpinBox* m_endAHHeightUSBox; + KComboBox* m_startAHTypeCBox; + KComboBox* m_endAHTypeCBox; + KoUnit::Unit m_unit; +Index: kpresenter/kppieobject.h +=================================================================== +--- kpresenter/kppieobject.h (revision 427945) ++++ kpresenter/kppieobject.h (working copy) +@@ -1,5 +1,6 @@ + /* This file is part of the KDE project + Copyright (C) 1998, 1999 Reginald Stadlbauer <reggie@kde.org> ++ Copyright (C) 2005 Thorsten Zachmann <zachmann@kde.org> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public +@@ -79,7 +80,6 @@ + { return lineEnd; } + + virtual QDomDocumentFragment save( QDomDocument& doc, double offset ); +- virtual bool saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj ) const; + + virtual double load(const QDomElement &element); + virtual void flip(bool horizontal ); +@@ -89,6 +89,9 @@ + virtual KoPoint getRealOrig() const; + + protected: ++ virtual const char * getOasisElementName() const; ++ virtual bool saveOasisObjectAttributes( KPOasisSaveContext &sc ) const; ++ + virtual void paint( QPainter *_painter, KoZoomHandler*_zoomHandler, + int /* pageNum */, bool drawingShadow, bool drawContour ); + +Index: kpresenter/kpcubicbeziercurveobject.h +=================================================================== +--- kpresenter/kpcubicbeziercurveobject.h (revision 427945) ++++ kpresenter/kpcubicbeziercurveobject.h (working copy) +@@ -1,6 +1,7 @@ + // -*- Mode: c++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 4; -*- + /* This file is part of the KDE project + Copyright (C) 2001 Toshitaka Fujioka <fujioka@kde.org> ++ Copyright (C) 2005 Thorsten Zachmann <zachmann@kde.org> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public +@@ -42,10 +43,9 @@ + virtual QString getTypeString() const { return i18n("Cubic Bezier Curve"); } + + virtual QDomDocumentFragment save( QDomDocument& doc,double offset ); +- virtual bool saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj ) const; + + virtual double load( const QDomElement &element ); +- virtual void loadOasis( const QDomElement &element, KoOasisContext & context,KPRLoadingInfo* info ); ++ virtual void loadOasis( const QDomElement &element, KoOasisContext & context, KPRLoadingInfo* info ); + + virtual void flip(bool horizontal ); + void closeObject(bool _close); +@@ -53,6 +53,9 @@ + + + protected: ++ virtual const char * getOasisElementName() const; ++ virtual bool saveOasisObjectAttributes( KPOasisSaveContext &sc ) const; ++ + virtual void updatePoints( double _fx, double _fy ); + virtual KoPointArray getDrawingPoints() const; + +Index: kpresenter/kprectobject.h +=================================================================== +--- kpresenter/kprectobject.h (revision 427945) ++++ kpresenter/kprectobject.h (working copy) +@@ -53,9 +53,11 @@ + virtual QDomDocumentFragment save( QDomDocument& doc, double offset ); + virtual double load(const QDomElement &element); + virtual void loadOasis(const QDomElement &element, KoOasisContext &context, KPRLoadingInfo *info); +- virtual bool saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj ) const; + + protected: ++ virtual const char * getOasisElementName() const; ++ virtual bool saveOasisObjectAttributes( KPOasisSaveContext &sc ) const; ++ + virtual void paint( QPainter *_painter,KoZoomHandler*_zoomHandler, + int /* pageNum */, bool drawingShadow, bool drawContour ); + +Index: kpresenter/kpellipseobject.h +=================================================================== +--- kpresenter/kpellipseobject.h (revision 427945) ++++ kpresenter/kpellipseobject.h (working copy) +@@ -49,9 +49,11 @@ + { return i18n("Ellipse"); } + + virtual KoSize getRealSize() const; +- virtual bool saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj ) const; + + protected: ++ virtual const char * getOasisElementName() const; ++ virtual bool saveOasisObjectAttributes( KPOasisSaveContext &sc ) const; ++ + virtual void paint( QPainter *_painter,KoZoomHandler *_zoomHandler, + int /* pageNum */, bool drawingShadow, bool drawContour = FALSE ); + +Index: kpresenter/kpfreehandobject.h +=================================================================== +--- kpresenter/kpfreehandobject.h (revision 427945) ++++ kpresenter/kpfreehandobject.h (working copy) +@@ -1,6 +1,7 @@ + // -*- Mode: c++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 4; -*- + /* This file is part of the KDE project + Copyright (C) 2001 Toshitaka Fujioka <fujioka@kde.org> ++ Copyright (C) 2005 Thorsten Zachmann <zachmann@kde.org> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public +@@ -43,8 +44,11 @@ + + virtual QDomDocumentFragment save( QDomDocument& doc,double offset ); + virtual double load( const QDomElement &element ); +- virtual bool saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj ) const; ++ virtual void loadOasis( const QDomElement &element, KoOasisContext & context, KPRLoadingInfo* info ); + ++protected: ++ virtual const char * getOasisElementName() const; ++ virtual bool saveOasisObjectAttributes( KPOasisSaveContext &sc ) const; + }; + + #endif +Index: kpresenter/kppointobject.cc +=================================================================== +--- kpresenter/kppointobject.cc (revision 427945) ++++ kpresenter/kppointobject.cc (working copy) +@@ -1,6 +1,6 @@ + // -*- Mode: c++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 4; -*- + /* This file is part of the KDE project +- Copyright (C) 2004 Thorsten Zachmann <zachmann@kde.org> ++ Copyright (C) 2004-2005 Thorsten Zachmann <zachmann@kde.org> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public +@@ -83,71 +83,24 @@ + return fragment; + } + +-QString KPPointObject::saveOasisStrokeElement( KoGenStyles& mainStyles ) const ++const char * KPPointObject::getOasisElementName() const + { +- KoGenStyle styleobjectauto( KoGenStyle::STYLE_GRAPHICAUTO, "graphic" ); +- saveOasisMarkerElement( mainStyles, styleobjectauto ); +- saveOasisObjectProtectStyle( styleobjectauto ); +- KPShadowObject::saveOasisStrokeElement( mainStyles, styleobjectauto ); +- return mainStyles.lookup( styleobjectauto, "gr" ); ++ return "draw:custom-shape"; + } + +- +-bool KPPointObject::saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context ) const +-{ +- QString listOfPoint; +- int maxX=0; +- int maxY=0; +- KoPointArray::ConstIterator it; +- for ( it = points.begin(); it != points.end(); ++it ) { +- int tmpX = 0; +- int tmpY = 0; +- tmpX = ( int ) ( KoUnit::toMM( ( *it ).x() )*100 ); +- tmpY = ( int ) ( KoUnit::toMM( ( *it ).y() )*100 ); +- if ( !listOfPoint.isEmpty() ) +- listOfPoint += QString( " %1,%2" ).arg( tmpX ).arg( tmpY ); +- else +- listOfPoint = QString( "%1,%2" ).arg( tmpX ).arg( tmpY ); +- maxX = QMAX( maxX, tmpX ); +- maxY = QMAX( maxY, tmpY ); +- } +- xmlWriter.addAttribute("draw:points", listOfPoint ); +- xmlWriter.addAttribute("svg:viewBox", QString( "0 0 %1 %2" ).arg( maxX ).arg( maxY ) ); +- return true; +-} +- + void KPPointObject::loadOasisMarker( KoOasisContext & context ) + { + loadOasisMarkerElement( context, "marker-start", lineBegin ); + loadOasisMarkerElement( context, "marker-end", lineEnd ); + } + +-void KPPointObject::loadOasis( const QDomElement &element, KoOasisContext & context, KPRLoadingInfo *info ) ++void KPPointObject::fillStyle( KoGenStyle& styleObjectAuto, KoGenStyles& mainStyles ) const + { +- //kdDebug()<<"void KPPointObject::loadOasis( const QDomElement &element )*************\n"; +- KPShadowObject::loadOasis( element, context, info ); +- //load point. +- QStringList ptList = QStringList::split(' ', element.attributeNS( KoXmlNS::draw, "points", QString::null)); +- QString pt_x, pt_y; +- double tmp_x, tmp_y; +- unsigned int index = 0; +- for (QStringList::Iterator it = ptList.begin(); it != ptList.end(); ++it) +- { +- tmp_x = (*it).section(',',0,0).toInt() / 100; +- tmp_y = (*it).section(',',1,1).toInt() / 100; +- +- pt_x.setNum(tmp_x); +- pt_x+="mm"; +- +- pt_y.setNum(tmp_y); +- pt_y+="mm"; +- +- points.putPoints( index, 1, KoUnit::parseValue(pt_x),KoUnit::parseValue(pt_y) ); +- ++index; +- } +- loadOasisMarker( context ); ++ KPShadowObject::fillStyle( styleObjectAuto, mainStyles ); ++ saveOasisMarkerElement( mainStyles, styleObjectAuto ); + } + ++ + double KPPointObject::load( const QDomElement &element ) + { + double offset = KPShadowObject::load( element ); +Index: kpresenter/kplineobject.h +=================================================================== +--- kpresenter/kplineobject.h (revision 427945) ++++ kpresenter/kplineobject.h (working copy) +@@ -1,6 +1,7 @@ + // -*- Mode: c++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 4; -*- + /* This file is part of the KDE project + Copyright (C) 1998, 1999 Reginald Stadlbauer <reggie@kde.org> ++ Copyright (C) 2005 Thorsten Zachmann <zachmann@kde.org> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public +@@ -63,16 +64,18 @@ + virtual double load(const QDomElement &element); + virtual void loadOasis(const QDomElement &element, KoOasisContext & context, KPRLoadingInfo *info); + +- virtual bool saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj ) const; +- + virtual void flip(bool horizontal ); + + virtual KoSize getRealSize() const; + virtual KoPoint getRealOrig() const; + + protected: +- QString saveOasisStrokeElement( KoGenStyles& mainStyles ) const; ++ virtual const char * getOasisElementName() const; ++ virtual bool saveOasisObjectAttributes( KPOasisSaveContext &sc ) const; ++ virtual void saveOasisPosObject( KoXmlWriter &xmlWriter, int indexObj ) const; + ++ virtual void fillStyle( KoGenStyle& styleObjectAuto, KoGenStyles& mainStyles ) const; ++ + virtual void paint( QPainter *_painter, KoZoomHandler*_zoomHandler, + int /* pageNum */, bool drawingShadow, bool drawContour = FALSE ); + LineType lineType; +Index: kpresenter/kppointobject.h +=================================================================== +--- kpresenter/kppointobject.h (revision 427945) ++++ kpresenter/kppointobject.h (working copy) +@@ -1,6 +1,6 @@ + // -*- Mode: c++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 4; -*- + /* This file is part of the KDE project +- Copyright (C) 2004 Thorsten Zachmann <zachmann@kde.org> ++ Copyright (C) 2004-2005 Thorsten Zachmann <zachmann@kde.org> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public +@@ -34,10 +34,8 @@ + virtual KoPoint getRealOrig() const; + + virtual QDomDocumentFragment save( QDomDocument& doc, double offset ); +- virtual bool saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context ) const; + + virtual double load( const QDomElement &element ); +- virtual void loadOasis( const QDomElement &element, KoOasisContext & context, KPRLoadingInfo *info ); + + virtual void setLineBegin( LineEnd _lineBegin ) { lineBegin = _lineBegin; } + virtual void setLineEnd( LineEnd _lineEnd ) { lineEnd = _lineEnd; } +@@ -53,10 +51,13 @@ + + virtual void closeObject( bool close ); + virtual bool isClosed() const; +- virtual QString saveOasisStrokeElement( KoGenStyles& mainStyles ) const; + + protected: ++ virtual const char * getOasisElementName() const; ++ + void loadOasisMarker( KoOasisContext & context ); ++ virtual void fillStyle( KoGenStyle& styleObjectAuto, KoGenStyles& mainStyles ) const; ++ + virtual void paint( QPainter *_painter,KoZoomHandler*_zoomHandler, + int /* pageNum */, bool drawingShadow, bool drawContour = FALSE ); + virtual void updatePoints( double _fx, double _fy ); +Index: kpresenter/kpautoformobject.cc +=================================================================== +--- kpresenter/kpautoformobject.cc (revision 427945) ++++ kpresenter/kpautoformobject.cc (working copy) +@@ -76,12 +76,17 @@ + } + + +-bool KPAutoformObject::saveOasis( KoXmlWriter & xmlWriter, KoSavingContext& context, int indexObj ) const ++bool KPAutoformObject::saveOasisObjectAttributes( KPOasisSaveContext &sc ) const + { +- kdDebug()<<"bool KPAutoformObject::saveOasis( KoXmlWriter & xmlWriter ) not implemented\n"; ++ kdDebug()<<"bool KPAutoformObject::saveOasisObjectAttributes( KPOasisSaveContext &sc ) not implemented\n"; + return true; + } + ++const char * KPAutoformObject::getOasisElementName() const ++{ ++ return "draw:custom-shape"; ++} ++ + QDomDocumentFragment KPAutoformObject::save( QDomDocument& doc, double offset ) + { + QDomDocumentFragment fragment=KP2DObject::save(doc, offset); +Index: kpresenter/kpgroupobject.h +=================================================================== +--- kpresenter/kpgroupobject.h (revision 427945) ++++ kpresenter/kpgroupobject.h (working copy) +@@ -1,6 +1,7 @@ + // -*- Mode: c++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 4; -*- + /* This file is part of the KDE project + Copyright (C) 1998, 1999 Reginald Stadlbauer <reggie@kde.org> ++ Copyright (C) 2005 Thorsten Zachmann <zachmann@kde.org> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public +@@ -70,7 +71,6 @@ + virtual QDomDocumentFragment save( QDomDocument& doc, double offset ); + virtual double load(const QDomElement &element, KPresenterDoc *doc); + virtual void loadOasisGroupObject( KPresenterDoc *doc, KPrPage * newpage, QDomNode &element, KoOasisContext & context, KPRLoadingInfo *info); +- virtual bool saveOasis(KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj) const; + + virtual void draw( QPainter *_painter, KoZoomHandler *_zoomhandler, + int pageNum, SelectionMode selectionMode, bool drawContour = FALSE ); +@@ -101,6 +101,9 @@ + virtual void decCmdRef(); + + protected: ++ virtual const char * getOasisElementName() const; ++ virtual bool saveOasisObjectAttributes( KPOasisSaveContext &sc ) const; ++ + void updateSizes( double fx, double fy ); + void updateCoords( double dx, double dy ); + +Index: kpresenter/kppixmapobject.h +=================================================================== +--- kpresenter/kppixmapobject.h (revision 427945) ++++ kpresenter/kppixmapobject.h (working copy) +@@ -2,6 +2,7 @@ + + /* This file is part of the KDE project + Copyright (C) 1998, 1999 Reginald Stadlbauer <reggie@kde.org> ++ Copyright (C) 2005 Thorsten Zachmann <zachmann@kde.org> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public +@@ -72,7 +73,6 @@ + { return i18n("Picture"); } + + virtual QDomDocumentFragment save( QDomDocument& doc, double offset ); +- virtual bool saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj ) const; + + virtual double load(const QDomElement &element); + virtual void loadOasis(const QDomElement &element, KoOasisContext & context, KPRLoadingInfo *info); +@@ -113,11 +113,15 @@ + virtual void flip(bool horizontal ); + + protected: ++ virtual const char * getOasisElementName() const; ++ virtual bool saveOasisObjectAttributes( KPOasisSaveContext &sc ) const; ++ + KPPixmapObject() {} + + QPixmap changePictureSettings( QPixmap _tmpPixmap ); +- virtual void saveOasisPictureElement( KoGenStyle &styleobjectauto ); ++ virtual void saveOasisPictureElement( KoGenStyle &styleobjectauto ) const; + void loadOasisPictureEffect(KoOasisContext & context ); ++ virtual void fillStyle( KoGenStyle& styleObjectAuto, KoGenStyles& mainStyles ) const; + + /** + * @internal +Index: kpresenter/kppartobject.h +=================================================================== +--- kpresenter/kppartobject.h (revision 427945) ++++ kpresenter/kppartobject.h (working copy) +@@ -49,14 +49,15 @@ + + KPresenterChild *getChild() const { return child; } + void enableDrawing( bool f ) { _enableDrawing = f; } +- virtual bool saveOasisPart( KoXmlWriter &xmlWriter, KoStore *store, KoSavingContext& context, int indexObj, int partIndexObj, KoXmlWriter* manifestWriter ) const; + virtual void loadOasis(const QDomElement &element, KoOasisContext &context, KPRLoadingInfo *info); +- virtual bool saveOasis( KoXmlWriter &xmlWriter, KoSavingContext &context, int indexObj ) const { return true;/* use saveOasisPart*/}; + + public slots: + void slot_changed( KoChild *_koChild ); + + protected: ++ virtual const char * getOasisElementName() const; ++ virtual bool saveOasisObjectAttributes( KPOasisSaveContext &sc ) const; ++ + void updateChildGeometry(); + virtual void paint( QPainter *_painter,KoZoomHandler*_zoomHandler, + int /* pageNum */, bool drawingShadow, bool drawContour = FALSE ); +Index: kpresenter/kpobject.cc +=================================================================== +--- kpresenter/kpobject.cc (revision 427945) ++++ kpresenter/kpobject.cc (working copy) +@@ -344,7 +344,7 @@ + xmlWriter.addAttributePt( "svg:width", ext.width() ); + xmlWriter.addAttributePt( "svg:height", ext.height() ); + +- if ( angle!=0.0 ) ++ if ( kAbs( angle ) > 1E-6 ) + { + double value = -1 * ( ( double )angle* M_PI )/180.0; + QString str=QString( "rotate (%1)" ).arg( value ); +@@ -362,6 +362,40 @@ + } + } + ++QString KPObject::getStyle( KPOasisSaveContext &sc ) const ++{ ++ kdDebug(33001) << "KPObject::getStyle" << endl; ++ KoGenStyle styleObjectAuto; ++ KoGenStyles &mainStyles( sc.context.mainStyles() ); ++ if ( sc.onMaster ) ++ { ++ styleObjectAuto = KoGenStyle( KPresenterDoc::STYLE_PRESENTATIONSTICKYOBJECT, "presentation" ); ++ } ++ else ++ { ++ styleObjectAuto = KoGenStyle( KoGenStyle::STYLE_GRAPHICAUTO, "graphic" ); ++ } ++ fillStyle( styleObjectAuto, mainStyles ); ++ if ( sc.onMaster ) ++ { ++ return mainStyles.lookup( styleObjectAuto, "pr" ); ++ } ++ return mainStyles.lookup( styleObjectAuto, "gr" ); ++} ++ ++void KPObject::fillStyle( KoGenStyle& styleObjectAuto, KoGenStyles& /* mainStyles */ ) const ++{ ++ kdDebug(33001) << "KPObject::fillStyle" << endl; ++ saveOasisObjectProtectStyle( styleObjectAuto ); ++ saveOasisShadowElement( styleObjectAuto ); ++} ++ ++bool KPObject::saveOasisObjectAttributes( KPOasisSaveContext &/* sc */ ) const ++{ ++ kdDebug()<<"bool saveOasisObjectAttributes not implemented"; ++ return true; ++} ++ + bool KPObject::haveAnimation() const + { + //kdDebug()<<" effect :"<<effect<<" effect3 :"<<effect3<<" a_fileName :"<<a_fileName<<" d_fileName :"<<d_fileName<<" appearTimer :"<<appearTimer<<" disappearTimer :"<<disappearTimer<<endl; +@@ -849,6 +883,20 @@ + } + } + ++bool KPObject::saveOasisObject( KPOasisSaveContext &sc ) const ++{ ++ sc.xmlWriter.startElement( getOasisElementName() ); ++ sc.xmlWriter.addAttribute( "draw:style-name", getStyle( sc ) ); ++ saveOasisPosObject( sc.xmlWriter, sc.indexObj ); ++ if( !objectName.isEmpty()) ++ sc.xmlWriter.addAttribute( "draw:name", objectName ); ++ ++ saveOasisObjectAttributes( sc ); ++ ++ sc.xmlWriter.endElement(); ++ return true; ++} ++ + void KPObject::saveOasisShadowElement( KoGenStyle &styleobjectauto ) const + { + //FIXME default value +@@ -1628,6 +1676,99 @@ + // <draw:stroke-dash draw:name="Fine Dotted" draw:style="rect" draw:dots1="1" draw:distance="0.457cm"/> + } + ++bool KPShadowObject::saveOasisDrawPoints( const KoPointArray &points, KPOasisSaveContext &sc ) ++{ ++ QString listOfPoint; ++ int maxX=0; ++ int maxY=0; ++ KoPointArray::ConstIterator it( points.begin() ); ++ for ( ; it != points.end(); ++it ) ++ { ++ int tmpX = int( ( *it ).x() * 10000 ); ++ int tmpY = int( ( *it ).y() * 10000 ); ++ //if ( !listOfPoint.isEmpty() ) ++ listOfPoint += QString( " %1,%2" ).arg( tmpX ).arg( tmpY ); ++ //else ++ // listOfPoint = QString( "%1,%2" ).arg( tmpX ).arg( tmpY ); ++ maxX = QMAX( maxX, tmpX ); ++ maxY = QMAX( maxY, tmpY ); ++ } ++ sc.xmlWriter.addAttribute("draw:points", listOfPoint ); ++ sc.xmlWriter.addAttribute("svg:viewBox", QString( "0 0 %1 %2" ).arg( maxX ).arg( maxY ) ); ++ return true; ++} ++ ++bool KPShadowObject::loadOasisDrawPoints( KoPointArray &points, const QDomElement &element, ++ KoOasisContext & context, KPRLoadingInfo *info ) ++{ ++ QStringList ptList = QStringList::split(' ', element.attributeNS( KoXmlNS::draw, "points", QString::null)); ++ QStringList viewBox = QStringList::split( ' ', element.attributeNS( KoXmlNS::svg, "viewBox", QString::null ) ); ++ //for ( QStringList::Iterator it = viewBox.begin(); it != viewBox.end(); ++it ) ++ //{ ++ // kdDebug(33001) << "viewBox = " << *it << endl; ++ //} ++ ++ int left = 0; ++ int top = 0; ++ int right = 0; ++ int bottom = 0; ++ ++ if ( viewBox.size() == 4 ) ++ { ++ QStringList::Iterator it = viewBox.begin(); ++ left = ( *it++ ).toInt(); ++ top = ( *it++ ).toInt(); ++ right = ( *it++ ).toInt(); ++ bottom = ( *it ).toInt(); ++ //kdDebug(33001) << "left = " << left ++ // << "top = " << top ++ // << "right =" << right ++ // << "bottom =" << bottom << endl; ++ } ++ else ++ { ++ //if no viewBox is found ++ for (QStringList::Iterator it = ptList.begin(); it != ptList.end(); ++it) ++ { ++ right = QMAX( (*it).section( ',', 0, 0 ).toInt(), right ); ++ bottom = QMAX( (*it).section( ',', 1, 1 ).toInt(), bottom ); ++ } ++ } ++ ++ if ( right - left != 0 && bottom - top != 0 ) ++ { ++ double tmp_x, tmp_y; ++ unsigned int index = 0; ++ for (QStringList::Iterator it = ptList.begin(); it != ptList.end(); ++it) ++ { ++ tmp_x = double( (*it).section( ',', 0, 0 ).toInt() + left ) / ( right - left ) * ext.width(); ++ tmp_y = double( (*it).section( ',', 1, 1 ).toInt() + top ) / ( bottom - top ) * ext.height(); ++ ++ //kdDebug(33001) << "p" << index << " x: " << tmp_x << endl; ++ //kdDebug(33001) << "p" << index << " y: " << tmp_y << endl; ++ ++ points.putPoints( index, 1, tmp_x, tmp_y ); ++ ++index; ++ } ++ } ++ else ++ { ++ kdDebug(33001) << "problem in viewBox values are: " ++ << "left = " << left << ", " ++ << "top = " << top << ", " ++ << "right =" << right << ", " ++ << "bottom =" << bottom << endl; ++ } ++ return true; ++} ++ ++void KPShadowObject::fillStyle( KoGenStyle& styleObjectAuto, KoGenStyles& mainStyles ) const ++{ ++ kdDebug(33001) << "KPShadowObject::fillStyle" << endl; ++ KPObject::fillStyle( styleObjectAuto, mainStyles ); ++ saveOasisStrokeElement( mainStyles, styleObjectAuto ); ++} ++ + void KPShadowObject::loadOasis(const QDomElement &element, KoOasisContext & context, KPRLoadingInfo *info) + { + //kdDebug()<<"void KPShadowObject::loadOasis(const QDomElement &element)**********************\n"; +@@ -1822,14 +1963,15 @@ + return fragment; + } + +-QString KP2DObject::saveOasisBackgroundStyle( KoXmlWriter &xmlWriter, KoGenStyles& mainStyles, int indexObj ) const ++void KP2DObject::fillStyle( KoGenStyle& styleObjectAuto, KoGenStyles& mainStyles ) const + { +- saveOasisPosObject( xmlWriter,indexObj ); +- KoGenStyle styleobjectauto; +- if ( sticky ) +- styleobjectauto = KoGenStyle( KPresenterDoc::STYLE_PRESENTATIONSTICKYOBJECT, "presentation" ); +- else +- styleobjectauto = KoGenStyle( KoGenStyle::STYLE_GRAPHICAUTO, "graphic" ); ++ kdDebug(33001) << "KP2DObject::fillStyle" << endl; ++ KPShadowObject::fillStyle( styleObjectAuto, mainStyles ); ++ saveOasisBackgroundElement( styleObjectAuto, mainStyles ); ++} ++ ++void KP2DObject::saveOasisBackgroundElement( KoGenStyle& styleObjectAuto, KoGenStyles& mainStyles ) const ++{ + switch ( getFillType() ) + { + case FT_BRUSH: +@@ -1838,34 +1980,22 @@ + //todo FIXME when text object doesn't have a background + if( brush != QBrush() ) + { +- KoOasisStyles::saveOasisFillStyle( styleobjectauto, mainStyles, brush ); ++ KoOasisStyles::saveOasisFillStyle( styleObjectAuto, mainStyles, brush ); + } + else + { +- styleobjectauto.addProperty( "draw:fill","none" ); ++ styleObjectAuto.addProperty( "draw:fill","none" ); + } + break; + } + case FT_GRADIENT: +- styleobjectauto.addProperty( "draw:fill","gradient" ); +- styleobjectauto.addProperty( "draw:fill-gradient-name", saveOasisGradientStyle( mainStyles ) ); ++ styleObjectAuto.addProperty( "draw:fill","gradient" ); ++ styleObjectAuto.addProperty( "draw:fill-gradient-name", saveOasisGradientStyle( mainStyles ) ); + break; + } +- saveOasisObjectProtectStyle( styleobjectauto ); +- +- saveOasisStrokeElement( mainStyles, styleobjectauto ); +- saveOasisMarginElement( styleobjectauto ); +- saveOasisShadowElement( styleobjectauto ); +- saveOasisPictureElement( styleobjectauto ); +- +- if ( sticky ) +- return mainStyles.lookup( styleobjectauto, "pr" ); +- else +- return mainStyles.lookup( styleobjectauto, "gr" ); + } + + +- + QString KP2DObject::saveOasisGradientStyle( KoGenStyles& mainStyles ) const + { + KoGenStyle gradientStyle( KPresenterDoc::STYLE_GRADIENT /*no family name*/); +@@ -2170,6 +2300,56 @@ + return offset; + } + ++void KP2DObject::draw( QPainter *_painter, KoZoomHandler*_zoomHandler, ++ int pageNum, SelectionMode selectionMode, bool drawContour ) ++{ ++ double ox = orig.x(); ++ double oy = orig.y(); ++ _painter->save(); ++ ++ // Draw the shadow if any ++ if ( shadowDistance > 0 && !drawContour ) ++ { ++ _painter->save(); ++ QPen tmpPen( pen ); ++ pen.setColor( shadowColor ); ++ QBrush tmpBrush( m_brush.getBrush() ); ++ QBrush shadowBrush( tmpBrush ); ++ shadowBrush.setColor( shadowColor ); ++ m_brush.setBrush( shadowBrush ); ++ ++ if ( angle == 0 ) ++ { ++ double sx = ox; ++ double sy = oy; ++ getShadowCoords( sx, sy ); ++ ++ _painter->translate( _zoomHandler->zoomItX( sx ), _zoomHandler->zoomItY( sy ) ); ++ paint( _painter, _zoomHandler, pageNum, true, drawContour ); ++ } ++ else ++ { ++ _painter->translate( _zoomHandler->zoomItX(ox), _zoomHandler->zoomItY(oy) ); ++ rotateObjectWithShadow(_painter, _zoomHandler); ++ paint( _painter, _zoomHandler, pageNum, true, drawContour ); ++ } ++ ++ pen = tmpPen; ++ m_brush.setBrush( tmpBrush ); ++ _painter->restore(); ++ } ++ ++ _painter->translate( _zoomHandler->zoomItX(ox), _zoomHandler->zoomItY(oy) ); ++ ++ if ( angle != 0 ) ++ rotateObject(_painter,_zoomHandler); ++ paint( _painter, _zoomHandler, pageNum, false, drawContour ); ++ ++ _painter->restore(); ++ ++ KPObject::draw( _painter, _zoomHandler, pageNum, selectionMode, drawContour ); ++} ++ + void KP2DObject::flip( bool horizontal ) { + KPObject::flip( horizontal ); + +Index: kpresenter/kppolygonobject.cc +=================================================================== +--- kpresenter/kppolygonobject.cc (revision 427945) ++++ kpresenter/kppolygonobject.cc (working copy) +@@ -68,38 +68,24 @@ + return dcop; + } + +-bool KPPolygonObject::saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj ) const ++bool KPPolygonObject::saveOasisObjectAttributes( KPOasisSaveContext &sc ) const + { +- //FIXME me wait that it will define into oo spec +- xmlWriter.startElement( "draw:regular-polygon" ); +- xmlWriter.addAttribute( "draw:style-name", KP2DObject::saveOasisBackgroundStyle( xmlWriter, context.mainStyles(), indexObj ) ); +- +- QString listOfPoint; +- int maxX=0; +- int maxY=0; +- KoPointArray::ConstIterator it; +- for ( it = points.begin(); it != points.end(); ++it ) { +- int tmpX = 0; +- int tmpY = 0; +- tmpX = ( int ) ( KoUnit::toMM( ( *it ).x() )*100 ); +- tmpY = ( int ) ( KoUnit::toMM( ( *it ).y() )*100 ); +- if ( !listOfPoint.isEmpty() ) +- listOfPoint += QString( " %1,%2" ).arg( tmpX ).arg( tmpY ); +- else +- listOfPoint = QString( "%1,%2" ).arg( tmpX ).arg( tmpY ); +- maxX = QMAX( maxX, tmpX ); +- maxY = QMAX( maxY, tmpY ); ++ sc.xmlWriter.addAttribute( "draw:corners", cornersValue ); ++ sc.xmlWriter.addAttribute( "draw:concave", checkConcavePolygon ? "true" : "false" ); ++ if ( checkConcavePolygon ) ++ { ++ sc.xmlWriter.addAttribute( "draw:sharpness", QString( "%1%").arg( sharpnessValue ) ); + } +- xmlWriter.addAttribute("draw:points", listOfPoint ); +- xmlWriter.addAttribute("svg:viewBox", QString( "0 0 %1 %2" ).arg( maxX ).arg( maxY ) ); + +- if( !objectName.isEmpty()) +- xmlWriter.addAttribute( "draw:name", objectName ); +- xmlWriter.endElement(); + return true; + } + ++const char * KPPolygonObject::getOasisElementName() const ++{ ++ return "draw:regular-polygon"; ++} + ++ + QDomDocumentFragment KPPolygonObject::save( QDomDocument& doc, double offset ) + { + QDomDocumentFragment fragment = KP2DObject::save( doc, offset ); +@@ -133,26 +119,14 @@ + { + kdDebug()<<"void KPPolygonObject::loadOasis( const QDomElement &element )***********\n"; + KP2DObject::loadOasis( element,context, info ); +- //load point. +- QStringList ptList = QStringList::split(' ', element.attributeNS( KoXmlNS::draw, "points", QString::null)); +- +- QString pt_x, pt_y; +- double tmp_x, tmp_y; +- unsigned int index = 0; +- for (QStringList::Iterator it = ptList.begin(); it != ptList.end(); ++it) ++ cornersValue = element.attributeNS( KoXmlNS::draw, "corners", QString::null ).toInt(); ++ checkConcavePolygon = element.attributeNS( KoXmlNS::draw, "concave", QString::null ) == "true"; ++ sharpnessValue = 0; ++ if ( checkConcavePolygon ) + { +- tmp_x = (*it).section(',',0,0).toInt() / 100; +- tmp_y = (*it).section(',',1,1).toInt() / 100; +- +- pt_x.setNum(tmp_x); +- pt_x+="mm"; +- +- pt_y.setNum(tmp_y); +- pt_y+="mm"; +- +- points.putPoints( index, 1, KoUnit::parseValue(pt_x),KoUnit::parseValue(pt_y) ); +- ++index; ++ sharpnessValue = element.attributeNS( KoXmlNS::draw, "sharpness", QString::null ).remove( '%').toInt(); + } ++ drawPolygon(); + } + + double KPPolygonObject::load( const QDomElement &element ) +@@ -280,7 +254,8 @@ + + void KPPolygonObject::drawPolygon() + { +- KoRect _rect = points.boundingRect(); ++ kdDebug()<<"void KPPolygonObject::drawPolygon()***********\n"; ++ KoRect _rect( 0, 0, ext.width(), ext.height() ); + double angle = 2 * M_PI / cornersValue; + double diameter = static_cast<double>( QMAX( _rect.width(), _rect.height() ) ); + double radius = diameter * 0.5; +Index: kpresenter/kpcubicbeziercurveobject.cc +=================================================================== +--- kpresenter/kpcubicbeziercurveobject.cc (revision 427945) ++++ kpresenter/kpcubicbeziercurveobject.cc (working copy) +@@ -1,6 +1,7 @@ + // -*- Mode: c++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 4; -*- + /* This file is part of the KDE project + Copyright (C) 2001 Toshitaka Fujioka <fujioka@kde.org> ++ Copyright (C) 2005 Thorsten Zachmann <zachmann@kde.org> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public +@@ -60,16 +61,17 @@ + return dcop; + } + +-bool KPCubicBezierCurveObject::saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj ) const ++bool KPCubicBezierCurveObject::saveOasisObjectAttributes( KPOasisSaveContext &sc ) const + { +- kdDebug()<<"bool KPCubicBezierCurveObject::saveOasis( KoXmlWriter &xmlWriter ) not implemented\n"; +- //saveOasisShadowElement( styleobjectauto ); +- //KPPointObject::saveOasisStrokeElement( KoGenStyles& mainStyles ); +-// +- //call saveOasisStrokeElement( KoGenStyle &styleobjectauto ); ++ kdDebug()<<"bool KPCubicBezierCurveObject::saveOasis( KoXmlWriter & xmlWriter ) not implemented\n"; + return true; + } + ++const char * KPCubicBezierCurveObject::getOasisElementName() const ++{ ++ return "draw:custom-shape"; ++} ++ + void KPCubicBezierCurveObject::loadOasis( const QDomElement &element, KoOasisContext & context, KPRLoadingInfo* info ) + { + //todo +Index: kpresenter/kpquadricbeziercurveobject.h +=================================================================== +--- kpresenter/kpquadricbeziercurveobject.h (revision 427945) ++++ kpresenter/kpquadricbeziercurveobject.h (working copy) +@@ -1,6 +1,7 @@ + // -*- Mode: c++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 4; -*- + /* This file is part of the KDE project + Copyright (C) 2001 Toshitaka Fujioka <fujioka@kde.org> ++ Copyright (C) 2005 Thorsten Zachmann <zachmann@kde.org> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public +@@ -43,7 +44,6 @@ + virtual QString getTypeString() const { return i18n("Quadric Bezier Curve"); } + + virtual QDomDocumentFragment save( QDomDocument& doc, double offset ); +- virtual bool saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj ) const; + virtual void loadOasis( const QDomElement &element, KoOasisContext & context, KPRLoadingInfo *info ); + + virtual double load( const QDomElement &element ); +@@ -53,6 +53,9 @@ + bool isClosed()const; + + protected: ++ virtual const char * getOasisElementName() const; ++ virtual bool saveOasisObjectAttributes( KPOasisSaveContext &sc ) const; ++ + virtual void updatePoints( double _fx, double _fy ); + virtual KoPointArray getDrawingPoints() const; + +Index: kpresenter/autoforms/Arrows/ArrowLeftUp.desktop +=================================================================== +--- kpresenter/autoforms/Arrows/ArrowLeftUp.desktop (revision 427945) ++++ kpresenter/autoforms/Arrows/ArrowLeftUp.desktop (working copy) +@@ -3,6 +3,7 @@ + Type=Link + URL=.source/ArrowLeftUp.atf + Name=Arrow Left/Up ++Name[cy]=Saeth i'r Chwith/i Fyny + Name[da]=Pil til venstre/op + Name[de]=Pfeil nach links/oben + Name[el]=Αριστερό/πάνω βέλος +Index: kpresenter/autoforms/Arrows/ArrowRightDown.desktop +=================================================================== +--- kpresenter/autoforms/Arrows/ArrowRightDown.desktop (revision 427945) ++++ kpresenter/autoforms/Arrows/ArrowRightDown.desktop (working copy) +@@ -3,6 +3,7 @@ + Type=Link + URL=.source/ArrowRightDown.atf + Name=Arrow Right/Down ++Name[cy]=Saeth i'r Dde/i Lawr + Name[da]=Pil til højre/ned + Name[de]=Pfeil nach rechts/unten + Name[el]=Δεξί/κάτω βέλος +Index: kpresenter/autoforms/Arrows/ArrowDown.desktop +=================================================================== +--- kpresenter/autoforms/Arrows/ArrowDown.desktop (revision 427945) ++++ kpresenter/autoforms/Arrows/ArrowDown.desktop (working copy) +@@ -3,6 +3,7 @@ + Type=Link + URL=.source/ArrowDown.atf + Name=Arrow Down ++Name[cy]=Saeth i Lawr + Name[da]=Pil ned + Name[de]=Pfeil nach unten + Name[el]=Κάτω βέλος +Index: kpresenter/autoforms/Arrows/ArrowRight.desktop +=================================================================== +--- kpresenter/autoforms/Arrows/ArrowRight.desktop (revision 427945) ++++ kpresenter/autoforms/Arrows/ArrowRight.desktop (working copy) +@@ -3,6 +3,7 @@ + Type=Link + URL=.source/ArrowRight.atf + Name=Arrow Right ++Name[cy]=Saeth i'r Dde + Name[da]=Pil til højre + Name[de]=Pfeil nach rechts + Name[el]=Δεξί βέλος +Index: kpresenter/autoforms/Arrows/ArrowLeftDown.desktop +=================================================================== +--- kpresenter/autoforms/Arrows/ArrowLeftDown.desktop (revision 427945) ++++ kpresenter/autoforms/Arrows/ArrowLeftDown.desktop (working copy) +@@ -3,6 +3,7 @@ + Type=Link + URL=.source/ArrowLeftDown.atf + Name=Arrow Left/Down ++Name[cy]=Saeth i'r Chwith/i Lawr + Name[da]=Pil til venstre/ned + Name[de]=Pfeil nach links/unten + Name[el]=Αριστερό/κάτω βέλος +Index: kpresenter/autoforms/Arrows/ArrowRightUp.desktop +=================================================================== +--- kpresenter/autoforms/Arrows/ArrowRightUp.desktop (revision 427945) ++++ kpresenter/autoforms/Arrows/ArrowRightUp.desktop (working copy) +@@ -3,6 +3,7 @@ + Type=Link + URL=.source/ArrowRightUp.atf + Name=Arrow Right/Up ++Name[cy]=Saeth i'r Chwith/i Fyny + Name[da]=Pil til højre/op + Name[de]=Pfeil nach rechts/oben + Name[el]=Δεξί/πάνω βέλος +Index: kpresenter/autoforms/Arrows/ArrowUp.desktop +=================================================================== +--- kpresenter/autoforms/Arrows/ArrowUp.desktop (revision 427945) ++++ kpresenter/autoforms/Arrows/ArrowUp.desktop (working copy) +@@ -3,6 +3,7 @@ + Type=Link + URL=.source/ArrowUp.atf + Name=Arrow Up ++Name[cy]=Saeth i Fyny + Name[da]=Pil op + Name[de]=Pfeil nach oben + Name[el]=Πάνω βέλος +Index: kpresenter/autoforms/Arrows/ArrowLeft.desktop +=================================================================== +--- kpresenter/autoforms/Arrows/ArrowLeft.desktop (revision 427945) ++++ kpresenter/autoforms/Arrows/ArrowLeft.desktop (working copy) +@@ -3,6 +3,7 @@ + Type=Link + URL=.source/ArrowLeft.atf + Name=Arrow Left ++Name[cy]=Saeth i'r Chwith + Name[da]=Pil til venstre + Name[de]=Pfeil nach links + Name[el]=Αριστερό βέλος +Index: kpresenter/kpfreehandobject.cc +=================================================================== +--- kpresenter/kpfreehandobject.cc (revision 427945) ++++ kpresenter/kpfreehandobject.cc (working copy) +@@ -1,6 +1,7 @@ + // -*- Mode: c++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 4; -*- + /* This file is part of the KDE project + Copyright (C) 2001 Toshitaka Fujioka <fujioka@kde.org> ++ Copyright (C) 2005 Thorsten Zachmann <zachmann@kde.org> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public +@@ -54,21 +55,26 @@ + return dcop; + } + +-bool KPFreehandObject::saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj ) const ++bool KPFreehandObject::saveOasisObjectAttributes( KPOasisSaveContext &sc ) const + { +- kdDebug()<<"bool KPFreehandObject::saveOasis( KoXmlWriter &xmlWriter ) not implemented\n"; +- xmlWriter.startElement( "draw:path" ); +- //FIXME !!!!!!!!!!!!!!!!!!!!! +-//xmlWriter.addAttribute( "draw:style-name", KP2DObject::saveOasisBackgroundStyle( xmlWriter, mainStyles ) ); +-//call saveOasisStrokeElement( KoGenStyle &styleobjectauto ); +- if( !objectName.isEmpty()) +- xmlWriter.addAttribute( "draw:name", objectName ); +- //save path I don't know how to do. +- //add "svg:viewBox" add "svg:d" +- xmlWriter.endElement(); ++ kdDebug()<<"bool KPFreehandObject::saveOasisObjectAttributes( KPOasisSaveContext &sc ) not implemented\n"; + return true; + } + ++const char * KPFreehandObject::getOasisElementName() const ++{ ++ return "draw:path"; ++} ++ ++void KPFreehandObject::loadOasis( const QDomElement &element, KoOasisContext & context, KPRLoadingInfo* info ) ++{ ++ //todo ++ //we use draw:path ++ ++ //load marker ++ loadOasisMarker( context ); ++} ++ + QDomDocumentFragment KPFreehandObject::save( QDomDocument& doc,double offset ) + { + return KPPointObject::save( doc, offset ); +Index: kpresenter/kppieobject.cc +=================================================================== +--- kpresenter/kppieobject.cc (revision 427945) ++++ kpresenter/kppieobject.cc (working copy) +@@ -1,5 +1,6 @@ + /* This file is part of the KDE project + Copyright (C) 1998, 1999 Reginald Stadlbauer <reggie@kde.org> ++ Copyright (C) 2005 Thorsten Zachmann <zachmann@kde.org> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public +@@ -86,40 +87,38 @@ + return fragment; + } + +-bool KPPieObject::saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj ) const ++bool KPPieObject::saveOasisObjectAttributes( KPOasisSaveContext &sc ) const + { +- xmlWriter.startElement( ( ext.width() == ext.height() ) ? "draw:circle" : "draw:ellipse" ); +- xmlWriter.addAttribute( "draw:style-name", KP2DObject::saveOasisBackgroundStyle( xmlWriter, context.mainStyles(),indexObj ) ); +- +- if( !objectName.isEmpty()) +- xmlWriter.addAttribute( "draw:name", objectName ); + switch( pieType ) + { +- case PT_PIE: +- xmlWriter.addAttribute( "draw:kind", "section" ); +- break; +- case PT_CHORD: +- xmlWriter.addAttribute( "draw:kind", "cut" ); +- break; +- case PT_ARC: +- xmlWriter.addAttribute( "draw:kind", "arc" ); +- break; +- default: +- kdDebug()<<" type of pie not supported\n"; ++ case PT_PIE: ++ sc.xmlWriter.addAttribute( "draw:kind", "section" ); ++ break; ++ case PT_CHORD: ++ sc.xmlWriter.addAttribute( "draw:kind", "cut" ); ++ break; ++ case PT_ARC: ++ sc.xmlWriter.addAttribute( "draw:kind", "arc" ); ++ break; ++ default: ++ kdDebug() << " type of pie not supported" << endl; + } +- int startangle = 45; +- if ( p_angle != 0.0 ) +- startangle = ( ( int )p_angle )/16; +- xmlWriter.addAttribute( "draw:start-angle", startangle ); +- int endangle = endangle = ( ( int ) p_len/16 )+startangle; +- xmlWriter.addAttribute( "draw:end-angle", endangle ); + +- //we don't have a simple object +- xmlWriter.endElement(); ++ int startangle = ( (int)p_angle / 16 ); ++ sc.xmlWriter.addAttribute( "draw:start-angle", startangle ); ++ ++ int endangle = ( (int) p_len / 16 ) + startangle; ++ sc.xmlWriter.addAttribute( "draw:end-angle", endangle ); ++ + return true; + } + ++const char * KPPieObject::getOasisElementName() const ++{ ++ return ext.width() == ext.height() ? "draw:circle" : "draw:ellipse"; ++} + ++ + void KPPieObject::loadOasis(const QDomElement &element, KoOasisContext & context, KPRLoadingInfo *info) + { + kdDebug()<<"void KPPieObject::loadOasis(const QDomElement &element) ***************\n"; +Index: kpresenter/kpobject.h +=================================================================== +--- kpresenter/kpobject.h (revision 427945) ++++ kpresenter/kpobject.h (working copy) +@@ -136,9 +136,25 @@ + virtual double load(const QDomElement &element); + virtual void loadOasis(const QDomElement &element, KoOasisContext & context, KPRLoadingInfo *info); + +- virtual bool saveOasis( KoXmlWriter &xmlWriter, KoSavingContext &context, int indexObj ) const =0; ++ struct KPOasisSaveContext ++ { ++ KPOasisSaveContext( KoXmlWriter &_xmlWriter, KoSavingContext &_context, ++ int &_indexObj, int &_partIndexObj, bool _onMaster ) ++ : xmlWriter( _xmlWriter ) ++ , context( _context ) ++ , indexObj( _indexObj ) ++ , partIndexObj( _partIndexObj ) ++ , onMaster( _onMaster ) {}; ++ ++ KoXmlWriter &xmlWriter; ++ KoSavingContext &context; ++ int &indexObj; ++ int &partIndexObj; ++ bool onMaster; ++ }; + +- void saveOasisPosObject( KoXmlWriter &xmlWriter, int indexObj ) const; ++ virtual bool saveOasisObject( KPOasisSaveContext &sc ) const; ++ + //return true if we have a animation into object + bool saveOasisObjectStyleShowAnimation( KoXmlWriter &animation, int objectId ); + bool saveOasisObjectStyleHideAnimation( KoXmlWriter &animation, int objectId ); +@@ -297,8 +313,17 @@ + + void saveOasisObjectProtectStyle( KoGenStyle &styleobjectauto ) const; + void saveOasisShadowElement( KoGenStyle &styleobjectauto ) const; +- virtual void saveOasisPictureElement( KoGenStyle& /*styleobjectauto*/ ) const {}; + ++ QString getStyle( KPOasisSaveContext &sc ) const; ++ virtual void fillStyle( KoGenStyle& styleObjectAuto, KoGenStyles& mainStyles ) const; ++ /** ++ * Get the element name for saving the object ++ */ ++ virtual const char * getOasisElementName() const = 0; ++ //virtual bool saveOasisObjectAttributes( KPOasisSaveContext &sc ) const = 0; ++ virtual bool saveOasisObjectAttributes( KPOasisSaveContext &sc ) const; ++ virtual void saveOasisPosObject( KoXmlWriter &xmlWriter, int indexObj ) const; ++ + float angle; + KoPoint orig; + KoSize ext; +@@ -378,6 +403,19 @@ + + protected: + /** ++ * Helper method for saving draw:points. The svg:viewBox is also saved. ++ */ ++ static bool saveOasisDrawPoints( const KoPointArray &points, KPOasisSaveContext &sc ); ++ ++ /** ++ * Helper method for loading draw:points. The svg:viewBox is taken into account. ++ */ ++ bool loadOasisDrawPoints( KoPointArray &points, const QDomElement &element, ++ KoOasisContext & context, KPRLoadingInfo *info ); ++ ++ virtual void fillStyle( KoGenStyle& styleObjectAuto, KoGenStyles& mainStyles ) const; ++ ++ /** + * @ref save() only saves if the pen is different from the default pen. + * The default pen can vary depending on the subclass of KPShadowObject + * (e.g. it's a black solidline for lines and rects, but it's NoPen +@@ -445,14 +483,16 @@ + virtual QDomDocumentFragment save( QDomDocument& doc, double offset ); + virtual double load(const QDomElement &element); + virtual void loadOasis(const QDomElement &element, KoOasisContext & context, KPRLoadingInfo *info); ++ virtual void draw( QPainter *_painter, KoZoomHandler*_zoomHandler, ++ int pageNum, SelectionMode selectionMode, bool drawContour = FALSE ); + + virtual void flip(bool horizontal ); + + protected: + QString saveOasisGradientStyle( KoGenStyles& mainStyles ) const; +- QString saveOasisBackgroundStyle( KoXmlWriter &xmlWriter, KoGenStyles& mainStyles, int indexObj ) const; + +- virtual void saveOasisMarginElement( KoGenStyle& /*styleobjectauto*/ ) const { /* nothing just used into kptextobject*/}; ++ virtual void fillStyle( KoGenStyle& styleObjectAuto, KoGenStyles& mainStyles ) const; ++ void saveOasisBackgroundElement( KoGenStyle& styleObjectAuto, KoGenStyles& mainStyles ) const; + + KPrBrush m_brush; + KPGradient *gradient; +Index: kpresenter/kptextobject.h +=================================================================== +--- kpresenter/kptextobject.h (revision 427945) ++++ kpresenter/kptextobject.h (working copy) +@@ -1,6 +1,7 @@ + // -*- Mode: c++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 4; -*- + /* This file is part of the KDE project + Copyright (C) 1998, 1999 Reginald Stadlbauer <reggie@kde.org> ++ Copyright (C) 2005 Thorsten Zachmann <zachmann@kde.org> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public +@@ -81,7 +82,6 @@ + virtual QDomDocumentFragment save( QDomDocument& doc, double offset ); + virtual double load(const QDomElement &element); + virtual void loadOasis(const QDomElement &element, KoOasisContext& context, KPRLoadingInfo *info); +- virtual bool saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj ) const; + virtual void saveOasisMarginElement( KoGenStyle &styleobjectauto ) const; + + virtual void paint( QPainter *_painter, KoZoomHandler*_zoomHandler, +@@ -180,9 +180,14 @@ + void slotAfterFormatting( int, KoTextParag*, bool* ); + void slotParagraphDeleted(KoTextParag*_parag); + protected: ++ virtual const char * getOasisElementName() const; ++ virtual bool saveOasisObjectAttributes( KPOasisSaveContext &sc ) const; ++ + virtual QDomElement saveKTextObject( QDomDocument& doc ); + QDomElement saveHelper(const QString &tmpText,KoTextFormat*lastFormat ,QDomDocument &doc); + ++ virtual void fillStyle( KoGenStyle& styleObjectAuto, KoGenStyles& mainStyles ) const; ++ + virtual void loadKTextObject( const QDomElement &e ); + void drawText( QPainter* _painter, KoZoomHandler* zoomHandler, bool onlyChanged, KoTextCursor* cursor, bool resetChanged ); + void drawParags( QPainter *p, KoZoomHandler* zoomHandler, const QColorGroup& cg, int from, int to ); +Index: kpresenter/kppolygonobject.h +=================================================================== +--- kpresenter/kppolygonobject.h (revision 427945) ++++ kpresenter/kppolygonobject.h (working copy) +@@ -59,7 +59,6 @@ + int getSharpnessValue() const { return sharpnessValue; } + + virtual QDomDocumentFragment save( QDomDocument& doc, double offset ); +- virtual bool saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj ) const; + + virtual double load( const QDomElement &element ); + virtual void loadOasis( const QDomElement &element, KoOasisContext & context, KPRLoadingInfo *info ); +@@ -69,6 +68,9 @@ + virtual KoPoint getRealOrig() const; + + protected: ++ virtual const char * getOasisElementName() const; ++ virtual bool saveOasisObjectAttributes( KPOasisSaveContext &sc ) const; ++ + virtual void paint( QPainter *_painter,KoZoomHandler*_zoomHandler, + int /* pageNum */, bool drawingShadow, bool drawContour ); + +Index: kpresenter/kpgroupobject.cc +=================================================================== +--- kpresenter/kpgroupobject.cc (revision 427945) ++++ kpresenter/kpgroupobject.cc (working copy) +@@ -1,6 +1,7 @@ + // -*- Mode: c++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 4; -*- + /* This file is part of the KDE project + Copyright (C) 1998, 1999 Reginald Stadlbauer <reggie@kde.org> ++ Copyright (C) 2005 Thorsten Zachmann <zachmann@kde.org> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public +@@ -132,24 +133,23 @@ + } + + +-bool KPGroupObject::saveOasis(KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj) const ++bool KPGroupObject::saveOasisObjectAttributes( KPOasisSaveContext &sc ) const + { +- xmlWriter.startElement( "draw:g" ); +- + QPtrListIterator<KPObject> it( objects ); + for ( ; it.current() ; ++it ) + { +-#if 0 +- if ( it.current()->getType() == OT_PART ) +- continue; +-#endif +- it.current()->saveOasis( xmlWriter, context, indexObj ); ++ //TODO what to do with parts? ++ it.current()->saveOasisObject( sc ); + } +- xmlWriter.endElement(); + return true; + } + ++const char * KPGroupObject::getOasisElementName() const ++{ ++ return "draw:g"; ++} + ++ + void KPGroupObject::loadOasisGroupObject( KPresenterDoc *_doc, KPrPage * newpage, QDomNode &element, KoOasisContext & context, KPRLoadingInfo *info) + { + //KPObject::loadOasis( element, context, info ); +Index: kpresenter/kprectobject.cc +=================================================================== +--- kpresenter/kprectobject.cc (revision 427945) ++++ kpresenter/kprectobject.cc (working copy) +@@ -76,18 +76,19 @@ + return fragment; + } + +-bool KPRectObject::saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj ) const ++bool KPRectObject::saveOasisObjectAttributes( KPOasisSaveContext &sc ) const + { +- xmlWriter.startElement( "draw:rect" ); +- xmlWriter.addAttribute( "draw:style-name", KP2DObject::saveOasisBackgroundStyle( xmlWriter, context.mainStyles(), indexObj ) ); +- +- if( !objectName.isEmpty()) +- xmlWriter.addAttribute( "draw:name", objectName ); +- xmlWriter.endElement(); ++ // TODO corner-radius + return true; + } + + ++const char * KPRectObject::getOasisElementName() const ++{ ++ return "draw:rect"; ++} ++ ++ + void KPRectObject::loadOasis(const QDomElement &element, KoOasisContext&context, KPRLoadingInfo *info) + { + KP2DObject::loadOasis(element, context, info); +Index: kpresenter/kpellipseobject.cc +=================================================================== +--- kpresenter/kpellipseobject.cc (revision 427945) ++++ kpresenter/kpellipseobject.cc (working copy) +@@ -116,14 +116,14 @@ + return size; + } + +-bool KPEllipseObject::saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj ) const ++bool KPEllipseObject::saveOasisObjectAttributes( KPOasisSaveContext &sc ) const + { +- xmlWriter.startElement( ( ext.width() == ext.height() ) ? "draw:circle" : "draw:ellipse" ); +- xmlWriter.addAttribute( "draw:style-name", KP2DObject::saveOasisBackgroundStyle( xmlWriter, context.mainStyles(), indexObj ) ); +- +- if( !objectName.isEmpty()) +- xmlWriter.addAttribute( "draw:name", objectName ); +- xmlWriter.endElement(); ++ // nothing to do + return true; + } + ++const char * KPEllipseObject::getOasisElementName() const ++{ ++ return ext.width() == ext.height() ? "draw:circle" : "draw:ellipse"; ++} ++ +Index: kpresenter/kppolylineobject.h +=================================================================== +--- kpresenter/kppolylineobject.h (revision 427945) ++++ kpresenter/kppolylineobject.h (working copy) +@@ -47,8 +47,10 @@ + virtual QDomDocumentFragment save( QDomDocument& doc, double offset ); + virtual double load( const QDomElement &element ); + virtual void loadOasis(const QDomElement &element, KoOasisContext & context, KPRLoadingInfo *info); +- virtual bool saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj ) const; + ++protected: ++ virtual const char * getOasisElementName() const; ++ virtual bool saveOasisObjectAttributes( KPOasisSaveContext &sc ) const; + }; + + #endif +Index: kpresenter/kpclosedlineobject.cc +=================================================================== +--- kpresenter/kpclosedlineobject.cc (revision 427945) ++++ kpresenter/kpclosedlineobject.cc (working copy) +@@ -90,36 +90,18 @@ + return fragment; + } + +-bool KPClosedLineObject::saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj ) const ++bool KPClosedLineObject::saveOasisObjectAttributes( KPOasisSaveContext &sc ) const + { +- xmlWriter.startElement( "draw:polygon" ); +- xmlWriter.addAttribute( "draw:style-name", KP2DObject::saveOasisBackgroundStyle( xmlWriter, context.mainStyles(), indexObj ) ); +- +- QString listOfPoint; +- int maxX=0; +- int maxY=0; +- KoPointArray::ConstIterator it; +- for ( it = points.begin(); it != points.end(); ++it ) { +- int tmpX = 0; +- int tmpY = 0; +- tmpX = ( int ) ( KoUnit::toMM( ( *it ).x() )*100 ); +- tmpY = ( int ) ( KoUnit::toMM( ( *it ).y() )*100 ); +- if ( !listOfPoint.isEmpty() ) +- listOfPoint += QString( " %1,%2" ).arg( tmpX ).arg( tmpY ); +- else +- listOfPoint = QString( "%1,%2" ).arg( tmpX ).arg( tmpY ); +- maxX = QMAX( maxX, tmpX ); +- maxY = QMAX( maxY, tmpY ); +- } +- xmlWriter.addAttribute("draw:points", listOfPoint ); +- xmlWriter.addAttribute("svg:viewBox", QString( "0 0 %1 %2" ).arg( maxX ).arg( maxY ) ); +- +- if( !objectName.isEmpty()) +- xmlWriter.addAttribute( "draw:name", objectName ); +- xmlWriter.endElement(); ++ KPShadowObject::saveOasisDrawPoints( points, sc ); + return true; + } + ++const char * KPClosedLineObject::getOasisElementName() const ++{ ++ return "draw:polygon"; ++} ++ ++ + double KPClosedLineObject::load( const QDomElement &element ) + { + double offset = KP2DObject::load( element ); +@@ -269,26 +251,7 @@ + { + kdDebug()<<"void KPClosedLineObject::loadOasis( const QDomElement &element )***********\n"; + KP2DObject::loadOasis( element,context, info ); +- //load point. +- QStringList ptList = QStringList::split(' ', element.attributeNS( KoXmlNS::draw, "points", QString::null)); +- +- QString pt_x, pt_y; +- double tmp_x, tmp_y; +- unsigned int index = 0; +- for (QStringList::Iterator it = ptList.begin(); it != ptList.end(); ++it) +- { +- tmp_x = (*it).section(',',0,0).toInt() / 100; +- tmp_y = (*it).section(',',1,1).toInt() / 100; +- +- pt_x.setNum(tmp_x); +- pt_x+="mm"; +- +- pt_y.setNum(tmp_y); +- pt_y+="mm"; +- +- points.putPoints( index, 1, KoUnit::parseValue(pt_x),KoUnit::parseValue(pt_y) ); +- ++index; +- } ++ KPShadowObject::loadOasisDrawPoints( points, element, context, info ); + } + + KoSize KPClosedLineObject::getRealSize() const { +Index: kpresenter/kpclosedlineobject.h +=================================================================== +--- kpresenter/kpclosedlineobject.h (revision 427945) ++++ kpresenter/kpclosedlineobject.h (working copy) +@@ -53,13 +53,14 @@ + virtual QDomDocumentFragment save( QDomDocument& doc, double offset ); + virtual double load( const QDomElement &element ); + virtual void loadOasis( const QDomElement &element, KoOasisContext & context, KPRLoadingInfo *info ); +- virtual bool saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj ) const; + + virtual void flip(bool horizontal ); + virtual KoSize getRealSize() const; + virtual KoPoint getRealOrig() const; + + protected: ++ virtual const char * getOasisElementName() const; ++ virtual bool saveOasisObjectAttributes( KPOasisSaveContext &sc ) const; + virtual void paint( QPainter *_painter,KoZoomHandler*_zoomHandler, + int /* pageNum */, bool drawingShadow, bool drawContour ); + +Index: kpresenter/kpresenter_doc.cc +=================================================================== +--- kpresenter/kpresenter_doc.cc (revision 427945) ++++ kpresenter/kpresenter_doc.cc (working copy) +@@ -1770,33 +1770,35 @@ + else + newpage->appendObject(kppixmapobject); + } +- +- QDomNode object = KoDom::namedItemNS( o, KoXmlNS::draw, "object" ); +- kdDebug()<<" object:"<<object.isNull()<<endl; +- if ( !object.isNull() ) +- { +- fillStyleStack( o, context ); +- KPresenterChild *ch = new KPresenterChild( this ); +- QRect r; +- KPPartObject *kppartobject = new KPPartObject( ch ); +- kppartobject->loadOasis( o, context, m_loadingInfo ); +- r = ch->geometry(); +- if ( groupObject ) +- groupObject->addObjects( kppartobject ); +- else +- newpage->appendObject(kppartobject); +- insertChild( ch ); +- kppartobject->setOrig( r.x(), r.y() ); +- kppartobject->setSize( r.width(), r.height() ); +- } + else + { +- KPTextObject *kptextobject = new KPTextObject( this ); +- kptextobject->loadOasis(o, context, m_loadingInfo); +- if ( groupObject ) +- groupObject->addObjects( kptextobject ); ++ QDomNode object = KoDom::namedItemNS( o, KoXmlNS::draw, "object" ); ++ kdDebug()<<" object:"<<object.isNull()<<endl; ++ if ( !object.isNull() ) ++ { ++ fillStyleStack( o, context ); ++ KPresenterChild *ch = new KPresenterChild( this ); ++ QRect r; ++ KPPartObject *kppartobject = new KPPartObject( ch ); ++ kppartobject->loadOasis( o, context, m_loadingInfo ); ++ r = ch->geometry(); ++ if ( groupObject ) ++ groupObject->addObjects( kppartobject ); ++ else ++ newpage->appendObject(kppartobject); ++ insertChild( ch ); ++ kppartobject->setOrig( r.x(), r.y() ); ++ kppartobject->setSize( r.width(), r.height() ); ++ } + else +- newpage->appendObject(kptextobject); ++ { ++ KPTextObject *kptextobject = new KPTextObject( this ); ++ kptextobject->loadOasis(o, context, m_loadingInfo); ++ if ( groupObject ) ++ groupObject->addObjects( kptextobject ); ++ else ++ newpage->appendObject(kptextobject); ++ } + } + } + else if ( name == "rect" && isDrawNS) // rectangle +@@ -1836,7 +1838,10 @@ + fillStyleStack( o, context ); + KPLineObject *kplineobject = new KPLineObject(); + kplineobject->loadOasis(o, context, m_loadingInfo); +- newpage->appendObject(kplineobject); ++ if ( groupObject ) ++ groupObject->addObjects( kplineobject ); ++ else ++ newpage->appendObject( kplineobject ); + } + else if (name=="polyline" && isDrawNS) { // polyline + fillStyleStack( o, context ); +Index: kpresenter/kppixmapobject.cc +=================================================================== +--- kpresenter/kppixmapobject.cc (revision 427945) ++++ kpresenter/kppixmapobject.cc (working copy) +@@ -2,6 +2,7 @@ + + /* This file is part of the KDE project + Copyright (C) 1998, 1999 Reginald Stadlbauer <reggie@kde.org> ++ Copyright (C) 2005 Thorsten Zachmann <zachmann@kde.org> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public +@@ -101,7 +102,7 @@ + return QString::number( val )+"%"; + } + +-void KPPixmapObject::saveOasisPictureElement( KoGenStyle &styleobjectauto ) ++void KPPixmapObject::saveOasisPictureElement( KoGenStyle &styleobjectauto ) const + { + + if ( bright != 0 ) +@@ -201,26 +202,24 @@ + } + } + +- +-bool KPPixmapObject::saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj ) const ++bool KPPixmapObject::saveOasisObjectAttributes( KPOasisSaveContext &sc ) const + { +- xmlWriter.startElement( "draw:frame" ); +- xmlWriter.addAttribute( "draw:style-name", KP2DObject::saveOasisBackgroundStyle( xmlWriter, context.mainStyles(),indexObj ) ); +- if( !objectName.isEmpty()) +- xmlWriter.addAttribute( "draw:name", objectName ); ++ sc.xmlWriter.startElement( "draw:image" ); ++ sc.xmlWriter.addAttribute( "xlink:type", "simple" ); ++ sc.xmlWriter.addAttribute( "xlink:show", "embed" ); ++ sc.xmlWriter.addAttribute( "xlink:actuate", "onLoad" ); ++ sc.xmlWriter.addAttribute( "xlink:href", imageCollection->getOasisFileName( image ) ); ++ sc.xmlWriter.endElement(); + +- xmlWriter.startElement( "draw:image" ); +- xmlWriter.addAttribute( "xlink:type", "simple" ); +- xmlWriter.addAttribute( "xlink:show", "embed" ); +- xmlWriter.addAttribute( "xlink:actuate", "onLoad" ); +- xmlWriter.addAttribute( "xlink:href", imageCollection->getOasisFileName(image) ); +- xmlWriter.endElement(); +- +- xmlWriter.endElement(); + return true; + } + ++const char * KPPixmapObject::getOasisElementName() const ++{ ++ return "draw:frame"; ++} + ++ + // Deprecated, same as KPPixmapObject::loadPicture + void KPPixmapObject::loadImage( const QString & fileName ) + { +@@ -339,6 +338,12 @@ + + } + ++void KPPixmapObject::fillStyle( KoGenStyle& styleObjectAuto, KoGenStyles& mainStyles ) const ++{ ++ KP2DObject::fillStyle( styleObjectAuto, mainStyles ); ++ saveOasisPictureElement( styleObjectAuto ); ++} ++ + void KPPixmapObject::loadOasis(const QDomElement &element, KoOasisContext & context, KPRLoadingInfo *info) + { + //load it into kpresenter_doc +Index: kpresenter/kpautoformobject.h +=================================================================== +--- kpresenter/kpautoformobject.h (revision 427945) ++++ kpresenter/kpautoformobject.h (working copy) +@@ -63,10 +63,12 @@ + { return lineEnd; } + + virtual QDomDocumentFragment save( QDomDocument& doc,double offset ); +- virtual bool saveOasis( KoXmlWriter & xmlWriter, KoSavingContext& context, int indexObj ) const; + + virtual double load(const QDomElement &element); + protected: ++ virtual const char * getOasisElementName() const; ++ virtual bool saveOasisObjectAttributes( KPOasisSaveContext &sc ) const; ++ + virtual void paint( QPainter *_painter, KoZoomHandler *_zoomHandler, + int /* pageNum */, bool drawingShadow, bool drawContour = FALSE ); + +Index: kpresenter/kppartobject.cc +=================================================================== +--- kpresenter/kppartobject.cc (revision 427945) ++++ kpresenter/kppartobject.cc (working copy) +@@ -63,39 +63,25 @@ + zh->zoomItY( getOrig().y() + getSize().height() / 2 ) ) ); + } + +-bool KPPartObject::saveOasisPart( KoXmlWriter &xmlWriter, KoStore *store, KoSavingContext& context, int indexObj, int partIndexObj, KoXmlWriter* manifestWriter ) const ++bool KPPartObject::saveOasisObjectAttributes( KPOasisSaveContext &sc ) const + { +- kdDebug() << "KPPartObject::saveOasisPart " << partIndexObj << endl; +- xmlWriter.startElement( "draw:frame" ); +- // saveOasisBackgroundStyle also saves draw:id, x,y,width and height.... +- xmlWriter.addAttribute( "draw:style-name", KP2DObject::saveOasisBackgroundStyle( xmlWriter, context.mainStyles(),indexObj ) ); +- if( !objectName.isEmpty()) +- xmlWriter.addAttribute( "draw:name", objectName ); ++ kdDebug() << "KPPartObject::saveOasisPart " << sc.partIndexObj << endl; + +-#if 0 // geometry was already saved, this isn't needed +- // geometry is no zoom value ! +- QRect _rect = child->geometry(); +- KoZoomHandler* zh = child->parent()->zoomHandler(); +- double tmpX = zh->unzoomItX( _rect.x() ); +- double tmpY = zh->unzoomItY( _rect.y() ); +- double tmpWidth = zh->unzoomItX( _rect.width() ); +- double tmpHeight = zh->unzoomItY( _rect.height() ); +- //child->setGeometry( QRect( tmpX, tmpY, tmpWidth, tmpHeight ) ); // ## why? +- xmlWriter.addAttributePt( "svg:width", tmpWidth ); +- xmlWriter.addAttributePt( "svg:height", tmpHeight ); +- xmlWriter.addAttributePt( "svg:x", tmpX ); +- xmlWriter.addAttributePt( "svg:y", tmpY ); +-#endif ++ sc.xmlWriter.startElement( "draw:object" ); ++ const QString name = QString( "Object_%1" ).arg( sc.partIndexObj + 1 ); ++ ++sc.partIndexObj; ++ child->saveOasisAttributes( sc.xmlWriter, name ); + +- xmlWriter.startElement( "draw:object" ); +- const QString name = QString( "Object_%1" ).arg( partIndexObj+1 ); +- child->saveOasisAttributes( xmlWriter, name ); +- +- xmlWriter.endElement(); // draw:object +- xmlWriter.endElement(); // draw:frame ++ sc.xmlWriter.endElement(); + return true; + } + ++const char * KPPartObject::getOasisElementName() const ++{ ++ return "draw:frame"; ++} ++ ++ + void KPPartObject::loadOasis(const QDomElement &element, KoOasisContext&context, KPRLoadingInfo *info) + { + kdDebug()<<"void KPPartObject::loadOasis(const QDomElement &element)******************\n"; +Index: kpresenter/kprpage.cc +=================================================================== +--- kpresenter/kprpage.cc (revision 427945) ++++ kpresenter/kprpage.cc (working copy) +@@ -131,6 +131,8 @@ + + void KPrPage::saveOasisObject( KoStore *store, KoXmlWriter &xmlWriter, KoSavingContext& context, int & indexObj, int &partIndexObj, KoXmlWriter* manifestWriter, bool stickyObj ) const + { ++ KPObject::KPOasisSaveContext sc( xmlWriter, context, indexObj, partIndexObj, isMasterPage() ); ++ + KTempFile animationTmpFile; + animationTmpFile.setAutoDelete( true ); + QFile* tmpFile = animationTmpFile.file(); +@@ -139,17 +141,10 @@ + QPtrListIterator<KPObject> it( m_objectList ); + for ( ; it.current() ; ++it ) + { +- if ( it.current()->getType() == OT_PART ) +- { +- static_cast<KPPartObject*>( it.current() )->saveOasisPart( xmlWriter, store, context, indexObj, partIndexObj, manifestWriter); +- ++partIndexObj; +- } +- else +- { +- if ( it.current()== m_doc->header() || it.current()== m_doc->footer()) +- continue; +- it.current()->saveOasis( xmlWriter, context, indexObj ); +- } ++ if ( it.current()== m_doc->header() || it.current()== m_doc->footer()) ++ continue; ++ it.current()->saveOasisObject( sc ); ++ + if ( !stickyObj && it.current()->haveAnimation() ) + { + kdDebug()<<" it.current()->haveAnimation() \n"; +Index: kpresenter/kptextobject.cc +=================================================================== +--- kpresenter/kptextobject.cc (revision 427945) ++++ kpresenter/kptextobject.cc (working copy) +@@ -212,22 +212,19 @@ + return fragment; + } + +-bool KPTextObject::saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj ) const ++bool KPTextObject::saveOasisObjectAttributes( KPOasisSaveContext &sc ) const + { +- xmlWriter.startElement( "draw:frame" ); +- // #### This should use KoGenStyle to share the style +- xmlWriter.addAttribute( "draw:style-name", KP2DObject::saveOasisBackgroundStyle( xmlWriter, context.mainStyles(), indexObj ) ); +- if( !objectName.isEmpty()) +- xmlWriter.addAttribute( "draw:name", objectName ); +- +- xmlWriter.startElement( "draw:text-box" ); +- m_textobj->saveOasisContent( xmlWriter, context ); +- xmlWriter.endElement(); +- +- xmlWriter.endElement(); ++ sc.xmlWriter.startElement( "draw:text-box" ); ++ m_textobj->saveOasisContent( sc.xmlWriter, sc.context ); ++ sc.xmlWriter.endElement(); + return true; + } + ++const char * KPTextObject::getOasisElementName() const ++{ ++ return "draw:frame"; ++} ++ + void KPTextObject::saveOasisMarginElement( KoGenStyle &styleobjectauto ) const + { + kdDebug()<<"void KPTextObject::saveOasisMarginElement( KoGenStyle &styleobjectauto )\n"; +@@ -673,6 +670,12 @@ + return element; + } + ++void KPTextObject::fillStyle( KoGenStyle& styleObjectAuto, KoGenStyles& mainStyles ) const ++{ ++ KP2DObject::fillStyle( styleObjectAuto, mainStyles ); ++ saveOasisMarginElement( styleObjectAuto ); ++} ++ + void KPTextObject::loadKTextObject( const QDomElement &elem ) + { + QDomElement e = elem.firstChild().toElement(); +Index: kpresenter/kplineobject.cc +=================================================================== +--- kpresenter/kplineobject.cc (revision 427945) ++++ kpresenter/kplineobject.cc (working copy) +@@ -1,6 +1,7 @@ + // -*- Mode: c++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 4; -*- + /* This file is part of the KDE project + Copyright (C) 1998, 1999 Reginald Stadlbauer <reggie@kde.org> ++ Copyright (C) 2005 Thorsten Zachmann <zachmann@kde.org> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public +@@ -64,21 +65,23 @@ + } + + +-QString KPLineObject::saveOasisStrokeElement( KoGenStyles& mainStyles ) const ++void KPLineObject::fillStyle( KoGenStyle& styleObjectAuto, KoGenStyles& mainStyles ) const + { +- KoGenStyle styleobjectauto( KoGenStyle::STYLE_GRAPHICAUTO, "graphic" ); +- saveOasisMarkerElement( mainStyles, styleobjectauto ); +- KPShadowObject::saveOasisStrokeElement( mainStyles, styleobjectauto ); +- saveOasisShadowElement( styleobjectauto ); +- saveOasisObjectProtectStyle( styleobjectauto ); +- return mainStyles.lookup( styleobjectauto, "gr" ); ++ KPShadowObject::fillStyle( styleObjectAuto, mainStyles ); ++ saveOasisMarkerElement( mainStyles, styleObjectAuto ); + } + +-bool KPLineObject::saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj ) const ++ ++bool KPLineObject::saveOasisObjectAttributes( KPOasisSaveContext &sc ) const + { +- xmlWriter.startElement( "draw:line" ); +- xmlWriter.addAttribute( "draw:style-name", saveOasisStrokeElement( context.mainStyles() ) ); ++ // nothing to do ++ return true; ++} + ++void KPLineObject::saveOasisPosObject( KoXmlWriter &xmlWriter, int indexObj ) const ++{ ++ xmlWriter.addAttribute( "draw:id", "object" + QString::number( indexObj ) ); ++ + float x1 = orig.x(); + float y1 = orig.y(); + float x2 = x1 + ext.width(); +@@ -102,17 +105,24 @@ + break; + } + ++ //save all into pt ++ xmlWriter.addAttributePt( "svg:x1", x1 ); + xmlWriter.addAttributePt( "svg:y1", y1 ); ++ xmlWriter.addAttributePt( "svg:x2", x2 ); + xmlWriter.addAttributePt( "svg:y2", y2 ); +- xmlWriter.addAttributePt( "svg:x1", x1 ); +- xmlWriter.addAttributePt( "svg:x2", x2 ); + +- if( !objectName.isEmpty()) +- xmlWriter.addAttribute( "draw:name", objectName ); +- xmlWriter.endElement(); +- return true; ++ if ( kAbs( angle ) > 1E-6 ) ++ { ++ double value = -1 * ( ( double )angle* M_PI )/180.0; ++ QString str=QString( "rotate (%1)" ).arg( value ); ++ xmlWriter.addAttribute( "draw:transform", str ); ++ } + } + ++const char * KPLineObject::getOasisElementName() const ++{ ++ return "draw:line"; ++} + + QDomDocumentFragment KPLineObject::save( QDomDocument& doc, double offset ) + { +@@ -163,10 +173,10 @@ + + kdDebug()<<"KPLineObject::loadOasis(const QDomElement &element) : real position x :"<<orig.x()<<" y "<<orig.y()<< " width :"<<ext.width()<<" height :"<<ext.height()<<endl; + +- QString attr = (x1 < x2) ? "marker-start" : "marker-end"; ++ QString attr = (x1 <= x2) ? "marker-start" : "marker-end"; + loadOasisMarkerElement( context, attr, lineBegin ); + +- attr = (x1 < x2) ? "marker-end" : "marker-start"; ++ attr = (x1 <= x2) ? "marker-end" : "marker-start"; + loadOasisMarkerElement( context, attr, lineEnd ); + } + +Index: kpresenter/kppolylineobject.cc +=================================================================== +--- kpresenter/kppolylineobject.cc (revision 427945) ++++ kpresenter/kppolylineobject.cc (working copy) +@@ -1,6 +1,7 @@ + // -*- Mode: c++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 4; -*- + /* This file is part of the KDE project + Copyright (C) 2001 Toshitaka Fujioka <fujioka@kde.org> ++ Copyright (C) 2005 Thorsten Zachmann <zachmann@kde.org> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public +@@ -29,6 +30,7 @@ + #include <kdebug.h> + #include <kozoomhandler.h> + #include <kooasiscontext.h> ++#include <koUnit.h> + + #include <math.h> + using namespace std; +@@ -68,22 +70,22 @@ + return KPPointObject::load( element ); + } + +-bool KPPolylineObject::saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj ) const ++bool KPPolylineObject::saveOasisObjectAttributes( KPOasisSaveContext &sc ) const + { +- xmlWriter.startElement( "draw:polyline" ); +- saveOasisPosObject(xmlWriter, indexObj ); +- xmlWriter.addAttribute( "draw:style-name", saveOasisStrokeElement( context.mainStyles() ) ); +- +- KPPointObject::saveOasis( xmlWriter, context ); +- if( !objectName.isEmpty()) +- xmlWriter.addAttribute( "draw:name", objectName ); +- xmlWriter.endElement(); ++ KPShadowObject::saveOasisDrawPoints( points, sc ); + return true; + } + ++const char * KPPolylineObject::getOasisElementName() const ++{ ++ return "draw:polyline"; ++} + ++ + void KPPolylineObject::loadOasis(const QDomElement &element, KoOasisContext & context, KPRLoadingInfo *info) + { + kdDebug()<<"void KPPolylineObject::loadOasis(const QDomElement &element)************\n"; +- KPPointObject::loadOasis( element,context, info ); ++ KPShadowObject::loadOasis( element, context, info ); ++ KPShadowObject::loadOasisDrawPoints( points, element, context, info ); ++ loadOasisMarker( context ); + } +Index: kpresenter/kpquadricbeziercurveobject.cc +=================================================================== +--- kpresenter/kpquadricbeziercurveobject.cc (revision 427945) ++++ kpresenter/kpquadricbeziercurveobject.cc (working copy) +@@ -1,6 +1,7 @@ + // -*- Mode: c++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 4; -*- + /* This file is part of the KDE project + Copyright (C) 2001 Toshitaka Fujioka <fujioka@kde.org> ++ Copyright (C) 2005 Thorsten Zachmann <zachmann@kde.org> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public +@@ -60,16 +61,18 @@ + return *this; + } + +-bool KPQuadricBezierCurveObject::saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj ) const ++bool KPQuadricBezierCurveObject::saveOasisObjectAttributes( KPOasisSaveContext &sc ) const + { +- kdDebug()<<"bool KPQuadricBezierCurveObject::saveOasis( KoXmlWriter &xmlWriter ) not implemented\n"; +- //todo +- // call saveOasisShadowElement( styleobjectauto ); +- // call saveOasisStrokeElement( KoGenStyle &styleobjectauto ); +- //call xmlWriter.addAttribute( "draw:style-name", style ); ++ kdDebug()<<"bool KPQuadricBezierCurveObject::saveOasisObjectAttributes( KPOasisSaveContext &sc ) not implemented\n"; + return true; + } + ++const char * KPQuadricBezierCurveObject::getOasisElementName() const ++{ ++ // use draw:path ? ++ return "draw:custom-shape"; ++} ++ + void KPQuadricBezierCurveObject::loadOasis( const QDomElement &element, KoOasisContext & context, KPRLoadingInfo *info ) + { + //todo +Index: kspread/dialogs/kspread_dlg_database.cc +=================================================================== +--- kspread/dialogs/kspread_dlg_database.cc (revision 427945) ++++ kspread/dialogs/kspread_dlg_database.cc (working copy) +@@ -600,8 +600,8 @@ + // An update command must also be followed by a space, or it would be parsed + // as an identifier. + // For sanity, also check that there is a SELECT +- QRegExp couldModifyDB( "(^|[( \s])(UPDATE|DELETE|INSERT|CREATE) ", false /* cs */ ); +- QRegExp couldQueryDB( "(^|[( \s])(SELECT) ", false /* cs */ ); ++ QRegExp couldModifyDB( "(^|[( \\s])(UPDATE|DELETE|INSERT|CREATE) ", false /* cs */ ); ++ QRegExp couldQueryDB( "(^|[( \\s])(SELECT) ", false /* cs */ ); + + if (couldModifyDB.search( queryStr ) != -1 || couldQueryDB.search ( queryStr ) == -1 ) + { +Index: kspread/CHANGES +=================================================================== +--- kspread/CHANGES (revision 427945) ++++ kspread/CHANGES (working copy) +@@ -1,5 +1,9 @@ ++since 1.4.0 ++=========== ++- Fix potential crash when rendering obscured cells (#108659) ++ + since 1.4-beta1 +-============================= ++=============== + - Use General/Blank Worksheet as default template. + - KSpread crashes on exit if there is a chart in the sheet (#101915). + - The data editor is disabled for charts which has been loaded. +Index: kspread/kspreadpart.desktop +=================================================================== +--- kspread/kspreadpart.desktop (revision 427945) ++++ kspread/kspreadpart.desktop (working copy) +@@ -19,6 +19,7 @@ + Name[pt]=Componente de Folha de Cálculo do KOffice + Name[pt_BR]=Componente de Planilha de Cálculo do KOffice + Name[ru]=Компонент электронных таблиц KOffice ++Name[sl]=Komponenta za preglednice za KOffice + Name[sr]=KOffice-ова компонента за унакрсне табеле + Name[sr@Latn]=KOffice-ova komponenta za unakrsne tabele + Name[sv]=Koffice-kalkylarkskomponent +Index: kspread/kspread_cell.cc +=================================================================== +--- kspread/kspread_cell.cc (revision 427945) ++++ kspread/kspread_cell.cc (working copy) +@@ -825,7 +825,12 @@ + if (!d->hasExtra()) + return (KSpreadCell *) this; + +- return d->extra()->obscuringCells.first(); ++ else if (d->extra()->obscuringCells.isEmpty()) ++ return (KSpreadCell *) this; ++ ++ else ++ return d->extra()->obscuringCells.first(); ++ + #if 0 + QValueList<KSpreadCell*>::const_iterator it = d->extra()->obscuringCells.begin(); + QValueList<KSpreadCell*>::const_iterator end = d->extra()->obscuringCells.end(); +@@ -2489,6 +2494,7 @@ + // If the cell towards the top is part of a merged cell, get + // the pointer to the master cell. + cellUp = cellUp->ultimateObscuringCell(); ++ + topPen = cellUp->effBottomBorderPen( cellUp->column(), + cellUp->row() ); + +Index: templates/SpreadSheet.desktop +=================================================================== +--- templates/SpreadSheet.desktop (revision 427945) ++++ templates/SpreadSheet.desktop (working copy) +@@ -23,7 +23,7 @@ + Name[pl]=Arkusz kalkulacyjny... + Name[pt]=Documento de Folha de Cálculo... + Name[pt_BR]=Planilha de Cálculo... +-Name[ru]=Электронная таблица... ++Name[ru]=Электронную таблицу... + Name[se]=Rehkenastinárka ... + Name[sl]=Preglednični dokument ... + Name[sr]=Документ са прорачунским листовима... +@@ -54,6 +54,7 @@ + Comment[fa]=KSpread سند جدید: + Comment[fi]=Uusi KSpread-asiakirja: + Comment[fr]=Nouveau document KSpread : ++Comment[ga]=Cáipéis nua KSpread: + Comment[he]=מסמך חדש של KSpread + Comment[hr]=Novi KSpread dokument: + Comment[hu]=Új KSpread-dokumentum: +@@ -67,7 +68,7 @@ + Comment[pl]=Nowy arkusz KSpread: + Comment[pt]=Novo documento do KSpread: + Comment[pt_BR]=Novo documento KSpread: +-Comment[ru]=Новый документ KSpread: ++Comment[ru]=Новая электронная таблица KSpread: + Comment[se]=Ođđa KSpread-dokumeanta: + Comment[sk]=Nový dokument KSpread: + Comment[sl]=Nov dokument za KSpread +Index: templates/Illustration.desktop +=================================================================== +--- templates/Illustration.desktop (revision 427945) ++++ templates/Illustration.desktop (working copy) +@@ -22,7 +22,7 @@ + Name[pl]=Rysunek... + Name[pt]=Documento de Ilustração.... + Name[pt_BR]=Documento de Ilustração... +-Name[ru]=Иллюстрированный документ... ++Name[ru]=Векторный рисунок... + Name[se]=Illustrašuvdna ... + Name[sl]=Ilustracijski dokument ... + Name[sr]=Илустрациони документ... +@@ -49,6 +49,7 @@ + Comment[fa]=Karbon14 سند جدید: + Comment[fi]=Uusi Karbon14-asiakirja: + Comment[fr]=Nouveau document Karbon14 : ++Comment[ga]=Cáipéis nua Karbon14: + Comment[he]=מסמך Karbon14 חדש + Comment[hr]=Novi Karbon14 dokument: + Comment[hu]=Új Karbon14-dokumentum: +@@ -59,7 +60,7 @@ + Comment[pl]=Nowy dokument Karbon14: + Comment[pt]=Novo documento do Karbon14: + Comment[pt_BR]=Novo documento do Karbon14 +-Comment[ru]=Новый документ Karbon14: ++Comment[ru]=Новый рисунок Karbon14: + Comment[se]=Ođđa Karbon14-dokumeanta: + Comment[sk]=Nový dokument Karbon14: + Comment[sl]=Nov dokument za Karbon14 +Index: templates/Presentation.desktop +=================================================================== +--- templates/Presentation.desktop (revision 427945) ++++ templates/Presentation.desktop (working copy) +@@ -23,7 +23,7 @@ + Name[pl]=Prezentacja... + Name[pt]=Documento de Apresentação... + Name[pt_BR]=Apresentação de Slides... +-Name[ru]=Презентация... ++Name[ru]=Презентацию... + Name[se]=Presentašuvdna ... + Name[sl]=Predstavitveni dokument ... + Name[sr]=Презентациони документ... +@@ -67,7 +67,7 @@ + Comment[pl]=Nowa prezentacja KPresenter: + Comment[pt]=Novo documento do KPresenter: + Comment[pt_BR]=Novo documento de apresentação KPresenter: +-Comment[ru]=Новый документ KPresenter: ++Comment[ru]=Новая презентация KPresenter: + Comment[se]=Ođđa KPresenter-presentašuvdna: + Comment[sk]=Nový dokument KPresenter: + Comment[sl]=Nov predstavitveni dokument za KPresenter +Index: templates/TextDocument.desktop +=================================================================== +--- templates/TextDocument.desktop (revision 427945) ++++ templates/TextDocument.desktop (working copy) +@@ -13,6 +13,7 @@ + Name[et]=Tekstidokument... + Name[fi]=Tekstiasiakirja... + Name[fr]=Document texte... ++Name[ga]=Cáipéis Téacs... + Name[he]=מסמך טקסט... + Name[hr]=Tekst datoteka... + Name[hu]=KWord-dokumentum... +@@ -24,7 +25,7 @@ + Name[pl]=Dokument tekstowy... + Name[pt]=Documento de Texto... + Name[pt_BR]=Documento de Texto... +-Name[ru]=Текстовый документ... ++Name[ru]=Документ... + Name[se]=Teakstadokumeanta ... + Name[sl]=Besedilni dokument ... + Name[sr]=Текстуални документ... +@@ -55,6 +56,7 @@ + Comment[fa]=KWord سند جدید برای: + Comment[fi]=Uusi KWord-asiakirja: + Comment[fr]=Nouveau document KWord : ++Comment[ga]=Cáipéis nua KWord: + Comment[he]=מסמך חדש של KWord + Comment[hr]=Novi KWord dokument + Comment[hu]=Új KWord-dokumentum: +Index: karbon/tools/vroundrecttool.h +=================================================================== +--- karbon/tools/vroundrecttool.h (revision 427945) ++++ karbon/tools/vroundrecttool.h (working copy) +@@ -29,7 +29,7 @@ + + class KarbonPart; + class QLabel; +-class KoUnitDoubleSpinBox; ++class KoBuggyUnitDoubleSpinBox; + + + class VRoundRectTool : public VShapeTool +Index: karbon/tools/vpolygontool.cc +=================================================================== +--- karbon/tools/vpolygontool.cc (revision 427945) ++++ karbon/tools/vpolygontool.cc (working copy) +@@ -37,6 +37,7 @@ + + new QLabel( i18n( "Radius:" ), group ); + m_radius = new KDoubleSpinBox(0.0, 1000.0, 0.5, 5.0,2, group ); ++ //m_radius = new KoBuggyUnitDoubleSpinBox( group, 0.0, 1000.0, 0.5, 50.0, KoUnit::U_MM ); + refreshUnit(); + new QLabel( i18n( "Edges:" ), group ); + m_edges = new KIntSpinBox( group ); +Index: karbon/tools/vpolygontool.h +=================================================================== +--- karbon/tools/vpolygontool.h (revision 427945) ++++ karbon/tools/vpolygontool.h (working copy) +@@ -58,7 +58,9 @@ + void refreshUnit(); + + private: ++ // FIXME: This should be a KoUnitDoubleSpinBox! + KDoubleSpinBox *m_radius; ++ + KIntSpinBox *m_edges; + KarbonPart *m_part; + }; +Index: karbon/tools/vspiraltool.h +=================================================================== +--- karbon/tools/vspiraltool.h (revision 427945) ++++ karbon/tools/vspiraltool.h (working copy) +@@ -67,7 +67,9 @@ + void refreshUnit(); + + private: ++ // FIXME: This should be a KoUnitDoubleSpinBox! + KDoubleSpinBox *m_radius; ++ + KIntSpinBox *m_segments; + KDoubleNumInput *m_fade; + KComboBox *m_type; +Index: karbon/tools/vellipsetool.cc +=================================================================== +--- karbon/tools/vellipsetool.cc (revision 427945) ++++ karbon/tools/vellipsetool.cc (working copy) +@@ -49,8 +49,10 @@ + // add width/height-input: + new QLabel( i18n( "Width:" ), group ); + m_width = new KDoubleSpinBox( 0.0, 1000.0, 0.5, 10.0, 2, group ); ++ //m_width = new KoBuggyUnitDoubleSpinBox( group, 0.0, 1000.0, 0.5, 100.0, KoUnit::U_MM ); + new QLabel( i18n( "Height:" ), group ); + m_height = new KDoubleSpinBox( 0.0, 1000.0, 0.5, 10.0, 2, group ); ++ //m_height = new KoBuggyUnitDoubleSpinBox( group, 0.0, 1000.0, 0.5, 100.0, KoUnit::U_MM ); + + new QLabel( i18n( "Start angle:" ), group ); + m_startAngle = new KIntSpinBox( group ); +Index: karbon/tools/vellipsetool.h +=================================================================== +--- karbon/tools/vellipsetool.h (revision 427945) ++++ karbon/tools/vellipsetool.h (working copy) +@@ -25,8 +25,7 @@ + + #include "vshapetool.h" + +-class KoUnitDoubleSpinBox; +-class KoUnitDoubleSpinBox; ++class KoBuggyUnitDoubleSpinBox; + class KComboBox; + class KIntSpinBox; + class KarbonPart; +@@ -55,8 +54,11 @@ + KComboBox *m_type; + KIntSpinBox *m_startAngle; + KIntSpinBox *m_endAngle; ++ ++ // FIXME: These should be KoUnitDoubleSpinBoxes! + KDoubleSpinBox *m_width; + KDoubleSpinBox *m_height; ++ + KarbonPart *m_part; + }; + +Index: karbon/tools/vsinustool.cc +=================================================================== +--- karbon/tools/vsinustool.cc (revision 427945) ++++ karbon/tools/vsinustool.cc (working copy) +@@ -40,8 +40,10 @@ + // add width/height-input: + new QLabel( i18n( "Width:" ), group ); + m_width = new KDoubleSpinBox( 0.0, 1000.0, 0.5, 10.0, 2, group ); ++ //m_width = new KoBuggyUnitDoubleSpinBox( group, 0.0, 1000.0, 0.5, 100.0, KoUnit::U_MM ); + new QLabel( i18n( "Height:" ), group ); + m_height = new KDoubleSpinBox( 0.0, 1000.0, 0.5, 10.0, 2, group ); ++ //m_height = new KoBuggyUnitDoubleSpinBox( group, 0.0, 1000.0, 0.5, 100.0, KoUnit::U_MM ); + + refreshUnit(); + +Index: karbon/tools/vsinustool.h +=================================================================== +--- karbon/tools/vsinustool.h (revision 427945) ++++ karbon/tools/vsinustool.h (working copy) +@@ -24,7 +24,7 @@ + #include <knuminput.h> + #include "vshapetool.h" + +-class KoUnitDoubleSpinBox; ++class KoBuggyUnitDoubleSpinBox; + class KIntSpinBox; + class KarbonPart; + class QLabel; +@@ -58,8 +58,10 @@ + void refreshUnit(); + + private: ++ // FIXME: These should be KoUnitDoubleSpinBoxes! + KDoubleSpinBox *m_width; + KDoubleSpinBox *m_height; ++ + KIntSpinBox *m_periods; + KarbonPart *m_part; + }; +Index: karbon/tools/vrectangletool.cc +=================================================================== +--- karbon/tools/vrectangletool.cc (revision 427945) ++++ karbon/tools/vrectangletool.cc (working copy) +@@ -37,10 +37,11 @@ + // add width/height-input: + new QLabel( i18n( "Width:" ), group ); + m_width = new KDoubleSpinBox( 0.0, 1000.0, 0.5, 10.0, 2, group ); ++ //m_width = new KoBuggyUnitDoubleSpinBox( group, 0.0, 1000.0, 0.5, 100.0, KoUnit::U_MM ); + + new QLabel( i18n( "Height:" ), group ); + m_height = new KDoubleSpinBox( 0.0, 1000.0, 0.5, 10.0, 2, group ); +- ++ //m_height = new KoBuggyUnitDoubleSpinBox( group, 0.0, 1000.0, 0.5, 100.0, KoUnit::U_MM ); + refreshUnit(); + + group->setInsideMargin( 4 ); +Index: karbon/tools/vstartool.cc +=================================================================== +--- karbon/tools/vstartool.cc (revision 427945) ++++ karbon/tools/vstartool.cc (working copy) +@@ -49,10 +49,12 @@ + // add width/height-input: + new QLabel( i18n( "Outer radius:" ), group ); + m_outerR = new KDoubleSpinBox( 0.0, 1000.0, 0.5, 5.0, 2, group ); ++ //m_outerR = new KoBuggyUnitDoubleSpinBox( group, 0.0, 1000.0, 0.5, 50.0, KoUnit::U_MM ); + connect( m_outerR, SIGNAL( valueChanged( double ) ), this, SLOT( setOuterRadius( double ) ) ); + + new QLabel( i18n( "Inner radius:" ), group ); + m_innerR = new KDoubleSpinBox( 0.0, 1000.0, 0.5, 5.0, 2, group ); ++ //m_innerR = new KoBuggyUnitDoubleSpinBox( group, 0.0, 1000.0, 0.5, 25.0, KoUnit::U_MM ); + + refreshUnit(); + +Index: karbon/tools/vstartool.h +=================================================================== +--- karbon/tools/vstartool.h (revision 427945) ++++ karbon/tools/vstartool.h (working copy) +@@ -54,8 +54,10 @@ + void setOuterRadius( double ); + + private: ++ // FIXME: These should be KoUnitDoubleSpinBoxes! + KDoubleSpinBox *m_innerR; + KDoubleSpinBox *m_outerR; ++ + KDoubleNumInput *m_roundness; + KIntSpinBox *m_edges; + KIntSpinBox *m_innerAngle; +Index: karbon/tools/vspiraltool.cc +=================================================================== +--- karbon/tools/vspiraltool.cc (revision 427945) ++++ karbon/tools/vspiraltool.cc (working copy) +@@ -43,6 +43,7 @@ + + new QLabel( i18n( "Radius:" ), group ); + m_radius = new KDoubleSpinBox( 0.0, 1000.0, 0.5, 5.0, 2, group ); ++ //m_radius = new KoBuggyUnitDoubleSpinBox( group, 0.0, 1000.0, 0.5, 50.0, KoUnit::U_MM ); + refreshUnit(); + new QLabel( i18n( "Segments:" ), group ); + m_segments = new KIntSpinBox( group ); +Index: karbon/tools/vrectangletool.h +=================================================================== +--- karbon/tools/vrectangletool.h (revision 427945) ++++ karbon/tools/vrectangletool.h (working copy) +@@ -29,7 +29,7 @@ + + class KarbonPart; + class QLabel; +-class KoUnitDoubleSpinBox; ++class KoBuggyUnitDoubleSpinBox; + + class VRectangleTool : public VShapeTool + { +@@ -59,8 +59,10 @@ + void refreshUnit(); + + private: ++ // FIXME: These should be KoUnitDoubleSpinBoxes! + KDoubleSpinBox *m_width; + KDoubleSpinBox *m_height; ++ + KarbonPart *m_part; + }; + +Index: karbon/dialogs/vconfiguredlg.cc +=================================================================== +--- karbon/dialogs/vconfiguredlg.cc (revision 427945) ++++ karbon/dialogs/vconfiguredlg.cc (working copy) +@@ -317,17 +317,17 @@ + gridColorLbl->setBuddy( m_gridColorBtn ); + QGroupBox* spacingGrp = new QGroupBox( 2, Qt::Horizontal, i18n( "Spacing" ), page ); + QLabel* spaceHorizLbl = new QLabel( i18n( "&Horizontal:" ), spacingGrp ); +- m_spaceHorizUSpin = new KoUnitDoubleSpinBox( spacingGrp, 0.0, pgw, 0.1, fw, unit ); ++ m_spaceHorizUSpin = new KoBuggyUnitDoubleSpinBox( spacingGrp, 0.0, pgw, 0.1, fw, unit ); + spaceHorizLbl->setBuddy( m_spaceHorizUSpin ); + QLabel* spaceVertLbl = new QLabel( i18n( "&Vertical:" ), spacingGrp ); +- m_spaceVertUSpin = new KoUnitDoubleSpinBox( spacingGrp, 0.0, pgh, 0.1, fh, unit ); ++ m_spaceVertUSpin = new KoBuggyUnitDoubleSpinBox( spacingGrp, 0.0, pgh, 0.1, fh, unit ); + spaceVertLbl->setBuddy( m_spaceVertUSpin ); + QGroupBox* snapGrp = new QGroupBox( 2, Qt::Horizontal, i18n( "Snap Distance" ), page ); + QLabel* snapHorizLbl = new QLabel( i18n( "H&orizontal:" ), snapGrp ); +- m_snapHorizUSpin = new KoUnitDoubleSpinBox( snapGrp, 0.0, fw, 0.1, sw, unit ); ++ m_snapHorizUSpin = new KoBuggyUnitDoubleSpinBox( snapGrp, 0.0, fw, 0.1, sw, unit ); + snapHorizLbl->setBuddy( m_snapHorizUSpin ); + QLabel* snapVertLbl = new QLabel( i18n( "V&ertical:" ), snapGrp ); +- m_snapVertUSpin = new KoUnitDoubleSpinBox( snapGrp, 0.0, fh, 0.1, sh, unit ); ++ m_snapVertUSpin = new KoBuggyUnitDoubleSpinBox( snapGrp, 0.0, fh, 0.1, sh, unit ); + snapVertLbl->setBuddy( m_snapVertUSpin ); + + QGridLayout* gl = new QGridLayout(); +Index: karbon/dialogs/vconfiguredlg.h +=================================================================== +--- karbon/dialogs/vconfiguredlg.h (revision 427945) ++++ karbon/dialogs/vconfiguredlg.h (working copy) +@@ -27,7 +27,7 @@ + class KConfig; + class KIntNumInput; + class KColorButton; +-class KoUnitDoubleSpinBox; ++class KoBuggyUnitDoubleSpinBox; + class QCheckBox; + class QComboBox; + +@@ -129,10 +129,10 @@ + + private: + KarbonView* m_view; +- KoUnitDoubleSpinBox* m_spaceHorizUSpin; +- KoUnitDoubleSpinBox* m_spaceVertUSpin; +- KoUnitDoubleSpinBox* m_snapHorizUSpin; +- KoUnitDoubleSpinBox* m_snapVertUSpin; ++ KoBuggyUnitDoubleSpinBox* m_spaceHorizUSpin; ++ KoBuggyUnitDoubleSpinBox* m_spaceVertUSpin; ++ KoBuggyUnitDoubleSpinBox* m_snapHorizUSpin; ++ KoBuggyUnitDoubleSpinBox* m_snapVertUSpin; + QCheckBox* m_gridChBox; + QCheckBox* m_snapChBox; + KColorButton* m_gridColorBtn; +Index: karbon/dialogs/vstrokedlg.cc +=================================================================== +--- karbon/dialogs/vstrokedlg.cc (revision 427945) ++++ karbon/dialogs/vstrokedlg.cc (working copy) +@@ -50,7 +50,7 @@ + + QLabel* widthLabel = new QLabel( i18n ( "Width:" ), mainWidget ); + leftLayout->addWidget ( widthLabel ); +- m_setLineWidth = new KoUnitDoubleSpinBox( mainWidget, 0.0, 1000.0, 0.5, 1.0, KoUnit::U_PT, 1 ); ++ m_setLineWidth = new KoBuggyUnitDoubleSpinBox( mainWidget, 0.0, 1000.0, 0.5, 1.0, KoUnit::U_PT, 1 ); + leftLayout->addWidget ( m_setLineWidth ); + + //Dashing -> +Index: karbon/dialogs/vstrokedlg.h +=================================================================== +--- karbon/dialogs/vstrokedlg.h (revision 427945) ++++ karbon/dialogs/vstrokedlg.h (working copy) +@@ -27,7 +27,7 @@ + class QVButtonGroup; + + class KarbonPart; +-class KoUnitDoubleSpinBox; ++class KoBuggyUnitDoubleSpinBox; + class VStroke; + class VColorTab; + +@@ -41,7 +41,7 @@ + private: + VColorTab* m_colortab; + KarbonPart *m_part; +- KoUnitDoubleSpinBox *m_setLineWidth; ++ KoBuggyUnitDoubleSpinBox *m_setLineWidth; + QComboBox *m_styleCombo; + QVButtonGroup *m_typeOption; + QVButtonGroup *m_capOption; +Index: karbon/dockers/vtransformdocker.h +=================================================================== +--- karbon/dockers/vtransformdocker.h (revision 427945) ++++ karbon/dockers/vtransformdocker.h (working copy) +@@ -25,7 +25,7 @@ + + class KarbonPart; + class KarbonView; +-class KoUnitDoubleSpinBox; ++class KoBuggyUnitDoubleSpinBox; + + class VTransformDocker : public VDocker + { +@@ -43,10 +43,10 @@ + private: + KarbonPart *m_part; + KarbonView *m_view; +- KoUnitDoubleSpinBox *m_x; +- KoUnitDoubleSpinBox *m_y; +- KoUnitDoubleSpinBox *m_width; +- KoUnitDoubleSpinBox *m_height; ++ KoBuggyUnitDoubleSpinBox *m_x; ++ KoBuggyUnitDoubleSpinBox *m_y; ++ KoBuggyUnitDoubleSpinBox *m_width; ++ KoBuggyUnitDoubleSpinBox *m_height; + QWidget *mainWidget; + }; + +Index: karbon/dockers/vstrokedocker.cc +=================================================================== +--- karbon/dockers/vstrokedocker.cc (revision 427945) ++++ karbon/dockers/vstrokedocker.cc (working copy) +@@ -50,7 +50,7 @@ + + QLabel* widthLabel = new QLabel( i18n ( "Width:" ), mainWidget ); + mainLayout->addWidget( widthLabel, 0, 0 ); +- m_setLineWidth = new KoUnitDoubleSpinBox( mainWidget, 0.0, 1000.0, 0.5, 1.0, KoUnit::U_PT, 1 ); ++ m_setLineWidth = new KoBuggyUnitDoubleSpinBox( mainWidget, 0.0, 1000.0, 0.5, 1.0, KoUnit::U_PT, 1 ); + mainLayout->addWidget ( m_setLineWidth, 0, 1 ); + connect( m_setLineWidth, SIGNAL( valueChanged( double ) ), this, SLOT( widthChanged() ) ); + +Index: karbon/dockers/vstrokedocker.h +=================================================================== +--- karbon/dockers/vstrokedocker.h (revision 427945) ++++ karbon/dockers/vstrokedocker.h (working copy) +@@ -26,7 +26,7 @@ + class QHButtonGroup; + class QWidget; + +-class KoUnitDoubleSpinBox; ++class KoBuggyUnitDoubleSpinBox; + + class KoMainWindow; + class KarbonView; +@@ -48,7 +48,7 @@ + QWidget *mainWidget; + KarbonPart *m_part; + KarbonView *m_view; +- KoUnitDoubleSpinBox *m_setLineWidth; ++ KoBuggyUnitDoubleSpinBox *m_setLineWidth; + + private slots: + void slotCapChanged( int ID ); +Index: karbon/dockers/vtransformdocker.cc +=================================================================== +--- karbon/dockers/vtransformdocker.cc (revision 427945) ++++ karbon/dockers/vtransformdocker.cc (working copy) +@@ -48,25 +48,25 @@ + //X: (TODO: Set 5000 limit to real Karbon14 limit) + QLabel* xLabel = new QLabel( i18n ( "X:" ), mainWidget ); + mainLayout->addWidget( xLabel, 1, 0 ); +- m_x = new KoUnitDoubleSpinBox( mainWidget, -5000.0, 5000.0, 1.0, 10.0, m_part->unit(), 1 ); ++ m_x = new KoBuggyUnitDoubleSpinBox( mainWidget, -5000.0, 5000.0, 1.0, 10.0, m_part->unit(), 1 ); + mainLayout->addWidget( m_x, 1, 1 ); + + //Y: (TODO: Set 5000 limit to real Karbon14 limit) + QLabel* yLabel = new QLabel( i18n ( "Y:" ), mainWidget ); + mainLayout->addWidget( yLabel, 2, 0 ); +- m_y = new KoUnitDoubleSpinBox( mainWidget, -5000.0, 5000.0, 1.0, 10.0, m_part->unit(), 1 ); ++ m_y = new KoBuggyUnitDoubleSpinBox( mainWidget, -5000.0, 5000.0, 1.0, 10.0, m_part->unit(), 1 ); + mainLayout->addWidget( m_y, 2, 1 ); + + //Width: (TODO: Set 5000 limit to real Karbon14 limit) + QLabel* wLabel = new QLabel( i18n ( "W:" ), mainWidget ); + mainLayout->addWidget( wLabel, 1, 2 ); +- m_width = new KoUnitDoubleSpinBox( mainWidget, 0.0, 5000.0, 1.0, 10.0, m_part->unit(), 1 ); ++ m_width = new KoBuggyUnitDoubleSpinBox( mainWidget, 0.0, 5000.0, 1.0, 10.0, m_part->unit(), 1 ); + mainLayout->addWidget( m_width, 1, 3 ); + + //Height: (TODO: Set 5000 limit to real Karbon14 limit) + QLabel* hLabel = new QLabel( i18n ( "H:" ), mainWidget ); + mainLayout->addWidget( hLabel, 2, 2 ); +- m_height = new KoUnitDoubleSpinBox( mainWidget, 0.0, 5000.0, 1.0, 10.0, m_part->unit(), 1 ); ++ m_height = new KoBuggyUnitDoubleSpinBox( mainWidget, 0.0, 5000.0, 1.0, 10.0, m_part->unit(), 1 ); + mainLayout->addWidget( m_height, 2, 3 ); + + //TODO: Add Rotation, Shear +Index: karbon/widgets/vselecttoolbar.cc +=================================================================== +--- karbon/widgets/vselecttoolbar.cc (revision 427945) ++++ karbon/widgets/vselecttoolbar.cc (working copy) +@@ -38,24 +38,24 @@ + setCaption( i18n( "Object Properties" ) ); + QLabel *x_label = new QLabel( i18n( "X:" ), this, "kde toolbar widget" ); + insertWidget( 0, x_label->width(), x_label ); +- m_x = new KoUnitDoubleSpinBox( this, 0.0, 1000.0, 0.5 ); ++ m_x = new KoBuggyUnitDoubleSpinBox( this, 0.0, 1000.0, 0.5 ); + connect( m_x, SIGNAL( valueChanged( double ) ), this, SLOT( slotXChanged( double ) ) ); + insertWidget( 1, m_x->width(), m_x ); + QLabel *y_label = new QLabel( i18n( "Y:" ), this, "kde toolbar widget" ); + insertWidget( 2, y_label->width(), y_label ); +- m_y = new KoUnitDoubleSpinBox( this, 0.0, 1000.0, 0.5 ); ++ m_y = new KoBuggyUnitDoubleSpinBox( this, 0.0, 1000.0, 0.5 ); + connect( m_y, SIGNAL( valueChanged( double ) ), this, SLOT( slotYChanged( double ) ) ); + insertWidget( 3, m_y->width(), m_y ); + + insertSeparator( 4 ); + QLabel *w_label = new QLabel( i18n( "Width:" ), this, "kde toolbar widget" ); + insertWidget( 5, w_label->width(), w_label ); +- m_width = new KoUnitDoubleSpinBox( this, 0.0, 1000.0, 0.5 ); ++ m_width = new KoBuggyUnitDoubleSpinBox( this, 0.0, 1000.0, 0.5 ); + connect( m_width, SIGNAL( valueChanged( double ) ), this, SLOT( slotWidthChanged( double ) ) ); + insertWidget( 6, m_width->width(), m_width ); + QLabel *h_label = new QLabel( i18n( "Height:" ), this, "kde toolbar widget" ); + insertWidget( 7, h_label->width(), h_label ); +- m_height = new KoUnitDoubleSpinBox( this, 0.0, 1000.0, 0.5 ); ++ m_height = new KoBuggyUnitDoubleSpinBox( this, 0.0, 1000.0, 0.5 ); + connect( m_height, SIGNAL( valueChanged( double ) ), this, SLOT( slotHeightChanged( double ) ) ); + insertWidget( 8, m_height->width(), m_height ); + +Index: karbon/widgets/vselecttoolbar.h +=================================================================== +--- karbon/widgets/vselecttoolbar.h (revision 427945) ++++ karbon/widgets/vselecttoolbar.h (working copy) +@@ -24,7 +24,7 @@ + + #include <ktoolbar.h> + +-class KoUnitDoubleSpinBox; ++class KoBuggyUnitDoubleSpinBox; + class KarbonView; + + class VSelectToolBar : public KToolBar +@@ -42,10 +42,10 @@ + void slotHeightChanged( double ); + + private: +- KoUnitDoubleSpinBox *m_x; +- KoUnitDoubleSpinBox *m_y; +- KoUnitDoubleSpinBox *m_width; +- KoUnitDoubleSpinBox *m_height; ++ KoBuggyUnitDoubleSpinBox *m_x; ++ KoBuggyUnitDoubleSpinBox *m_y; ++ KoBuggyUnitDoubleSpinBox *m_width; ++ KoBuggyUnitDoubleSpinBox *m_height; + KarbonView *m_view; + }; + diff --git a/editors/calligra/files/patch-filters-kspread-excel-sidewinder-excel.cpp b/editors/calligra/files/patch-filters-kspread-excel-sidewinder-excel.cpp deleted file mode 100644 index 65e60fd83a86..000000000000 --- a/editors/calligra/files/patch-filters-kspread-excel-sidewinder-excel.cpp +++ /dev/null @@ -1,11 +0,0 @@ ---- filters/kspread/excel/sidewinder/excel.cpp.orig Wed Jun 29 02:06:17 2005 -+++ filters/kspread/excel/sidewinder/excel.cpp Wed Jun 29 02:04:06 2005 -@@ -5412,7 +5412,7 @@ - case 10: valueFormat = "0.00%"; break; - case 11: valueFormat = "0.00E+00"; break; - case 12: valueFormat = "#?/?"; break; -- case 13: valueFormat = "#\?\?\/\?\?"; break; -+ case 13: valueFormat = "#\?\?/\?\?"; break; - case 14: valueFormat = "M/D/YY"; break; - case 15: valueFormat = "D-MMM-YY"; break; - case 16: valueFormat = "D-MMM"; break; diff --git a/editors/calligra/files/patch-krita-plugins-cimg-CImg.h b/editors/calligra/files/patch-krita-plugins-cimg-CImg.h deleted file mode 100644 index 9c914acb3d05..000000000000 --- a/editors/calligra/files/patch-krita-plugins-cimg-CImg.h +++ /dev/null @@ -1,11 +0,0 @@ ---- krita/plugins/cimg/CImg.h.orig Tue Jun 28 02:31:30 2005 -+++ krita/plugins/cimg/CImg.h Tue Jun 28 02:32:10 2005 -@@ -5135,7 +5135,7 @@ - if (ny1<0 || ny0>=dimy()) return *this; - if (ny0<0) { nx0-=ny0*(nx1-nx0)/(ny1-ny0); ny0=0; } - if (ny1>=dimy()) { nx1+=(ny1-dimy())*(nx0-nx1)/(ny1-ny0); ny1=dimy()-1;} -- const unsigned int dmax = (unsigned int)cimg::max(std::abs(nx1-nx0),ny1-ny0), whz = width*height*depth; -+ const unsigned int dmax = (unsigned int)cimg::max(std::abs((long int)(nx1-nx0)),(long int)(ny1-ny0)), whz = width*height*depth; - const float px = dmax?(nx1-nx0)/(float)dmax:0, py = dmax?(ny1-ny0)/(float)dmax:0; - float x = (float)nx0, y = (float)ny0; - if (opacity>=1) for (unsigned int t=0; t<=dmax; t++) { diff --git a/editors/calligra/files/patch-kspread-dialogs-kspread_dlg_database.cc b/editors/calligra/files/patch-kspread-dialogs-kspread_dlg_database.cc deleted file mode 100644 index 0f733f0e891f..000000000000 --- a/editors/calligra/files/patch-kspread-dialogs-kspread_dlg_database.cc +++ /dev/null @@ -1,13 +0,0 @@ ---- kspread/dialogs/kspread_dlg_database.cc.orig Tue Jun 28 03:42:22 2005 -+++ kspread/dialogs/kspread_dlg_database.cc Tue Jun 28 03:48:20 2005 -@@ -600,8 +600,8 @@ - // An update command must also be followed by a space, or it would be parsed - // as an identifier. - // For sanity, also check that there is a SELECT -- QRegExp couldModifyDB( "(^|[( \s])(UPDATE|DELETE|INSERT|CREATE) ", false /* cs */ ); -- QRegExp couldQueryDB( "(^|[( \s])(SELECT) ", false /* cs */ ); -+ QRegExp couldModifyDB( "(^|[( \\s])(UPDATE|DELETE|INSERT|CREATE) ", false /* cs */ ); -+ QRegExp couldQueryDB( "(^|[( \\s])(SELECT) ", false /* cs */ ); - - if (couldModifyDB.search( queryStr ) != -1 || couldQueryDB.search ( queryStr ) == -1 ) - { diff --git a/editors/koffice-kde3/Makefile b/editors/koffice-kde3/Makefile index 36889951226f..e85d413c5897 100644 --- a/editors/koffice-kde3/Makefile +++ b/editors/koffice-kde3/Makefile @@ -7,6 +7,7 @@ PORTNAME= koffice PORTVERSION= 1.4.0a +PORTREVISION= 1 PORTEPOCH= 1 CATEGORIES= editors kde MASTER_SITES= ${MASTER_SITE_KDE} diff --git a/editors/koffice-kde3/files/patch-1.4.0_patchset_1.diff b/editors/koffice-kde3/files/patch-1.4.0_patchset_1.diff new file mode 100644 index 000000000000..bf61a1b9ba41 --- /dev/null +++ b/editors/koffice-kde3/files/patch-1.4.0_patchset_1.diff @@ -0,0 +1,5060 @@ +Index: kformula/kformulapart.desktop +=================================================================== +--- kformula/kformulapart.desktop (revision 427945) ++++ kformula/kformulapart.desktop (working copy) +@@ -19,6 +19,7 @@ + Name[pt]=Componente de Fórmulas do KOffice + Name[pt_BR]=Componente de Fórmulas do KOffice + Name[ru]=Компонент формул KOffice ++Name[sl]=Komponenta za enačbe za KOffice + Name[sr]=KOffice-ова компонента за формуле + Name[sr@Latn]=KOffice-ova komponenta za formule + Name[sv]=Koffice-formelkomponent +Index: servicetypes/koplugin.desktop +=================================================================== +--- servicetypes/koplugin.desktop (revision 427945) ++++ servicetypes/koplugin.desktop (working copy) +@@ -22,6 +22,7 @@ + Comment[fi]=KOffice-laajennus + Comment[fo]=KSkrivstovu-ístingur + Comment[fr]=Module externe de KOffice ++Comment[ga]=Breiseán KOffice + Comment[he]=תוסף של KOffice + Comment[hr]=KOffice dodatak + Comment[hu]=KOffice-bővítőmodul +Index: servicetypes/kofficepart.desktop +=================================================================== +--- servicetypes/kofficepart.desktop (revision 427945) ++++ servicetypes/kofficepart.desktop (working copy) +@@ -22,6 +22,7 @@ + Comment[fa]=KOffice اجزای + Comment[fi]=KOffice-komponentti + Comment[fr]=Composant KOffice ++Comment[ga]=Comhpháirt KOffice + Comment[he]=רכיב של KOffice + Comment[hr]=KOffice komponenta + Comment[hu]=KOffice-komponens +Index: servicetypes/kofilter.desktop +=================================================================== +--- servicetypes/kofilter.desktop (revision 427945) ++++ servicetypes/kofilter.desktop (working copy) +@@ -22,6 +22,7 @@ + Comment[fi]=KOffice-suodin + Comment[fo]=KSkrivstovu-filtur + Comment[fr]=Filtre KOffice ++Comment[ga]=Scagaire KOffice + Comment[he]=מסנן של KOffice + Comment[hr]=KOffice filter + Comment[hu]=KOffice-szűrő +Index: kword/kwordpart.desktop +=================================================================== +--- kword/kwordpart.desktop (revision 427945) ++++ kword/kwordpart.desktop (working copy) +@@ -20,6 +20,7 @@ + Name[pt]=Componente de Processamento de Texto do KOffice + Name[pt_BR]=Componente de Processamento de Texto do KOffice + Name[ru]=Компонент текстового редактора KOffice ++Name[sl]=Komponenta za obdelovanje besedil za KOffice + Name[sr]=KOffice-ова компонента за обраду текста + Name[sr@Latn]=KOffice-ova komponenta za obradu teksta + Name[sv]=Koffice-ordbehandlingskomponent +Index: kword/kwmailmerge.desktop +=================================================================== +--- kword/kwmailmerge.desktop (revision 427945) ++++ kword/kwmailmerge.desktop (working copy) +@@ -17,6 +17,7 @@ + Comment[et]=KWordi kirjakoosteplugin + Comment[fi]=KWord-postituslaajennus + Comment[fr]=Module fusion de courrier pour KWord ++Comment[ga]=Breiseán postchumaisc KWord + Comment[he]=תוסף מיזוג דואר ל־KWord + Comment[hr]=KWord dodatak za mailmerge + Comment[hu]=KWord körlevél-bővítőmodul +Index: kword/configfootnotedia.h +=================================================================== +--- kword/configfootnotedia.h (revision 427945) ++++ kword/configfootnotedia.h (working copy) +@@ -28,7 +28,7 @@ + class QRadioButton; + class KIntNumInput; + class QComboBox; +-class KoUnitDoubleSpinBox; ++class KoBuggyUnitDoubleSpinBox; + + class KWConfigFootNoteDia : public KDialogBase + { +@@ -47,7 +47,7 @@ + QRadioButton *rbPosCentered; + QRadioButton *rbPosRight; + KIntNumInput *spLength; +- KoUnitDoubleSpinBox *spWidth; ++ KoBuggyUnitDoubleSpinBox *spWidth; + QComboBox *m_cbLineType; + protected slots: + virtual void slotOk(); +Index: kword/kwconfig.cc +=================================================================== +--- kword/kwconfig.cc (revision 427945) ++++ kword/kwconfig.cc (working copy) +@@ -301,7 +301,7 @@ + + QHBox* hbGridX = new QHBox( gbInterfaceGroup ); + QLabel* labelGridX = new QLabel( i18n("&Horizontal grid size:"), hbGridX ); +- gridX=new KoUnitDoubleSpinBox( hbGridX, ++ gridX=new KoBuggyUnitDoubleSpinBox( hbGridX, + 0.1, + 50, + 0.1, +@@ -313,7 +313,7 @@ + + QHBox* hbGridY = new QHBox( gbInterfaceGroup ); + QLabel* labelGridY = new QLabel( i18n("&Vertical grid size:"), hbGridY ); +- gridY=new KoUnitDoubleSpinBox( hbGridY, ++ gridY=new KoBuggyUnitDoubleSpinBox( hbGridY, + 0.1, + 50, + 0.1, +@@ -326,7 +326,7 @@ + + QHBox* hbIndent = new QHBox( gbInterfaceGroup ); + QLabel* labelIdent = new QLabel( i18n("&Paragraph indent by toolbar buttons:"), hbIndent ); +- indent = new KoUnitDoubleSpinBox( hbIndent, ++ indent = new KoBuggyUnitDoubleSpinBox( hbIndent, + 0.1, + 50, + 0.1, +@@ -662,7 +662,7 @@ + + QHBox* hbColumnSpacing = new QHBox( gbDocumentDefaults ); + QLabel* columnSpacingLabel = new QLabel( i18n("Default column spacing:"), hbColumnSpacing ); +- m_columnSpacing = new KoUnitDoubleSpinBox( hbColumnSpacing, ++ m_columnSpacing = new KoBuggyUnitDoubleSpinBox( hbColumnSpacing, + 0.1, + 50, + 0.1, +@@ -764,7 +764,7 @@ + + QHBox* hbTabStop = new QHBox( gbDocumentSettings ); + tabStop = new QLabel(i18n("Tab stop (%1):").arg(doc->unitName()), hbTabStop); +- m_tabStopWidth = new KoUnitDoubleSpinBox( hbTabStop, ++ m_tabStopWidth = new KoBuggyUnitDoubleSpinBox( hbTabStop, + MM_TO_POINT(2), + doc->ptPaperWidth(), + 0.1, +Index: kword/framedia.cc +=================================================================== +--- kword/framedia.cc (revision 427945) ++++ kword/framedia.cc (working copy) +@@ -956,7 +956,7 @@ + lx->resize( lx->sizeHint() ); + pGrid->addWidget( lx, 1, 0 ); + +- sx = new KoUnitDoubleSpinBox( grp1, 0, 9999, 1, 0.0, doc->unit() ); ++ sx = new KoBuggyUnitDoubleSpinBox( grp1, 0, 9999, 1, 0.0, doc->unit() ); + + sx->resize( sx->sizeHint() ); + pGrid->addWidget( sx, 1, 1 ); +@@ -965,7 +965,7 @@ + ly->resize( ly->sizeHint() ); + pGrid->addWidget( ly, 1, 2 ); + +- sy = new KoUnitDoubleSpinBox( grp1, 0, 9999, 1, 0.0, doc->unit() ); ++ sy = new KoBuggyUnitDoubleSpinBox( grp1, 0, 9999, 1, 0.0, doc->unit() ); + sy->resize( sy->sizeHint() ); + pGrid->addWidget( sy, 1, 3 ); + +@@ -973,7 +973,7 @@ + lw->resize( lw->sizeHint() ); + pGrid->addWidget( lw, 2, 0 ); + +- sw = new KoUnitDoubleSpinBox( grp1, 0, 9999, 1, 0.0, doc->unit() ); ++ sw = new KoBuggyUnitDoubleSpinBox( grp1, 0, 9999, 1, 0.0, doc->unit() ); + + sw->resize( sw->sizeHint() ); + connect( sw, SIGNAL(valueChanged(double)), +@@ -985,7 +985,7 @@ + lh->resize( lh->sizeHint() ); + pGrid->addWidget( lh, 2, 2 ); + +- sh = new KoUnitDoubleSpinBox( grp1, 0, 9999, 1, 0.0, doc->unit() ); ++ sh = new KoBuggyUnitDoubleSpinBox( grp1, 0, 9999, 1, 0.0, doc->unit() ); + connect( sh, SIGNAL(valueChanged(double)), + this, SLOT(slotUpdateWidthForHeight(double)) ); + +@@ -1095,7 +1095,7 @@ + + f=allFrames.next(); + } +- // TODO port to KoUnitDoubleSpinBox ++ // TODO port to KoBuggyUnitDoubleSpinBox + // and TODO show a special value when frames have a different width/height + if ( sw->isEnabled() ) + sw->setValue( KoUnit::toUserValue( commonWidth, doc->unit() ) ); +@@ -2103,7 +2103,7 @@ + //lml->resize( lml->sizeHint() ); + mGrid->addWidget( lml, 2, 0 ); + +- m_inputLeft = new KoUnitDoubleSpinBox( grp2, 0, 9999, 1, 0.0, doc->unit() ); ++ m_inputLeft = new KoBuggyUnitDoubleSpinBox( grp2, 0, 9999, 1, 0.0, doc->unit() ); + + mGrid->addWidget( m_inputLeft, 2, 1 ); + +@@ -2111,7 +2111,7 @@ + //lmt->resize( lmt->sizeHint() ); + mGrid->addWidget( lmt, 2, 2 ); + +- m_inputTop = new /*KDoubleNumInput*/KoUnitDoubleSpinBox( grp2, 0, 9999, 1, 0.0, doc->unit() ); ++ m_inputTop = new /*KDoubleNumInput*/KoBuggyUnitDoubleSpinBox( grp2, 0, 9999, 1, 0.0, doc->unit() ); + + //m_inputTop->resize( m_inputTop->sizeHint() ); + +@@ -2121,7 +2121,7 @@ + //lmr->resize( lmr->sizeHint() ); + mGrid->addWidget( lmr, 3, 0 ); + +- m_inputRight = new KoUnitDoubleSpinBox( grp2, 0, 9999, 1, 0.0, doc->unit() ); ++ m_inputRight = new KoBuggyUnitDoubleSpinBox( grp2, 0, 9999, 1, 0.0, doc->unit() ); + + //m_inputRight->resize( m_inputRight->sizeHint() ); + mGrid->addWidget( m_inputRight, 3, 1 ); +@@ -2130,7 +2130,7 @@ + //lmb->resize( lmb->sizeHint() ); + mGrid->addWidget( lmb, 3, 2 ); + +- m_inputBottom = new KoUnitDoubleSpinBox( grp2, 0, 9999, 1, 0.0, doc->unit() ); ++ m_inputBottom = new KoBuggyUnitDoubleSpinBox( grp2, 0, 9999, 1, 0.0, doc->unit() ); + + //m_inputBottom->resize( m_inputBottom->sizeHint() ); + mGrid->addWidget( m_inputBottom, 3, 3 ); +Index: kword/resizetabledia.cc +=================================================================== +--- kword/resizetabledia.cc (revision 427945) ++++ kword/resizetabledia.cc (working copy) +@@ -77,7 +77,7 @@ + else + value->setValue( type == ROW ? (rowSelected+1) : (colSelected+1) ); + rc = new QLabel( type == ROW ? i18n( "Height (%1):" ).arg(doc->unitName()) : i18n( "Width (%1):" ).arg(doc->unitName()), page ); +- position= new KoUnitDoubleSpinBox( page, 0.01, table->anchorFrameset()->isFloating() ? table->anchorFrameset()->frame(0)->width(): 9999, 1, 0.0, doc->unit(), doc->unit() ); ++ position= new KoBuggyUnitDoubleSpinBox( page, 0.01, table->anchorFrameset()->isFloating() ? table->anchorFrameset()->frame(0)->width(): 9999, 1, 0.0, doc->unit(), doc->unit() ); + slotValueChanged( value->value()); + connect( value, SIGNAL( valueChanged ( int )), this, SLOT( slotValueChanged( int ))); + +Index: kword/mailmerge/sql/kwserialletter_qtsqldb.desktop +=================================================================== +--- kword/mailmerge/sql/kwserialletter_qtsqldb.desktop (revision 427945) ++++ kword/mailmerge/sql/kwserialletter_qtsqldb.desktop (working copy) +@@ -4,6 +4,7 @@ + ServiceTypes=KWord/MailMergePlugin + + Name=Qt-SQL Source (single table) ++Name[cy]=Ffynhonell Qt-SQL (tabl sengl) + Name[da]=Qt-SQL-kilde (enkelt tabel) + Name[de]=Qt-SQL (Einzeltabelle) + Name[el]=Qt-SQL πηγή (μονός πίνακας) +Index: kword/mailmerge/kspread/kwmailmerge_kspread.desktop +=================================================================== +--- kword/mailmerge/kspread/kwmailmerge_kspread.desktop (revision 427945) ++++ kword/mailmerge/kspread/kwmailmerge_kspread.desktop (working copy) +@@ -22,6 +22,7 @@ + Name[pt]=Fonte de Tabela do KSpread + Name[pt_BR]=Fonte de Tabela do KSpread + Name[ru]=Источник таблиц KSpread ++Name[sl]=Vir tabel KSpread + Name[sr]=KSpread-ов извор табеле + Name[sr@Latn]=KSpread-ov izvor tabele + Name[sv]=Kspread-tabellkällfil +Index: kword/framedia.h +=================================================================== +--- kword/framedia.h (revision 427945) ++++ kword/framedia.h (working copy) +@@ -81,7 +81,7 @@ + void slotValueChanged( double ); + + private: +- KoUnitDoubleSpinBox *m_inputLeft, *m_inputRight, *m_inputTop, *m_inputBottom; ++ KoBuggyUnitDoubleSpinBox *m_inputLeft, *m_inputRight, *m_inputTop, *m_inputBottom; + QCheckBox *m_synchronize; + KWDocument *doc; + bool m_changed; +@@ -168,7 +168,7 @@ + QWidget *tab4; + QGroupBox *grp1; + QLabel *lx, *ly, *lw, *lh; +- KoUnitDoubleSpinBox *sx, *sy, *sw, *sh; ++ KoBuggyUnitDoubleSpinBox *sx, *sy, *sw, *sh; + KWFourSideConfigWidget* m_paddingConfigWidget; + QCheckBox *floating; + QCheckBox *protectSize; +Index: kword/kwconfig.h +=================================================================== +--- kword/kwconfig.h (revision 427945) ++++ kword/kwconfig.h (working copy) +@@ -29,7 +29,7 @@ + class KWView; + class QCheckBox; + class KIntNumInput; +-class KoUnitDoubleSpinBox; ++class KoBuggyUnitDoubleSpinBox; + class KConfig; + class QComboBox; + class KIntNumInput; +@@ -69,8 +69,8 @@ + KWView* m_pView; + KConfig* config; + QComboBox *m_unitCombo; +- KoUnitDoubleSpinBox* gridX,*gridY; +- KoUnitDoubleSpinBox* indent; ++ KoBuggyUnitDoubleSpinBox* gridX,*gridY; ++ KoBuggyUnitDoubleSpinBox* indent; + KIntNumInput* recentFiles; + QCheckBox *showStatusBar, *showScrollBar, *pgUpDownMovesCaret; + int oldNbRecentFiles; +@@ -114,7 +114,7 @@ + QLabel *fontName; + QLabel *tabStop; + +- KoUnitDoubleSpinBox* m_columnSpacing; ++ KoBuggyUnitDoubleSpinBox* m_columnSpacing; + + KIntNumInput* autoSave; + int oldAutoSaveValue; +@@ -123,7 +123,7 @@ + int m_oldStartingPage; + bool m_oldBackupFile; + KIntNumInput* m_variableNumberOffset; +- KoUnitDoubleSpinBox *m_tabStopWidth; ++ KoBuggyUnitDoubleSpinBox *m_tabStopWidth; + QCheckBox *m_cursorInProtectedArea; + QCheckBox *m_createBackupFile; + // QCheckBox *m_directInsertCursor; +Index: kword/configfootnotedia.cc +=================================================================== +--- kword/configfootnotedia.cc (revision 427945) ++++ kword/configfootnotedia.cc (working copy) +@@ -106,7 +106,7 @@ + + QGridLayout *layout = new QGridLayout( 0, 1, 1, 0, 6); + +- spWidth = new KoUnitDoubleSpinBox(page, 0, 5, 0.5, 1.0, m_doc->unit(), 1); ++ spWidth = new KoBuggyUnitDoubleSpinBox(page, 0, 5, 0.5, 1.0, m_doc->unit(), 1); + spWidth->setValue( m_doc->footNoteSeparatorLineWidth()); + layout->addWidget( spWidth, 1, 1 ); + +Index: kword/templates/DTP/SimpleLayout.desktop +=================================================================== +--- kword/templates/DTP/SimpleLayout.desktop (revision 427945) ++++ kword/templates/DTP/SimpleLayout.desktop (working copy) +@@ -21,6 +21,7 @@ + Name[fa]=نمونه طرح بندی + Name[fi]=Yksinkertainen taittomalli + Name[fr]=Mise en page simple ++Name[ga]=Leagan Amach Simplí + Name[he]=פריסה פשוטה + Name[hr]=Jednostavni raspored + Name[hu]=Egyszerű elrendezés +Index: kword/templates/DTP/Empty.desktop +=================================================================== +--- kword/templates/DTP/Empty.desktop (revision 427945) ++++ kword/templates/DTP/Empty.desktop (working copy) +@@ -17,6 +17,7 @@ + Name[fa]=صفحه خالی + Name[fi]=Tyhjä sivu + Name[fr]=Page vide ++Name[ga]=Leathanach Folamh + Name[he]=דף ריק + Name[hr]=Prazna stranica + Name[hu]=Üres oldal +Index: kword/templates/DTP/fax.desktop +=================================================================== +--- kword/templates/DTP/fax.desktop (revision 427945) ++++ kword/templates/DTP/fax.desktop (working copy) +@@ -20,6 +20,7 @@ + Name[fa]=نمونه دورنگار + Name[fi]=Faksipohja + Name[fr]=Modèle de fax ++Name[ga]=Teimpléad Facs + Name[he]=תבנית פקס + Name[hr]=Fax predložak + Name[hu]=Faxsablon +@@ -63,6 +64,7 @@ + Comment[et]=Faks päisega + Comment[fi]=Faksiasiakirja otsikolla + Comment[fr]=Document de fax. avec en-tête ++Comment[ga]=Cáipéis fhacs, le ceanntásc + Comment[he]=מסמך פקס עם כותרת + Comment[hr]=Faks dokument, sa zaglavljem + Comment[hu]=Fax dokumentum (fejléccel) +Index: kword/templates/Wordprocessing/TwoColumns.desktop +=================================================================== +--- kword/templates/Wordprocessing/TwoColumns.desktop (revision 427945) ++++ kword/templates/Wordprocessing/TwoColumns.desktop (working copy) +@@ -22,6 +22,7 @@ + Name[fi]=Kaksi palstaa + Name[fo]=Tveir teigar + Name[fr]=Deux colonnes ++Name[ga]=Dhá Cholún + Name[he]=שני טורים + Name[hr]=Dva stupca + Name[hu]=Kétoszlopos +Index: kword/resizetabledia.h +=================================================================== +--- kword/resizetabledia.h (revision 427945) ++++ kword/resizetabledia.h (working copy) +@@ -31,7 +31,7 @@ + class QRadioButton; + class QLabel; + class QSpinBox; +-class KoUnitDoubleSpinBox; ++class KoBuggyUnitDoubleSpinBox; + + class KWResizeTableDia : public KDialogBase + { +@@ -48,7 +48,7 @@ + KWDocument *doc; + ResizeType type; + KWCanvas *canvas; +- KoUnitDoubleSpinBox *position; ++ KoBuggyUnitDoubleSpinBox *position; + double resetValue; + protected slots: + virtual void slotOk(); +Index: kexi/plugins/forms/kexilabel.cpp +=================================================================== +--- kexi/plugins/forms/kexilabel.cpp (revision 427945) ++++ kexi/plugins/forms/kexilabel.cpp (working copy) +@@ -33,6 +33,20 @@ + #define SHADOW_DIAGONAL_FACTOR 1.0 + #define SHADOW_THICKNESS 1 + ++class KexiLabelPrivate : public QLabel { ++ friend class KexiLabel; ++ public: ++ KexiLabelPrivate( KexiLabel* ); ++ virtual ~KexiLabelPrivate(); ++ private: ++ QImage makeShadow( const QImage& textImage, const QColor &bgColor, const QRect& boundingRect ); ++ QRect getBounding( const QImage &image, const QRect& startRect ); ++// double defaultDecay( QImage& source, int i, int j ); ++ KPixmap getShadowPixmap(); ++ ++ QRect p_shadowRect; ++}; ++ + KexiLabelPrivate::KexiLabelPrivate( KexiLabel* parent ) + : QLabel( parent ) + { +@@ -404,6 +418,40 @@ + QLabel::paintEvent( e ); + } + ++void KexiLabel::fontChange( const QFont& font ) { ++ p_pixmapDirty = true; ++ p_privateLabel->setFont( font ); ++ QLabel::fontChange( font ); ++} ++ ++void KexiLabel::styleChange( QStyle& style ) { ++ p_pixmapDirty = true; ++ QLabel::styleChange( style ); ++} ++ ++void KexiLabel::enabledChange( bool enabled ) { ++ p_pixmapDirty = true; ++ p_privateLabel->setEnabled( enabled ); ++ QLabel::enabledChange( enabled ); ++} ++ ++void KexiLabel::paletteChange( const QPalette& pal ) { ++ p_pixmapDirty = true; ++ p_privateLabel->setPalette( pal ); ++ QLabel::paletteChange( pal ); ++} ++ ++void KexiLabel::frameChanged() { ++ p_pixmapDirty = true; ++ p_privateLabel->frameChanged(); ++ QFrame::frameChanged(); ++} ++ ++void KexiLabel::showEvent( QShowEvent* e ) { ++ p_pixmapDirty = true; ++ QLabel::showEvent( e ); ++} ++ + void KexiLabel::setValueInternal( const QVariant& add, bool removeOld ) { + if (removeOld) + setText(add.toString()); +Index: kexi/plugins/forms/kexilabel.h +=================================================================== +--- kexi/plugins/forms/kexilabel.h (revision 427945) ++++ kexi/plugins/forms/kexilabel.h (working copy) +@@ -32,20 +32,10 @@ + class QTimer; + class KexiLabel; + +-class KexiLabelPrivate : public QLabel { +- friend class KexiLabel; +- public: +- KexiLabelPrivate( KexiLabel* ); +- virtual ~KexiLabelPrivate(); +- private: +- QImage makeShadow( const QImage& textImage, const QColor &bgColor, const QRect& boundingRect ); +- QRect getBounding( const QImage &image, const QRect& startRect ); +-// double defaultDecay( QImage& source, int i, int j ); +- KPixmap getShadowPixmap(); ++class KexiLabelPrivate; + +- QRect p_shadowRect; +-}; + ++ + /** + An extended, data-aware, read-only text label. + It's text may have a drop-shadow. +@@ -139,40 +129,14 @@ + */ + virtual void setValueInternal( const QVariant& add, bool removeOld ); + +- virtual void fontChange( const QFont& font ) { +- p_pixmapDirty = true; +- p_privateLabel->setFont( font ); +- QLabel::fontChange( font ); +- } ++ virtual void fontChange( const QFont& font ); ++ virtual void styleChange( QStyle& style ); ++ virtual void enabledChange( bool enabled ); + +- virtual void styleChange( QStyle& style ) { +- p_pixmapDirty = true; +- QLabel::styleChange( style ); +- } ++ virtual void paletteChange( const QPalette& pal ); ++ virtual void frameChanged(); ++ virtual void showEvent( QShowEvent* e ); + +- virtual void enabledChange( bool enabled ) { +- p_pixmapDirty = true; +- p_privateLabel->setEnabled( enabled ); +- QLabel::enabledChange( enabled ); +- } +- +- virtual void paletteChange( const QPalette& pal ) { +- p_pixmapDirty = true; +- p_privateLabel->setPalette( pal ); +- QLabel::paletteChange( pal ); +- } +- +- virtual void frameChanged() { +- p_pixmapDirty = true; +- p_privateLabel->frameChanged(); +- QFrame::frameChanged(); +- } +- +- virtual void showEvent( QShowEvent* e ) { +- p_pixmapDirty = true; +- QLabel::showEvent( e ); +- } +- + private: + void updatePixmapLater(); + +Index: kexi/plugins/kugar/kexikugarhandler.desktop +=================================================================== +--- kexi/plugins/kugar/kexikugarhandler.desktop (revision 427945) ++++ kexi/plugins/kugar/kexikugarhandler.desktop (working copy) +@@ -60,7 +60,7 @@ + Comment[nn]=Integrasjon av Kugar-basert rapportgenerering + Comment[pt]=Integração da geração de relatórios do Kugar + Comment[pt_BR]=Integração do Kugar baseada na geração de relatório +-Comment[ru]=Интеграция с Kugar для построения отчётов ++Comment[ru]=Отчёт посредством Kugar + Comment[sk]=Integrácia generovaných správ založených na Kugar + Comment[sl]=Integracija ustvarjanja poročil na osnovi Kugarja + Comment[sr]=Интеграција прављења извештаја заснованог на Kugar-у +Index: kexi/plugins/reports/kexireportfactory.desktop +=================================================================== +--- kexi/plugins/reports/kexireportfactory.desktop (revision 427945) ++++ kexi/plugins/reports/kexireportfactory.desktop (working copy) +@@ -19,6 +19,7 @@ + Name[pt]=Elementos de Relatório do Kexi + Name[pt_BR]=Widgets de Relatório do Kexi + Name[ru]=Элементы управления для отчётов Kexi ++Name[sl]=Gradniki za poročila za Kexi + Name[sr]=Kexi-јеве контроле за извештаје + Name[sr@Latn]=Kexi-jeve kontrole za izveštaje + Name[sv]=Kexi-rapportkomponenter +Index: kexi/kexipart.desktop +=================================================================== +--- kexi/kexipart.desktop (revision 427945) ++++ kexi/kexipart.desktop (working copy) +@@ -19,6 +19,7 @@ + Name[pt]=Componente de Bases de Dados do KOffice + Name[pt_BR]=Componente de Banco de Dados do KOffice + Name[ru]=Компонент баз данных KOffice ++Name[sl]=Komponenta za zbirke podatkov za KOffice + Name[sr]=KOffice-ова компонента за базе података + Name[sr@Latn]=KOffice-ova komponenta za baze podataka + Name[sv]=Koffice-databaskomponent +Index: kexi/filters/import/csv/kexicsvimport.desktop +=================================================================== +--- kexi/filters/import/csv/kexicsvimport.desktop (revision 427945) ++++ kexi/filters/import/csv/kexicsvimport.desktop (working copy) +@@ -42,7 +42,7 @@ + Comment[pl]=Import pliku CVS... + Comment[pt]=Importar um Ficheiro CSV... + Comment[pt_BR]=Importar Arquivo CSV... +-Comment[ru]=Импорт данных из CSV... ++Comment[ru]=Импорт из CSV... + Comment[sk]=Import súborov CSV... + Comment[sl]=Uvoz datoteke CSV ... + Comment[sr]=Увози се CSV фајл... +Index: kexi/filters/import/kspread_chain/kexikspreadimport.desktop +=================================================================== +--- kexi/filters/import/kspread_chain/kexikspreadimport.desktop (revision 427945) ++++ kexi/filters/import/kspread_chain/kexikspreadimport.desktop (working copy) +@@ -38,7 +38,7 @@ + Comment[nn]=Importer KSpread-lesbar fil ... + Comment[pt]=Importar um ficheiro KSpread... + Comment[pt_BR]=Importar arquivo legível do KSpread... +-Comment[ru]=Импорт в KSpread... ++Comment[ru]=Импорт данных из KSpread... + Comment[sk]=Import súboru podporovaného KSpread... + Comment[sl]=Uvoz datoteke za KSpread ... + Comment[sr]=Увози се фајл који се може читати KSpread-ом... +Index: kexi/data/x-kexiproject-sqlite2.desktop +=================================================================== +--- kexi/data/x-kexiproject-sqlite2.desktop (revision 427945) ++++ kexi/data/x-kexiproject-sqlite2.desktop (working copy) +@@ -21,6 +21,7 @@ + Comment[pt]=Projecto do Kexi em Ficheiro de Base de Dados + Comment[pt_BR]=Projeto Baseado em Arquivo de Banco de Dados do Kexi + Comment[ru]=Проект Kexi с хранилищем данных в файлах ++Comment[sl]=Na datotekah zasnovan projekt zbirke podatkov Kexi + Comment[sr]=Kexi-јев пројекат базе података заснован на фајлу + Comment[sr@Latn]=Kexi-jev projekat baze podataka zasnovan na fajlu + Comment[sv]=Kexi filbaserat databasprojekt +Index: kexi/data/x-kexiproject-sqlite3.desktop +=================================================================== +--- kexi/data/x-kexiproject-sqlite3.desktop (revision 427945) ++++ kexi/data/x-kexiproject-sqlite3.desktop (working copy) +@@ -21,6 +21,7 @@ + Comment[pt]=Projecto do Kexi em Ficheiro de Base de Dados + Comment[pt_BR]=Projeto Baseado em Arquivo de Banco de Dados do Kexi + Comment[ru]=Проект Kexi с хранилищем данных в файлах ++Comment[sl]=Na datotekah zasnovan projekt zbirke podatkov Kexi + Comment[sr]=Kexi-јев пројекат базе података заснован на фајлу + Comment[sr@Latn]=Kexi-jev projekat baze podataka zasnovan na fajlu + Comment[sv]=Kexi filbaserat databasprojekt +Index: kexi/data/x-kexiproject-sqlite.desktop +=================================================================== +--- kexi/data/x-kexiproject-sqlite.desktop (revision 427945) ++++ kexi/data/x-kexiproject-sqlite.desktop (working copy) +@@ -22,6 +22,7 @@ + Comment[pt]=Projecto do Kexi em Ficheiro de Base de Dados + Comment[pt_BR]=Projeto Baseado em Arquivo de Banco de Dados do Kexi + Comment[ru]=Проект Kexi с хранилищем данных в файлах ++Comment[sl]=Na datotekah zasnovan projekt zbirke podatkov Kexi + Comment[sr]=Kexi-јев пројекат базе података заснован на фајлу + Comment[sr@Latn]=Kexi-jev projekat baze podataka zasnovan na fajlu + Comment[sv]=Kexi filbaserat databasprojekt +Index: kexi/data/kde32compat/x-sqlite2.desktop +=================================================================== +--- kexi/data/kde32compat/x-sqlite2.desktop (revision 427945) ++++ kexi/data/kde32compat/x-sqlite2.desktop (working copy) +@@ -21,6 +21,7 @@ + Comment[pt]=Ficheiro de Base de Dados do SQLite2 + Comment[pt_BR]=Ficheiro de Base de Dados do SQLite2 + Comment[ru]=База данных SQLite2 ++Comment[sl]=Datoteka zbirke podatkov SQLite2 + Comment[sr]=Фајл базе података SQLite2 + Comment[sr@Latn]=Fajl baze podataka SQLite2 + Comment[sv]=SQLite2-databasfil +Index: kexi/data/kde32compat/x-sqlite3.desktop +=================================================================== +--- kexi/data/kde32compat/x-sqlite3.desktop (revision 427945) ++++ kexi/data/kde32compat/x-sqlite3.desktop (working copy) +@@ -20,6 +20,7 @@ + Comment[pt]=Ficheiro de Base de Dados do SQLite3 + Comment[pt_BR]=Ficheiro de Base de Dados do SQLite3 + Comment[ru]=База данных SQLite3 ++Comment[sl]=Datoteka zbirke podatkov SQLite3 + Comment[sr]=Фајл базе података SQLite3 + Comment[sr@Latn]=Fajl baze podataka SQLite3 + Comment[sv]=SQLite3-databasfil +Index: kexi/data/kexiscripthandler.desktop +=================================================================== +--- kexi/data/kexiscripthandler.desktop (revision 427945) ++++ kexi/data/kexiscripthandler.desktop (working copy) +@@ -5,6 +5,7 @@ + + GenericName=Scripts + GenericName[br]=Urzhiaouegoù ++GenericName[cy]=Sgriptiau + GenericName[da]=Scripter + GenericName[de]=Skripte + GenericName[el]=Σενάρια +@@ -27,6 +28,7 @@ + GenericName[zh_CN]=脚本 + Name=Scripts + Name[br]=Urzhiaouegoù ++Name[cy]=Sgriptiau + Name[da]=Scripter + Name[de]=Skripte + Name[el]=Σενάρια +Index: kexi/formeditor/kdevelop_plugin/kformdesigner_kdev_part.desktop +=================================================================== +--- kexi/formeditor/kdevelop_plugin/kformdesigner_kdev_part.desktop (revision 427945) ++++ kexi/formeditor/kdevelop_plugin/kformdesigner_kdev_part.desktop (working copy) +@@ -17,6 +17,7 @@ + Name[pt]='Plugin' para o KDevelop de Desenho de Formulários + Name[pt_BR]=Plugin do Desenhista de Formulário do KDevelop + Name[ru]=Модуль форм KDevelop ++Name[sl]=Vstavek za oblikovanje obrazcev za KDevelop + Name[sr]=Прикључак дизајнера форми за KDevelop + Name[sr@Latn]=Priključak dizajnera formi za KDevelop + Name[sv]=KDevelop insticksprogram för formulärkonstruktion +Index: tools/thumbnail/kofficethumbnail.desktop +=================================================================== +--- tools/thumbnail/kofficethumbnail.desktop (revision 427945) ++++ tools/thumbnail/kofficethumbnail.desktop (working copy) +@@ -20,6 +20,7 @@ + Name[fi]=KOffice-tiedostot + Name[fo]=KSkrivstovu-fílir + Name[fr]=Fichiers KOffice ++Name[ga]=Comhaid KOffice + Name[he]=קבצי KOffice + Name[hr]=KOffice datoteke + Name[hu]=KOffice-fájlok +Index: tools/kfile-plugins/koffice/kfile_koffice.desktop +=================================================================== +--- tools/kfile-plugins/koffice/kfile_koffice.desktop (revision 427945) ++++ tools/kfile-plugins/koffice/kfile_koffice.desktop (working copy) +@@ -5,6 +5,7 @@ + Name[af]=Koffice Inligting + Name[ar]=معلومات KOffice + Name[bg]=Информация за KOffice ++Name[br]=Titouroù diwar-benn KOffice + Name[ca]=Informació KOffice + Name[cs]=KOffice info + Name[cy]=Gwybodaeth KOffice +@@ -18,6 +19,7 @@ + Name[fi]=KOffice tiedot + Name[fo]=KSkrivstovu-upplýsingar + Name[fr]=Informations sur KOffice ++Name[ga]=Eolas faoi KOffice + Name[he]=מידע KOffice + Name[hu]=KOffice-információ + Name[it]=Informazioni KOffice +@@ -32,7 +34,7 @@ + Name[pl]=Dane koffice + Name[pt]=Informação do KOffice + Name[pt_BR]=Informações do KOffice +-Name[ru]=Информация о KOffice ++Name[ru]=Информация KOffice + Name[se]=KOffice-dieđut + Name[sk]=Informácie o KOffice + Name[sl]=Informacije o KOffice +Index: tools/kfile-plugins/ooo/kfile_ooo.desktop +=================================================================== +--- tools/kfile-plugins/ooo/kfile_ooo.desktop (revision 427945) ++++ tools/kfile-plugins/ooo/kfile_ooo.desktop (working copy) +@@ -13,6 +13,7 @@ + Name[et]=OpenOffice.org-i info + Name[fi]=KOffice tiedot + Name[fr]=Informations sur OpenOffice.org ++Name[ga]=Eolas faoi OpenOffice.org + Name[he]=מידע OpenOffice.org + Name[hu]=OpenOffice.org-információ + Name[it]=Informazioni OpenOffice.org +@@ -23,7 +24,7 @@ + Name[pl]=Informacja OpenOffice.org + Name[pt]=Informação do OpenOffice.org + Name[pt_BR]=Informações do OpenOffice.org +-Name[ru]=Информация об OpenOffice.org ++Name[ru]=Информация OpenOffice.org + Name[se]=OpenOffice.org-dieđut + Name[sk]=Informácie o OpenOffice.org + Name[sl]=Informacije o OpenOffice.org +Index: lib/kofficecore/koApplication.cc +=================================================================== +--- lib/kofficecore/koApplication.cc (revision 427945) ++++ lib/kofficecore/koApplication.cc (working copy) +@@ -149,7 +149,10 @@ + shell->setRootDocument( doc ); + } + else ++ { ++ delete doc; + return false; ++ } + + QObject::disconnect(doc, SIGNAL(sigProgress(int)), shell, SLOT(slotProgress(int))); + } else { +Index: lib/kofficecore/koMainWindow.cc +=================================================================== +--- lib/kofficecore/koMainWindow.cc (revision 427945) ++++ lib/kofficecore/koMainWindow.cc (working copy) +@@ -1033,6 +1033,13 @@ + if ( !newdoc->initDoc( (KoDocument::InitDocFlags)initDocFlags, this ) ) + { + delete newdoc; ++ // See cancelQuits() in KoTemplateChooseDia. ++ // The quit() must be done here so that the KoDocument got deleted already. ++ bool onlyDoc = !KoDocument::documentList() || KoDocument::documentList()->isEmpty(); ++ bool onlyMainWindow = !KMainWindow::memberList || KMainWindow::memberList->count() <= 1; ++ if ( onlyDoc && onlyMainWindow && kapp->instanceName() != "koshell" ) { ++ kapp->quit(); ++ } + return; + } + disconnect(newdoc, SIGNAL(sigProgress(int)), this, SLOT(slotProgress(int))); +Index: lib/kofficecore/koDocument.cc +=================================================================== +--- lib/kofficecore/koDocument.cc (revision 427945) ++++ lib/kofficecore/koDocument.cc (working copy) +@@ -890,6 +890,9 @@ + kdDebug(30003)<<k_funcinfo<<" external (don't save) url:" << childDoc->url().url()<<endl; + path = childDoc->url().url(); + } ++ // OOo uses a trailing slash for the path to embedded objects (== directories) ++ if ( !path.endsWith( "/" ) ) ++ path += '/'; + manifestWriter->addManifestEntry( path, childDoc->nativeOasisMimeType() ); + } + } +@@ -1793,7 +1796,9 @@ + //if ( !oasisStore.loadAndParse( "tar:/META-INF/manifest.xml", manifestDoc, d->lastErrorMessage ) ) + // return false; + +- (void)oasisStore.loadAndParse( "settings.xml", settingsDoc, d->lastErrorMessage ); ++ if ( store->hasFile( "settings.xml" ) ) { ++ (void)oasisStore.loadAndParse( "settings.xml", settingsDoc, d->lastErrorMessage ); ++ } + if ( !loadOasis( contentDoc, oasisStyles, settingsDoc, store ) ) + return false; + +@@ -1920,9 +1925,12 @@ + KoDocument *doc = it.current()->document(); + if ( doc ) + { +- if ( doc->isStoredExtern() ) //###TODO: Handle non-native mimetype docs ++ bool foo = doc->isStoredExtern(); ++ kdDebug(36001) << "========== isStoredExtern() returned " ++ << foo << " ==========" << endl; ++ ++ if ( foo ) //###TODO: Handle non-native mimetype docs + { +- if ( doc->isModified() ) + { + kdDebug(30003)<<k_funcinfo<<" found modified child: "<<doc->url().url()<<" extern="<<doc->isStoredExtern()<<endl; + if ( doc->queryCloseDia() == KMessageBox::Cancel ) +Index: lib/kofficecore/koDocumentChild.cc +=================================================================== +--- lib/kofficecore/koDocumentChild.cc (revision 427945) ++++ lib/kofficecore/koDocumentChild.cc (working copy) +@@ -230,6 +230,8 @@ + QString relPath = KURL( m_tmpURL ).path(); + path += relPath.mid( 1 ); // remove leading '/' + } ++ if ( !path.endsWith( "/" ) ) ++ path += '/'; + const QString mimeType = KoOasisStore::mimeForPath( manifestDoc, path ); + kdDebug() << k_funcinfo << "path for manifest file=" << path << " mimeType=" << mimeType << endl; + if ( mimeType.isEmpty() ) { +@@ -312,6 +314,8 @@ + } + if ( !res ) + { ++ // Keep the error message from the attempted loading ++ QString errorMessage = d->m_doc->errorMessage(); + delete d->m_doc; + d->m_doc = 0; + QString tmpURL = m_tmpURL; // keep a copy, createUnavailDocument will erase it +@@ -322,7 +326,7 @@ + d->m_doc->setProperty( "realURL", tmpURL ); // so that it gets saved correctly + d->m_doc->setStoreInternal( true ); + if ( internalURL ) +- d->m_doc->setProperty( "unavailReason", i18n( "Could not load embedded object." ) ); ++ d->m_doc->setProperty( "unavailReason", i18n( "Could not load embedded object." ) + "\n" + errorMessage ); + else + d->m_doc->setProperty( "unavailReason", i18n( "External document not found:\n%1" ).arg( tmpURL ) ); + } +Index: lib/kofficeui/koTemplateChooseDia.cc +=================================================================== +--- lib/kofficeui/koTemplateChooseDia.cc (revision 427945) ++++ lib/kofficeui/koTemplateChooseDia.cc (working copy) +@@ -210,6 +210,7 @@ + d=0L; + } + ++// Keep in sync with KoMainWindow::chooseNewDocument + static bool cancelQuits() { + bool onlyDoc = !KoDocument::documentList() || KoDocument::documentList()->count() <= 1; + bool onlyMainWindow = !KMainWindow::memberList || KMainWindow::memberList->count() <= 1; +@@ -261,10 +262,6 @@ + } + + delete dlg; +- if ( rt == Cancel && dialogType == Everything && cancelQuits() ) +- // The button says quit, so let's quit +- kapp->quit(); +- + return rt; + } + +@@ -458,8 +455,8 @@ + d->m_jwidget->showPage(templateNum); + else if ( defaultTemplateGroup != -1) + d->m_jwidget->showPage(defaultTemplateGroup); +- + ++ + // Set the initially selected template, possibly from the last usage of the dialog + currentChanged(itemtoselect); + +Index: lib/kofficeui/koUnitWidgets.h +=================================================================== +--- lib/kofficeui/koUnitWidgets.h (revision 427945) ++++ lib/kofficeui/koUnitWidgets.h (working copy) +@@ -77,7 +77,7 @@ + */ + QString getVisibleText( double value ) const; + /** +- * Transfrom a string inot a double, while taking care of locale specific symbols. ++ * Transfrom a string into a double, while taking care of locale specific symbols. + * @param str the string to transform into a number + * @param ok true, if the conversion was succesful + * @return the value as double +@@ -94,11 +94,11 @@ + * Spin box for double precision numbers with unit display + * \since 1.4 (change of behavior) + */ +-class KOFFICEUI_EXPORT KoUnitDoubleSpinBox : public KDoubleSpinBox, public KoUnitDoubleBase ++class KOFFICEUI_EXPORT KoBuggyUnitDoubleSpinBox : public KDoubleSpinBox, public KoUnitDoubleBase + { + public: + // lower, upper, step and value are in pt +- KoUnitDoubleSpinBox( QWidget *parent, double lower, double upper, double step, double value = 0.0, ++ KoBuggyUnitDoubleSpinBox( QWidget *parent, double lower, double upper, double step, double value = 0.0, + KoUnit::Unit unit = KoUnit::U_PT, unsigned int precision = 2, const char *name = 0 ); + + virtual void changeValue( double ); +@@ -123,6 +123,22 @@ + }; + + /** ++ * Temporary class that will be merged with koBuggyUnitDoubleSpinBox ++ * and renamed into KoUnitDoubleSpinBox when all the users of that ++ * class have been converted. ++ */ ++class KOFFICEUI_EXPORT KoUnitDoubleSpinBox2 : public KoBuggyUnitDoubleSpinBox ++{ ++public: ++ // lower, upper, step and value are in pt ++ KoUnitDoubleSpinBox2( QWidget *parent, double lower, double upper, double step, double value = 0.0, ++ KoUnit::Unit unit = KoUnit::U_PT, unsigned int precision = 2, const char *name = 0 ); ++ ++ virtual void changeValue( double ); ++}; ++ ++ ++/** + * Line edit for double precision numbers with unit display + * \since 1.4 (change of behavior) + */ +Index: lib/kofficeui/kolinewidthaction.cpp +=================================================================== +--- lib/kofficeui/kolinewidthaction.cpp (revision 427945) ++++ lib/kofficeui/kolinewidthaction.cpp (working copy) +@@ -160,7 +160,7 @@ + { + public: + KoUnit::Unit m_unit; +- KoUnitDoubleSpinBox* m_lineWidthUSBox; ++ KoBuggyUnitDoubleSpinBox* m_lineWidthUSBox; + }; + + KoLineWidthChooser::KoLineWidthChooser(QWidget* parent, const char* name) +@@ -174,7 +174,7 @@ + setMainWidget(mainWidget); + QGridLayout* gl = new QGridLayout(mainWidget, 1, 2, KDialog::marginHint(), KDialog::spacingHint()); + QLabel* textLbl = new QLabel(i18n("Line width:"), mainWidget); +- d->m_lineWidthUSBox = new KoUnitDoubleSpinBox(mainWidget, 0.0, 1000.0, 0.1, 1.0, d->m_unit, 2); ++ d->m_lineWidthUSBox = new KoBuggyUnitDoubleSpinBox(mainWidget, 0.0, 1000.0, 0.1, 1.0, d->m_unit, 2); + gl->addWidget(textLbl, 0, 0); + gl->addWidget(d->m_lineWidthUSBox, 0, 1); + } +Index: lib/kofficeui/koUnitWidgets.cc +=================================================================== +--- lib/kofficeui/koUnitWidgets.cc (revision 427945) ++++ lib/kofficeui/koUnitWidgets.cc (working copy) +@@ -25,6 +25,7 @@ + #include <qpushbutton.h> + #include <qlayout.h> + ++ + KoUnitDoubleValidator::KoUnitDoubleValidator( KoUnitDoubleBase *base, QObject *parent, const char *name ) + : KDoubleValidator( parent, name ), m_base( base ) + { +@@ -108,7 +109,10 @@ + } + + +-KoUnitDoubleSpinBox::KoUnitDoubleSpinBox( QWidget *parent, double lower, double upper, double step, double value, KoUnit::Unit unit, unsigned int precision, const char *name ) ++// ---------------------------------------------------------------- ++ ++ ++KoBuggyUnitDoubleSpinBox::KoBuggyUnitDoubleSpinBox( QWidget *parent, double lower, double upper, double step, double value, KoUnit::Unit unit, unsigned int precision, const char *name ) + : KDoubleSpinBox( lower, upper, step, value, precision, parent, name ), KoUnitDoubleBase( unit, precision ), + m_lowerInPoints( lower ), m_upperInPoints( upper ), m_stepInPoints( step ) + { +@@ -120,7 +124,7 @@ + } + + void +-KoUnitDoubleSpinBox::changeValue( double val ) ++KoBuggyUnitDoubleSpinBox::changeValue( double val ) + { + KDoubleSpinBox::setValue( val ); + // TODO: emit valueChanged ONLY if the value was out-of-bounds +@@ -129,7 +133,7 @@ + } + + void +-KoUnitDoubleSpinBox::setUnit( KoUnit::Unit unit ) ++KoBuggyUnitDoubleSpinBox::setUnit( KoUnit::Unit unit ) + { + double oldvalue = KoUnit::fromUserValue( KDoubleSpinBox::value(), m_unit ); + KDoubleSpinBox::setMinValue( KoUnit::toUserValue( m_lowerInPoints, unit ) ); +@@ -140,31 +144,53 @@ + setSuffix( KoUnit::unitName( unit ).prepend( ' ' ) ); + } + +-double KoUnitDoubleSpinBox::value( void ) const ++double KoBuggyUnitDoubleSpinBox::value( void ) const + { + return KoUnit::fromUserValue( KDoubleSpinBox::value(), m_unit ); + } + +-void KoUnitDoubleSpinBox::setMinValue( double min ) ++void KoBuggyUnitDoubleSpinBox::setMinValue( double min ) + { + m_lowerInPoints = min; + KDoubleSpinBox::setMinValue( KoUnit::toUserValue( m_lowerInPoints, m_unit ) ); + } + +-void KoUnitDoubleSpinBox::setMaxValue( double max ) ++void KoBuggyUnitDoubleSpinBox::setMaxValue( double max ) + { + m_upperInPoints = max; + KDoubleSpinBox::setMaxValue( KoUnit::toUserValue( m_upperInPoints, m_unit ) ); + } + +-void KoUnitDoubleSpinBox::setLineStep( double step ) ++void KoBuggyUnitDoubleSpinBox::setLineStep( double step ) + { + m_stepInPoints = step; + KDoubleSpinBox::setLineStep( KoUnit::toUserValue( m_stepInPoints, m_unit ) ); + } + + ++// ---------------------------------------------------------------- + ++ ++KoUnitDoubleSpinBox2::KoUnitDoubleSpinBox2( QWidget *parent, double lower, double upper, double step, double value, KoUnit::Unit unit, unsigned int precision, const char *name ) ++ : KoBuggyUnitDoubleSpinBox( parent, lower, upper, step, value, unit, precision, name ) ++{ ++ m_validator = new KoUnitDoubleValidator( this, this ); ++ QSpinBox::setValidator( m_validator ); ++ setAcceptLocalizedNumbers( true ); ++ setUnit( unit ); ++ changeValue( value ); ++} ++ ++void ++KoUnitDoubleSpinBox2::changeValue( double val ) ++{ ++ KDoubleSpinBox::setValue( KoUnit::toUserValue( val, m_unit ) ); ++} ++ ++ ++// ---------------------------------------------------------------- ++ ++ + KoUnitDoubleLineEdit::KoUnitDoubleLineEdit( QWidget *parent, double lower, double upper, double value, KoUnit::Unit unit, + unsigned int precision, const char *name ) + : KLineEdit( parent, name ), KoUnitDoubleBase( unit, precision ), m_value( value ), m_lower( lower ), m_upper( upper ), +Index: lib/CHANGES +=================================================================== +--- lib/CHANGES (revision 427945) ++++ lib/CHANGES (working copy) +@@ -1,6 +1,15 @@ ++Changes after KOffice-1.4 ++========================= ++KOfficeCore: ++- OASIS loading/saving fix for embedded objects ++- Fix crash when pressing Quit in the initial startup dialog (#107911) ++ ++KoText: ++- Fix crash when updating a TOC with a table inside it (#107961) ++ + Changes after KOffice-1.4-beta1 + =============================== +-KForumula: ++KFormula: + - Disable the matrix actions when the cursor isn't in a matrix element. + - Do not crash when exporting to PNG. + +Index: lib/kotext/kotextdocument.cc +=================================================================== +--- lib/kotext/kotextdocument.cc (revision 427945) ++++ lib/kotext/kotextdocument.cc (working copy) +@@ -135,6 +135,7 @@ + flow_->clear(); + while ( fParag ) { + KoTextParag *p = fParag->next(); ++ fParag->string()->clear(); // avoid the "unregister custom items" code, not needed + delete fParag; + fParag = p; + } +@@ -142,6 +143,7 @@ + if ( createEmptyParag ) + fParag = lParag = createParag( this ); + selections.clear(); ++ customItems.clear(); + } + + /* +Index: lib/kotext/kotextparag.cc +=================================================================== +--- lib/kotext/kotextparag.cc (revision 427945) ++++ lib/kotext/kotextparag.cc (working copy) +@@ -109,6 +109,17 @@ + KoTextParag::~KoTextParag() + { + //kdDebug(32500) << "KoTextParag::~KoTextParag " << this << " id=" << paragId() << endl; ++ ++ // #107961: unregister custom items; KoTextString::clear() will delete them ++ const int len = str->length(); ++ for ( int i = 0; i < len; ++i ) { ++ KoTextStringChar *c = at( i ); ++ if ( doc && c->isCustom() ) { ++ doc->unregisterCustomItem( c->customItem(), this ); ++ //removeCustomItem(); ++ } ++ } ++ + delete str; + str = 0; + // if ( doc && p == doc->minwParag ) { +Index: filters/kword/ascii/kword_ascii_import.desktop +=================================================================== +--- filters/kword/ascii/kword_ascii_import.desktop (revision 427945) ++++ filters/kword/ascii/kword_ascii_import.desktop (working copy) +@@ -5,6 +5,7 @@ + Name[br]=Sil Enporzh ASCII KWord + Name[ca]=Filtre d'importació ASCII per a KWord + Name[cs]=KWord ASCII importní filtr ++Name[cy]=Hidlen Fewnforio Ascii KWord + Name[da]=KWord ASCII-importfilter + Name[de]=ASCII-Importfilter für KWord + Name[el]=Φίλτρο εισαγωγής ascii του KWord +Index: filters/kspread/excel/sidewinder/excel.cpp +=================================================================== +--- filters/kspread/excel/sidewinder/excel.cpp (revision 427945) ++++ filters/kspread/excel/sidewinder/excel.cpp (working copy) +@@ -5412,7 +5412,7 @@ + case 10: valueFormat = "0.00%"; break; + case 11: valueFormat = "0.00E+00"; break; + case 12: valueFormat = "#?/?"; break; +- case 13: valueFormat = "#\?\?\/\?\?"; break; ++ case 13: valueFormat = "#\?\?/\?\?"; break; + case 14: valueFormat = "M/D/YY"; break; + case 15: valueFormat = "D-MMM-YY"; break; + case 16: valueFormat = "D-MMM"; break; +Index: filters/karbon/svg/svgexport.cc +=================================================================== +--- filters/karbon/svg/svgexport.cc (revision 427945) ++++ filters/karbon/svg/svgexport.cc (working copy) +@@ -36,8 +36,10 @@ + #include "vfill.h" + #include "vgradient.h" + #include "vgroup.h" ++#include "vimage.h" + #include "vlayer.h" + #include "vpath.h" ++#include "vpattern.h" + #include "vsegment.h" + #include "vselection.h" + #include "vstroke.h" +@@ -119,11 +121,9 @@ + "\"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd\">" + << endl; + +- // add some PR ++ // add some PR. one line is more than enough. + *m_defs << +- "<!-- This file was created using the SVG export filter from Karbon14, a free vector drawing app. -->" << endl; +- *m_defs << +- "<!-- It is part of koffice, the free, integrated office suite for KDE (http://www.koffice.org/). -->" << endl; ++ "<!-- Created using Karbon14, part of koffice: http://www.koffice.org/karbon -->" << endl; + + *m_defs << + "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"" << +@@ -164,7 +164,30 @@ + *m_body << "</g>" << endl; + } + ++// horrible but at least something gets exported now ++// will need this for patterns + void ++SvgExport::visitVImage( VImage& image ) ++{ ++ *m_body << "<image "; ++ VVisitor::visitVImage( image ); ++ *m_body << "x=\"" << "\" "; ++ *m_body << "y=\"" << "\" "; ++ *m_body << "width=\"" << "\" "; ++ *m_body << "height=\"" << "\" "; ++ *m_body << "xlink:href=\"" << "\""; ++ *m_body << " />" << endl; ++} ++ ++void ++SvgExport::visitVLayer( VLayer& layer ) ++{ ++ *m_body << "<g" << getID( &layer ) << ">" << endl; ++ VVisitor::visitVLayer( layer ); ++ *m_body << "</g>" << endl; ++} ++ ++void + SvgExport::visitVPath( VPath& composite ) + { + *m_body << "<path" << getID( &composite ); +@@ -261,9 +284,50 @@ + *m_defs << "</radialGradient>" << endl; + *m_body << "url(#" << uid << ")"; + } ++ // gah! pointless abbreviation of conical to conic ++ else if( grad.type() == VGradient::conic ) ++ { ++ // fake conical grad as radial. ++ // fugly but better than data loss. ++ *m_defs << "<radialGradient id=\"" << uid << "\" "; ++ *m_defs << "gradientUnits=\"userSpaceOnUse\" "; ++ *m_defs << "cx=\"" << grad.origin().x() << "\" "; ++ *m_defs << "cy=\"" << grad.origin().y() << "\" "; ++ *m_defs << "fx=\"" << grad.focalPoint().x() << "\" "; ++ *m_defs << "fy=\"" << grad.focalPoint().y() << "\" "; ++ double r = sqrt( pow( grad.vector().x() - grad.origin().x(), 2 ) + pow( grad.vector().y() - grad.origin().y(), 2 ) ); ++ *m_defs << "r=\"" << QString().setNum( r ) << "\" "; ++ if( grad.repeatMethod() == VGradient::reflect ) ++ *m_defs << "spreadMethod=\"reflect\" "; ++ else if( grad.repeatMethod() == VGradient::repeat ) ++ *m_defs << "spreadMethod=\"repeat\" "; ++ *m_defs << ">" << endl; ++ ++ // color stops ++ getColorStops( grad.colorStops() ); ++ ++ *m_defs << "</radialGradient>" << endl; ++ *m_body << "url(#" << uid << ")"; ++ } + } + ++// better than nothing + void ++SvgExport::getPattern( const VPattern & patt ) ++{ ++ QString uid = createUID(); ++ *m_defs << "<pattern id=\"" << uid << "\" "; ++ *m_defs << "width=\"" << "\" "; ++ *m_defs << "height=\"" << "\" "; ++ *m_defs << "patternUnits=\"userSpaceOnUse\" "; ++ *m_defs << "patternContentUnits=\"userSpaceOnUse\" "; ++ *m_defs << " />" << endl; ++ // TODO: insert hard work here ;) ++ *m_defs << "</pattern>" << endl; ++ *m_body << "url(#" << uid << ")"; ++} ++ ++void + SvgExport::getFill( const VFill& fill ) + { + *m_body << " fill=\""; +@@ -271,6 +335,8 @@ + *m_body << "none"; + else if( fill.type() == VFill::grad ) + getGradient( fill.gradient() ); ++ else if( fill.type() == VFill::patt ) ++ getPattern( fill.pattern() ); + else + getHexColor( m_body, fill.color() ); + *m_body << "\""; +Index: filters/karbon/svg/svgexport.h +=================================================================== +--- filters/karbon/svg/svgexport.h (revision 427945) ++++ filters/karbon/svg/svgexport.h (working copy) +@@ -35,6 +35,7 @@ + class VDocument; + class VFill; + class VGroup; ++class VImage; + class VLayer; + class VSubpath; + class VStroke; +@@ -55,6 +56,8 @@ + virtual void visitVPath( VPath& composite ); + virtual void visitVDocument( VDocument& document ); + virtual void visitVGroup( VGroup& group ); ++ virtual void visitVImage( VImage& image ); ++ virtual void visitVLayer( VLayer& layer ); + virtual void visitVSubpath( VSubpath& path ); + virtual void visitVText( VText& text ); + +@@ -62,6 +65,7 @@ + void getColorStops( const QPtrVector<VColorStop> &colorStops ); + void getFill( const VFill& fill ); + void getGradient( const VGradient& grad ); ++ void getPattern( const VPattern& patt ); + void getHexColor( QTextStream *, const VColor& color ); + QString getID( VObject *obj ); + +Index: filters/generic_wrapper/generic_filter.desktop +=================================================================== +--- filters/generic_wrapper/generic_filter.desktop (revision 427945) ++++ filters/generic_wrapper/generic_filter.desktop (working copy) +@@ -3,6 +3,7 @@ + Name=Generic KOffice Filter + Name[ca]=Filtre genèric de KOffice + Name[cs]=Obecný filtr KOffice ++Name[cy]=Hidlen generig KOffice + Name[da]=Generisk KOffice-filter + Name[de]=Generischer KOffice-Filter + Name[el]=Γενικό φίλτρο του KOffice +Index: krita/plugins/cimg/CImg.h +=================================================================== +--- krita/plugins/cimg/CImg.h (revision 427945) ++++ krita/plugins/cimg/CImg.h (working copy) +@@ -5135,7 +5135,7 @@ + if (ny1<0 || ny0>=dimy()) return *this; + if (ny0<0) { nx0-=ny0*(nx1-nx0)/(ny1-ny0); ny0=0; } + if (ny1>=dimy()) { nx1+=(ny1-dimy())*(nx0-nx1)/(ny1-ny0); ny1=dimy()-1;} +- const unsigned int dmax = (unsigned int)cimg::max(std::abs(nx1-nx0),ny1-ny0), whz = width*height*depth; ++ const unsigned int dmax = (unsigned int)cimg::max(std::abs((long int)(nx1-nx0)),(long int)(ny1-ny0)), whz = width*height*depth; + const float px = dmax?(nx1-nx0)/(float)dmax:0, py = dmax?(ny1-ny0)/(float)dmax:0; + float x = (float)nx0, y = (float)ny0; + if (opacity>=1) for (unsigned int t=0; t<=dmax; t++) { +Index: krita/plugins/tool_polygon/kritatoolpolygon.desktop +=================================================================== +--- krita/plugins/tool_polygon/kritatoolpolygon.desktop (revision 427945) ++++ krita/plugins/tool_polygon/kritatoolpolygon.desktop (working copy) +@@ -2,6 +2,7 @@ + Encoding=UTF-8 + Name=Polygon Tool + Name[br]=Ostilh liestueg ++Name[cy]=Erfyn Polygon + Name[da]=Polygonværktøj + Name[de]=Polygon-Werkzeug + Name[el]=Εργαλείο πολυγώνου +Index: krita/plugins/tool_polyline/kritatoolpolyline.desktop +=================================================================== +--- krita/plugins/tool_polyline/kritatoolpolyline.desktop (revision 427945) ++++ krita/plugins/tool_polyline/kritatoolpolyline.desktop (working copy) +@@ -1,6 +1,7 @@ + [Desktop Entry] + Encoding=UTF-8 + Name=Polyline Tool ++Name[cy]=Erfyn Polylinell + Name[da]=Flerlinjeværktøj + Name[de]=Polylinien-Werkzeug + Name[el]=Εργαλείο Polyline +Index: krita/plugins/imagemagick/kritamagick.desktop +=================================================================== +--- krita/plugins/imagemagick/kritamagick.desktop (revision 427945) ++++ krita/plugins/imagemagick/kritamagick.desktop (working copy) +@@ -14,7 +14,8 @@ + Name[nn]=ImageMagick-omslag + Name[pt]=Interface para ImageMagick + Name[pt_BR]=Wrapper do ImageMagick +-Name[ru]=Интерфейс к ImageMagick ++Name[ru]=Оболочка к ImageMagick ++Name[sl]=Ovojnik za ImageMagick + Name[sr]=Омотач ImageMagick-а + Name[sr@Latn]=Omotač ImageMagick-a + Name[sv]=ImageMagick-gränssnitt +@@ -35,7 +36,7 @@ + Comment[nn]=ImageMagick-basert import, eksport og filkonvertering + Comment[pt]=Importação/exportação e conversão de ficheiro com o ImageMagick + Comment[pt_BR]=Conversão de arquivos e filtro de importação/exportação baseado no ImageMagick +-Comment[ru]=Фильтр импорта/экспорта рисунков посредством ImageMagick ++Comment[ru]=Фильтр импорта/экспорта и преобразования формата посредством ImageMagick + Comment[sr]=Увоз, извоз и конверзија фајлова помоћу ImageMagick-а + Comment[sr@Latn]=Uvoz, izvoz i konverzija fajlova pomoću ImageMagick-a + Comment[sv]=ImageMagick-baserad import, export och filkonvertering +Index: krita/plugins/tool_crop/kritatoolcrop.desktop +=================================================================== +--- krita/plugins/tool_crop/kritatoolcrop.desktop (revision 427945) ++++ krita/plugins/tool_crop/kritatoolcrop.desktop (working copy) +@@ -16,7 +16,7 @@ + Name[nn]=Beskjæringsverktøy + Name[pt]=Ferramenta de Recorte + Name[pt_BR]=Ferramenta de Recorte +-Name[ru]=Инструмент обрезки ++Name[ru]=Обрезка + Name[sl]=Orodje za obrezavo + Name[sr]=Алат за сасецање + Name[sr@Latn]=Alat za sasecanje +Index: krita/plugins/selectiontools/kritaselectiontools.desktop +=================================================================== +--- krita/plugins/selectiontools/kritaselectiontools.desktop (revision 427945) ++++ krita/plugins/selectiontools/kritaselectiontools.desktop (working copy) +@@ -2,12 +2,14 @@ + Encoding=UTF-8 + Name=Selection Tools + Name[ca]=Eines de selecció ++Name[cy]=Offer Detholi + Name[da]=Markeringsværktøj + Name[de]=Auswahlwerkzeuge + Name[el]=Εργαλεία επιλογής + Name[es]=Herramientas de selección + Name[et]=Valikutööriistad + Name[fr]=Outils de sélection ++Name[ga]=Uirlisí Roghnúcháin + Name[he]=כלי בחירה + Name[hu]=Kiválasztó eszközök + Name[it]=Strumenti di selezione +Index: krita/plugins/tool_star/kritatoolstar.desktop +=================================================================== +--- krita/plugins/tool_star/kritatoolstar.desktop (revision 427945) ++++ krita/plugins/tool_star/kritatoolstar.desktop (working copy) +@@ -2,6 +2,7 @@ + Encoding=UTF-8 + Name=Star Tool + Name[br]=Ostilh steredenn ++Name[cy]=Erfyn Seren + Name[da]=Stjerneværktøj + Name[de]=Sterne-Werkzeug + Name[el]=Εργαλείο αστέρα +@@ -18,6 +19,7 @@ + Name[pt]=Ferramenta de Estrelas + Name[pt_BR]=Ferramenta Estrela + Name[ru]=Звёзды ++Name[sl]=Zvezdno orodje + Name[sr]=Алат за звезде + Name[sr@Latn]=Alat za zvezde + Name[sv]=Stjärnverktyg +Index: krita/plugins/tool_transform/kritatooltransform.desktop +=================================================================== +--- krita/plugins/tool_transform/kritatooltransform.desktop (revision 427945) ++++ krita/plugins/tool_transform/kritatooltransform.desktop (working copy) +@@ -16,7 +16,7 @@ + Name[nn]=Beskjæringsverktøy + Name[pt]=Ferramenta de Recorte + Name[pt_BR]=Ferramenta de Recorte +-Name[ru]=Инструмент обрезки ++Name[ru]=Обрезка + Name[sl]=Orodje za obrezavo + Name[sr]=Алат за сасецање + Name[sr@Latn]=Alat za sasecanje +Index: krita/krita.desktop +=================================================================== +--- krita/krita.desktop (revision 427945) ++++ krita/krita.desktop (working copy) +@@ -22,6 +22,7 @@ + GenericName[fa]=برنامه دستکاری تصویر + GenericName[fi]=Kuvienmuokkausohjelma + GenericName[fr]=Logiciel de manipulation d'images ++GenericName[ga]=Clár Ionramhála na nÍomhánna + GenericName[he]=תוכנית לטיפול בתמונות + GenericName[hr]=Program za obradu slika + GenericName[hu]=Képszerkesztő +@@ -39,7 +40,7 @@ + GenericName[pt]=Programa de Manipulação de Imagens + GenericName[pt_BR]=Manipulador de Imagens + GenericName[ro]=Program de procesare imagini +-GenericName[ru]=Редактор графических изображений ++GenericName[ru]=Программа редактирования изображений + GenericName[sk]=Program pre úpravu obrázkov + GenericName[sl]=Program za obdelavo slik + GenericName[sr]=Програм за уређивање слика +Index: krita/core/kis_paint_device.cc +=================================================================== +--- krita/core/kis_paint_device.cc (revision 427945) ++++ krita/core/kis_paint_device.cc (working copy) +@@ -791,24 +791,23 @@ + QRect r = m_selection -> selectedRect(); + r = r.normalize(); + ++ for (Q_INT32 y = 0; y < r.height(); y++) { ++ KisHLineIterator devIt = createHLineIterator(r.x(), r.y() + y, r.width(), true); ++ KisHLineIterator selectionIt = m_selection -> createHLineIterator(r.x(), r.y() + y, r.width(), false); + +- KisRectIterator devIt = createRectIterator(r.x(), r.y(), r.width(), r.height(), true); +- KisRectIterator selectionIt = m_selection -> createRectIterator(r.x(), r.y(), r.width(), r.height(), false); ++ while (!devIt.isDone()) { ++ KisPixel p = toPixel(devIt.rawData()); ++ KisPixel s = m_selection -> toPixel(selectionIt.rawData()); ++ Q_UINT16 p_alpha, s_alpha; ++ p_alpha = p.alpha(); ++ s_alpha = MAX_SELECTED - s.alpha(); + +- while (!devIt.isDone()) { +- KisPixel p = toPixel(devIt.rawData()); +- KisPixel s = m_selection -> toPixel(selectionIt.rawData()); +- Q_UINT16 p_alpha, s_alpha; +- p_alpha = p.alpha(); +- s_alpha = MAX_SELECTED - s.alpha(); +- +- p.alpha() = (Q_UINT8) ((p_alpha * s_alpha) >> 8); ++ p.alpha() = (Q_UINT8) ((p_alpha * s_alpha) >> 8); + +- ++devIt; +- ++selectionIt; ++ ++devIt; ++ ++selectionIt; ++ } + } +- +- + } + + void KisPaintDevice::applySelectionMask(KisSelectionSP mask) +Index: krita/core/kis_selection_manager.cc +=================================================================== +--- krita/core/kis_selection_manager.cc (revision 427945) ++++ krita/core/kis_selection_manager.cc (working copy) +@@ -319,20 +319,22 @@ + + // Apply selection mask. + +- KisRectIterator layerIt = clip -> createRectIterator(0, 0, r.width(), r.height(), true); +- KisRectIterator selectionIt = selection -> createRectIterator(r.x(), r.y(), r.width(), r.height(), false); ++ for (Q_INT32 y = 0; y < r.height(); y++) { ++ KisHLineIterator layerIt = clip -> createHLineIterator(0, y, r.width(), true); ++ KisHLineIterator selectionIt = selection -> createHLineIterator(r.x(), r.y() + y, r.width(), false); + +- while (!layerIt.isDone()) { +- KisPixel p = clip -> toPixel(layerIt.rawData()); +- KisPixel s = selection -> toPixel(selectionIt.rawData()); +- Q_UINT16 p_alpha, s_alpha; +- p_alpha = p.alpha(); +- s_alpha = s.alpha(); +- +- p.alpha() = (Q_UINT8) ((p_alpha * s_alpha) >> 8); +- +- ++layerIt; +- ++selectionIt; ++ while (!layerIt.isDone()) { ++ KisPixel p = clip -> toPixel(layerIt.rawData()); ++ KisPixel s = selection -> toPixel(selectionIt.rawData()); ++ Q_UINT16 p_alpha, s_alpha; ++ p_alpha = p.alpha(); ++ s_alpha = s.alpha(); ++ ++ p.alpha() = (Q_UINT8) ((p_alpha * s_alpha) >> 8); ++ ++ ++layerIt; ++ ++selectionIt; ++ } + } + + // kdDebug() << "Selection copied: " +Index: krita/core/tiles/kis_tiledrectiterator.cc +=================================================================== +--- krita/core/tiles/kis_tiledrectiterator.cc (revision 427945) ++++ krita/core/tiles/kis_tiledrectiterator.cc (working copy) +@@ -66,7 +66,8 @@ + m_xInTile = m_leftInTile; + m_yInTile = m_topInTile; + +- fetchTileData(m_col, m_row); ++ if (! m_beyondEnd) ++ fetchTileData(m_col, m_row); + m_offset = m_pixelSize * (m_yInTile * KisTile::WIDTH + m_xInTile); + } + +Index: krita/core/builder/kis_image_magick_converter.cc +=================================================================== +--- krita/core/builder/kis_image_magick_converter.cc (revision 427945) ++++ krita/core/builder/kis_image_magick_converter.cc (working copy) +@@ -64,10 +64,10 @@ + */ + KisStrategyColorSpaceSP getColorSpaceForColorType(ColorspaceType type) { + if (type == GRAYColorspace) { +- KisColorSpaceRegistry::instance() -> get(KisID("CMYK", "")); ++ return KisColorSpaceRegistry::instance() -> get(KisID("GRAYA", "")); + } + else if (type == CMYKColorspace) { +- return KisColorSpaceRegistry::instance() -> get(KisID("GRAYA", "")); ++ return KisColorSpaceRegistry::instance() -> get(KisID("CMYK", "")); + } + else if (type == RGBColorspace || type == sRGBColorspace || type == TransparentColorspace) { + return KisColorSpaceRegistry::instance() -> get(KisID("RGBA", "")); +Index: krita/core/kis_view.cc +=================================================================== +--- krita/core/kis_view.cc (revision 427945) ++++ krita/core/kis_view.cc (working copy) +@@ -218,8 +218,7 @@ + { + delete m_dcop; + delete m_dockerManager; +- +- ++ delete m_selectionManager; + } + + DCOPObject* KisView::dcopObject() +Index: krita/core/kis_iterators_pixel.h +=================================================================== +--- krita/core/kis_iterators_pixel.h (revision 427945) ++++ krita/core/kis_iterators_pixel.h (working copy) +@@ -37,6 +37,7 @@ + public: + KisHLineIteratorPixel( KisPaintDevice *ndevice, KisDataManager *dm, KisDataManager *sel_dm, Q_INT32 x , Q_INT32 y , Q_INT32 w, Q_INT32 offsetx, Q_INT32 offsety, bool writable); + ++ ~KisHLineIteratorPixel() { delete m_selectionIterator; } + inline KisHLineIteratorPixel & operator ++() { KisHLineIterator::operator++(); advance(1); return *this;} + + /// Advances a number of pixels until it reaches the end of the line +@@ -52,6 +53,7 @@ + { + public: + KisVLineIteratorPixel( KisPaintDevice *ndevice, KisDataManager *dm, KisDataManager *sel_dm, Q_INT32 xpos , Q_INT32 ypos , Q_INT32 height, Q_INT32 offsetx, Q_INT32 offsety, bool writable); ++ ~KisVLineIteratorPixel() { delete m_selectionIterator; } + + inline KisVLineIteratorPixel & operator ++() { KisVLineIterator::operator++(); advance(1); return *this;} + +@@ -65,6 +67,7 @@ + { + public: + KisRectIteratorPixel( KisPaintDevice *ndevice, KisDataManager *dm, KisDataManager *sel_dm, Q_INT32 x, Q_INT32 y, Q_INT32 w, Q_INT32 h, Q_INT32 offsetx, Q_INT32 offsety, bool writable); ++ ~KisRectIteratorPixel() { delete m_selectionIterator; } + + inline KisRectIteratorPixel & operator ++() { KisRectIterator::operator++(); advance(1); return *this;} + +Index: krita/paintops/kritadefaultpaintops.desktop +=================================================================== +--- krita/paintops/kritadefaultpaintops.desktop (revision 427945) ++++ krita/paintops/kritadefaultpaintops.desktop (working copy) +@@ -15,7 +15,7 @@ + Name[nn]=Standard måleoperasjonar + Name[pt]=Operações de Pintura Predefinidas + Name[pt_BR]=Operações de pintura padrão +-Name[ru]=Стандартные действия рисования ++Name[ru]=Стандартные операции рисования + Name[sr]=Подразумеване сликарске операције + Name[sr@Latn]=Podrazumevane slikarske operacije + Name[sv]=Förvalda målningsoperationer +@@ -36,7 +36,7 @@ + Comment[nn]=Standard måleoperasjonar + Comment[pt]=Operações de pintura predefinidas + Comment[pt_BR]=Operações de pintura padrão +-Comment[ru]=Действия рисования по умолчанию ++Comment[ru]=Операции рисования по умолчанию + Comment[sr]=Подразумеване сликарске операције + Comment[sr@Latn]=Podrazumevane slikarske operacije + Comment[sv]=Förvalda ritåtgärder +Index: krita/modules/colorspace_ws/kritawsplugin.desktop +=================================================================== +--- krita/modules/colorspace_ws/kritawsplugin.desktop (revision 427945) ++++ krita/modules/colorspace_ws/kritawsplugin.desktop (working copy) +@@ -13,7 +13,7 @@ + Name[nn]=Fargemodell for vått lerret + Name[pt]=Modelo de Cores de Tela Molhado e Pegajoso + Name[pt_BR]=Modelo de cores de tela Molhada & Pegajosa +-Name[ru]=Цветовая модель влажности и прилипания ++Name[ru]=Цветовая модель с параметрами влажности и прилипания + Name[sr]=Модел боја мокрог и лепљивог платна + Name[sr@Latn]=Model boja mokrog i lepljivog platna + Name[sv]=Våt och klibbig dukfärgmodell +Index: krita/modules/colorspace_rgb/templates/transparent_1280x1024.desktop +=================================================================== +--- krita/modules/colorspace_rgb/templates/transparent_1280x1024.desktop (revision 427945) ++++ krita/modules/colorspace_rgb/templates/transparent_1280x1024.desktop (working copy) +@@ -4,6 +4,7 @@ + URL=.source/transparent_1280x1024.kra + Icon=template_rgb_empty + Name=Transparent 1280 x 1024 ++Name[br]=Treuzwelus 1280 x 1024 + Name[da]=Gennemsigtig 1280 x 1024 + Name[el]=Διαφανής 1280 x 1024 + Name[es]=1280 x 1024 transparente +@@ -16,7 +17,7 @@ + Name[nn]=Gjennomsiktig 1280 × 1024 + Name[pt]=Transparente 1280 x 1024 + Name[pt_BR]=Transparente de 1280 x 1024 +-Name[ru]=Прозрачный 1280x1024 ++Name[ru]=Рисунок 1280x1024, прозрачный фон + Name[sl]=Prosojna 1280 x 1024 + Name[sr]=Провидна 1280 x 1024 + Name[sr@Latn]=Providna 1280 x 1024 +@@ -39,7 +40,7 @@ + Comment[nn]=Lagar eit gjennomsiktig bilete på 1280 × 1024 pikslar. + Comment[pt]=Cria uma imagem transparente com 1280 x 1024 pontos. + Comment[pt_BR]=Cria uma imagem transparente de 1280 x 1024 pixels. +-Comment[ru]=Прозрачное, 1280x1024. ++Comment[ru]=Рисунок 1280x1024, прозрачный фон. + Comment[sl]=Ustvari prosojno sliko velikosti 1280 x 1024 točk. + Comment[sr]=Прави провидну слику са 1280 x 1024 пиксела. + Comment[sr@Latn]=Pravi providnu sliku sa 1280 x 1024 piksela. +Index: krita/modules/colorspace_rgb/templates/transparent_640x480.desktop +=================================================================== +--- krita/modules/colorspace_rgb/templates/transparent_640x480.desktop (revision 427945) ++++ krita/modules/colorspace_rgb/templates/transparent_640x480.desktop (working copy) +@@ -4,6 +4,7 @@ + URL=.source/transparent_1600x1200.kra + Icon=template_rgb_empty + Name=Transparent 640 x 480 ++Name[br]=Treuzwelus 640 x 480 + Name[da]=Gennemsigtig 640 x 480 + Name[el]=Διαφανής 640 x 480 + Name[es]=640 x 480 transparente +@@ -16,7 +17,7 @@ + Name[nn]=Gjennomsiktig 640 × 480 + Name[pt]=Transparente 640 x 480 + Name[pt_BR]=Transparente de 640 x 480 +-Name[ru]=Прозрачный 640x480 ++Name[ru]=Рисунок 640x480, прозрачный фон + Name[sl]=Prosojna 640 x 480 + Name[sr]=Провидна 640 x 480 + Name[sr@Latn]=Providna 640 x 480 +@@ -39,7 +40,7 @@ + Comment[nn]=Lagar eit gjennomsiktig bilete på 640 × 480 pikslar. + Comment[pt]=Cria uma imagem transparente com 640 x 480 pontos. + Comment[pt_BR]=Cria uma imagem transparente de 640 x 480 pixels. +-Comment[ru]=Прозрачное, 640x480. ++Comment[ru]=Рисунок 640x480, прозрачный фон. + Comment[sl]=Ustvari prosojno sliko velikosti 640 x 480 točk. + Comment[sr]=Прави провидну слику са 640 x 480 пиксела. + Comment[sr@Latn]=Pravi providnu sliku sa 640 x 480 piksela. +Index: krita/modules/colorspace_rgb/templates/white_1600x1200.desktop +=================================================================== +--- krita/modules/colorspace_rgb/templates/white_1600x1200.desktop (revision 427945) ++++ krita/modules/colorspace_rgb/templates/white_1600x1200.desktop (working copy) +@@ -10,6 +10,7 @@ + Name[es]=1600 x 1200 blanco + Name[et]=Valge 1600 x 1200 + Name[fr]=Image blanche 1600 x 1200 ++Name[ga]=Bán 1600×1200 + Name[he]=לבן 1600 x 1200 + Name[hu]=Fehér 1600 x 1200 + Name[it]=Bianco 1600 x 1200 +@@ -17,7 +18,7 @@ + Name[nn]=Kvitt 1600 × 1200 + Name[pt]=Branca 1600 x 1200 + Name[pt_BR]=1600 x 1200 em Branco +-Name[ru]=Белый 1600x1200 ++Name[ru]=Рисунок 1600x1200, белый фон + Name[sl]=Bela 1600 x 1200 + Name[sr]=Бела 1600 x 1200 + Name[sr@Latn]=Bela 1600 x 1200 +@@ -39,7 +40,7 @@ + Comment[nn]=Lagar eit kvitt RGB-bilete på 1600 × 1200 pikslar. + Comment[pt]=Cria uma imagem RGB branca com 1600 x 1200 pontos. + Comment[pt_BR]=Cria uma imagem RGB em branco de 1600 x 1200 pixels. +-Comment[ru]=Белое в формате RGB, 1600x1200. ++Comment[ru]=Рисунок RGB 1600x1200, белый фон. + Comment[sl]=Ustvari belo sliko RGB velikosti 1600 x 1200 točk. + Comment[sr]=Прави белу RGB слику са 1600 x 1200 пиксела. + Comment[sr@Latn]=Pravi belu RGB sliku sa 1600 x 1200 piksela. +Index: krita/modules/colorspace_rgb/templates/white_1024x768.desktop +=================================================================== +--- krita/modules/colorspace_rgb/templates/white_1024x768.desktop (revision 427945) ++++ krita/modules/colorspace_rgb/templates/white_1024x768.desktop (working copy) +@@ -13,6 +13,7 @@ + Name[es]=1024 x 768 blanco + Name[et]=Valge 1024 x 768 + Name[fr]=Image blanche 1024 x 768 ++Name[ga]=Bán 1024×768 + Name[he]=לבן 1024 x 768 + Name[hu]=Fehér 1024 x 768 + Name[it]=Bianco 1024 x 768 +@@ -21,7 +22,7 @@ + Name[nn]=Kvitt 1024 × 768 + Name[pt]=Branca 1024 x 768 + Name[pt_BR]=1024 x 768 em Branco +-Name[ru]=Белый 1024x768 ++Name[ru]=Рисунок 1024x768, белый фон + Name[sl]=Bela 1024 x 768 + Name[sr]=Бела 1024 x 768 + Name[sr@Latn]=Bela 1024 x 768 +@@ -46,7 +47,7 @@ + Comment[nn]=Lagar eit kvitt RGB-bilete på 1024 × 768 pikslar. + Comment[pt]=Cria uma imagem RGB branca com 1024 x 768 pontos. + Comment[pt_BR]=Cria uma imagem RGB em branco de 1024 x 768 pixéis. +-Comment[ru]=Белое в формате RGB, 1024x768. ++Comment[ru]=Рисунок RGB 1024x768, белый фон. + Comment[sl]=Ustvari belo sliko RGB velikosti 1024 x 768 točk. + Comment[sr]=Прави белу RGB слику са 1024 x 768 пиксела. + Comment[sr@Latn]=Pravi belu RGB sliku sa 1024 x 768 piksela. +Index: krita/modules/colorspace_rgb/templates/white_1280x1024.desktop +=================================================================== +--- krita/modules/colorspace_rgb/templates/white_1280x1024.desktop (revision 427945) ++++ krita/modules/colorspace_rgb/templates/white_1280x1024.desktop (working copy) +@@ -10,6 +10,7 @@ + Name[es]=1280 x 1024 blanco + Name[et]=Valge 1280 x 1024 + Name[fr]=Image blanche 1280 x 1024 ++Name[ga]=Bán 1280×1024 + Name[he]=לבן 1280 x 1024 + Name[hu]=Fehér 1280 x 1024 + Name[it]=Bianco 1280 x 1024 +@@ -17,7 +18,7 @@ + Name[nn]=Kvitt 1280 × 1024 + Name[pt]=Branca 1280 x 1024 + Name[pt_BR]=1280 x 1024 em Branco +-Name[ru]=Белый 1280x1024 ++Name[ru]=Рисунок 1280x1024, белый фон + Name[sl]=Bela 1280 x 1024 + Name[sr]=Бела 1280 x 1024 + Name[sr@Latn]=Bela 1280 x 1024 +@@ -39,7 +40,7 @@ + Comment[nn]=Lagar eit kvitt RGB-bilete på 1280 × 1024 pikslar. + Comment[pt]=Cria uma imagem RGB branca com 1280 x 1024 pontos. + Comment[pt_BR]=Cria uma imagem RGB em branco de 1280 x 1024 pixels. +-Comment[ru]=Белое в формате RGB, 1280x1024. ++Comment[ru]=Рисунок RGB 1280x1024, белый фон. + Comment[sl]=Ustvari belo sliko RGB velikosti 1280 x 1024 točk. + Comment[sr]=Прави белу RGB слику са 1280 x 1024 пиксела. + Comment[sr@Latn]=Pravi belu RGB sliku sa 1280 x 1024 piksela. +Index: krita/modules/colorspace_rgb/templates/white_640x480.desktop +=================================================================== +--- krita/modules/colorspace_rgb/templates/white_640x480.desktop (revision 427945) ++++ krita/modules/colorspace_rgb/templates/white_640x480.desktop (working copy) +@@ -13,6 +13,7 @@ + Name[es]=640x480 blanco + Name[et]=Valge 640x480 + Name[fr]=Image blanche 640 x 480 ++Name[ga]=Bán 640×480 + Name[he]=לבן 640x480 + Name[hu]=Fehér 640 x 480 + Name[it]=Bianco 640x480 +@@ -21,7 +22,7 @@ + Name[nn]=Kvitt 640 × 480 + Name[pt]=Branca 640x480 + Name[pt_BR]=640x480 em Branco +-Name[ru]=Белый 640x480 ++Name[ru]=Рисунок 640x480, белый фон + Name[sl]=Bela 640x480 + Name[sr]=Бела 640x480 + Name[sr@Latn]=Bela 640x480 +@@ -42,11 +43,11 @@ + Comment[hu]=Létrehoz egy 640 x 480 képpontos fehér RGB képet. + Comment[it]=Crea un'immagine RGB bianca di 640 x 480 pixel. + Comment[nb]=Lager et hvitt bilde på 640 x 480 piksler. +-Comment[nl]=Maakt een witte RGB-afbeelding aan van 540 x 480 pixels. ++Comment[nl]=Maakt een witte RGB-afbeelding aan van 640 x 480 pixels. + Comment[nn]=Lagar eit kvitt RGB-bilete på 640 × 480 pikslar. + Comment[pt]=Cria uma imagem RGB branca com 640 x 480 pontos. + Comment[pt_BR]=Cria uma imagem RGB em branco de 640 x 480 pixéis. +-Comment[ru]=Белое в формате RGB, 640x480. ++Comment[ru]=Рисунок RGB 640x480, белый фон. + Comment[sl]=Ustvari belo sliko RGB velikosti 640 x 480 točk. + Comment[sr]=Прави белу RGB слику са 640 x 480 пиксела. + Comment[sr@Latn]=Pravi belu RGB sliku sa 640 x 480 piksela. +Index: krita/modules/colorspace_rgb/templates/transparent_1600x1200.desktop +=================================================================== +--- krita/modules/colorspace_rgb/templates/transparent_1600x1200.desktop (revision 427945) ++++ krita/modules/colorspace_rgb/templates/transparent_1600x1200.desktop (working copy) +@@ -5,6 +5,7 @@ + Icon=template_rgb_empty + Name=Transparent 1600 x 1200 + Name[bg]=Прозрачно 1600 x 1200 ++Name[br]=Treuzwelus 1600 x 1200 + Name[da]=Gennemsigtig 1600 x 1200 + Name[el]=Διαφανής 1600 x 1200 + Name[es]=1600 x 1200 transparente +@@ -18,7 +19,7 @@ + Name[nn]=Gjennomsiktig 1600 × 1200 + Name[pt]=Transparente 1600 x 1200 + Name[pt_BR]=Transparente de 1600 x 1200 +-Name[ru]=Прозрачный 1600x1200 ++Name[ru]=Рисунок 1600x1200, прозрачный фон + Name[sl]=Prosojna 1600 x 1200 + Name[sr]=Провидна 1600 x 1200 + Name[sr@Latn]=Providna 1600 x 1200 +@@ -44,7 +45,7 @@ + Comment[nn]=Lagar eit gjennomsiktig bilete på 1600 × 1200 pikslar. + Comment[pt]=Cria uma imagem transparente com 1600 x 1200 pontos. + Comment[pt_BR]=Cria uma imagem transparente de 1600 x 1200 pixéis. +-Comment[ru]=Прозрачное, 1600x1200. ++Comment[ru]=Рисунок 1600x1200, прозрачный фон. + Comment[sl]=Ustvari prosojno sliko velikosti 1600 x 1200 točk. + Comment[sr]=Прави провидну слику са 1600 x 1200 пиксела. + Comment[sr@Latn]=Pravi providnu sliku sa 1600 x 1200 piksela. +Index: krita/modules/colorspace_rgb/templates/transparent_1024x768.desktop +=================================================================== +--- krita/modules/colorspace_rgb/templates/transparent_1024x768.desktop (revision 427945) ++++ krita/modules/colorspace_rgb/templates/transparent_1024x768.desktop (working copy) +@@ -4,6 +4,7 @@ + URL=.source/transparent_1024x768.kra + Icon=template_rgb_empty + Name=Transparent 1024 x 768 ++Name[br]=Treuzwelus 1024 x 768 + Name[da]=Gennemsigtig 1024 x 768 + Name[el]=Διαφανής 1024 x 768 + Name[es]=1024 x 768 transparente +@@ -16,7 +17,7 @@ + Name[nn]=Gjennomsiktig 1024 × 768 + Name[pt]=Transparente 1024 x 768 + Name[pt_BR]=Transparente de 1024 x 768 +-Name[ru]=Прозрачный 1024x768 ++Name[ru]=Рисунок 1024x768, прозрачный фон + Name[sl]=Prosojna 1024 x 768 + Name[sr]=Провидна 1024 x 768 + Name[sr@Latn]=Providna 1024 x 768 +@@ -39,7 +40,7 @@ + Comment[nn]=Lagar eit gjennomsiktig bilete på 1024 × 768 pikslar. + Comment[pt]=Cria uma imagem transparente com 1024 x 768 pontos. + Comment[pt_BR]=Cria uma imagem transparente de 1024 x 768 pixels. +-Comment[ru]=Прозрачное, 1024x768. ++Comment[ru]=Рисунок 1024x768, прозрачный фон. + Comment[sl]=Ustvari prosojno sliko velikosti 1024 x 768 točk. + Comment[sr]=Прави провидну слику са 1024 x 768 пиксела. + Comment[sr@Latn]=Pravi providnu sliku sa 1024 x 768 piksela. +Index: krita/modules/krita_module.desktop +=================================================================== +--- krita/modules/krita_module.desktop (revision 427945) ++++ krita/modules/krita_module.desktop (working copy) +@@ -19,6 +19,7 @@ + Comment[pt]=Módulo de funcionalidade nuclear para o Krita + Comment[pt_BR]=Módulo de funcionalidades principais para o Krita + Comment[ru]=Движок Krita ++Comment[sl]=Modul za osnovne zmožnosti Krite + Comment[sr]=Модел основне функционалности за Krita-у + Comment[sr@Latn]=Model osnovne funkcionalnosti za Krita-u + Comment[sv]=Modul med kärnfunktioner för Krita +Index: krita/modules/colorspace_gray/templates/white_640x480.desktop +=================================================================== +--- krita/modules/colorspace_gray/templates/white_640x480.desktop (revision 427945) ++++ krita/modules/colorspace_gray/templates/white_640x480.desktop (working copy) +@@ -12,6 +12,7 @@ + Name[es]=Fondo blanco, 640 x 480 + Name[et]=Valge taust, 640 x 480 + Name[fr]=Fond blanc 640 x 480 ++Name[ga]=Cúlra Bán, 640×480 + Name[he]=רקע לבן, 640 x 480 + Name[hu]=Fehér háttér, 640 x 480 + Name[it]=Sfondo bianco, 640 x 480 +@@ -20,7 +21,7 @@ + Name[nn]=Kvit bakgrunn, 640 × 480 + Name[pt]=Fundo Branco, 640 x 480 + Name[pt_BR]=Fundo em branco, 640 x 480 +-Name[ru]=Белый фон, 640x480 ++Name[ru]=Рисунок 640x480, белый фон + Name[sl]=Belo ozadje, 640 x 480 + Name[sr]=Бела позадина, 640 x 480 + Name[sr@Latn]=Bela pozadina, 640 x 480 +@@ -46,7 +47,7 @@ + Comment[nn]=Lagar eit bilete på 640 × 480 pikslar med ein kvit bakgrunn. + Comment[pt]=Cria uma imagem de 640 x 480 pontos com um fundo branco. + Comment[pt_BR]=Cria uma imagem de 640 x 480 pixéis com um fundo branco. +-Comment[ru]=Белое, 640x480. ++Comment[ru]=Рисунок 640x480, белый фон. + Comment[sl]=Ustvari sliko velikosti 640 x 480 točk z belim ozadjem. + Comment[sr]=Прави слику од 640 x 480 пиксела са белом позадином. + Comment[sr@Latn]=Pravi sliku od 640 x 480 piksela sa belom pozadinom. +Index: krita/modules/colorspace_cmyk/kritacmykplugin.desktop +=================================================================== +--- krita/modules/colorspace_cmyk/kritacmykplugin.desktop (revision 427945) ++++ krita/modules/colorspace_cmyk/kritacmykplugin.desktop (working copy) +@@ -46,7 +46,7 @@ + Comment[nn]=Fargemodell for CMYK-bilete med 8 bit per kanal + Comment[pt]=Modelo de cor para imagens CMYK com 8 bits por canal + Comment[pt_BR]=Modelo de cor para imagens com 8-bits de canal CMYK +-Comment[ru]=Цветовая модель для изображений в CMYK (болотный, пурпурный, жёлтый, чёрный) 8-бит/канал ++Comment[ru]=Цветовая модель для изображений в CMYK (циан, пурпурный, жёлтый, чёрный) 8-бит/канал + Comment[sl]=Barvni model za slike CMYK z 8 biti/kanal + Comment[sr]=Модел боја за CMYK слике са 8 битова/каналу + Comment[sr@Latn]=Model boja za CMYK slike sa 8 bitova/kanalu +Index: krita/modules/colorspace_cmyk/templates/white_2000x800.desktop +=================================================================== +--- krita/modules/colorspace_cmyk/templates/white_2000x800.desktop (revision 427945) ++++ krita/modules/colorspace_cmyk/templates/white_2000x800.desktop (working copy) +@@ -12,6 +12,7 @@ + Name[es]=2000 x 800 blanco + Name[et]=Valge 2000 x 800 + Name[fr]=Image blanche 2000 x 800 ++Name[ga]=Bán 2000×800 + Name[he]=לבן 2000 x 800 + Name[hu]=fehér 2000 x 800 + Name[it]=Bianco 2000 x 800 +@@ -45,7 +46,7 @@ + Comment[nn]=Lagar eit kvitt CMYK-bilete på 2000 × 800 pikslar. + Comment[pt]=Cria uma imagem CMYK branca com 2000 x 800 pontos. + Comment[pt_BR]=Cria uma imagem CMYK em branco de 2000 x 800 pixéis. +-Comment[ru]=Белое в формате CMYK, 2000x800. ++Comment[ru]=Рисунок CMYK, 2000x800, белый фон. + Comment[sl]=Ustvari belo sliko CMYK velikosti 2000 x 800 točk. + Comment[sr]=Прави белу CMYK слику са 2000 x 800 пиксела. + Comment[sr@Latn]=Pravi belu CMYK sliku sa 2000 x 800 piksela. +Index: krita/data/krita_module.desktop +=================================================================== +--- krita/data/krita_module.desktop (revision 427945) ++++ krita/data/krita_module.desktop (working copy) +@@ -19,6 +19,7 @@ + Comment[pt]=Módulo de funcionalidade nuclear para o Krita + Comment[pt_BR]=Módulo de funcionalidades principais para o Krita + Comment[ru]=Движок Krita ++Comment[sl]=Modul za osnovne zmožnosti Krite + Comment[sr]=Модел основне функционалности за Krita-у + Comment[sr@Latn]=Model osnovne funkcionalnosti za Krita-u + Comment[sv]=Modul med kärnfunktioner för Krita +Index: krita/data/krita_paintop.desktop +=================================================================== +--- krita/data/krita_paintop.desktop (revision 427945) ++++ krita/data/krita_paintop.desktop (working copy) +@@ -17,6 +17,7 @@ + Comment[pt]=Módulo de operações de pintura do Krita + Comment[pt_BR]=plugin de operação de pintura para o Krita + Comment[ru]=Модуль рисования Krita ++Comment[sl]=vstavek za dejanja slikanja za Krito + Comment[sr]=Прикључак за сликарске операције за Krita-у + Comment[sr@Latn]=Priključak za slikarske operacije za Krita-u + Comment[sv]=Målningsinsticksprogram för Krita +Index: krita/kritapart.desktop +=================================================================== +--- krita/kritapart.desktop (revision 427945) ++++ krita/kritapart.desktop (working copy) +@@ -18,7 +18,7 @@ + Name[nn]=KOffice-komponent for biletmanipulering + Name[pt]=Componente de Manipulação de Imagens do KOffice + Name[pt_BR]=Componente de Manipulação de Imagens do KOffice +-Name[ru]=Компонент редактирования изображений KOffice ++Name[ru]=Компонент редактирования изображений + Name[sl]=Komponenta za obdelavo slik za KOffice + Name[sr]=KOffice-ова компонента за манипулацију сликама + Name[sr@Latn]=KOffice-ova komponenta za manipulaciju slikama +@@ -49,7 +49,7 @@ + GenericName[nn]=Bilethandsaming + GenericName[pt]=Manipulação de Imagens + GenericName[pt_BR]=Manipulação de Imagens +-GenericName[ru]=Редактор графических изображений ++GenericName[ru]=Редактирование изображений + GenericName[sl]=Obdelava slik + GenericName[sr]=Манипулација сликама + GenericName[sr@Latn]=Manipulacija slikama +Index: krita/ui/kis_layerbox.cc +=================================================================== +--- krita/ui/kis_layerbox.cc (revision 427945) ++++ krita/ui/kis_layerbox.cc (working copy) +@@ -372,7 +372,7 @@ + void KisLayerBoxItem::init(const QString& label, QListBox *parent, + KisLayerBox::flags f) + { +- KIconLoader il; ++ KIconLoader il( "krita" ); + + m_label = label; + +Index: krita/ui/kis_dockframedocker.cc +=================================================================== +--- krita/ui/kis_dockframedocker.cc (revision 427945) ++++ krita/ui/kis_dockframedocker.cc (working copy) +@@ -125,7 +125,6 @@ + m_page -> lblCaption -> show(); + m_page -> bnShade -> show(); + m_page -> lblCaption -> setText(caption()); +- resize(sizeHint()); + } + else { + m_docked = false; +@@ -133,7 +132,6 @@ + m_page -> bnShade -> hide(); + m_page -> tabWidget -> show(); + m_page -> lblCaption -> setText(""); +- resize(sizeHint()); + } + + } +Index: kchart/kchartpart.desktop +=================================================================== +--- kchart/kchartpart.desktop (revision 427945) ++++ kchart/kchartpart.desktop (working copy) +@@ -20,6 +20,7 @@ + Name[pt]=Componente de Gráficos do KOffice + Name[pt_BR]=Componente de Gráficos do KOffice + Name[ru]=Компонент диаграмм KOffice ++Name[sl]=Komponenta za grafe za KOffice + Name[sr]=KOffice-ова компонента за графике + Name[sr@Latn]=KOffice-ova komponenta za grafike + Name[sv]=Koffice-diagramkomponent +Index: kchart/kdchart/KDDrawText.cpp +=================================================================== +--- kchart/kdchart/KDDrawText.cpp (revision 427945) ++++ kchart/kdchart/KDDrawText.cpp (working copy) +@@ -256,10 +256,12 @@ + painter->setPen( QColor( Qt::darkGreen ) ); + painter->drawRect(x,y,txtWidth,txtHeight); + }else{ ++#if 0 + // Working around a strange Qt bug: Rotated painter must be + // initialized by drawing before text can be painted there. + painter->setPen( QColor( Qt::white ) ); + painter->drawLine( 30000,0,30001,0 ); ++#endif + } + painter->setPen( savePen ); + } +Index: kchart/kchartWizardSelectChartTypePage.cc +=================================================================== +--- kchart/kchartWizardSelectChartTypePage.cc (revision 427945) ++++ kchart/kchartWizardSelectChartTypePage.cc (working copy) +@@ -16,11 +16,11 @@ + namespace KChart + { + +-KChartButton::KChartButton(QWidget *parent, const QString & _text, QPixmap *_pixmap) ++KChartButton::KChartButton(QWidget *parent, const QString & _text, const QPixmap &_pixmap) + : QVBox(parent) + { + m_button = new QPushButton(this); +- m_button->setPixmap(*_pixmap); ++ m_button->setPixmap(_pixmap); + m_button->setToggleButton( true ); + QLabel *label = new QLabel(_text, this); + label->setSizePolicy(QSizePolicy::Fixed,QSizePolicy::Fixed); +@@ -30,16 +30,16 @@ + KChartButton::~KChartButton() + { + } +- ++ + void KChartWizardSelectChartTypePage::addButton(const QString &name, + const QString &icon_name, + int type) + { +- KChartButton *button = new KChartButton( this, name, &BarIcon( icon_name,KIcon::SizeMedium, KIcon::DefaultState,KChartFactory::global() ) ); ++ KChartButton *button = new KChartButton( this, name, BarIcon( icon_name,KIcon::SizeMedium, KIcon::DefaultState,KChartFactory::global() ) ); + _layout->addWidget(button,r_pos,c_pos); + _typeBG->insert( button->button(), type ); + +- if (c_pos == 3) ++ if (c_pos == 3) + { + c_pos=0; + r_pos++; //place the next button in the second row +Index: kchart/kchartWizardSelectChartTypePage.h +=================================================================== +--- kchart/kchartWizardSelectChartTypePage.h (revision 427945) ++++ kchart/kchartWizardSelectChartTypePage.h (working copy) +@@ -23,9 +23,9 @@ + { + Q_OBJECT + public: +- KChartButton(QWidget* parent, const QString &, QPixmap *); ++ KChartButton(QWidget* parent, const QString &, const QPixmap &); + ~KChartButton(); +- ++ + QPushButton *button() const { return m_button;} + private: + QPushButton *m_button; +Index: mimetypes/kde32/vnd.stardivision.math.desktop +=================================================================== +--- mimetypes/kde32/vnd.stardivision.math.desktop (revision 427945) ++++ mimetypes/kde32/vnd.stardivision.math.desktop (working copy) +@@ -25,7 +25,7 @@ + Comment[nn]=StarOffice-formel + Comment[pt]=Documento Matemático do StarOffice + Comment[pt_BR]=Documento do StarOffice Math +-Comment[ru]=Формулы StarOffice ++Comment[ru]=Формула StarOffice + Comment[sl]=Dokument za StarOffice Math + Comment[sr]=StarOffice Math-ов документ + Comment[sr@Latn]=StarOffice Math-ov dokument +Index: mimetypes/kde32/vnd.stardivision.writer-global.desktop +=================================================================== +--- mimetypes/kde32/vnd.stardivision.writer-global.desktop (revision 427945) ++++ mimetypes/kde32/vnd.stardivision.writer-global.desktop (working copy) +@@ -23,7 +23,7 @@ + Comment[nn]=StarOffice Writer-hovuddokument + Comment[pt]=Documento Mestre do Writer do StarOffice + Comment[pt_BR]=Documento Mestre do StarOffice Writer +-Comment[ru]=Основной документ StarOffice Writer ++Comment[ru]=Мастер-документ StarOffice + Comment[sl]=Dokument za StarOffice Writer Master + Comment[sr]=StarOffice Writer-ов главни документ + Comment[sr@Latn]=StarOffice Writer-ov glavni dokument +Index: mimetypes/kde32/vnd.sun.xml.writer.master.desktop +=================================================================== +--- mimetypes/kde32/vnd.sun.xml.writer.master.desktop (revision 427945) ++++ mimetypes/kde32/vnd.sun.xml.writer.master.desktop (working copy) +@@ -20,7 +20,7 @@ + Comment[nn]=OpenOffice.org-hovudtekstdokument + Comment[pt]=Documento Mestre de Texto do OpenOffice.org + Comment[pt_BR]=Documento Mestre de Texto do OpenOffice.org +-Comment[ru]=Основной текстовый документ OpenOffice.org ++Comment[ru]=Мастер-документ OpenOffice.org + Comment[sr]=OpenOffice.org-ов главни текстуални документ + Comment[sr@Latn]=OpenOffice.org-ov glavni tekstualni dokument + Comment[sv]=Openoffice.org huvudtextdokument +Index: mimetypes/kde32/vnd.sun.xml.writer.template.desktop +=================================================================== +--- mimetypes/kde32/vnd.sun.xml.writer.template.desktop (revision 427945) ++++ mimetypes/kde32/vnd.sun.xml.writer.template.desktop (working copy) +@@ -21,7 +21,7 @@ + Comment[nn]=OpenOffice.org-tekstdokumentmal + Comment[pt]=Modelo de Documento de Texto do OpenOffice.org + Comment[pt_BR]=Modelo de Documento de Texto do OpenOffice.org +-Comment[ru]=Шаблон текстового документа OpenОffice.org ++Comment[ru]=Шаблон документа OpenOffice.org + Comment[sl]=Predloga besedilnega dokumenta za OpenOffice.org + Comment[sr]=OpenOffice.org-ов шаблон текстуалног документа + Comment[sr@Latn]=OpenOffice.org-ov šablon tekstualnog dokumenta +Index: mimetypes/kde32/vnd.stardivision.draw.desktop +=================================================================== +--- mimetypes/kde32/vnd.stardivision.draw.desktop (revision 427945) ++++ mimetypes/kde32/vnd.stardivision.draw.desktop (working copy) +@@ -23,7 +23,7 @@ + Comment[nn]=StarOffice-teikning + Comment[pt]=Desenho do StarOffice + Comment[pt_BR]=Desenho do StarOffice +-Comment[ru]=Изображение StarOffice ++Comment[ru]=Рисунок StarOffice + Comment[sl]=Risanje za StarOffice + Comment[sr]=StarOffice-ов цртеж + Comment[sr@Latn]=StarOffice-ov crtež +Index: mimetypes/kde32/vnd.sun.xml.draw.template.desktop +=================================================================== +--- mimetypes/kde32/vnd.sun.xml.draw.template.desktop (revision 427945) ++++ mimetypes/kde32/vnd.sun.xml.draw.template.desktop (working copy) +@@ -20,7 +20,7 @@ + Comment[nn]=OpenOffice.org-teikningsmal + Comment[pt]=Modelo de Desenho do OpenOffice.org + Comment[pt_BR]=Modelo de Desenho do OpenOffice.org +-Comment[ru]=Шаблон изображения OpenOffice.org ++Comment[ru]=Шаблон рисунка OpenOffice.org + Comment[sl]=Predloga risanja za OpenOffice.org + Comment[sr]=OpenOffice.org-ов шаблон цртежа + Comment[sr@Latn]=OpenOffice.org-ov šablon crteža +Index: mimetypes/kde32/vnd.sun.xml.calc.template.desktop +=================================================================== +--- mimetypes/kde32/vnd.sun.xml.calc.template.desktop (revision 427945) ++++ mimetypes/kde32/vnd.sun.xml.calc.template.desktop (working copy) +@@ -21,7 +21,7 @@ + Comment[nn]=OpenOffice.org-reknearkmal + Comment[pt]=Modelo de Folha de Cálculo do OpenOffice.org + Comment[pt_BR]=Modelo de Planilha OpenOffice.org +-Comment[ru]=Шаблон таблицы OpenOffice.org ++Comment[ru]=Шаблон электронной таблицы OpenOffice.org + Comment[sl]=Predloga preglednice za OpenOffice.org + Comment[sr]=OpenOffice.org-ов шаблон прорачунског листа + Comment[sr@Latn]=OpenOffice.org-ov šablon proračunskog lista +Index: mimetypes/kde33/vnd.oasis.opendocument.graphics-template.desktop +=================================================================== +--- mimetypes/kde33/vnd.oasis.opendocument.graphics-template.desktop (revision 427945) ++++ mimetypes/kde33/vnd.oasis.opendocument.graphics-template.desktop (working copy) +@@ -22,7 +22,7 @@ + Comment[nn]=OASIS OpenDocument-teikningsmal + Comment[pt]=Modelo de Desenho OASIS OpenDocument + Comment[pt_BR]=Modelo de Gráfico OpenDocument OASIS +-Comment[ru]=Шаблон графики OASIS OpenDocument Graphics ++Comment[ru]=Шаблон рисунка OASIS OpenDocument Graphics + Comment[sl]=Predloga grafike OASIS OpenDocument + Comment[sr]=OASIS-ов OpenDocument графички шаблон + Comment[sr@Latn]=OASIS-ov OpenDocument grafički šablon +Index: mimetypes/kde33/vnd.oasis.opendocument.graphics.desktop +=================================================================== +--- mimetypes/kde33/vnd.oasis.opendocument.graphics.desktop (revision 427945) ++++ mimetypes/kde33/vnd.oasis.opendocument.graphics.desktop (working copy) +@@ -22,7 +22,7 @@ + Comment[nn]=OASIS OpenDocument-teikning + Comment[pt]=Desenho OASIS OpenDocument + Comment[pt_BR]=Gráfico OpenDocument OASIS +-Comment[ru]=Графика OASIS OpenDocument ++Comment[ru]=Рисунок OASIS OpenDocument + Comment[sl]=Grafika OASIS OpenDocument + Comment[sr]=OASIS-ова OpenDocument графика + Comment[sr@Latn]=OASIS-ova OpenDocument grafika +Index: kivio/kiviopart/kivio_stencil_geometry_panel.cpp +=================================================================== +--- kivio/kiviopart/kivio_stencil_geometry_panel.cpp (revision 427945) ++++ kivio/kiviopart/kivio_stencil_geometry_panel.cpp (working copy) +@@ -96,10 +96,10 @@ + lw->setPixmap( QPixmap((const char **)width_xpm) ); + lh->setPixmap( QPixmap((const char **)height_xpm) ); + +- m_pX = new KoUnitDoubleSpinBox(this, -1000.0, 1000.0, 0.5, 0.0); +- m_pY = new KoUnitDoubleSpinBox(this, -1000.0, 1000.0, 0.5, 0.0); +- m_pW = new KoUnitDoubleSpinBox(this, -1000.0, 1000.0, 0.5, 0.0); +- m_pH = new KoUnitDoubleSpinBox(this, -1000.0, 1000.0, 0.5, 0.0); ++ m_pX = new KoBuggyUnitDoubleSpinBox(this, -1000.0, 1000.0, 0.5, 0.0); ++ m_pY = new KoBuggyUnitDoubleSpinBox(this, -1000.0, 1000.0, 0.5, 0.0); ++ m_pW = new KoBuggyUnitDoubleSpinBox(this, -1000.0, 1000.0, 0.5, 0.0); ++ m_pH = new KoBuggyUnitDoubleSpinBox(this, -1000.0, 1000.0, 0.5, 0.0); + m_rotationSBox = new KIntSpinBox(-360, 360, 1, 0, 10, this); + m_rotationSBox->hide(); + +Index: kivio/kiviopart/kivio_stencil_geometry_panel.h +=================================================================== +--- kivio/kiviopart/kivio_stencil_geometry_panel.h (revision 427945) ++++ kivio/kiviopart/kivio_stencil_geometry_panel.h (working copy) +@@ -5,14 +5,14 @@ + #include <koUnit.h> + + class KoPageLayout; +-class KoUnitDoubleSpinBox; ++class KoBuggyUnitDoubleSpinBox; + class KIntSpinBox; + + class KivioStencilGeometryPanel : public QWidget + { + Q_OBJECT + protected: +- KoUnitDoubleSpinBox *m_pX, *m_pY, *m_pW, *m_pH; ++ KoBuggyUnitDoubleSpinBox *m_pX, *m_pY, *m_pW, *m_pH; + KIntSpinBox* m_rotationSBox; + KoUnit::Unit m_unit; + bool m_emitSignals; +Index: kivio/kiviopart/kivio_view.h +=================================================================== +--- kivio/kiviopart/kivio_view.h (revision 427945) ++++ kivio/kiviopart/kivio_view.h (working copy) +@@ -63,7 +63,7 @@ + class DCOPObject; + class KoRuler; + class KoZoomHandler; +-class KoUnitDoubleSpinBox; ++class KoBuggyUnitDoubleSpinBox; + class KStatusBarLabel; + class KoLineWidthAction; + class KoLineStyleAction; +Index: kivio/kiviopart/ui/kiviostencilformatdlg.cpp +=================================================================== +--- kivio/kiviopart/ui/kiviostencilformatdlg.cpp (revision 427945) ++++ kivio/kiviopart/ui/kiviostencilformatdlg.cpp (working copy) +@@ -46,7 +46,7 @@ + QGridLayout* gl = new QGridLayout(mainWidget, 3, 2, KDialog::marginHint(), KDialog::spacingHint()); + + QLabel* lineWidthLbl = new QLabel(i18n("Line &width:"), mainWidget); +- m_lineWidthUSBox = new KoUnitDoubleSpinBox(mainWidget, 0.0, 1000.0, 0.1, 1.0, m_unit, 2); ++ m_lineWidthUSBox = new KoBuggyUnitDoubleSpinBox(mainWidget, 0.0, 1000.0, 0.1, 1.0, m_unit, 2); + lineWidthLbl->setBuddy(m_lineWidthUSBox); + QLabel* lineColorLbl = new QLabel(i18n("Line &color:"), mainWidget); + m_lineCBtn = new KColorButton(mainWidget); +Index: kivio/kiviopart/ui/kiviostencilformatdlg.h +=================================================================== +--- kivio/kiviopart/ui/kiviostencilformatdlg.h (revision 427945) ++++ kivio/kiviopart/ui/kiviostencilformatdlg.h (working copy) +@@ -24,7 +24,7 @@ + + #include <koUnit.h> + +-class KoUnitDoubleSpinBox; ++class KoBuggyUnitDoubleSpinBox; + class KColorButton; + class KComboBox; + class KivioView; +@@ -61,7 +61,7 @@ + void initLineEndStyles(); + + protected: +- KoUnitDoubleSpinBox* m_lineWidthUSBox; ++ KoBuggyUnitDoubleSpinBox* m_lineWidthUSBox; + KColorButton* m_lineCBtn; + KColorButton* m_fillCBtn; + KComboBox* m_patternCBox; +Index: kivio/kiviopart/ui/kiviooptionsdialog.cpp +=================================================================== +--- kivio/kiviopart/ui/kiviooptionsdialog.cpp (revision 427945) ++++ kivio/kiviopart/ui/kiviooptionsdialog.cpp (working copy) +@@ -178,20 +178,20 @@ + gridColorLbl->setBuddy(m_gridColorBtn); + QGroupBox* spacingGrp = new QGroupBox(2, Qt::Horizontal, i18n("Spacing"), page); + QLabel* spaceHorizLbl = new QLabel(i18n("&Horizontal:"), spacingGrp); +- m_spaceHorizUSpin = new KoUnitDoubleSpinBox(spacingGrp, 0.0, pgw, 0.1, ++ m_spaceHorizUSpin = new KoBuggyUnitDoubleSpinBox(spacingGrp, 0.0, pgw, 0.1, + fw, unit); + spaceHorizLbl->setBuddy(m_spaceHorizUSpin); + QLabel* spaceVertLbl = new QLabel(i18n("&Vertical:"), spacingGrp); +- m_spaceVertUSpin = new KoUnitDoubleSpinBox(spacingGrp, 0.0, pgh, 0.1, ++ m_spaceVertUSpin = new KoBuggyUnitDoubleSpinBox(spacingGrp, 0.0, pgh, 0.1, + fh, unit); + spaceVertLbl->setBuddy(m_spaceVertUSpin); + QGroupBox* snapGrp = new QGroupBox(2, Qt::Horizontal, i18n("Snap Distance"), page); + QLabel* snapHorizLbl = new QLabel(i18n("H&orizontal:"), snapGrp); +- m_snapHorizUSpin = new KoUnitDoubleSpinBox(snapGrp, 0.0, fw, 0.1, ++ m_snapHorizUSpin = new KoBuggyUnitDoubleSpinBox(snapGrp, 0.0, fw, 0.1, + sw, unit); + snapHorizLbl->setBuddy(m_snapHorizUSpin); + QLabel* snapVertLbl = new QLabel(i18n("V&ertical:"), snapGrp); +- m_snapVertUSpin = new KoUnitDoubleSpinBox(snapGrp, 0.0, fh, 0.1, ++ m_snapVertUSpin = new KoBuggyUnitDoubleSpinBox(snapGrp, 0.0, fh, 0.1, + sh, unit); + snapVertLbl->setBuddy(m_snapVertUSpin); + +@@ -245,7 +245,7 @@ + orientBGrp->insert(m_orientVertRBtn); + QLabel* posLbl = new QLabel(i18n("&Position:"), m_propertiesGrp); + KoUnit::Unit unit = view->doc()->units(); +- m_posUSpin = new KoUnitDoubleSpinBox(m_propertiesGrp, 0.0, 0.0, 0.0, unit); ++ m_posUSpin = new KoBuggyUnitDoubleSpinBox(m_propertiesGrp, 0.0, 0.0, 0.0, unit); + posLbl->setBuddy(m_posUSpin); + + QGridLayout* pgl = new QGridLayout(m_propertiesGrp->layout()); +Index: kivio/kiviopart/ui/kivioarrowheadformatdlg.cpp +=================================================================== +--- kivio/kiviopart/ui/kivioarrowheadformatdlg.cpp (revision 427945) ++++ kivio/kiviopart/ui/kivioarrowheadformatdlg.cpp (working copy) +@@ -53,10 +53,10 @@ + loadArrowHeads(m_startAHTypeCBox, false); + startAHTypeLbl->setBuddy(m_startAHTypeCBox); + QLabel* startAHWidthLbl = new QLabel(i18n("&Width:"), startGBox); +- m_startAHWidthUSBox = new KoUnitDoubleSpinBox(startGBox, 0.0, 1000.0, 0.1, 1.0, m_unit, 2); ++ m_startAHWidthUSBox = new KoBuggyUnitDoubleSpinBox(startGBox, 0.0, 1000.0, 0.1, 1.0, m_unit, 2); + startAHWidthLbl->setBuddy(m_startAHWidthUSBox); + QLabel* startAHHeightLbl = new QLabel(i18n("&Length:"), startGBox); +- m_startAHHeightUSBox = new KoUnitDoubleSpinBox(startGBox, 0.0, 1000.0, 0.1, 1.0, m_unit, 2); ++ m_startAHHeightUSBox = new KoBuggyUnitDoubleSpinBox(startGBox, 0.0, 1000.0, 0.1, 1.0, m_unit, 2); + startAHHeightLbl->setBuddy(m_startAHHeightUSBox); + + QGroupBox* endGBox = new QGroupBox(2, Qt::Horizontal, i18n("Arrowhead at End"), mainWidget); +@@ -65,10 +65,10 @@ + loadArrowHeads(m_endAHTypeCBox, true); + endAHTypeLbl->setBuddy(m_endAHTypeCBox); + QLabel* endAHWidthLbl = new QLabel(i18n("W&idth:"), endGBox); +- m_endAHWidthUSBox = new KoUnitDoubleSpinBox(endGBox, 0.0, 1000.0, 0.1, 1.0, m_unit, 2); ++ m_endAHWidthUSBox = new KoBuggyUnitDoubleSpinBox(endGBox, 0.0, 1000.0, 0.1, 1.0, m_unit, 2); + endAHWidthLbl->setBuddy(m_endAHWidthUSBox); + QLabel* endAHHeightLbl = new QLabel(i18n("L&ength:"), endGBox); +- m_endAHHeightUSBox = new KoUnitDoubleSpinBox(endGBox, 0.0, 1000.0, 0.1, 1.0, m_unit, 2); ++ m_endAHHeightUSBox = new KoBuggyUnitDoubleSpinBox(endGBox, 0.0, 1000.0, 0.1, 1.0, m_unit, 2); + endAHHeightLbl->setBuddy(m_endAHHeightUSBox); + + gl->addWidget(startGBox, 0, 0); +Index: kivio/kiviopart/ui/kiviooptionsdialog.h +=================================================================== +--- kivio/kiviopart/ui/kiviooptionsdialog.h (revision 427945) ++++ kivio/kiviopart/ui/kiviooptionsdialog.h (working copy) +@@ -32,7 +32,7 @@ + class QRadioButton; + class KColorButton; + class KURLRequester; +-class KoUnitDoubleSpinBox; ++class KoBuggyUnitDoubleSpinBox; + class KivioGuideLineData; + class QGroupBox; + class QFont; +@@ -105,17 +105,17 @@ + KoPageLayout m_layout; + QLabel* m_fontTxtLbl; + QFont m_font; +- KoUnitDoubleSpinBox* m_spaceHorizUSpin; +- KoUnitDoubleSpinBox* m_spaceVertUSpin; +- KoUnitDoubleSpinBox* m_snapHorizUSpin; +- KoUnitDoubleSpinBox* m_snapVertUSpin; ++ KoBuggyUnitDoubleSpinBox* m_spaceHorizUSpin; ++ KoBuggyUnitDoubleSpinBox* m_spaceVertUSpin; ++ KoBuggyUnitDoubleSpinBox* m_snapHorizUSpin; ++ KoBuggyUnitDoubleSpinBox* m_snapVertUSpin; + QCheckBox* m_gridChBox; + QCheckBox* m_snapChBox; + KColorButton* m_gridColorBtn; + KListView* m_guideList; + QRadioButton* m_orientHorizRBtn; + QRadioButton* m_orientVertRBtn; +- KoUnitDoubleSpinBox* m_posUSpin; ++ KoBuggyUnitDoubleSpinBox* m_posUSpin; + QCheckBox* m_snapGuideChBox; + QCheckBox* m_guidesChBox; + KColorButton* m_guideColorBtn; +Index: kivio/kiviopart/ui/kivioarrowheadformatdlg.h +=================================================================== +--- kivio/kiviopart/ui/kivioarrowheadformatdlg.h (revision 427945) ++++ kivio/kiviopart/ui/kivioarrowheadformatdlg.h (working copy) +@@ -24,7 +24,7 @@ + + #include <koUnit.h> + +-class KoUnitDoubleSpinBox; ++class KoBuggyUnitDoubleSpinBox; + class KComboBox; + class KivioView; + +@@ -58,10 +58,10 @@ + void loadArrowHeads(KComboBox* combo, bool endArrow); + + protected: +- KoUnitDoubleSpinBox* m_startAHWidthUSBox; +- KoUnitDoubleSpinBox* m_startAHHeightUSBox; +- KoUnitDoubleSpinBox* m_endAHWidthUSBox; +- KoUnitDoubleSpinBox* m_endAHHeightUSBox; ++ KoBuggyUnitDoubleSpinBox* m_startAHWidthUSBox; ++ KoBuggyUnitDoubleSpinBox* m_startAHHeightUSBox; ++ KoBuggyUnitDoubleSpinBox* m_endAHWidthUSBox; ++ KoBuggyUnitDoubleSpinBox* m_endAHHeightUSBox; + KComboBox* m_startAHTypeCBox; + KComboBox* m_endAHTypeCBox; + KoUnit::Unit m_unit; +Index: kpresenter/kppieobject.h +=================================================================== +--- kpresenter/kppieobject.h (revision 427945) ++++ kpresenter/kppieobject.h (working copy) +@@ -1,5 +1,6 @@ + /* This file is part of the KDE project + Copyright (C) 1998, 1999 Reginald Stadlbauer <reggie@kde.org> ++ Copyright (C) 2005 Thorsten Zachmann <zachmann@kde.org> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public +@@ -79,7 +80,6 @@ + { return lineEnd; } + + virtual QDomDocumentFragment save( QDomDocument& doc, double offset ); +- virtual bool saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj ) const; + + virtual double load(const QDomElement &element); + virtual void flip(bool horizontal ); +@@ -89,6 +89,9 @@ + virtual KoPoint getRealOrig() const; + + protected: ++ virtual const char * getOasisElementName() const; ++ virtual bool saveOasisObjectAttributes( KPOasisSaveContext &sc ) const; ++ + virtual void paint( QPainter *_painter, KoZoomHandler*_zoomHandler, + int /* pageNum */, bool drawingShadow, bool drawContour ); + +Index: kpresenter/kpcubicbeziercurveobject.h +=================================================================== +--- kpresenter/kpcubicbeziercurveobject.h (revision 427945) ++++ kpresenter/kpcubicbeziercurveobject.h (working copy) +@@ -1,6 +1,7 @@ + // -*- Mode: c++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 4; -*- + /* This file is part of the KDE project + Copyright (C) 2001 Toshitaka Fujioka <fujioka@kde.org> ++ Copyright (C) 2005 Thorsten Zachmann <zachmann@kde.org> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public +@@ -42,10 +43,9 @@ + virtual QString getTypeString() const { return i18n("Cubic Bezier Curve"); } + + virtual QDomDocumentFragment save( QDomDocument& doc,double offset ); +- virtual bool saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj ) const; + + virtual double load( const QDomElement &element ); +- virtual void loadOasis( const QDomElement &element, KoOasisContext & context,KPRLoadingInfo* info ); ++ virtual void loadOasis( const QDomElement &element, KoOasisContext & context, KPRLoadingInfo* info ); + + virtual void flip(bool horizontal ); + void closeObject(bool _close); +@@ -53,6 +53,9 @@ + + + protected: ++ virtual const char * getOasisElementName() const; ++ virtual bool saveOasisObjectAttributes( KPOasisSaveContext &sc ) const; ++ + virtual void updatePoints( double _fx, double _fy ); + virtual KoPointArray getDrawingPoints() const; + +Index: kpresenter/kprectobject.h +=================================================================== +--- kpresenter/kprectobject.h (revision 427945) ++++ kpresenter/kprectobject.h (working copy) +@@ -53,9 +53,11 @@ + virtual QDomDocumentFragment save( QDomDocument& doc, double offset ); + virtual double load(const QDomElement &element); + virtual void loadOasis(const QDomElement &element, KoOasisContext &context, KPRLoadingInfo *info); +- virtual bool saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj ) const; + + protected: ++ virtual const char * getOasisElementName() const; ++ virtual bool saveOasisObjectAttributes( KPOasisSaveContext &sc ) const; ++ + virtual void paint( QPainter *_painter,KoZoomHandler*_zoomHandler, + int /* pageNum */, bool drawingShadow, bool drawContour ); + +Index: kpresenter/kpellipseobject.h +=================================================================== +--- kpresenter/kpellipseobject.h (revision 427945) ++++ kpresenter/kpellipseobject.h (working copy) +@@ -49,9 +49,11 @@ + { return i18n("Ellipse"); } + + virtual KoSize getRealSize() const; +- virtual bool saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj ) const; + + protected: ++ virtual const char * getOasisElementName() const; ++ virtual bool saveOasisObjectAttributes( KPOasisSaveContext &sc ) const; ++ + virtual void paint( QPainter *_painter,KoZoomHandler *_zoomHandler, + int /* pageNum */, bool drawingShadow, bool drawContour = FALSE ); + +Index: kpresenter/kpfreehandobject.h +=================================================================== +--- kpresenter/kpfreehandobject.h (revision 427945) ++++ kpresenter/kpfreehandobject.h (working copy) +@@ -1,6 +1,7 @@ + // -*- Mode: c++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 4; -*- + /* This file is part of the KDE project + Copyright (C) 2001 Toshitaka Fujioka <fujioka@kde.org> ++ Copyright (C) 2005 Thorsten Zachmann <zachmann@kde.org> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public +@@ -43,8 +44,11 @@ + + virtual QDomDocumentFragment save( QDomDocument& doc,double offset ); + virtual double load( const QDomElement &element ); +- virtual bool saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj ) const; ++ virtual void loadOasis( const QDomElement &element, KoOasisContext & context, KPRLoadingInfo* info ); + ++protected: ++ virtual const char * getOasisElementName() const; ++ virtual bool saveOasisObjectAttributes( KPOasisSaveContext &sc ) const; + }; + + #endif +Index: kpresenter/kppointobject.cc +=================================================================== +--- kpresenter/kppointobject.cc (revision 427945) ++++ kpresenter/kppointobject.cc (working copy) +@@ -1,6 +1,6 @@ + // -*- Mode: c++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 4; -*- + /* This file is part of the KDE project +- Copyright (C) 2004 Thorsten Zachmann <zachmann@kde.org> ++ Copyright (C) 2004-2005 Thorsten Zachmann <zachmann@kde.org> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public +@@ -83,71 +83,24 @@ + return fragment; + } + +-QString KPPointObject::saveOasisStrokeElement( KoGenStyles& mainStyles ) const ++const char * KPPointObject::getOasisElementName() const + { +- KoGenStyle styleobjectauto( KoGenStyle::STYLE_GRAPHICAUTO, "graphic" ); +- saveOasisMarkerElement( mainStyles, styleobjectauto ); +- saveOasisObjectProtectStyle( styleobjectauto ); +- KPShadowObject::saveOasisStrokeElement( mainStyles, styleobjectauto ); +- return mainStyles.lookup( styleobjectauto, "gr" ); ++ return "draw:custom-shape"; + } + +- +-bool KPPointObject::saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context ) const +-{ +- QString listOfPoint; +- int maxX=0; +- int maxY=0; +- KoPointArray::ConstIterator it; +- for ( it = points.begin(); it != points.end(); ++it ) { +- int tmpX = 0; +- int tmpY = 0; +- tmpX = ( int ) ( KoUnit::toMM( ( *it ).x() )*100 ); +- tmpY = ( int ) ( KoUnit::toMM( ( *it ).y() )*100 ); +- if ( !listOfPoint.isEmpty() ) +- listOfPoint += QString( " %1,%2" ).arg( tmpX ).arg( tmpY ); +- else +- listOfPoint = QString( "%1,%2" ).arg( tmpX ).arg( tmpY ); +- maxX = QMAX( maxX, tmpX ); +- maxY = QMAX( maxY, tmpY ); +- } +- xmlWriter.addAttribute("draw:points", listOfPoint ); +- xmlWriter.addAttribute("svg:viewBox", QString( "0 0 %1 %2" ).arg( maxX ).arg( maxY ) ); +- return true; +-} +- + void KPPointObject::loadOasisMarker( KoOasisContext & context ) + { + loadOasisMarkerElement( context, "marker-start", lineBegin ); + loadOasisMarkerElement( context, "marker-end", lineEnd ); + } + +-void KPPointObject::loadOasis( const QDomElement &element, KoOasisContext & context, KPRLoadingInfo *info ) ++void KPPointObject::fillStyle( KoGenStyle& styleObjectAuto, KoGenStyles& mainStyles ) const + { +- //kdDebug()<<"void KPPointObject::loadOasis( const QDomElement &element )*************\n"; +- KPShadowObject::loadOasis( element, context, info ); +- //load point. +- QStringList ptList = QStringList::split(' ', element.attributeNS( KoXmlNS::draw, "points", QString::null)); +- QString pt_x, pt_y; +- double tmp_x, tmp_y; +- unsigned int index = 0; +- for (QStringList::Iterator it = ptList.begin(); it != ptList.end(); ++it) +- { +- tmp_x = (*it).section(',',0,0).toInt() / 100; +- tmp_y = (*it).section(',',1,1).toInt() / 100; +- +- pt_x.setNum(tmp_x); +- pt_x+="mm"; +- +- pt_y.setNum(tmp_y); +- pt_y+="mm"; +- +- points.putPoints( index, 1, KoUnit::parseValue(pt_x),KoUnit::parseValue(pt_y) ); +- ++index; +- } +- loadOasisMarker( context ); ++ KPShadowObject::fillStyle( styleObjectAuto, mainStyles ); ++ saveOasisMarkerElement( mainStyles, styleObjectAuto ); + } + ++ + double KPPointObject::load( const QDomElement &element ) + { + double offset = KPShadowObject::load( element ); +Index: kpresenter/kplineobject.h +=================================================================== +--- kpresenter/kplineobject.h (revision 427945) ++++ kpresenter/kplineobject.h (working copy) +@@ -1,6 +1,7 @@ + // -*- Mode: c++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 4; -*- + /* This file is part of the KDE project + Copyright (C) 1998, 1999 Reginald Stadlbauer <reggie@kde.org> ++ Copyright (C) 2005 Thorsten Zachmann <zachmann@kde.org> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public +@@ -63,16 +64,18 @@ + virtual double load(const QDomElement &element); + virtual void loadOasis(const QDomElement &element, KoOasisContext & context, KPRLoadingInfo *info); + +- virtual bool saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj ) const; +- + virtual void flip(bool horizontal ); + + virtual KoSize getRealSize() const; + virtual KoPoint getRealOrig() const; + + protected: +- QString saveOasisStrokeElement( KoGenStyles& mainStyles ) const; ++ virtual const char * getOasisElementName() const; ++ virtual bool saveOasisObjectAttributes( KPOasisSaveContext &sc ) const; ++ virtual void saveOasisPosObject( KoXmlWriter &xmlWriter, int indexObj ) const; + ++ virtual void fillStyle( KoGenStyle& styleObjectAuto, KoGenStyles& mainStyles ) const; ++ + virtual void paint( QPainter *_painter, KoZoomHandler*_zoomHandler, + int /* pageNum */, bool drawingShadow, bool drawContour = FALSE ); + LineType lineType; +Index: kpresenter/kppointobject.h +=================================================================== +--- kpresenter/kppointobject.h (revision 427945) ++++ kpresenter/kppointobject.h (working copy) +@@ -1,6 +1,6 @@ + // -*- Mode: c++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 4; -*- + /* This file is part of the KDE project +- Copyright (C) 2004 Thorsten Zachmann <zachmann@kde.org> ++ Copyright (C) 2004-2005 Thorsten Zachmann <zachmann@kde.org> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public +@@ -34,10 +34,8 @@ + virtual KoPoint getRealOrig() const; + + virtual QDomDocumentFragment save( QDomDocument& doc, double offset ); +- virtual bool saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context ) const; + + virtual double load( const QDomElement &element ); +- virtual void loadOasis( const QDomElement &element, KoOasisContext & context, KPRLoadingInfo *info ); + + virtual void setLineBegin( LineEnd _lineBegin ) { lineBegin = _lineBegin; } + virtual void setLineEnd( LineEnd _lineEnd ) { lineEnd = _lineEnd; } +@@ -53,10 +51,13 @@ + + virtual void closeObject( bool close ); + virtual bool isClosed() const; +- virtual QString saveOasisStrokeElement( KoGenStyles& mainStyles ) const; + + protected: ++ virtual const char * getOasisElementName() const; ++ + void loadOasisMarker( KoOasisContext & context ); ++ virtual void fillStyle( KoGenStyle& styleObjectAuto, KoGenStyles& mainStyles ) const; ++ + virtual void paint( QPainter *_painter,KoZoomHandler*_zoomHandler, + int /* pageNum */, bool drawingShadow, bool drawContour = FALSE ); + virtual void updatePoints( double _fx, double _fy ); +Index: kpresenter/kpautoformobject.cc +=================================================================== +--- kpresenter/kpautoformobject.cc (revision 427945) ++++ kpresenter/kpautoformobject.cc (working copy) +@@ -76,12 +76,17 @@ + } + + +-bool KPAutoformObject::saveOasis( KoXmlWriter & xmlWriter, KoSavingContext& context, int indexObj ) const ++bool KPAutoformObject::saveOasisObjectAttributes( KPOasisSaveContext &sc ) const + { +- kdDebug()<<"bool KPAutoformObject::saveOasis( KoXmlWriter & xmlWriter ) not implemented\n"; ++ kdDebug()<<"bool KPAutoformObject::saveOasisObjectAttributes( KPOasisSaveContext &sc ) not implemented\n"; + return true; + } + ++const char * KPAutoformObject::getOasisElementName() const ++{ ++ return "draw:custom-shape"; ++} ++ + QDomDocumentFragment KPAutoformObject::save( QDomDocument& doc, double offset ) + { + QDomDocumentFragment fragment=KP2DObject::save(doc, offset); +Index: kpresenter/kpgroupobject.h +=================================================================== +--- kpresenter/kpgroupobject.h (revision 427945) ++++ kpresenter/kpgroupobject.h (working copy) +@@ -1,6 +1,7 @@ + // -*- Mode: c++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 4; -*- + /* This file is part of the KDE project + Copyright (C) 1998, 1999 Reginald Stadlbauer <reggie@kde.org> ++ Copyright (C) 2005 Thorsten Zachmann <zachmann@kde.org> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public +@@ -70,7 +71,6 @@ + virtual QDomDocumentFragment save( QDomDocument& doc, double offset ); + virtual double load(const QDomElement &element, KPresenterDoc *doc); + virtual void loadOasisGroupObject( KPresenterDoc *doc, KPrPage * newpage, QDomNode &element, KoOasisContext & context, KPRLoadingInfo *info); +- virtual bool saveOasis(KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj) const; + + virtual void draw( QPainter *_painter, KoZoomHandler *_zoomhandler, + int pageNum, SelectionMode selectionMode, bool drawContour = FALSE ); +@@ -101,6 +101,9 @@ + virtual void decCmdRef(); + + protected: ++ virtual const char * getOasisElementName() const; ++ virtual bool saveOasisObjectAttributes( KPOasisSaveContext &sc ) const; ++ + void updateSizes( double fx, double fy ); + void updateCoords( double dx, double dy ); + +Index: kpresenter/kppixmapobject.h +=================================================================== +--- kpresenter/kppixmapobject.h (revision 427945) ++++ kpresenter/kppixmapobject.h (working copy) +@@ -2,6 +2,7 @@ + + /* This file is part of the KDE project + Copyright (C) 1998, 1999 Reginald Stadlbauer <reggie@kde.org> ++ Copyright (C) 2005 Thorsten Zachmann <zachmann@kde.org> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public +@@ -72,7 +73,6 @@ + { return i18n("Picture"); } + + virtual QDomDocumentFragment save( QDomDocument& doc, double offset ); +- virtual bool saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj ) const; + + virtual double load(const QDomElement &element); + virtual void loadOasis(const QDomElement &element, KoOasisContext & context, KPRLoadingInfo *info); +@@ -113,11 +113,15 @@ + virtual void flip(bool horizontal ); + + protected: ++ virtual const char * getOasisElementName() const; ++ virtual bool saveOasisObjectAttributes( KPOasisSaveContext &sc ) const; ++ + KPPixmapObject() {} + + QPixmap changePictureSettings( QPixmap _tmpPixmap ); +- virtual void saveOasisPictureElement( KoGenStyle &styleobjectauto ); ++ virtual void saveOasisPictureElement( KoGenStyle &styleobjectauto ) const; + void loadOasisPictureEffect(KoOasisContext & context ); ++ virtual void fillStyle( KoGenStyle& styleObjectAuto, KoGenStyles& mainStyles ) const; + + /** + * @internal +Index: kpresenter/kppartobject.h +=================================================================== +--- kpresenter/kppartobject.h (revision 427945) ++++ kpresenter/kppartobject.h (working copy) +@@ -49,14 +49,15 @@ + + KPresenterChild *getChild() const { return child; } + void enableDrawing( bool f ) { _enableDrawing = f; } +- virtual bool saveOasisPart( KoXmlWriter &xmlWriter, KoStore *store, KoSavingContext& context, int indexObj, int partIndexObj, KoXmlWriter* manifestWriter ) const; + virtual void loadOasis(const QDomElement &element, KoOasisContext &context, KPRLoadingInfo *info); +- virtual bool saveOasis( KoXmlWriter &xmlWriter, KoSavingContext &context, int indexObj ) const { return true;/* use saveOasisPart*/}; + + public slots: + void slot_changed( KoChild *_koChild ); + + protected: ++ virtual const char * getOasisElementName() const; ++ virtual bool saveOasisObjectAttributes( KPOasisSaveContext &sc ) const; ++ + void updateChildGeometry(); + virtual void paint( QPainter *_painter,KoZoomHandler*_zoomHandler, + int /* pageNum */, bool drawingShadow, bool drawContour = FALSE ); +Index: kpresenter/kpobject.cc +=================================================================== +--- kpresenter/kpobject.cc (revision 427945) ++++ kpresenter/kpobject.cc (working copy) +@@ -344,7 +344,7 @@ + xmlWriter.addAttributePt( "svg:width", ext.width() ); + xmlWriter.addAttributePt( "svg:height", ext.height() ); + +- if ( angle!=0.0 ) ++ if ( kAbs( angle ) > 1E-6 ) + { + double value = -1 * ( ( double )angle* M_PI )/180.0; + QString str=QString( "rotate (%1)" ).arg( value ); +@@ -362,6 +362,40 @@ + } + } + ++QString KPObject::getStyle( KPOasisSaveContext &sc ) const ++{ ++ kdDebug(33001) << "KPObject::getStyle" << endl; ++ KoGenStyle styleObjectAuto; ++ KoGenStyles &mainStyles( sc.context.mainStyles() ); ++ if ( sc.onMaster ) ++ { ++ styleObjectAuto = KoGenStyle( KPresenterDoc::STYLE_PRESENTATIONSTICKYOBJECT, "presentation" ); ++ } ++ else ++ { ++ styleObjectAuto = KoGenStyle( KoGenStyle::STYLE_GRAPHICAUTO, "graphic" ); ++ } ++ fillStyle( styleObjectAuto, mainStyles ); ++ if ( sc.onMaster ) ++ { ++ return mainStyles.lookup( styleObjectAuto, "pr" ); ++ } ++ return mainStyles.lookup( styleObjectAuto, "gr" ); ++} ++ ++void KPObject::fillStyle( KoGenStyle& styleObjectAuto, KoGenStyles& /* mainStyles */ ) const ++{ ++ kdDebug(33001) << "KPObject::fillStyle" << endl; ++ saveOasisObjectProtectStyle( styleObjectAuto ); ++ saveOasisShadowElement( styleObjectAuto ); ++} ++ ++bool KPObject::saveOasisObjectAttributes( KPOasisSaveContext &/* sc */ ) const ++{ ++ kdDebug()<<"bool saveOasisObjectAttributes not implemented"; ++ return true; ++} ++ + bool KPObject::haveAnimation() const + { + //kdDebug()<<" effect :"<<effect<<" effect3 :"<<effect3<<" a_fileName :"<<a_fileName<<" d_fileName :"<<d_fileName<<" appearTimer :"<<appearTimer<<" disappearTimer :"<<disappearTimer<<endl; +@@ -849,6 +883,20 @@ + } + } + ++bool KPObject::saveOasisObject( KPOasisSaveContext &sc ) const ++{ ++ sc.xmlWriter.startElement( getOasisElementName() ); ++ sc.xmlWriter.addAttribute( "draw:style-name", getStyle( sc ) ); ++ saveOasisPosObject( sc.xmlWriter, sc.indexObj ); ++ if( !objectName.isEmpty()) ++ sc.xmlWriter.addAttribute( "draw:name", objectName ); ++ ++ saveOasisObjectAttributes( sc ); ++ ++ sc.xmlWriter.endElement(); ++ return true; ++} ++ + void KPObject::saveOasisShadowElement( KoGenStyle &styleobjectauto ) const + { + //FIXME default value +@@ -1628,6 +1676,99 @@ + // <draw:stroke-dash draw:name="Fine Dotted" draw:style="rect" draw:dots1="1" draw:distance="0.457cm"/> + } + ++bool KPShadowObject::saveOasisDrawPoints( const KoPointArray &points, KPOasisSaveContext &sc ) ++{ ++ QString listOfPoint; ++ int maxX=0; ++ int maxY=0; ++ KoPointArray::ConstIterator it( points.begin() ); ++ for ( ; it != points.end(); ++it ) ++ { ++ int tmpX = int( ( *it ).x() * 10000 ); ++ int tmpY = int( ( *it ).y() * 10000 ); ++ //if ( !listOfPoint.isEmpty() ) ++ listOfPoint += QString( " %1,%2" ).arg( tmpX ).arg( tmpY ); ++ //else ++ // listOfPoint = QString( "%1,%2" ).arg( tmpX ).arg( tmpY ); ++ maxX = QMAX( maxX, tmpX ); ++ maxY = QMAX( maxY, tmpY ); ++ } ++ sc.xmlWriter.addAttribute("draw:points", listOfPoint ); ++ sc.xmlWriter.addAttribute("svg:viewBox", QString( "0 0 %1 %2" ).arg( maxX ).arg( maxY ) ); ++ return true; ++} ++ ++bool KPShadowObject::loadOasisDrawPoints( KoPointArray &points, const QDomElement &element, ++ KoOasisContext & context, KPRLoadingInfo *info ) ++{ ++ QStringList ptList = QStringList::split(' ', element.attributeNS( KoXmlNS::draw, "points", QString::null)); ++ QStringList viewBox = QStringList::split( ' ', element.attributeNS( KoXmlNS::svg, "viewBox", QString::null ) ); ++ //for ( QStringList::Iterator it = viewBox.begin(); it != viewBox.end(); ++it ) ++ //{ ++ // kdDebug(33001) << "viewBox = " << *it << endl; ++ //} ++ ++ int left = 0; ++ int top = 0; ++ int right = 0; ++ int bottom = 0; ++ ++ if ( viewBox.size() == 4 ) ++ { ++ QStringList::Iterator it = viewBox.begin(); ++ left = ( *it++ ).toInt(); ++ top = ( *it++ ).toInt(); ++ right = ( *it++ ).toInt(); ++ bottom = ( *it ).toInt(); ++ //kdDebug(33001) << "left = " << left ++ // << "top = " << top ++ // << "right =" << right ++ // << "bottom =" << bottom << endl; ++ } ++ else ++ { ++ //if no viewBox is found ++ for (QStringList::Iterator it = ptList.begin(); it != ptList.end(); ++it) ++ { ++ right = QMAX( (*it).section( ',', 0, 0 ).toInt(), right ); ++ bottom = QMAX( (*it).section( ',', 1, 1 ).toInt(), bottom ); ++ } ++ } ++ ++ if ( right - left != 0 && bottom - top != 0 ) ++ { ++ double tmp_x, tmp_y; ++ unsigned int index = 0; ++ for (QStringList::Iterator it = ptList.begin(); it != ptList.end(); ++it) ++ { ++ tmp_x = double( (*it).section( ',', 0, 0 ).toInt() + left ) / ( right - left ) * ext.width(); ++ tmp_y = double( (*it).section( ',', 1, 1 ).toInt() + top ) / ( bottom - top ) * ext.height(); ++ ++ //kdDebug(33001) << "p" << index << " x: " << tmp_x << endl; ++ //kdDebug(33001) << "p" << index << " y: " << tmp_y << endl; ++ ++ points.putPoints( index, 1, tmp_x, tmp_y ); ++ ++index; ++ } ++ } ++ else ++ { ++ kdDebug(33001) << "problem in viewBox values are: " ++ << "left = " << left << ", " ++ << "top = " << top << ", " ++ << "right =" << right << ", " ++ << "bottom =" << bottom << endl; ++ } ++ return true; ++} ++ ++void KPShadowObject::fillStyle( KoGenStyle& styleObjectAuto, KoGenStyles& mainStyles ) const ++{ ++ kdDebug(33001) << "KPShadowObject::fillStyle" << endl; ++ KPObject::fillStyle( styleObjectAuto, mainStyles ); ++ saveOasisStrokeElement( mainStyles, styleObjectAuto ); ++} ++ + void KPShadowObject::loadOasis(const QDomElement &element, KoOasisContext & context, KPRLoadingInfo *info) + { + //kdDebug()<<"void KPShadowObject::loadOasis(const QDomElement &element)**********************\n"; +@@ -1822,14 +1963,15 @@ + return fragment; + } + +-QString KP2DObject::saveOasisBackgroundStyle( KoXmlWriter &xmlWriter, KoGenStyles& mainStyles, int indexObj ) const ++void KP2DObject::fillStyle( KoGenStyle& styleObjectAuto, KoGenStyles& mainStyles ) const + { +- saveOasisPosObject( xmlWriter,indexObj ); +- KoGenStyle styleobjectauto; +- if ( sticky ) +- styleobjectauto = KoGenStyle( KPresenterDoc::STYLE_PRESENTATIONSTICKYOBJECT, "presentation" ); +- else +- styleobjectauto = KoGenStyle( KoGenStyle::STYLE_GRAPHICAUTO, "graphic" ); ++ kdDebug(33001) << "KP2DObject::fillStyle" << endl; ++ KPShadowObject::fillStyle( styleObjectAuto, mainStyles ); ++ saveOasisBackgroundElement( styleObjectAuto, mainStyles ); ++} ++ ++void KP2DObject::saveOasisBackgroundElement( KoGenStyle& styleObjectAuto, KoGenStyles& mainStyles ) const ++{ + switch ( getFillType() ) + { + case FT_BRUSH: +@@ -1838,34 +1980,22 @@ + //todo FIXME when text object doesn't have a background + if( brush != QBrush() ) + { +- KoOasisStyles::saveOasisFillStyle( styleobjectauto, mainStyles, brush ); ++ KoOasisStyles::saveOasisFillStyle( styleObjectAuto, mainStyles, brush ); + } + else + { +- styleobjectauto.addProperty( "draw:fill","none" ); ++ styleObjectAuto.addProperty( "draw:fill","none" ); + } + break; + } + case FT_GRADIENT: +- styleobjectauto.addProperty( "draw:fill","gradient" ); +- styleobjectauto.addProperty( "draw:fill-gradient-name", saveOasisGradientStyle( mainStyles ) ); ++ styleObjectAuto.addProperty( "draw:fill","gradient" ); ++ styleObjectAuto.addProperty( "draw:fill-gradient-name", saveOasisGradientStyle( mainStyles ) ); + break; + } +- saveOasisObjectProtectStyle( styleobjectauto ); +- +- saveOasisStrokeElement( mainStyles, styleobjectauto ); +- saveOasisMarginElement( styleobjectauto ); +- saveOasisShadowElement( styleobjectauto ); +- saveOasisPictureElement( styleobjectauto ); +- +- if ( sticky ) +- return mainStyles.lookup( styleobjectauto, "pr" ); +- else +- return mainStyles.lookup( styleobjectauto, "gr" ); + } + + +- + QString KP2DObject::saveOasisGradientStyle( KoGenStyles& mainStyles ) const + { + KoGenStyle gradientStyle( KPresenterDoc::STYLE_GRADIENT /*no family name*/); +@@ -2170,6 +2300,56 @@ + return offset; + } + ++void KP2DObject::draw( QPainter *_painter, KoZoomHandler*_zoomHandler, ++ int pageNum, SelectionMode selectionMode, bool drawContour ) ++{ ++ double ox = orig.x(); ++ double oy = orig.y(); ++ _painter->save(); ++ ++ // Draw the shadow if any ++ if ( shadowDistance > 0 && !drawContour ) ++ { ++ _painter->save(); ++ QPen tmpPen( pen ); ++ pen.setColor( shadowColor ); ++ QBrush tmpBrush( m_brush.getBrush() ); ++ QBrush shadowBrush( tmpBrush ); ++ shadowBrush.setColor( shadowColor ); ++ m_brush.setBrush( shadowBrush ); ++ ++ if ( angle == 0 ) ++ { ++ double sx = ox; ++ double sy = oy; ++ getShadowCoords( sx, sy ); ++ ++ _painter->translate( _zoomHandler->zoomItX( sx ), _zoomHandler->zoomItY( sy ) ); ++ paint( _painter, _zoomHandler, pageNum, true, drawContour ); ++ } ++ else ++ { ++ _painter->translate( _zoomHandler->zoomItX(ox), _zoomHandler->zoomItY(oy) ); ++ rotateObjectWithShadow(_painter, _zoomHandler); ++ paint( _painter, _zoomHandler, pageNum, true, drawContour ); ++ } ++ ++ pen = tmpPen; ++ m_brush.setBrush( tmpBrush ); ++ _painter->restore(); ++ } ++ ++ _painter->translate( _zoomHandler->zoomItX(ox), _zoomHandler->zoomItY(oy) ); ++ ++ if ( angle != 0 ) ++ rotateObject(_painter,_zoomHandler); ++ paint( _painter, _zoomHandler, pageNum, false, drawContour ); ++ ++ _painter->restore(); ++ ++ KPObject::draw( _painter, _zoomHandler, pageNum, selectionMode, drawContour ); ++} ++ + void KP2DObject::flip( bool horizontal ) { + KPObject::flip( horizontal ); + +Index: kpresenter/kppolygonobject.cc +=================================================================== +--- kpresenter/kppolygonobject.cc (revision 427945) ++++ kpresenter/kppolygonobject.cc (working copy) +@@ -68,38 +68,24 @@ + return dcop; + } + +-bool KPPolygonObject::saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj ) const ++bool KPPolygonObject::saveOasisObjectAttributes( KPOasisSaveContext &sc ) const + { +- //FIXME me wait that it will define into oo spec +- xmlWriter.startElement( "draw:regular-polygon" ); +- xmlWriter.addAttribute( "draw:style-name", KP2DObject::saveOasisBackgroundStyle( xmlWriter, context.mainStyles(), indexObj ) ); +- +- QString listOfPoint; +- int maxX=0; +- int maxY=0; +- KoPointArray::ConstIterator it; +- for ( it = points.begin(); it != points.end(); ++it ) { +- int tmpX = 0; +- int tmpY = 0; +- tmpX = ( int ) ( KoUnit::toMM( ( *it ).x() )*100 ); +- tmpY = ( int ) ( KoUnit::toMM( ( *it ).y() )*100 ); +- if ( !listOfPoint.isEmpty() ) +- listOfPoint += QString( " %1,%2" ).arg( tmpX ).arg( tmpY ); +- else +- listOfPoint = QString( "%1,%2" ).arg( tmpX ).arg( tmpY ); +- maxX = QMAX( maxX, tmpX ); +- maxY = QMAX( maxY, tmpY ); ++ sc.xmlWriter.addAttribute( "draw:corners", cornersValue ); ++ sc.xmlWriter.addAttribute( "draw:concave", checkConcavePolygon ? "true" : "false" ); ++ if ( checkConcavePolygon ) ++ { ++ sc.xmlWriter.addAttribute( "draw:sharpness", QString( "%1%").arg( sharpnessValue ) ); + } +- xmlWriter.addAttribute("draw:points", listOfPoint ); +- xmlWriter.addAttribute("svg:viewBox", QString( "0 0 %1 %2" ).arg( maxX ).arg( maxY ) ); + +- if( !objectName.isEmpty()) +- xmlWriter.addAttribute( "draw:name", objectName ); +- xmlWriter.endElement(); + return true; + } + ++const char * KPPolygonObject::getOasisElementName() const ++{ ++ return "draw:regular-polygon"; ++} + ++ + QDomDocumentFragment KPPolygonObject::save( QDomDocument& doc, double offset ) + { + QDomDocumentFragment fragment = KP2DObject::save( doc, offset ); +@@ -133,26 +119,14 @@ + { + kdDebug()<<"void KPPolygonObject::loadOasis( const QDomElement &element )***********\n"; + KP2DObject::loadOasis( element,context, info ); +- //load point. +- QStringList ptList = QStringList::split(' ', element.attributeNS( KoXmlNS::draw, "points", QString::null)); +- +- QString pt_x, pt_y; +- double tmp_x, tmp_y; +- unsigned int index = 0; +- for (QStringList::Iterator it = ptList.begin(); it != ptList.end(); ++it) ++ cornersValue = element.attributeNS( KoXmlNS::draw, "corners", QString::null ).toInt(); ++ checkConcavePolygon = element.attributeNS( KoXmlNS::draw, "concave", QString::null ) == "true"; ++ sharpnessValue = 0; ++ if ( checkConcavePolygon ) + { +- tmp_x = (*it).section(',',0,0).toInt() / 100; +- tmp_y = (*it).section(',',1,1).toInt() / 100; +- +- pt_x.setNum(tmp_x); +- pt_x+="mm"; +- +- pt_y.setNum(tmp_y); +- pt_y+="mm"; +- +- points.putPoints( index, 1, KoUnit::parseValue(pt_x),KoUnit::parseValue(pt_y) ); +- ++index; ++ sharpnessValue = element.attributeNS( KoXmlNS::draw, "sharpness", QString::null ).remove( '%').toInt(); + } ++ drawPolygon(); + } + + double KPPolygonObject::load( const QDomElement &element ) +@@ -280,7 +254,8 @@ + + void KPPolygonObject::drawPolygon() + { +- KoRect _rect = points.boundingRect(); ++ kdDebug()<<"void KPPolygonObject::drawPolygon()***********\n"; ++ KoRect _rect( 0, 0, ext.width(), ext.height() ); + double angle = 2 * M_PI / cornersValue; + double diameter = static_cast<double>( QMAX( _rect.width(), _rect.height() ) ); + double radius = diameter * 0.5; +Index: kpresenter/kpcubicbeziercurveobject.cc +=================================================================== +--- kpresenter/kpcubicbeziercurveobject.cc (revision 427945) ++++ kpresenter/kpcubicbeziercurveobject.cc (working copy) +@@ -1,6 +1,7 @@ + // -*- Mode: c++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 4; -*- + /* This file is part of the KDE project + Copyright (C) 2001 Toshitaka Fujioka <fujioka@kde.org> ++ Copyright (C) 2005 Thorsten Zachmann <zachmann@kde.org> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public +@@ -60,16 +61,17 @@ + return dcop; + } + +-bool KPCubicBezierCurveObject::saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj ) const ++bool KPCubicBezierCurveObject::saveOasisObjectAttributes( KPOasisSaveContext &sc ) const + { +- kdDebug()<<"bool KPCubicBezierCurveObject::saveOasis( KoXmlWriter &xmlWriter ) not implemented\n"; +- //saveOasisShadowElement( styleobjectauto ); +- //KPPointObject::saveOasisStrokeElement( KoGenStyles& mainStyles ); +-// +- //call saveOasisStrokeElement( KoGenStyle &styleobjectauto ); ++ kdDebug()<<"bool KPCubicBezierCurveObject::saveOasis( KoXmlWriter & xmlWriter ) not implemented\n"; + return true; + } + ++const char * KPCubicBezierCurveObject::getOasisElementName() const ++{ ++ return "draw:custom-shape"; ++} ++ + void KPCubicBezierCurveObject::loadOasis( const QDomElement &element, KoOasisContext & context, KPRLoadingInfo* info ) + { + //todo +Index: kpresenter/kpquadricbeziercurveobject.h +=================================================================== +--- kpresenter/kpquadricbeziercurveobject.h (revision 427945) ++++ kpresenter/kpquadricbeziercurveobject.h (working copy) +@@ -1,6 +1,7 @@ + // -*- Mode: c++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 4; -*- + /* This file is part of the KDE project + Copyright (C) 2001 Toshitaka Fujioka <fujioka@kde.org> ++ Copyright (C) 2005 Thorsten Zachmann <zachmann@kde.org> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public +@@ -43,7 +44,6 @@ + virtual QString getTypeString() const { return i18n("Quadric Bezier Curve"); } + + virtual QDomDocumentFragment save( QDomDocument& doc, double offset ); +- virtual bool saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj ) const; + virtual void loadOasis( const QDomElement &element, KoOasisContext & context, KPRLoadingInfo *info ); + + virtual double load( const QDomElement &element ); +@@ -53,6 +53,9 @@ + bool isClosed()const; + + protected: ++ virtual const char * getOasisElementName() const; ++ virtual bool saveOasisObjectAttributes( KPOasisSaveContext &sc ) const; ++ + virtual void updatePoints( double _fx, double _fy ); + virtual KoPointArray getDrawingPoints() const; + +Index: kpresenter/autoforms/Arrows/ArrowLeftUp.desktop +=================================================================== +--- kpresenter/autoforms/Arrows/ArrowLeftUp.desktop (revision 427945) ++++ kpresenter/autoforms/Arrows/ArrowLeftUp.desktop (working copy) +@@ -3,6 +3,7 @@ + Type=Link + URL=.source/ArrowLeftUp.atf + Name=Arrow Left/Up ++Name[cy]=Saeth i'r Chwith/i Fyny + Name[da]=Pil til venstre/op + Name[de]=Pfeil nach links/oben + Name[el]=Αριστερό/πάνω βέλος +Index: kpresenter/autoforms/Arrows/ArrowRightDown.desktop +=================================================================== +--- kpresenter/autoforms/Arrows/ArrowRightDown.desktop (revision 427945) ++++ kpresenter/autoforms/Arrows/ArrowRightDown.desktop (working copy) +@@ -3,6 +3,7 @@ + Type=Link + URL=.source/ArrowRightDown.atf + Name=Arrow Right/Down ++Name[cy]=Saeth i'r Dde/i Lawr + Name[da]=Pil til højre/ned + Name[de]=Pfeil nach rechts/unten + Name[el]=Δεξί/κάτω βέλος +Index: kpresenter/autoforms/Arrows/ArrowDown.desktop +=================================================================== +--- kpresenter/autoforms/Arrows/ArrowDown.desktop (revision 427945) ++++ kpresenter/autoforms/Arrows/ArrowDown.desktop (working copy) +@@ -3,6 +3,7 @@ + Type=Link + URL=.source/ArrowDown.atf + Name=Arrow Down ++Name[cy]=Saeth i Lawr + Name[da]=Pil ned + Name[de]=Pfeil nach unten + Name[el]=Κάτω βέλος +Index: kpresenter/autoforms/Arrows/ArrowRight.desktop +=================================================================== +--- kpresenter/autoforms/Arrows/ArrowRight.desktop (revision 427945) ++++ kpresenter/autoforms/Arrows/ArrowRight.desktop (working copy) +@@ -3,6 +3,7 @@ + Type=Link + URL=.source/ArrowRight.atf + Name=Arrow Right ++Name[cy]=Saeth i'r Dde + Name[da]=Pil til højre + Name[de]=Pfeil nach rechts + Name[el]=Δεξί βέλος +Index: kpresenter/autoforms/Arrows/ArrowLeftDown.desktop +=================================================================== +--- kpresenter/autoforms/Arrows/ArrowLeftDown.desktop (revision 427945) ++++ kpresenter/autoforms/Arrows/ArrowLeftDown.desktop (working copy) +@@ -3,6 +3,7 @@ + Type=Link + URL=.source/ArrowLeftDown.atf + Name=Arrow Left/Down ++Name[cy]=Saeth i'r Chwith/i Lawr + Name[da]=Pil til venstre/ned + Name[de]=Pfeil nach links/unten + Name[el]=Αριστερό/κάτω βέλος +Index: kpresenter/autoforms/Arrows/ArrowRightUp.desktop +=================================================================== +--- kpresenter/autoforms/Arrows/ArrowRightUp.desktop (revision 427945) ++++ kpresenter/autoforms/Arrows/ArrowRightUp.desktop (working copy) +@@ -3,6 +3,7 @@ + Type=Link + URL=.source/ArrowRightUp.atf + Name=Arrow Right/Up ++Name[cy]=Saeth i'r Chwith/i Fyny + Name[da]=Pil til højre/op + Name[de]=Pfeil nach rechts/oben + Name[el]=Δεξί/πάνω βέλος +Index: kpresenter/autoforms/Arrows/ArrowUp.desktop +=================================================================== +--- kpresenter/autoforms/Arrows/ArrowUp.desktop (revision 427945) ++++ kpresenter/autoforms/Arrows/ArrowUp.desktop (working copy) +@@ -3,6 +3,7 @@ + Type=Link + URL=.source/ArrowUp.atf + Name=Arrow Up ++Name[cy]=Saeth i Fyny + Name[da]=Pil op + Name[de]=Pfeil nach oben + Name[el]=Πάνω βέλος +Index: kpresenter/autoforms/Arrows/ArrowLeft.desktop +=================================================================== +--- kpresenter/autoforms/Arrows/ArrowLeft.desktop (revision 427945) ++++ kpresenter/autoforms/Arrows/ArrowLeft.desktop (working copy) +@@ -3,6 +3,7 @@ + Type=Link + URL=.source/ArrowLeft.atf + Name=Arrow Left ++Name[cy]=Saeth i'r Chwith + Name[da]=Pil til venstre + Name[de]=Pfeil nach links + Name[el]=Αριστερό βέλος +Index: kpresenter/kpfreehandobject.cc +=================================================================== +--- kpresenter/kpfreehandobject.cc (revision 427945) ++++ kpresenter/kpfreehandobject.cc (working copy) +@@ -1,6 +1,7 @@ + // -*- Mode: c++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 4; -*- + /* This file is part of the KDE project + Copyright (C) 2001 Toshitaka Fujioka <fujioka@kde.org> ++ Copyright (C) 2005 Thorsten Zachmann <zachmann@kde.org> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public +@@ -54,21 +55,26 @@ + return dcop; + } + +-bool KPFreehandObject::saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj ) const ++bool KPFreehandObject::saveOasisObjectAttributes( KPOasisSaveContext &sc ) const + { +- kdDebug()<<"bool KPFreehandObject::saveOasis( KoXmlWriter &xmlWriter ) not implemented\n"; +- xmlWriter.startElement( "draw:path" ); +- //FIXME !!!!!!!!!!!!!!!!!!!!! +-//xmlWriter.addAttribute( "draw:style-name", KP2DObject::saveOasisBackgroundStyle( xmlWriter, mainStyles ) ); +-//call saveOasisStrokeElement( KoGenStyle &styleobjectauto ); +- if( !objectName.isEmpty()) +- xmlWriter.addAttribute( "draw:name", objectName ); +- //save path I don't know how to do. +- //add "svg:viewBox" add "svg:d" +- xmlWriter.endElement(); ++ kdDebug()<<"bool KPFreehandObject::saveOasisObjectAttributes( KPOasisSaveContext &sc ) not implemented\n"; + return true; + } + ++const char * KPFreehandObject::getOasisElementName() const ++{ ++ return "draw:path"; ++} ++ ++void KPFreehandObject::loadOasis( const QDomElement &element, KoOasisContext & context, KPRLoadingInfo* info ) ++{ ++ //todo ++ //we use draw:path ++ ++ //load marker ++ loadOasisMarker( context ); ++} ++ + QDomDocumentFragment KPFreehandObject::save( QDomDocument& doc,double offset ) + { + return KPPointObject::save( doc, offset ); +Index: kpresenter/kppieobject.cc +=================================================================== +--- kpresenter/kppieobject.cc (revision 427945) ++++ kpresenter/kppieobject.cc (working copy) +@@ -1,5 +1,6 @@ + /* This file is part of the KDE project + Copyright (C) 1998, 1999 Reginald Stadlbauer <reggie@kde.org> ++ Copyright (C) 2005 Thorsten Zachmann <zachmann@kde.org> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public +@@ -86,40 +87,38 @@ + return fragment; + } + +-bool KPPieObject::saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj ) const ++bool KPPieObject::saveOasisObjectAttributes( KPOasisSaveContext &sc ) const + { +- xmlWriter.startElement( ( ext.width() == ext.height() ) ? "draw:circle" : "draw:ellipse" ); +- xmlWriter.addAttribute( "draw:style-name", KP2DObject::saveOasisBackgroundStyle( xmlWriter, context.mainStyles(),indexObj ) ); +- +- if( !objectName.isEmpty()) +- xmlWriter.addAttribute( "draw:name", objectName ); + switch( pieType ) + { +- case PT_PIE: +- xmlWriter.addAttribute( "draw:kind", "section" ); +- break; +- case PT_CHORD: +- xmlWriter.addAttribute( "draw:kind", "cut" ); +- break; +- case PT_ARC: +- xmlWriter.addAttribute( "draw:kind", "arc" ); +- break; +- default: +- kdDebug()<<" type of pie not supported\n"; ++ case PT_PIE: ++ sc.xmlWriter.addAttribute( "draw:kind", "section" ); ++ break; ++ case PT_CHORD: ++ sc.xmlWriter.addAttribute( "draw:kind", "cut" ); ++ break; ++ case PT_ARC: ++ sc.xmlWriter.addAttribute( "draw:kind", "arc" ); ++ break; ++ default: ++ kdDebug() << " type of pie not supported" << endl; + } +- int startangle = 45; +- if ( p_angle != 0.0 ) +- startangle = ( ( int )p_angle )/16; +- xmlWriter.addAttribute( "draw:start-angle", startangle ); +- int endangle = endangle = ( ( int ) p_len/16 )+startangle; +- xmlWriter.addAttribute( "draw:end-angle", endangle ); + +- //we don't have a simple object +- xmlWriter.endElement(); ++ int startangle = ( (int)p_angle / 16 ); ++ sc.xmlWriter.addAttribute( "draw:start-angle", startangle ); ++ ++ int endangle = ( (int) p_len / 16 ) + startangle; ++ sc.xmlWriter.addAttribute( "draw:end-angle", endangle ); ++ + return true; + } + ++const char * KPPieObject::getOasisElementName() const ++{ ++ return ext.width() == ext.height() ? "draw:circle" : "draw:ellipse"; ++} + ++ + void KPPieObject::loadOasis(const QDomElement &element, KoOasisContext & context, KPRLoadingInfo *info) + { + kdDebug()<<"void KPPieObject::loadOasis(const QDomElement &element) ***************\n"; +Index: kpresenter/kpobject.h +=================================================================== +--- kpresenter/kpobject.h (revision 427945) ++++ kpresenter/kpobject.h (working copy) +@@ -136,9 +136,25 @@ + virtual double load(const QDomElement &element); + virtual void loadOasis(const QDomElement &element, KoOasisContext & context, KPRLoadingInfo *info); + +- virtual bool saveOasis( KoXmlWriter &xmlWriter, KoSavingContext &context, int indexObj ) const =0; ++ struct KPOasisSaveContext ++ { ++ KPOasisSaveContext( KoXmlWriter &_xmlWriter, KoSavingContext &_context, ++ int &_indexObj, int &_partIndexObj, bool _onMaster ) ++ : xmlWriter( _xmlWriter ) ++ , context( _context ) ++ , indexObj( _indexObj ) ++ , partIndexObj( _partIndexObj ) ++ , onMaster( _onMaster ) {}; ++ ++ KoXmlWriter &xmlWriter; ++ KoSavingContext &context; ++ int &indexObj; ++ int &partIndexObj; ++ bool onMaster; ++ }; + +- void saveOasisPosObject( KoXmlWriter &xmlWriter, int indexObj ) const; ++ virtual bool saveOasisObject( KPOasisSaveContext &sc ) const; ++ + //return true if we have a animation into object + bool saveOasisObjectStyleShowAnimation( KoXmlWriter &animation, int objectId ); + bool saveOasisObjectStyleHideAnimation( KoXmlWriter &animation, int objectId ); +@@ -297,8 +313,17 @@ + + void saveOasisObjectProtectStyle( KoGenStyle &styleobjectauto ) const; + void saveOasisShadowElement( KoGenStyle &styleobjectauto ) const; +- virtual void saveOasisPictureElement( KoGenStyle& /*styleobjectauto*/ ) const {}; + ++ QString getStyle( KPOasisSaveContext &sc ) const; ++ virtual void fillStyle( KoGenStyle& styleObjectAuto, KoGenStyles& mainStyles ) const; ++ /** ++ * Get the element name for saving the object ++ */ ++ virtual const char * getOasisElementName() const = 0; ++ //virtual bool saveOasisObjectAttributes( KPOasisSaveContext &sc ) const = 0; ++ virtual bool saveOasisObjectAttributes( KPOasisSaveContext &sc ) const; ++ virtual void saveOasisPosObject( KoXmlWriter &xmlWriter, int indexObj ) const; ++ + float angle; + KoPoint orig; + KoSize ext; +@@ -378,6 +403,19 @@ + + protected: + /** ++ * Helper method for saving draw:points. The svg:viewBox is also saved. ++ */ ++ static bool saveOasisDrawPoints( const KoPointArray &points, KPOasisSaveContext &sc ); ++ ++ /** ++ * Helper method for loading draw:points. The svg:viewBox is taken into account. ++ */ ++ bool loadOasisDrawPoints( KoPointArray &points, const QDomElement &element, ++ KoOasisContext & context, KPRLoadingInfo *info ); ++ ++ virtual void fillStyle( KoGenStyle& styleObjectAuto, KoGenStyles& mainStyles ) const; ++ ++ /** + * @ref save() only saves if the pen is different from the default pen. + * The default pen can vary depending on the subclass of KPShadowObject + * (e.g. it's a black solidline for lines and rects, but it's NoPen +@@ -445,14 +483,16 @@ + virtual QDomDocumentFragment save( QDomDocument& doc, double offset ); + virtual double load(const QDomElement &element); + virtual void loadOasis(const QDomElement &element, KoOasisContext & context, KPRLoadingInfo *info); ++ virtual void draw( QPainter *_painter, KoZoomHandler*_zoomHandler, ++ int pageNum, SelectionMode selectionMode, bool drawContour = FALSE ); + + virtual void flip(bool horizontal ); + + protected: + QString saveOasisGradientStyle( KoGenStyles& mainStyles ) const; +- QString saveOasisBackgroundStyle( KoXmlWriter &xmlWriter, KoGenStyles& mainStyles, int indexObj ) const; + +- virtual void saveOasisMarginElement( KoGenStyle& /*styleobjectauto*/ ) const { /* nothing just used into kptextobject*/}; ++ virtual void fillStyle( KoGenStyle& styleObjectAuto, KoGenStyles& mainStyles ) const; ++ void saveOasisBackgroundElement( KoGenStyle& styleObjectAuto, KoGenStyles& mainStyles ) const; + + KPrBrush m_brush; + KPGradient *gradient; +Index: kpresenter/kptextobject.h +=================================================================== +--- kpresenter/kptextobject.h (revision 427945) ++++ kpresenter/kptextobject.h (working copy) +@@ -1,6 +1,7 @@ + // -*- Mode: c++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 4; -*- + /* This file is part of the KDE project + Copyright (C) 1998, 1999 Reginald Stadlbauer <reggie@kde.org> ++ Copyright (C) 2005 Thorsten Zachmann <zachmann@kde.org> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public +@@ -81,7 +82,6 @@ + virtual QDomDocumentFragment save( QDomDocument& doc, double offset ); + virtual double load(const QDomElement &element); + virtual void loadOasis(const QDomElement &element, KoOasisContext& context, KPRLoadingInfo *info); +- virtual bool saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj ) const; + virtual void saveOasisMarginElement( KoGenStyle &styleobjectauto ) const; + + virtual void paint( QPainter *_painter, KoZoomHandler*_zoomHandler, +@@ -180,9 +180,14 @@ + void slotAfterFormatting( int, KoTextParag*, bool* ); + void slotParagraphDeleted(KoTextParag*_parag); + protected: ++ virtual const char * getOasisElementName() const; ++ virtual bool saveOasisObjectAttributes( KPOasisSaveContext &sc ) const; ++ + virtual QDomElement saveKTextObject( QDomDocument& doc ); + QDomElement saveHelper(const QString &tmpText,KoTextFormat*lastFormat ,QDomDocument &doc); + ++ virtual void fillStyle( KoGenStyle& styleObjectAuto, KoGenStyles& mainStyles ) const; ++ + virtual void loadKTextObject( const QDomElement &e ); + void drawText( QPainter* _painter, KoZoomHandler* zoomHandler, bool onlyChanged, KoTextCursor* cursor, bool resetChanged ); + void drawParags( QPainter *p, KoZoomHandler* zoomHandler, const QColorGroup& cg, int from, int to ); +Index: kpresenter/kppolygonobject.h +=================================================================== +--- kpresenter/kppolygonobject.h (revision 427945) ++++ kpresenter/kppolygonobject.h (working copy) +@@ -59,7 +59,6 @@ + int getSharpnessValue() const { return sharpnessValue; } + + virtual QDomDocumentFragment save( QDomDocument& doc, double offset ); +- virtual bool saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj ) const; + + virtual double load( const QDomElement &element ); + virtual void loadOasis( const QDomElement &element, KoOasisContext & context, KPRLoadingInfo *info ); +@@ -69,6 +68,9 @@ + virtual KoPoint getRealOrig() const; + + protected: ++ virtual const char * getOasisElementName() const; ++ virtual bool saveOasisObjectAttributes( KPOasisSaveContext &sc ) const; ++ + virtual void paint( QPainter *_painter,KoZoomHandler*_zoomHandler, + int /* pageNum */, bool drawingShadow, bool drawContour ); + +Index: kpresenter/kpgroupobject.cc +=================================================================== +--- kpresenter/kpgroupobject.cc (revision 427945) ++++ kpresenter/kpgroupobject.cc (working copy) +@@ -1,6 +1,7 @@ + // -*- Mode: c++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 4; -*- + /* This file is part of the KDE project + Copyright (C) 1998, 1999 Reginald Stadlbauer <reggie@kde.org> ++ Copyright (C) 2005 Thorsten Zachmann <zachmann@kde.org> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public +@@ -132,24 +133,23 @@ + } + + +-bool KPGroupObject::saveOasis(KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj) const ++bool KPGroupObject::saveOasisObjectAttributes( KPOasisSaveContext &sc ) const + { +- xmlWriter.startElement( "draw:g" ); +- + QPtrListIterator<KPObject> it( objects ); + for ( ; it.current() ; ++it ) + { +-#if 0 +- if ( it.current()->getType() == OT_PART ) +- continue; +-#endif +- it.current()->saveOasis( xmlWriter, context, indexObj ); ++ //TODO what to do with parts? ++ it.current()->saveOasisObject( sc ); + } +- xmlWriter.endElement(); + return true; + } + ++const char * KPGroupObject::getOasisElementName() const ++{ ++ return "draw:g"; ++} + ++ + void KPGroupObject::loadOasisGroupObject( KPresenterDoc *_doc, KPrPage * newpage, QDomNode &element, KoOasisContext & context, KPRLoadingInfo *info) + { + //KPObject::loadOasis( element, context, info ); +Index: kpresenter/kprectobject.cc +=================================================================== +--- kpresenter/kprectobject.cc (revision 427945) ++++ kpresenter/kprectobject.cc (working copy) +@@ -76,18 +76,19 @@ + return fragment; + } + +-bool KPRectObject::saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj ) const ++bool KPRectObject::saveOasisObjectAttributes( KPOasisSaveContext &sc ) const + { +- xmlWriter.startElement( "draw:rect" ); +- xmlWriter.addAttribute( "draw:style-name", KP2DObject::saveOasisBackgroundStyle( xmlWriter, context.mainStyles(), indexObj ) ); +- +- if( !objectName.isEmpty()) +- xmlWriter.addAttribute( "draw:name", objectName ); +- xmlWriter.endElement(); ++ // TODO corner-radius + return true; + } + + ++const char * KPRectObject::getOasisElementName() const ++{ ++ return "draw:rect"; ++} ++ ++ + void KPRectObject::loadOasis(const QDomElement &element, KoOasisContext&context, KPRLoadingInfo *info) + { + KP2DObject::loadOasis(element, context, info); +Index: kpresenter/kpellipseobject.cc +=================================================================== +--- kpresenter/kpellipseobject.cc (revision 427945) ++++ kpresenter/kpellipseobject.cc (working copy) +@@ -116,14 +116,14 @@ + return size; + } + +-bool KPEllipseObject::saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj ) const ++bool KPEllipseObject::saveOasisObjectAttributes( KPOasisSaveContext &sc ) const + { +- xmlWriter.startElement( ( ext.width() == ext.height() ) ? "draw:circle" : "draw:ellipse" ); +- xmlWriter.addAttribute( "draw:style-name", KP2DObject::saveOasisBackgroundStyle( xmlWriter, context.mainStyles(), indexObj ) ); +- +- if( !objectName.isEmpty()) +- xmlWriter.addAttribute( "draw:name", objectName ); +- xmlWriter.endElement(); ++ // nothing to do + return true; + } + ++const char * KPEllipseObject::getOasisElementName() const ++{ ++ return ext.width() == ext.height() ? "draw:circle" : "draw:ellipse"; ++} ++ +Index: kpresenter/kppolylineobject.h +=================================================================== +--- kpresenter/kppolylineobject.h (revision 427945) ++++ kpresenter/kppolylineobject.h (working copy) +@@ -47,8 +47,10 @@ + virtual QDomDocumentFragment save( QDomDocument& doc, double offset ); + virtual double load( const QDomElement &element ); + virtual void loadOasis(const QDomElement &element, KoOasisContext & context, KPRLoadingInfo *info); +- virtual bool saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj ) const; + ++protected: ++ virtual const char * getOasisElementName() const; ++ virtual bool saveOasisObjectAttributes( KPOasisSaveContext &sc ) const; + }; + + #endif +Index: kpresenter/kpclosedlineobject.cc +=================================================================== +--- kpresenter/kpclosedlineobject.cc (revision 427945) ++++ kpresenter/kpclosedlineobject.cc (working copy) +@@ -90,36 +90,18 @@ + return fragment; + } + +-bool KPClosedLineObject::saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj ) const ++bool KPClosedLineObject::saveOasisObjectAttributes( KPOasisSaveContext &sc ) const + { +- xmlWriter.startElement( "draw:polygon" ); +- xmlWriter.addAttribute( "draw:style-name", KP2DObject::saveOasisBackgroundStyle( xmlWriter, context.mainStyles(), indexObj ) ); +- +- QString listOfPoint; +- int maxX=0; +- int maxY=0; +- KoPointArray::ConstIterator it; +- for ( it = points.begin(); it != points.end(); ++it ) { +- int tmpX = 0; +- int tmpY = 0; +- tmpX = ( int ) ( KoUnit::toMM( ( *it ).x() )*100 ); +- tmpY = ( int ) ( KoUnit::toMM( ( *it ).y() )*100 ); +- if ( !listOfPoint.isEmpty() ) +- listOfPoint += QString( " %1,%2" ).arg( tmpX ).arg( tmpY ); +- else +- listOfPoint = QString( "%1,%2" ).arg( tmpX ).arg( tmpY ); +- maxX = QMAX( maxX, tmpX ); +- maxY = QMAX( maxY, tmpY ); +- } +- xmlWriter.addAttribute("draw:points", listOfPoint ); +- xmlWriter.addAttribute("svg:viewBox", QString( "0 0 %1 %2" ).arg( maxX ).arg( maxY ) ); +- +- if( !objectName.isEmpty()) +- xmlWriter.addAttribute( "draw:name", objectName ); +- xmlWriter.endElement(); ++ KPShadowObject::saveOasisDrawPoints( points, sc ); + return true; + } + ++const char * KPClosedLineObject::getOasisElementName() const ++{ ++ return "draw:polygon"; ++} ++ ++ + double KPClosedLineObject::load( const QDomElement &element ) + { + double offset = KP2DObject::load( element ); +@@ -269,26 +251,7 @@ + { + kdDebug()<<"void KPClosedLineObject::loadOasis( const QDomElement &element )***********\n"; + KP2DObject::loadOasis( element,context, info ); +- //load point. +- QStringList ptList = QStringList::split(' ', element.attributeNS( KoXmlNS::draw, "points", QString::null)); +- +- QString pt_x, pt_y; +- double tmp_x, tmp_y; +- unsigned int index = 0; +- for (QStringList::Iterator it = ptList.begin(); it != ptList.end(); ++it) +- { +- tmp_x = (*it).section(',',0,0).toInt() / 100; +- tmp_y = (*it).section(',',1,1).toInt() / 100; +- +- pt_x.setNum(tmp_x); +- pt_x+="mm"; +- +- pt_y.setNum(tmp_y); +- pt_y+="mm"; +- +- points.putPoints( index, 1, KoUnit::parseValue(pt_x),KoUnit::parseValue(pt_y) ); +- ++index; +- } ++ KPShadowObject::loadOasisDrawPoints( points, element, context, info ); + } + + KoSize KPClosedLineObject::getRealSize() const { +Index: kpresenter/kpclosedlineobject.h +=================================================================== +--- kpresenter/kpclosedlineobject.h (revision 427945) ++++ kpresenter/kpclosedlineobject.h (working copy) +@@ -53,13 +53,14 @@ + virtual QDomDocumentFragment save( QDomDocument& doc, double offset ); + virtual double load( const QDomElement &element ); + virtual void loadOasis( const QDomElement &element, KoOasisContext & context, KPRLoadingInfo *info ); +- virtual bool saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj ) const; + + virtual void flip(bool horizontal ); + virtual KoSize getRealSize() const; + virtual KoPoint getRealOrig() const; + + protected: ++ virtual const char * getOasisElementName() const; ++ virtual bool saveOasisObjectAttributes( KPOasisSaveContext &sc ) const; + virtual void paint( QPainter *_painter,KoZoomHandler*_zoomHandler, + int /* pageNum */, bool drawingShadow, bool drawContour ); + +Index: kpresenter/kpresenter_doc.cc +=================================================================== +--- kpresenter/kpresenter_doc.cc (revision 427945) ++++ kpresenter/kpresenter_doc.cc (working copy) +@@ -1770,33 +1770,35 @@ + else + newpage->appendObject(kppixmapobject); + } +- +- QDomNode object = KoDom::namedItemNS( o, KoXmlNS::draw, "object" ); +- kdDebug()<<" object:"<<object.isNull()<<endl; +- if ( !object.isNull() ) +- { +- fillStyleStack( o, context ); +- KPresenterChild *ch = new KPresenterChild( this ); +- QRect r; +- KPPartObject *kppartobject = new KPPartObject( ch ); +- kppartobject->loadOasis( o, context, m_loadingInfo ); +- r = ch->geometry(); +- if ( groupObject ) +- groupObject->addObjects( kppartobject ); +- else +- newpage->appendObject(kppartobject); +- insertChild( ch ); +- kppartobject->setOrig( r.x(), r.y() ); +- kppartobject->setSize( r.width(), r.height() ); +- } + else + { +- KPTextObject *kptextobject = new KPTextObject( this ); +- kptextobject->loadOasis(o, context, m_loadingInfo); +- if ( groupObject ) +- groupObject->addObjects( kptextobject ); ++ QDomNode object = KoDom::namedItemNS( o, KoXmlNS::draw, "object" ); ++ kdDebug()<<" object:"<<object.isNull()<<endl; ++ if ( !object.isNull() ) ++ { ++ fillStyleStack( o, context ); ++ KPresenterChild *ch = new KPresenterChild( this ); ++ QRect r; ++ KPPartObject *kppartobject = new KPPartObject( ch ); ++ kppartobject->loadOasis( o, context, m_loadingInfo ); ++ r = ch->geometry(); ++ if ( groupObject ) ++ groupObject->addObjects( kppartobject ); ++ else ++ newpage->appendObject(kppartobject); ++ insertChild( ch ); ++ kppartobject->setOrig( r.x(), r.y() ); ++ kppartobject->setSize( r.width(), r.height() ); ++ } + else +- newpage->appendObject(kptextobject); ++ { ++ KPTextObject *kptextobject = new KPTextObject( this ); ++ kptextobject->loadOasis(o, context, m_loadingInfo); ++ if ( groupObject ) ++ groupObject->addObjects( kptextobject ); ++ else ++ newpage->appendObject(kptextobject); ++ } + } + } + else if ( name == "rect" && isDrawNS) // rectangle +@@ -1836,7 +1838,10 @@ + fillStyleStack( o, context ); + KPLineObject *kplineobject = new KPLineObject(); + kplineobject->loadOasis(o, context, m_loadingInfo); +- newpage->appendObject(kplineobject); ++ if ( groupObject ) ++ groupObject->addObjects( kplineobject ); ++ else ++ newpage->appendObject( kplineobject ); + } + else if (name=="polyline" && isDrawNS) { // polyline + fillStyleStack( o, context ); +Index: kpresenter/kppixmapobject.cc +=================================================================== +--- kpresenter/kppixmapobject.cc (revision 427945) ++++ kpresenter/kppixmapobject.cc (working copy) +@@ -2,6 +2,7 @@ + + /* This file is part of the KDE project + Copyright (C) 1998, 1999 Reginald Stadlbauer <reggie@kde.org> ++ Copyright (C) 2005 Thorsten Zachmann <zachmann@kde.org> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public +@@ -101,7 +102,7 @@ + return QString::number( val )+"%"; + } + +-void KPPixmapObject::saveOasisPictureElement( KoGenStyle &styleobjectauto ) ++void KPPixmapObject::saveOasisPictureElement( KoGenStyle &styleobjectauto ) const + { + + if ( bright != 0 ) +@@ -201,26 +202,24 @@ + } + } + +- +-bool KPPixmapObject::saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj ) const ++bool KPPixmapObject::saveOasisObjectAttributes( KPOasisSaveContext &sc ) const + { +- xmlWriter.startElement( "draw:frame" ); +- xmlWriter.addAttribute( "draw:style-name", KP2DObject::saveOasisBackgroundStyle( xmlWriter, context.mainStyles(),indexObj ) ); +- if( !objectName.isEmpty()) +- xmlWriter.addAttribute( "draw:name", objectName ); ++ sc.xmlWriter.startElement( "draw:image" ); ++ sc.xmlWriter.addAttribute( "xlink:type", "simple" ); ++ sc.xmlWriter.addAttribute( "xlink:show", "embed" ); ++ sc.xmlWriter.addAttribute( "xlink:actuate", "onLoad" ); ++ sc.xmlWriter.addAttribute( "xlink:href", imageCollection->getOasisFileName( image ) ); ++ sc.xmlWriter.endElement(); + +- xmlWriter.startElement( "draw:image" ); +- xmlWriter.addAttribute( "xlink:type", "simple" ); +- xmlWriter.addAttribute( "xlink:show", "embed" ); +- xmlWriter.addAttribute( "xlink:actuate", "onLoad" ); +- xmlWriter.addAttribute( "xlink:href", imageCollection->getOasisFileName(image) ); +- xmlWriter.endElement(); +- +- xmlWriter.endElement(); + return true; + } + ++const char * KPPixmapObject::getOasisElementName() const ++{ ++ return "draw:frame"; ++} + ++ + // Deprecated, same as KPPixmapObject::loadPicture + void KPPixmapObject::loadImage( const QString & fileName ) + { +@@ -339,6 +338,12 @@ + + } + ++void KPPixmapObject::fillStyle( KoGenStyle& styleObjectAuto, KoGenStyles& mainStyles ) const ++{ ++ KP2DObject::fillStyle( styleObjectAuto, mainStyles ); ++ saveOasisPictureElement( styleObjectAuto ); ++} ++ + void KPPixmapObject::loadOasis(const QDomElement &element, KoOasisContext & context, KPRLoadingInfo *info) + { + //load it into kpresenter_doc +Index: kpresenter/kpautoformobject.h +=================================================================== +--- kpresenter/kpautoformobject.h (revision 427945) ++++ kpresenter/kpautoformobject.h (working copy) +@@ -63,10 +63,12 @@ + { return lineEnd; } + + virtual QDomDocumentFragment save( QDomDocument& doc,double offset ); +- virtual bool saveOasis( KoXmlWriter & xmlWriter, KoSavingContext& context, int indexObj ) const; + + virtual double load(const QDomElement &element); + protected: ++ virtual const char * getOasisElementName() const; ++ virtual bool saveOasisObjectAttributes( KPOasisSaveContext &sc ) const; ++ + virtual void paint( QPainter *_painter, KoZoomHandler *_zoomHandler, + int /* pageNum */, bool drawingShadow, bool drawContour = FALSE ); + +Index: kpresenter/kppartobject.cc +=================================================================== +--- kpresenter/kppartobject.cc (revision 427945) ++++ kpresenter/kppartobject.cc (working copy) +@@ -63,39 +63,25 @@ + zh->zoomItY( getOrig().y() + getSize().height() / 2 ) ) ); + } + +-bool KPPartObject::saveOasisPart( KoXmlWriter &xmlWriter, KoStore *store, KoSavingContext& context, int indexObj, int partIndexObj, KoXmlWriter* manifestWriter ) const ++bool KPPartObject::saveOasisObjectAttributes( KPOasisSaveContext &sc ) const + { +- kdDebug() << "KPPartObject::saveOasisPart " << partIndexObj << endl; +- xmlWriter.startElement( "draw:frame" ); +- // saveOasisBackgroundStyle also saves draw:id, x,y,width and height.... +- xmlWriter.addAttribute( "draw:style-name", KP2DObject::saveOasisBackgroundStyle( xmlWriter, context.mainStyles(),indexObj ) ); +- if( !objectName.isEmpty()) +- xmlWriter.addAttribute( "draw:name", objectName ); ++ kdDebug() << "KPPartObject::saveOasisPart " << sc.partIndexObj << endl; + +-#if 0 // geometry was already saved, this isn't needed +- // geometry is no zoom value ! +- QRect _rect = child->geometry(); +- KoZoomHandler* zh = child->parent()->zoomHandler(); +- double tmpX = zh->unzoomItX( _rect.x() ); +- double tmpY = zh->unzoomItY( _rect.y() ); +- double tmpWidth = zh->unzoomItX( _rect.width() ); +- double tmpHeight = zh->unzoomItY( _rect.height() ); +- //child->setGeometry( QRect( tmpX, tmpY, tmpWidth, tmpHeight ) ); // ## why? +- xmlWriter.addAttributePt( "svg:width", tmpWidth ); +- xmlWriter.addAttributePt( "svg:height", tmpHeight ); +- xmlWriter.addAttributePt( "svg:x", tmpX ); +- xmlWriter.addAttributePt( "svg:y", tmpY ); +-#endif ++ sc.xmlWriter.startElement( "draw:object" ); ++ const QString name = QString( "Object_%1" ).arg( sc.partIndexObj + 1 ); ++ ++sc.partIndexObj; ++ child->saveOasisAttributes( sc.xmlWriter, name ); + +- xmlWriter.startElement( "draw:object" ); +- const QString name = QString( "Object_%1" ).arg( partIndexObj+1 ); +- child->saveOasisAttributes( xmlWriter, name ); +- +- xmlWriter.endElement(); // draw:object +- xmlWriter.endElement(); // draw:frame ++ sc.xmlWriter.endElement(); + return true; + } + ++const char * KPPartObject::getOasisElementName() const ++{ ++ return "draw:frame"; ++} ++ ++ + void KPPartObject::loadOasis(const QDomElement &element, KoOasisContext&context, KPRLoadingInfo *info) + { + kdDebug()<<"void KPPartObject::loadOasis(const QDomElement &element)******************\n"; +Index: kpresenter/kprpage.cc +=================================================================== +--- kpresenter/kprpage.cc (revision 427945) ++++ kpresenter/kprpage.cc (working copy) +@@ -131,6 +131,8 @@ + + void KPrPage::saveOasisObject( KoStore *store, KoXmlWriter &xmlWriter, KoSavingContext& context, int & indexObj, int &partIndexObj, KoXmlWriter* manifestWriter, bool stickyObj ) const + { ++ KPObject::KPOasisSaveContext sc( xmlWriter, context, indexObj, partIndexObj, isMasterPage() ); ++ + KTempFile animationTmpFile; + animationTmpFile.setAutoDelete( true ); + QFile* tmpFile = animationTmpFile.file(); +@@ -139,17 +141,10 @@ + QPtrListIterator<KPObject> it( m_objectList ); + for ( ; it.current() ; ++it ) + { +- if ( it.current()->getType() == OT_PART ) +- { +- static_cast<KPPartObject*>( it.current() )->saveOasisPart( xmlWriter, store, context, indexObj, partIndexObj, manifestWriter); +- ++partIndexObj; +- } +- else +- { +- if ( it.current()== m_doc->header() || it.current()== m_doc->footer()) +- continue; +- it.current()->saveOasis( xmlWriter, context, indexObj ); +- } ++ if ( it.current()== m_doc->header() || it.current()== m_doc->footer()) ++ continue; ++ it.current()->saveOasisObject( sc ); ++ + if ( !stickyObj && it.current()->haveAnimation() ) + { + kdDebug()<<" it.current()->haveAnimation() \n"; +Index: kpresenter/kptextobject.cc +=================================================================== +--- kpresenter/kptextobject.cc (revision 427945) ++++ kpresenter/kptextobject.cc (working copy) +@@ -212,22 +212,19 @@ + return fragment; + } + +-bool KPTextObject::saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj ) const ++bool KPTextObject::saveOasisObjectAttributes( KPOasisSaveContext &sc ) const + { +- xmlWriter.startElement( "draw:frame" ); +- // #### This should use KoGenStyle to share the style +- xmlWriter.addAttribute( "draw:style-name", KP2DObject::saveOasisBackgroundStyle( xmlWriter, context.mainStyles(), indexObj ) ); +- if( !objectName.isEmpty()) +- xmlWriter.addAttribute( "draw:name", objectName ); +- +- xmlWriter.startElement( "draw:text-box" ); +- m_textobj->saveOasisContent( xmlWriter, context ); +- xmlWriter.endElement(); +- +- xmlWriter.endElement(); ++ sc.xmlWriter.startElement( "draw:text-box" ); ++ m_textobj->saveOasisContent( sc.xmlWriter, sc.context ); ++ sc.xmlWriter.endElement(); + return true; + } + ++const char * KPTextObject::getOasisElementName() const ++{ ++ return "draw:frame"; ++} ++ + void KPTextObject::saveOasisMarginElement( KoGenStyle &styleobjectauto ) const + { + kdDebug()<<"void KPTextObject::saveOasisMarginElement( KoGenStyle &styleobjectauto )\n"; +@@ -673,6 +670,12 @@ + return element; + } + ++void KPTextObject::fillStyle( KoGenStyle& styleObjectAuto, KoGenStyles& mainStyles ) const ++{ ++ KP2DObject::fillStyle( styleObjectAuto, mainStyles ); ++ saveOasisMarginElement( styleObjectAuto ); ++} ++ + void KPTextObject::loadKTextObject( const QDomElement &elem ) + { + QDomElement e = elem.firstChild().toElement(); +Index: kpresenter/kplineobject.cc +=================================================================== +--- kpresenter/kplineobject.cc (revision 427945) ++++ kpresenter/kplineobject.cc (working copy) +@@ -1,6 +1,7 @@ + // -*- Mode: c++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 4; -*- + /* This file is part of the KDE project + Copyright (C) 1998, 1999 Reginald Stadlbauer <reggie@kde.org> ++ Copyright (C) 2005 Thorsten Zachmann <zachmann@kde.org> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public +@@ -64,21 +65,23 @@ + } + + +-QString KPLineObject::saveOasisStrokeElement( KoGenStyles& mainStyles ) const ++void KPLineObject::fillStyle( KoGenStyle& styleObjectAuto, KoGenStyles& mainStyles ) const + { +- KoGenStyle styleobjectauto( KoGenStyle::STYLE_GRAPHICAUTO, "graphic" ); +- saveOasisMarkerElement( mainStyles, styleobjectauto ); +- KPShadowObject::saveOasisStrokeElement( mainStyles, styleobjectauto ); +- saveOasisShadowElement( styleobjectauto ); +- saveOasisObjectProtectStyle( styleobjectauto ); +- return mainStyles.lookup( styleobjectauto, "gr" ); ++ KPShadowObject::fillStyle( styleObjectAuto, mainStyles ); ++ saveOasisMarkerElement( mainStyles, styleObjectAuto ); + } + +-bool KPLineObject::saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj ) const ++ ++bool KPLineObject::saveOasisObjectAttributes( KPOasisSaveContext &sc ) const + { +- xmlWriter.startElement( "draw:line" ); +- xmlWriter.addAttribute( "draw:style-name", saveOasisStrokeElement( context.mainStyles() ) ); ++ // nothing to do ++ return true; ++} + ++void KPLineObject::saveOasisPosObject( KoXmlWriter &xmlWriter, int indexObj ) const ++{ ++ xmlWriter.addAttribute( "draw:id", "object" + QString::number( indexObj ) ); ++ + float x1 = orig.x(); + float y1 = orig.y(); + float x2 = x1 + ext.width(); +@@ -102,17 +105,24 @@ + break; + } + ++ //save all into pt ++ xmlWriter.addAttributePt( "svg:x1", x1 ); + xmlWriter.addAttributePt( "svg:y1", y1 ); ++ xmlWriter.addAttributePt( "svg:x2", x2 ); + xmlWriter.addAttributePt( "svg:y2", y2 ); +- xmlWriter.addAttributePt( "svg:x1", x1 ); +- xmlWriter.addAttributePt( "svg:x2", x2 ); + +- if( !objectName.isEmpty()) +- xmlWriter.addAttribute( "draw:name", objectName ); +- xmlWriter.endElement(); +- return true; ++ if ( kAbs( angle ) > 1E-6 ) ++ { ++ double value = -1 * ( ( double )angle* M_PI )/180.0; ++ QString str=QString( "rotate (%1)" ).arg( value ); ++ xmlWriter.addAttribute( "draw:transform", str ); ++ } + } + ++const char * KPLineObject::getOasisElementName() const ++{ ++ return "draw:line"; ++} + + QDomDocumentFragment KPLineObject::save( QDomDocument& doc, double offset ) + { +@@ -163,10 +173,10 @@ + + kdDebug()<<"KPLineObject::loadOasis(const QDomElement &element) : real position x :"<<orig.x()<<" y "<<orig.y()<< " width :"<<ext.width()<<" height :"<<ext.height()<<endl; + +- QString attr = (x1 < x2) ? "marker-start" : "marker-end"; ++ QString attr = (x1 <= x2) ? "marker-start" : "marker-end"; + loadOasisMarkerElement( context, attr, lineBegin ); + +- attr = (x1 < x2) ? "marker-end" : "marker-start"; ++ attr = (x1 <= x2) ? "marker-end" : "marker-start"; + loadOasisMarkerElement( context, attr, lineEnd ); + } + +Index: kpresenter/kppolylineobject.cc +=================================================================== +--- kpresenter/kppolylineobject.cc (revision 427945) ++++ kpresenter/kppolylineobject.cc (working copy) +@@ -1,6 +1,7 @@ + // -*- Mode: c++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 4; -*- + /* This file is part of the KDE project + Copyright (C) 2001 Toshitaka Fujioka <fujioka@kde.org> ++ Copyright (C) 2005 Thorsten Zachmann <zachmann@kde.org> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public +@@ -29,6 +30,7 @@ + #include <kdebug.h> + #include <kozoomhandler.h> + #include <kooasiscontext.h> ++#include <koUnit.h> + + #include <math.h> + using namespace std; +@@ -68,22 +70,22 @@ + return KPPointObject::load( element ); + } + +-bool KPPolylineObject::saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj ) const ++bool KPPolylineObject::saveOasisObjectAttributes( KPOasisSaveContext &sc ) const + { +- xmlWriter.startElement( "draw:polyline" ); +- saveOasisPosObject(xmlWriter, indexObj ); +- xmlWriter.addAttribute( "draw:style-name", saveOasisStrokeElement( context.mainStyles() ) ); +- +- KPPointObject::saveOasis( xmlWriter, context ); +- if( !objectName.isEmpty()) +- xmlWriter.addAttribute( "draw:name", objectName ); +- xmlWriter.endElement(); ++ KPShadowObject::saveOasisDrawPoints( points, sc ); + return true; + } + ++const char * KPPolylineObject::getOasisElementName() const ++{ ++ return "draw:polyline"; ++} + ++ + void KPPolylineObject::loadOasis(const QDomElement &element, KoOasisContext & context, KPRLoadingInfo *info) + { + kdDebug()<<"void KPPolylineObject::loadOasis(const QDomElement &element)************\n"; +- KPPointObject::loadOasis( element,context, info ); ++ KPShadowObject::loadOasis( element, context, info ); ++ KPShadowObject::loadOasisDrawPoints( points, element, context, info ); ++ loadOasisMarker( context ); + } +Index: kpresenter/kpquadricbeziercurveobject.cc +=================================================================== +--- kpresenter/kpquadricbeziercurveobject.cc (revision 427945) ++++ kpresenter/kpquadricbeziercurveobject.cc (working copy) +@@ -1,6 +1,7 @@ + // -*- Mode: c++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 4; -*- + /* This file is part of the KDE project + Copyright (C) 2001 Toshitaka Fujioka <fujioka@kde.org> ++ Copyright (C) 2005 Thorsten Zachmann <zachmann@kde.org> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public +@@ -60,16 +61,18 @@ + return *this; + } + +-bool KPQuadricBezierCurveObject::saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj ) const ++bool KPQuadricBezierCurveObject::saveOasisObjectAttributes( KPOasisSaveContext &sc ) const + { +- kdDebug()<<"bool KPQuadricBezierCurveObject::saveOasis( KoXmlWriter &xmlWriter ) not implemented\n"; +- //todo +- // call saveOasisShadowElement( styleobjectauto ); +- // call saveOasisStrokeElement( KoGenStyle &styleobjectauto ); +- //call xmlWriter.addAttribute( "draw:style-name", style ); ++ kdDebug()<<"bool KPQuadricBezierCurveObject::saveOasisObjectAttributes( KPOasisSaveContext &sc ) not implemented\n"; + return true; + } + ++const char * KPQuadricBezierCurveObject::getOasisElementName() const ++{ ++ // use draw:path ? ++ return "draw:custom-shape"; ++} ++ + void KPQuadricBezierCurveObject::loadOasis( const QDomElement &element, KoOasisContext & context, KPRLoadingInfo *info ) + { + //todo +Index: kspread/dialogs/kspread_dlg_database.cc +=================================================================== +--- kspread/dialogs/kspread_dlg_database.cc (revision 427945) ++++ kspread/dialogs/kspread_dlg_database.cc (working copy) +@@ -600,8 +600,8 @@ + // An update command must also be followed by a space, or it would be parsed + // as an identifier. + // For sanity, also check that there is a SELECT +- QRegExp couldModifyDB( "(^|[( \s])(UPDATE|DELETE|INSERT|CREATE) ", false /* cs */ ); +- QRegExp couldQueryDB( "(^|[( \s])(SELECT) ", false /* cs */ ); ++ QRegExp couldModifyDB( "(^|[( \\s])(UPDATE|DELETE|INSERT|CREATE) ", false /* cs */ ); ++ QRegExp couldQueryDB( "(^|[( \\s])(SELECT) ", false /* cs */ ); + + if (couldModifyDB.search( queryStr ) != -1 || couldQueryDB.search ( queryStr ) == -1 ) + { +Index: kspread/CHANGES +=================================================================== +--- kspread/CHANGES (revision 427945) ++++ kspread/CHANGES (working copy) +@@ -1,5 +1,9 @@ ++since 1.4.0 ++=========== ++- Fix potential crash when rendering obscured cells (#108659) ++ + since 1.4-beta1 +-============================= ++=============== + - Use General/Blank Worksheet as default template. + - KSpread crashes on exit if there is a chart in the sheet (#101915). + - The data editor is disabled for charts which has been loaded. +Index: kspread/kspreadpart.desktop +=================================================================== +--- kspread/kspreadpart.desktop (revision 427945) ++++ kspread/kspreadpart.desktop (working copy) +@@ -19,6 +19,7 @@ + Name[pt]=Componente de Folha de Cálculo do KOffice + Name[pt_BR]=Componente de Planilha de Cálculo do KOffice + Name[ru]=Компонент электронных таблиц KOffice ++Name[sl]=Komponenta za preglednice za KOffice + Name[sr]=KOffice-ова компонента за унакрсне табеле + Name[sr@Latn]=KOffice-ova komponenta za unakrsne tabele + Name[sv]=Koffice-kalkylarkskomponent +Index: kspread/kspread_cell.cc +=================================================================== +--- kspread/kspread_cell.cc (revision 427945) ++++ kspread/kspread_cell.cc (working copy) +@@ -825,7 +825,12 @@ + if (!d->hasExtra()) + return (KSpreadCell *) this; + +- return d->extra()->obscuringCells.first(); ++ else if (d->extra()->obscuringCells.isEmpty()) ++ return (KSpreadCell *) this; ++ ++ else ++ return d->extra()->obscuringCells.first(); ++ + #if 0 + QValueList<KSpreadCell*>::const_iterator it = d->extra()->obscuringCells.begin(); + QValueList<KSpreadCell*>::const_iterator end = d->extra()->obscuringCells.end(); +@@ -2489,6 +2494,7 @@ + // If the cell towards the top is part of a merged cell, get + // the pointer to the master cell. + cellUp = cellUp->ultimateObscuringCell(); ++ + topPen = cellUp->effBottomBorderPen( cellUp->column(), + cellUp->row() ); + +Index: templates/SpreadSheet.desktop +=================================================================== +--- templates/SpreadSheet.desktop (revision 427945) ++++ templates/SpreadSheet.desktop (working copy) +@@ -23,7 +23,7 @@ + Name[pl]=Arkusz kalkulacyjny... + Name[pt]=Documento de Folha de Cálculo... + Name[pt_BR]=Planilha de Cálculo... +-Name[ru]=Электронная таблица... ++Name[ru]=Электронную таблицу... + Name[se]=Rehkenastinárka ... + Name[sl]=Preglednični dokument ... + Name[sr]=Документ са прорачунским листовима... +@@ -54,6 +54,7 @@ + Comment[fa]=KSpread سند جدید: + Comment[fi]=Uusi KSpread-asiakirja: + Comment[fr]=Nouveau document KSpread : ++Comment[ga]=Cáipéis nua KSpread: + Comment[he]=מסמך חדש של KSpread + Comment[hr]=Novi KSpread dokument: + Comment[hu]=Új KSpread-dokumentum: +@@ -67,7 +68,7 @@ + Comment[pl]=Nowy arkusz KSpread: + Comment[pt]=Novo documento do KSpread: + Comment[pt_BR]=Novo documento KSpread: +-Comment[ru]=Новый документ KSpread: ++Comment[ru]=Новая электронная таблица KSpread: + Comment[se]=Ođđa KSpread-dokumeanta: + Comment[sk]=Nový dokument KSpread: + Comment[sl]=Nov dokument za KSpread +Index: templates/Illustration.desktop +=================================================================== +--- templates/Illustration.desktop (revision 427945) ++++ templates/Illustration.desktop (working copy) +@@ -22,7 +22,7 @@ + Name[pl]=Rysunek... + Name[pt]=Documento de Ilustração.... + Name[pt_BR]=Documento de Ilustração... +-Name[ru]=Иллюстрированный документ... ++Name[ru]=Векторный рисунок... + Name[se]=Illustrašuvdna ... + Name[sl]=Ilustracijski dokument ... + Name[sr]=Илустрациони документ... +@@ -49,6 +49,7 @@ + Comment[fa]=Karbon14 سند جدید: + Comment[fi]=Uusi Karbon14-asiakirja: + Comment[fr]=Nouveau document Karbon14 : ++Comment[ga]=Cáipéis nua Karbon14: + Comment[he]=מסמך Karbon14 חדש + Comment[hr]=Novi Karbon14 dokument: + Comment[hu]=Új Karbon14-dokumentum: +@@ -59,7 +60,7 @@ + Comment[pl]=Nowy dokument Karbon14: + Comment[pt]=Novo documento do Karbon14: + Comment[pt_BR]=Novo documento do Karbon14 +-Comment[ru]=Новый документ Karbon14: ++Comment[ru]=Новый рисунок Karbon14: + Comment[se]=Ođđa Karbon14-dokumeanta: + Comment[sk]=Nový dokument Karbon14: + Comment[sl]=Nov dokument za Karbon14 +Index: templates/Presentation.desktop +=================================================================== +--- templates/Presentation.desktop (revision 427945) ++++ templates/Presentation.desktop (working copy) +@@ -23,7 +23,7 @@ + Name[pl]=Prezentacja... + Name[pt]=Documento de Apresentação... + Name[pt_BR]=Apresentação de Slides... +-Name[ru]=Презентация... ++Name[ru]=Презентацию... + Name[se]=Presentašuvdna ... + Name[sl]=Predstavitveni dokument ... + Name[sr]=Презентациони документ... +@@ -67,7 +67,7 @@ + Comment[pl]=Nowa prezentacja KPresenter: + Comment[pt]=Novo documento do KPresenter: + Comment[pt_BR]=Novo documento de apresentação KPresenter: +-Comment[ru]=Новый документ KPresenter: ++Comment[ru]=Новая презентация KPresenter: + Comment[se]=Ođđa KPresenter-presentašuvdna: + Comment[sk]=Nový dokument KPresenter: + Comment[sl]=Nov predstavitveni dokument za KPresenter +Index: templates/TextDocument.desktop +=================================================================== +--- templates/TextDocument.desktop (revision 427945) ++++ templates/TextDocument.desktop (working copy) +@@ -13,6 +13,7 @@ + Name[et]=Tekstidokument... + Name[fi]=Tekstiasiakirja... + Name[fr]=Document texte... ++Name[ga]=Cáipéis Téacs... + Name[he]=מסמך טקסט... + Name[hr]=Tekst datoteka... + Name[hu]=KWord-dokumentum... +@@ -24,7 +25,7 @@ + Name[pl]=Dokument tekstowy... + Name[pt]=Documento de Texto... + Name[pt_BR]=Documento de Texto... +-Name[ru]=Текстовый документ... ++Name[ru]=Документ... + Name[se]=Teakstadokumeanta ... + Name[sl]=Besedilni dokument ... + Name[sr]=Текстуални документ... +@@ -55,6 +56,7 @@ + Comment[fa]=KWord سند جدید برای: + Comment[fi]=Uusi KWord-asiakirja: + Comment[fr]=Nouveau document KWord : ++Comment[ga]=Cáipéis nua KWord: + Comment[he]=מסמך חדש של KWord + Comment[hr]=Novi KWord dokument + Comment[hu]=Új KWord-dokumentum: +Index: karbon/tools/vroundrecttool.h +=================================================================== +--- karbon/tools/vroundrecttool.h (revision 427945) ++++ karbon/tools/vroundrecttool.h (working copy) +@@ -29,7 +29,7 @@ + + class KarbonPart; + class QLabel; +-class KoUnitDoubleSpinBox; ++class KoBuggyUnitDoubleSpinBox; + + + class VRoundRectTool : public VShapeTool +Index: karbon/tools/vpolygontool.cc +=================================================================== +--- karbon/tools/vpolygontool.cc (revision 427945) ++++ karbon/tools/vpolygontool.cc (working copy) +@@ -37,6 +37,7 @@ + + new QLabel( i18n( "Radius:" ), group ); + m_radius = new KDoubleSpinBox(0.0, 1000.0, 0.5, 5.0,2, group ); ++ //m_radius = new KoBuggyUnitDoubleSpinBox( group, 0.0, 1000.0, 0.5, 50.0, KoUnit::U_MM ); + refreshUnit(); + new QLabel( i18n( "Edges:" ), group ); + m_edges = new KIntSpinBox( group ); +Index: karbon/tools/vpolygontool.h +=================================================================== +--- karbon/tools/vpolygontool.h (revision 427945) ++++ karbon/tools/vpolygontool.h (working copy) +@@ -58,7 +58,9 @@ + void refreshUnit(); + + private: ++ // FIXME: This should be a KoUnitDoubleSpinBox! + KDoubleSpinBox *m_radius; ++ + KIntSpinBox *m_edges; + KarbonPart *m_part; + }; +Index: karbon/tools/vspiraltool.h +=================================================================== +--- karbon/tools/vspiraltool.h (revision 427945) ++++ karbon/tools/vspiraltool.h (working copy) +@@ -67,7 +67,9 @@ + void refreshUnit(); + + private: ++ // FIXME: This should be a KoUnitDoubleSpinBox! + KDoubleSpinBox *m_radius; ++ + KIntSpinBox *m_segments; + KDoubleNumInput *m_fade; + KComboBox *m_type; +Index: karbon/tools/vellipsetool.cc +=================================================================== +--- karbon/tools/vellipsetool.cc (revision 427945) ++++ karbon/tools/vellipsetool.cc (working copy) +@@ -49,8 +49,10 @@ + // add width/height-input: + new QLabel( i18n( "Width:" ), group ); + m_width = new KDoubleSpinBox( 0.0, 1000.0, 0.5, 10.0, 2, group ); ++ //m_width = new KoBuggyUnitDoubleSpinBox( group, 0.0, 1000.0, 0.5, 100.0, KoUnit::U_MM ); + new QLabel( i18n( "Height:" ), group ); + m_height = new KDoubleSpinBox( 0.0, 1000.0, 0.5, 10.0, 2, group ); ++ //m_height = new KoBuggyUnitDoubleSpinBox( group, 0.0, 1000.0, 0.5, 100.0, KoUnit::U_MM ); + + new QLabel( i18n( "Start angle:" ), group ); + m_startAngle = new KIntSpinBox( group ); +Index: karbon/tools/vellipsetool.h +=================================================================== +--- karbon/tools/vellipsetool.h (revision 427945) ++++ karbon/tools/vellipsetool.h (working copy) +@@ -25,8 +25,7 @@ + + #include "vshapetool.h" + +-class KoUnitDoubleSpinBox; +-class KoUnitDoubleSpinBox; ++class KoBuggyUnitDoubleSpinBox; + class KComboBox; + class KIntSpinBox; + class KarbonPart; +@@ -55,8 +54,11 @@ + KComboBox *m_type; + KIntSpinBox *m_startAngle; + KIntSpinBox *m_endAngle; ++ ++ // FIXME: These should be KoUnitDoubleSpinBoxes! + KDoubleSpinBox *m_width; + KDoubleSpinBox *m_height; ++ + KarbonPart *m_part; + }; + +Index: karbon/tools/vsinustool.cc +=================================================================== +--- karbon/tools/vsinustool.cc (revision 427945) ++++ karbon/tools/vsinustool.cc (working copy) +@@ -40,8 +40,10 @@ + // add width/height-input: + new QLabel( i18n( "Width:" ), group ); + m_width = new KDoubleSpinBox( 0.0, 1000.0, 0.5, 10.0, 2, group ); ++ //m_width = new KoBuggyUnitDoubleSpinBox( group, 0.0, 1000.0, 0.5, 100.0, KoUnit::U_MM ); + new QLabel( i18n( "Height:" ), group ); + m_height = new KDoubleSpinBox( 0.0, 1000.0, 0.5, 10.0, 2, group ); ++ //m_height = new KoBuggyUnitDoubleSpinBox( group, 0.0, 1000.0, 0.5, 100.0, KoUnit::U_MM ); + + refreshUnit(); + +Index: karbon/tools/vsinustool.h +=================================================================== +--- karbon/tools/vsinustool.h (revision 427945) ++++ karbon/tools/vsinustool.h (working copy) +@@ -24,7 +24,7 @@ + #include <knuminput.h> + #include "vshapetool.h" + +-class KoUnitDoubleSpinBox; ++class KoBuggyUnitDoubleSpinBox; + class KIntSpinBox; + class KarbonPart; + class QLabel; +@@ -58,8 +58,10 @@ + void refreshUnit(); + + private: ++ // FIXME: These should be KoUnitDoubleSpinBoxes! + KDoubleSpinBox *m_width; + KDoubleSpinBox *m_height; ++ + KIntSpinBox *m_periods; + KarbonPart *m_part; + }; +Index: karbon/tools/vrectangletool.cc +=================================================================== +--- karbon/tools/vrectangletool.cc (revision 427945) ++++ karbon/tools/vrectangletool.cc (working copy) +@@ -37,10 +37,11 @@ + // add width/height-input: + new QLabel( i18n( "Width:" ), group ); + m_width = new KDoubleSpinBox( 0.0, 1000.0, 0.5, 10.0, 2, group ); ++ //m_width = new KoBuggyUnitDoubleSpinBox( group, 0.0, 1000.0, 0.5, 100.0, KoUnit::U_MM ); + + new QLabel( i18n( "Height:" ), group ); + m_height = new KDoubleSpinBox( 0.0, 1000.0, 0.5, 10.0, 2, group ); +- ++ //m_height = new KoBuggyUnitDoubleSpinBox( group, 0.0, 1000.0, 0.5, 100.0, KoUnit::U_MM ); + refreshUnit(); + + group->setInsideMargin( 4 ); +Index: karbon/tools/vstartool.cc +=================================================================== +--- karbon/tools/vstartool.cc (revision 427945) ++++ karbon/tools/vstartool.cc (working copy) +@@ -49,10 +49,12 @@ + // add width/height-input: + new QLabel( i18n( "Outer radius:" ), group ); + m_outerR = new KDoubleSpinBox( 0.0, 1000.0, 0.5, 5.0, 2, group ); ++ //m_outerR = new KoBuggyUnitDoubleSpinBox( group, 0.0, 1000.0, 0.5, 50.0, KoUnit::U_MM ); + connect( m_outerR, SIGNAL( valueChanged( double ) ), this, SLOT( setOuterRadius( double ) ) ); + + new QLabel( i18n( "Inner radius:" ), group ); + m_innerR = new KDoubleSpinBox( 0.0, 1000.0, 0.5, 5.0, 2, group ); ++ //m_innerR = new KoBuggyUnitDoubleSpinBox( group, 0.0, 1000.0, 0.5, 25.0, KoUnit::U_MM ); + + refreshUnit(); + +Index: karbon/tools/vstartool.h +=================================================================== +--- karbon/tools/vstartool.h (revision 427945) ++++ karbon/tools/vstartool.h (working copy) +@@ -54,8 +54,10 @@ + void setOuterRadius( double ); + + private: ++ // FIXME: These should be KoUnitDoubleSpinBoxes! + KDoubleSpinBox *m_innerR; + KDoubleSpinBox *m_outerR; ++ + KDoubleNumInput *m_roundness; + KIntSpinBox *m_edges; + KIntSpinBox *m_innerAngle; +Index: karbon/tools/vspiraltool.cc +=================================================================== +--- karbon/tools/vspiraltool.cc (revision 427945) ++++ karbon/tools/vspiraltool.cc (working copy) +@@ -43,6 +43,7 @@ + + new QLabel( i18n( "Radius:" ), group ); + m_radius = new KDoubleSpinBox( 0.0, 1000.0, 0.5, 5.0, 2, group ); ++ //m_radius = new KoBuggyUnitDoubleSpinBox( group, 0.0, 1000.0, 0.5, 50.0, KoUnit::U_MM ); + refreshUnit(); + new QLabel( i18n( "Segments:" ), group ); + m_segments = new KIntSpinBox( group ); +Index: karbon/tools/vrectangletool.h +=================================================================== +--- karbon/tools/vrectangletool.h (revision 427945) ++++ karbon/tools/vrectangletool.h (working copy) +@@ -29,7 +29,7 @@ + + class KarbonPart; + class QLabel; +-class KoUnitDoubleSpinBox; ++class KoBuggyUnitDoubleSpinBox; + + class VRectangleTool : public VShapeTool + { +@@ -59,8 +59,10 @@ + void refreshUnit(); + + private: ++ // FIXME: These should be KoUnitDoubleSpinBoxes! + KDoubleSpinBox *m_width; + KDoubleSpinBox *m_height; ++ + KarbonPart *m_part; + }; + +Index: karbon/dialogs/vconfiguredlg.cc +=================================================================== +--- karbon/dialogs/vconfiguredlg.cc (revision 427945) ++++ karbon/dialogs/vconfiguredlg.cc (working copy) +@@ -317,17 +317,17 @@ + gridColorLbl->setBuddy( m_gridColorBtn ); + QGroupBox* spacingGrp = new QGroupBox( 2, Qt::Horizontal, i18n( "Spacing" ), page ); + QLabel* spaceHorizLbl = new QLabel( i18n( "&Horizontal:" ), spacingGrp ); +- m_spaceHorizUSpin = new KoUnitDoubleSpinBox( spacingGrp, 0.0, pgw, 0.1, fw, unit ); ++ m_spaceHorizUSpin = new KoBuggyUnitDoubleSpinBox( spacingGrp, 0.0, pgw, 0.1, fw, unit ); + spaceHorizLbl->setBuddy( m_spaceHorizUSpin ); + QLabel* spaceVertLbl = new QLabel( i18n( "&Vertical:" ), spacingGrp ); +- m_spaceVertUSpin = new KoUnitDoubleSpinBox( spacingGrp, 0.0, pgh, 0.1, fh, unit ); ++ m_spaceVertUSpin = new KoBuggyUnitDoubleSpinBox( spacingGrp, 0.0, pgh, 0.1, fh, unit ); + spaceVertLbl->setBuddy( m_spaceVertUSpin ); + QGroupBox* snapGrp = new QGroupBox( 2, Qt::Horizontal, i18n( "Snap Distance" ), page ); + QLabel* snapHorizLbl = new QLabel( i18n( "H&orizontal:" ), snapGrp ); +- m_snapHorizUSpin = new KoUnitDoubleSpinBox( snapGrp, 0.0, fw, 0.1, sw, unit ); ++ m_snapHorizUSpin = new KoBuggyUnitDoubleSpinBox( snapGrp, 0.0, fw, 0.1, sw, unit ); + snapHorizLbl->setBuddy( m_snapHorizUSpin ); + QLabel* snapVertLbl = new QLabel( i18n( "V&ertical:" ), snapGrp ); +- m_snapVertUSpin = new KoUnitDoubleSpinBox( snapGrp, 0.0, fh, 0.1, sh, unit ); ++ m_snapVertUSpin = new KoBuggyUnitDoubleSpinBox( snapGrp, 0.0, fh, 0.1, sh, unit ); + snapVertLbl->setBuddy( m_snapVertUSpin ); + + QGridLayout* gl = new QGridLayout(); +Index: karbon/dialogs/vconfiguredlg.h +=================================================================== +--- karbon/dialogs/vconfiguredlg.h (revision 427945) ++++ karbon/dialogs/vconfiguredlg.h (working copy) +@@ -27,7 +27,7 @@ + class KConfig; + class KIntNumInput; + class KColorButton; +-class KoUnitDoubleSpinBox; ++class KoBuggyUnitDoubleSpinBox; + class QCheckBox; + class QComboBox; + +@@ -129,10 +129,10 @@ + + private: + KarbonView* m_view; +- KoUnitDoubleSpinBox* m_spaceHorizUSpin; +- KoUnitDoubleSpinBox* m_spaceVertUSpin; +- KoUnitDoubleSpinBox* m_snapHorizUSpin; +- KoUnitDoubleSpinBox* m_snapVertUSpin; ++ KoBuggyUnitDoubleSpinBox* m_spaceHorizUSpin; ++ KoBuggyUnitDoubleSpinBox* m_spaceVertUSpin; ++ KoBuggyUnitDoubleSpinBox* m_snapHorizUSpin; ++ KoBuggyUnitDoubleSpinBox* m_snapVertUSpin; + QCheckBox* m_gridChBox; + QCheckBox* m_snapChBox; + KColorButton* m_gridColorBtn; +Index: karbon/dialogs/vstrokedlg.cc +=================================================================== +--- karbon/dialogs/vstrokedlg.cc (revision 427945) ++++ karbon/dialogs/vstrokedlg.cc (working copy) +@@ -50,7 +50,7 @@ + + QLabel* widthLabel = new QLabel( i18n ( "Width:" ), mainWidget ); + leftLayout->addWidget ( widthLabel ); +- m_setLineWidth = new KoUnitDoubleSpinBox( mainWidget, 0.0, 1000.0, 0.5, 1.0, KoUnit::U_PT, 1 ); ++ m_setLineWidth = new KoBuggyUnitDoubleSpinBox( mainWidget, 0.0, 1000.0, 0.5, 1.0, KoUnit::U_PT, 1 ); + leftLayout->addWidget ( m_setLineWidth ); + + //Dashing -> +Index: karbon/dialogs/vstrokedlg.h +=================================================================== +--- karbon/dialogs/vstrokedlg.h (revision 427945) ++++ karbon/dialogs/vstrokedlg.h (working copy) +@@ -27,7 +27,7 @@ + class QVButtonGroup; + + class KarbonPart; +-class KoUnitDoubleSpinBox; ++class KoBuggyUnitDoubleSpinBox; + class VStroke; + class VColorTab; + +@@ -41,7 +41,7 @@ + private: + VColorTab* m_colortab; + KarbonPart *m_part; +- KoUnitDoubleSpinBox *m_setLineWidth; ++ KoBuggyUnitDoubleSpinBox *m_setLineWidth; + QComboBox *m_styleCombo; + QVButtonGroup *m_typeOption; + QVButtonGroup *m_capOption; +Index: karbon/dockers/vtransformdocker.h +=================================================================== +--- karbon/dockers/vtransformdocker.h (revision 427945) ++++ karbon/dockers/vtransformdocker.h (working copy) +@@ -25,7 +25,7 @@ + + class KarbonPart; + class KarbonView; +-class KoUnitDoubleSpinBox; ++class KoBuggyUnitDoubleSpinBox; + + class VTransformDocker : public VDocker + { +@@ -43,10 +43,10 @@ + private: + KarbonPart *m_part; + KarbonView *m_view; +- KoUnitDoubleSpinBox *m_x; +- KoUnitDoubleSpinBox *m_y; +- KoUnitDoubleSpinBox *m_width; +- KoUnitDoubleSpinBox *m_height; ++ KoBuggyUnitDoubleSpinBox *m_x; ++ KoBuggyUnitDoubleSpinBox *m_y; ++ KoBuggyUnitDoubleSpinBox *m_width; ++ KoBuggyUnitDoubleSpinBox *m_height; + QWidget *mainWidget; + }; + +Index: karbon/dockers/vstrokedocker.cc +=================================================================== +--- karbon/dockers/vstrokedocker.cc (revision 427945) ++++ karbon/dockers/vstrokedocker.cc (working copy) +@@ -50,7 +50,7 @@ + + QLabel* widthLabel = new QLabel( i18n ( "Width:" ), mainWidget ); + mainLayout->addWidget( widthLabel, 0, 0 ); +- m_setLineWidth = new KoUnitDoubleSpinBox( mainWidget, 0.0, 1000.0, 0.5, 1.0, KoUnit::U_PT, 1 ); ++ m_setLineWidth = new KoBuggyUnitDoubleSpinBox( mainWidget, 0.0, 1000.0, 0.5, 1.0, KoUnit::U_PT, 1 ); + mainLayout->addWidget ( m_setLineWidth, 0, 1 ); + connect( m_setLineWidth, SIGNAL( valueChanged( double ) ), this, SLOT( widthChanged() ) ); + +Index: karbon/dockers/vstrokedocker.h +=================================================================== +--- karbon/dockers/vstrokedocker.h (revision 427945) ++++ karbon/dockers/vstrokedocker.h (working copy) +@@ -26,7 +26,7 @@ + class QHButtonGroup; + class QWidget; + +-class KoUnitDoubleSpinBox; ++class KoBuggyUnitDoubleSpinBox; + + class KoMainWindow; + class KarbonView; +@@ -48,7 +48,7 @@ + QWidget *mainWidget; + KarbonPart *m_part; + KarbonView *m_view; +- KoUnitDoubleSpinBox *m_setLineWidth; ++ KoBuggyUnitDoubleSpinBox *m_setLineWidth; + + private slots: + void slotCapChanged( int ID ); +Index: karbon/dockers/vtransformdocker.cc +=================================================================== +--- karbon/dockers/vtransformdocker.cc (revision 427945) ++++ karbon/dockers/vtransformdocker.cc (working copy) +@@ -48,25 +48,25 @@ + //X: (TODO: Set 5000 limit to real Karbon14 limit) + QLabel* xLabel = new QLabel( i18n ( "X:" ), mainWidget ); + mainLayout->addWidget( xLabel, 1, 0 ); +- m_x = new KoUnitDoubleSpinBox( mainWidget, -5000.0, 5000.0, 1.0, 10.0, m_part->unit(), 1 ); ++ m_x = new KoBuggyUnitDoubleSpinBox( mainWidget, -5000.0, 5000.0, 1.0, 10.0, m_part->unit(), 1 ); + mainLayout->addWidget( m_x, 1, 1 ); + + //Y: (TODO: Set 5000 limit to real Karbon14 limit) + QLabel* yLabel = new QLabel( i18n ( "Y:" ), mainWidget ); + mainLayout->addWidget( yLabel, 2, 0 ); +- m_y = new KoUnitDoubleSpinBox( mainWidget, -5000.0, 5000.0, 1.0, 10.0, m_part->unit(), 1 ); ++ m_y = new KoBuggyUnitDoubleSpinBox( mainWidget, -5000.0, 5000.0, 1.0, 10.0, m_part->unit(), 1 ); + mainLayout->addWidget( m_y, 2, 1 ); + + //Width: (TODO: Set 5000 limit to real Karbon14 limit) + QLabel* wLabel = new QLabel( i18n ( "W:" ), mainWidget ); + mainLayout->addWidget( wLabel, 1, 2 ); +- m_width = new KoUnitDoubleSpinBox( mainWidget, 0.0, 5000.0, 1.0, 10.0, m_part->unit(), 1 ); ++ m_width = new KoBuggyUnitDoubleSpinBox( mainWidget, 0.0, 5000.0, 1.0, 10.0, m_part->unit(), 1 ); + mainLayout->addWidget( m_width, 1, 3 ); + + //Height: (TODO: Set 5000 limit to real Karbon14 limit) + QLabel* hLabel = new QLabel( i18n ( "H:" ), mainWidget ); + mainLayout->addWidget( hLabel, 2, 2 ); +- m_height = new KoUnitDoubleSpinBox( mainWidget, 0.0, 5000.0, 1.0, 10.0, m_part->unit(), 1 ); ++ m_height = new KoBuggyUnitDoubleSpinBox( mainWidget, 0.0, 5000.0, 1.0, 10.0, m_part->unit(), 1 ); + mainLayout->addWidget( m_height, 2, 3 ); + + //TODO: Add Rotation, Shear +Index: karbon/widgets/vselecttoolbar.cc +=================================================================== +--- karbon/widgets/vselecttoolbar.cc (revision 427945) ++++ karbon/widgets/vselecttoolbar.cc (working copy) +@@ -38,24 +38,24 @@ + setCaption( i18n( "Object Properties" ) ); + QLabel *x_label = new QLabel( i18n( "X:" ), this, "kde toolbar widget" ); + insertWidget( 0, x_label->width(), x_label ); +- m_x = new KoUnitDoubleSpinBox( this, 0.0, 1000.0, 0.5 ); ++ m_x = new KoBuggyUnitDoubleSpinBox( this, 0.0, 1000.0, 0.5 ); + connect( m_x, SIGNAL( valueChanged( double ) ), this, SLOT( slotXChanged( double ) ) ); + insertWidget( 1, m_x->width(), m_x ); + QLabel *y_label = new QLabel( i18n( "Y:" ), this, "kde toolbar widget" ); + insertWidget( 2, y_label->width(), y_label ); +- m_y = new KoUnitDoubleSpinBox( this, 0.0, 1000.0, 0.5 ); ++ m_y = new KoBuggyUnitDoubleSpinBox( this, 0.0, 1000.0, 0.5 ); + connect( m_y, SIGNAL( valueChanged( double ) ), this, SLOT( slotYChanged( double ) ) ); + insertWidget( 3, m_y->width(), m_y ); + + insertSeparator( 4 ); + QLabel *w_label = new QLabel( i18n( "Width:" ), this, "kde toolbar widget" ); + insertWidget( 5, w_label->width(), w_label ); +- m_width = new KoUnitDoubleSpinBox( this, 0.0, 1000.0, 0.5 ); ++ m_width = new KoBuggyUnitDoubleSpinBox( this, 0.0, 1000.0, 0.5 ); + connect( m_width, SIGNAL( valueChanged( double ) ), this, SLOT( slotWidthChanged( double ) ) ); + insertWidget( 6, m_width->width(), m_width ); + QLabel *h_label = new QLabel( i18n( "Height:" ), this, "kde toolbar widget" ); + insertWidget( 7, h_label->width(), h_label ); +- m_height = new KoUnitDoubleSpinBox( this, 0.0, 1000.0, 0.5 ); ++ m_height = new KoBuggyUnitDoubleSpinBox( this, 0.0, 1000.0, 0.5 ); + connect( m_height, SIGNAL( valueChanged( double ) ), this, SLOT( slotHeightChanged( double ) ) ); + insertWidget( 8, m_height->width(), m_height ); + +Index: karbon/widgets/vselecttoolbar.h +=================================================================== +--- karbon/widgets/vselecttoolbar.h (revision 427945) ++++ karbon/widgets/vselecttoolbar.h (working copy) +@@ -24,7 +24,7 @@ + + #include <ktoolbar.h> + +-class KoUnitDoubleSpinBox; ++class KoBuggyUnitDoubleSpinBox; + class KarbonView; + + class VSelectToolBar : public KToolBar +@@ -42,10 +42,10 @@ + void slotHeightChanged( double ); + + private: +- KoUnitDoubleSpinBox *m_x; +- KoUnitDoubleSpinBox *m_y; +- KoUnitDoubleSpinBox *m_width; +- KoUnitDoubleSpinBox *m_height; ++ KoBuggyUnitDoubleSpinBox *m_x; ++ KoBuggyUnitDoubleSpinBox *m_y; ++ KoBuggyUnitDoubleSpinBox *m_width; ++ KoBuggyUnitDoubleSpinBox *m_height; + KarbonView *m_view; + }; + diff --git a/editors/koffice-kde3/files/patch-filters-kspread-excel-sidewinder-excel.cpp b/editors/koffice-kde3/files/patch-filters-kspread-excel-sidewinder-excel.cpp deleted file mode 100644 index 65e60fd83a86..000000000000 --- a/editors/koffice-kde3/files/patch-filters-kspread-excel-sidewinder-excel.cpp +++ /dev/null @@ -1,11 +0,0 @@ ---- filters/kspread/excel/sidewinder/excel.cpp.orig Wed Jun 29 02:06:17 2005 -+++ filters/kspread/excel/sidewinder/excel.cpp Wed Jun 29 02:04:06 2005 -@@ -5412,7 +5412,7 @@ - case 10: valueFormat = "0.00%"; break; - case 11: valueFormat = "0.00E+00"; break; - case 12: valueFormat = "#?/?"; break; -- case 13: valueFormat = "#\?\?\/\?\?"; break; -+ case 13: valueFormat = "#\?\?/\?\?"; break; - case 14: valueFormat = "M/D/YY"; break; - case 15: valueFormat = "D-MMM-YY"; break; - case 16: valueFormat = "D-MMM"; break; diff --git a/editors/koffice-kde3/files/patch-krita-plugins-cimg-CImg.h b/editors/koffice-kde3/files/patch-krita-plugins-cimg-CImg.h deleted file mode 100644 index 9c914acb3d05..000000000000 --- a/editors/koffice-kde3/files/patch-krita-plugins-cimg-CImg.h +++ /dev/null @@ -1,11 +0,0 @@ ---- krita/plugins/cimg/CImg.h.orig Tue Jun 28 02:31:30 2005 -+++ krita/plugins/cimg/CImg.h Tue Jun 28 02:32:10 2005 -@@ -5135,7 +5135,7 @@ - if (ny1<0 || ny0>=dimy()) return *this; - if (ny0<0) { nx0-=ny0*(nx1-nx0)/(ny1-ny0); ny0=0; } - if (ny1>=dimy()) { nx1+=(ny1-dimy())*(nx0-nx1)/(ny1-ny0); ny1=dimy()-1;} -- const unsigned int dmax = (unsigned int)cimg::max(std::abs(nx1-nx0),ny1-ny0), whz = width*height*depth; -+ const unsigned int dmax = (unsigned int)cimg::max(std::abs((long int)(nx1-nx0)),(long int)(ny1-ny0)), whz = width*height*depth; - const float px = dmax?(nx1-nx0)/(float)dmax:0, py = dmax?(ny1-ny0)/(float)dmax:0; - float x = (float)nx0, y = (float)ny0; - if (opacity>=1) for (unsigned int t=0; t<=dmax; t++) { diff --git a/editors/koffice-kde3/files/patch-kspread-dialogs-kspread_dlg_database.cc b/editors/koffice-kde3/files/patch-kspread-dialogs-kspread_dlg_database.cc deleted file mode 100644 index 0f733f0e891f..000000000000 --- a/editors/koffice-kde3/files/patch-kspread-dialogs-kspread_dlg_database.cc +++ /dev/null @@ -1,13 +0,0 @@ ---- kspread/dialogs/kspread_dlg_database.cc.orig Tue Jun 28 03:42:22 2005 -+++ kspread/dialogs/kspread_dlg_database.cc Tue Jun 28 03:48:20 2005 -@@ -600,8 +600,8 @@ - // An update command must also be followed by a space, or it would be parsed - // as an identifier. - // For sanity, also check that there is a SELECT -- QRegExp couldModifyDB( "(^|[( \s])(UPDATE|DELETE|INSERT|CREATE) ", false /* cs */ ); -- QRegExp couldQueryDB( "(^|[( \s])(SELECT) ", false /* cs */ ); -+ QRegExp couldModifyDB( "(^|[( \\s])(UPDATE|DELETE|INSERT|CREATE) ", false /* cs */ ); -+ QRegExp couldQueryDB( "(^|[( \\s])(SELECT) ", false /* cs */ ); - - if (couldModifyDB.search( queryStr ) != -1 || couldQueryDB.search ( queryStr ) == -1 ) - { diff --git a/editors/koffice-kde4/Makefile b/editors/koffice-kde4/Makefile index 36889951226f..e85d413c5897 100644 --- a/editors/koffice-kde4/Makefile +++ b/editors/koffice-kde4/Makefile @@ -7,6 +7,7 @@ PORTNAME= koffice PORTVERSION= 1.4.0a +PORTREVISION= 1 PORTEPOCH= 1 CATEGORIES= editors kde MASTER_SITES= ${MASTER_SITE_KDE} diff --git a/editors/koffice-kde4/files/patch-1.4.0_patchset_1.diff b/editors/koffice-kde4/files/patch-1.4.0_patchset_1.diff new file mode 100644 index 000000000000..bf61a1b9ba41 --- /dev/null +++ b/editors/koffice-kde4/files/patch-1.4.0_patchset_1.diff @@ -0,0 +1,5060 @@ +Index: kformula/kformulapart.desktop +=================================================================== +--- kformula/kformulapart.desktop (revision 427945) ++++ kformula/kformulapart.desktop (working copy) +@@ -19,6 +19,7 @@ + Name[pt]=Componente de Fórmulas do KOffice + Name[pt_BR]=Componente de Fórmulas do KOffice + Name[ru]=Компонент формул KOffice ++Name[sl]=Komponenta za enačbe za KOffice + Name[sr]=KOffice-ова компонента за формуле + Name[sr@Latn]=KOffice-ova komponenta za formule + Name[sv]=Koffice-formelkomponent +Index: servicetypes/koplugin.desktop +=================================================================== +--- servicetypes/koplugin.desktop (revision 427945) ++++ servicetypes/koplugin.desktop (working copy) +@@ -22,6 +22,7 @@ + Comment[fi]=KOffice-laajennus + Comment[fo]=KSkrivstovu-ístingur + Comment[fr]=Module externe de KOffice ++Comment[ga]=Breiseán KOffice + Comment[he]=תוסף של KOffice + Comment[hr]=KOffice dodatak + Comment[hu]=KOffice-bővítőmodul +Index: servicetypes/kofficepart.desktop +=================================================================== +--- servicetypes/kofficepart.desktop (revision 427945) ++++ servicetypes/kofficepart.desktop (working copy) +@@ -22,6 +22,7 @@ + Comment[fa]=KOffice اجزای + Comment[fi]=KOffice-komponentti + Comment[fr]=Composant KOffice ++Comment[ga]=Comhpháirt KOffice + Comment[he]=רכיב של KOffice + Comment[hr]=KOffice komponenta + Comment[hu]=KOffice-komponens +Index: servicetypes/kofilter.desktop +=================================================================== +--- servicetypes/kofilter.desktop (revision 427945) ++++ servicetypes/kofilter.desktop (working copy) +@@ -22,6 +22,7 @@ + Comment[fi]=KOffice-suodin + Comment[fo]=KSkrivstovu-filtur + Comment[fr]=Filtre KOffice ++Comment[ga]=Scagaire KOffice + Comment[he]=מסנן של KOffice + Comment[hr]=KOffice filter + Comment[hu]=KOffice-szűrő +Index: kword/kwordpart.desktop +=================================================================== +--- kword/kwordpart.desktop (revision 427945) ++++ kword/kwordpart.desktop (working copy) +@@ -20,6 +20,7 @@ + Name[pt]=Componente de Processamento de Texto do KOffice + Name[pt_BR]=Componente de Processamento de Texto do KOffice + Name[ru]=Компонент текстового редактора KOffice ++Name[sl]=Komponenta za obdelovanje besedil za KOffice + Name[sr]=KOffice-ова компонента за обраду текста + Name[sr@Latn]=KOffice-ova komponenta za obradu teksta + Name[sv]=Koffice-ordbehandlingskomponent +Index: kword/kwmailmerge.desktop +=================================================================== +--- kword/kwmailmerge.desktop (revision 427945) ++++ kword/kwmailmerge.desktop (working copy) +@@ -17,6 +17,7 @@ + Comment[et]=KWordi kirjakoosteplugin + Comment[fi]=KWord-postituslaajennus + Comment[fr]=Module fusion de courrier pour KWord ++Comment[ga]=Breiseán postchumaisc KWord + Comment[he]=תוסף מיזוג דואר ל־KWord + Comment[hr]=KWord dodatak za mailmerge + Comment[hu]=KWord körlevél-bővítőmodul +Index: kword/configfootnotedia.h +=================================================================== +--- kword/configfootnotedia.h (revision 427945) ++++ kword/configfootnotedia.h (working copy) +@@ -28,7 +28,7 @@ + class QRadioButton; + class KIntNumInput; + class QComboBox; +-class KoUnitDoubleSpinBox; ++class KoBuggyUnitDoubleSpinBox; + + class KWConfigFootNoteDia : public KDialogBase + { +@@ -47,7 +47,7 @@ + QRadioButton *rbPosCentered; + QRadioButton *rbPosRight; + KIntNumInput *spLength; +- KoUnitDoubleSpinBox *spWidth; ++ KoBuggyUnitDoubleSpinBox *spWidth; + QComboBox *m_cbLineType; + protected slots: + virtual void slotOk(); +Index: kword/kwconfig.cc +=================================================================== +--- kword/kwconfig.cc (revision 427945) ++++ kword/kwconfig.cc (working copy) +@@ -301,7 +301,7 @@ + + QHBox* hbGridX = new QHBox( gbInterfaceGroup ); + QLabel* labelGridX = new QLabel( i18n("&Horizontal grid size:"), hbGridX ); +- gridX=new KoUnitDoubleSpinBox( hbGridX, ++ gridX=new KoBuggyUnitDoubleSpinBox( hbGridX, + 0.1, + 50, + 0.1, +@@ -313,7 +313,7 @@ + + QHBox* hbGridY = new QHBox( gbInterfaceGroup ); + QLabel* labelGridY = new QLabel( i18n("&Vertical grid size:"), hbGridY ); +- gridY=new KoUnitDoubleSpinBox( hbGridY, ++ gridY=new KoBuggyUnitDoubleSpinBox( hbGridY, + 0.1, + 50, + 0.1, +@@ -326,7 +326,7 @@ + + QHBox* hbIndent = new QHBox( gbInterfaceGroup ); + QLabel* labelIdent = new QLabel( i18n("&Paragraph indent by toolbar buttons:"), hbIndent ); +- indent = new KoUnitDoubleSpinBox( hbIndent, ++ indent = new KoBuggyUnitDoubleSpinBox( hbIndent, + 0.1, + 50, + 0.1, +@@ -662,7 +662,7 @@ + + QHBox* hbColumnSpacing = new QHBox( gbDocumentDefaults ); + QLabel* columnSpacingLabel = new QLabel( i18n("Default column spacing:"), hbColumnSpacing ); +- m_columnSpacing = new KoUnitDoubleSpinBox( hbColumnSpacing, ++ m_columnSpacing = new KoBuggyUnitDoubleSpinBox( hbColumnSpacing, + 0.1, + 50, + 0.1, +@@ -764,7 +764,7 @@ + + QHBox* hbTabStop = new QHBox( gbDocumentSettings ); + tabStop = new QLabel(i18n("Tab stop (%1):").arg(doc->unitName()), hbTabStop); +- m_tabStopWidth = new KoUnitDoubleSpinBox( hbTabStop, ++ m_tabStopWidth = new KoBuggyUnitDoubleSpinBox( hbTabStop, + MM_TO_POINT(2), + doc->ptPaperWidth(), + 0.1, +Index: kword/framedia.cc +=================================================================== +--- kword/framedia.cc (revision 427945) ++++ kword/framedia.cc (working copy) +@@ -956,7 +956,7 @@ + lx->resize( lx->sizeHint() ); + pGrid->addWidget( lx, 1, 0 ); + +- sx = new KoUnitDoubleSpinBox( grp1, 0, 9999, 1, 0.0, doc->unit() ); ++ sx = new KoBuggyUnitDoubleSpinBox( grp1, 0, 9999, 1, 0.0, doc->unit() ); + + sx->resize( sx->sizeHint() ); + pGrid->addWidget( sx, 1, 1 ); +@@ -965,7 +965,7 @@ + ly->resize( ly->sizeHint() ); + pGrid->addWidget( ly, 1, 2 ); + +- sy = new KoUnitDoubleSpinBox( grp1, 0, 9999, 1, 0.0, doc->unit() ); ++ sy = new KoBuggyUnitDoubleSpinBox( grp1, 0, 9999, 1, 0.0, doc->unit() ); + sy->resize( sy->sizeHint() ); + pGrid->addWidget( sy, 1, 3 ); + +@@ -973,7 +973,7 @@ + lw->resize( lw->sizeHint() ); + pGrid->addWidget( lw, 2, 0 ); + +- sw = new KoUnitDoubleSpinBox( grp1, 0, 9999, 1, 0.0, doc->unit() ); ++ sw = new KoBuggyUnitDoubleSpinBox( grp1, 0, 9999, 1, 0.0, doc->unit() ); + + sw->resize( sw->sizeHint() ); + connect( sw, SIGNAL(valueChanged(double)), +@@ -985,7 +985,7 @@ + lh->resize( lh->sizeHint() ); + pGrid->addWidget( lh, 2, 2 ); + +- sh = new KoUnitDoubleSpinBox( grp1, 0, 9999, 1, 0.0, doc->unit() ); ++ sh = new KoBuggyUnitDoubleSpinBox( grp1, 0, 9999, 1, 0.0, doc->unit() ); + connect( sh, SIGNAL(valueChanged(double)), + this, SLOT(slotUpdateWidthForHeight(double)) ); + +@@ -1095,7 +1095,7 @@ + + f=allFrames.next(); + } +- // TODO port to KoUnitDoubleSpinBox ++ // TODO port to KoBuggyUnitDoubleSpinBox + // and TODO show a special value when frames have a different width/height + if ( sw->isEnabled() ) + sw->setValue( KoUnit::toUserValue( commonWidth, doc->unit() ) ); +@@ -2103,7 +2103,7 @@ + //lml->resize( lml->sizeHint() ); + mGrid->addWidget( lml, 2, 0 ); + +- m_inputLeft = new KoUnitDoubleSpinBox( grp2, 0, 9999, 1, 0.0, doc->unit() ); ++ m_inputLeft = new KoBuggyUnitDoubleSpinBox( grp2, 0, 9999, 1, 0.0, doc->unit() ); + + mGrid->addWidget( m_inputLeft, 2, 1 ); + +@@ -2111,7 +2111,7 @@ + //lmt->resize( lmt->sizeHint() ); + mGrid->addWidget( lmt, 2, 2 ); + +- m_inputTop = new /*KDoubleNumInput*/KoUnitDoubleSpinBox( grp2, 0, 9999, 1, 0.0, doc->unit() ); ++ m_inputTop = new /*KDoubleNumInput*/KoBuggyUnitDoubleSpinBox( grp2, 0, 9999, 1, 0.0, doc->unit() ); + + //m_inputTop->resize( m_inputTop->sizeHint() ); + +@@ -2121,7 +2121,7 @@ + //lmr->resize( lmr->sizeHint() ); + mGrid->addWidget( lmr, 3, 0 ); + +- m_inputRight = new KoUnitDoubleSpinBox( grp2, 0, 9999, 1, 0.0, doc->unit() ); ++ m_inputRight = new KoBuggyUnitDoubleSpinBox( grp2, 0, 9999, 1, 0.0, doc->unit() ); + + //m_inputRight->resize( m_inputRight->sizeHint() ); + mGrid->addWidget( m_inputRight, 3, 1 ); +@@ -2130,7 +2130,7 @@ + //lmb->resize( lmb->sizeHint() ); + mGrid->addWidget( lmb, 3, 2 ); + +- m_inputBottom = new KoUnitDoubleSpinBox( grp2, 0, 9999, 1, 0.0, doc->unit() ); ++ m_inputBottom = new KoBuggyUnitDoubleSpinBox( grp2, 0, 9999, 1, 0.0, doc->unit() ); + + //m_inputBottom->resize( m_inputBottom->sizeHint() ); + mGrid->addWidget( m_inputBottom, 3, 3 ); +Index: kword/resizetabledia.cc +=================================================================== +--- kword/resizetabledia.cc (revision 427945) ++++ kword/resizetabledia.cc (working copy) +@@ -77,7 +77,7 @@ + else + value->setValue( type == ROW ? (rowSelected+1) : (colSelected+1) ); + rc = new QLabel( type == ROW ? i18n( "Height (%1):" ).arg(doc->unitName()) : i18n( "Width (%1):" ).arg(doc->unitName()), page ); +- position= new KoUnitDoubleSpinBox( page, 0.01, table->anchorFrameset()->isFloating() ? table->anchorFrameset()->frame(0)->width(): 9999, 1, 0.0, doc->unit(), doc->unit() ); ++ position= new KoBuggyUnitDoubleSpinBox( page, 0.01, table->anchorFrameset()->isFloating() ? table->anchorFrameset()->frame(0)->width(): 9999, 1, 0.0, doc->unit(), doc->unit() ); + slotValueChanged( value->value()); + connect( value, SIGNAL( valueChanged ( int )), this, SLOT( slotValueChanged( int ))); + +Index: kword/mailmerge/sql/kwserialletter_qtsqldb.desktop +=================================================================== +--- kword/mailmerge/sql/kwserialletter_qtsqldb.desktop (revision 427945) ++++ kword/mailmerge/sql/kwserialletter_qtsqldb.desktop (working copy) +@@ -4,6 +4,7 @@ + ServiceTypes=KWord/MailMergePlugin + + Name=Qt-SQL Source (single table) ++Name[cy]=Ffynhonell Qt-SQL (tabl sengl) + Name[da]=Qt-SQL-kilde (enkelt tabel) + Name[de]=Qt-SQL (Einzeltabelle) + Name[el]=Qt-SQL πηγή (μονός πίνακας) +Index: kword/mailmerge/kspread/kwmailmerge_kspread.desktop +=================================================================== +--- kword/mailmerge/kspread/kwmailmerge_kspread.desktop (revision 427945) ++++ kword/mailmerge/kspread/kwmailmerge_kspread.desktop (working copy) +@@ -22,6 +22,7 @@ + Name[pt]=Fonte de Tabela do KSpread + Name[pt_BR]=Fonte de Tabela do KSpread + Name[ru]=Источник таблиц KSpread ++Name[sl]=Vir tabel KSpread + Name[sr]=KSpread-ов извор табеле + Name[sr@Latn]=KSpread-ov izvor tabele + Name[sv]=Kspread-tabellkällfil +Index: kword/framedia.h +=================================================================== +--- kword/framedia.h (revision 427945) ++++ kword/framedia.h (working copy) +@@ -81,7 +81,7 @@ + void slotValueChanged( double ); + + private: +- KoUnitDoubleSpinBox *m_inputLeft, *m_inputRight, *m_inputTop, *m_inputBottom; ++ KoBuggyUnitDoubleSpinBox *m_inputLeft, *m_inputRight, *m_inputTop, *m_inputBottom; + QCheckBox *m_synchronize; + KWDocument *doc; + bool m_changed; +@@ -168,7 +168,7 @@ + QWidget *tab4; + QGroupBox *grp1; + QLabel *lx, *ly, *lw, *lh; +- KoUnitDoubleSpinBox *sx, *sy, *sw, *sh; ++ KoBuggyUnitDoubleSpinBox *sx, *sy, *sw, *sh; + KWFourSideConfigWidget* m_paddingConfigWidget; + QCheckBox *floating; + QCheckBox *protectSize; +Index: kword/kwconfig.h +=================================================================== +--- kword/kwconfig.h (revision 427945) ++++ kword/kwconfig.h (working copy) +@@ -29,7 +29,7 @@ + class KWView; + class QCheckBox; + class KIntNumInput; +-class KoUnitDoubleSpinBox; ++class KoBuggyUnitDoubleSpinBox; + class KConfig; + class QComboBox; + class KIntNumInput; +@@ -69,8 +69,8 @@ + KWView* m_pView; + KConfig* config; + QComboBox *m_unitCombo; +- KoUnitDoubleSpinBox* gridX,*gridY; +- KoUnitDoubleSpinBox* indent; ++ KoBuggyUnitDoubleSpinBox* gridX,*gridY; ++ KoBuggyUnitDoubleSpinBox* indent; + KIntNumInput* recentFiles; + QCheckBox *showStatusBar, *showScrollBar, *pgUpDownMovesCaret; + int oldNbRecentFiles; +@@ -114,7 +114,7 @@ + QLabel *fontName; + QLabel *tabStop; + +- KoUnitDoubleSpinBox* m_columnSpacing; ++ KoBuggyUnitDoubleSpinBox* m_columnSpacing; + + KIntNumInput* autoSave; + int oldAutoSaveValue; +@@ -123,7 +123,7 @@ + int m_oldStartingPage; + bool m_oldBackupFile; + KIntNumInput* m_variableNumberOffset; +- KoUnitDoubleSpinBox *m_tabStopWidth; ++ KoBuggyUnitDoubleSpinBox *m_tabStopWidth; + QCheckBox *m_cursorInProtectedArea; + QCheckBox *m_createBackupFile; + // QCheckBox *m_directInsertCursor; +Index: kword/configfootnotedia.cc +=================================================================== +--- kword/configfootnotedia.cc (revision 427945) ++++ kword/configfootnotedia.cc (working copy) +@@ -106,7 +106,7 @@ + + QGridLayout *layout = new QGridLayout( 0, 1, 1, 0, 6); + +- spWidth = new KoUnitDoubleSpinBox(page, 0, 5, 0.5, 1.0, m_doc->unit(), 1); ++ spWidth = new KoBuggyUnitDoubleSpinBox(page, 0, 5, 0.5, 1.0, m_doc->unit(), 1); + spWidth->setValue( m_doc->footNoteSeparatorLineWidth()); + layout->addWidget( spWidth, 1, 1 ); + +Index: kword/templates/DTP/SimpleLayout.desktop +=================================================================== +--- kword/templates/DTP/SimpleLayout.desktop (revision 427945) ++++ kword/templates/DTP/SimpleLayout.desktop (working copy) +@@ -21,6 +21,7 @@ + Name[fa]=نمونه طرح بندی + Name[fi]=Yksinkertainen taittomalli + Name[fr]=Mise en page simple ++Name[ga]=Leagan Amach Simplí + Name[he]=פריסה פשוטה + Name[hr]=Jednostavni raspored + Name[hu]=Egyszerű elrendezés +Index: kword/templates/DTP/Empty.desktop +=================================================================== +--- kword/templates/DTP/Empty.desktop (revision 427945) ++++ kword/templates/DTP/Empty.desktop (working copy) +@@ -17,6 +17,7 @@ + Name[fa]=صفحه خالی + Name[fi]=Tyhjä sivu + Name[fr]=Page vide ++Name[ga]=Leathanach Folamh + Name[he]=דף ריק + Name[hr]=Prazna stranica + Name[hu]=Üres oldal +Index: kword/templates/DTP/fax.desktop +=================================================================== +--- kword/templates/DTP/fax.desktop (revision 427945) ++++ kword/templates/DTP/fax.desktop (working copy) +@@ -20,6 +20,7 @@ + Name[fa]=نمونه دورنگار + Name[fi]=Faksipohja + Name[fr]=Modèle de fax ++Name[ga]=Teimpléad Facs + Name[he]=תבנית פקס + Name[hr]=Fax predložak + Name[hu]=Faxsablon +@@ -63,6 +64,7 @@ + Comment[et]=Faks päisega + Comment[fi]=Faksiasiakirja otsikolla + Comment[fr]=Document de fax. avec en-tête ++Comment[ga]=Cáipéis fhacs, le ceanntásc + Comment[he]=מסמך פקס עם כותרת + Comment[hr]=Faks dokument, sa zaglavljem + Comment[hu]=Fax dokumentum (fejléccel) +Index: kword/templates/Wordprocessing/TwoColumns.desktop +=================================================================== +--- kword/templates/Wordprocessing/TwoColumns.desktop (revision 427945) ++++ kword/templates/Wordprocessing/TwoColumns.desktop (working copy) +@@ -22,6 +22,7 @@ + Name[fi]=Kaksi palstaa + Name[fo]=Tveir teigar + Name[fr]=Deux colonnes ++Name[ga]=Dhá Cholún + Name[he]=שני טורים + Name[hr]=Dva stupca + Name[hu]=Kétoszlopos +Index: kword/resizetabledia.h +=================================================================== +--- kword/resizetabledia.h (revision 427945) ++++ kword/resizetabledia.h (working copy) +@@ -31,7 +31,7 @@ + class QRadioButton; + class QLabel; + class QSpinBox; +-class KoUnitDoubleSpinBox; ++class KoBuggyUnitDoubleSpinBox; + + class KWResizeTableDia : public KDialogBase + { +@@ -48,7 +48,7 @@ + KWDocument *doc; + ResizeType type; + KWCanvas *canvas; +- KoUnitDoubleSpinBox *position; ++ KoBuggyUnitDoubleSpinBox *position; + double resetValue; + protected slots: + virtual void slotOk(); +Index: kexi/plugins/forms/kexilabel.cpp +=================================================================== +--- kexi/plugins/forms/kexilabel.cpp (revision 427945) ++++ kexi/plugins/forms/kexilabel.cpp (working copy) +@@ -33,6 +33,20 @@ + #define SHADOW_DIAGONAL_FACTOR 1.0 + #define SHADOW_THICKNESS 1 + ++class KexiLabelPrivate : public QLabel { ++ friend class KexiLabel; ++ public: ++ KexiLabelPrivate( KexiLabel* ); ++ virtual ~KexiLabelPrivate(); ++ private: ++ QImage makeShadow( const QImage& textImage, const QColor &bgColor, const QRect& boundingRect ); ++ QRect getBounding( const QImage &image, const QRect& startRect ); ++// double defaultDecay( QImage& source, int i, int j ); ++ KPixmap getShadowPixmap(); ++ ++ QRect p_shadowRect; ++}; ++ + KexiLabelPrivate::KexiLabelPrivate( KexiLabel* parent ) + : QLabel( parent ) + { +@@ -404,6 +418,40 @@ + QLabel::paintEvent( e ); + } + ++void KexiLabel::fontChange( const QFont& font ) { ++ p_pixmapDirty = true; ++ p_privateLabel->setFont( font ); ++ QLabel::fontChange( font ); ++} ++ ++void KexiLabel::styleChange( QStyle& style ) { ++ p_pixmapDirty = true; ++ QLabel::styleChange( style ); ++} ++ ++void KexiLabel::enabledChange( bool enabled ) { ++ p_pixmapDirty = true; ++ p_privateLabel->setEnabled( enabled ); ++ QLabel::enabledChange( enabled ); ++} ++ ++void KexiLabel::paletteChange( const QPalette& pal ) { ++ p_pixmapDirty = true; ++ p_privateLabel->setPalette( pal ); ++ QLabel::paletteChange( pal ); ++} ++ ++void KexiLabel::frameChanged() { ++ p_pixmapDirty = true; ++ p_privateLabel->frameChanged(); ++ QFrame::frameChanged(); ++} ++ ++void KexiLabel::showEvent( QShowEvent* e ) { ++ p_pixmapDirty = true; ++ QLabel::showEvent( e ); ++} ++ + void KexiLabel::setValueInternal( const QVariant& add, bool removeOld ) { + if (removeOld) + setText(add.toString()); +Index: kexi/plugins/forms/kexilabel.h +=================================================================== +--- kexi/plugins/forms/kexilabel.h (revision 427945) ++++ kexi/plugins/forms/kexilabel.h (working copy) +@@ -32,20 +32,10 @@ + class QTimer; + class KexiLabel; + +-class KexiLabelPrivate : public QLabel { +- friend class KexiLabel; +- public: +- KexiLabelPrivate( KexiLabel* ); +- virtual ~KexiLabelPrivate(); +- private: +- QImage makeShadow( const QImage& textImage, const QColor &bgColor, const QRect& boundingRect ); +- QRect getBounding( const QImage &image, const QRect& startRect ); +-// double defaultDecay( QImage& source, int i, int j ); +- KPixmap getShadowPixmap(); ++class KexiLabelPrivate; + +- QRect p_shadowRect; +-}; + ++ + /** + An extended, data-aware, read-only text label. + It's text may have a drop-shadow. +@@ -139,40 +129,14 @@ + */ + virtual void setValueInternal( const QVariant& add, bool removeOld ); + +- virtual void fontChange( const QFont& font ) { +- p_pixmapDirty = true; +- p_privateLabel->setFont( font ); +- QLabel::fontChange( font ); +- } ++ virtual void fontChange( const QFont& font ); ++ virtual void styleChange( QStyle& style ); ++ virtual void enabledChange( bool enabled ); + +- virtual void styleChange( QStyle& style ) { +- p_pixmapDirty = true; +- QLabel::styleChange( style ); +- } ++ virtual void paletteChange( const QPalette& pal ); ++ virtual void frameChanged(); ++ virtual void showEvent( QShowEvent* e ); + +- virtual void enabledChange( bool enabled ) { +- p_pixmapDirty = true; +- p_privateLabel->setEnabled( enabled ); +- QLabel::enabledChange( enabled ); +- } +- +- virtual void paletteChange( const QPalette& pal ) { +- p_pixmapDirty = true; +- p_privateLabel->setPalette( pal ); +- QLabel::paletteChange( pal ); +- } +- +- virtual void frameChanged() { +- p_pixmapDirty = true; +- p_privateLabel->frameChanged(); +- QFrame::frameChanged(); +- } +- +- virtual void showEvent( QShowEvent* e ) { +- p_pixmapDirty = true; +- QLabel::showEvent( e ); +- } +- + private: + void updatePixmapLater(); + +Index: kexi/plugins/kugar/kexikugarhandler.desktop +=================================================================== +--- kexi/plugins/kugar/kexikugarhandler.desktop (revision 427945) ++++ kexi/plugins/kugar/kexikugarhandler.desktop (working copy) +@@ -60,7 +60,7 @@ + Comment[nn]=Integrasjon av Kugar-basert rapportgenerering + Comment[pt]=Integração da geração de relatórios do Kugar + Comment[pt_BR]=Integração do Kugar baseada na geração de relatório +-Comment[ru]=Интеграция с Kugar для построения отчётов ++Comment[ru]=Отчёт посредством Kugar + Comment[sk]=Integrácia generovaných správ založených na Kugar + Comment[sl]=Integracija ustvarjanja poročil na osnovi Kugarja + Comment[sr]=Интеграција прављења извештаја заснованог на Kugar-у +Index: kexi/plugins/reports/kexireportfactory.desktop +=================================================================== +--- kexi/plugins/reports/kexireportfactory.desktop (revision 427945) ++++ kexi/plugins/reports/kexireportfactory.desktop (working copy) +@@ -19,6 +19,7 @@ + Name[pt]=Elementos de Relatório do Kexi + Name[pt_BR]=Widgets de Relatório do Kexi + Name[ru]=Элементы управления для отчётов Kexi ++Name[sl]=Gradniki za poročila za Kexi + Name[sr]=Kexi-јеве контроле за извештаје + Name[sr@Latn]=Kexi-jeve kontrole za izveštaje + Name[sv]=Kexi-rapportkomponenter +Index: kexi/kexipart.desktop +=================================================================== +--- kexi/kexipart.desktop (revision 427945) ++++ kexi/kexipart.desktop (working copy) +@@ -19,6 +19,7 @@ + Name[pt]=Componente de Bases de Dados do KOffice + Name[pt_BR]=Componente de Banco de Dados do KOffice + Name[ru]=Компонент баз данных KOffice ++Name[sl]=Komponenta za zbirke podatkov za KOffice + Name[sr]=KOffice-ова компонента за базе података + Name[sr@Latn]=KOffice-ova komponenta za baze podataka + Name[sv]=Koffice-databaskomponent +Index: kexi/filters/import/csv/kexicsvimport.desktop +=================================================================== +--- kexi/filters/import/csv/kexicsvimport.desktop (revision 427945) ++++ kexi/filters/import/csv/kexicsvimport.desktop (working copy) +@@ -42,7 +42,7 @@ + Comment[pl]=Import pliku CVS... + Comment[pt]=Importar um Ficheiro CSV... + Comment[pt_BR]=Importar Arquivo CSV... +-Comment[ru]=Импорт данных из CSV... ++Comment[ru]=Импорт из CSV... + Comment[sk]=Import súborov CSV... + Comment[sl]=Uvoz datoteke CSV ... + Comment[sr]=Увози се CSV фајл... +Index: kexi/filters/import/kspread_chain/kexikspreadimport.desktop +=================================================================== +--- kexi/filters/import/kspread_chain/kexikspreadimport.desktop (revision 427945) ++++ kexi/filters/import/kspread_chain/kexikspreadimport.desktop (working copy) +@@ -38,7 +38,7 @@ + Comment[nn]=Importer KSpread-lesbar fil ... + Comment[pt]=Importar um ficheiro KSpread... + Comment[pt_BR]=Importar arquivo legível do KSpread... +-Comment[ru]=Импорт в KSpread... ++Comment[ru]=Импорт данных из KSpread... + Comment[sk]=Import súboru podporovaného KSpread... + Comment[sl]=Uvoz datoteke za KSpread ... + Comment[sr]=Увози се фајл који се може читати KSpread-ом... +Index: kexi/data/x-kexiproject-sqlite2.desktop +=================================================================== +--- kexi/data/x-kexiproject-sqlite2.desktop (revision 427945) ++++ kexi/data/x-kexiproject-sqlite2.desktop (working copy) +@@ -21,6 +21,7 @@ + Comment[pt]=Projecto do Kexi em Ficheiro de Base de Dados + Comment[pt_BR]=Projeto Baseado em Arquivo de Banco de Dados do Kexi + Comment[ru]=Проект Kexi с хранилищем данных в файлах ++Comment[sl]=Na datotekah zasnovan projekt zbirke podatkov Kexi + Comment[sr]=Kexi-јев пројекат базе података заснован на фајлу + Comment[sr@Latn]=Kexi-jev projekat baze podataka zasnovan na fajlu + Comment[sv]=Kexi filbaserat databasprojekt +Index: kexi/data/x-kexiproject-sqlite3.desktop +=================================================================== +--- kexi/data/x-kexiproject-sqlite3.desktop (revision 427945) ++++ kexi/data/x-kexiproject-sqlite3.desktop (working copy) +@@ -21,6 +21,7 @@ + Comment[pt]=Projecto do Kexi em Ficheiro de Base de Dados + Comment[pt_BR]=Projeto Baseado em Arquivo de Banco de Dados do Kexi + Comment[ru]=Проект Kexi с хранилищем данных в файлах ++Comment[sl]=Na datotekah zasnovan projekt zbirke podatkov Kexi + Comment[sr]=Kexi-јев пројекат базе података заснован на фајлу + Comment[sr@Latn]=Kexi-jev projekat baze podataka zasnovan na fajlu + Comment[sv]=Kexi filbaserat databasprojekt +Index: kexi/data/x-kexiproject-sqlite.desktop +=================================================================== +--- kexi/data/x-kexiproject-sqlite.desktop (revision 427945) ++++ kexi/data/x-kexiproject-sqlite.desktop (working copy) +@@ -22,6 +22,7 @@ + Comment[pt]=Projecto do Kexi em Ficheiro de Base de Dados + Comment[pt_BR]=Projeto Baseado em Arquivo de Banco de Dados do Kexi + Comment[ru]=Проект Kexi с хранилищем данных в файлах ++Comment[sl]=Na datotekah zasnovan projekt zbirke podatkov Kexi + Comment[sr]=Kexi-јев пројекат базе података заснован на фајлу + Comment[sr@Latn]=Kexi-jev projekat baze podataka zasnovan na fajlu + Comment[sv]=Kexi filbaserat databasprojekt +Index: kexi/data/kde32compat/x-sqlite2.desktop +=================================================================== +--- kexi/data/kde32compat/x-sqlite2.desktop (revision 427945) ++++ kexi/data/kde32compat/x-sqlite2.desktop (working copy) +@@ -21,6 +21,7 @@ + Comment[pt]=Ficheiro de Base de Dados do SQLite2 + Comment[pt_BR]=Ficheiro de Base de Dados do SQLite2 + Comment[ru]=База данных SQLite2 ++Comment[sl]=Datoteka zbirke podatkov SQLite2 + Comment[sr]=Фајл базе података SQLite2 + Comment[sr@Latn]=Fajl baze podataka SQLite2 + Comment[sv]=SQLite2-databasfil +Index: kexi/data/kde32compat/x-sqlite3.desktop +=================================================================== +--- kexi/data/kde32compat/x-sqlite3.desktop (revision 427945) ++++ kexi/data/kde32compat/x-sqlite3.desktop (working copy) +@@ -20,6 +20,7 @@ + Comment[pt]=Ficheiro de Base de Dados do SQLite3 + Comment[pt_BR]=Ficheiro de Base de Dados do SQLite3 + Comment[ru]=База данных SQLite3 ++Comment[sl]=Datoteka zbirke podatkov SQLite3 + Comment[sr]=Фајл базе података SQLite3 + Comment[sr@Latn]=Fajl baze podataka SQLite3 + Comment[sv]=SQLite3-databasfil +Index: kexi/data/kexiscripthandler.desktop +=================================================================== +--- kexi/data/kexiscripthandler.desktop (revision 427945) ++++ kexi/data/kexiscripthandler.desktop (working copy) +@@ -5,6 +5,7 @@ + + GenericName=Scripts + GenericName[br]=Urzhiaouegoù ++GenericName[cy]=Sgriptiau + GenericName[da]=Scripter + GenericName[de]=Skripte + GenericName[el]=Σενάρια +@@ -27,6 +28,7 @@ + GenericName[zh_CN]=脚本 + Name=Scripts + Name[br]=Urzhiaouegoù ++Name[cy]=Sgriptiau + Name[da]=Scripter + Name[de]=Skripte + Name[el]=Σενάρια +Index: kexi/formeditor/kdevelop_plugin/kformdesigner_kdev_part.desktop +=================================================================== +--- kexi/formeditor/kdevelop_plugin/kformdesigner_kdev_part.desktop (revision 427945) ++++ kexi/formeditor/kdevelop_plugin/kformdesigner_kdev_part.desktop (working copy) +@@ -17,6 +17,7 @@ + Name[pt]='Plugin' para o KDevelop de Desenho de Formulários + Name[pt_BR]=Plugin do Desenhista de Formulário do KDevelop + Name[ru]=Модуль форм KDevelop ++Name[sl]=Vstavek za oblikovanje obrazcev za KDevelop + Name[sr]=Прикључак дизајнера форми за KDevelop + Name[sr@Latn]=Priključak dizajnera formi za KDevelop + Name[sv]=KDevelop insticksprogram för formulärkonstruktion +Index: tools/thumbnail/kofficethumbnail.desktop +=================================================================== +--- tools/thumbnail/kofficethumbnail.desktop (revision 427945) ++++ tools/thumbnail/kofficethumbnail.desktop (working copy) +@@ -20,6 +20,7 @@ + Name[fi]=KOffice-tiedostot + Name[fo]=KSkrivstovu-fílir + Name[fr]=Fichiers KOffice ++Name[ga]=Comhaid KOffice + Name[he]=קבצי KOffice + Name[hr]=KOffice datoteke + Name[hu]=KOffice-fájlok +Index: tools/kfile-plugins/koffice/kfile_koffice.desktop +=================================================================== +--- tools/kfile-plugins/koffice/kfile_koffice.desktop (revision 427945) ++++ tools/kfile-plugins/koffice/kfile_koffice.desktop (working copy) +@@ -5,6 +5,7 @@ + Name[af]=Koffice Inligting + Name[ar]=معلومات KOffice + Name[bg]=Информация за KOffice ++Name[br]=Titouroù diwar-benn KOffice + Name[ca]=Informació KOffice + Name[cs]=KOffice info + Name[cy]=Gwybodaeth KOffice +@@ -18,6 +19,7 @@ + Name[fi]=KOffice tiedot + Name[fo]=KSkrivstovu-upplýsingar + Name[fr]=Informations sur KOffice ++Name[ga]=Eolas faoi KOffice + Name[he]=מידע KOffice + Name[hu]=KOffice-információ + Name[it]=Informazioni KOffice +@@ -32,7 +34,7 @@ + Name[pl]=Dane koffice + Name[pt]=Informação do KOffice + Name[pt_BR]=Informações do KOffice +-Name[ru]=Информация о KOffice ++Name[ru]=Информация KOffice + Name[se]=KOffice-dieđut + Name[sk]=Informácie o KOffice + Name[sl]=Informacije o KOffice +Index: tools/kfile-plugins/ooo/kfile_ooo.desktop +=================================================================== +--- tools/kfile-plugins/ooo/kfile_ooo.desktop (revision 427945) ++++ tools/kfile-plugins/ooo/kfile_ooo.desktop (working copy) +@@ -13,6 +13,7 @@ + Name[et]=OpenOffice.org-i info + Name[fi]=KOffice tiedot + Name[fr]=Informations sur OpenOffice.org ++Name[ga]=Eolas faoi OpenOffice.org + Name[he]=מידע OpenOffice.org + Name[hu]=OpenOffice.org-információ + Name[it]=Informazioni OpenOffice.org +@@ -23,7 +24,7 @@ + Name[pl]=Informacja OpenOffice.org + Name[pt]=Informação do OpenOffice.org + Name[pt_BR]=Informações do OpenOffice.org +-Name[ru]=Информация об OpenOffice.org ++Name[ru]=Информация OpenOffice.org + Name[se]=OpenOffice.org-dieđut + Name[sk]=Informácie o OpenOffice.org + Name[sl]=Informacije o OpenOffice.org +Index: lib/kofficecore/koApplication.cc +=================================================================== +--- lib/kofficecore/koApplication.cc (revision 427945) ++++ lib/kofficecore/koApplication.cc (working copy) +@@ -149,7 +149,10 @@ + shell->setRootDocument( doc ); + } + else ++ { ++ delete doc; + return false; ++ } + + QObject::disconnect(doc, SIGNAL(sigProgress(int)), shell, SLOT(slotProgress(int))); + } else { +Index: lib/kofficecore/koMainWindow.cc +=================================================================== +--- lib/kofficecore/koMainWindow.cc (revision 427945) ++++ lib/kofficecore/koMainWindow.cc (working copy) +@@ -1033,6 +1033,13 @@ + if ( !newdoc->initDoc( (KoDocument::InitDocFlags)initDocFlags, this ) ) + { + delete newdoc; ++ // See cancelQuits() in KoTemplateChooseDia. ++ // The quit() must be done here so that the KoDocument got deleted already. ++ bool onlyDoc = !KoDocument::documentList() || KoDocument::documentList()->isEmpty(); ++ bool onlyMainWindow = !KMainWindow::memberList || KMainWindow::memberList->count() <= 1; ++ if ( onlyDoc && onlyMainWindow && kapp->instanceName() != "koshell" ) { ++ kapp->quit(); ++ } + return; + } + disconnect(newdoc, SIGNAL(sigProgress(int)), this, SLOT(slotProgress(int))); +Index: lib/kofficecore/koDocument.cc +=================================================================== +--- lib/kofficecore/koDocument.cc (revision 427945) ++++ lib/kofficecore/koDocument.cc (working copy) +@@ -890,6 +890,9 @@ + kdDebug(30003)<<k_funcinfo<<" external (don't save) url:" << childDoc->url().url()<<endl; + path = childDoc->url().url(); + } ++ // OOo uses a trailing slash for the path to embedded objects (== directories) ++ if ( !path.endsWith( "/" ) ) ++ path += '/'; + manifestWriter->addManifestEntry( path, childDoc->nativeOasisMimeType() ); + } + } +@@ -1793,7 +1796,9 @@ + //if ( !oasisStore.loadAndParse( "tar:/META-INF/manifest.xml", manifestDoc, d->lastErrorMessage ) ) + // return false; + +- (void)oasisStore.loadAndParse( "settings.xml", settingsDoc, d->lastErrorMessage ); ++ if ( store->hasFile( "settings.xml" ) ) { ++ (void)oasisStore.loadAndParse( "settings.xml", settingsDoc, d->lastErrorMessage ); ++ } + if ( !loadOasis( contentDoc, oasisStyles, settingsDoc, store ) ) + return false; + +@@ -1920,9 +1925,12 @@ + KoDocument *doc = it.current()->document(); + if ( doc ) + { +- if ( doc->isStoredExtern() ) //###TODO: Handle non-native mimetype docs ++ bool foo = doc->isStoredExtern(); ++ kdDebug(36001) << "========== isStoredExtern() returned " ++ << foo << " ==========" << endl; ++ ++ if ( foo ) //###TODO: Handle non-native mimetype docs + { +- if ( doc->isModified() ) + { + kdDebug(30003)<<k_funcinfo<<" found modified child: "<<doc->url().url()<<" extern="<<doc->isStoredExtern()<<endl; + if ( doc->queryCloseDia() == KMessageBox::Cancel ) +Index: lib/kofficecore/koDocumentChild.cc +=================================================================== +--- lib/kofficecore/koDocumentChild.cc (revision 427945) ++++ lib/kofficecore/koDocumentChild.cc (working copy) +@@ -230,6 +230,8 @@ + QString relPath = KURL( m_tmpURL ).path(); + path += relPath.mid( 1 ); // remove leading '/' + } ++ if ( !path.endsWith( "/" ) ) ++ path += '/'; + const QString mimeType = KoOasisStore::mimeForPath( manifestDoc, path ); + kdDebug() << k_funcinfo << "path for manifest file=" << path << " mimeType=" << mimeType << endl; + if ( mimeType.isEmpty() ) { +@@ -312,6 +314,8 @@ + } + if ( !res ) + { ++ // Keep the error message from the attempted loading ++ QString errorMessage = d->m_doc->errorMessage(); + delete d->m_doc; + d->m_doc = 0; + QString tmpURL = m_tmpURL; // keep a copy, createUnavailDocument will erase it +@@ -322,7 +326,7 @@ + d->m_doc->setProperty( "realURL", tmpURL ); // so that it gets saved correctly + d->m_doc->setStoreInternal( true ); + if ( internalURL ) +- d->m_doc->setProperty( "unavailReason", i18n( "Could not load embedded object." ) ); ++ d->m_doc->setProperty( "unavailReason", i18n( "Could not load embedded object." ) + "\n" + errorMessage ); + else + d->m_doc->setProperty( "unavailReason", i18n( "External document not found:\n%1" ).arg( tmpURL ) ); + } +Index: lib/kofficeui/koTemplateChooseDia.cc +=================================================================== +--- lib/kofficeui/koTemplateChooseDia.cc (revision 427945) ++++ lib/kofficeui/koTemplateChooseDia.cc (working copy) +@@ -210,6 +210,7 @@ + d=0L; + } + ++// Keep in sync with KoMainWindow::chooseNewDocument + static bool cancelQuits() { + bool onlyDoc = !KoDocument::documentList() || KoDocument::documentList()->count() <= 1; + bool onlyMainWindow = !KMainWindow::memberList || KMainWindow::memberList->count() <= 1; +@@ -261,10 +262,6 @@ + } + + delete dlg; +- if ( rt == Cancel && dialogType == Everything && cancelQuits() ) +- // The button says quit, so let's quit +- kapp->quit(); +- + return rt; + } + +@@ -458,8 +455,8 @@ + d->m_jwidget->showPage(templateNum); + else if ( defaultTemplateGroup != -1) + d->m_jwidget->showPage(defaultTemplateGroup); +- + ++ + // Set the initially selected template, possibly from the last usage of the dialog + currentChanged(itemtoselect); + +Index: lib/kofficeui/koUnitWidgets.h +=================================================================== +--- lib/kofficeui/koUnitWidgets.h (revision 427945) ++++ lib/kofficeui/koUnitWidgets.h (working copy) +@@ -77,7 +77,7 @@ + */ + QString getVisibleText( double value ) const; + /** +- * Transfrom a string inot a double, while taking care of locale specific symbols. ++ * Transfrom a string into a double, while taking care of locale specific symbols. + * @param str the string to transform into a number + * @param ok true, if the conversion was succesful + * @return the value as double +@@ -94,11 +94,11 @@ + * Spin box for double precision numbers with unit display + * \since 1.4 (change of behavior) + */ +-class KOFFICEUI_EXPORT KoUnitDoubleSpinBox : public KDoubleSpinBox, public KoUnitDoubleBase ++class KOFFICEUI_EXPORT KoBuggyUnitDoubleSpinBox : public KDoubleSpinBox, public KoUnitDoubleBase + { + public: + // lower, upper, step and value are in pt +- KoUnitDoubleSpinBox( QWidget *parent, double lower, double upper, double step, double value = 0.0, ++ KoBuggyUnitDoubleSpinBox( QWidget *parent, double lower, double upper, double step, double value = 0.0, + KoUnit::Unit unit = KoUnit::U_PT, unsigned int precision = 2, const char *name = 0 ); + + virtual void changeValue( double ); +@@ -123,6 +123,22 @@ + }; + + /** ++ * Temporary class that will be merged with koBuggyUnitDoubleSpinBox ++ * and renamed into KoUnitDoubleSpinBox when all the users of that ++ * class have been converted. ++ */ ++class KOFFICEUI_EXPORT KoUnitDoubleSpinBox2 : public KoBuggyUnitDoubleSpinBox ++{ ++public: ++ // lower, upper, step and value are in pt ++ KoUnitDoubleSpinBox2( QWidget *parent, double lower, double upper, double step, double value = 0.0, ++ KoUnit::Unit unit = KoUnit::U_PT, unsigned int precision = 2, const char *name = 0 ); ++ ++ virtual void changeValue( double ); ++}; ++ ++ ++/** + * Line edit for double precision numbers with unit display + * \since 1.4 (change of behavior) + */ +Index: lib/kofficeui/kolinewidthaction.cpp +=================================================================== +--- lib/kofficeui/kolinewidthaction.cpp (revision 427945) ++++ lib/kofficeui/kolinewidthaction.cpp (working copy) +@@ -160,7 +160,7 @@ + { + public: + KoUnit::Unit m_unit; +- KoUnitDoubleSpinBox* m_lineWidthUSBox; ++ KoBuggyUnitDoubleSpinBox* m_lineWidthUSBox; + }; + + KoLineWidthChooser::KoLineWidthChooser(QWidget* parent, const char* name) +@@ -174,7 +174,7 @@ + setMainWidget(mainWidget); + QGridLayout* gl = new QGridLayout(mainWidget, 1, 2, KDialog::marginHint(), KDialog::spacingHint()); + QLabel* textLbl = new QLabel(i18n("Line width:"), mainWidget); +- d->m_lineWidthUSBox = new KoUnitDoubleSpinBox(mainWidget, 0.0, 1000.0, 0.1, 1.0, d->m_unit, 2); ++ d->m_lineWidthUSBox = new KoBuggyUnitDoubleSpinBox(mainWidget, 0.0, 1000.0, 0.1, 1.0, d->m_unit, 2); + gl->addWidget(textLbl, 0, 0); + gl->addWidget(d->m_lineWidthUSBox, 0, 1); + } +Index: lib/kofficeui/koUnitWidgets.cc +=================================================================== +--- lib/kofficeui/koUnitWidgets.cc (revision 427945) ++++ lib/kofficeui/koUnitWidgets.cc (working copy) +@@ -25,6 +25,7 @@ + #include <qpushbutton.h> + #include <qlayout.h> + ++ + KoUnitDoubleValidator::KoUnitDoubleValidator( KoUnitDoubleBase *base, QObject *parent, const char *name ) + : KDoubleValidator( parent, name ), m_base( base ) + { +@@ -108,7 +109,10 @@ + } + + +-KoUnitDoubleSpinBox::KoUnitDoubleSpinBox( QWidget *parent, double lower, double upper, double step, double value, KoUnit::Unit unit, unsigned int precision, const char *name ) ++// ---------------------------------------------------------------- ++ ++ ++KoBuggyUnitDoubleSpinBox::KoBuggyUnitDoubleSpinBox( QWidget *parent, double lower, double upper, double step, double value, KoUnit::Unit unit, unsigned int precision, const char *name ) + : KDoubleSpinBox( lower, upper, step, value, precision, parent, name ), KoUnitDoubleBase( unit, precision ), + m_lowerInPoints( lower ), m_upperInPoints( upper ), m_stepInPoints( step ) + { +@@ -120,7 +124,7 @@ + } + + void +-KoUnitDoubleSpinBox::changeValue( double val ) ++KoBuggyUnitDoubleSpinBox::changeValue( double val ) + { + KDoubleSpinBox::setValue( val ); + // TODO: emit valueChanged ONLY if the value was out-of-bounds +@@ -129,7 +133,7 @@ + } + + void +-KoUnitDoubleSpinBox::setUnit( KoUnit::Unit unit ) ++KoBuggyUnitDoubleSpinBox::setUnit( KoUnit::Unit unit ) + { + double oldvalue = KoUnit::fromUserValue( KDoubleSpinBox::value(), m_unit ); + KDoubleSpinBox::setMinValue( KoUnit::toUserValue( m_lowerInPoints, unit ) ); +@@ -140,31 +144,53 @@ + setSuffix( KoUnit::unitName( unit ).prepend( ' ' ) ); + } + +-double KoUnitDoubleSpinBox::value( void ) const ++double KoBuggyUnitDoubleSpinBox::value( void ) const + { + return KoUnit::fromUserValue( KDoubleSpinBox::value(), m_unit ); + } + +-void KoUnitDoubleSpinBox::setMinValue( double min ) ++void KoBuggyUnitDoubleSpinBox::setMinValue( double min ) + { + m_lowerInPoints = min; + KDoubleSpinBox::setMinValue( KoUnit::toUserValue( m_lowerInPoints, m_unit ) ); + } + +-void KoUnitDoubleSpinBox::setMaxValue( double max ) ++void KoBuggyUnitDoubleSpinBox::setMaxValue( double max ) + { + m_upperInPoints = max; + KDoubleSpinBox::setMaxValue( KoUnit::toUserValue( m_upperInPoints, m_unit ) ); + } + +-void KoUnitDoubleSpinBox::setLineStep( double step ) ++void KoBuggyUnitDoubleSpinBox::setLineStep( double step ) + { + m_stepInPoints = step; + KDoubleSpinBox::setLineStep( KoUnit::toUserValue( m_stepInPoints, m_unit ) ); + } + + ++// ---------------------------------------------------------------- + ++ ++KoUnitDoubleSpinBox2::KoUnitDoubleSpinBox2( QWidget *parent, double lower, double upper, double step, double value, KoUnit::Unit unit, unsigned int precision, const char *name ) ++ : KoBuggyUnitDoubleSpinBox( parent, lower, upper, step, value, unit, precision, name ) ++{ ++ m_validator = new KoUnitDoubleValidator( this, this ); ++ QSpinBox::setValidator( m_validator ); ++ setAcceptLocalizedNumbers( true ); ++ setUnit( unit ); ++ changeValue( value ); ++} ++ ++void ++KoUnitDoubleSpinBox2::changeValue( double val ) ++{ ++ KDoubleSpinBox::setValue( KoUnit::toUserValue( val, m_unit ) ); ++} ++ ++ ++// ---------------------------------------------------------------- ++ ++ + KoUnitDoubleLineEdit::KoUnitDoubleLineEdit( QWidget *parent, double lower, double upper, double value, KoUnit::Unit unit, + unsigned int precision, const char *name ) + : KLineEdit( parent, name ), KoUnitDoubleBase( unit, precision ), m_value( value ), m_lower( lower ), m_upper( upper ), +Index: lib/CHANGES +=================================================================== +--- lib/CHANGES (revision 427945) ++++ lib/CHANGES (working copy) +@@ -1,6 +1,15 @@ ++Changes after KOffice-1.4 ++========================= ++KOfficeCore: ++- OASIS loading/saving fix for embedded objects ++- Fix crash when pressing Quit in the initial startup dialog (#107911) ++ ++KoText: ++- Fix crash when updating a TOC with a table inside it (#107961) ++ + Changes after KOffice-1.4-beta1 + =============================== +-KForumula: ++KFormula: + - Disable the matrix actions when the cursor isn't in a matrix element. + - Do not crash when exporting to PNG. + +Index: lib/kotext/kotextdocument.cc +=================================================================== +--- lib/kotext/kotextdocument.cc (revision 427945) ++++ lib/kotext/kotextdocument.cc (working copy) +@@ -135,6 +135,7 @@ + flow_->clear(); + while ( fParag ) { + KoTextParag *p = fParag->next(); ++ fParag->string()->clear(); // avoid the "unregister custom items" code, not needed + delete fParag; + fParag = p; + } +@@ -142,6 +143,7 @@ + if ( createEmptyParag ) + fParag = lParag = createParag( this ); + selections.clear(); ++ customItems.clear(); + } + + /* +Index: lib/kotext/kotextparag.cc +=================================================================== +--- lib/kotext/kotextparag.cc (revision 427945) ++++ lib/kotext/kotextparag.cc (working copy) +@@ -109,6 +109,17 @@ + KoTextParag::~KoTextParag() + { + //kdDebug(32500) << "KoTextParag::~KoTextParag " << this << " id=" << paragId() << endl; ++ ++ // #107961: unregister custom items; KoTextString::clear() will delete them ++ const int len = str->length(); ++ for ( int i = 0; i < len; ++i ) { ++ KoTextStringChar *c = at( i ); ++ if ( doc && c->isCustom() ) { ++ doc->unregisterCustomItem( c->customItem(), this ); ++ //removeCustomItem(); ++ } ++ } ++ + delete str; + str = 0; + // if ( doc && p == doc->minwParag ) { +Index: filters/kword/ascii/kword_ascii_import.desktop +=================================================================== +--- filters/kword/ascii/kword_ascii_import.desktop (revision 427945) ++++ filters/kword/ascii/kword_ascii_import.desktop (working copy) +@@ -5,6 +5,7 @@ + Name[br]=Sil Enporzh ASCII KWord + Name[ca]=Filtre d'importació ASCII per a KWord + Name[cs]=KWord ASCII importní filtr ++Name[cy]=Hidlen Fewnforio Ascii KWord + Name[da]=KWord ASCII-importfilter + Name[de]=ASCII-Importfilter für KWord + Name[el]=Φίλτρο εισαγωγής ascii του KWord +Index: filters/kspread/excel/sidewinder/excel.cpp +=================================================================== +--- filters/kspread/excel/sidewinder/excel.cpp (revision 427945) ++++ filters/kspread/excel/sidewinder/excel.cpp (working copy) +@@ -5412,7 +5412,7 @@ + case 10: valueFormat = "0.00%"; break; + case 11: valueFormat = "0.00E+00"; break; + case 12: valueFormat = "#?/?"; break; +- case 13: valueFormat = "#\?\?\/\?\?"; break; ++ case 13: valueFormat = "#\?\?/\?\?"; break; + case 14: valueFormat = "M/D/YY"; break; + case 15: valueFormat = "D-MMM-YY"; break; + case 16: valueFormat = "D-MMM"; break; +Index: filters/karbon/svg/svgexport.cc +=================================================================== +--- filters/karbon/svg/svgexport.cc (revision 427945) ++++ filters/karbon/svg/svgexport.cc (working copy) +@@ -36,8 +36,10 @@ + #include "vfill.h" + #include "vgradient.h" + #include "vgroup.h" ++#include "vimage.h" + #include "vlayer.h" + #include "vpath.h" ++#include "vpattern.h" + #include "vsegment.h" + #include "vselection.h" + #include "vstroke.h" +@@ -119,11 +121,9 @@ + "\"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd\">" + << endl; + +- // add some PR ++ // add some PR. one line is more than enough. + *m_defs << +- "<!-- This file was created using the SVG export filter from Karbon14, a free vector drawing app. -->" << endl; +- *m_defs << +- "<!-- It is part of koffice, the free, integrated office suite for KDE (http://www.koffice.org/). -->" << endl; ++ "<!-- Created using Karbon14, part of koffice: http://www.koffice.org/karbon -->" << endl; + + *m_defs << + "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"" << +@@ -164,7 +164,30 @@ + *m_body << "</g>" << endl; + } + ++// horrible but at least something gets exported now ++// will need this for patterns + void ++SvgExport::visitVImage( VImage& image ) ++{ ++ *m_body << "<image "; ++ VVisitor::visitVImage( image ); ++ *m_body << "x=\"" << "\" "; ++ *m_body << "y=\"" << "\" "; ++ *m_body << "width=\"" << "\" "; ++ *m_body << "height=\"" << "\" "; ++ *m_body << "xlink:href=\"" << "\""; ++ *m_body << " />" << endl; ++} ++ ++void ++SvgExport::visitVLayer( VLayer& layer ) ++{ ++ *m_body << "<g" << getID( &layer ) << ">" << endl; ++ VVisitor::visitVLayer( layer ); ++ *m_body << "</g>" << endl; ++} ++ ++void + SvgExport::visitVPath( VPath& composite ) + { + *m_body << "<path" << getID( &composite ); +@@ -261,9 +284,50 @@ + *m_defs << "</radialGradient>" << endl; + *m_body << "url(#" << uid << ")"; + } ++ // gah! pointless abbreviation of conical to conic ++ else if( grad.type() == VGradient::conic ) ++ { ++ // fake conical grad as radial. ++ // fugly but better than data loss. ++ *m_defs << "<radialGradient id=\"" << uid << "\" "; ++ *m_defs << "gradientUnits=\"userSpaceOnUse\" "; ++ *m_defs << "cx=\"" << grad.origin().x() << "\" "; ++ *m_defs << "cy=\"" << grad.origin().y() << "\" "; ++ *m_defs << "fx=\"" << grad.focalPoint().x() << "\" "; ++ *m_defs << "fy=\"" << grad.focalPoint().y() << "\" "; ++ double r = sqrt( pow( grad.vector().x() - grad.origin().x(), 2 ) + pow( grad.vector().y() - grad.origin().y(), 2 ) ); ++ *m_defs << "r=\"" << QString().setNum( r ) << "\" "; ++ if( grad.repeatMethod() == VGradient::reflect ) ++ *m_defs << "spreadMethod=\"reflect\" "; ++ else if( grad.repeatMethod() == VGradient::repeat ) ++ *m_defs << "spreadMethod=\"repeat\" "; ++ *m_defs << ">" << endl; ++ ++ // color stops ++ getColorStops( grad.colorStops() ); ++ ++ *m_defs << "</radialGradient>" << endl; ++ *m_body << "url(#" << uid << ")"; ++ } + } + ++// better than nothing + void ++SvgExport::getPattern( const VPattern & patt ) ++{ ++ QString uid = createUID(); ++ *m_defs << "<pattern id=\"" << uid << "\" "; ++ *m_defs << "width=\"" << "\" "; ++ *m_defs << "height=\"" << "\" "; ++ *m_defs << "patternUnits=\"userSpaceOnUse\" "; ++ *m_defs << "patternContentUnits=\"userSpaceOnUse\" "; ++ *m_defs << " />" << endl; ++ // TODO: insert hard work here ;) ++ *m_defs << "</pattern>" << endl; ++ *m_body << "url(#" << uid << ")"; ++} ++ ++void + SvgExport::getFill( const VFill& fill ) + { + *m_body << " fill=\""; +@@ -271,6 +335,8 @@ + *m_body << "none"; + else if( fill.type() == VFill::grad ) + getGradient( fill.gradient() ); ++ else if( fill.type() == VFill::patt ) ++ getPattern( fill.pattern() ); + else + getHexColor( m_body, fill.color() ); + *m_body << "\""; +Index: filters/karbon/svg/svgexport.h +=================================================================== +--- filters/karbon/svg/svgexport.h (revision 427945) ++++ filters/karbon/svg/svgexport.h (working copy) +@@ -35,6 +35,7 @@ + class VDocument; + class VFill; + class VGroup; ++class VImage; + class VLayer; + class VSubpath; + class VStroke; +@@ -55,6 +56,8 @@ + virtual void visitVPath( VPath& composite ); + virtual void visitVDocument( VDocument& document ); + virtual void visitVGroup( VGroup& group ); ++ virtual void visitVImage( VImage& image ); ++ virtual void visitVLayer( VLayer& layer ); + virtual void visitVSubpath( VSubpath& path ); + virtual void visitVText( VText& text ); + +@@ -62,6 +65,7 @@ + void getColorStops( const QPtrVector<VColorStop> &colorStops ); + void getFill( const VFill& fill ); + void getGradient( const VGradient& grad ); ++ void getPattern( const VPattern& patt ); + void getHexColor( QTextStream *, const VColor& color ); + QString getID( VObject *obj ); + +Index: filters/generic_wrapper/generic_filter.desktop +=================================================================== +--- filters/generic_wrapper/generic_filter.desktop (revision 427945) ++++ filters/generic_wrapper/generic_filter.desktop (working copy) +@@ -3,6 +3,7 @@ + Name=Generic KOffice Filter + Name[ca]=Filtre genèric de KOffice + Name[cs]=Obecný filtr KOffice ++Name[cy]=Hidlen generig KOffice + Name[da]=Generisk KOffice-filter + Name[de]=Generischer KOffice-Filter + Name[el]=Γενικό φίλτρο του KOffice +Index: krita/plugins/cimg/CImg.h +=================================================================== +--- krita/plugins/cimg/CImg.h (revision 427945) ++++ krita/plugins/cimg/CImg.h (working copy) +@@ -5135,7 +5135,7 @@ + if (ny1<0 || ny0>=dimy()) return *this; + if (ny0<0) { nx0-=ny0*(nx1-nx0)/(ny1-ny0); ny0=0; } + if (ny1>=dimy()) { nx1+=(ny1-dimy())*(nx0-nx1)/(ny1-ny0); ny1=dimy()-1;} +- const unsigned int dmax = (unsigned int)cimg::max(std::abs(nx1-nx0),ny1-ny0), whz = width*height*depth; ++ const unsigned int dmax = (unsigned int)cimg::max(std::abs((long int)(nx1-nx0)),(long int)(ny1-ny0)), whz = width*height*depth; + const float px = dmax?(nx1-nx0)/(float)dmax:0, py = dmax?(ny1-ny0)/(float)dmax:0; + float x = (float)nx0, y = (float)ny0; + if (opacity>=1) for (unsigned int t=0; t<=dmax; t++) { +Index: krita/plugins/tool_polygon/kritatoolpolygon.desktop +=================================================================== +--- krita/plugins/tool_polygon/kritatoolpolygon.desktop (revision 427945) ++++ krita/plugins/tool_polygon/kritatoolpolygon.desktop (working copy) +@@ -2,6 +2,7 @@ + Encoding=UTF-8 + Name=Polygon Tool + Name[br]=Ostilh liestueg ++Name[cy]=Erfyn Polygon + Name[da]=Polygonværktøj + Name[de]=Polygon-Werkzeug + Name[el]=Εργαλείο πολυγώνου +Index: krita/plugins/tool_polyline/kritatoolpolyline.desktop +=================================================================== +--- krita/plugins/tool_polyline/kritatoolpolyline.desktop (revision 427945) ++++ krita/plugins/tool_polyline/kritatoolpolyline.desktop (working copy) +@@ -1,6 +1,7 @@ + [Desktop Entry] + Encoding=UTF-8 + Name=Polyline Tool ++Name[cy]=Erfyn Polylinell + Name[da]=Flerlinjeværktøj + Name[de]=Polylinien-Werkzeug + Name[el]=Εργαλείο Polyline +Index: krita/plugins/imagemagick/kritamagick.desktop +=================================================================== +--- krita/plugins/imagemagick/kritamagick.desktop (revision 427945) ++++ krita/plugins/imagemagick/kritamagick.desktop (working copy) +@@ -14,7 +14,8 @@ + Name[nn]=ImageMagick-omslag + Name[pt]=Interface para ImageMagick + Name[pt_BR]=Wrapper do ImageMagick +-Name[ru]=Интерфейс к ImageMagick ++Name[ru]=Оболочка к ImageMagick ++Name[sl]=Ovojnik za ImageMagick + Name[sr]=Омотач ImageMagick-а + Name[sr@Latn]=Omotač ImageMagick-a + Name[sv]=ImageMagick-gränssnitt +@@ -35,7 +36,7 @@ + Comment[nn]=ImageMagick-basert import, eksport og filkonvertering + Comment[pt]=Importação/exportação e conversão de ficheiro com o ImageMagick + Comment[pt_BR]=Conversão de arquivos e filtro de importação/exportação baseado no ImageMagick +-Comment[ru]=Фильтр импорта/экспорта рисунков посредством ImageMagick ++Comment[ru]=Фильтр импорта/экспорта и преобразования формата посредством ImageMagick + Comment[sr]=Увоз, извоз и конверзија фајлова помоћу ImageMagick-а + Comment[sr@Latn]=Uvoz, izvoz i konverzija fajlova pomoću ImageMagick-a + Comment[sv]=ImageMagick-baserad import, export och filkonvertering +Index: krita/plugins/tool_crop/kritatoolcrop.desktop +=================================================================== +--- krita/plugins/tool_crop/kritatoolcrop.desktop (revision 427945) ++++ krita/plugins/tool_crop/kritatoolcrop.desktop (working copy) +@@ -16,7 +16,7 @@ + Name[nn]=Beskjæringsverktøy + Name[pt]=Ferramenta de Recorte + Name[pt_BR]=Ferramenta de Recorte +-Name[ru]=Инструмент обрезки ++Name[ru]=Обрезка + Name[sl]=Orodje za obrezavo + Name[sr]=Алат за сасецање + Name[sr@Latn]=Alat za sasecanje +Index: krita/plugins/selectiontools/kritaselectiontools.desktop +=================================================================== +--- krita/plugins/selectiontools/kritaselectiontools.desktop (revision 427945) ++++ krita/plugins/selectiontools/kritaselectiontools.desktop (working copy) +@@ -2,12 +2,14 @@ + Encoding=UTF-8 + Name=Selection Tools + Name[ca]=Eines de selecció ++Name[cy]=Offer Detholi + Name[da]=Markeringsværktøj + Name[de]=Auswahlwerkzeuge + Name[el]=Εργαλεία επιλογής + Name[es]=Herramientas de selección + Name[et]=Valikutööriistad + Name[fr]=Outils de sélection ++Name[ga]=Uirlisí Roghnúcháin + Name[he]=כלי בחירה + Name[hu]=Kiválasztó eszközök + Name[it]=Strumenti di selezione +Index: krita/plugins/tool_star/kritatoolstar.desktop +=================================================================== +--- krita/plugins/tool_star/kritatoolstar.desktop (revision 427945) ++++ krita/plugins/tool_star/kritatoolstar.desktop (working copy) +@@ -2,6 +2,7 @@ + Encoding=UTF-8 + Name=Star Tool + Name[br]=Ostilh steredenn ++Name[cy]=Erfyn Seren + Name[da]=Stjerneværktøj + Name[de]=Sterne-Werkzeug + Name[el]=Εργαλείο αστέρα +@@ -18,6 +19,7 @@ + Name[pt]=Ferramenta de Estrelas + Name[pt_BR]=Ferramenta Estrela + Name[ru]=Звёзды ++Name[sl]=Zvezdno orodje + Name[sr]=Алат за звезде + Name[sr@Latn]=Alat za zvezde + Name[sv]=Stjärnverktyg +Index: krita/plugins/tool_transform/kritatooltransform.desktop +=================================================================== +--- krita/plugins/tool_transform/kritatooltransform.desktop (revision 427945) ++++ krita/plugins/tool_transform/kritatooltransform.desktop (working copy) +@@ -16,7 +16,7 @@ + Name[nn]=Beskjæringsverktøy + Name[pt]=Ferramenta de Recorte + Name[pt_BR]=Ferramenta de Recorte +-Name[ru]=Инструмент обрезки ++Name[ru]=Обрезка + Name[sl]=Orodje za obrezavo + Name[sr]=Алат за сасецање + Name[sr@Latn]=Alat za sasecanje +Index: krita/krita.desktop +=================================================================== +--- krita/krita.desktop (revision 427945) ++++ krita/krita.desktop (working copy) +@@ -22,6 +22,7 @@ + GenericName[fa]=برنامه دستکاری تصویر + GenericName[fi]=Kuvienmuokkausohjelma + GenericName[fr]=Logiciel de manipulation d'images ++GenericName[ga]=Clár Ionramhála na nÍomhánna + GenericName[he]=תוכנית לטיפול בתמונות + GenericName[hr]=Program za obradu slika + GenericName[hu]=Képszerkesztő +@@ -39,7 +40,7 @@ + GenericName[pt]=Programa de Manipulação de Imagens + GenericName[pt_BR]=Manipulador de Imagens + GenericName[ro]=Program de procesare imagini +-GenericName[ru]=Редактор графических изображений ++GenericName[ru]=Программа редактирования изображений + GenericName[sk]=Program pre úpravu obrázkov + GenericName[sl]=Program za obdelavo slik + GenericName[sr]=Програм за уређивање слика +Index: krita/core/kis_paint_device.cc +=================================================================== +--- krita/core/kis_paint_device.cc (revision 427945) ++++ krita/core/kis_paint_device.cc (working copy) +@@ -791,24 +791,23 @@ + QRect r = m_selection -> selectedRect(); + r = r.normalize(); + ++ for (Q_INT32 y = 0; y < r.height(); y++) { ++ KisHLineIterator devIt = createHLineIterator(r.x(), r.y() + y, r.width(), true); ++ KisHLineIterator selectionIt = m_selection -> createHLineIterator(r.x(), r.y() + y, r.width(), false); + +- KisRectIterator devIt = createRectIterator(r.x(), r.y(), r.width(), r.height(), true); +- KisRectIterator selectionIt = m_selection -> createRectIterator(r.x(), r.y(), r.width(), r.height(), false); ++ while (!devIt.isDone()) { ++ KisPixel p = toPixel(devIt.rawData()); ++ KisPixel s = m_selection -> toPixel(selectionIt.rawData()); ++ Q_UINT16 p_alpha, s_alpha; ++ p_alpha = p.alpha(); ++ s_alpha = MAX_SELECTED - s.alpha(); + +- while (!devIt.isDone()) { +- KisPixel p = toPixel(devIt.rawData()); +- KisPixel s = m_selection -> toPixel(selectionIt.rawData()); +- Q_UINT16 p_alpha, s_alpha; +- p_alpha = p.alpha(); +- s_alpha = MAX_SELECTED - s.alpha(); +- +- p.alpha() = (Q_UINT8) ((p_alpha * s_alpha) >> 8); ++ p.alpha() = (Q_UINT8) ((p_alpha * s_alpha) >> 8); + +- ++devIt; +- ++selectionIt; ++ ++devIt; ++ ++selectionIt; ++ } + } +- +- + } + + void KisPaintDevice::applySelectionMask(KisSelectionSP mask) +Index: krita/core/kis_selection_manager.cc +=================================================================== +--- krita/core/kis_selection_manager.cc (revision 427945) ++++ krita/core/kis_selection_manager.cc (working copy) +@@ -319,20 +319,22 @@ + + // Apply selection mask. + +- KisRectIterator layerIt = clip -> createRectIterator(0, 0, r.width(), r.height(), true); +- KisRectIterator selectionIt = selection -> createRectIterator(r.x(), r.y(), r.width(), r.height(), false); ++ for (Q_INT32 y = 0; y < r.height(); y++) { ++ KisHLineIterator layerIt = clip -> createHLineIterator(0, y, r.width(), true); ++ KisHLineIterator selectionIt = selection -> createHLineIterator(r.x(), r.y() + y, r.width(), false); + +- while (!layerIt.isDone()) { +- KisPixel p = clip -> toPixel(layerIt.rawData()); +- KisPixel s = selection -> toPixel(selectionIt.rawData()); +- Q_UINT16 p_alpha, s_alpha; +- p_alpha = p.alpha(); +- s_alpha = s.alpha(); +- +- p.alpha() = (Q_UINT8) ((p_alpha * s_alpha) >> 8); +- +- ++layerIt; +- ++selectionIt; ++ while (!layerIt.isDone()) { ++ KisPixel p = clip -> toPixel(layerIt.rawData()); ++ KisPixel s = selection -> toPixel(selectionIt.rawData()); ++ Q_UINT16 p_alpha, s_alpha; ++ p_alpha = p.alpha(); ++ s_alpha = s.alpha(); ++ ++ p.alpha() = (Q_UINT8) ((p_alpha * s_alpha) >> 8); ++ ++ ++layerIt; ++ ++selectionIt; ++ } + } + + // kdDebug() << "Selection copied: " +Index: krita/core/tiles/kis_tiledrectiterator.cc +=================================================================== +--- krita/core/tiles/kis_tiledrectiterator.cc (revision 427945) ++++ krita/core/tiles/kis_tiledrectiterator.cc (working copy) +@@ -66,7 +66,8 @@ + m_xInTile = m_leftInTile; + m_yInTile = m_topInTile; + +- fetchTileData(m_col, m_row); ++ if (! m_beyondEnd) ++ fetchTileData(m_col, m_row); + m_offset = m_pixelSize * (m_yInTile * KisTile::WIDTH + m_xInTile); + } + +Index: krita/core/builder/kis_image_magick_converter.cc +=================================================================== +--- krita/core/builder/kis_image_magick_converter.cc (revision 427945) ++++ krita/core/builder/kis_image_magick_converter.cc (working copy) +@@ -64,10 +64,10 @@ + */ + KisStrategyColorSpaceSP getColorSpaceForColorType(ColorspaceType type) { + if (type == GRAYColorspace) { +- KisColorSpaceRegistry::instance() -> get(KisID("CMYK", "")); ++ return KisColorSpaceRegistry::instance() -> get(KisID("GRAYA", "")); + } + else if (type == CMYKColorspace) { +- return KisColorSpaceRegistry::instance() -> get(KisID("GRAYA", "")); ++ return KisColorSpaceRegistry::instance() -> get(KisID("CMYK", "")); + } + else if (type == RGBColorspace || type == sRGBColorspace || type == TransparentColorspace) { + return KisColorSpaceRegistry::instance() -> get(KisID("RGBA", "")); +Index: krita/core/kis_view.cc +=================================================================== +--- krita/core/kis_view.cc (revision 427945) ++++ krita/core/kis_view.cc (working copy) +@@ -218,8 +218,7 @@ + { + delete m_dcop; + delete m_dockerManager; +- +- ++ delete m_selectionManager; + } + + DCOPObject* KisView::dcopObject() +Index: krita/core/kis_iterators_pixel.h +=================================================================== +--- krita/core/kis_iterators_pixel.h (revision 427945) ++++ krita/core/kis_iterators_pixel.h (working copy) +@@ -37,6 +37,7 @@ + public: + KisHLineIteratorPixel( KisPaintDevice *ndevice, KisDataManager *dm, KisDataManager *sel_dm, Q_INT32 x , Q_INT32 y , Q_INT32 w, Q_INT32 offsetx, Q_INT32 offsety, bool writable); + ++ ~KisHLineIteratorPixel() { delete m_selectionIterator; } + inline KisHLineIteratorPixel & operator ++() { KisHLineIterator::operator++(); advance(1); return *this;} + + /// Advances a number of pixels until it reaches the end of the line +@@ -52,6 +53,7 @@ + { + public: + KisVLineIteratorPixel( KisPaintDevice *ndevice, KisDataManager *dm, KisDataManager *sel_dm, Q_INT32 xpos , Q_INT32 ypos , Q_INT32 height, Q_INT32 offsetx, Q_INT32 offsety, bool writable); ++ ~KisVLineIteratorPixel() { delete m_selectionIterator; } + + inline KisVLineIteratorPixel & operator ++() { KisVLineIterator::operator++(); advance(1); return *this;} + +@@ -65,6 +67,7 @@ + { + public: + KisRectIteratorPixel( KisPaintDevice *ndevice, KisDataManager *dm, KisDataManager *sel_dm, Q_INT32 x, Q_INT32 y, Q_INT32 w, Q_INT32 h, Q_INT32 offsetx, Q_INT32 offsety, bool writable); ++ ~KisRectIteratorPixel() { delete m_selectionIterator; } + + inline KisRectIteratorPixel & operator ++() { KisRectIterator::operator++(); advance(1); return *this;} + +Index: krita/paintops/kritadefaultpaintops.desktop +=================================================================== +--- krita/paintops/kritadefaultpaintops.desktop (revision 427945) ++++ krita/paintops/kritadefaultpaintops.desktop (working copy) +@@ -15,7 +15,7 @@ + Name[nn]=Standard måleoperasjonar + Name[pt]=Operações de Pintura Predefinidas + Name[pt_BR]=Operações de pintura padrão +-Name[ru]=Стандартные действия рисования ++Name[ru]=Стандартные операции рисования + Name[sr]=Подразумеване сликарске операције + Name[sr@Latn]=Podrazumevane slikarske operacije + Name[sv]=Förvalda målningsoperationer +@@ -36,7 +36,7 @@ + Comment[nn]=Standard måleoperasjonar + Comment[pt]=Operações de pintura predefinidas + Comment[pt_BR]=Operações de pintura padrão +-Comment[ru]=Действия рисования по умолчанию ++Comment[ru]=Операции рисования по умолчанию + Comment[sr]=Подразумеване сликарске операције + Comment[sr@Latn]=Podrazumevane slikarske operacije + Comment[sv]=Förvalda ritåtgärder +Index: krita/modules/colorspace_ws/kritawsplugin.desktop +=================================================================== +--- krita/modules/colorspace_ws/kritawsplugin.desktop (revision 427945) ++++ krita/modules/colorspace_ws/kritawsplugin.desktop (working copy) +@@ -13,7 +13,7 @@ + Name[nn]=Fargemodell for vått lerret + Name[pt]=Modelo de Cores de Tela Molhado e Pegajoso + Name[pt_BR]=Modelo de cores de tela Molhada & Pegajosa +-Name[ru]=Цветовая модель влажности и прилипания ++Name[ru]=Цветовая модель с параметрами влажности и прилипания + Name[sr]=Модел боја мокрог и лепљивог платна + Name[sr@Latn]=Model boja mokrog i lepljivog platna + Name[sv]=Våt och klibbig dukfärgmodell +Index: krita/modules/colorspace_rgb/templates/transparent_1280x1024.desktop +=================================================================== +--- krita/modules/colorspace_rgb/templates/transparent_1280x1024.desktop (revision 427945) ++++ krita/modules/colorspace_rgb/templates/transparent_1280x1024.desktop (working copy) +@@ -4,6 +4,7 @@ + URL=.source/transparent_1280x1024.kra + Icon=template_rgb_empty + Name=Transparent 1280 x 1024 ++Name[br]=Treuzwelus 1280 x 1024 + Name[da]=Gennemsigtig 1280 x 1024 + Name[el]=Διαφανής 1280 x 1024 + Name[es]=1280 x 1024 transparente +@@ -16,7 +17,7 @@ + Name[nn]=Gjennomsiktig 1280 × 1024 + Name[pt]=Transparente 1280 x 1024 + Name[pt_BR]=Transparente de 1280 x 1024 +-Name[ru]=Прозрачный 1280x1024 ++Name[ru]=Рисунок 1280x1024, прозрачный фон + Name[sl]=Prosojna 1280 x 1024 + Name[sr]=Провидна 1280 x 1024 + Name[sr@Latn]=Providna 1280 x 1024 +@@ -39,7 +40,7 @@ + Comment[nn]=Lagar eit gjennomsiktig bilete på 1280 × 1024 pikslar. + Comment[pt]=Cria uma imagem transparente com 1280 x 1024 pontos. + Comment[pt_BR]=Cria uma imagem transparente de 1280 x 1024 pixels. +-Comment[ru]=Прозрачное, 1280x1024. ++Comment[ru]=Рисунок 1280x1024, прозрачный фон. + Comment[sl]=Ustvari prosojno sliko velikosti 1280 x 1024 točk. + Comment[sr]=Прави провидну слику са 1280 x 1024 пиксела. + Comment[sr@Latn]=Pravi providnu sliku sa 1280 x 1024 piksela. +Index: krita/modules/colorspace_rgb/templates/transparent_640x480.desktop +=================================================================== +--- krita/modules/colorspace_rgb/templates/transparent_640x480.desktop (revision 427945) ++++ krita/modules/colorspace_rgb/templates/transparent_640x480.desktop (working copy) +@@ -4,6 +4,7 @@ + URL=.source/transparent_1600x1200.kra + Icon=template_rgb_empty + Name=Transparent 640 x 480 ++Name[br]=Treuzwelus 640 x 480 + Name[da]=Gennemsigtig 640 x 480 + Name[el]=Διαφανής 640 x 480 + Name[es]=640 x 480 transparente +@@ -16,7 +17,7 @@ + Name[nn]=Gjennomsiktig 640 × 480 + Name[pt]=Transparente 640 x 480 + Name[pt_BR]=Transparente de 640 x 480 +-Name[ru]=Прозрачный 640x480 ++Name[ru]=Рисунок 640x480, прозрачный фон + Name[sl]=Prosojna 640 x 480 + Name[sr]=Провидна 640 x 480 + Name[sr@Latn]=Providna 640 x 480 +@@ -39,7 +40,7 @@ + Comment[nn]=Lagar eit gjennomsiktig bilete på 640 × 480 pikslar. + Comment[pt]=Cria uma imagem transparente com 640 x 480 pontos. + Comment[pt_BR]=Cria uma imagem transparente de 640 x 480 pixels. +-Comment[ru]=Прозрачное, 640x480. ++Comment[ru]=Рисунок 640x480, прозрачный фон. + Comment[sl]=Ustvari prosojno sliko velikosti 640 x 480 točk. + Comment[sr]=Прави провидну слику са 640 x 480 пиксела. + Comment[sr@Latn]=Pravi providnu sliku sa 640 x 480 piksela. +Index: krita/modules/colorspace_rgb/templates/white_1600x1200.desktop +=================================================================== +--- krita/modules/colorspace_rgb/templates/white_1600x1200.desktop (revision 427945) ++++ krita/modules/colorspace_rgb/templates/white_1600x1200.desktop (working copy) +@@ -10,6 +10,7 @@ + Name[es]=1600 x 1200 blanco + Name[et]=Valge 1600 x 1200 + Name[fr]=Image blanche 1600 x 1200 ++Name[ga]=Bán 1600×1200 + Name[he]=לבן 1600 x 1200 + Name[hu]=Fehér 1600 x 1200 + Name[it]=Bianco 1600 x 1200 +@@ -17,7 +18,7 @@ + Name[nn]=Kvitt 1600 × 1200 + Name[pt]=Branca 1600 x 1200 + Name[pt_BR]=1600 x 1200 em Branco +-Name[ru]=Белый 1600x1200 ++Name[ru]=Рисунок 1600x1200, белый фон + Name[sl]=Bela 1600 x 1200 + Name[sr]=Бела 1600 x 1200 + Name[sr@Latn]=Bela 1600 x 1200 +@@ -39,7 +40,7 @@ + Comment[nn]=Lagar eit kvitt RGB-bilete på 1600 × 1200 pikslar. + Comment[pt]=Cria uma imagem RGB branca com 1600 x 1200 pontos. + Comment[pt_BR]=Cria uma imagem RGB em branco de 1600 x 1200 pixels. +-Comment[ru]=Белое в формате RGB, 1600x1200. ++Comment[ru]=Рисунок RGB 1600x1200, белый фон. + Comment[sl]=Ustvari belo sliko RGB velikosti 1600 x 1200 točk. + Comment[sr]=Прави белу RGB слику са 1600 x 1200 пиксела. + Comment[sr@Latn]=Pravi belu RGB sliku sa 1600 x 1200 piksela. +Index: krita/modules/colorspace_rgb/templates/white_1024x768.desktop +=================================================================== +--- krita/modules/colorspace_rgb/templates/white_1024x768.desktop (revision 427945) ++++ krita/modules/colorspace_rgb/templates/white_1024x768.desktop (working copy) +@@ -13,6 +13,7 @@ + Name[es]=1024 x 768 blanco + Name[et]=Valge 1024 x 768 + Name[fr]=Image blanche 1024 x 768 ++Name[ga]=Bán 1024×768 + Name[he]=לבן 1024 x 768 + Name[hu]=Fehér 1024 x 768 + Name[it]=Bianco 1024 x 768 +@@ -21,7 +22,7 @@ + Name[nn]=Kvitt 1024 × 768 + Name[pt]=Branca 1024 x 768 + Name[pt_BR]=1024 x 768 em Branco +-Name[ru]=Белый 1024x768 ++Name[ru]=Рисунок 1024x768, белый фон + Name[sl]=Bela 1024 x 768 + Name[sr]=Бела 1024 x 768 + Name[sr@Latn]=Bela 1024 x 768 +@@ -46,7 +47,7 @@ + Comment[nn]=Lagar eit kvitt RGB-bilete på 1024 × 768 pikslar. + Comment[pt]=Cria uma imagem RGB branca com 1024 x 768 pontos. + Comment[pt_BR]=Cria uma imagem RGB em branco de 1024 x 768 pixéis. +-Comment[ru]=Белое в формате RGB, 1024x768. ++Comment[ru]=Рисунок RGB 1024x768, белый фон. + Comment[sl]=Ustvari belo sliko RGB velikosti 1024 x 768 točk. + Comment[sr]=Прави белу RGB слику са 1024 x 768 пиксела. + Comment[sr@Latn]=Pravi belu RGB sliku sa 1024 x 768 piksela. +Index: krita/modules/colorspace_rgb/templates/white_1280x1024.desktop +=================================================================== +--- krita/modules/colorspace_rgb/templates/white_1280x1024.desktop (revision 427945) ++++ krita/modules/colorspace_rgb/templates/white_1280x1024.desktop (working copy) +@@ -10,6 +10,7 @@ + Name[es]=1280 x 1024 blanco + Name[et]=Valge 1280 x 1024 + Name[fr]=Image blanche 1280 x 1024 ++Name[ga]=Bán 1280×1024 + Name[he]=לבן 1280 x 1024 + Name[hu]=Fehér 1280 x 1024 + Name[it]=Bianco 1280 x 1024 +@@ -17,7 +18,7 @@ + Name[nn]=Kvitt 1280 × 1024 + Name[pt]=Branca 1280 x 1024 + Name[pt_BR]=1280 x 1024 em Branco +-Name[ru]=Белый 1280x1024 ++Name[ru]=Рисунок 1280x1024, белый фон + Name[sl]=Bela 1280 x 1024 + Name[sr]=Бела 1280 x 1024 + Name[sr@Latn]=Bela 1280 x 1024 +@@ -39,7 +40,7 @@ + Comment[nn]=Lagar eit kvitt RGB-bilete på 1280 × 1024 pikslar. + Comment[pt]=Cria uma imagem RGB branca com 1280 x 1024 pontos. + Comment[pt_BR]=Cria uma imagem RGB em branco de 1280 x 1024 pixels. +-Comment[ru]=Белое в формате RGB, 1280x1024. ++Comment[ru]=Рисунок RGB 1280x1024, белый фон. + Comment[sl]=Ustvari belo sliko RGB velikosti 1280 x 1024 točk. + Comment[sr]=Прави белу RGB слику са 1280 x 1024 пиксела. + Comment[sr@Latn]=Pravi belu RGB sliku sa 1280 x 1024 piksela. +Index: krita/modules/colorspace_rgb/templates/white_640x480.desktop +=================================================================== +--- krita/modules/colorspace_rgb/templates/white_640x480.desktop (revision 427945) ++++ krita/modules/colorspace_rgb/templates/white_640x480.desktop (working copy) +@@ -13,6 +13,7 @@ + Name[es]=640x480 blanco + Name[et]=Valge 640x480 + Name[fr]=Image blanche 640 x 480 ++Name[ga]=Bán 640×480 + Name[he]=לבן 640x480 + Name[hu]=Fehér 640 x 480 + Name[it]=Bianco 640x480 +@@ -21,7 +22,7 @@ + Name[nn]=Kvitt 640 × 480 + Name[pt]=Branca 640x480 + Name[pt_BR]=640x480 em Branco +-Name[ru]=Белый 640x480 ++Name[ru]=Рисунок 640x480, белый фон + Name[sl]=Bela 640x480 + Name[sr]=Бела 640x480 + Name[sr@Latn]=Bela 640x480 +@@ -42,11 +43,11 @@ + Comment[hu]=Létrehoz egy 640 x 480 képpontos fehér RGB képet. + Comment[it]=Crea un'immagine RGB bianca di 640 x 480 pixel. + Comment[nb]=Lager et hvitt bilde på 640 x 480 piksler. +-Comment[nl]=Maakt een witte RGB-afbeelding aan van 540 x 480 pixels. ++Comment[nl]=Maakt een witte RGB-afbeelding aan van 640 x 480 pixels. + Comment[nn]=Lagar eit kvitt RGB-bilete på 640 × 480 pikslar. + Comment[pt]=Cria uma imagem RGB branca com 640 x 480 pontos. + Comment[pt_BR]=Cria uma imagem RGB em branco de 640 x 480 pixéis. +-Comment[ru]=Белое в формате RGB, 640x480. ++Comment[ru]=Рисунок RGB 640x480, белый фон. + Comment[sl]=Ustvari belo sliko RGB velikosti 640 x 480 točk. + Comment[sr]=Прави белу RGB слику са 640 x 480 пиксела. + Comment[sr@Latn]=Pravi belu RGB sliku sa 640 x 480 piksela. +Index: krita/modules/colorspace_rgb/templates/transparent_1600x1200.desktop +=================================================================== +--- krita/modules/colorspace_rgb/templates/transparent_1600x1200.desktop (revision 427945) ++++ krita/modules/colorspace_rgb/templates/transparent_1600x1200.desktop (working copy) +@@ -5,6 +5,7 @@ + Icon=template_rgb_empty + Name=Transparent 1600 x 1200 + Name[bg]=Прозрачно 1600 x 1200 ++Name[br]=Treuzwelus 1600 x 1200 + Name[da]=Gennemsigtig 1600 x 1200 + Name[el]=Διαφανής 1600 x 1200 + Name[es]=1600 x 1200 transparente +@@ -18,7 +19,7 @@ + Name[nn]=Gjennomsiktig 1600 × 1200 + Name[pt]=Transparente 1600 x 1200 + Name[pt_BR]=Transparente de 1600 x 1200 +-Name[ru]=Прозрачный 1600x1200 ++Name[ru]=Рисунок 1600x1200, прозрачный фон + Name[sl]=Prosojna 1600 x 1200 + Name[sr]=Провидна 1600 x 1200 + Name[sr@Latn]=Providna 1600 x 1200 +@@ -44,7 +45,7 @@ + Comment[nn]=Lagar eit gjennomsiktig bilete på 1600 × 1200 pikslar. + Comment[pt]=Cria uma imagem transparente com 1600 x 1200 pontos. + Comment[pt_BR]=Cria uma imagem transparente de 1600 x 1200 pixéis. +-Comment[ru]=Прозрачное, 1600x1200. ++Comment[ru]=Рисунок 1600x1200, прозрачный фон. + Comment[sl]=Ustvari prosojno sliko velikosti 1600 x 1200 točk. + Comment[sr]=Прави провидну слику са 1600 x 1200 пиксела. + Comment[sr@Latn]=Pravi providnu sliku sa 1600 x 1200 piksela. +Index: krita/modules/colorspace_rgb/templates/transparent_1024x768.desktop +=================================================================== +--- krita/modules/colorspace_rgb/templates/transparent_1024x768.desktop (revision 427945) ++++ krita/modules/colorspace_rgb/templates/transparent_1024x768.desktop (working copy) +@@ -4,6 +4,7 @@ + URL=.source/transparent_1024x768.kra + Icon=template_rgb_empty + Name=Transparent 1024 x 768 ++Name[br]=Treuzwelus 1024 x 768 + Name[da]=Gennemsigtig 1024 x 768 + Name[el]=Διαφανής 1024 x 768 + Name[es]=1024 x 768 transparente +@@ -16,7 +17,7 @@ + Name[nn]=Gjennomsiktig 1024 × 768 + Name[pt]=Transparente 1024 x 768 + Name[pt_BR]=Transparente de 1024 x 768 +-Name[ru]=Прозрачный 1024x768 ++Name[ru]=Рисунок 1024x768, прозрачный фон + Name[sl]=Prosojna 1024 x 768 + Name[sr]=Провидна 1024 x 768 + Name[sr@Latn]=Providna 1024 x 768 +@@ -39,7 +40,7 @@ + Comment[nn]=Lagar eit gjennomsiktig bilete på 1024 × 768 pikslar. + Comment[pt]=Cria uma imagem transparente com 1024 x 768 pontos. + Comment[pt_BR]=Cria uma imagem transparente de 1024 x 768 pixels. +-Comment[ru]=Прозрачное, 1024x768. ++Comment[ru]=Рисунок 1024x768, прозрачный фон. + Comment[sl]=Ustvari prosojno sliko velikosti 1024 x 768 točk. + Comment[sr]=Прави провидну слику са 1024 x 768 пиксела. + Comment[sr@Latn]=Pravi providnu sliku sa 1024 x 768 piksela. +Index: krita/modules/krita_module.desktop +=================================================================== +--- krita/modules/krita_module.desktop (revision 427945) ++++ krita/modules/krita_module.desktop (working copy) +@@ -19,6 +19,7 @@ + Comment[pt]=Módulo de funcionalidade nuclear para o Krita + Comment[pt_BR]=Módulo de funcionalidades principais para o Krita + Comment[ru]=Движок Krita ++Comment[sl]=Modul za osnovne zmožnosti Krite + Comment[sr]=Модел основне функционалности за Krita-у + Comment[sr@Latn]=Model osnovne funkcionalnosti za Krita-u + Comment[sv]=Modul med kärnfunktioner för Krita +Index: krita/modules/colorspace_gray/templates/white_640x480.desktop +=================================================================== +--- krita/modules/colorspace_gray/templates/white_640x480.desktop (revision 427945) ++++ krita/modules/colorspace_gray/templates/white_640x480.desktop (working copy) +@@ -12,6 +12,7 @@ + Name[es]=Fondo blanco, 640 x 480 + Name[et]=Valge taust, 640 x 480 + Name[fr]=Fond blanc 640 x 480 ++Name[ga]=Cúlra Bán, 640×480 + Name[he]=רקע לבן, 640 x 480 + Name[hu]=Fehér háttér, 640 x 480 + Name[it]=Sfondo bianco, 640 x 480 +@@ -20,7 +21,7 @@ + Name[nn]=Kvit bakgrunn, 640 × 480 + Name[pt]=Fundo Branco, 640 x 480 + Name[pt_BR]=Fundo em branco, 640 x 480 +-Name[ru]=Белый фон, 640x480 ++Name[ru]=Рисунок 640x480, белый фон + Name[sl]=Belo ozadje, 640 x 480 + Name[sr]=Бела позадина, 640 x 480 + Name[sr@Latn]=Bela pozadina, 640 x 480 +@@ -46,7 +47,7 @@ + Comment[nn]=Lagar eit bilete på 640 × 480 pikslar med ein kvit bakgrunn. + Comment[pt]=Cria uma imagem de 640 x 480 pontos com um fundo branco. + Comment[pt_BR]=Cria uma imagem de 640 x 480 pixéis com um fundo branco. +-Comment[ru]=Белое, 640x480. ++Comment[ru]=Рисунок 640x480, белый фон. + Comment[sl]=Ustvari sliko velikosti 640 x 480 točk z belim ozadjem. + Comment[sr]=Прави слику од 640 x 480 пиксела са белом позадином. + Comment[sr@Latn]=Pravi sliku od 640 x 480 piksela sa belom pozadinom. +Index: krita/modules/colorspace_cmyk/kritacmykplugin.desktop +=================================================================== +--- krita/modules/colorspace_cmyk/kritacmykplugin.desktop (revision 427945) ++++ krita/modules/colorspace_cmyk/kritacmykplugin.desktop (working copy) +@@ -46,7 +46,7 @@ + Comment[nn]=Fargemodell for CMYK-bilete med 8 bit per kanal + Comment[pt]=Modelo de cor para imagens CMYK com 8 bits por canal + Comment[pt_BR]=Modelo de cor para imagens com 8-bits de canal CMYK +-Comment[ru]=Цветовая модель для изображений в CMYK (болотный, пурпурный, жёлтый, чёрный) 8-бит/канал ++Comment[ru]=Цветовая модель для изображений в CMYK (циан, пурпурный, жёлтый, чёрный) 8-бит/канал + Comment[sl]=Barvni model za slike CMYK z 8 biti/kanal + Comment[sr]=Модел боја за CMYK слике са 8 битова/каналу + Comment[sr@Latn]=Model boja za CMYK slike sa 8 bitova/kanalu +Index: krita/modules/colorspace_cmyk/templates/white_2000x800.desktop +=================================================================== +--- krita/modules/colorspace_cmyk/templates/white_2000x800.desktop (revision 427945) ++++ krita/modules/colorspace_cmyk/templates/white_2000x800.desktop (working copy) +@@ -12,6 +12,7 @@ + Name[es]=2000 x 800 blanco + Name[et]=Valge 2000 x 800 + Name[fr]=Image blanche 2000 x 800 ++Name[ga]=Bán 2000×800 + Name[he]=לבן 2000 x 800 + Name[hu]=fehér 2000 x 800 + Name[it]=Bianco 2000 x 800 +@@ -45,7 +46,7 @@ + Comment[nn]=Lagar eit kvitt CMYK-bilete på 2000 × 800 pikslar. + Comment[pt]=Cria uma imagem CMYK branca com 2000 x 800 pontos. + Comment[pt_BR]=Cria uma imagem CMYK em branco de 2000 x 800 pixéis. +-Comment[ru]=Белое в формате CMYK, 2000x800. ++Comment[ru]=Рисунок CMYK, 2000x800, белый фон. + Comment[sl]=Ustvari belo sliko CMYK velikosti 2000 x 800 točk. + Comment[sr]=Прави белу CMYK слику са 2000 x 800 пиксела. + Comment[sr@Latn]=Pravi belu CMYK sliku sa 2000 x 800 piksela. +Index: krita/data/krita_module.desktop +=================================================================== +--- krita/data/krita_module.desktop (revision 427945) ++++ krita/data/krita_module.desktop (working copy) +@@ -19,6 +19,7 @@ + Comment[pt]=Módulo de funcionalidade nuclear para o Krita + Comment[pt_BR]=Módulo de funcionalidades principais para o Krita + Comment[ru]=Движок Krita ++Comment[sl]=Modul za osnovne zmožnosti Krite + Comment[sr]=Модел основне функционалности за Krita-у + Comment[sr@Latn]=Model osnovne funkcionalnosti za Krita-u + Comment[sv]=Modul med kärnfunktioner för Krita +Index: krita/data/krita_paintop.desktop +=================================================================== +--- krita/data/krita_paintop.desktop (revision 427945) ++++ krita/data/krita_paintop.desktop (working copy) +@@ -17,6 +17,7 @@ + Comment[pt]=Módulo de operações de pintura do Krita + Comment[pt_BR]=plugin de operação de pintura para o Krita + Comment[ru]=Модуль рисования Krita ++Comment[sl]=vstavek za dejanja slikanja za Krito + Comment[sr]=Прикључак за сликарске операције за Krita-у + Comment[sr@Latn]=Priključak za slikarske operacije za Krita-u + Comment[sv]=Målningsinsticksprogram för Krita +Index: krita/kritapart.desktop +=================================================================== +--- krita/kritapart.desktop (revision 427945) ++++ krita/kritapart.desktop (working copy) +@@ -18,7 +18,7 @@ + Name[nn]=KOffice-komponent for biletmanipulering + Name[pt]=Componente de Manipulação de Imagens do KOffice + Name[pt_BR]=Componente de Manipulação de Imagens do KOffice +-Name[ru]=Компонент редактирования изображений KOffice ++Name[ru]=Компонент редактирования изображений + Name[sl]=Komponenta za obdelavo slik za KOffice + Name[sr]=KOffice-ова компонента за манипулацију сликама + Name[sr@Latn]=KOffice-ova komponenta za manipulaciju slikama +@@ -49,7 +49,7 @@ + GenericName[nn]=Bilethandsaming + GenericName[pt]=Manipulação de Imagens + GenericName[pt_BR]=Manipulação de Imagens +-GenericName[ru]=Редактор графических изображений ++GenericName[ru]=Редактирование изображений + GenericName[sl]=Obdelava slik + GenericName[sr]=Манипулација сликама + GenericName[sr@Latn]=Manipulacija slikama +Index: krita/ui/kis_layerbox.cc +=================================================================== +--- krita/ui/kis_layerbox.cc (revision 427945) ++++ krita/ui/kis_layerbox.cc (working copy) +@@ -372,7 +372,7 @@ + void KisLayerBoxItem::init(const QString& label, QListBox *parent, + KisLayerBox::flags f) + { +- KIconLoader il; ++ KIconLoader il( "krita" ); + + m_label = label; + +Index: krita/ui/kis_dockframedocker.cc +=================================================================== +--- krita/ui/kis_dockframedocker.cc (revision 427945) ++++ krita/ui/kis_dockframedocker.cc (working copy) +@@ -125,7 +125,6 @@ + m_page -> lblCaption -> show(); + m_page -> bnShade -> show(); + m_page -> lblCaption -> setText(caption()); +- resize(sizeHint()); + } + else { + m_docked = false; +@@ -133,7 +132,6 @@ + m_page -> bnShade -> hide(); + m_page -> tabWidget -> show(); + m_page -> lblCaption -> setText(""); +- resize(sizeHint()); + } + + } +Index: kchart/kchartpart.desktop +=================================================================== +--- kchart/kchartpart.desktop (revision 427945) ++++ kchart/kchartpart.desktop (working copy) +@@ -20,6 +20,7 @@ + Name[pt]=Componente de Gráficos do KOffice + Name[pt_BR]=Componente de Gráficos do KOffice + Name[ru]=Компонент диаграмм KOffice ++Name[sl]=Komponenta za grafe za KOffice + Name[sr]=KOffice-ова компонента за графике + Name[sr@Latn]=KOffice-ova komponenta za grafike + Name[sv]=Koffice-diagramkomponent +Index: kchart/kdchart/KDDrawText.cpp +=================================================================== +--- kchart/kdchart/KDDrawText.cpp (revision 427945) ++++ kchart/kdchart/KDDrawText.cpp (working copy) +@@ -256,10 +256,12 @@ + painter->setPen( QColor( Qt::darkGreen ) ); + painter->drawRect(x,y,txtWidth,txtHeight); + }else{ ++#if 0 + // Working around a strange Qt bug: Rotated painter must be + // initialized by drawing before text can be painted there. + painter->setPen( QColor( Qt::white ) ); + painter->drawLine( 30000,0,30001,0 ); ++#endif + } + painter->setPen( savePen ); + } +Index: kchart/kchartWizardSelectChartTypePage.cc +=================================================================== +--- kchart/kchartWizardSelectChartTypePage.cc (revision 427945) ++++ kchart/kchartWizardSelectChartTypePage.cc (working copy) +@@ -16,11 +16,11 @@ + namespace KChart + { + +-KChartButton::KChartButton(QWidget *parent, const QString & _text, QPixmap *_pixmap) ++KChartButton::KChartButton(QWidget *parent, const QString & _text, const QPixmap &_pixmap) + : QVBox(parent) + { + m_button = new QPushButton(this); +- m_button->setPixmap(*_pixmap); ++ m_button->setPixmap(_pixmap); + m_button->setToggleButton( true ); + QLabel *label = new QLabel(_text, this); + label->setSizePolicy(QSizePolicy::Fixed,QSizePolicy::Fixed); +@@ -30,16 +30,16 @@ + KChartButton::~KChartButton() + { + } +- ++ + void KChartWizardSelectChartTypePage::addButton(const QString &name, + const QString &icon_name, + int type) + { +- KChartButton *button = new KChartButton( this, name, &BarIcon( icon_name,KIcon::SizeMedium, KIcon::DefaultState,KChartFactory::global() ) ); ++ KChartButton *button = new KChartButton( this, name, BarIcon( icon_name,KIcon::SizeMedium, KIcon::DefaultState,KChartFactory::global() ) ); + _layout->addWidget(button,r_pos,c_pos); + _typeBG->insert( button->button(), type ); + +- if (c_pos == 3) ++ if (c_pos == 3) + { + c_pos=0; + r_pos++; //place the next button in the second row +Index: kchart/kchartWizardSelectChartTypePage.h +=================================================================== +--- kchart/kchartWizardSelectChartTypePage.h (revision 427945) ++++ kchart/kchartWizardSelectChartTypePage.h (working copy) +@@ -23,9 +23,9 @@ + { + Q_OBJECT + public: +- KChartButton(QWidget* parent, const QString &, QPixmap *); ++ KChartButton(QWidget* parent, const QString &, const QPixmap &); + ~KChartButton(); +- ++ + QPushButton *button() const { return m_button;} + private: + QPushButton *m_button; +Index: mimetypes/kde32/vnd.stardivision.math.desktop +=================================================================== +--- mimetypes/kde32/vnd.stardivision.math.desktop (revision 427945) ++++ mimetypes/kde32/vnd.stardivision.math.desktop (working copy) +@@ -25,7 +25,7 @@ + Comment[nn]=StarOffice-formel + Comment[pt]=Documento Matemático do StarOffice + Comment[pt_BR]=Documento do StarOffice Math +-Comment[ru]=Формулы StarOffice ++Comment[ru]=Формула StarOffice + Comment[sl]=Dokument za StarOffice Math + Comment[sr]=StarOffice Math-ов документ + Comment[sr@Latn]=StarOffice Math-ov dokument +Index: mimetypes/kde32/vnd.stardivision.writer-global.desktop +=================================================================== +--- mimetypes/kde32/vnd.stardivision.writer-global.desktop (revision 427945) ++++ mimetypes/kde32/vnd.stardivision.writer-global.desktop (working copy) +@@ -23,7 +23,7 @@ + Comment[nn]=StarOffice Writer-hovuddokument + Comment[pt]=Documento Mestre do Writer do StarOffice + Comment[pt_BR]=Documento Mestre do StarOffice Writer +-Comment[ru]=Основной документ StarOffice Writer ++Comment[ru]=Мастер-документ StarOffice + Comment[sl]=Dokument za StarOffice Writer Master + Comment[sr]=StarOffice Writer-ов главни документ + Comment[sr@Latn]=StarOffice Writer-ov glavni dokument +Index: mimetypes/kde32/vnd.sun.xml.writer.master.desktop +=================================================================== +--- mimetypes/kde32/vnd.sun.xml.writer.master.desktop (revision 427945) ++++ mimetypes/kde32/vnd.sun.xml.writer.master.desktop (working copy) +@@ -20,7 +20,7 @@ + Comment[nn]=OpenOffice.org-hovudtekstdokument + Comment[pt]=Documento Mestre de Texto do OpenOffice.org + Comment[pt_BR]=Documento Mestre de Texto do OpenOffice.org +-Comment[ru]=Основной текстовый документ OpenOffice.org ++Comment[ru]=Мастер-документ OpenOffice.org + Comment[sr]=OpenOffice.org-ов главни текстуални документ + Comment[sr@Latn]=OpenOffice.org-ov glavni tekstualni dokument + Comment[sv]=Openoffice.org huvudtextdokument +Index: mimetypes/kde32/vnd.sun.xml.writer.template.desktop +=================================================================== +--- mimetypes/kde32/vnd.sun.xml.writer.template.desktop (revision 427945) ++++ mimetypes/kde32/vnd.sun.xml.writer.template.desktop (working copy) +@@ -21,7 +21,7 @@ + Comment[nn]=OpenOffice.org-tekstdokumentmal + Comment[pt]=Modelo de Documento de Texto do OpenOffice.org + Comment[pt_BR]=Modelo de Documento de Texto do OpenOffice.org +-Comment[ru]=Шаблон текстового документа OpenОffice.org ++Comment[ru]=Шаблон документа OpenOffice.org + Comment[sl]=Predloga besedilnega dokumenta za OpenOffice.org + Comment[sr]=OpenOffice.org-ов шаблон текстуалног документа + Comment[sr@Latn]=OpenOffice.org-ov šablon tekstualnog dokumenta +Index: mimetypes/kde32/vnd.stardivision.draw.desktop +=================================================================== +--- mimetypes/kde32/vnd.stardivision.draw.desktop (revision 427945) ++++ mimetypes/kde32/vnd.stardivision.draw.desktop (working copy) +@@ -23,7 +23,7 @@ + Comment[nn]=StarOffice-teikning + Comment[pt]=Desenho do StarOffice + Comment[pt_BR]=Desenho do StarOffice +-Comment[ru]=Изображение StarOffice ++Comment[ru]=Рисунок StarOffice + Comment[sl]=Risanje za StarOffice + Comment[sr]=StarOffice-ов цртеж + Comment[sr@Latn]=StarOffice-ov crtež +Index: mimetypes/kde32/vnd.sun.xml.draw.template.desktop +=================================================================== +--- mimetypes/kde32/vnd.sun.xml.draw.template.desktop (revision 427945) ++++ mimetypes/kde32/vnd.sun.xml.draw.template.desktop (working copy) +@@ -20,7 +20,7 @@ + Comment[nn]=OpenOffice.org-teikningsmal + Comment[pt]=Modelo de Desenho do OpenOffice.org + Comment[pt_BR]=Modelo de Desenho do OpenOffice.org +-Comment[ru]=Шаблон изображения OpenOffice.org ++Comment[ru]=Шаблон рисунка OpenOffice.org + Comment[sl]=Predloga risanja za OpenOffice.org + Comment[sr]=OpenOffice.org-ов шаблон цртежа + Comment[sr@Latn]=OpenOffice.org-ov šablon crteža +Index: mimetypes/kde32/vnd.sun.xml.calc.template.desktop +=================================================================== +--- mimetypes/kde32/vnd.sun.xml.calc.template.desktop (revision 427945) ++++ mimetypes/kde32/vnd.sun.xml.calc.template.desktop (working copy) +@@ -21,7 +21,7 @@ + Comment[nn]=OpenOffice.org-reknearkmal + Comment[pt]=Modelo de Folha de Cálculo do OpenOffice.org + Comment[pt_BR]=Modelo de Planilha OpenOffice.org +-Comment[ru]=Шаблон таблицы OpenOffice.org ++Comment[ru]=Шаблон электронной таблицы OpenOffice.org + Comment[sl]=Predloga preglednice za OpenOffice.org + Comment[sr]=OpenOffice.org-ов шаблон прорачунског листа + Comment[sr@Latn]=OpenOffice.org-ov šablon proračunskog lista +Index: mimetypes/kde33/vnd.oasis.opendocument.graphics-template.desktop +=================================================================== +--- mimetypes/kde33/vnd.oasis.opendocument.graphics-template.desktop (revision 427945) ++++ mimetypes/kde33/vnd.oasis.opendocument.graphics-template.desktop (working copy) +@@ -22,7 +22,7 @@ + Comment[nn]=OASIS OpenDocument-teikningsmal + Comment[pt]=Modelo de Desenho OASIS OpenDocument + Comment[pt_BR]=Modelo de Gráfico OpenDocument OASIS +-Comment[ru]=Шаблон графики OASIS OpenDocument Graphics ++Comment[ru]=Шаблон рисунка OASIS OpenDocument Graphics + Comment[sl]=Predloga grafike OASIS OpenDocument + Comment[sr]=OASIS-ов OpenDocument графички шаблон + Comment[sr@Latn]=OASIS-ov OpenDocument grafički šablon +Index: mimetypes/kde33/vnd.oasis.opendocument.graphics.desktop +=================================================================== +--- mimetypes/kde33/vnd.oasis.opendocument.graphics.desktop (revision 427945) ++++ mimetypes/kde33/vnd.oasis.opendocument.graphics.desktop (working copy) +@@ -22,7 +22,7 @@ + Comment[nn]=OASIS OpenDocument-teikning + Comment[pt]=Desenho OASIS OpenDocument + Comment[pt_BR]=Gráfico OpenDocument OASIS +-Comment[ru]=Графика OASIS OpenDocument ++Comment[ru]=Рисунок OASIS OpenDocument + Comment[sl]=Grafika OASIS OpenDocument + Comment[sr]=OASIS-ова OpenDocument графика + Comment[sr@Latn]=OASIS-ova OpenDocument grafika +Index: kivio/kiviopart/kivio_stencil_geometry_panel.cpp +=================================================================== +--- kivio/kiviopart/kivio_stencil_geometry_panel.cpp (revision 427945) ++++ kivio/kiviopart/kivio_stencil_geometry_panel.cpp (working copy) +@@ -96,10 +96,10 @@ + lw->setPixmap( QPixmap((const char **)width_xpm) ); + lh->setPixmap( QPixmap((const char **)height_xpm) ); + +- m_pX = new KoUnitDoubleSpinBox(this, -1000.0, 1000.0, 0.5, 0.0); +- m_pY = new KoUnitDoubleSpinBox(this, -1000.0, 1000.0, 0.5, 0.0); +- m_pW = new KoUnitDoubleSpinBox(this, -1000.0, 1000.0, 0.5, 0.0); +- m_pH = new KoUnitDoubleSpinBox(this, -1000.0, 1000.0, 0.5, 0.0); ++ m_pX = new KoBuggyUnitDoubleSpinBox(this, -1000.0, 1000.0, 0.5, 0.0); ++ m_pY = new KoBuggyUnitDoubleSpinBox(this, -1000.0, 1000.0, 0.5, 0.0); ++ m_pW = new KoBuggyUnitDoubleSpinBox(this, -1000.0, 1000.0, 0.5, 0.0); ++ m_pH = new KoBuggyUnitDoubleSpinBox(this, -1000.0, 1000.0, 0.5, 0.0); + m_rotationSBox = new KIntSpinBox(-360, 360, 1, 0, 10, this); + m_rotationSBox->hide(); + +Index: kivio/kiviopart/kivio_stencil_geometry_panel.h +=================================================================== +--- kivio/kiviopart/kivio_stencil_geometry_panel.h (revision 427945) ++++ kivio/kiviopart/kivio_stencil_geometry_panel.h (working copy) +@@ -5,14 +5,14 @@ + #include <koUnit.h> + + class KoPageLayout; +-class KoUnitDoubleSpinBox; ++class KoBuggyUnitDoubleSpinBox; + class KIntSpinBox; + + class KivioStencilGeometryPanel : public QWidget + { + Q_OBJECT + protected: +- KoUnitDoubleSpinBox *m_pX, *m_pY, *m_pW, *m_pH; ++ KoBuggyUnitDoubleSpinBox *m_pX, *m_pY, *m_pW, *m_pH; + KIntSpinBox* m_rotationSBox; + KoUnit::Unit m_unit; + bool m_emitSignals; +Index: kivio/kiviopart/kivio_view.h +=================================================================== +--- kivio/kiviopart/kivio_view.h (revision 427945) ++++ kivio/kiviopart/kivio_view.h (working copy) +@@ -63,7 +63,7 @@ + class DCOPObject; + class KoRuler; + class KoZoomHandler; +-class KoUnitDoubleSpinBox; ++class KoBuggyUnitDoubleSpinBox; + class KStatusBarLabel; + class KoLineWidthAction; + class KoLineStyleAction; +Index: kivio/kiviopart/ui/kiviostencilformatdlg.cpp +=================================================================== +--- kivio/kiviopart/ui/kiviostencilformatdlg.cpp (revision 427945) ++++ kivio/kiviopart/ui/kiviostencilformatdlg.cpp (working copy) +@@ -46,7 +46,7 @@ + QGridLayout* gl = new QGridLayout(mainWidget, 3, 2, KDialog::marginHint(), KDialog::spacingHint()); + + QLabel* lineWidthLbl = new QLabel(i18n("Line &width:"), mainWidget); +- m_lineWidthUSBox = new KoUnitDoubleSpinBox(mainWidget, 0.0, 1000.0, 0.1, 1.0, m_unit, 2); ++ m_lineWidthUSBox = new KoBuggyUnitDoubleSpinBox(mainWidget, 0.0, 1000.0, 0.1, 1.0, m_unit, 2); + lineWidthLbl->setBuddy(m_lineWidthUSBox); + QLabel* lineColorLbl = new QLabel(i18n("Line &color:"), mainWidget); + m_lineCBtn = new KColorButton(mainWidget); +Index: kivio/kiviopart/ui/kiviostencilformatdlg.h +=================================================================== +--- kivio/kiviopart/ui/kiviostencilformatdlg.h (revision 427945) ++++ kivio/kiviopart/ui/kiviostencilformatdlg.h (working copy) +@@ -24,7 +24,7 @@ + + #include <koUnit.h> + +-class KoUnitDoubleSpinBox; ++class KoBuggyUnitDoubleSpinBox; + class KColorButton; + class KComboBox; + class KivioView; +@@ -61,7 +61,7 @@ + void initLineEndStyles(); + + protected: +- KoUnitDoubleSpinBox* m_lineWidthUSBox; ++ KoBuggyUnitDoubleSpinBox* m_lineWidthUSBox; + KColorButton* m_lineCBtn; + KColorButton* m_fillCBtn; + KComboBox* m_patternCBox; +Index: kivio/kiviopart/ui/kiviooptionsdialog.cpp +=================================================================== +--- kivio/kiviopart/ui/kiviooptionsdialog.cpp (revision 427945) ++++ kivio/kiviopart/ui/kiviooptionsdialog.cpp (working copy) +@@ -178,20 +178,20 @@ + gridColorLbl->setBuddy(m_gridColorBtn); + QGroupBox* spacingGrp = new QGroupBox(2, Qt::Horizontal, i18n("Spacing"), page); + QLabel* spaceHorizLbl = new QLabel(i18n("&Horizontal:"), spacingGrp); +- m_spaceHorizUSpin = new KoUnitDoubleSpinBox(spacingGrp, 0.0, pgw, 0.1, ++ m_spaceHorizUSpin = new KoBuggyUnitDoubleSpinBox(spacingGrp, 0.0, pgw, 0.1, + fw, unit); + spaceHorizLbl->setBuddy(m_spaceHorizUSpin); + QLabel* spaceVertLbl = new QLabel(i18n("&Vertical:"), spacingGrp); +- m_spaceVertUSpin = new KoUnitDoubleSpinBox(spacingGrp, 0.0, pgh, 0.1, ++ m_spaceVertUSpin = new KoBuggyUnitDoubleSpinBox(spacingGrp, 0.0, pgh, 0.1, + fh, unit); + spaceVertLbl->setBuddy(m_spaceVertUSpin); + QGroupBox* snapGrp = new QGroupBox(2, Qt::Horizontal, i18n("Snap Distance"), page); + QLabel* snapHorizLbl = new QLabel(i18n("H&orizontal:"), snapGrp); +- m_snapHorizUSpin = new KoUnitDoubleSpinBox(snapGrp, 0.0, fw, 0.1, ++ m_snapHorizUSpin = new KoBuggyUnitDoubleSpinBox(snapGrp, 0.0, fw, 0.1, + sw, unit); + snapHorizLbl->setBuddy(m_snapHorizUSpin); + QLabel* snapVertLbl = new QLabel(i18n("V&ertical:"), snapGrp); +- m_snapVertUSpin = new KoUnitDoubleSpinBox(snapGrp, 0.0, fh, 0.1, ++ m_snapVertUSpin = new KoBuggyUnitDoubleSpinBox(snapGrp, 0.0, fh, 0.1, + sh, unit); + snapVertLbl->setBuddy(m_snapVertUSpin); + +@@ -245,7 +245,7 @@ + orientBGrp->insert(m_orientVertRBtn); + QLabel* posLbl = new QLabel(i18n("&Position:"), m_propertiesGrp); + KoUnit::Unit unit = view->doc()->units(); +- m_posUSpin = new KoUnitDoubleSpinBox(m_propertiesGrp, 0.0, 0.0, 0.0, unit); ++ m_posUSpin = new KoBuggyUnitDoubleSpinBox(m_propertiesGrp, 0.0, 0.0, 0.0, unit); + posLbl->setBuddy(m_posUSpin); + + QGridLayout* pgl = new QGridLayout(m_propertiesGrp->layout()); +Index: kivio/kiviopart/ui/kivioarrowheadformatdlg.cpp +=================================================================== +--- kivio/kiviopart/ui/kivioarrowheadformatdlg.cpp (revision 427945) ++++ kivio/kiviopart/ui/kivioarrowheadformatdlg.cpp (working copy) +@@ -53,10 +53,10 @@ + loadArrowHeads(m_startAHTypeCBox, false); + startAHTypeLbl->setBuddy(m_startAHTypeCBox); + QLabel* startAHWidthLbl = new QLabel(i18n("&Width:"), startGBox); +- m_startAHWidthUSBox = new KoUnitDoubleSpinBox(startGBox, 0.0, 1000.0, 0.1, 1.0, m_unit, 2); ++ m_startAHWidthUSBox = new KoBuggyUnitDoubleSpinBox(startGBox, 0.0, 1000.0, 0.1, 1.0, m_unit, 2); + startAHWidthLbl->setBuddy(m_startAHWidthUSBox); + QLabel* startAHHeightLbl = new QLabel(i18n("&Length:"), startGBox); +- m_startAHHeightUSBox = new KoUnitDoubleSpinBox(startGBox, 0.0, 1000.0, 0.1, 1.0, m_unit, 2); ++ m_startAHHeightUSBox = new KoBuggyUnitDoubleSpinBox(startGBox, 0.0, 1000.0, 0.1, 1.0, m_unit, 2); + startAHHeightLbl->setBuddy(m_startAHHeightUSBox); + + QGroupBox* endGBox = new QGroupBox(2, Qt::Horizontal, i18n("Arrowhead at End"), mainWidget); +@@ -65,10 +65,10 @@ + loadArrowHeads(m_endAHTypeCBox, true); + endAHTypeLbl->setBuddy(m_endAHTypeCBox); + QLabel* endAHWidthLbl = new QLabel(i18n("W&idth:"), endGBox); +- m_endAHWidthUSBox = new KoUnitDoubleSpinBox(endGBox, 0.0, 1000.0, 0.1, 1.0, m_unit, 2); ++ m_endAHWidthUSBox = new KoBuggyUnitDoubleSpinBox(endGBox, 0.0, 1000.0, 0.1, 1.0, m_unit, 2); + endAHWidthLbl->setBuddy(m_endAHWidthUSBox); + QLabel* endAHHeightLbl = new QLabel(i18n("L&ength:"), endGBox); +- m_endAHHeightUSBox = new KoUnitDoubleSpinBox(endGBox, 0.0, 1000.0, 0.1, 1.0, m_unit, 2); ++ m_endAHHeightUSBox = new KoBuggyUnitDoubleSpinBox(endGBox, 0.0, 1000.0, 0.1, 1.0, m_unit, 2); + endAHHeightLbl->setBuddy(m_endAHHeightUSBox); + + gl->addWidget(startGBox, 0, 0); +Index: kivio/kiviopart/ui/kiviooptionsdialog.h +=================================================================== +--- kivio/kiviopart/ui/kiviooptionsdialog.h (revision 427945) ++++ kivio/kiviopart/ui/kiviooptionsdialog.h (working copy) +@@ -32,7 +32,7 @@ + class QRadioButton; + class KColorButton; + class KURLRequester; +-class KoUnitDoubleSpinBox; ++class KoBuggyUnitDoubleSpinBox; + class KivioGuideLineData; + class QGroupBox; + class QFont; +@@ -105,17 +105,17 @@ + KoPageLayout m_layout; + QLabel* m_fontTxtLbl; + QFont m_font; +- KoUnitDoubleSpinBox* m_spaceHorizUSpin; +- KoUnitDoubleSpinBox* m_spaceVertUSpin; +- KoUnitDoubleSpinBox* m_snapHorizUSpin; +- KoUnitDoubleSpinBox* m_snapVertUSpin; ++ KoBuggyUnitDoubleSpinBox* m_spaceHorizUSpin; ++ KoBuggyUnitDoubleSpinBox* m_spaceVertUSpin; ++ KoBuggyUnitDoubleSpinBox* m_snapHorizUSpin; ++ KoBuggyUnitDoubleSpinBox* m_snapVertUSpin; + QCheckBox* m_gridChBox; + QCheckBox* m_snapChBox; + KColorButton* m_gridColorBtn; + KListView* m_guideList; + QRadioButton* m_orientHorizRBtn; + QRadioButton* m_orientVertRBtn; +- KoUnitDoubleSpinBox* m_posUSpin; ++ KoBuggyUnitDoubleSpinBox* m_posUSpin; + QCheckBox* m_snapGuideChBox; + QCheckBox* m_guidesChBox; + KColorButton* m_guideColorBtn; +Index: kivio/kiviopart/ui/kivioarrowheadformatdlg.h +=================================================================== +--- kivio/kiviopart/ui/kivioarrowheadformatdlg.h (revision 427945) ++++ kivio/kiviopart/ui/kivioarrowheadformatdlg.h (working copy) +@@ -24,7 +24,7 @@ + + #include <koUnit.h> + +-class KoUnitDoubleSpinBox; ++class KoBuggyUnitDoubleSpinBox; + class KComboBox; + class KivioView; + +@@ -58,10 +58,10 @@ + void loadArrowHeads(KComboBox* combo, bool endArrow); + + protected: +- KoUnitDoubleSpinBox* m_startAHWidthUSBox; +- KoUnitDoubleSpinBox* m_startAHHeightUSBox; +- KoUnitDoubleSpinBox* m_endAHWidthUSBox; +- KoUnitDoubleSpinBox* m_endAHHeightUSBox; ++ KoBuggyUnitDoubleSpinBox* m_startAHWidthUSBox; ++ KoBuggyUnitDoubleSpinBox* m_startAHHeightUSBox; ++ KoBuggyUnitDoubleSpinBox* m_endAHWidthUSBox; ++ KoBuggyUnitDoubleSpinBox* m_endAHHeightUSBox; + KComboBox* m_startAHTypeCBox; + KComboBox* m_endAHTypeCBox; + KoUnit::Unit m_unit; +Index: kpresenter/kppieobject.h +=================================================================== +--- kpresenter/kppieobject.h (revision 427945) ++++ kpresenter/kppieobject.h (working copy) +@@ -1,5 +1,6 @@ + /* This file is part of the KDE project + Copyright (C) 1998, 1999 Reginald Stadlbauer <reggie@kde.org> ++ Copyright (C) 2005 Thorsten Zachmann <zachmann@kde.org> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public +@@ -79,7 +80,6 @@ + { return lineEnd; } + + virtual QDomDocumentFragment save( QDomDocument& doc, double offset ); +- virtual bool saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj ) const; + + virtual double load(const QDomElement &element); + virtual void flip(bool horizontal ); +@@ -89,6 +89,9 @@ + virtual KoPoint getRealOrig() const; + + protected: ++ virtual const char * getOasisElementName() const; ++ virtual bool saveOasisObjectAttributes( KPOasisSaveContext &sc ) const; ++ + virtual void paint( QPainter *_painter, KoZoomHandler*_zoomHandler, + int /* pageNum */, bool drawingShadow, bool drawContour ); + +Index: kpresenter/kpcubicbeziercurveobject.h +=================================================================== +--- kpresenter/kpcubicbeziercurveobject.h (revision 427945) ++++ kpresenter/kpcubicbeziercurveobject.h (working copy) +@@ -1,6 +1,7 @@ + // -*- Mode: c++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 4; -*- + /* This file is part of the KDE project + Copyright (C) 2001 Toshitaka Fujioka <fujioka@kde.org> ++ Copyright (C) 2005 Thorsten Zachmann <zachmann@kde.org> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public +@@ -42,10 +43,9 @@ + virtual QString getTypeString() const { return i18n("Cubic Bezier Curve"); } + + virtual QDomDocumentFragment save( QDomDocument& doc,double offset ); +- virtual bool saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj ) const; + + virtual double load( const QDomElement &element ); +- virtual void loadOasis( const QDomElement &element, KoOasisContext & context,KPRLoadingInfo* info ); ++ virtual void loadOasis( const QDomElement &element, KoOasisContext & context, KPRLoadingInfo* info ); + + virtual void flip(bool horizontal ); + void closeObject(bool _close); +@@ -53,6 +53,9 @@ + + + protected: ++ virtual const char * getOasisElementName() const; ++ virtual bool saveOasisObjectAttributes( KPOasisSaveContext &sc ) const; ++ + virtual void updatePoints( double _fx, double _fy ); + virtual KoPointArray getDrawingPoints() const; + +Index: kpresenter/kprectobject.h +=================================================================== +--- kpresenter/kprectobject.h (revision 427945) ++++ kpresenter/kprectobject.h (working copy) +@@ -53,9 +53,11 @@ + virtual QDomDocumentFragment save( QDomDocument& doc, double offset ); + virtual double load(const QDomElement &element); + virtual void loadOasis(const QDomElement &element, KoOasisContext &context, KPRLoadingInfo *info); +- virtual bool saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj ) const; + + protected: ++ virtual const char * getOasisElementName() const; ++ virtual bool saveOasisObjectAttributes( KPOasisSaveContext &sc ) const; ++ + virtual void paint( QPainter *_painter,KoZoomHandler*_zoomHandler, + int /* pageNum */, bool drawingShadow, bool drawContour ); + +Index: kpresenter/kpellipseobject.h +=================================================================== +--- kpresenter/kpellipseobject.h (revision 427945) ++++ kpresenter/kpellipseobject.h (working copy) +@@ -49,9 +49,11 @@ + { return i18n("Ellipse"); } + + virtual KoSize getRealSize() const; +- virtual bool saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj ) const; + + protected: ++ virtual const char * getOasisElementName() const; ++ virtual bool saveOasisObjectAttributes( KPOasisSaveContext &sc ) const; ++ + virtual void paint( QPainter *_painter,KoZoomHandler *_zoomHandler, + int /* pageNum */, bool drawingShadow, bool drawContour = FALSE ); + +Index: kpresenter/kpfreehandobject.h +=================================================================== +--- kpresenter/kpfreehandobject.h (revision 427945) ++++ kpresenter/kpfreehandobject.h (working copy) +@@ -1,6 +1,7 @@ + // -*- Mode: c++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 4; -*- + /* This file is part of the KDE project + Copyright (C) 2001 Toshitaka Fujioka <fujioka@kde.org> ++ Copyright (C) 2005 Thorsten Zachmann <zachmann@kde.org> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public +@@ -43,8 +44,11 @@ + + virtual QDomDocumentFragment save( QDomDocument& doc,double offset ); + virtual double load( const QDomElement &element ); +- virtual bool saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj ) const; ++ virtual void loadOasis( const QDomElement &element, KoOasisContext & context, KPRLoadingInfo* info ); + ++protected: ++ virtual const char * getOasisElementName() const; ++ virtual bool saveOasisObjectAttributes( KPOasisSaveContext &sc ) const; + }; + + #endif +Index: kpresenter/kppointobject.cc +=================================================================== +--- kpresenter/kppointobject.cc (revision 427945) ++++ kpresenter/kppointobject.cc (working copy) +@@ -1,6 +1,6 @@ + // -*- Mode: c++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 4; -*- + /* This file is part of the KDE project +- Copyright (C) 2004 Thorsten Zachmann <zachmann@kde.org> ++ Copyright (C) 2004-2005 Thorsten Zachmann <zachmann@kde.org> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public +@@ -83,71 +83,24 @@ + return fragment; + } + +-QString KPPointObject::saveOasisStrokeElement( KoGenStyles& mainStyles ) const ++const char * KPPointObject::getOasisElementName() const + { +- KoGenStyle styleobjectauto( KoGenStyle::STYLE_GRAPHICAUTO, "graphic" ); +- saveOasisMarkerElement( mainStyles, styleobjectauto ); +- saveOasisObjectProtectStyle( styleobjectauto ); +- KPShadowObject::saveOasisStrokeElement( mainStyles, styleobjectauto ); +- return mainStyles.lookup( styleobjectauto, "gr" ); ++ return "draw:custom-shape"; + } + +- +-bool KPPointObject::saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context ) const +-{ +- QString listOfPoint; +- int maxX=0; +- int maxY=0; +- KoPointArray::ConstIterator it; +- for ( it = points.begin(); it != points.end(); ++it ) { +- int tmpX = 0; +- int tmpY = 0; +- tmpX = ( int ) ( KoUnit::toMM( ( *it ).x() )*100 ); +- tmpY = ( int ) ( KoUnit::toMM( ( *it ).y() )*100 ); +- if ( !listOfPoint.isEmpty() ) +- listOfPoint += QString( " %1,%2" ).arg( tmpX ).arg( tmpY ); +- else +- listOfPoint = QString( "%1,%2" ).arg( tmpX ).arg( tmpY ); +- maxX = QMAX( maxX, tmpX ); +- maxY = QMAX( maxY, tmpY ); +- } +- xmlWriter.addAttribute("draw:points", listOfPoint ); +- xmlWriter.addAttribute("svg:viewBox", QString( "0 0 %1 %2" ).arg( maxX ).arg( maxY ) ); +- return true; +-} +- + void KPPointObject::loadOasisMarker( KoOasisContext & context ) + { + loadOasisMarkerElement( context, "marker-start", lineBegin ); + loadOasisMarkerElement( context, "marker-end", lineEnd ); + } + +-void KPPointObject::loadOasis( const QDomElement &element, KoOasisContext & context, KPRLoadingInfo *info ) ++void KPPointObject::fillStyle( KoGenStyle& styleObjectAuto, KoGenStyles& mainStyles ) const + { +- //kdDebug()<<"void KPPointObject::loadOasis( const QDomElement &element )*************\n"; +- KPShadowObject::loadOasis( element, context, info ); +- //load point. +- QStringList ptList = QStringList::split(' ', element.attributeNS( KoXmlNS::draw, "points", QString::null)); +- QString pt_x, pt_y; +- double tmp_x, tmp_y; +- unsigned int index = 0; +- for (QStringList::Iterator it = ptList.begin(); it != ptList.end(); ++it) +- { +- tmp_x = (*it).section(',',0,0).toInt() / 100; +- tmp_y = (*it).section(',',1,1).toInt() / 100; +- +- pt_x.setNum(tmp_x); +- pt_x+="mm"; +- +- pt_y.setNum(tmp_y); +- pt_y+="mm"; +- +- points.putPoints( index, 1, KoUnit::parseValue(pt_x),KoUnit::parseValue(pt_y) ); +- ++index; +- } +- loadOasisMarker( context ); ++ KPShadowObject::fillStyle( styleObjectAuto, mainStyles ); ++ saveOasisMarkerElement( mainStyles, styleObjectAuto ); + } + ++ + double KPPointObject::load( const QDomElement &element ) + { + double offset = KPShadowObject::load( element ); +Index: kpresenter/kplineobject.h +=================================================================== +--- kpresenter/kplineobject.h (revision 427945) ++++ kpresenter/kplineobject.h (working copy) +@@ -1,6 +1,7 @@ + // -*- Mode: c++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 4; -*- + /* This file is part of the KDE project + Copyright (C) 1998, 1999 Reginald Stadlbauer <reggie@kde.org> ++ Copyright (C) 2005 Thorsten Zachmann <zachmann@kde.org> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public +@@ -63,16 +64,18 @@ + virtual double load(const QDomElement &element); + virtual void loadOasis(const QDomElement &element, KoOasisContext & context, KPRLoadingInfo *info); + +- virtual bool saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj ) const; +- + virtual void flip(bool horizontal ); + + virtual KoSize getRealSize() const; + virtual KoPoint getRealOrig() const; + + protected: +- QString saveOasisStrokeElement( KoGenStyles& mainStyles ) const; ++ virtual const char * getOasisElementName() const; ++ virtual bool saveOasisObjectAttributes( KPOasisSaveContext &sc ) const; ++ virtual void saveOasisPosObject( KoXmlWriter &xmlWriter, int indexObj ) const; + ++ virtual void fillStyle( KoGenStyle& styleObjectAuto, KoGenStyles& mainStyles ) const; ++ + virtual void paint( QPainter *_painter, KoZoomHandler*_zoomHandler, + int /* pageNum */, bool drawingShadow, bool drawContour = FALSE ); + LineType lineType; +Index: kpresenter/kppointobject.h +=================================================================== +--- kpresenter/kppointobject.h (revision 427945) ++++ kpresenter/kppointobject.h (working copy) +@@ -1,6 +1,6 @@ + // -*- Mode: c++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 4; -*- + /* This file is part of the KDE project +- Copyright (C) 2004 Thorsten Zachmann <zachmann@kde.org> ++ Copyright (C) 2004-2005 Thorsten Zachmann <zachmann@kde.org> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public +@@ -34,10 +34,8 @@ + virtual KoPoint getRealOrig() const; + + virtual QDomDocumentFragment save( QDomDocument& doc, double offset ); +- virtual bool saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context ) const; + + virtual double load( const QDomElement &element ); +- virtual void loadOasis( const QDomElement &element, KoOasisContext & context, KPRLoadingInfo *info ); + + virtual void setLineBegin( LineEnd _lineBegin ) { lineBegin = _lineBegin; } + virtual void setLineEnd( LineEnd _lineEnd ) { lineEnd = _lineEnd; } +@@ -53,10 +51,13 @@ + + virtual void closeObject( bool close ); + virtual bool isClosed() const; +- virtual QString saveOasisStrokeElement( KoGenStyles& mainStyles ) const; + + protected: ++ virtual const char * getOasisElementName() const; ++ + void loadOasisMarker( KoOasisContext & context ); ++ virtual void fillStyle( KoGenStyle& styleObjectAuto, KoGenStyles& mainStyles ) const; ++ + virtual void paint( QPainter *_painter,KoZoomHandler*_zoomHandler, + int /* pageNum */, bool drawingShadow, bool drawContour = FALSE ); + virtual void updatePoints( double _fx, double _fy ); +Index: kpresenter/kpautoformobject.cc +=================================================================== +--- kpresenter/kpautoformobject.cc (revision 427945) ++++ kpresenter/kpautoformobject.cc (working copy) +@@ -76,12 +76,17 @@ + } + + +-bool KPAutoformObject::saveOasis( KoXmlWriter & xmlWriter, KoSavingContext& context, int indexObj ) const ++bool KPAutoformObject::saveOasisObjectAttributes( KPOasisSaveContext &sc ) const + { +- kdDebug()<<"bool KPAutoformObject::saveOasis( KoXmlWriter & xmlWriter ) not implemented\n"; ++ kdDebug()<<"bool KPAutoformObject::saveOasisObjectAttributes( KPOasisSaveContext &sc ) not implemented\n"; + return true; + } + ++const char * KPAutoformObject::getOasisElementName() const ++{ ++ return "draw:custom-shape"; ++} ++ + QDomDocumentFragment KPAutoformObject::save( QDomDocument& doc, double offset ) + { + QDomDocumentFragment fragment=KP2DObject::save(doc, offset); +Index: kpresenter/kpgroupobject.h +=================================================================== +--- kpresenter/kpgroupobject.h (revision 427945) ++++ kpresenter/kpgroupobject.h (working copy) +@@ -1,6 +1,7 @@ + // -*- Mode: c++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 4; -*- + /* This file is part of the KDE project + Copyright (C) 1998, 1999 Reginald Stadlbauer <reggie@kde.org> ++ Copyright (C) 2005 Thorsten Zachmann <zachmann@kde.org> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public +@@ -70,7 +71,6 @@ + virtual QDomDocumentFragment save( QDomDocument& doc, double offset ); + virtual double load(const QDomElement &element, KPresenterDoc *doc); + virtual void loadOasisGroupObject( KPresenterDoc *doc, KPrPage * newpage, QDomNode &element, KoOasisContext & context, KPRLoadingInfo *info); +- virtual bool saveOasis(KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj) const; + + virtual void draw( QPainter *_painter, KoZoomHandler *_zoomhandler, + int pageNum, SelectionMode selectionMode, bool drawContour = FALSE ); +@@ -101,6 +101,9 @@ + virtual void decCmdRef(); + + protected: ++ virtual const char * getOasisElementName() const; ++ virtual bool saveOasisObjectAttributes( KPOasisSaveContext &sc ) const; ++ + void updateSizes( double fx, double fy ); + void updateCoords( double dx, double dy ); + +Index: kpresenter/kppixmapobject.h +=================================================================== +--- kpresenter/kppixmapobject.h (revision 427945) ++++ kpresenter/kppixmapobject.h (working copy) +@@ -2,6 +2,7 @@ + + /* This file is part of the KDE project + Copyright (C) 1998, 1999 Reginald Stadlbauer <reggie@kde.org> ++ Copyright (C) 2005 Thorsten Zachmann <zachmann@kde.org> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public +@@ -72,7 +73,6 @@ + { return i18n("Picture"); } + + virtual QDomDocumentFragment save( QDomDocument& doc, double offset ); +- virtual bool saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj ) const; + + virtual double load(const QDomElement &element); + virtual void loadOasis(const QDomElement &element, KoOasisContext & context, KPRLoadingInfo *info); +@@ -113,11 +113,15 @@ + virtual void flip(bool horizontal ); + + protected: ++ virtual const char * getOasisElementName() const; ++ virtual bool saveOasisObjectAttributes( KPOasisSaveContext &sc ) const; ++ + KPPixmapObject() {} + + QPixmap changePictureSettings( QPixmap _tmpPixmap ); +- virtual void saveOasisPictureElement( KoGenStyle &styleobjectauto ); ++ virtual void saveOasisPictureElement( KoGenStyle &styleobjectauto ) const; + void loadOasisPictureEffect(KoOasisContext & context ); ++ virtual void fillStyle( KoGenStyle& styleObjectAuto, KoGenStyles& mainStyles ) const; + + /** + * @internal +Index: kpresenter/kppartobject.h +=================================================================== +--- kpresenter/kppartobject.h (revision 427945) ++++ kpresenter/kppartobject.h (working copy) +@@ -49,14 +49,15 @@ + + KPresenterChild *getChild() const { return child; } + void enableDrawing( bool f ) { _enableDrawing = f; } +- virtual bool saveOasisPart( KoXmlWriter &xmlWriter, KoStore *store, KoSavingContext& context, int indexObj, int partIndexObj, KoXmlWriter* manifestWriter ) const; + virtual void loadOasis(const QDomElement &element, KoOasisContext &context, KPRLoadingInfo *info); +- virtual bool saveOasis( KoXmlWriter &xmlWriter, KoSavingContext &context, int indexObj ) const { return true;/* use saveOasisPart*/}; + + public slots: + void slot_changed( KoChild *_koChild ); + + protected: ++ virtual const char * getOasisElementName() const; ++ virtual bool saveOasisObjectAttributes( KPOasisSaveContext &sc ) const; ++ + void updateChildGeometry(); + virtual void paint( QPainter *_painter,KoZoomHandler*_zoomHandler, + int /* pageNum */, bool drawingShadow, bool drawContour = FALSE ); +Index: kpresenter/kpobject.cc +=================================================================== +--- kpresenter/kpobject.cc (revision 427945) ++++ kpresenter/kpobject.cc (working copy) +@@ -344,7 +344,7 @@ + xmlWriter.addAttributePt( "svg:width", ext.width() ); + xmlWriter.addAttributePt( "svg:height", ext.height() ); + +- if ( angle!=0.0 ) ++ if ( kAbs( angle ) > 1E-6 ) + { + double value = -1 * ( ( double )angle* M_PI )/180.0; + QString str=QString( "rotate (%1)" ).arg( value ); +@@ -362,6 +362,40 @@ + } + } + ++QString KPObject::getStyle( KPOasisSaveContext &sc ) const ++{ ++ kdDebug(33001) << "KPObject::getStyle" << endl; ++ KoGenStyle styleObjectAuto; ++ KoGenStyles &mainStyles( sc.context.mainStyles() ); ++ if ( sc.onMaster ) ++ { ++ styleObjectAuto = KoGenStyle( KPresenterDoc::STYLE_PRESENTATIONSTICKYOBJECT, "presentation" ); ++ } ++ else ++ { ++ styleObjectAuto = KoGenStyle( KoGenStyle::STYLE_GRAPHICAUTO, "graphic" ); ++ } ++ fillStyle( styleObjectAuto, mainStyles ); ++ if ( sc.onMaster ) ++ { ++ return mainStyles.lookup( styleObjectAuto, "pr" ); ++ } ++ return mainStyles.lookup( styleObjectAuto, "gr" ); ++} ++ ++void KPObject::fillStyle( KoGenStyle& styleObjectAuto, KoGenStyles& /* mainStyles */ ) const ++{ ++ kdDebug(33001) << "KPObject::fillStyle" << endl; ++ saveOasisObjectProtectStyle( styleObjectAuto ); ++ saveOasisShadowElement( styleObjectAuto ); ++} ++ ++bool KPObject::saveOasisObjectAttributes( KPOasisSaveContext &/* sc */ ) const ++{ ++ kdDebug()<<"bool saveOasisObjectAttributes not implemented"; ++ return true; ++} ++ + bool KPObject::haveAnimation() const + { + //kdDebug()<<" effect :"<<effect<<" effect3 :"<<effect3<<" a_fileName :"<<a_fileName<<" d_fileName :"<<d_fileName<<" appearTimer :"<<appearTimer<<" disappearTimer :"<<disappearTimer<<endl; +@@ -849,6 +883,20 @@ + } + } + ++bool KPObject::saveOasisObject( KPOasisSaveContext &sc ) const ++{ ++ sc.xmlWriter.startElement( getOasisElementName() ); ++ sc.xmlWriter.addAttribute( "draw:style-name", getStyle( sc ) ); ++ saveOasisPosObject( sc.xmlWriter, sc.indexObj ); ++ if( !objectName.isEmpty()) ++ sc.xmlWriter.addAttribute( "draw:name", objectName ); ++ ++ saveOasisObjectAttributes( sc ); ++ ++ sc.xmlWriter.endElement(); ++ return true; ++} ++ + void KPObject::saveOasisShadowElement( KoGenStyle &styleobjectauto ) const + { + //FIXME default value +@@ -1628,6 +1676,99 @@ + // <draw:stroke-dash draw:name="Fine Dotted" draw:style="rect" draw:dots1="1" draw:distance="0.457cm"/> + } + ++bool KPShadowObject::saveOasisDrawPoints( const KoPointArray &points, KPOasisSaveContext &sc ) ++{ ++ QString listOfPoint; ++ int maxX=0; ++ int maxY=0; ++ KoPointArray::ConstIterator it( points.begin() ); ++ for ( ; it != points.end(); ++it ) ++ { ++ int tmpX = int( ( *it ).x() * 10000 ); ++ int tmpY = int( ( *it ).y() * 10000 ); ++ //if ( !listOfPoint.isEmpty() ) ++ listOfPoint += QString( " %1,%2" ).arg( tmpX ).arg( tmpY ); ++ //else ++ // listOfPoint = QString( "%1,%2" ).arg( tmpX ).arg( tmpY ); ++ maxX = QMAX( maxX, tmpX ); ++ maxY = QMAX( maxY, tmpY ); ++ } ++ sc.xmlWriter.addAttribute("draw:points", listOfPoint ); ++ sc.xmlWriter.addAttribute("svg:viewBox", QString( "0 0 %1 %2" ).arg( maxX ).arg( maxY ) ); ++ return true; ++} ++ ++bool KPShadowObject::loadOasisDrawPoints( KoPointArray &points, const QDomElement &element, ++ KoOasisContext & context, KPRLoadingInfo *info ) ++{ ++ QStringList ptList = QStringList::split(' ', element.attributeNS( KoXmlNS::draw, "points", QString::null)); ++ QStringList viewBox = QStringList::split( ' ', element.attributeNS( KoXmlNS::svg, "viewBox", QString::null ) ); ++ //for ( QStringList::Iterator it = viewBox.begin(); it != viewBox.end(); ++it ) ++ //{ ++ // kdDebug(33001) << "viewBox = " << *it << endl; ++ //} ++ ++ int left = 0; ++ int top = 0; ++ int right = 0; ++ int bottom = 0; ++ ++ if ( viewBox.size() == 4 ) ++ { ++ QStringList::Iterator it = viewBox.begin(); ++ left = ( *it++ ).toInt(); ++ top = ( *it++ ).toInt(); ++ right = ( *it++ ).toInt(); ++ bottom = ( *it ).toInt(); ++ //kdDebug(33001) << "left = " << left ++ // << "top = " << top ++ // << "right =" << right ++ // << "bottom =" << bottom << endl; ++ } ++ else ++ { ++ //if no viewBox is found ++ for (QStringList::Iterator it = ptList.begin(); it != ptList.end(); ++it) ++ { ++ right = QMAX( (*it).section( ',', 0, 0 ).toInt(), right ); ++ bottom = QMAX( (*it).section( ',', 1, 1 ).toInt(), bottom ); ++ } ++ } ++ ++ if ( right - left != 0 && bottom - top != 0 ) ++ { ++ double tmp_x, tmp_y; ++ unsigned int index = 0; ++ for (QStringList::Iterator it = ptList.begin(); it != ptList.end(); ++it) ++ { ++ tmp_x = double( (*it).section( ',', 0, 0 ).toInt() + left ) / ( right - left ) * ext.width(); ++ tmp_y = double( (*it).section( ',', 1, 1 ).toInt() + top ) / ( bottom - top ) * ext.height(); ++ ++ //kdDebug(33001) << "p" << index << " x: " << tmp_x << endl; ++ //kdDebug(33001) << "p" << index << " y: " << tmp_y << endl; ++ ++ points.putPoints( index, 1, tmp_x, tmp_y ); ++ ++index; ++ } ++ } ++ else ++ { ++ kdDebug(33001) << "problem in viewBox values are: " ++ << "left = " << left << ", " ++ << "top = " << top << ", " ++ << "right =" << right << ", " ++ << "bottom =" << bottom << endl; ++ } ++ return true; ++} ++ ++void KPShadowObject::fillStyle( KoGenStyle& styleObjectAuto, KoGenStyles& mainStyles ) const ++{ ++ kdDebug(33001) << "KPShadowObject::fillStyle" << endl; ++ KPObject::fillStyle( styleObjectAuto, mainStyles ); ++ saveOasisStrokeElement( mainStyles, styleObjectAuto ); ++} ++ + void KPShadowObject::loadOasis(const QDomElement &element, KoOasisContext & context, KPRLoadingInfo *info) + { + //kdDebug()<<"void KPShadowObject::loadOasis(const QDomElement &element)**********************\n"; +@@ -1822,14 +1963,15 @@ + return fragment; + } + +-QString KP2DObject::saveOasisBackgroundStyle( KoXmlWriter &xmlWriter, KoGenStyles& mainStyles, int indexObj ) const ++void KP2DObject::fillStyle( KoGenStyle& styleObjectAuto, KoGenStyles& mainStyles ) const + { +- saveOasisPosObject( xmlWriter,indexObj ); +- KoGenStyle styleobjectauto; +- if ( sticky ) +- styleobjectauto = KoGenStyle( KPresenterDoc::STYLE_PRESENTATIONSTICKYOBJECT, "presentation" ); +- else +- styleobjectauto = KoGenStyle( KoGenStyle::STYLE_GRAPHICAUTO, "graphic" ); ++ kdDebug(33001) << "KP2DObject::fillStyle" << endl; ++ KPShadowObject::fillStyle( styleObjectAuto, mainStyles ); ++ saveOasisBackgroundElement( styleObjectAuto, mainStyles ); ++} ++ ++void KP2DObject::saveOasisBackgroundElement( KoGenStyle& styleObjectAuto, KoGenStyles& mainStyles ) const ++{ + switch ( getFillType() ) + { + case FT_BRUSH: +@@ -1838,34 +1980,22 @@ + //todo FIXME when text object doesn't have a background + if( brush != QBrush() ) + { +- KoOasisStyles::saveOasisFillStyle( styleobjectauto, mainStyles, brush ); ++ KoOasisStyles::saveOasisFillStyle( styleObjectAuto, mainStyles, brush ); + } + else + { +- styleobjectauto.addProperty( "draw:fill","none" ); ++ styleObjectAuto.addProperty( "draw:fill","none" ); + } + break; + } + case FT_GRADIENT: +- styleobjectauto.addProperty( "draw:fill","gradient" ); +- styleobjectauto.addProperty( "draw:fill-gradient-name", saveOasisGradientStyle( mainStyles ) ); ++ styleObjectAuto.addProperty( "draw:fill","gradient" ); ++ styleObjectAuto.addProperty( "draw:fill-gradient-name", saveOasisGradientStyle( mainStyles ) ); + break; + } +- saveOasisObjectProtectStyle( styleobjectauto ); +- +- saveOasisStrokeElement( mainStyles, styleobjectauto ); +- saveOasisMarginElement( styleobjectauto ); +- saveOasisShadowElement( styleobjectauto ); +- saveOasisPictureElement( styleobjectauto ); +- +- if ( sticky ) +- return mainStyles.lookup( styleobjectauto, "pr" ); +- else +- return mainStyles.lookup( styleobjectauto, "gr" ); + } + + +- + QString KP2DObject::saveOasisGradientStyle( KoGenStyles& mainStyles ) const + { + KoGenStyle gradientStyle( KPresenterDoc::STYLE_GRADIENT /*no family name*/); +@@ -2170,6 +2300,56 @@ + return offset; + } + ++void KP2DObject::draw( QPainter *_painter, KoZoomHandler*_zoomHandler, ++ int pageNum, SelectionMode selectionMode, bool drawContour ) ++{ ++ double ox = orig.x(); ++ double oy = orig.y(); ++ _painter->save(); ++ ++ // Draw the shadow if any ++ if ( shadowDistance > 0 && !drawContour ) ++ { ++ _painter->save(); ++ QPen tmpPen( pen ); ++ pen.setColor( shadowColor ); ++ QBrush tmpBrush( m_brush.getBrush() ); ++ QBrush shadowBrush( tmpBrush ); ++ shadowBrush.setColor( shadowColor ); ++ m_brush.setBrush( shadowBrush ); ++ ++ if ( angle == 0 ) ++ { ++ double sx = ox; ++ double sy = oy; ++ getShadowCoords( sx, sy ); ++ ++ _painter->translate( _zoomHandler->zoomItX( sx ), _zoomHandler->zoomItY( sy ) ); ++ paint( _painter, _zoomHandler, pageNum, true, drawContour ); ++ } ++ else ++ { ++ _painter->translate( _zoomHandler->zoomItX(ox), _zoomHandler->zoomItY(oy) ); ++ rotateObjectWithShadow(_painter, _zoomHandler); ++ paint( _painter, _zoomHandler, pageNum, true, drawContour ); ++ } ++ ++ pen = tmpPen; ++ m_brush.setBrush( tmpBrush ); ++ _painter->restore(); ++ } ++ ++ _painter->translate( _zoomHandler->zoomItX(ox), _zoomHandler->zoomItY(oy) ); ++ ++ if ( angle != 0 ) ++ rotateObject(_painter,_zoomHandler); ++ paint( _painter, _zoomHandler, pageNum, false, drawContour ); ++ ++ _painter->restore(); ++ ++ KPObject::draw( _painter, _zoomHandler, pageNum, selectionMode, drawContour ); ++} ++ + void KP2DObject::flip( bool horizontal ) { + KPObject::flip( horizontal ); + +Index: kpresenter/kppolygonobject.cc +=================================================================== +--- kpresenter/kppolygonobject.cc (revision 427945) ++++ kpresenter/kppolygonobject.cc (working copy) +@@ -68,38 +68,24 @@ + return dcop; + } + +-bool KPPolygonObject::saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj ) const ++bool KPPolygonObject::saveOasisObjectAttributes( KPOasisSaveContext &sc ) const + { +- //FIXME me wait that it will define into oo spec +- xmlWriter.startElement( "draw:regular-polygon" ); +- xmlWriter.addAttribute( "draw:style-name", KP2DObject::saveOasisBackgroundStyle( xmlWriter, context.mainStyles(), indexObj ) ); +- +- QString listOfPoint; +- int maxX=0; +- int maxY=0; +- KoPointArray::ConstIterator it; +- for ( it = points.begin(); it != points.end(); ++it ) { +- int tmpX = 0; +- int tmpY = 0; +- tmpX = ( int ) ( KoUnit::toMM( ( *it ).x() )*100 ); +- tmpY = ( int ) ( KoUnit::toMM( ( *it ).y() )*100 ); +- if ( !listOfPoint.isEmpty() ) +- listOfPoint += QString( " %1,%2" ).arg( tmpX ).arg( tmpY ); +- else +- listOfPoint = QString( "%1,%2" ).arg( tmpX ).arg( tmpY ); +- maxX = QMAX( maxX, tmpX ); +- maxY = QMAX( maxY, tmpY ); ++ sc.xmlWriter.addAttribute( "draw:corners", cornersValue ); ++ sc.xmlWriter.addAttribute( "draw:concave", checkConcavePolygon ? "true" : "false" ); ++ if ( checkConcavePolygon ) ++ { ++ sc.xmlWriter.addAttribute( "draw:sharpness", QString( "%1%").arg( sharpnessValue ) ); + } +- xmlWriter.addAttribute("draw:points", listOfPoint ); +- xmlWriter.addAttribute("svg:viewBox", QString( "0 0 %1 %2" ).arg( maxX ).arg( maxY ) ); + +- if( !objectName.isEmpty()) +- xmlWriter.addAttribute( "draw:name", objectName ); +- xmlWriter.endElement(); + return true; + } + ++const char * KPPolygonObject::getOasisElementName() const ++{ ++ return "draw:regular-polygon"; ++} + ++ + QDomDocumentFragment KPPolygonObject::save( QDomDocument& doc, double offset ) + { + QDomDocumentFragment fragment = KP2DObject::save( doc, offset ); +@@ -133,26 +119,14 @@ + { + kdDebug()<<"void KPPolygonObject::loadOasis( const QDomElement &element )***********\n"; + KP2DObject::loadOasis( element,context, info ); +- //load point. +- QStringList ptList = QStringList::split(' ', element.attributeNS( KoXmlNS::draw, "points", QString::null)); +- +- QString pt_x, pt_y; +- double tmp_x, tmp_y; +- unsigned int index = 0; +- for (QStringList::Iterator it = ptList.begin(); it != ptList.end(); ++it) ++ cornersValue = element.attributeNS( KoXmlNS::draw, "corners", QString::null ).toInt(); ++ checkConcavePolygon = element.attributeNS( KoXmlNS::draw, "concave", QString::null ) == "true"; ++ sharpnessValue = 0; ++ if ( checkConcavePolygon ) + { +- tmp_x = (*it).section(',',0,0).toInt() / 100; +- tmp_y = (*it).section(',',1,1).toInt() / 100; +- +- pt_x.setNum(tmp_x); +- pt_x+="mm"; +- +- pt_y.setNum(tmp_y); +- pt_y+="mm"; +- +- points.putPoints( index, 1, KoUnit::parseValue(pt_x),KoUnit::parseValue(pt_y) ); +- ++index; ++ sharpnessValue = element.attributeNS( KoXmlNS::draw, "sharpness", QString::null ).remove( '%').toInt(); + } ++ drawPolygon(); + } + + double KPPolygonObject::load( const QDomElement &element ) +@@ -280,7 +254,8 @@ + + void KPPolygonObject::drawPolygon() + { +- KoRect _rect = points.boundingRect(); ++ kdDebug()<<"void KPPolygonObject::drawPolygon()***********\n"; ++ KoRect _rect( 0, 0, ext.width(), ext.height() ); + double angle = 2 * M_PI / cornersValue; + double diameter = static_cast<double>( QMAX( _rect.width(), _rect.height() ) ); + double radius = diameter * 0.5; +Index: kpresenter/kpcubicbeziercurveobject.cc +=================================================================== +--- kpresenter/kpcubicbeziercurveobject.cc (revision 427945) ++++ kpresenter/kpcubicbeziercurveobject.cc (working copy) +@@ -1,6 +1,7 @@ + // -*- Mode: c++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 4; -*- + /* This file is part of the KDE project + Copyright (C) 2001 Toshitaka Fujioka <fujioka@kde.org> ++ Copyright (C) 2005 Thorsten Zachmann <zachmann@kde.org> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public +@@ -60,16 +61,17 @@ + return dcop; + } + +-bool KPCubicBezierCurveObject::saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj ) const ++bool KPCubicBezierCurveObject::saveOasisObjectAttributes( KPOasisSaveContext &sc ) const + { +- kdDebug()<<"bool KPCubicBezierCurveObject::saveOasis( KoXmlWriter &xmlWriter ) not implemented\n"; +- //saveOasisShadowElement( styleobjectauto ); +- //KPPointObject::saveOasisStrokeElement( KoGenStyles& mainStyles ); +-// +- //call saveOasisStrokeElement( KoGenStyle &styleobjectauto ); ++ kdDebug()<<"bool KPCubicBezierCurveObject::saveOasis( KoXmlWriter & xmlWriter ) not implemented\n"; + return true; + } + ++const char * KPCubicBezierCurveObject::getOasisElementName() const ++{ ++ return "draw:custom-shape"; ++} ++ + void KPCubicBezierCurveObject::loadOasis( const QDomElement &element, KoOasisContext & context, KPRLoadingInfo* info ) + { + //todo +Index: kpresenter/kpquadricbeziercurveobject.h +=================================================================== +--- kpresenter/kpquadricbeziercurveobject.h (revision 427945) ++++ kpresenter/kpquadricbeziercurveobject.h (working copy) +@@ -1,6 +1,7 @@ + // -*- Mode: c++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 4; -*- + /* This file is part of the KDE project + Copyright (C) 2001 Toshitaka Fujioka <fujioka@kde.org> ++ Copyright (C) 2005 Thorsten Zachmann <zachmann@kde.org> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public +@@ -43,7 +44,6 @@ + virtual QString getTypeString() const { return i18n("Quadric Bezier Curve"); } + + virtual QDomDocumentFragment save( QDomDocument& doc, double offset ); +- virtual bool saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj ) const; + virtual void loadOasis( const QDomElement &element, KoOasisContext & context, KPRLoadingInfo *info ); + + virtual double load( const QDomElement &element ); +@@ -53,6 +53,9 @@ + bool isClosed()const; + + protected: ++ virtual const char * getOasisElementName() const; ++ virtual bool saveOasisObjectAttributes( KPOasisSaveContext &sc ) const; ++ + virtual void updatePoints( double _fx, double _fy ); + virtual KoPointArray getDrawingPoints() const; + +Index: kpresenter/autoforms/Arrows/ArrowLeftUp.desktop +=================================================================== +--- kpresenter/autoforms/Arrows/ArrowLeftUp.desktop (revision 427945) ++++ kpresenter/autoforms/Arrows/ArrowLeftUp.desktop (working copy) +@@ -3,6 +3,7 @@ + Type=Link + URL=.source/ArrowLeftUp.atf + Name=Arrow Left/Up ++Name[cy]=Saeth i'r Chwith/i Fyny + Name[da]=Pil til venstre/op + Name[de]=Pfeil nach links/oben + Name[el]=Αριστερό/πάνω βέλος +Index: kpresenter/autoforms/Arrows/ArrowRightDown.desktop +=================================================================== +--- kpresenter/autoforms/Arrows/ArrowRightDown.desktop (revision 427945) ++++ kpresenter/autoforms/Arrows/ArrowRightDown.desktop (working copy) +@@ -3,6 +3,7 @@ + Type=Link + URL=.source/ArrowRightDown.atf + Name=Arrow Right/Down ++Name[cy]=Saeth i'r Dde/i Lawr + Name[da]=Pil til højre/ned + Name[de]=Pfeil nach rechts/unten + Name[el]=Δεξί/κάτω βέλος +Index: kpresenter/autoforms/Arrows/ArrowDown.desktop +=================================================================== +--- kpresenter/autoforms/Arrows/ArrowDown.desktop (revision 427945) ++++ kpresenter/autoforms/Arrows/ArrowDown.desktop (working copy) +@@ -3,6 +3,7 @@ + Type=Link + URL=.source/ArrowDown.atf + Name=Arrow Down ++Name[cy]=Saeth i Lawr + Name[da]=Pil ned + Name[de]=Pfeil nach unten + Name[el]=Κάτω βέλος +Index: kpresenter/autoforms/Arrows/ArrowRight.desktop +=================================================================== +--- kpresenter/autoforms/Arrows/ArrowRight.desktop (revision 427945) ++++ kpresenter/autoforms/Arrows/ArrowRight.desktop (working copy) +@@ -3,6 +3,7 @@ + Type=Link + URL=.source/ArrowRight.atf + Name=Arrow Right ++Name[cy]=Saeth i'r Dde + Name[da]=Pil til højre + Name[de]=Pfeil nach rechts + Name[el]=Δεξί βέλος +Index: kpresenter/autoforms/Arrows/ArrowLeftDown.desktop +=================================================================== +--- kpresenter/autoforms/Arrows/ArrowLeftDown.desktop (revision 427945) ++++ kpresenter/autoforms/Arrows/ArrowLeftDown.desktop (working copy) +@@ -3,6 +3,7 @@ + Type=Link + URL=.source/ArrowLeftDown.atf + Name=Arrow Left/Down ++Name[cy]=Saeth i'r Chwith/i Lawr + Name[da]=Pil til venstre/ned + Name[de]=Pfeil nach links/unten + Name[el]=Αριστερό/κάτω βέλος +Index: kpresenter/autoforms/Arrows/ArrowRightUp.desktop +=================================================================== +--- kpresenter/autoforms/Arrows/ArrowRightUp.desktop (revision 427945) ++++ kpresenter/autoforms/Arrows/ArrowRightUp.desktop (working copy) +@@ -3,6 +3,7 @@ + Type=Link + URL=.source/ArrowRightUp.atf + Name=Arrow Right/Up ++Name[cy]=Saeth i'r Chwith/i Fyny + Name[da]=Pil til højre/op + Name[de]=Pfeil nach rechts/oben + Name[el]=Δεξί/πάνω βέλος +Index: kpresenter/autoforms/Arrows/ArrowUp.desktop +=================================================================== +--- kpresenter/autoforms/Arrows/ArrowUp.desktop (revision 427945) ++++ kpresenter/autoforms/Arrows/ArrowUp.desktop (working copy) +@@ -3,6 +3,7 @@ + Type=Link + URL=.source/ArrowUp.atf + Name=Arrow Up ++Name[cy]=Saeth i Fyny + Name[da]=Pil op + Name[de]=Pfeil nach oben + Name[el]=Πάνω βέλος +Index: kpresenter/autoforms/Arrows/ArrowLeft.desktop +=================================================================== +--- kpresenter/autoforms/Arrows/ArrowLeft.desktop (revision 427945) ++++ kpresenter/autoforms/Arrows/ArrowLeft.desktop (working copy) +@@ -3,6 +3,7 @@ + Type=Link + URL=.source/ArrowLeft.atf + Name=Arrow Left ++Name[cy]=Saeth i'r Chwith + Name[da]=Pil til venstre + Name[de]=Pfeil nach links + Name[el]=Αριστερό βέλος +Index: kpresenter/kpfreehandobject.cc +=================================================================== +--- kpresenter/kpfreehandobject.cc (revision 427945) ++++ kpresenter/kpfreehandobject.cc (working copy) +@@ -1,6 +1,7 @@ + // -*- Mode: c++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 4; -*- + /* This file is part of the KDE project + Copyright (C) 2001 Toshitaka Fujioka <fujioka@kde.org> ++ Copyright (C) 2005 Thorsten Zachmann <zachmann@kde.org> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public +@@ -54,21 +55,26 @@ + return dcop; + } + +-bool KPFreehandObject::saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj ) const ++bool KPFreehandObject::saveOasisObjectAttributes( KPOasisSaveContext &sc ) const + { +- kdDebug()<<"bool KPFreehandObject::saveOasis( KoXmlWriter &xmlWriter ) not implemented\n"; +- xmlWriter.startElement( "draw:path" ); +- //FIXME !!!!!!!!!!!!!!!!!!!!! +-//xmlWriter.addAttribute( "draw:style-name", KP2DObject::saveOasisBackgroundStyle( xmlWriter, mainStyles ) ); +-//call saveOasisStrokeElement( KoGenStyle &styleobjectauto ); +- if( !objectName.isEmpty()) +- xmlWriter.addAttribute( "draw:name", objectName ); +- //save path I don't know how to do. +- //add "svg:viewBox" add "svg:d" +- xmlWriter.endElement(); ++ kdDebug()<<"bool KPFreehandObject::saveOasisObjectAttributes( KPOasisSaveContext &sc ) not implemented\n"; + return true; + } + ++const char * KPFreehandObject::getOasisElementName() const ++{ ++ return "draw:path"; ++} ++ ++void KPFreehandObject::loadOasis( const QDomElement &element, KoOasisContext & context, KPRLoadingInfo* info ) ++{ ++ //todo ++ //we use draw:path ++ ++ //load marker ++ loadOasisMarker( context ); ++} ++ + QDomDocumentFragment KPFreehandObject::save( QDomDocument& doc,double offset ) + { + return KPPointObject::save( doc, offset ); +Index: kpresenter/kppieobject.cc +=================================================================== +--- kpresenter/kppieobject.cc (revision 427945) ++++ kpresenter/kppieobject.cc (working copy) +@@ -1,5 +1,6 @@ + /* This file is part of the KDE project + Copyright (C) 1998, 1999 Reginald Stadlbauer <reggie@kde.org> ++ Copyright (C) 2005 Thorsten Zachmann <zachmann@kde.org> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public +@@ -86,40 +87,38 @@ + return fragment; + } + +-bool KPPieObject::saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj ) const ++bool KPPieObject::saveOasisObjectAttributes( KPOasisSaveContext &sc ) const + { +- xmlWriter.startElement( ( ext.width() == ext.height() ) ? "draw:circle" : "draw:ellipse" ); +- xmlWriter.addAttribute( "draw:style-name", KP2DObject::saveOasisBackgroundStyle( xmlWriter, context.mainStyles(),indexObj ) ); +- +- if( !objectName.isEmpty()) +- xmlWriter.addAttribute( "draw:name", objectName ); + switch( pieType ) + { +- case PT_PIE: +- xmlWriter.addAttribute( "draw:kind", "section" ); +- break; +- case PT_CHORD: +- xmlWriter.addAttribute( "draw:kind", "cut" ); +- break; +- case PT_ARC: +- xmlWriter.addAttribute( "draw:kind", "arc" ); +- break; +- default: +- kdDebug()<<" type of pie not supported\n"; ++ case PT_PIE: ++ sc.xmlWriter.addAttribute( "draw:kind", "section" ); ++ break; ++ case PT_CHORD: ++ sc.xmlWriter.addAttribute( "draw:kind", "cut" ); ++ break; ++ case PT_ARC: ++ sc.xmlWriter.addAttribute( "draw:kind", "arc" ); ++ break; ++ default: ++ kdDebug() << " type of pie not supported" << endl; + } +- int startangle = 45; +- if ( p_angle != 0.0 ) +- startangle = ( ( int )p_angle )/16; +- xmlWriter.addAttribute( "draw:start-angle", startangle ); +- int endangle = endangle = ( ( int ) p_len/16 )+startangle; +- xmlWriter.addAttribute( "draw:end-angle", endangle ); + +- //we don't have a simple object +- xmlWriter.endElement(); ++ int startangle = ( (int)p_angle / 16 ); ++ sc.xmlWriter.addAttribute( "draw:start-angle", startangle ); ++ ++ int endangle = ( (int) p_len / 16 ) + startangle; ++ sc.xmlWriter.addAttribute( "draw:end-angle", endangle ); ++ + return true; + } + ++const char * KPPieObject::getOasisElementName() const ++{ ++ return ext.width() == ext.height() ? "draw:circle" : "draw:ellipse"; ++} + ++ + void KPPieObject::loadOasis(const QDomElement &element, KoOasisContext & context, KPRLoadingInfo *info) + { + kdDebug()<<"void KPPieObject::loadOasis(const QDomElement &element) ***************\n"; +Index: kpresenter/kpobject.h +=================================================================== +--- kpresenter/kpobject.h (revision 427945) ++++ kpresenter/kpobject.h (working copy) +@@ -136,9 +136,25 @@ + virtual double load(const QDomElement &element); + virtual void loadOasis(const QDomElement &element, KoOasisContext & context, KPRLoadingInfo *info); + +- virtual bool saveOasis( KoXmlWriter &xmlWriter, KoSavingContext &context, int indexObj ) const =0; ++ struct KPOasisSaveContext ++ { ++ KPOasisSaveContext( KoXmlWriter &_xmlWriter, KoSavingContext &_context, ++ int &_indexObj, int &_partIndexObj, bool _onMaster ) ++ : xmlWriter( _xmlWriter ) ++ , context( _context ) ++ , indexObj( _indexObj ) ++ , partIndexObj( _partIndexObj ) ++ , onMaster( _onMaster ) {}; ++ ++ KoXmlWriter &xmlWriter; ++ KoSavingContext &context; ++ int &indexObj; ++ int &partIndexObj; ++ bool onMaster; ++ }; + +- void saveOasisPosObject( KoXmlWriter &xmlWriter, int indexObj ) const; ++ virtual bool saveOasisObject( KPOasisSaveContext &sc ) const; ++ + //return true if we have a animation into object + bool saveOasisObjectStyleShowAnimation( KoXmlWriter &animation, int objectId ); + bool saveOasisObjectStyleHideAnimation( KoXmlWriter &animation, int objectId ); +@@ -297,8 +313,17 @@ + + void saveOasisObjectProtectStyle( KoGenStyle &styleobjectauto ) const; + void saveOasisShadowElement( KoGenStyle &styleobjectauto ) const; +- virtual void saveOasisPictureElement( KoGenStyle& /*styleobjectauto*/ ) const {}; + ++ QString getStyle( KPOasisSaveContext &sc ) const; ++ virtual void fillStyle( KoGenStyle& styleObjectAuto, KoGenStyles& mainStyles ) const; ++ /** ++ * Get the element name for saving the object ++ */ ++ virtual const char * getOasisElementName() const = 0; ++ //virtual bool saveOasisObjectAttributes( KPOasisSaveContext &sc ) const = 0; ++ virtual bool saveOasisObjectAttributes( KPOasisSaveContext &sc ) const; ++ virtual void saveOasisPosObject( KoXmlWriter &xmlWriter, int indexObj ) const; ++ + float angle; + KoPoint orig; + KoSize ext; +@@ -378,6 +403,19 @@ + + protected: + /** ++ * Helper method for saving draw:points. The svg:viewBox is also saved. ++ */ ++ static bool saveOasisDrawPoints( const KoPointArray &points, KPOasisSaveContext &sc ); ++ ++ /** ++ * Helper method for loading draw:points. The svg:viewBox is taken into account. ++ */ ++ bool loadOasisDrawPoints( KoPointArray &points, const QDomElement &element, ++ KoOasisContext & context, KPRLoadingInfo *info ); ++ ++ virtual void fillStyle( KoGenStyle& styleObjectAuto, KoGenStyles& mainStyles ) const; ++ ++ /** + * @ref save() only saves if the pen is different from the default pen. + * The default pen can vary depending on the subclass of KPShadowObject + * (e.g. it's a black solidline for lines and rects, but it's NoPen +@@ -445,14 +483,16 @@ + virtual QDomDocumentFragment save( QDomDocument& doc, double offset ); + virtual double load(const QDomElement &element); + virtual void loadOasis(const QDomElement &element, KoOasisContext & context, KPRLoadingInfo *info); ++ virtual void draw( QPainter *_painter, KoZoomHandler*_zoomHandler, ++ int pageNum, SelectionMode selectionMode, bool drawContour = FALSE ); + + virtual void flip(bool horizontal ); + + protected: + QString saveOasisGradientStyle( KoGenStyles& mainStyles ) const; +- QString saveOasisBackgroundStyle( KoXmlWriter &xmlWriter, KoGenStyles& mainStyles, int indexObj ) const; + +- virtual void saveOasisMarginElement( KoGenStyle& /*styleobjectauto*/ ) const { /* nothing just used into kptextobject*/}; ++ virtual void fillStyle( KoGenStyle& styleObjectAuto, KoGenStyles& mainStyles ) const; ++ void saveOasisBackgroundElement( KoGenStyle& styleObjectAuto, KoGenStyles& mainStyles ) const; + + KPrBrush m_brush; + KPGradient *gradient; +Index: kpresenter/kptextobject.h +=================================================================== +--- kpresenter/kptextobject.h (revision 427945) ++++ kpresenter/kptextobject.h (working copy) +@@ -1,6 +1,7 @@ + // -*- Mode: c++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 4; -*- + /* This file is part of the KDE project + Copyright (C) 1998, 1999 Reginald Stadlbauer <reggie@kde.org> ++ Copyright (C) 2005 Thorsten Zachmann <zachmann@kde.org> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public +@@ -81,7 +82,6 @@ + virtual QDomDocumentFragment save( QDomDocument& doc, double offset ); + virtual double load(const QDomElement &element); + virtual void loadOasis(const QDomElement &element, KoOasisContext& context, KPRLoadingInfo *info); +- virtual bool saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj ) const; + virtual void saveOasisMarginElement( KoGenStyle &styleobjectauto ) const; + + virtual void paint( QPainter *_painter, KoZoomHandler*_zoomHandler, +@@ -180,9 +180,14 @@ + void slotAfterFormatting( int, KoTextParag*, bool* ); + void slotParagraphDeleted(KoTextParag*_parag); + protected: ++ virtual const char * getOasisElementName() const; ++ virtual bool saveOasisObjectAttributes( KPOasisSaveContext &sc ) const; ++ + virtual QDomElement saveKTextObject( QDomDocument& doc ); + QDomElement saveHelper(const QString &tmpText,KoTextFormat*lastFormat ,QDomDocument &doc); + ++ virtual void fillStyle( KoGenStyle& styleObjectAuto, KoGenStyles& mainStyles ) const; ++ + virtual void loadKTextObject( const QDomElement &e ); + void drawText( QPainter* _painter, KoZoomHandler* zoomHandler, bool onlyChanged, KoTextCursor* cursor, bool resetChanged ); + void drawParags( QPainter *p, KoZoomHandler* zoomHandler, const QColorGroup& cg, int from, int to ); +Index: kpresenter/kppolygonobject.h +=================================================================== +--- kpresenter/kppolygonobject.h (revision 427945) ++++ kpresenter/kppolygonobject.h (working copy) +@@ -59,7 +59,6 @@ + int getSharpnessValue() const { return sharpnessValue; } + + virtual QDomDocumentFragment save( QDomDocument& doc, double offset ); +- virtual bool saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj ) const; + + virtual double load( const QDomElement &element ); + virtual void loadOasis( const QDomElement &element, KoOasisContext & context, KPRLoadingInfo *info ); +@@ -69,6 +68,9 @@ + virtual KoPoint getRealOrig() const; + + protected: ++ virtual const char * getOasisElementName() const; ++ virtual bool saveOasisObjectAttributes( KPOasisSaveContext &sc ) const; ++ + virtual void paint( QPainter *_painter,KoZoomHandler*_zoomHandler, + int /* pageNum */, bool drawingShadow, bool drawContour ); + +Index: kpresenter/kpgroupobject.cc +=================================================================== +--- kpresenter/kpgroupobject.cc (revision 427945) ++++ kpresenter/kpgroupobject.cc (working copy) +@@ -1,6 +1,7 @@ + // -*- Mode: c++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 4; -*- + /* This file is part of the KDE project + Copyright (C) 1998, 1999 Reginald Stadlbauer <reggie@kde.org> ++ Copyright (C) 2005 Thorsten Zachmann <zachmann@kde.org> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public +@@ -132,24 +133,23 @@ + } + + +-bool KPGroupObject::saveOasis(KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj) const ++bool KPGroupObject::saveOasisObjectAttributes( KPOasisSaveContext &sc ) const + { +- xmlWriter.startElement( "draw:g" ); +- + QPtrListIterator<KPObject> it( objects ); + for ( ; it.current() ; ++it ) + { +-#if 0 +- if ( it.current()->getType() == OT_PART ) +- continue; +-#endif +- it.current()->saveOasis( xmlWriter, context, indexObj ); ++ //TODO what to do with parts? ++ it.current()->saveOasisObject( sc ); + } +- xmlWriter.endElement(); + return true; + } + ++const char * KPGroupObject::getOasisElementName() const ++{ ++ return "draw:g"; ++} + ++ + void KPGroupObject::loadOasisGroupObject( KPresenterDoc *_doc, KPrPage * newpage, QDomNode &element, KoOasisContext & context, KPRLoadingInfo *info) + { + //KPObject::loadOasis( element, context, info ); +Index: kpresenter/kprectobject.cc +=================================================================== +--- kpresenter/kprectobject.cc (revision 427945) ++++ kpresenter/kprectobject.cc (working copy) +@@ -76,18 +76,19 @@ + return fragment; + } + +-bool KPRectObject::saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj ) const ++bool KPRectObject::saveOasisObjectAttributes( KPOasisSaveContext &sc ) const + { +- xmlWriter.startElement( "draw:rect" ); +- xmlWriter.addAttribute( "draw:style-name", KP2DObject::saveOasisBackgroundStyle( xmlWriter, context.mainStyles(), indexObj ) ); +- +- if( !objectName.isEmpty()) +- xmlWriter.addAttribute( "draw:name", objectName ); +- xmlWriter.endElement(); ++ // TODO corner-radius + return true; + } + + ++const char * KPRectObject::getOasisElementName() const ++{ ++ return "draw:rect"; ++} ++ ++ + void KPRectObject::loadOasis(const QDomElement &element, KoOasisContext&context, KPRLoadingInfo *info) + { + KP2DObject::loadOasis(element, context, info); +Index: kpresenter/kpellipseobject.cc +=================================================================== +--- kpresenter/kpellipseobject.cc (revision 427945) ++++ kpresenter/kpellipseobject.cc (working copy) +@@ -116,14 +116,14 @@ + return size; + } + +-bool KPEllipseObject::saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj ) const ++bool KPEllipseObject::saveOasisObjectAttributes( KPOasisSaveContext &sc ) const + { +- xmlWriter.startElement( ( ext.width() == ext.height() ) ? "draw:circle" : "draw:ellipse" ); +- xmlWriter.addAttribute( "draw:style-name", KP2DObject::saveOasisBackgroundStyle( xmlWriter, context.mainStyles(), indexObj ) ); +- +- if( !objectName.isEmpty()) +- xmlWriter.addAttribute( "draw:name", objectName ); +- xmlWriter.endElement(); ++ // nothing to do + return true; + } + ++const char * KPEllipseObject::getOasisElementName() const ++{ ++ return ext.width() == ext.height() ? "draw:circle" : "draw:ellipse"; ++} ++ +Index: kpresenter/kppolylineobject.h +=================================================================== +--- kpresenter/kppolylineobject.h (revision 427945) ++++ kpresenter/kppolylineobject.h (working copy) +@@ -47,8 +47,10 @@ + virtual QDomDocumentFragment save( QDomDocument& doc, double offset ); + virtual double load( const QDomElement &element ); + virtual void loadOasis(const QDomElement &element, KoOasisContext & context, KPRLoadingInfo *info); +- virtual bool saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj ) const; + ++protected: ++ virtual const char * getOasisElementName() const; ++ virtual bool saveOasisObjectAttributes( KPOasisSaveContext &sc ) const; + }; + + #endif +Index: kpresenter/kpclosedlineobject.cc +=================================================================== +--- kpresenter/kpclosedlineobject.cc (revision 427945) ++++ kpresenter/kpclosedlineobject.cc (working copy) +@@ -90,36 +90,18 @@ + return fragment; + } + +-bool KPClosedLineObject::saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj ) const ++bool KPClosedLineObject::saveOasisObjectAttributes( KPOasisSaveContext &sc ) const + { +- xmlWriter.startElement( "draw:polygon" ); +- xmlWriter.addAttribute( "draw:style-name", KP2DObject::saveOasisBackgroundStyle( xmlWriter, context.mainStyles(), indexObj ) ); +- +- QString listOfPoint; +- int maxX=0; +- int maxY=0; +- KoPointArray::ConstIterator it; +- for ( it = points.begin(); it != points.end(); ++it ) { +- int tmpX = 0; +- int tmpY = 0; +- tmpX = ( int ) ( KoUnit::toMM( ( *it ).x() )*100 ); +- tmpY = ( int ) ( KoUnit::toMM( ( *it ).y() )*100 ); +- if ( !listOfPoint.isEmpty() ) +- listOfPoint += QString( " %1,%2" ).arg( tmpX ).arg( tmpY ); +- else +- listOfPoint = QString( "%1,%2" ).arg( tmpX ).arg( tmpY ); +- maxX = QMAX( maxX, tmpX ); +- maxY = QMAX( maxY, tmpY ); +- } +- xmlWriter.addAttribute("draw:points", listOfPoint ); +- xmlWriter.addAttribute("svg:viewBox", QString( "0 0 %1 %2" ).arg( maxX ).arg( maxY ) ); +- +- if( !objectName.isEmpty()) +- xmlWriter.addAttribute( "draw:name", objectName ); +- xmlWriter.endElement(); ++ KPShadowObject::saveOasisDrawPoints( points, sc ); + return true; + } + ++const char * KPClosedLineObject::getOasisElementName() const ++{ ++ return "draw:polygon"; ++} ++ ++ + double KPClosedLineObject::load( const QDomElement &element ) + { + double offset = KP2DObject::load( element ); +@@ -269,26 +251,7 @@ + { + kdDebug()<<"void KPClosedLineObject::loadOasis( const QDomElement &element )***********\n"; + KP2DObject::loadOasis( element,context, info ); +- //load point. +- QStringList ptList = QStringList::split(' ', element.attributeNS( KoXmlNS::draw, "points", QString::null)); +- +- QString pt_x, pt_y; +- double tmp_x, tmp_y; +- unsigned int index = 0; +- for (QStringList::Iterator it = ptList.begin(); it != ptList.end(); ++it) +- { +- tmp_x = (*it).section(',',0,0).toInt() / 100; +- tmp_y = (*it).section(',',1,1).toInt() / 100; +- +- pt_x.setNum(tmp_x); +- pt_x+="mm"; +- +- pt_y.setNum(tmp_y); +- pt_y+="mm"; +- +- points.putPoints( index, 1, KoUnit::parseValue(pt_x),KoUnit::parseValue(pt_y) ); +- ++index; +- } ++ KPShadowObject::loadOasisDrawPoints( points, element, context, info ); + } + + KoSize KPClosedLineObject::getRealSize() const { +Index: kpresenter/kpclosedlineobject.h +=================================================================== +--- kpresenter/kpclosedlineobject.h (revision 427945) ++++ kpresenter/kpclosedlineobject.h (working copy) +@@ -53,13 +53,14 @@ + virtual QDomDocumentFragment save( QDomDocument& doc, double offset ); + virtual double load( const QDomElement &element ); + virtual void loadOasis( const QDomElement &element, KoOasisContext & context, KPRLoadingInfo *info ); +- virtual bool saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj ) const; + + virtual void flip(bool horizontal ); + virtual KoSize getRealSize() const; + virtual KoPoint getRealOrig() const; + + protected: ++ virtual const char * getOasisElementName() const; ++ virtual bool saveOasisObjectAttributes( KPOasisSaveContext &sc ) const; + virtual void paint( QPainter *_painter,KoZoomHandler*_zoomHandler, + int /* pageNum */, bool drawingShadow, bool drawContour ); + +Index: kpresenter/kpresenter_doc.cc +=================================================================== +--- kpresenter/kpresenter_doc.cc (revision 427945) ++++ kpresenter/kpresenter_doc.cc (working copy) +@@ -1770,33 +1770,35 @@ + else + newpage->appendObject(kppixmapobject); + } +- +- QDomNode object = KoDom::namedItemNS( o, KoXmlNS::draw, "object" ); +- kdDebug()<<" object:"<<object.isNull()<<endl; +- if ( !object.isNull() ) +- { +- fillStyleStack( o, context ); +- KPresenterChild *ch = new KPresenterChild( this ); +- QRect r; +- KPPartObject *kppartobject = new KPPartObject( ch ); +- kppartobject->loadOasis( o, context, m_loadingInfo ); +- r = ch->geometry(); +- if ( groupObject ) +- groupObject->addObjects( kppartobject ); +- else +- newpage->appendObject(kppartobject); +- insertChild( ch ); +- kppartobject->setOrig( r.x(), r.y() ); +- kppartobject->setSize( r.width(), r.height() ); +- } + else + { +- KPTextObject *kptextobject = new KPTextObject( this ); +- kptextobject->loadOasis(o, context, m_loadingInfo); +- if ( groupObject ) +- groupObject->addObjects( kptextobject ); ++ QDomNode object = KoDom::namedItemNS( o, KoXmlNS::draw, "object" ); ++ kdDebug()<<" object:"<<object.isNull()<<endl; ++ if ( !object.isNull() ) ++ { ++ fillStyleStack( o, context ); ++ KPresenterChild *ch = new KPresenterChild( this ); ++ QRect r; ++ KPPartObject *kppartobject = new KPPartObject( ch ); ++ kppartobject->loadOasis( o, context, m_loadingInfo ); ++ r = ch->geometry(); ++ if ( groupObject ) ++ groupObject->addObjects( kppartobject ); ++ else ++ newpage->appendObject(kppartobject); ++ insertChild( ch ); ++ kppartobject->setOrig( r.x(), r.y() ); ++ kppartobject->setSize( r.width(), r.height() ); ++ } + else +- newpage->appendObject(kptextobject); ++ { ++ KPTextObject *kptextobject = new KPTextObject( this ); ++ kptextobject->loadOasis(o, context, m_loadingInfo); ++ if ( groupObject ) ++ groupObject->addObjects( kptextobject ); ++ else ++ newpage->appendObject(kptextobject); ++ } + } + } + else if ( name == "rect" && isDrawNS) // rectangle +@@ -1836,7 +1838,10 @@ + fillStyleStack( o, context ); + KPLineObject *kplineobject = new KPLineObject(); + kplineobject->loadOasis(o, context, m_loadingInfo); +- newpage->appendObject(kplineobject); ++ if ( groupObject ) ++ groupObject->addObjects( kplineobject ); ++ else ++ newpage->appendObject( kplineobject ); + } + else if (name=="polyline" && isDrawNS) { // polyline + fillStyleStack( o, context ); +Index: kpresenter/kppixmapobject.cc +=================================================================== +--- kpresenter/kppixmapobject.cc (revision 427945) ++++ kpresenter/kppixmapobject.cc (working copy) +@@ -2,6 +2,7 @@ + + /* This file is part of the KDE project + Copyright (C) 1998, 1999 Reginald Stadlbauer <reggie@kde.org> ++ Copyright (C) 2005 Thorsten Zachmann <zachmann@kde.org> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public +@@ -101,7 +102,7 @@ + return QString::number( val )+"%"; + } + +-void KPPixmapObject::saveOasisPictureElement( KoGenStyle &styleobjectauto ) ++void KPPixmapObject::saveOasisPictureElement( KoGenStyle &styleobjectauto ) const + { + + if ( bright != 0 ) +@@ -201,26 +202,24 @@ + } + } + +- +-bool KPPixmapObject::saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj ) const ++bool KPPixmapObject::saveOasisObjectAttributes( KPOasisSaveContext &sc ) const + { +- xmlWriter.startElement( "draw:frame" ); +- xmlWriter.addAttribute( "draw:style-name", KP2DObject::saveOasisBackgroundStyle( xmlWriter, context.mainStyles(),indexObj ) ); +- if( !objectName.isEmpty()) +- xmlWriter.addAttribute( "draw:name", objectName ); ++ sc.xmlWriter.startElement( "draw:image" ); ++ sc.xmlWriter.addAttribute( "xlink:type", "simple" ); ++ sc.xmlWriter.addAttribute( "xlink:show", "embed" ); ++ sc.xmlWriter.addAttribute( "xlink:actuate", "onLoad" ); ++ sc.xmlWriter.addAttribute( "xlink:href", imageCollection->getOasisFileName( image ) ); ++ sc.xmlWriter.endElement(); + +- xmlWriter.startElement( "draw:image" ); +- xmlWriter.addAttribute( "xlink:type", "simple" ); +- xmlWriter.addAttribute( "xlink:show", "embed" ); +- xmlWriter.addAttribute( "xlink:actuate", "onLoad" ); +- xmlWriter.addAttribute( "xlink:href", imageCollection->getOasisFileName(image) ); +- xmlWriter.endElement(); +- +- xmlWriter.endElement(); + return true; + } + ++const char * KPPixmapObject::getOasisElementName() const ++{ ++ return "draw:frame"; ++} + ++ + // Deprecated, same as KPPixmapObject::loadPicture + void KPPixmapObject::loadImage( const QString & fileName ) + { +@@ -339,6 +338,12 @@ + + } + ++void KPPixmapObject::fillStyle( KoGenStyle& styleObjectAuto, KoGenStyles& mainStyles ) const ++{ ++ KP2DObject::fillStyle( styleObjectAuto, mainStyles ); ++ saveOasisPictureElement( styleObjectAuto ); ++} ++ + void KPPixmapObject::loadOasis(const QDomElement &element, KoOasisContext & context, KPRLoadingInfo *info) + { + //load it into kpresenter_doc +Index: kpresenter/kpautoformobject.h +=================================================================== +--- kpresenter/kpautoformobject.h (revision 427945) ++++ kpresenter/kpautoformobject.h (working copy) +@@ -63,10 +63,12 @@ + { return lineEnd; } + + virtual QDomDocumentFragment save( QDomDocument& doc,double offset ); +- virtual bool saveOasis( KoXmlWriter & xmlWriter, KoSavingContext& context, int indexObj ) const; + + virtual double load(const QDomElement &element); + protected: ++ virtual const char * getOasisElementName() const; ++ virtual bool saveOasisObjectAttributes( KPOasisSaveContext &sc ) const; ++ + virtual void paint( QPainter *_painter, KoZoomHandler *_zoomHandler, + int /* pageNum */, bool drawingShadow, bool drawContour = FALSE ); + +Index: kpresenter/kppartobject.cc +=================================================================== +--- kpresenter/kppartobject.cc (revision 427945) ++++ kpresenter/kppartobject.cc (working copy) +@@ -63,39 +63,25 @@ + zh->zoomItY( getOrig().y() + getSize().height() / 2 ) ) ); + } + +-bool KPPartObject::saveOasisPart( KoXmlWriter &xmlWriter, KoStore *store, KoSavingContext& context, int indexObj, int partIndexObj, KoXmlWriter* manifestWriter ) const ++bool KPPartObject::saveOasisObjectAttributes( KPOasisSaveContext &sc ) const + { +- kdDebug() << "KPPartObject::saveOasisPart " << partIndexObj << endl; +- xmlWriter.startElement( "draw:frame" ); +- // saveOasisBackgroundStyle also saves draw:id, x,y,width and height.... +- xmlWriter.addAttribute( "draw:style-name", KP2DObject::saveOasisBackgroundStyle( xmlWriter, context.mainStyles(),indexObj ) ); +- if( !objectName.isEmpty()) +- xmlWriter.addAttribute( "draw:name", objectName ); ++ kdDebug() << "KPPartObject::saveOasisPart " << sc.partIndexObj << endl; + +-#if 0 // geometry was already saved, this isn't needed +- // geometry is no zoom value ! +- QRect _rect = child->geometry(); +- KoZoomHandler* zh = child->parent()->zoomHandler(); +- double tmpX = zh->unzoomItX( _rect.x() ); +- double tmpY = zh->unzoomItY( _rect.y() ); +- double tmpWidth = zh->unzoomItX( _rect.width() ); +- double tmpHeight = zh->unzoomItY( _rect.height() ); +- //child->setGeometry( QRect( tmpX, tmpY, tmpWidth, tmpHeight ) ); // ## why? +- xmlWriter.addAttributePt( "svg:width", tmpWidth ); +- xmlWriter.addAttributePt( "svg:height", tmpHeight ); +- xmlWriter.addAttributePt( "svg:x", tmpX ); +- xmlWriter.addAttributePt( "svg:y", tmpY ); +-#endif ++ sc.xmlWriter.startElement( "draw:object" ); ++ const QString name = QString( "Object_%1" ).arg( sc.partIndexObj + 1 ); ++ ++sc.partIndexObj; ++ child->saveOasisAttributes( sc.xmlWriter, name ); + +- xmlWriter.startElement( "draw:object" ); +- const QString name = QString( "Object_%1" ).arg( partIndexObj+1 ); +- child->saveOasisAttributes( xmlWriter, name ); +- +- xmlWriter.endElement(); // draw:object +- xmlWriter.endElement(); // draw:frame ++ sc.xmlWriter.endElement(); + return true; + } + ++const char * KPPartObject::getOasisElementName() const ++{ ++ return "draw:frame"; ++} ++ ++ + void KPPartObject::loadOasis(const QDomElement &element, KoOasisContext&context, KPRLoadingInfo *info) + { + kdDebug()<<"void KPPartObject::loadOasis(const QDomElement &element)******************\n"; +Index: kpresenter/kprpage.cc +=================================================================== +--- kpresenter/kprpage.cc (revision 427945) ++++ kpresenter/kprpage.cc (working copy) +@@ -131,6 +131,8 @@ + + void KPrPage::saveOasisObject( KoStore *store, KoXmlWriter &xmlWriter, KoSavingContext& context, int & indexObj, int &partIndexObj, KoXmlWriter* manifestWriter, bool stickyObj ) const + { ++ KPObject::KPOasisSaveContext sc( xmlWriter, context, indexObj, partIndexObj, isMasterPage() ); ++ + KTempFile animationTmpFile; + animationTmpFile.setAutoDelete( true ); + QFile* tmpFile = animationTmpFile.file(); +@@ -139,17 +141,10 @@ + QPtrListIterator<KPObject> it( m_objectList ); + for ( ; it.current() ; ++it ) + { +- if ( it.current()->getType() == OT_PART ) +- { +- static_cast<KPPartObject*>( it.current() )->saveOasisPart( xmlWriter, store, context, indexObj, partIndexObj, manifestWriter); +- ++partIndexObj; +- } +- else +- { +- if ( it.current()== m_doc->header() || it.current()== m_doc->footer()) +- continue; +- it.current()->saveOasis( xmlWriter, context, indexObj ); +- } ++ if ( it.current()== m_doc->header() || it.current()== m_doc->footer()) ++ continue; ++ it.current()->saveOasisObject( sc ); ++ + if ( !stickyObj && it.current()->haveAnimation() ) + { + kdDebug()<<" it.current()->haveAnimation() \n"; +Index: kpresenter/kptextobject.cc +=================================================================== +--- kpresenter/kptextobject.cc (revision 427945) ++++ kpresenter/kptextobject.cc (working copy) +@@ -212,22 +212,19 @@ + return fragment; + } + +-bool KPTextObject::saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj ) const ++bool KPTextObject::saveOasisObjectAttributes( KPOasisSaveContext &sc ) const + { +- xmlWriter.startElement( "draw:frame" ); +- // #### This should use KoGenStyle to share the style +- xmlWriter.addAttribute( "draw:style-name", KP2DObject::saveOasisBackgroundStyle( xmlWriter, context.mainStyles(), indexObj ) ); +- if( !objectName.isEmpty()) +- xmlWriter.addAttribute( "draw:name", objectName ); +- +- xmlWriter.startElement( "draw:text-box" ); +- m_textobj->saveOasisContent( xmlWriter, context ); +- xmlWriter.endElement(); +- +- xmlWriter.endElement(); ++ sc.xmlWriter.startElement( "draw:text-box" ); ++ m_textobj->saveOasisContent( sc.xmlWriter, sc.context ); ++ sc.xmlWriter.endElement(); + return true; + } + ++const char * KPTextObject::getOasisElementName() const ++{ ++ return "draw:frame"; ++} ++ + void KPTextObject::saveOasisMarginElement( KoGenStyle &styleobjectauto ) const + { + kdDebug()<<"void KPTextObject::saveOasisMarginElement( KoGenStyle &styleobjectauto )\n"; +@@ -673,6 +670,12 @@ + return element; + } + ++void KPTextObject::fillStyle( KoGenStyle& styleObjectAuto, KoGenStyles& mainStyles ) const ++{ ++ KP2DObject::fillStyle( styleObjectAuto, mainStyles ); ++ saveOasisMarginElement( styleObjectAuto ); ++} ++ + void KPTextObject::loadKTextObject( const QDomElement &elem ) + { + QDomElement e = elem.firstChild().toElement(); +Index: kpresenter/kplineobject.cc +=================================================================== +--- kpresenter/kplineobject.cc (revision 427945) ++++ kpresenter/kplineobject.cc (working copy) +@@ -1,6 +1,7 @@ + // -*- Mode: c++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 4; -*- + /* This file is part of the KDE project + Copyright (C) 1998, 1999 Reginald Stadlbauer <reggie@kde.org> ++ Copyright (C) 2005 Thorsten Zachmann <zachmann@kde.org> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public +@@ -64,21 +65,23 @@ + } + + +-QString KPLineObject::saveOasisStrokeElement( KoGenStyles& mainStyles ) const ++void KPLineObject::fillStyle( KoGenStyle& styleObjectAuto, KoGenStyles& mainStyles ) const + { +- KoGenStyle styleobjectauto( KoGenStyle::STYLE_GRAPHICAUTO, "graphic" ); +- saveOasisMarkerElement( mainStyles, styleobjectauto ); +- KPShadowObject::saveOasisStrokeElement( mainStyles, styleobjectauto ); +- saveOasisShadowElement( styleobjectauto ); +- saveOasisObjectProtectStyle( styleobjectauto ); +- return mainStyles.lookup( styleobjectauto, "gr" ); ++ KPShadowObject::fillStyle( styleObjectAuto, mainStyles ); ++ saveOasisMarkerElement( mainStyles, styleObjectAuto ); + } + +-bool KPLineObject::saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj ) const ++ ++bool KPLineObject::saveOasisObjectAttributes( KPOasisSaveContext &sc ) const + { +- xmlWriter.startElement( "draw:line" ); +- xmlWriter.addAttribute( "draw:style-name", saveOasisStrokeElement( context.mainStyles() ) ); ++ // nothing to do ++ return true; ++} + ++void KPLineObject::saveOasisPosObject( KoXmlWriter &xmlWriter, int indexObj ) const ++{ ++ xmlWriter.addAttribute( "draw:id", "object" + QString::number( indexObj ) ); ++ + float x1 = orig.x(); + float y1 = orig.y(); + float x2 = x1 + ext.width(); +@@ -102,17 +105,24 @@ + break; + } + ++ //save all into pt ++ xmlWriter.addAttributePt( "svg:x1", x1 ); + xmlWriter.addAttributePt( "svg:y1", y1 ); ++ xmlWriter.addAttributePt( "svg:x2", x2 ); + xmlWriter.addAttributePt( "svg:y2", y2 ); +- xmlWriter.addAttributePt( "svg:x1", x1 ); +- xmlWriter.addAttributePt( "svg:x2", x2 ); + +- if( !objectName.isEmpty()) +- xmlWriter.addAttribute( "draw:name", objectName ); +- xmlWriter.endElement(); +- return true; ++ if ( kAbs( angle ) > 1E-6 ) ++ { ++ double value = -1 * ( ( double )angle* M_PI )/180.0; ++ QString str=QString( "rotate (%1)" ).arg( value ); ++ xmlWriter.addAttribute( "draw:transform", str ); ++ } + } + ++const char * KPLineObject::getOasisElementName() const ++{ ++ return "draw:line"; ++} + + QDomDocumentFragment KPLineObject::save( QDomDocument& doc, double offset ) + { +@@ -163,10 +173,10 @@ + + kdDebug()<<"KPLineObject::loadOasis(const QDomElement &element) : real position x :"<<orig.x()<<" y "<<orig.y()<< " width :"<<ext.width()<<" height :"<<ext.height()<<endl; + +- QString attr = (x1 < x2) ? "marker-start" : "marker-end"; ++ QString attr = (x1 <= x2) ? "marker-start" : "marker-end"; + loadOasisMarkerElement( context, attr, lineBegin ); + +- attr = (x1 < x2) ? "marker-end" : "marker-start"; ++ attr = (x1 <= x2) ? "marker-end" : "marker-start"; + loadOasisMarkerElement( context, attr, lineEnd ); + } + +Index: kpresenter/kppolylineobject.cc +=================================================================== +--- kpresenter/kppolylineobject.cc (revision 427945) ++++ kpresenter/kppolylineobject.cc (working copy) +@@ -1,6 +1,7 @@ + // -*- Mode: c++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 4; -*- + /* This file is part of the KDE project + Copyright (C) 2001 Toshitaka Fujioka <fujioka@kde.org> ++ Copyright (C) 2005 Thorsten Zachmann <zachmann@kde.org> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public +@@ -29,6 +30,7 @@ + #include <kdebug.h> + #include <kozoomhandler.h> + #include <kooasiscontext.h> ++#include <koUnit.h> + + #include <math.h> + using namespace std; +@@ -68,22 +70,22 @@ + return KPPointObject::load( element ); + } + +-bool KPPolylineObject::saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj ) const ++bool KPPolylineObject::saveOasisObjectAttributes( KPOasisSaveContext &sc ) const + { +- xmlWriter.startElement( "draw:polyline" ); +- saveOasisPosObject(xmlWriter, indexObj ); +- xmlWriter.addAttribute( "draw:style-name", saveOasisStrokeElement( context.mainStyles() ) ); +- +- KPPointObject::saveOasis( xmlWriter, context ); +- if( !objectName.isEmpty()) +- xmlWriter.addAttribute( "draw:name", objectName ); +- xmlWriter.endElement(); ++ KPShadowObject::saveOasisDrawPoints( points, sc ); + return true; + } + ++const char * KPPolylineObject::getOasisElementName() const ++{ ++ return "draw:polyline"; ++} + ++ + void KPPolylineObject::loadOasis(const QDomElement &element, KoOasisContext & context, KPRLoadingInfo *info) + { + kdDebug()<<"void KPPolylineObject::loadOasis(const QDomElement &element)************\n"; +- KPPointObject::loadOasis( element,context, info ); ++ KPShadowObject::loadOasis( element, context, info ); ++ KPShadowObject::loadOasisDrawPoints( points, element, context, info ); ++ loadOasisMarker( context ); + } +Index: kpresenter/kpquadricbeziercurveobject.cc +=================================================================== +--- kpresenter/kpquadricbeziercurveobject.cc (revision 427945) ++++ kpresenter/kpquadricbeziercurveobject.cc (working copy) +@@ -1,6 +1,7 @@ + // -*- Mode: c++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 4; -*- + /* This file is part of the KDE project + Copyright (C) 2001 Toshitaka Fujioka <fujioka@kde.org> ++ Copyright (C) 2005 Thorsten Zachmann <zachmann@kde.org> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public +@@ -60,16 +61,18 @@ + return *this; + } + +-bool KPQuadricBezierCurveObject::saveOasis( KoXmlWriter &xmlWriter, KoSavingContext& context, int indexObj ) const ++bool KPQuadricBezierCurveObject::saveOasisObjectAttributes( KPOasisSaveContext &sc ) const + { +- kdDebug()<<"bool KPQuadricBezierCurveObject::saveOasis( KoXmlWriter &xmlWriter ) not implemented\n"; +- //todo +- // call saveOasisShadowElement( styleobjectauto ); +- // call saveOasisStrokeElement( KoGenStyle &styleobjectauto ); +- //call xmlWriter.addAttribute( "draw:style-name", style ); ++ kdDebug()<<"bool KPQuadricBezierCurveObject::saveOasisObjectAttributes( KPOasisSaveContext &sc ) not implemented\n"; + return true; + } + ++const char * KPQuadricBezierCurveObject::getOasisElementName() const ++{ ++ // use draw:path ? ++ return "draw:custom-shape"; ++} ++ + void KPQuadricBezierCurveObject::loadOasis( const QDomElement &element, KoOasisContext & context, KPRLoadingInfo *info ) + { + //todo +Index: kspread/dialogs/kspread_dlg_database.cc +=================================================================== +--- kspread/dialogs/kspread_dlg_database.cc (revision 427945) ++++ kspread/dialogs/kspread_dlg_database.cc (working copy) +@@ -600,8 +600,8 @@ + // An update command must also be followed by a space, or it would be parsed + // as an identifier. + // For sanity, also check that there is a SELECT +- QRegExp couldModifyDB( "(^|[( \s])(UPDATE|DELETE|INSERT|CREATE) ", false /* cs */ ); +- QRegExp couldQueryDB( "(^|[( \s])(SELECT) ", false /* cs */ ); ++ QRegExp couldModifyDB( "(^|[( \\s])(UPDATE|DELETE|INSERT|CREATE) ", false /* cs */ ); ++ QRegExp couldQueryDB( "(^|[( \\s])(SELECT) ", false /* cs */ ); + + if (couldModifyDB.search( queryStr ) != -1 || couldQueryDB.search ( queryStr ) == -1 ) + { +Index: kspread/CHANGES +=================================================================== +--- kspread/CHANGES (revision 427945) ++++ kspread/CHANGES (working copy) +@@ -1,5 +1,9 @@ ++since 1.4.0 ++=========== ++- Fix potential crash when rendering obscured cells (#108659) ++ + since 1.4-beta1 +-============================= ++=============== + - Use General/Blank Worksheet as default template. + - KSpread crashes on exit if there is a chart in the sheet (#101915). + - The data editor is disabled for charts which has been loaded. +Index: kspread/kspreadpart.desktop +=================================================================== +--- kspread/kspreadpart.desktop (revision 427945) ++++ kspread/kspreadpart.desktop (working copy) +@@ -19,6 +19,7 @@ + Name[pt]=Componente de Folha de Cálculo do KOffice + Name[pt_BR]=Componente de Planilha de Cálculo do KOffice + Name[ru]=Компонент электронных таблиц KOffice ++Name[sl]=Komponenta za preglednice za KOffice + Name[sr]=KOffice-ова компонента за унакрсне табеле + Name[sr@Latn]=KOffice-ova komponenta za unakrsne tabele + Name[sv]=Koffice-kalkylarkskomponent +Index: kspread/kspread_cell.cc +=================================================================== +--- kspread/kspread_cell.cc (revision 427945) ++++ kspread/kspread_cell.cc (working copy) +@@ -825,7 +825,12 @@ + if (!d->hasExtra()) + return (KSpreadCell *) this; + +- return d->extra()->obscuringCells.first(); ++ else if (d->extra()->obscuringCells.isEmpty()) ++ return (KSpreadCell *) this; ++ ++ else ++ return d->extra()->obscuringCells.first(); ++ + #if 0 + QValueList<KSpreadCell*>::const_iterator it = d->extra()->obscuringCells.begin(); + QValueList<KSpreadCell*>::const_iterator end = d->extra()->obscuringCells.end(); +@@ -2489,6 +2494,7 @@ + // If the cell towards the top is part of a merged cell, get + // the pointer to the master cell. + cellUp = cellUp->ultimateObscuringCell(); ++ + topPen = cellUp->effBottomBorderPen( cellUp->column(), + cellUp->row() ); + +Index: templates/SpreadSheet.desktop +=================================================================== +--- templates/SpreadSheet.desktop (revision 427945) ++++ templates/SpreadSheet.desktop (working copy) +@@ -23,7 +23,7 @@ + Name[pl]=Arkusz kalkulacyjny... + Name[pt]=Documento de Folha de Cálculo... + Name[pt_BR]=Planilha de Cálculo... +-Name[ru]=Электронная таблица... ++Name[ru]=Электронную таблицу... + Name[se]=Rehkenastinárka ... + Name[sl]=Preglednični dokument ... + Name[sr]=Документ са прорачунским листовима... +@@ -54,6 +54,7 @@ + Comment[fa]=KSpread سند جدید: + Comment[fi]=Uusi KSpread-asiakirja: + Comment[fr]=Nouveau document KSpread : ++Comment[ga]=Cáipéis nua KSpread: + Comment[he]=מסמך חדש של KSpread + Comment[hr]=Novi KSpread dokument: + Comment[hu]=Új KSpread-dokumentum: +@@ -67,7 +68,7 @@ + Comment[pl]=Nowy arkusz KSpread: + Comment[pt]=Novo documento do KSpread: + Comment[pt_BR]=Novo documento KSpread: +-Comment[ru]=Новый документ KSpread: ++Comment[ru]=Новая электронная таблица KSpread: + Comment[se]=Ođđa KSpread-dokumeanta: + Comment[sk]=Nový dokument KSpread: + Comment[sl]=Nov dokument za KSpread +Index: templates/Illustration.desktop +=================================================================== +--- templates/Illustration.desktop (revision 427945) ++++ templates/Illustration.desktop (working copy) +@@ -22,7 +22,7 @@ + Name[pl]=Rysunek... + Name[pt]=Documento de Ilustração.... + Name[pt_BR]=Documento de Ilustração... +-Name[ru]=Иллюстрированный документ... ++Name[ru]=Векторный рисунок... + Name[se]=Illustrašuvdna ... + Name[sl]=Ilustracijski dokument ... + Name[sr]=Илустрациони документ... +@@ -49,6 +49,7 @@ + Comment[fa]=Karbon14 سند جدید: + Comment[fi]=Uusi Karbon14-asiakirja: + Comment[fr]=Nouveau document Karbon14 : ++Comment[ga]=Cáipéis nua Karbon14: + Comment[he]=מסמך Karbon14 חדש + Comment[hr]=Novi Karbon14 dokument: + Comment[hu]=Új Karbon14-dokumentum: +@@ -59,7 +60,7 @@ + Comment[pl]=Nowy dokument Karbon14: + Comment[pt]=Novo documento do Karbon14: + Comment[pt_BR]=Novo documento do Karbon14 +-Comment[ru]=Новый документ Karbon14: ++Comment[ru]=Новый рисунок Karbon14: + Comment[se]=Ođđa Karbon14-dokumeanta: + Comment[sk]=Nový dokument Karbon14: + Comment[sl]=Nov dokument za Karbon14 +Index: templates/Presentation.desktop +=================================================================== +--- templates/Presentation.desktop (revision 427945) ++++ templates/Presentation.desktop (working copy) +@@ -23,7 +23,7 @@ + Name[pl]=Prezentacja... + Name[pt]=Documento de Apresentação... + Name[pt_BR]=Apresentação de Slides... +-Name[ru]=Презентация... ++Name[ru]=Презентацию... + Name[se]=Presentašuvdna ... + Name[sl]=Predstavitveni dokument ... + Name[sr]=Презентациони документ... +@@ -67,7 +67,7 @@ + Comment[pl]=Nowa prezentacja KPresenter: + Comment[pt]=Novo documento do KPresenter: + Comment[pt_BR]=Novo documento de apresentação KPresenter: +-Comment[ru]=Новый документ KPresenter: ++Comment[ru]=Новая презентация KPresenter: + Comment[se]=Ođđa KPresenter-presentašuvdna: + Comment[sk]=Nový dokument KPresenter: + Comment[sl]=Nov predstavitveni dokument za KPresenter +Index: templates/TextDocument.desktop +=================================================================== +--- templates/TextDocument.desktop (revision 427945) ++++ templates/TextDocument.desktop (working copy) +@@ -13,6 +13,7 @@ + Name[et]=Tekstidokument... + Name[fi]=Tekstiasiakirja... + Name[fr]=Document texte... ++Name[ga]=Cáipéis Téacs... + Name[he]=מסמך טקסט... + Name[hr]=Tekst datoteka... + Name[hu]=KWord-dokumentum... +@@ -24,7 +25,7 @@ + Name[pl]=Dokument tekstowy... + Name[pt]=Documento de Texto... + Name[pt_BR]=Documento de Texto... +-Name[ru]=Текстовый документ... ++Name[ru]=Документ... + Name[se]=Teakstadokumeanta ... + Name[sl]=Besedilni dokument ... + Name[sr]=Текстуални документ... +@@ -55,6 +56,7 @@ + Comment[fa]=KWord سند جدید برای: + Comment[fi]=Uusi KWord-asiakirja: + Comment[fr]=Nouveau document KWord : ++Comment[ga]=Cáipéis nua KWord: + Comment[he]=מסמך חדש של KWord + Comment[hr]=Novi KWord dokument + Comment[hu]=Új KWord-dokumentum: +Index: karbon/tools/vroundrecttool.h +=================================================================== +--- karbon/tools/vroundrecttool.h (revision 427945) ++++ karbon/tools/vroundrecttool.h (working copy) +@@ -29,7 +29,7 @@ + + class KarbonPart; + class QLabel; +-class KoUnitDoubleSpinBox; ++class KoBuggyUnitDoubleSpinBox; + + + class VRoundRectTool : public VShapeTool +Index: karbon/tools/vpolygontool.cc +=================================================================== +--- karbon/tools/vpolygontool.cc (revision 427945) ++++ karbon/tools/vpolygontool.cc (working copy) +@@ -37,6 +37,7 @@ + + new QLabel( i18n( "Radius:" ), group ); + m_radius = new KDoubleSpinBox(0.0, 1000.0, 0.5, 5.0,2, group ); ++ //m_radius = new KoBuggyUnitDoubleSpinBox( group, 0.0, 1000.0, 0.5, 50.0, KoUnit::U_MM ); + refreshUnit(); + new QLabel( i18n( "Edges:" ), group ); + m_edges = new KIntSpinBox( group ); +Index: karbon/tools/vpolygontool.h +=================================================================== +--- karbon/tools/vpolygontool.h (revision 427945) ++++ karbon/tools/vpolygontool.h (working copy) +@@ -58,7 +58,9 @@ + void refreshUnit(); + + private: ++ // FIXME: This should be a KoUnitDoubleSpinBox! + KDoubleSpinBox *m_radius; ++ + KIntSpinBox *m_edges; + KarbonPart *m_part; + }; +Index: karbon/tools/vspiraltool.h +=================================================================== +--- karbon/tools/vspiraltool.h (revision 427945) ++++ karbon/tools/vspiraltool.h (working copy) +@@ -67,7 +67,9 @@ + void refreshUnit(); + + private: ++ // FIXME: This should be a KoUnitDoubleSpinBox! + KDoubleSpinBox *m_radius; ++ + KIntSpinBox *m_segments; + KDoubleNumInput *m_fade; + KComboBox *m_type; +Index: karbon/tools/vellipsetool.cc +=================================================================== +--- karbon/tools/vellipsetool.cc (revision 427945) ++++ karbon/tools/vellipsetool.cc (working copy) +@@ -49,8 +49,10 @@ + // add width/height-input: + new QLabel( i18n( "Width:" ), group ); + m_width = new KDoubleSpinBox( 0.0, 1000.0, 0.5, 10.0, 2, group ); ++ //m_width = new KoBuggyUnitDoubleSpinBox( group, 0.0, 1000.0, 0.5, 100.0, KoUnit::U_MM ); + new QLabel( i18n( "Height:" ), group ); + m_height = new KDoubleSpinBox( 0.0, 1000.0, 0.5, 10.0, 2, group ); ++ //m_height = new KoBuggyUnitDoubleSpinBox( group, 0.0, 1000.0, 0.5, 100.0, KoUnit::U_MM ); + + new QLabel( i18n( "Start angle:" ), group ); + m_startAngle = new KIntSpinBox( group ); +Index: karbon/tools/vellipsetool.h +=================================================================== +--- karbon/tools/vellipsetool.h (revision 427945) ++++ karbon/tools/vellipsetool.h (working copy) +@@ -25,8 +25,7 @@ + + #include "vshapetool.h" + +-class KoUnitDoubleSpinBox; +-class KoUnitDoubleSpinBox; ++class KoBuggyUnitDoubleSpinBox; + class KComboBox; + class KIntSpinBox; + class KarbonPart; +@@ -55,8 +54,11 @@ + KComboBox *m_type; + KIntSpinBox *m_startAngle; + KIntSpinBox *m_endAngle; ++ ++ // FIXME: These should be KoUnitDoubleSpinBoxes! + KDoubleSpinBox *m_width; + KDoubleSpinBox *m_height; ++ + KarbonPart *m_part; + }; + +Index: karbon/tools/vsinustool.cc +=================================================================== +--- karbon/tools/vsinustool.cc (revision 427945) ++++ karbon/tools/vsinustool.cc (working copy) +@@ -40,8 +40,10 @@ + // add width/height-input: + new QLabel( i18n( "Width:" ), group ); + m_width = new KDoubleSpinBox( 0.0, 1000.0, 0.5, 10.0, 2, group ); ++ //m_width = new KoBuggyUnitDoubleSpinBox( group, 0.0, 1000.0, 0.5, 100.0, KoUnit::U_MM ); + new QLabel( i18n( "Height:" ), group ); + m_height = new KDoubleSpinBox( 0.0, 1000.0, 0.5, 10.0, 2, group ); ++ //m_height = new KoBuggyUnitDoubleSpinBox( group, 0.0, 1000.0, 0.5, 100.0, KoUnit::U_MM ); + + refreshUnit(); + +Index: karbon/tools/vsinustool.h +=================================================================== +--- karbon/tools/vsinustool.h (revision 427945) ++++ karbon/tools/vsinustool.h (working copy) +@@ -24,7 +24,7 @@ + #include <knuminput.h> + #include "vshapetool.h" + +-class KoUnitDoubleSpinBox; ++class KoBuggyUnitDoubleSpinBox; + class KIntSpinBox; + class KarbonPart; + class QLabel; +@@ -58,8 +58,10 @@ + void refreshUnit(); + + private: ++ // FIXME: These should be KoUnitDoubleSpinBoxes! + KDoubleSpinBox *m_width; + KDoubleSpinBox *m_height; ++ + KIntSpinBox *m_periods; + KarbonPart *m_part; + }; +Index: karbon/tools/vrectangletool.cc +=================================================================== +--- karbon/tools/vrectangletool.cc (revision 427945) ++++ karbon/tools/vrectangletool.cc (working copy) +@@ -37,10 +37,11 @@ + // add width/height-input: + new QLabel( i18n( "Width:" ), group ); + m_width = new KDoubleSpinBox( 0.0, 1000.0, 0.5, 10.0, 2, group ); ++ //m_width = new KoBuggyUnitDoubleSpinBox( group, 0.0, 1000.0, 0.5, 100.0, KoUnit::U_MM ); + + new QLabel( i18n( "Height:" ), group ); + m_height = new KDoubleSpinBox( 0.0, 1000.0, 0.5, 10.0, 2, group ); +- ++ //m_height = new KoBuggyUnitDoubleSpinBox( group, 0.0, 1000.0, 0.5, 100.0, KoUnit::U_MM ); + refreshUnit(); + + group->setInsideMargin( 4 ); +Index: karbon/tools/vstartool.cc +=================================================================== +--- karbon/tools/vstartool.cc (revision 427945) ++++ karbon/tools/vstartool.cc (working copy) +@@ -49,10 +49,12 @@ + // add width/height-input: + new QLabel( i18n( "Outer radius:" ), group ); + m_outerR = new KDoubleSpinBox( 0.0, 1000.0, 0.5, 5.0, 2, group ); ++ //m_outerR = new KoBuggyUnitDoubleSpinBox( group, 0.0, 1000.0, 0.5, 50.0, KoUnit::U_MM ); + connect( m_outerR, SIGNAL( valueChanged( double ) ), this, SLOT( setOuterRadius( double ) ) ); + + new QLabel( i18n( "Inner radius:" ), group ); + m_innerR = new KDoubleSpinBox( 0.0, 1000.0, 0.5, 5.0, 2, group ); ++ //m_innerR = new KoBuggyUnitDoubleSpinBox( group, 0.0, 1000.0, 0.5, 25.0, KoUnit::U_MM ); + + refreshUnit(); + +Index: karbon/tools/vstartool.h +=================================================================== +--- karbon/tools/vstartool.h (revision 427945) ++++ karbon/tools/vstartool.h (working copy) +@@ -54,8 +54,10 @@ + void setOuterRadius( double ); + + private: ++ // FIXME: These should be KoUnitDoubleSpinBoxes! + KDoubleSpinBox *m_innerR; + KDoubleSpinBox *m_outerR; ++ + KDoubleNumInput *m_roundness; + KIntSpinBox *m_edges; + KIntSpinBox *m_innerAngle; +Index: karbon/tools/vspiraltool.cc +=================================================================== +--- karbon/tools/vspiraltool.cc (revision 427945) ++++ karbon/tools/vspiraltool.cc (working copy) +@@ -43,6 +43,7 @@ + + new QLabel( i18n( "Radius:" ), group ); + m_radius = new KDoubleSpinBox( 0.0, 1000.0, 0.5, 5.0, 2, group ); ++ //m_radius = new KoBuggyUnitDoubleSpinBox( group, 0.0, 1000.0, 0.5, 50.0, KoUnit::U_MM ); + refreshUnit(); + new QLabel( i18n( "Segments:" ), group ); + m_segments = new KIntSpinBox( group ); +Index: karbon/tools/vrectangletool.h +=================================================================== +--- karbon/tools/vrectangletool.h (revision 427945) ++++ karbon/tools/vrectangletool.h (working copy) +@@ -29,7 +29,7 @@ + + class KarbonPart; + class QLabel; +-class KoUnitDoubleSpinBox; ++class KoBuggyUnitDoubleSpinBox; + + class VRectangleTool : public VShapeTool + { +@@ -59,8 +59,10 @@ + void refreshUnit(); + + private: ++ // FIXME: These should be KoUnitDoubleSpinBoxes! + KDoubleSpinBox *m_width; + KDoubleSpinBox *m_height; ++ + KarbonPart *m_part; + }; + +Index: karbon/dialogs/vconfiguredlg.cc +=================================================================== +--- karbon/dialogs/vconfiguredlg.cc (revision 427945) ++++ karbon/dialogs/vconfiguredlg.cc (working copy) +@@ -317,17 +317,17 @@ + gridColorLbl->setBuddy( m_gridColorBtn ); + QGroupBox* spacingGrp = new QGroupBox( 2, Qt::Horizontal, i18n( "Spacing" ), page ); + QLabel* spaceHorizLbl = new QLabel( i18n( "&Horizontal:" ), spacingGrp ); +- m_spaceHorizUSpin = new KoUnitDoubleSpinBox( spacingGrp, 0.0, pgw, 0.1, fw, unit ); ++ m_spaceHorizUSpin = new KoBuggyUnitDoubleSpinBox( spacingGrp, 0.0, pgw, 0.1, fw, unit ); + spaceHorizLbl->setBuddy( m_spaceHorizUSpin ); + QLabel* spaceVertLbl = new QLabel( i18n( "&Vertical:" ), spacingGrp ); +- m_spaceVertUSpin = new KoUnitDoubleSpinBox( spacingGrp, 0.0, pgh, 0.1, fh, unit ); ++ m_spaceVertUSpin = new KoBuggyUnitDoubleSpinBox( spacingGrp, 0.0, pgh, 0.1, fh, unit ); + spaceVertLbl->setBuddy( m_spaceVertUSpin ); + QGroupBox* snapGrp = new QGroupBox( 2, Qt::Horizontal, i18n( "Snap Distance" ), page ); + QLabel* snapHorizLbl = new QLabel( i18n( "H&orizontal:" ), snapGrp ); +- m_snapHorizUSpin = new KoUnitDoubleSpinBox( snapGrp, 0.0, fw, 0.1, sw, unit ); ++ m_snapHorizUSpin = new KoBuggyUnitDoubleSpinBox( snapGrp, 0.0, fw, 0.1, sw, unit ); + snapHorizLbl->setBuddy( m_snapHorizUSpin ); + QLabel* snapVertLbl = new QLabel( i18n( "V&ertical:" ), snapGrp ); +- m_snapVertUSpin = new KoUnitDoubleSpinBox( snapGrp, 0.0, fh, 0.1, sh, unit ); ++ m_snapVertUSpin = new KoBuggyUnitDoubleSpinBox( snapGrp, 0.0, fh, 0.1, sh, unit ); + snapVertLbl->setBuddy( m_snapVertUSpin ); + + QGridLayout* gl = new QGridLayout(); +Index: karbon/dialogs/vconfiguredlg.h +=================================================================== +--- karbon/dialogs/vconfiguredlg.h (revision 427945) ++++ karbon/dialogs/vconfiguredlg.h (working copy) +@@ -27,7 +27,7 @@ + class KConfig; + class KIntNumInput; + class KColorButton; +-class KoUnitDoubleSpinBox; ++class KoBuggyUnitDoubleSpinBox; + class QCheckBox; + class QComboBox; + +@@ -129,10 +129,10 @@ + + private: + KarbonView* m_view; +- KoUnitDoubleSpinBox* m_spaceHorizUSpin; +- KoUnitDoubleSpinBox* m_spaceVertUSpin; +- KoUnitDoubleSpinBox* m_snapHorizUSpin; +- KoUnitDoubleSpinBox* m_snapVertUSpin; ++ KoBuggyUnitDoubleSpinBox* m_spaceHorizUSpin; ++ KoBuggyUnitDoubleSpinBox* m_spaceVertUSpin; ++ KoBuggyUnitDoubleSpinBox* m_snapHorizUSpin; ++ KoBuggyUnitDoubleSpinBox* m_snapVertUSpin; + QCheckBox* m_gridChBox; + QCheckBox* m_snapChBox; + KColorButton* m_gridColorBtn; +Index: karbon/dialogs/vstrokedlg.cc +=================================================================== +--- karbon/dialogs/vstrokedlg.cc (revision 427945) ++++ karbon/dialogs/vstrokedlg.cc (working copy) +@@ -50,7 +50,7 @@ + + QLabel* widthLabel = new QLabel( i18n ( "Width:" ), mainWidget ); + leftLayout->addWidget ( widthLabel ); +- m_setLineWidth = new KoUnitDoubleSpinBox( mainWidget, 0.0, 1000.0, 0.5, 1.0, KoUnit::U_PT, 1 ); ++ m_setLineWidth = new KoBuggyUnitDoubleSpinBox( mainWidget, 0.0, 1000.0, 0.5, 1.0, KoUnit::U_PT, 1 ); + leftLayout->addWidget ( m_setLineWidth ); + + //Dashing -> +Index: karbon/dialogs/vstrokedlg.h +=================================================================== +--- karbon/dialogs/vstrokedlg.h (revision 427945) ++++ karbon/dialogs/vstrokedlg.h (working copy) +@@ -27,7 +27,7 @@ + class QVButtonGroup; + + class KarbonPart; +-class KoUnitDoubleSpinBox; ++class KoBuggyUnitDoubleSpinBox; + class VStroke; + class VColorTab; + +@@ -41,7 +41,7 @@ + private: + VColorTab* m_colortab; + KarbonPart *m_part; +- KoUnitDoubleSpinBox *m_setLineWidth; ++ KoBuggyUnitDoubleSpinBox *m_setLineWidth; + QComboBox *m_styleCombo; + QVButtonGroup *m_typeOption; + QVButtonGroup *m_capOption; +Index: karbon/dockers/vtransformdocker.h +=================================================================== +--- karbon/dockers/vtransformdocker.h (revision 427945) ++++ karbon/dockers/vtransformdocker.h (working copy) +@@ -25,7 +25,7 @@ + + class KarbonPart; + class KarbonView; +-class KoUnitDoubleSpinBox; ++class KoBuggyUnitDoubleSpinBox; + + class VTransformDocker : public VDocker + { +@@ -43,10 +43,10 @@ + private: + KarbonPart *m_part; + KarbonView *m_view; +- KoUnitDoubleSpinBox *m_x; +- KoUnitDoubleSpinBox *m_y; +- KoUnitDoubleSpinBox *m_width; +- KoUnitDoubleSpinBox *m_height; ++ KoBuggyUnitDoubleSpinBox *m_x; ++ KoBuggyUnitDoubleSpinBox *m_y; ++ KoBuggyUnitDoubleSpinBox *m_width; ++ KoBuggyUnitDoubleSpinBox *m_height; + QWidget *mainWidget; + }; + +Index: karbon/dockers/vstrokedocker.cc +=================================================================== +--- karbon/dockers/vstrokedocker.cc (revision 427945) ++++ karbon/dockers/vstrokedocker.cc (working copy) +@@ -50,7 +50,7 @@ + + QLabel* widthLabel = new QLabel( i18n ( "Width:" ), mainWidget ); + mainLayout->addWidget( widthLabel, 0, 0 ); +- m_setLineWidth = new KoUnitDoubleSpinBox( mainWidget, 0.0, 1000.0, 0.5, 1.0, KoUnit::U_PT, 1 ); ++ m_setLineWidth = new KoBuggyUnitDoubleSpinBox( mainWidget, 0.0, 1000.0, 0.5, 1.0, KoUnit::U_PT, 1 ); + mainLayout->addWidget ( m_setLineWidth, 0, 1 ); + connect( m_setLineWidth, SIGNAL( valueChanged( double ) ), this, SLOT( widthChanged() ) ); + +Index: karbon/dockers/vstrokedocker.h +=================================================================== +--- karbon/dockers/vstrokedocker.h (revision 427945) ++++ karbon/dockers/vstrokedocker.h (working copy) +@@ -26,7 +26,7 @@ + class QHButtonGroup; + class QWidget; + +-class KoUnitDoubleSpinBox; ++class KoBuggyUnitDoubleSpinBox; + + class KoMainWindow; + class KarbonView; +@@ -48,7 +48,7 @@ + QWidget *mainWidget; + KarbonPart *m_part; + KarbonView *m_view; +- KoUnitDoubleSpinBox *m_setLineWidth; ++ KoBuggyUnitDoubleSpinBox *m_setLineWidth; + + private slots: + void slotCapChanged( int ID ); +Index: karbon/dockers/vtransformdocker.cc +=================================================================== +--- karbon/dockers/vtransformdocker.cc (revision 427945) ++++ karbon/dockers/vtransformdocker.cc (working copy) +@@ -48,25 +48,25 @@ + //X: (TODO: Set 5000 limit to real Karbon14 limit) + QLabel* xLabel = new QLabel( i18n ( "X:" ), mainWidget ); + mainLayout->addWidget( xLabel, 1, 0 ); +- m_x = new KoUnitDoubleSpinBox( mainWidget, -5000.0, 5000.0, 1.0, 10.0, m_part->unit(), 1 ); ++ m_x = new KoBuggyUnitDoubleSpinBox( mainWidget, -5000.0, 5000.0, 1.0, 10.0, m_part->unit(), 1 ); + mainLayout->addWidget( m_x, 1, 1 ); + + //Y: (TODO: Set 5000 limit to real Karbon14 limit) + QLabel* yLabel = new QLabel( i18n ( "Y:" ), mainWidget ); + mainLayout->addWidget( yLabel, 2, 0 ); +- m_y = new KoUnitDoubleSpinBox( mainWidget, -5000.0, 5000.0, 1.0, 10.0, m_part->unit(), 1 ); ++ m_y = new KoBuggyUnitDoubleSpinBox( mainWidget, -5000.0, 5000.0, 1.0, 10.0, m_part->unit(), 1 ); + mainLayout->addWidget( m_y, 2, 1 ); + + //Width: (TODO: Set 5000 limit to real Karbon14 limit) + QLabel* wLabel = new QLabel( i18n ( "W:" ), mainWidget ); + mainLayout->addWidget( wLabel, 1, 2 ); +- m_width = new KoUnitDoubleSpinBox( mainWidget, 0.0, 5000.0, 1.0, 10.0, m_part->unit(), 1 ); ++ m_width = new KoBuggyUnitDoubleSpinBox( mainWidget, 0.0, 5000.0, 1.0, 10.0, m_part->unit(), 1 ); + mainLayout->addWidget( m_width, 1, 3 ); + + //Height: (TODO: Set 5000 limit to real Karbon14 limit) + QLabel* hLabel = new QLabel( i18n ( "H:" ), mainWidget ); + mainLayout->addWidget( hLabel, 2, 2 ); +- m_height = new KoUnitDoubleSpinBox( mainWidget, 0.0, 5000.0, 1.0, 10.0, m_part->unit(), 1 ); ++ m_height = new KoBuggyUnitDoubleSpinBox( mainWidget, 0.0, 5000.0, 1.0, 10.0, m_part->unit(), 1 ); + mainLayout->addWidget( m_height, 2, 3 ); + + //TODO: Add Rotation, Shear +Index: karbon/widgets/vselecttoolbar.cc +=================================================================== +--- karbon/widgets/vselecttoolbar.cc (revision 427945) ++++ karbon/widgets/vselecttoolbar.cc (working copy) +@@ -38,24 +38,24 @@ + setCaption( i18n( "Object Properties" ) ); + QLabel *x_label = new QLabel( i18n( "X:" ), this, "kde toolbar widget" ); + insertWidget( 0, x_label->width(), x_label ); +- m_x = new KoUnitDoubleSpinBox( this, 0.0, 1000.0, 0.5 ); ++ m_x = new KoBuggyUnitDoubleSpinBox( this, 0.0, 1000.0, 0.5 ); + connect( m_x, SIGNAL( valueChanged( double ) ), this, SLOT( slotXChanged( double ) ) ); + insertWidget( 1, m_x->width(), m_x ); + QLabel *y_label = new QLabel( i18n( "Y:" ), this, "kde toolbar widget" ); + insertWidget( 2, y_label->width(), y_label ); +- m_y = new KoUnitDoubleSpinBox( this, 0.0, 1000.0, 0.5 ); ++ m_y = new KoBuggyUnitDoubleSpinBox( this, 0.0, 1000.0, 0.5 ); + connect( m_y, SIGNAL( valueChanged( double ) ), this, SLOT( slotYChanged( double ) ) ); + insertWidget( 3, m_y->width(), m_y ); + + insertSeparator( 4 ); + QLabel *w_label = new QLabel( i18n( "Width:" ), this, "kde toolbar widget" ); + insertWidget( 5, w_label->width(), w_label ); +- m_width = new KoUnitDoubleSpinBox( this, 0.0, 1000.0, 0.5 ); ++ m_width = new KoBuggyUnitDoubleSpinBox( this, 0.0, 1000.0, 0.5 ); + connect( m_width, SIGNAL( valueChanged( double ) ), this, SLOT( slotWidthChanged( double ) ) ); + insertWidget( 6, m_width->width(), m_width ); + QLabel *h_label = new QLabel( i18n( "Height:" ), this, "kde toolbar widget" ); + insertWidget( 7, h_label->width(), h_label ); +- m_height = new KoUnitDoubleSpinBox( this, 0.0, 1000.0, 0.5 ); ++ m_height = new KoBuggyUnitDoubleSpinBox( this, 0.0, 1000.0, 0.5 ); + connect( m_height, SIGNAL( valueChanged( double ) ), this, SLOT( slotHeightChanged( double ) ) ); + insertWidget( 8, m_height->width(), m_height ); + +Index: karbon/widgets/vselecttoolbar.h +=================================================================== +--- karbon/widgets/vselecttoolbar.h (revision 427945) ++++ karbon/widgets/vselecttoolbar.h (working copy) +@@ -24,7 +24,7 @@ + + #include <ktoolbar.h> + +-class KoUnitDoubleSpinBox; ++class KoBuggyUnitDoubleSpinBox; + class KarbonView; + + class VSelectToolBar : public KToolBar +@@ -42,10 +42,10 @@ + void slotHeightChanged( double ); + + private: +- KoUnitDoubleSpinBox *m_x; +- KoUnitDoubleSpinBox *m_y; +- KoUnitDoubleSpinBox *m_width; +- KoUnitDoubleSpinBox *m_height; ++ KoBuggyUnitDoubleSpinBox *m_x; ++ KoBuggyUnitDoubleSpinBox *m_y; ++ KoBuggyUnitDoubleSpinBox *m_width; ++ KoBuggyUnitDoubleSpinBox *m_height; + KarbonView *m_view; + }; + diff --git a/editors/koffice-kde4/files/patch-filters-kspread-excel-sidewinder-excel.cpp b/editors/koffice-kde4/files/patch-filters-kspread-excel-sidewinder-excel.cpp deleted file mode 100644 index 65e60fd83a86..000000000000 --- a/editors/koffice-kde4/files/patch-filters-kspread-excel-sidewinder-excel.cpp +++ /dev/null @@ -1,11 +0,0 @@ ---- filters/kspread/excel/sidewinder/excel.cpp.orig Wed Jun 29 02:06:17 2005 -+++ filters/kspread/excel/sidewinder/excel.cpp Wed Jun 29 02:04:06 2005 -@@ -5412,7 +5412,7 @@ - case 10: valueFormat = "0.00%"; break; - case 11: valueFormat = "0.00E+00"; break; - case 12: valueFormat = "#?/?"; break; -- case 13: valueFormat = "#\?\?\/\?\?"; break; -+ case 13: valueFormat = "#\?\?/\?\?"; break; - case 14: valueFormat = "M/D/YY"; break; - case 15: valueFormat = "D-MMM-YY"; break; - case 16: valueFormat = "D-MMM"; break; diff --git a/editors/koffice-kde4/files/patch-krita-plugins-cimg-CImg.h b/editors/koffice-kde4/files/patch-krita-plugins-cimg-CImg.h deleted file mode 100644 index 9c914acb3d05..000000000000 --- a/editors/koffice-kde4/files/patch-krita-plugins-cimg-CImg.h +++ /dev/null @@ -1,11 +0,0 @@ ---- krita/plugins/cimg/CImg.h.orig Tue Jun 28 02:31:30 2005 -+++ krita/plugins/cimg/CImg.h Tue Jun 28 02:32:10 2005 -@@ -5135,7 +5135,7 @@ - if (ny1<0 || ny0>=dimy()) return *this; - if (ny0<0) { nx0-=ny0*(nx1-nx0)/(ny1-ny0); ny0=0; } - if (ny1>=dimy()) { nx1+=(ny1-dimy())*(nx0-nx1)/(ny1-ny0); ny1=dimy()-1;} -- const unsigned int dmax = (unsigned int)cimg::max(std::abs(nx1-nx0),ny1-ny0), whz = width*height*depth; -+ const unsigned int dmax = (unsigned int)cimg::max(std::abs((long int)(nx1-nx0)),(long int)(ny1-ny0)), whz = width*height*depth; - const float px = dmax?(nx1-nx0)/(float)dmax:0, py = dmax?(ny1-ny0)/(float)dmax:0; - float x = (float)nx0, y = (float)ny0; - if (opacity>=1) for (unsigned int t=0; t<=dmax; t++) { diff --git a/editors/koffice-kde4/files/patch-kspread-dialogs-kspread_dlg_database.cc b/editors/koffice-kde4/files/patch-kspread-dialogs-kspread_dlg_database.cc deleted file mode 100644 index 0f733f0e891f..000000000000 --- a/editors/koffice-kde4/files/patch-kspread-dialogs-kspread_dlg_database.cc +++ /dev/null @@ -1,13 +0,0 @@ ---- kspread/dialogs/kspread_dlg_database.cc.orig Tue Jun 28 03:42:22 2005 -+++ kspread/dialogs/kspread_dlg_database.cc Tue Jun 28 03:48:20 2005 -@@ -600,8 +600,8 @@ - // An update command must also be followed by a space, or it would be parsed - // as an identifier. - // For sanity, also check that there is a SELECT -- QRegExp couldModifyDB( "(^|[( \s])(UPDATE|DELETE|INSERT|CREATE) ", false /* cs */ ); -- QRegExp couldQueryDB( "(^|[( \s])(SELECT) ", false /* cs */ ); -+ QRegExp couldModifyDB( "(^|[( \\s])(UPDATE|DELETE|INSERT|CREATE) ", false /* cs */ ); -+ QRegExp couldQueryDB( "(^|[( \\s])(SELECT) ", false /* cs */ ); - - if (couldModifyDB.search( queryStr ) != -1 || couldQueryDB.search ( queryStr ) == -1 ) - { |