summaryrefslogtreecommitdiffstats
path: root/chalk/plugins/viewplugins/rotateimage
diff options
context:
space:
mode:
Diffstat (limited to 'chalk/plugins/viewplugins/rotateimage')
-rw-r--r--chalk/plugins/viewplugins/rotateimage/Makefile.am25
-rw-r--r--chalk/plugins/viewplugins/rotateimage/chalkrotateimage.desktop40
-rw-r--r--chalk/plugins/viewplugins/rotateimage/dlg_rotateimage.cc147
-rw-r--r--chalk/plugins/viewplugins/rotateimage/dlg_rotateimage.h66
-rw-r--r--chalk/plugins/viewplugins/rotateimage/rotateimage.cc134
-rw-r--r--chalk/plugins/viewplugins/rotateimage/rotateimage.h50
-rw-r--r--chalk/plugins/viewplugins/rotateimage/rotateimage.rc25
-rw-r--r--chalk/plugins/viewplugins/rotateimage/wdg_rotateimage.ui245
8 files changed, 732 insertions, 0 deletions
diff --git a/chalk/plugins/viewplugins/rotateimage/Makefile.am b/chalk/plugins/viewplugins/rotateimage/Makefile.am
new file mode 100644
index 00000000..d4ff4e63
--- /dev/null
+++ b/chalk/plugins/viewplugins/rotateimage/Makefile.am
@@ -0,0 +1,25 @@
+chalkrcdir = $(kde_datadir)/chalkplugins
+chalkrc_DATA = rotateimage.rc
+
+EXTRA_DIST = $(chalkrc_DATA)
+
+
+INCLUDES = -I$(srcdir)/../../../sdk \
+ -I$(srcdir)/../../../core \
+ -I$(srcdir)/../../../chalkcolor/ \
+ -I$(srcdir)/../../../ui \
+ $(KOFFICE_INCLUDES) \
+ $(all_includes)
+
+kde_module_LTLIBRARIES = chalkrotateimage.la
+
+chalkrotateimage_la_SOURCES = wdg_rotateimage.ui rotateimage.cc dlg_rotateimage.cc
+noinst_HEADERS = wdg_rotateimage.h dlg_rotateimage.h rotateimage.h
+
+chalkrotateimage_la_LDFLAGS = $(all_libraries) -module $(KDE_PLUGIN) chalkblurfilter_la_LDFLAGS = $(all_libraries) -module $(KDE_PLUGIN) $(LIB_QT) -lkdecore -lkdeui -lkjs -lkdefx -lkio -lkparts -L../../../../chalk/chalkcolor/.libs -lchalkcolor -L../../../../chalk/core/.libs -lchalkimage \
+ -L../../../../chalk/ui/.libs -lchalkui -L../../../../lib/kofficeui/.libs -lkofficeui
+chalkrotateimage_la_LIBADD = ../../../libchalkcommon.la
+
+kde_services_DATA = chalkrotateimage.desktop
+
+chalkrotateimage_la_METASOURCES = AUTO
diff --git a/chalk/plugins/viewplugins/rotateimage/chalkrotateimage.desktop b/chalk/plugins/viewplugins/rotateimage/chalkrotateimage.desktop
new file mode 100644
index 00000000..e855492e
--- /dev/null
+++ b/chalk/plugins/viewplugins/rotateimage/chalkrotateimage.desktop
@@ -0,0 +1,40 @@
+[Desktop Entry]
+Name=Rotate Image Plugin
+Name[bg]=Приставка за въртене на изображение
+Name[ca]=Connector de rotació d'imatge
+Name[da]=Plugin for rotering af billede
+Name[de]="Bild rotieren"-Modul
+Name[el]=Πρόσθετο περιστροφής εικόνας
+Name[es]=Complemento para girar la imagen
+Name[et]=Pildi pööramise plugin
+Name[fa]=چرخش وصلۀ تصویر
+Name[fr]=Module de rotation d'images
+Name[fy]=Plugin foar ôfbyldingsrotaasje
+Name[gl]=Plugin para Rodar a Imaxe
+Name[he]=תוסף לשינוי גודל של תמונה
+Name[hu]=Képelforgató modul
+Name[is]=Snúa mynd íforrit
+Name[it]=Plugin per ruotare le immagini
+Name[ja]=画像回転プラグイン
+Name[km]=កម្មវិធី​ត្រឡប់​រូបភាព
+Name[nb]=Programtillegg for bilderotering
+Name[nds]=Moduul för't Bilddreihen
+Name[ne]=छवि प्लगइन परिक्रमा गर्नुहोस्
+Name[nl]=Plugin voor afbeeldingrotatie
+Name[pl]=Wtyczka obrotu obrazków
+Name[pt]='Plugin' para Rodar a Imagem
+Name[pt_BR]=Plugin para Rodar a Imagem
+Name[ru]=Модуль вращения
+Name[sk]=Modul rotácia obrázkov
+Name[sl]=Vstavek za vrtenje slike
+Name[sr]=Прикључак за ротирање слике
+Name[sr@Latn]=Priključak za rotiranje slike
+Name[sv]=Insticksprogram för rotera bild
+Name[uk]=Втулок обертання зображень
+Name[uz]=Rasmni burish plagini
+Name[uz@cyrillic]=Расмни буриш плагини
+Name[zh_TW]=旋轉圖片外掛程式
+ServiceTypes=Chalk/ViewPlugin
+Type=Service
+X-KDE-Library=chalkrotateimage
+X-Chalk-Version=2
diff --git a/chalk/plugins/viewplugins/rotateimage/dlg_rotateimage.cc b/chalk/plugins/viewplugins/rotateimage/dlg_rotateimage.cc
new file mode 100644
index 00000000..6e3cc9f7
--- /dev/null
+++ b/chalk/plugins/viewplugins/rotateimage/dlg_rotateimage.cc
@@ -0,0 +1,147 @@
+/*
+ * dlg_rotateimage.cc - part of KimageShop^WKrayon^WChalk
+ *
+ * Copyright (c) 2004 Michael Thaler <michael.thaler@physik.tu-muenchen.de>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+#include <config.h>
+
+#include <math.h>
+
+#include <iostream>
+
+using namespace std;
+
+#include <tqgroupbox.h>
+#include <tqradiobutton.h>
+#include <tqcheckbox.h>
+#include <tqlabel.h>
+
+#include <klocale.h>
+#include <knuminput.h>
+#include <kdebug.h>
+
+#include "dlg_rotateimage.h"
+#include "wdg_rotateimage.h"
+
+
+DlgRotateImage::DlgRotateImage( TQWidget * tqparent,
+ const char * name)
+ : super (tqparent, name, true, i18n("Rotate Image"), Ok | Cancel, Ok)
+{
+ m_lock = false;
+
+ m_page = new WdgRotateImage(this, "rotate_image");
+ Q_CHECK_PTR(m_page);
+
+ setMainWidget(m_page);
+ resize(m_page->tqsizeHint());
+
+ connect(this, TQT_SIGNAL(okClicked()),
+ this, TQT_SLOT(okClicked()));
+ connect( m_page->doubleCustom, TQT_SIGNAL( valueChanged ( double ) ),
+ this, TQT_SLOT( slotAngleValueChanged( double ) ) );
+
+}
+
+DlgRotateImage::~DlgRotateImage()
+{
+ delete m_page;
+}
+
+void DlgRotateImage::slotAngleValueChanged( double )
+{
+ m_page->radioCustom->setChecked(true);
+}
+
+void DlgRotateImage::setAngle(double angle)
+{
+ if (angle == 90) {
+ m_page->radio90->setChecked(true);
+ }
+ else if (angle == 180) {
+ m_page->radio180->setChecked(true);
+ }
+ else if (angle == 270) {
+ m_page->radio270->setChecked(true);
+ }
+ else {
+ m_page->radioCustom->setChecked(true);
+ m_page->doubleCustom->setValue(angle);
+ }
+
+ if (m_oldAngle != angle)
+ resetPreview();
+
+ m_oldAngle = angle;
+
+}
+
+double DlgRotateImage::angle()
+{
+ double angle = 0;
+ if (m_page->radio90->isChecked()) {
+ angle = 90;
+ }
+ else if (m_page->radio180->isChecked()) {
+ angle = 180;
+ }
+ else if (m_page->radio270->isChecked()) {
+ angle = 270;
+ }
+ else {
+ angle = tqRound(m_page->doubleCustom->value());
+ }
+ if (m_page->radioCW->isChecked()) {
+ return angle;
+ }
+ else {
+ return -angle;
+ }
+}
+
+void DlgRotateImage::setDirection (enumRotationDirection direction)
+{
+ if (direction == CLOCKWISE) {
+ m_page->radioCW->setChecked(true);
+ }
+ else if (direction== COUNTERCLOCKWISE) {
+ m_page->radioCCW->setChecked(true);
+ }
+}
+
+enumRotationDirection DlgRotateImage::direction()
+{
+ if (m_page->radioCCW->isChecked()) {
+ return COUNTERCLOCKWISE;
+ }
+ else {
+ return CLOCKWISE;
+ }
+}
+
+void DlgRotateImage::okClicked()
+{
+ accept();
+}
+
+void DlgRotateImage::resetPreview()
+{
+ // Code to update preview here.
+}
+
+#include "dlg_rotateimage.moc"
diff --git a/chalk/plugins/viewplugins/rotateimage/dlg_rotateimage.h b/chalk/plugins/viewplugins/rotateimage/dlg_rotateimage.h
new file mode 100644
index 00000000..47ddd344
--- /dev/null
+++ b/chalk/plugins/viewplugins/rotateimage/dlg_rotateimage.h
@@ -0,0 +1,66 @@
+/*
+ * dlg_rotateimage.h -- part of KimageShop^WKrayon^WChalk
+ *
+ * Copyright (c) 2004 Michael Thaler <michael.thaler@physik.tu-muenchen.de>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+#ifndef DLG_ROTATEIMAGE
+#define DLG_ROTATEIMAGE
+
+#include <kdialogbase.h>
+
+#include <kis_global.h>
+
+class WdgRotateImage;
+
+enum enumRotationDirection {
+ CLOCKWISE,
+ COUNTERCLOCKWISE
+};
+
+
+class DlgRotateImage: public KDialogBase {
+ typedef KDialogBase super;
+ Q_OBJECT
+ TQ_OBJECT
+
+public:
+
+ DlgRotateImage(TQWidget * tqparent = 0,
+ const char* name = 0);
+ ~DlgRotateImage();
+
+ void setAngle(double w);
+ double angle();
+
+ void setDirection (enumRotationDirection direction);
+ enumRotationDirection direction();
+
+private slots:
+
+ void okClicked();
+ void resetPreview();
+ void slotAngleValueChanged( double );
+
+private:
+
+ WdgRotateImage * m_page;
+ double m_oldAngle;
+ bool m_lock;
+
+};
+
+#endif // DLG_ROTATEIMAGE
diff --git a/chalk/plugins/viewplugins/rotateimage/rotateimage.cc b/chalk/plugins/viewplugins/rotateimage/rotateimage.cc
new file mode 100644
index 00000000..e8961cec
--- /dev/null
+++ b/chalk/plugins/viewplugins/rotateimage/rotateimage.cc
@@ -0,0 +1,134 @@
+/*
+ * rotateimage.cc -- Part of Chalk
+ *
+ * Copyright (c) 2004 Michael Thaler
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+
+#include <math.h>
+
+#include <stdlib.h>
+
+#include <tqslider.h>
+#include <tqpoint.h>
+
+#include <klocale.h>
+#include <kiconloader.h>
+#include <kinstance.h>
+#include <kmessagebox.h>
+#include <kstandarddirs.h>
+#include <ktempfile.h>
+#include <kdebug.h>
+#include <kgenericfactory.h>
+
+#include <kis_doc.h>
+#include <kis_config.h>
+#include <kis_image.h>
+#include <kis_layer.h>
+#include <kis_global.h>
+#include <kis_types.h>
+#include <kis_view.h>
+#include <kis_selection.h>
+
+#include "rotateimage.h"
+#include "dlg_rotateimage.h"
+
+typedef KGenericFactory<RotateImage> RotateImageFactory;
+K_EXPORT_COMPONENT_FACTORY( chalkrotateimage, RotateImageFactory( "chalk" ) )
+
+// XXX: this plugin could also provide layer scaling/resizing
+RotateImage::RotateImage(TQObject *tqparent, const char *name, const TQStringList &)
+ : KParts::Plugin(tqparent, name)
+{
+
+ if ( tqparent->inherits("KisView") ) {
+ setInstance(RotateImageFactory::instance());
+ setXMLFile(locate("data","chalkplugins/rotateimage.rc"), true);
+ m_view = (KisView*) tqparent;
+ (void) new KAction(i18n("&Rotate Image..."), 0, 0, TQT_TQOBJECT(this), TQT_SLOT(slotRotateImage()), actionCollection(), "rotateimage");
+ (void) new KAction(i18n("Rotate Image CW"), "rotate_cw", 0, TQT_TQOBJECT(this), TQT_SLOT(slotRotateImage90()), actionCollection(), "rotateImageCW90");
+ (void) new KAction(i18n("Rotate Image 1&80"), 0, 0, TQT_TQOBJECT(this), TQT_SLOT(slotRotateImage180()), actionCollection(), "rotateImage180");
+ (void) new KAction(i18n("Rotate Image CCW"), "rotate_ccw", 0, TQT_TQOBJECT(this), TQT_SLOT(slotRotateImage270()), actionCollection(), "rotateImageCCW90");
+
+ (void) new KAction(i18n("&Rotate Layer..."), 0, 0, TQT_TQOBJECT(this), TQT_SLOT(slotRotateLayer()), actionCollection(), "rotatelayer");
+
+ (void)new KAction(i18n("Rotate 1&80"), 0, TQT_TQOBJECT(m_view), TQT_SLOT(rotateLayer180()), actionCollection(), "rotateLayer180");
+ (void)new KAction(i18n("Rotate CCW"), "rotate_ccw", 0, TQT_TQOBJECT(m_view), TQT_SLOT(rotateLayerLeft90()), actionCollection(), "rotateLayerCCW90");
+ (void)new KAction(i18n("Rotate CW"), "rotate_cw", 0, TQT_TQOBJECT(m_view), TQT_SLOT(rotateLayerRight90()), actionCollection(), "rotateLayerCW90");
+ }
+}
+
+RotateImage::~RotateImage()
+{
+ m_view = 0;
+}
+
+void RotateImage::slotRotateImage()
+{
+ KisImageSP image = m_view->canvasSubject()->currentImg();
+
+ if (!image) return;
+
+ DlgRotateImage * dlgRotateImage = new DlgRotateImage(m_view, "RotateImage");
+ Q_CHECK_PTR(dlgRotateImage);
+
+ dlgRotateImage->setCaption(i18n("Rotate Image"));
+
+ if (dlgRotateImage->exec() == TQDialog::Accepted) {
+ double angle = dlgRotateImage->angle();
+ angle *= M_PI/180;
+ m_view->rotateCurrentImage(angle);
+ }
+ delete dlgRotateImage;
+}
+
+void RotateImage::slotRotateImage90()
+{
+ m_view->rotateCurrentImage( M_PI/2);
+}
+
+void RotateImage::slotRotateImage180()
+{
+ m_view->rotateCurrentImage( M_PI );
+}
+
+
+void RotateImage::slotRotateImage270()
+{
+ m_view->rotateCurrentImage( - M_PI/2 + M_PI*2 );
+}
+
+void RotateImage::slotRotateLayer()
+{
+ KisImageSP image = m_view->canvasSubject()->currentImg();
+
+ if (!image) return;
+
+ DlgRotateImage * dlgRotateImage = new DlgRotateImage(m_view, "RotateLayer");
+ Q_CHECK_PTR(dlgRotateImage);
+
+ dlgRotateImage->setCaption(i18n("Rotate Layer"));
+
+ if (dlgRotateImage->exec() == TQDialog::Accepted) {
+ double angle = dlgRotateImage->angle();
+ angle *= M_PI/180;
+ m_view->rotateLayer(angle);
+ }
+ delete dlgRotateImage;
+}
+
+#include "rotateimage.moc"
diff --git a/chalk/plugins/viewplugins/rotateimage/rotateimage.h b/chalk/plugins/viewplugins/rotateimage/rotateimage.h
new file mode 100644
index 00000000..6b262608
--- /dev/null
+++ b/chalk/plugins/viewplugins/rotateimage/rotateimage.h
@@ -0,0 +1,50 @@
+/*
+ * rotateimage.h -- Part of Chalk
+ *
+ * Copyright (c) 2004 Michael Thaler (michael.thaler@physik.tu-muenchen.de)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef ROTATEIMAGE_H
+#define ROTATEIMAGE_H
+
+#include <kparts/plugin.h>
+
+class KisView;
+
+class RotateImage : public KParts::Plugin
+{
+ Q_OBJECT
+ TQ_OBJECT
+public:
+ RotateImage(TQObject *tqparent, const char *name, const TQStringList &);
+ virtual ~RotateImage();
+
+private slots:
+
+ void slotRotateImage();
+ void slotRotateImage90();
+ void slotRotateImage180();
+ void slotRotateImage270();
+ void slotRotateLayer();
+
+private:
+
+ KisView * m_view;
+ KisPainter * m_painter;
+
+};
+
+#endif // ROTATEIMAGE_H
diff --git a/chalk/plugins/viewplugins/rotateimage/rotateimage.rc b/chalk/plugins/viewplugins/rotateimage/rotateimage.rc
new file mode 100644
index 00000000..78ae6f4f
--- /dev/null
+++ b/chalk/plugins/viewplugins/rotateimage/rotateimage.rc
@@ -0,0 +1,25 @@
+<!DOCTYPE kpartgui SYSTEM "kpartgui.dtd">
+<kpartgui library="chalkrotateimage" version="7">
+<MenuBar>
+ <Menu name="Image"><text>&amp;Image</text>
+ <Menu name="Rotate"><text>&amp;Rotate</text>
+ <Action name="rotateimage"/>
+ <Separator />
+ <Action name="rotateImageCW90"/>
+ <Action name="rotateImageCCW90"/>
+ <Action name="rotateImage180"/>
+ </Menu>
+ </Menu>
+
+ <Menu name="Layer"><text>La&amp;yer</text>
+ <Menu name="Rotate"><text>&amp;Rotate</text>
+ <Action name="rotatelayer"/>
+ <Separator />
+ <Action name="rotateLayerCW90"/>
+ <Action name="rotateLayerCCW90"/>
+ <Action name="rotateLayer180"/>
+ </Menu>
+ </Menu>
+</MenuBar>
+
+</kpartgui>
diff --git a/chalk/plugins/viewplugins/rotateimage/wdg_rotateimage.ui b/chalk/plugins/viewplugins/rotateimage/wdg_rotateimage.ui
new file mode 100644
index 00000000..d58c458d
--- /dev/null
+++ b/chalk/plugins/viewplugins/rotateimage/wdg_rotateimage.ui
@@ -0,0 +1,245 @@
+<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
+<class>WdgRotateImage</class>
+<widget class="TQWidget">
+ <property name="name">
+ <cstring>WdgRotateImage</cstring>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>489</width>
+ <height>447</height>
+ </rect>
+ </property>
+ <property name="caption">
+ <string>Rotate Image</string>
+ </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="TQButtonGroup" row="0" column="0">
+ <property name="name">
+ <cstring>grpDirection</cstring>
+ </property>
+ <property name="title">
+ <string>Direction</string>
+ </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="TQLayoutWidget" row="0" column="0" rowspan="1" colspan="2">
+ <property name="name">
+ <cstring>tqlayout6</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <spacer>
+ <property name="name">
+ <cstring>spacer3</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="tqsizeHint">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ <widget class="TQLabel">
+ <property name="name">
+ <cstring>pixmapLabel1</cstring>
+ </property>
+ <property name="pixmap">
+ <pixmap>image0</pixmap>
+ </property>
+ <property name="scaledContents">
+ <bool>false</bool>
+ </property>
+ <property name="tqalignment">
+ <set>AlignCenter</set>
+ </property>
+ </widget>
+ <spacer>
+ <property name="name">
+ <cstring>spacer1</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="tqsizeHint">
+ <size>
+ <width>41</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ <widget class="TQLabel">
+ <property name="name">
+ <cstring>pixmapLabel2</cstring>
+ </property>
+ <property name="pixmap">
+ <pixmap>image1</pixmap>
+ </property>
+ <property name="scaledContents">
+ <bool>false</bool>
+ </property>
+ <property name="tqalignment">
+ <set>AlignCenter</set>
+ </property>
+ </widget>
+ <spacer>
+ <property name="name">
+ <cstring>spacer2</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="tqsizeHint">
+ <size>
+ <width>31</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </hbox>
+ </widget>
+ <widget class="TQRadioButton" row="1" column="1">
+ <property name="name">
+ <cstring>radioCW</cstring>
+ </property>
+ <property name="text">
+ <string>C&amp;lockwise</string>
+ </property>
+ <property name="checked">
+ <bool>true</bool>
+ </property>
+ </widget>
+ <widget class="TQRadioButton" row="1" column="0">
+ <property name="name">
+ <cstring>radioCCW</cstring>
+ </property>
+ <property name="text">
+ <string>Cou&amp;nter-clockwise</string>
+ </property>
+ </widget>
+ </grid>
+ </widget>
+ <widget class="TQButtonGroup" row="1" column="0">
+ <property name="name">
+ <cstring>grpAngle</cstring>
+ </property>
+ <property name="title">
+ <string>Angle</string>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="TQRadioButton">
+ <property name="name">
+ <cstring>radio90</cstring>
+ </property>
+ <property name="text">
+ <string>90 &amp;degrees</string>
+ </property>
+ </widget>
+ <widget class="TQRadioButton">
+ <property name="name">
+ <cstring>radio180</cstring>
+ </property>
+ <property name="text">
+ <string>180 d&amp;egrees</string>
+ </property>
+ </widget>
+ <widget class="TQRadioButton">
+ <property name="name">
+ <cstring>radio270</cstring>
+ </property>
+ <property name="text">
+ <string>270 de&amp;grees</string>
+ </property>
+ </widget>
+ <widget class="TQLayoutWidget">
+ <property name="name">
+ <cstring>tqlayout1</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="TQRadioButton">
+ <property name="name">
+ <cstring>radioCustom</cstring>
+ </property>
+ <property name="text">
+ <string>&amp;Custom:</string>
+ </property>
+ <property name="checked">
+ <bool>true</bool>
+ </property>
+ </widget>
+ <widget class="KDoubleSpinBox">
+ <property name="name">
+ <cstring>doubleCustom</cstring>
+ </property>
+ <property name="maxValue">
+ <number>360</number>
+ </property>
+ <property name="lineStep">
+ <number>1</number>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ </vbox>
+ </widget>
+ <spacer row="2" column="0">
+ <property name="name">
+ <cstring>spacer4</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Vertical</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="tqsizeHint">
+ <size>
+ <width>20</width>
+ <height>91</height>
+ </size>
+ </property>
+ </spacer>
+ </grid>
+</widget>
+<customwidgets>
+</customwidgets>
+<images>
+ <image name="image0">
+ <data format="PNG" length="371">89504e470d0a1a0a0000000d494844520000002c0000002e0806000000534cfb0a0000013a494441545885ed994b0ec330084487aaf7bf32dd5689297f9b489d6d24fc3c02db106266a445c460a67c205daf7404a2821ddb9503de0c0b64800fc00251e043b00040eea28bc21615a50fb8cad904bc1db8230d02e0671cbeca01ee2bbaaecbc16184bfe8a405b4cd58a00c86c48eb588d3cc54b1a9f8c5114d0f0d5c81ce5dcd999c0e42e71f3f5dd0826245572dc9d1c586f20e57a8ed1cdead85f373808d2ecf01366a16f0cae54b5acc0236e80fdcadc701bfc52f99c77ae35065edf0c1ae58d31d78302c302d870d9dcc2c6083e4a2bbaa7b3a694cc5bbc39bc6a626a5dec39dc5e888bd06965cee8076741b40a4e82aa103b164e0442b6ed2af183fd6d69b500dce5ba4c978b6aeb962cc5434aa3a3b6efd56794fd7793e3b62d74d2f23da3ef939f0bfa36e54557d9a48cb8c98ad39f4b8e7e5e3803f91a1a32701eeec170000000049454e44ae426082</data>
+ </image>
+ <image name="image1">
+ <data format="PNG" length="363">89504e470d0a1a0a0000000d494844520000002c0000002e0806000000534cfb0a00000132494441545885ed994b12032108449b54ee7f65b3cd5440f92a56a5f7326f5a11451a63608b8806c6a0689857068b5a446177f6020361e8fdc04008fa0c30e086a6b4a4f3ba664cc418704212013041fb80b340bfa5847e9b825680022687f549d70016d03aac815d7d988be1a87c6be015acb7dc3ac7cd8167b091734160acbc861bc2029e4a77101690f661c9dd840f46a577b8012cc00157edb749d239dcc45de0e4f1d2a927705235aad4e50e5fa03f70b56c0778ab227bba90ec7d1d167eb62f30c0423f81b9696856aa7b3bcc487fa7f3543ccb18e54cfe3adca914332ce7aff9c6d83cb0e47205b4f176634fba4c68472c1978b69633a09db7f2753330bb91128ca7eb5e56b5aaac316069b756573ce54cf5b8e65fd3d0769870e6c920305bfb1e659296541ef0265d77bcbc0ef803779f9c39421cd9b50000000049454e44ae426082</data>
+ </image>
+</images>
+<tqlayoutdefaults spacing="6" margin="11"/>
+<includehints>
+ <includehint>knuminput.h</includehint>
+</includehints>
+</UI>