You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdewebdev/kimagemapeditor/kimedialogs.cpp

875 lines
25 KiB

/***************************************************************************
kimedialogs.cpp - description
-------------------
begin : Tue Apr 17 2001
copyright : (C) 2001 by Jan Sch<63>er
email : j_schaef@informatik.uni-kl.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. *
* *
***************************************************************************/
// QT
//#include <tqstring.h>
#include <tqcheckbox.h>
#include <tqmultilineedit.h>
#include <tqlayout.h>
#include <tqlabel.h>
#include <tqhbox.h>
#include <tqvbox.h>
#include <tqlineedit.h>
#include <tqlistbox.h>
#include <tqtable.h>
#include <tqgroupbox.h>
#include <tqspinbox.h>
#include <tqtabwidget.h>
#include <tqpointarray.h>
#include <tqimage.h>
//#include <tqwidget.h>
// KDE
#include <kiconloader.h>
#include <tdefiledialog.h>
#include <tdelocale.h>
#include <kdebug.h>
#include <tdeapplication.h>
#include <tdehtmlview.h>
#include <tdehtml_part.h>
#include <tdetempfile.h>
#include <kpushbutton.h>
#include <kstdguiitem.h>
// LOCAL
#include "kimedialogs.h"
CoordsEdit::CoordsEdit(TQWidget *parent, Area* a)
: TQWidget(parent)
{
area=a;
}
void CoordsEdit::applyChanges() {
return;
}
void CoordsEdit::slotTriggerUpdate() {
applyChanges();
emit update();
}
CoordsEdit::~CoordsEdit()
{
}
RectCoordsEdit::RectCoordsEdit(TQWidget *parent, Area* a)
: CoordsEdit(parent,a)
{
TQGridLayout *layout= new TQGridLayout(this,5,2,5,5);
topXSpin = new TQSpinBox(this);
topXSpin->setMaxValue(INT_MAX);
topXSpin->setMinValue(0);
topXSpin->setValue(a->rect().left());
layout->addWidget(topXSpin,0,1);
connect( topXSpin, TQ_SIGNAL(valueChanged(const TQString &)), this, TQ_SLOT(slotTriggerUpdate()));
TQLabel *lbl= new TQLabel(i18n("Top &X:"),this);
lbl->setBuddy(topXSpin);
layout->addWidget(lbl,0,0);
topYSpin = new TQSpinBox(this);
topYSpin->setMaxValue(INT_MAX);
topYSpin->setMinValue(0);
topYSpin->setValue(a->rect().top());
layout->addWidget(topYSpin,1,1);
connect( topYSpin, TQ_SIGNAL(valueChanged(const TQString &)), this, TQ_SLOT(slotTriggerUpdate()));
lbl= new TQLabel(i18n("Top &Y:"),this);
lbl->setBuddy(topYSpin);
layout->addWidget(lbl,1,0);
widthSpin = new TQSpinBox(this);
widthSpin->setMaxValue(INT_MAX);
widthSpin->setMinValue(0);
widthSpin->setValue(a->rect().width());
layout->addWidget(widthSpin,2,1);
connect( widthSpin, TQ_SIGNAL(valueChanged(const TQString &)), this, TQ_SLOT(slotTriggerUpdate()));
lbl= new TQLabel(i18n("&Width:"),this);
lbl->setBuddy(widthSpin);
layout->addWidget(lbl,2,0);
heightSpin = new TQSpinBox(this);
heightSpin->setMaxValue(INT_MAX);
heightSpin->setMinValue(0);
heightSpin->setValue(a->rect().height());
layout->addWidget(heightSpin,3,1);
connect( heightSpin, TQ_SIGNAL(valueChanged(const TQString &)), this, TQ_SLOT(slotTriggerUpdate()));
lbl= new TQLabel(i18n("Hei&ght:"),this);
lbl->setBuddy(heightSpin);
layout->addWidget(lbl,3,0);
layout->setRowStretch(4,10);
}
void RectCoordsEdit::applyChanges() {
TQRect r;
r.setLeft(topXSpin->text().toInt());
r.setTop(topYSpin->text().toInt());
r.setWidth(widthSpin->text().toInt());
r.setHeight(heightSpin->text().toInt());
area->setRect(r);
}
CircleCoordsEdit::CircleCoordsEdit(TQWidget *parent, Area* a)
: CoordsEdit(parent,a)
{
TQGridLayout *layout= new TQGridLayout(this,4,2,5,5);
centerXSpin = new TQSpinBox(this);
centerXSpin->setMaxValue(INT_MAX);
centerXSpin->setMinValue(0);
centerXSpin->setValue(a->rect().center().x());
layout->addWidget(centerXSpin,0,1);
connect( centerXSpin, TQ_SIGNAL(valueChanged(const TQString &)), this, TQ_SLOT(slotTriggerUpdate()));
TQLabel *lbl= new TQLabel(i18n("Center &X:"),this);
lbl->setBuddy(centerXSpin);
layout->addWidget(lbl,0,0);
centerYSpin = new TQSpinBox(this);
centerYSpin->setMaxValue(INT_MAX);
centerYSpin->setMinValue(0);
centerYSpin->setValue(a->rect().center().y());
layout->addWidget(centerYSpin,1,1);
connect( centerYSpin, TQ_SIGNAL(valueChanged(const TQString &)), this, TQ_SLOT(slotTriggerUpdate()));
lbl= new TQLabel(i18n("Center &Y:"),this);
lbl->setBuddy(centerYSpin);
layout->addWidget(lbl,1,0);
radiusSpin = new TQSpinBox(this);
radiusSpin->setMaxValue(INT_MAX);
radiusSpin->setMinValue(0);
radiusSpin->setValue(a->rect().width()/2);
layout->addWidget(radiusSpin,2,1);
connect( radiusSpin, TQ_SIGNAL(valueChanged(const TQString &)), this, TQ_SLOT(slotTriggerUpdate()));
lbl= new TQLabel(i18n("&Radius:"),this);
lbl->setBuddy(radiusSpin);
layout->addWidget(lbl,2,0);
layout->setRowStretch(3,10);
}
void CircleCoordsEdit::applyChanges() {
TQRect r;
r.setWidth(radiusSpin->text().toInt()*2);
r.setHeight(radiusSpin->text().toInt()*2);
r.moveCenter(TQPoint(centerXSpin->text().toInt(),
centerYSpin->text().toInt()));
area->setRect(r);
}
PolyCoordsEdit::PolyCoordsEdit(TQWidget *parent, Area* a)
: CoordsEdit(parent,a)
{
if (!a) return;
TQVBoxLayout *layout= new TQVBoxLayout(this);
int numPoints=a->coords()->count();
coordsTable= new TQTable(numPoints,2,this);
coordsTable->horizontalHeader()->setLabel(0,"X");
coordsTable->horizontalHeader()->setLabel(1,"Y");
coordsTable->verticalHeader()->hide();
coordsTable->setLeftMargin(0);
coordsTable->setSelectionMode( TQTable::Single );
for (int i=0;i<numPoints;i++) {
coordsTable->setText(i,0, TQString::number(area->coords()->point(i).x()) );
coordsTable->setText(i,1, TQString::number(area->coords()->point(i).y()) );
}
connect( coordsTable, TQ_SIGNAL(currentChanged(int,int)), this, TQ_SLOT(slotHighlightPoint(int)));
// coordsTable->setMinimumHeight(50);
// coordsTable->setMaximumHeight(400);
// coordsTable->resizeContents(100,100);
coordsTable->resize(coordsTable->width(),100);
layout->addWidget(coordsTable);
layout->setStretchFactor(coordsTable,-1);
TQHBox *hbox= new TQHBox(this);
TQPushButton *addBtn=new TQPushButton(i18n("Add"),hbox);
connect( addBtn, TQ_SIGNAL(pressed()), this, TQ_SLOT(slotAddPoint()));
TQPushButton *removeBtn=new TQPushButton(i18n("Remove"),hbox);
connect( removeBtn, TQ_SIGNAL(pressed()), this, TQ_SLOT(slotRemovePoint()));
layout->addWidget(hbox);
slotHighlightPoint(1);
}
PolyCoordsEdit::~PolyCoordsEdit() {
if (area)
area->highlightSelectionPoint(-1);
}
void PolyCoordsEdit::slotHighlightPoint(int row) {
if (!area) return;
area->highlightSelectionPoint(row);
emit update();
}
void PolyCoordsEdit::slotAddPoint() {
int newPos= coordsTable->currentRow();
TQPoint currentPoint=area->coords()->point(newPos);
area->insertCoord(newPos,currentPoint);
int count=area->coords()->size();
coordsTable->setNumRows(count);
for (int i=0;i<count;i++) {
coordsTable->setText(i,0, TQString::number(area->coords()->point(i).x()) );
coordsTable->setText(i,1, TQString::number(area->coords()->point(i).y()) );
}
emit update();
}
void PolyCoordsEdit::slotRemovePoint() {
int currentPos= coordsTable->currentRow();
area->removeCoord(currentPos);
int count=area->coords()->size();
coordsTable->setNumRows(count);
for (int i=0;i<count;i++) {
coordsTable->setText(i,0, TQString::number(area->coords()->point(i).x()) );
coordsTable->setText(i,1, TQString::number(area->coords()->point(i).y()) );
}
emit update();
}
void PolyCoordsEdit::applyChanges() {
int count=coordsTable->numRows();
for (int i=0;i<count;i++) {
TQPoint newPoint( coordsTable->text(i,0).toInt(),
coordsTable->text(i,1).toInt());
area->moveCoord(i,newPoint);
}
}
SelectionCoordsEdit::SelectionCoordsEdit(TQWidget *parent, Area* a)
: CoordsEdit(parent,a)
{
TQGridLayout *layout= new TQGridLayout(this,2,2);
topXSpin = new TQSpinBox(this);
topXSpin->setMaxValue(INT_MAX);
topXSpin->setMinValue(0);
topXSpin->setValue(a->rect().left());
layout->addWidget(topXSpin,0,1);
connect( topXSpin, TQ_SIGNAL(valueChanged(const TQString &)), this, TQ_SLOT(slotTriggerUpdate()));
TQLabel *lbl= new TQLabel(i18n("Top &X"),this);
lbl->setBuddy(topXSpin);
layout->addWidget(lbl,0,0);
topYSpin = new TQSpinBox(this);
topYSpin->setMaxValue(INT_MAX);
topYSpin->setMinValue(0);
topYSpin->setValue(a->rect().top());
layout->addWidget(topYSpin,1,1);
connect( topYSpin, TQ_SIGNAL(valueChanged(const TQString &)), this, TQ_SLOT(slotTriggerUpdate()));
lbl= new TQLabel(i18n("Top &Y"),this);
lbl->setBuddy(topYSpin);
layout->addWidget(lbl,1,0);
}
void SelectionCoordsEdit::applyChanges() {
area->moveTo(topXSpin->text().toInt(), topYSpin->text().toInt());
}
TQLineEdit* AreaDialog::createLineEdit(TQWidget* parent, TQGridLayout *layout, int y, const TQString & value, const TQString & name)
{
TQLineEdit* edit=new TQLineEdit(value,parent);
layout->addWidget(edit,y,2);
TQLabel* lbl=new TQLabel(name,parent);
lbl->setBuddy(edit);
layout->addWidget(lbl,y,1);
return edit;
}
TQWidget* AreaDialog::createGeneralPage()
{
TQFrame* page = new TQFrame(this);
TQGridLayout* layout = new TQGridLayout(page,5,2,5,5);
TQHBox *hbox= new TQHBox(page);
hrefEdit = new TQLineEdit(area->attribute("href"),hbox);
TQPushButton *btn = new TQPushButton("",hbox);
btn->setPixmap(SmallIcon("document-open"));
connect( btn, TQ_SIGNAL(pressed()), this, TQ_SLOT(slotChooseHref()));
hbox->setMinimumHeight(hbox->height());
layout->addWidget(hbox,0,2);
TQLabel *lbl=new TQLabel(i18n( "&HREF:" ),page);
lbl->setBuddy(hrefEdit);
layout->addWidget(lbl,0,1);
altEdit = createLineEdit(page,layout,1,area->attribute("alt"),i18n("Alt. &Text:"));
targetEdit = createLineEdit(page,layout,2,area->attribute("target"),i18n("Tar&get:"));
titleEdit = createLineEdit(page,layout,3,area->attribute("title"),i18n("Tit&le:"));
if (area->type()==Area::Default)
{
defaultAreaChk = new TQCheckBox(i18n("Enable default map"),page);
if (area->finished())
defaultAreaChk->setChecked(true);
layout->addWidget(defaultAreaChk,3,2);
}
layout->setRowStretch(4,10);
return page;
}
TQWidget* AreaDialog::createCoordsPage()
{
TQFrame* page = new TQFrame(this);
TQVBoxLayout *layout = new TQVBoxLayout(page);
layout->setMargin(5);
coordsEdit = createCoordsEdit(page,area);
layout->addWidget(coordsEdit);
connect( coordsEdit, TQ_SIGNAL(update()), this, TQ_SLOT(slotUpdateArea()));
return page;
}
TQWidget* AreaDialog::createJavascriptPage()
{
TQFrame* page = new TQFrame(this);
TQGridLayout* layout = new TQGridLayout(page,8,2,5,5);
onClickEdit = createLineEdit(page,layout,0,area->attribute("onClick"),i18n("OnClick:"));
onDblClickEdit = createLineEdit(page,layout,1,area->attribute("onDblClick"),i18n("OnDblClick:"));
onMouseDownEdit = createLineEdit(page,layout,2,area->attribute("onMouseDown"),i18n("OnMouseDown:"));
onMouseUpEdit = createLineEdit(page,layout,3,area->attribute("onMouseUp"),i18n("OnMouseUp:"));
onMouseOverEdit = createLineEdit(page,layout,4,area->attribute("onMouseOver"),i18n("OnMouseOver:"));
onMouseMoveEdit = createLineEdit(page,layout,5,area->attribute("onMouseMove"),i18n("OnMouseMove:"));
onMouseOutEdit = createLineEdit(page,layout,6,area->attribute("onMouseOut"),i18n("OnMouseOut:"));
layout->setRowStretch(7,10);
return page;
}
TQWidget* AreaDialog::createButtonBar()
{
TQHBox *box = new TQHBox(this);
TQWidget *spacer = new TQWidget(box);
TQPushButton *okBtn = new KPushButton(KStdGuiItem::ok(),box);
TQPushButton *applyBtn = new KPushButton(KStdGuiItem::apply(),box);
TQPushButton *cancelBtn = new KPushButton(KStdGuiItem::cancel(),box);
connect(okBtn, TQ_SIGNAL(clicked()), this, TQ_SLOT(slotOk()));
connect(applyBtn, TQ_SIGNAL(clicked()), this, TQ_SLOT(slotApply()));
connect(cancelBtn, TQ_SIGNAL(clicked()), this, TQ_SLOT(slotCancel()));
box->setSpacing(5);
box->setStretchFactor(spacer,10);
okBtn->setDefault(true);
return box;
}
AreaDialog::AreaDialog(KImageMapEditor* parent,Area * a)
: KDialog(parent->widget(),"",true)
// : KDialogBase(Tabbed,i18n("Area Tag Editor"),Ok|Apply|Cancel,Ok,parent,"")
// : KDialogBase(parent,"",true,"Area Tag Editor",Ok|Apply|Cancel,Ok,true)
{
if (!a) {
slotCancel();
return;
}
_document=parent;
setCaption(i18n("Area Tag Editor"));
area=a;
TQString shape="Default";
areaCopy= a->clone();
oldArea= new Area();
oldArea->setRect( a->rect() );
switch (a->type()) {
case Area::Rectangle : shape=i18n("Rectangle");break;
case Area::Circle : shape=i18n("Circle");break;
case Area::Polygon : shape=i18n("Polygon");break;
case Area::Selection : shape=i18n("Selection");break;
default : break;
}
// To get a margin around everything
TQVBoxLayout *layout = new TQVBoxLayout(this);
layout->setMargin(5);
TQLabel *lbl = new TQLabel("<b>"+shape+"</b>",this);
lbl->setTextFormat(TQt::RichText);
layout->addWidget(lbl);
TQFrame *line = new TQFrame(this);
line->setFrameStyle(TQFrame::HLine | TQFrame::Sunken);
line->setFixedHeight(10);
layout->addWidget(line);
TQTabWidget *tab = new TQTabWidget(this);
layout->addWidget(tab);
tab->addTab(createGeneralPage(),i18n("&General"));
if (a->type()==Area::Default)
{
shape=i18n("Default");
}
else
tab->addTab(createCoordsPage(),i18n("Coor&dinates"));
tab->addTab(createJavascriptPage(),i18n("&JavaScript"));
line = new TQFrame(this);
line->setFrameStyle(TQFrame::HLine | TQFrame::Sunken);
line->setFixedHeight(10);
layout->addWidget(line);
layout->addWidget(createButtonBar());
setMinimumHeight(360);
setMinimumWidth(327);
resize(327,360);
}
AreaDialog::~AreaDialog() {
delete areaCopy;
delete oldArea;
}
CoordsEdit* AreaDialog::createCoordsEdit(TQWidget *parent, Area *a) {
if (!a) return 0;
switch (a->type()) {
case Area::Rectangle :
return new RectCoordsEdit(parent,a);
break;
case Area::Circle :
return new CircleCoordsEdit(parent,a);
break;
case Area::Polygon :
return new PolyCoordsEdit(parent,a);
break;
case Area::Selection :
return new SelectionCoordsEdit(parent,a);
break;
case Area::Default : return new CoordsEdit(parent,a); break;
default : return new CoordsEdit(parent,a);break;
}
}
void AreaDialog::slotChooseHref() {
KURL url=KFileDialog::getOpenURL(TQString(), "*|" + i18n( "All Files" ), this, i18n("Choose File"));
if (!url.isEmpty()) {
hrefEdit->setText(url.url());
}
}
void AreaDialog::slotOk() {
if (area)
{
area->highlightSelectionPoint(-1);
if (area->type()==Area::Default)
area->setFinished(defaultAreaChk->isChecked());
}
slotApply();
accept();
}
void AreaDialog::slotApply() {
if (area) {
if (area->type()!=Area::Default)
coordsEdit->applyChanges();
area->setAttribute("href",hrefEdit->text());
area->setAttribute("alt",altEdit->text());
area->setAttribute("target",targetEdit->text());
area->setAttribute("title",titleEdit->text());
area->setAttribute("onclick",onClickEdit->text());
area->setAttribute("ondblclick",onDblClickEdit->text());
area->setAttribute("onmousedown",onMouseDownEdit->text());
area->setAttribute("onmouseup",onMouseUpEdit->text());
area->setAttribute("onmousemove",onMouseMoveEdit->text());
area->setAttribute("onmouseover",onMouseOverEdit->text());
area->setAttribute("onmouseout",onMouseOutEdit->text());
// redraw old area to get rid of it
emit areaChanged(oldArea);
// draw new area
emit areaChanged(area);
oldArea->setRect(area->rect());
}
}
void AreaDialog::slotCancel() {
if (area) {
AreaSelection *selection=0L;
if ( (selection=dynamic_cast<AreaSelection*>(areaCopy)) )
area->setArea(*selection);
else
area->setArea(*areaCopy);
area->highlightSelectionPoint(-1);
emit areaChanged(oldArea);
emit areaChanged(area);
}
reject();
}
void AreaDialog::slotUpdateArea() {
emit areaChanged(oldArea);
// draw new area
emit areaChanged(area);
oldArea->setRect(area->rect());
}
ImageMapChooseDialog::ImageMapChooseDialog(TQWidget* parent,TQPtrList<MapTag> *_maps,TQPtrList<ImageTag> *_images,const KURL & _baseUrl)
: KDialogBase(parent,"",true,i18n( "Choose Map & Image to Edit" ),Ok,Ok,true)
{
baseUrl=_baseUrl;
maps=_maps;
images=_images;
currentMap=0L;
TQWidget *page=new TQWidget(this);
setMainWidget(page);
setCaption(baseUrl.fileName());
TQVBoxLayout *layout = new TQVBoxLayout(page,5,5);
TQLabel *lbl= new TQLabel(i18n("Select an image and/or a map that you want to edit"),page);
lbl->setFont(TQFont("Sans Serif",12, TQFont::Bold));
layout->addWidget(lbl);
TQFrame *line= new TQFrame(page);
line->setFrameStyle(TQFrame::HLine | TQFrame::Sunken);
line->setFixedHeight(10);
layout->addWidget(line,0);
TQGridLayout *gridLayout= new TQGridLayout(layout,2,3,5);
gridLayout->setRowStretch(0,0);
gridLayout->setRowStretch(1,100);
lbl=new TQLabel(i18n("&Maps"),page);
mapListBox= new TQListBox(page);
lbl->setBuddy(mapListBox);
gridLayout->addWidget(lbl,0,0);
gridLayout->addWidget(mapListBox,1,0);
line= new TQFrame(page);
line->setFrameStyle(TQFrame::VLine | TQFrame::Sunken);
line->setFixedWidth(10);
// line->setSizePolicy(TQSizePolicy(TQSizePolicy::Fixed, TQSizePolicy::Expanding));
gridLayout->addWidget(line,1,1);
lbl=new TQLabel(i18n("Image Preview"),page);
gridLayout->addWidget(lbl,0,2);
imagePreview= new TQLabel(page);
imagePreview->setFixedSize(310,210);
imagePreview->setSizePolicy(TQSizePolicy(TQSizePolicy::Fixed, TQSizePolicy::Expanding));
imagePreview->setFrameStyle(TQLabel::Panel | TQLabel::Sunken);
imagePreview->setIndent(5);
imagePreview->setBackgroundColor(TQColor("white"));
// imagePreview->setLineWidth(2);
// imagePreview->setScaledContents(true);
// lbl= new TQLabel(i18n("&Maps"),page);
// lbl->setBuddy(mapListBox);
gridLayout->addWidget(imagePreview,1,2);
// layout->addLayout(gridLayout,1);
line= new TQFrame(page);
line->setFrameStyle(TQFrame::HLine | TQFrame::Sunken);
line->setFixedHeight(10);
layout->addWidget(line,0);
if (maps->isEmpty()) {
mapListBox->insertItem(i18n("No maps found"));
mapListBox->setEnabled(false);
}
else {
for (MapTag *tag = maps->first(); tag!=0L; tag=maps->next()) {
mapListBox->insertItem(tag->name);
}
connect (mapListBox, TQ_SIGNAL(highlighted(int)), this, TQ_SLOT(slotMapChanged(int)));
}
initImageListTable(page);
if (! maps->isEmpty()) {
mapListBox->setCurrentItem(0);
slotMapChanged(0);
}
resize(510,460);
}
void ImageMapChooseDialog::initImageListTable(TQWidget* parent) {
if (images->isEmpty()) {
imageListTable= new TQTable(1,1,parent);
imageListTable->setText(0,0,i18n("No images found"));
imageListTable->setEnabled(false);
imageListTable->horizontalHeader()->hide();
imageListTable->setTopMargin(0);
imageListTable->setColumnStretchable(0,true);
} else {
imageListTable= new TQTable(images->count(),2,parent);
imageListTable->setColumnStretchable(0,true);
}
imageListTable->verticalHeader()->hide();
imageListTable->setLeftMargin(0);
TQLabel *lbl= new TQLabel(i18n("&Images"),parent);
lbl->setBuddy(imageListTable);
parent->layout()->add(lbl);
parent->layout()->add(imageListTable);
if (images->isEmpty())
return;
imageListTable->horizontalHeader()->setLabel(0,i18n("Path"));
imageListTable->horizontalHeader()->setLabel(1,"usemap");
imageListTable->setSelectionMode(TQTable::SingleRow);
imageListTable->setFocusStyle(TQTable::FollowStyle);
imageListTable->clearSelection(true);
int row=0;
for (ImageTag *tag = images->first(); tag!=0L; tag=images->next()) {
TQString src="";
TQString usemap="";
if (tag->find("src"))
src=*tag->find("src");
if (tag->find("usemap"))
usemap=*tag->find("usemap");
imageListTable->setText(row,0,src);
imageListTable->setText(row,1,usemap);
row++;
}
connect (imageListTable, TQ_SIGNAL(selectionChanged()), this, TQ_SLOT(slotImageChanged()));
imageListTable->selectRow(0);
slotImageChanged();
}
ImageMapChooseDialog::~ImageMapChooseDialog() {
}
void ImageMapChooseDialog::slotImageChanged()
{
int i=imageListTable->currentRow();
TQImage pix;
if (images->at(i)->find("src")) {
TQString str=*images->at(i)->find("src");
// relative url
pixUrl=KURL(baseUrl,str);
pix=TQImage(pixUrl.path());
double zoom1=1;
double zoom2=1;
if (pix.width()>300)
zoom1=(double) 300/pix.width();
if (pix.height()>200)
zoom2=(double) 200/pix.height();
zoom1= zoom1 < zoom2 ? zoom1 : zoom2;
pix=pix.smoothScale((int)(pix.width()*zoom1),int(pix.height()*zoom1));
}
TQPixmap pix2;
pix2.convertFromImage(pix);
imagePreview->setPixmap(pix2);
// imagePreview->repaint();
}
void ImageMapChooseDialog::selectImageWithUsemap(const TQString & usemap) {
for (int i=0; i<imageListTable->numRows(); i++) {
if (imageListTable->text(i,1)==usemap) {
imageListTable->selectRow(i);
slotImageChanged();
return;
}
}
}
void ImageMapChooseDialog::slotMapChanged(int i) {
currentMap=maps->at(i);
selectImageWithUsemap(currentMap->name);
}
PreferencesDialog::PreferencesDialog(TQWidget *parent, TDEConfig* conf)
: KDialogBase(parent,"",true,i18n("Preferences"),Ok|Apply|Cancel,Ok,true)
{
config = conf;
TQVBox *page=new TQVBox(this);
page->setSpacing(6);
setMainWidget(page);
TQHBox *hbox= new TQHBox(page);
TQLabel *lbl = new TQLabel(i18n("&Maximum image preview height:")+" ",hbox);
rowHeightSpinBox = new TQSpinBox(hbox);
lbl->setBuddy(rowHeightSpinBox);
config->setGroup("Appearance");
rowHeightSpinBox->setMaxValue(1000);
rowHeightSpinBox->setMinValue(15);
rowHeightSpinBox->setFixedWidth(60);
rowHeightSpinBox->setValue(config->readNumEntry("maximum-preview-height",50));
config->setGroup("General");
hbox= new TQHBox(page);
lbl = new TQLabel(i18n("&Undo limit:")+" ",hbox);
undoSpinBox = new TQSpinBox(hbox);
undoSpinBox->setFixedWidth(60);
lbl->setBuddy(undoSpinBox);
undoSpinBox->setMaxValue(100);
undoSpinBox->setMinValue(1);
undoSpinBox->setValue(config->readNumEntry("undo-level",20));
hbox= new TQHBox(page);
lbl = new TQLabel(i18n("&Redo limit:")+" ",hbox);
redoSpinBox = new TQSpinBox(hbox);
redoSpinBox->setFixedWidth(60);
redoSpinBox->setMaxValue(100);
redoSpinBox->setMinValue(1);
redoSpinBox->setValue(config->readNumEntry("redo-level",20));
lbl->setBuddy(redoSpinBox);
startWithCheck = new TQCheckBox(i18n("&Start with last used document"),page);
startWithCheck->setChecked(config->readBoolEntry("start-with-last-used-document",true));
/*
hbox= new TQHBox(page);
(void)new TQLabel(i18n("Highlight Areas")+" ",hbox);
colorizeAreaChk = new TQCheckBox(hbox);
colorizeAreaChk->setFixedWidth(60);
colorizeAreaChk->setChecked(kapp->config()->readBoolEntry("highlightareas",true));
hbox= new TQHBox(page);
(void)new TQLabel(i18n("Show alternative text")+" ",hbox);
showAltChk = new TQCheckBox(hbox);
showAltChk->setFixedWidth(60);
showAltChk->setChecked(kapp->config()->readBoolEntry("showalt",true));
*/
}
PreferencesDialog::~PreferencesDialog() {
}
void PreferencesDialog::slotDefault( void ) {
rowHeightSpinBox->setValue(50);
}
void PreferencesDialog::slotOk( void ) {
slotApply();
accept();
}
void PreferencesDialog::slotApply( void ) {
config->setGroup("Appearance");
config->writeEntry("maximum-preview-height",rowHeightSpinBox->cleanText().toInt());
config->setGroup("General Options");
config->writeEntry("undo-level",undoSpinBox->cleanText().toInt());
config->writeEntry("redo-level",redoSpinBox->cleanText().toInt());
config->writeEntry("start-with-last-used-document", startWithCheck->isChecked());
config->sync();
emit applyClicked();
}
HTMLPreviewDialog::HTMLPreviewDialog(TQWidget* parent, KURL url, const TQString & htmlCode)
: KDialogBase(parent, "", true, i18n("Preview"), KDialogBase::Ok)
{
tempFile = new KTempFile(url.directory(false), ".html");
tempFile->setAutoDelete(true);
(*tempFile->textStream()) << htmlCode;
kdDebug() << "HTMLPreviewDialog: TempFile : " << tempFile->name() << endl;
tempFile->close();
TQVBox *page = makeVBoxMainWidget();
htmlPart = new TDEHTMLPart(page,"htmlpart");
// htmlView = new TDEHTMLView(htmlPart, page);
// htmlView->setVScrollBarMode(TQScrollView::Auto);
// htmlView->setHScrollBarMode(TQScrollView::Auto);
// dialog->resize(dialog->calculateSize(edit->maxLineWidth(),edit->numLines()*));
// dialog->adjustSize();
TQLabel* lbl = new TQLabel(page,"urllabel");
connect( htmlPart, TQ_SIGNAL( onURL(const TQString&)), lbl, TQ_SLOT( setText(const TQString&)));
}
HTMLPreviewDialog::~HTMLPreviewDialog() {
delete tempFile;
delete htmlPart;
}
void HTMLPreviewDialog::show() {
KDialogBase::show();
htmlPart->openURL(KURL( tempFile->name() ));
// htmlView->layout();
// htmlView->repaint();
resize(800,600);
}
#include "kimedialogs.moc"