00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifdef HAVE_CONFIG_H
00022 #include <config.h>
00023 #endif
00024
00025 #include <qbitmap.h>
00026 #include <qbuttongroup.h>
00027 #include <qcheckbox.h>
00028 #include <qcursor.h>
00029 #include <qlabel.h>
00030 #include <qlayout.h>
00031 #include <qlineedit.h>
00032 #include <qpixmap.h>
00033 #include <qpushbutton.h>
00034 #include <qslider.h>
00035 #include <qtoolbutton.h>
00036 #include <qvbox.h>
00037
00038 #ifdef HAVE_GL
00039 #include <qgl.h>
00040 #endif
00041
00042 #include <KoImageResource.h>
00043
00044 #include <kcolorbutton.h>
00045 #include <kcombobox.h>
00046 #include <kfiledialog.h>
00047 #include <kiconloader.h>
00048 #include <klineedit.h>
00049 #include <klocale.h>
00050 #include <knuminput.h>
00051 #include <kurlrequester.h>
00052
00053 #include "squeezedcombobox.h"
00054 #include "kis_cmb_idlist.h"
00055 #include "kis_colorspace.h"
00056 #include "kis_colorspace_factory_registry.h"
00057 #include "kis_cursor.h"
00058 #include "kis_config.h"
00059 #include "kis_dlg_preferences.h"
00060 #include "kis_factory.h"
00061 #include "kis_id.h"
00062 #include "kis_meta_registry.h"
00063 #include "kis_profile.h"
00064
00065 #include "kis_canvas.h"
00066
00067 #include "wdgcolorsettings.h"
00068 #include "wdgperformancesettings.h"
00069 #include "wdggeneralsettings.h"
00070
00071
00072 #include "tiles/kis_tilemanager.h"
00073
00074 GeneralTab::GeneralTab( QWidget *_parent, const char *_name )
00075 : WdgGeneralSettings( _parent, _name )
00076 {
00077
00078 KisConfig cfg;
00079
00080 m_cmbCursorShape->setCurrentItem(cfg.cursorStyle());
00081 grpDockability->setButton(cfg.dockability());
00082 numDockerFontSize->setValue((int)cfg.dockerFontSize());
00083 }
00084
00085 void GeneralTab::setDefault()
00086 {
00087 KisConfig cfg;
00088
00089 m_cmbCursorShape->setCurrentItem( cfg.getDefaultCursorStyle());
00090 grpDockability->setButton(cfg.getDefaultDockability());
00091 numDockerFontSize->setValue((int)(cfg.getDefaultDockerFontSize()));
00092 }
00093
00094 enumCursorStyle GeneralTab::cursorStyle()
00095 {
00096 return (enumCursorStyle)m_cmbCursorShape->currentItem();
00097 }
00098
00099 enumKoDockability GeneralTab::dockability()
00100 {
00101 return (enumKoDockability)grpDockability->selectedId();
00102 }
00103
00104 float GeneralTab::dockerFontSize()
00105 {
00106 return (float)numDockerFontSize->value();
00107 }
00108
00109
00110
00111 ColorSettingsTab::ColorSettingsTab(QWidget *parent, const char *name )
00112 : QWidget(parent, name)
00113 {
00114
00115
00116
00117 QGridLayout * l = new QGridLayout( this, 1, 1, KDialog::marginHint(), KDialog::spacingHint());
00118 l->setMargin(0);
00119 m_page = new WdgColorSettings(this);
00120 l->addWidget( m_page, 0, 0);
00121
00122 KisConfig cfg;
00123
00124 m_page->cmbWorkingColorSpace->setIDList(KisMetaRegistry::instance()->csRegistry()->listKeys());
00125 m_page->cmbWorkingColorSpace->setCurrentText(cfg.workingColorSpace());
00126
00127 m_page->cmbPrintingColorSpace->setIDList(KisMetaRegistry::instance()->csRegistry()->listKeys());
00128 m_page->cmbPrintingColorSpace->setCurrentText(cfg.printerColorSpace());
00129
00130 refillMonitorProfiles(KisID("RGBA", ""));
00131 refillPrintProfiles(KisID(cfg.printerColorSpace(), ""));
00132
00133 if(m_page->cmbMonitorProfile->contains(cfg.monitorProfile()))
00134 m_page->cmbMonitorProfile->setCurrentText(cfg.monitorProfile());
00135 if(m_page->cmbPrintProfile->contains(cfg.printerProfile()))
00136 m_page->cmbPrintProfile->setCurrentText(cfg.printerProfile());
00137 m_page->chkBlackpoint->setChecked(cfg.useBlackPointCompensation());
00138 m_page->grpPasteBehaviour->setButton(cfg.pasteBehaviour());
00139 m_page->cmbMonitorIntent->setCurrentItem(cfg.renderIntent());
00140
00141 connect(m_page->cmbPrintingColorSpace, SIGNAL(activated(const KisID &)),
00142 this, SLOT(refillPrintProfiles(const KisID &)));
00143 }
00144
00145 void ColorSettingsTab::setDefault()
00146 {
00147 m_page->cmbWorkingColorSpace->setCurrentText("RGBA");
00148
00149 m_page->cmbPrintingColorSpace->setCurrentText("CMYK");
00150 refillPrintProfiles(KisID("CMYK", ""));
00151
00152 m_page->chkBlackpoint->setChecked(false);
00153 m_page->cmbMonitorIntent->setCurrentItem(INTENT_PERCEPTUAL);
00154 m_page->grpPasteBehaviour->setButton(2);
00155 }
00156
00157
00158 void ColorSettingsTab::refillMonitorProfiles(const KisID & s)
00159 {
00160 KisColorSpaceFactory * csf = KisMetaRegistry::instance()->csRegistry()->get(s);
00161
00162 m_page->cmbMonitorProfile->clear();
00163
00164 if ( !csf )
00165 return;
00166
00167 QValueVector<KisProfile *> profileList = KisMetaRegistry::instance()->csRegistry()->profilesFor( csf );
00168 QValueVector<KisProfile *> ::iterator it;
00169 for ( it = profileList.begin(); it != profileList.end(); ++it ) {
00170 if ((*it)->deviceClass() == icSigDisplayClass)
00171 m_page->cmbMonitorProfile->insertItem((*it)->productName());
00172 }
00173
00174 m_page->cmbMonitorProfile->setCurrentText(csf->defaultProfile());
00175 }
00176
00177 void ColorSettingsTab::refillPrintProfiles(const KisID & s)
00178 {
00179 KisColorSpaceFactory * csf = KisMetaRegistry::instance()->csRegistry()->get(s);
00180
00181 m_page->cmbPrintProfile->clear();
00182
00183 if ( !csf )
00184 return;
00185
00186 QValueVector<KisProfile *> profileList = KisMetaRegistry::instance()->csRegistry()->profilesFor( csf );
00187 QValueVector<KisProfile *> ::iterator it;
00188 for ( it = profileList.begin(); it != profileList.end(); ++it ) {
00189 if ((*it)->deviceClass() == icSigOutputClass)
00190 m_page->cmbPrintProfile->insertItem((*it)->productName());
00191 }
00192
00193 m_page->cmbPrintProfile->setCurrentText(csf->defaultProfile());
00194 }
00195
00196
00197
00198 PerformanceTab::PerformanceTab(QWidget *parent, const char *name )
00199 : WdgPerformanceSettings(parent, name)
00200 {
00201
00202
00203
00204 KisConfig cfg;
00205
00206
00207 m_swappiness->setValue(cfg.swappiness() / 50);
00208 m_maxTiles->setValue(cfg.maxTilesInMem());
00209 }
00210
00211 void PerformanceTab::setDefault()
00212 {
00213 m_swappiness->setValue(3);
00214 m_maxTiles->setValue(500);
00215 }
00216
00217
00218
00219 TabletSettingsTab::TabletSettingsTab( QWidget *parent, const char *name)
00220 : WdgTabletSettings( parent, name )
00221 {
00222 #ifdef EXTENDED_X11_TABLET_SUPPORT
00223 initTabletDevices();
00224 #else
00225 grpTabletDevices->hide();
00226 #endif
00227 }
00228
00229 void TabletSettingsTab::setDefault()
00230 {
00231 }
00232
00233 void TabletSettingsTab::applySettings()
00234 {
00235
00236 #ifdef EXTENDED_X11_TABLET_SUPPORT
00237 applyTabletDeviceSettings();
00238 #endif
00239 }
00240
00241 #ifdef EXTENDED_X11_TABLET_SUPPORT
00242 TabletSettingsTab::DeviceSettings::DeviceSettings(KisCanvasWidget::X11TabletDevice *tabletDevice, bool enabled,
00243 Q_INT32 xAxis, Q_INT32 yAxis, Q_INT32 pressureAxis,
00244 Q_INT32 xTiltAxis, Q_INT32 yTiltAxis, Q_INT32 wheelAxis,
00245 Q_INT32 toolIDAxis, Q_INT32 serialNumberAxis)
00246 : m_tabletDevice(tabletDevice),
00247 m_enabled(enabled),
00248 m_xAxis(xAxis),
00249 m_yAxis(yAxis),
00250 m_pressureAxis(pressureAxis),
00251 m_xTiltAxis(xTiltAxis),
00252 m_yTiltAxis(yTiltAxis),
00253 m_wheelAxis(wheelAxis),
00254 m_toolIDAxis(toolIDAxis),
00255 m_serialNumberAxis(serialNumberAxis)
00256 {
00257 }
00258
00259 TabletSettingsTab::DeviceSettings::DeviceSettings()
00260 : m_tabletDevice(0),
00261 m_enabled(false),
00262 m_xAxis(KisCanvasWidget::X11TabletDevice::NoAxis),
00263 m_yAxis(KisCanvasWidget::X11TabletDevice::NoAxis),
00264 m_pressureAxis(KisCanvasWidget::X11TabletDevice::NoAxis),
00265 m_xTiltAxis(KisCanvasWidget::X11TabletDevice::NoAxis),
00266 m_yTiltAxis(KisCanvasWidget::X11TabletDevice::NoAxis),
00267 m_wheelAxis(KisCanvasWidget::X11TabletDevice::NoAxis),
00268 m_toolIDAxis(KisCanvasWidget::X11TabletDevice::NoAxis),
00269 m_serialNumberAxis(KisCanvasWidget::X11TabletDevice::NoAxis)
00270 {
00271 }
00272
00273 void TabletSettingsTab::DeviceSettings::applySettings()
00274 {
00275 m_tabletDevice->setEnabled(enabled());
00276 m_tabletDevice->setXAxis(xAxis());
00277 m_tabletDevice->setYAxis(yAxis());
00278 m_tabletDevice->setPressureAxis(pressureAxis());
00279 m_tabletDevice->setXTiltAxis(xTiltAxis());
00280 m_tabletDevice->setYTiltAxis(yTiltAxis());
00281 m_tabletDevice->setWheelAxis(wheelAxis());
00282 m_tabletDevice->setToolIDAxis(toolIDAxis());
00283 m_tabletDevice->setSerialNumberAxis(serialNumberAxis());
00284 m_tabletDevice->writeSettingsToConfig();
00285 }
00286
00287 void TabletSettingsTab::DeviceSettings::setEnabled(bool enabled)
00288 {
00289 m_enabled = enabled;
00290 }
00291
00292 bool TabletSettingsTab::DeviceSettings::enabled() const
00293 {
00294 return m_enabled;
00295 }
00296
00297 Q_INT32 TabletSettingsTab::DeviceSettings::numAxes() const
00298 {
00299 return m_tabletDevice->numAxes();
00300 }
00301
00302 void TabletSettingsTab::DeviceSettings::setXAxis(Q_INT32 axis)
00303 {
00304 m_xAxis = axis;
00305 }
00306
00307 void TabletSettingsTab::DeviceSettings::setYAxis(Q_INT32 axis)
00308 {
00309 m_yAxis = axis;
00310 }
00311
00312 void TabletSettingsTab::DeviceSettings::setPressureAxis(Q_INT32 axis)
00313 {
00314 m_pressureAxis = axis;
00315 }
00316
00317 void TabletSettingsTab::DeviceSettings::setXTiltAxis(Q_INT32 axis)
00318 {
00319 m_xTiltAxis = axis;
00320 }
00321
00322 void TabletSettingsTab::DeviceSettings::setYTiltAxis(Q_INT32 axis)
00323 {
00324 m_yTiltAxis = axis;
00325 }
00326
00327 void TabletSettingsTab::DeviceSettings::setWheelAxis(Q_INT32 axis)
00328 {
00329 m_wheelAxis = axis;
00330 }
00331
00332 void TabletSettingsTab::DeviceSettings::setToolIDAxis(Q_INT32 axis)
00333 {
00334 m_toolIDAxis = axis;
00335 }
00336
00337 void TabletSettingsTab::DeviceSettings::setSerialNumberAxis(Q_INT32 axis)
00338 {
00339 m_serialNumberAxis = axis;
00340 }
00341
00342 Q_INT32 TabletSettingsTab::DeviceSettings::xAxis() const
00343 {
00344 return m_xAxis;
00345 }
00346
00347 Q_INT32 TabletSettingsTab::DeviceSettings::yAxis() const
00348 {
00349 return m_yAxis;
00350 }
00351
00352 Q_INT32 TabletSettingsTab::DeviceSettings::pressureAxis() const
00353 {
00354 return m_pressureAxis;
00355 }
00356
00357 Q_INT32 TabletSettingsTab::DeviceSettings::xTiltAxis() const
00358 {
00359 return m_xTiltAxis;
00360 }
00361
00362 Q_INT32 TabletSettingsTab::DeviceSettings::yTiltAxis() const
00363 {
00364 return m_yTiltAxis;
00365 }
00366
00367 Q_INT32 TabletSettingsTab::DeviceSettings::wheelAxis() const
00368 {
00369 return m_wheelAxis;
00370 }
00371
00372 Q_INT32 TabletSettingsTab::DeviceSettings::toolIDAxis() const
00373 {
00374 return m_toolIDAxis;
00375 }
00376
00377 Q_INT32 TabletSettingsTab::DeviceSettings::serialNumberAxis() const
00378 {
00379 return m_serialNumberAxis;
00380 }
00381
00382 TabletSettingsTab::TabletDeviceSettingsDialog::TabletDeviceSettingsDialog(const QString& deviceName, DeviceSettings settings,
00383 QWidget *parent, const char *name)
00384 : super(parent, name, true, "", Ok | Cancel)
00385 {
00386 setCaption(i18n("Configure %1").arg(deviceName));
00387
00388 m_page = new WdgTabletDeviceSettings(this);
00389
00390 setMainWidget(m_page);
00391 resize(m_page->sizeHint());
00392
00393 for (Q_INT32 axis = 0; axis < settings.numAxes(); axis++) {
00394 QString axisString;
00395
00396 axisString.setNum(axis);
00397
00398 m_page->cbX->insertItem(axisString);
00399 m_page->cbY->insertItem(axisString);
00400 m_page->cbPressure->insertItem(axisString);
00401 m_page->cbXTilt->insertItem(axisString);
00402 m_page->cbYTilt->insertItem(axisString);
00403 m_page->cbWheel->insertItem(axisString);
00404
00405
00406 }
00407
00408 m_page->cbX->insertItem(i18n("None"));
00409 m_page->cbY->insertItem(i18n("None"));
00410 m_page->cbPressure->insertItem(i18n("None"));
00411 m_page->cbXTilt->insertItem(i18n("None"));
00412 m_page->cbYTilt->insertItem(i18n("None"));
00413 m_page->cbWheel->insertItem(i18n("None"));
00414
00415
00416
00417 if (settings.xAxis() != KisCanvasWidget::X11TabletDevice::NoAxis) {
00418 m_page->cbX->setCurrentItem(settings.xAxis());
00419 } else {
00420 m_page->cbX->setCurrentItem(settings.numAxes());
00421 }
00422
00423 if (settings.yAxis() != KisCanvasWidget::X11TabletDevice::NoAxis) {
00424 m_page->cbY->setCurrentItem(settings.yAxis());
00425 } else {
00426 m_page->cbY->setCurrentItem(settings.numAxes());
00427 }
00428
00429 if (settings.pressureAxis() != KisCanvasWidget::X11TabletDevice::NoAxis) {
00430 m_page->cbPressure->setCurrentItem(settings.pressureAxis());
00431 } else {
00432 m_page->cbPressure->setCurrentItem(settings.numAxes());
00433 }
00434
00435 if (settings.xTiltAxis() != KisCanvasWidget::X11TabletDevice::NoAxis) {
00436 m_page->cbXTilt->setCurrentItem(settings.xTiltAxis());
00437 } else {
00438 m_page->cbXTilt->setCurrentItem(settings.numAxes());
00439 }
00440
00441 if (settings.yTiltAxis() != KisCanvasWidget::X11TabletDevice::NoAxis) {
00442 m_page->cbYTilt->setCurrentItem(settings.yTiltAxis());
00443 } else {
00444 m_page->cbYTilt->setCurrentItem(settings.numAxes());
00445 }
00446
00447 if (settings.wheelAxis() != KisCanvasWidget::X11TabletDevice::NoAxis) {
00448 m_page->cbWheel->setCurrentItem(settings.wheelAxis());
00449 } else {
00450 m_page->cbWheel->setCurrentItem(settings.numAxes());
00451 }
00452
00453
00454
00455
00456
00457
00458
00459
00460
00461
00462
00463
00464
00465 m_settings = settings;
00466 }
00467
00468 TabletSettingsTab::TabletDeviceSettingsDialog::~TabletDeviceSettingsDialog()
00469 {
00470 delete m_page;
00471 }
00472
00473 TabletSettingsTab::DeviceSettings TabletSettingsTab::TabletDeviceSettingsDialog::settings()
00474 {
00475 const Q_INT32 noAxis = m_settings.numAxes();
00476
00477 if (m_page->cbX->currentItem() != noAxis ) {
00478 m_settings.setXAxis(m_page->cbX->currentItem());
00479 } else {
00480 m_settings.setXAxis(KisCanvasWidget::X11TabletDevice::NoAxis);
00481 }
00482
00483 if (m_page->cbY->currentItem() != noAxis ) {
00484 m_settings.setYAxis(m_page->cbY->currentItem());
00485 } else {
00486 m_settings.setYAxis(KisCanvasWidget::X11TabletDevice::NoAxis);
00487 }
00488
00489 if (m_page->cbPressure->currentItem() != noAxis ) {
00490 m_settings.setPressureAxis(m_page->cbPressure->currentItem());
00491 } else {
00492 m_settings.setPressureAxis(KisCanvasWidget::X11TabletDevice::NoAxis);
00493 }
00494
00495 if (m_page->cbXTilt->currentItem() != noAxis ) {
00496 m_settings.setXTiltAxis(m_page->cbXTilt->currentItem());
00497 } else {
00498 m_settings.setXTiltAxis(KisCanvasWidget::X11TabletDevice::NoAxis);
00499 }
00500
00501 if (m_page->cbYTilt->currentItem() != noAxis ) {
00502 m_settings.setYTiltAxis(m_page->cbYTilt->currentItem());
00503 } else {
00504 m_settings.setYTiltAxis(KisCanvasWidget::X11TabletDevice::NoAxis);
00505 }
00506
00507 if (m_page->cbWheel->currentItem() != noAxis ) {
00508 m_settings.setWheelAxis(m_page->cbWheel->currentItem());
00509 } else {
00510 m_settings.setWheelAxis(KisCanvasWidget::X11TabletDevice::NoAxis);
00511 }
00512
00513
00514
00515
00516
00517
00518
00519
00520
00521
00522
00523
00524
00525 return m_settings;
00526 }
00527
00528 void TabletSettingsTab::initTabletDevices()
00529 {
00530 connect(cbTabletDevice, SIGNAL(activated(int)), SLOT(slotActivateDevice(int)));
00531 connect(chkEnableTabletDevice, SIGNAL(toggled(bool)), SLOT(slotSetDeviceEnabled(bool)));
00532 connect(btnConfigureTabletDevice, SIGNAL(clicked()), SLOT(slotConfigureDevice()));
00533
00534 KisCanvasWidget::X11XIDTabletDeviceMap& tabletDevices = KisCanvasWidget::tabletDeviceMap();
00535
00536 cbTabletDevice->clear();
00537
00538 if (!tabletDevices.empty()) {
00539 KisCanvasWidget::X11XIDTabletDeviceMap::iterator it;
00540
00541 for (it = tabletDevices.begin(); it != tabletDevices.end(); ++it) {
00542 KisCanvasWidget::X11TabletDevice& device = (*it).second;
00543
00544 m_deviceSettings.append(DeviceSettings(&device, device.enabled(), device.xAxis(), device.yAxis(),
00545 device.pressureAxis(), device.xTiltAxis(), device.yTiltAxis(), device.wheelAxis(),
00546 device.toolIDAxis(), device.serialNumberAxis()));
00547 cbTabletDevice->insertItem(device.name());
00548 }
00549 slotActivateDevice(0);
00550 } else {
00551 cbTabletDevice->insertItem(i18n("No devices detected"));
00552 cbTabletDevice->setEnabled(false);
00553 chkEnableTabletDevice->setEnabled(false);
00554 btnConfigureTabletDevice->setEnabled(false);
00555 }
00556 }
00557
00558 void TabletSettingsTab::slotActivateDevice(int deviceIndex)
00559 {
00560 bool deviceEnabled = m_deviceSettings[deviceIndex].enabled();
00561
00562 chkEnableTabletDevice->setChecked(deviceEnabled);
00563 slotSetDeviceEnabled(deviceEnabled);
00564 }
00565
00566 void TabletSettingsTab::slotSetDeviceEnabled(bool enabled)
00567 {
00568 btnConfigureTabletDevice->setEnabled(enabled);
00569 m_deviceSettings[cbTabletDevice->currentItem()].setEnabled(enabled);
00570 }
00571
00572 void TabletSettingsTab::slotConfigureDevice()
00573 {
00574 TabletDeviceSettingsDialog dialog(cbTabletDevice->currentText(), m_deviceSettings[cbTabletDevice->currentItem()],
00575 this, "TabletDeviceSettings");
00576
00577 if (dialog.exec() == QDialog::Accepted)
00578 {
00579 m_deviceSettings[cbTabletDevice->currentItem()] = dialog.settings();
00580 }
00581 }
00582
00583 void TabletSettingsTab::applyTabletDeviceSettings()
00584 {
00585 for (Q_UINT32 deviceIndex = 0; deviceIndex < m_deviceSettings.count(); ++deviceIndex) {
00586 m_deviceSettings[deviceIndex].applySettings();
00587 }
00588 }
00589
00590 #else // EXTENDED_X11_TABLET_SUPPORT
00591
00592
00593
00594 void TabletSettingsTab::slotActivateDevice(int )
00595 {
00596 }
00597
00598 void TabletSettingsTab::slotSetDeviceEnabled(bool )
00599 {
00600 }
00601
00602 void TabletSettingsTab::slotConfigureDevice()
00603 {
00604 }
00605
00606 void TabletSettingsTab::applyTabletDeviceSettings()
00607 {
00608 }
00609
00610 #endif
00611
00612
00613
00614 DisplaySettingsTab::DisplaySettingsTab( QWidget *parent, const char *name)
00615 : WdgDisplaySettings( parent, name )
00616 {
00617 #ifdef HAVE_GL
00618 KisConfig cfg;
00619
00620 if (!QGLFormat::hasOpenGL()) {
00621 cbUseOpenGL->setEnabled(false);
00622
00623 } else {
00624 cbUseOpenGL->setChecked(cfg.useOpenGL());
00625
00626
00627 }
00628 #else
00629 cbUseOpenGL->setEnabled(false);
00630
00631 #endif
00632
00633 connect(cbUseOpenGL, SIGNAL(toggled(bool)), SLOT(slotUseOpenGLToggled(bool)));
00634 }
00635
00636 void DisplaySettingsTab::setDefault()
00637 {
00638 cbUseOpenGL->setChecked(false);
00639
00640
00641 }
00642
00643 void DisplaySettingsTab::slotUseOpenGLToggled(bool )
00644 {
00645
00646 }
00647
00648
00649 GridSettingsTab::GridSettingsTab(QWidget* parent) : WdgGridSettingsBase(parent)
00650 {
00651 KisConfig cfg;
00652 selectMainStyle->setCurrentItem(cfg.getGridMainStyle());
00653 selectSubdivisionStyle->setCurrentItem(cfg.getGridSubdivisionStyle());
00654
00655 #if KDE_IS_VERSION(3,4,0)
00656 colorMain->setDefaultColor( QColor( 99, 99, 99 ) );
00657 colorSubdivision->setDefaultColor( QColor( 200, 200, 200 ) );
00658 #endif
00659 colorMain->setColor(cfg.getGridMainColor());
00660 colorSubdivision->setColor(cfg.getGridSubdivisionColor());
00661
00662 intHSpacing->setValue( cfg.getGridHSpacing() );
00663 intVSpacing->setValue( cfg.getGridVSpacing() );
00664 intSubdivision->setValue( cfg.getGridSubdivisions());
00665 intOffsetX->setValue( cfg.getGridOffsetX());
00666 intOffsetY->setValue( cfg.getGridOffsetY());
00667
00668 linkSpacingToggled(true);
00669 connect(bnLinkSpacing, SIGNAL(toggled(bool)), this, SLOT(linkSpacingToggled( bool )));
00670
00671 connect(intHSpacing, SIGNAL(valueChanged(int)),this,SLOT(spinBoxHSpacingChanged(int)));
00672 connect(intVSpacing, SIGNAL(valueChanged(int)),this,SLOT(spinBoxVSpacingChanged(int)));
00673
00674
00675 }
00676
00677 void GridSettingsTab::setDefault()
00678 {
00679 KisConfig cfg;
00680 selectMainStyle->setCurrentItem(0);
00681 selectSubdivisionStyle->setCurrentItem(1);
00682
00683 colorMain->setColor(QColor(99,99,99));
00684 colorSubdivision->setColor(QColor(199,199,199));
00685
00686 intHSpacing->setValue( 10 );
00687 intVSpacing->setValue( 10 );
00688 intSubdivision->setValue( 1 );
00689 intOffsetX->setValue( 0 );
00690 intOffsetY->setValue( 0 );
00691 }
00692
00693 void GridSettingsTab::spinBoxHSpacingChanged(int v)
00694 {
00695 if(m_linkSpacing)
00696 {
00697 intVSpacing->setValue(v);
00698 }
00699 }
00700
00701 void GridSettingsTab::spinBoxVSpacingChanged(int v )
00702 {
00703 if(m_linkSpacing)
00704 {
00705 intHSpacing->setValue(v);
00706 }
00707 }
00708
00709
00710 void GridSettingsTab::linkSpacingToggled(bool b)
00711 {
00712 m_linkSpacing = b;
00713
00714 KoImageResource kir;
00715 if (b) {
00716 bnLinkSpacing->setPixmap(kir.chain());
00717 }
00718 else {
00719 bnLinkSpacing->setPixmap(kir.chainBroken());
00720 }
00721 }
00722
00723
00724
00725
00726 PreferencesDialog::PreferencesDialog( QWidget* parent, const char* name )
00727 : KDialogBase( IconList, i18n("Preferences"), Ok | Cancel | Help | Default , Ok, parent, name, true, true )
00728 {
00729 QVBox *vbox;
00730
00731 vbox = addVBoxPage( i18n( "General"), i18n( "General"), BarIcon( "misc", KIcon::SizeMedium ));
00732 m_general = new GeneralTab( vbox );
00733 #ifdef HAVE_GL
00734 vbox = addVBoxPage ( i18n( "Display" ), i18n( "Display" ), BarIcon( "kscreensaver", KIcon::SizeMedium ));
00735 m_displaySettings = new DisplaySettingsTab( vbox );
00736 #endif
00737 vbox = addVBoxPage( i18n( "Color Management"), i18n( "Color"), BarIcon( "colorize", KIcon::SizeMedium ));
00738 m_colorSettings = new ColorSettingsTab( vbox );
00739
00740 vbox = addVBoxPage( i18n( "Performance"), i18n( "Performance"), BarIcon( "fork", KIcon::SizeMedium ));
00741 m_performanceSettings = new PerformanceTab ( vbox );
00742
00743 vbox = addVBoxPage ( i18n( "Tablet" ), i18n( "Tablet" ), BarIcon( "tablet", KIcon::SizeMedium ));
00744 m_tabletSettings = new TabletSettingsTab( vbox );
00745
00746 vbox = addVBoxPage ( i18n( "Grid" ), i18n( "Grid" ), BarIcon( "grid", KIcon::SizeMedium ));
00747 m_gridSettings = new GridSettingsTab( vbox );
00748
00749 }
00750
00751 PreferencesDialog::~PreferencesDialog()
00752 {
00753 }
00754
00755 void PreferencesDialog::slotDefault()
00756 {
00757 m_general->setDefault();
00758 m_colorSettings->setDefault();
00759 m_tabletSettings->setDefault();
00760 m_performanceSettings->setDefault();
00761 #ifdef HAVE_GL
00762 m_displaySettings->setDefault();
00763 #endif
00764 m_gridSettings->setDefault();
00765 }
00766
00767 bool PreferencesDialog::editPreferences()
00768 {
00769 PreferencesDialog* dialog;
00770
00771 dialog = new PreferencesDialog();
00772 bool baccept = ( dialog->exec() == Accepted );
00773 if( baccept )
00774 {
00775 KisConfig cfg;
00776 cfg.setCursorStyle(dialog->m_general->cursorStyle());
00777 cfg.setDockability( dialog->m_general->dockability() );
00778 cfg.setDockerFontSize( dialog->m_general->dockerFontSize() );
00779
00780
00781 cfg.setMonitorProfile( dialog->m_colorSettings->m_page->cmbMonitorProfile->currentText());
00782 cfg.setWorkingColorSpace( dialog->m_colorSettings->m_page->cmbWorkingColorSpace->currentText());
00783 cfg.setPrinterColorSpace( dialog->m_colorSettings->m_page->cmbPrintingColorSpace->currentText());
00784 cfg.setPrinterProfile( dialog->m_colorSettings->m_page->cmbPrintProfile->currentText());
00785
00786 cfg.setUseBlackPointCompensation( dialog->m_colorSettings->m_page->chkBlackpoint->isChecked());
00787 cfg.setPasteBehaviour( dialog->m_colorSettings->m_page->grpPasteBehaviour->selectedId());
00788 cfg.setRenderIntent( dialog->m_colorSettings->m_page->cmbMonitorIntent->currentItem());
00789
00790
00791 cfg.setSwappiness(dialog->m_performanceSettings->m_swappiness->value() * 50);
00792 cfg.setMaxTilesInMem(dialog->m_performanceSettings->m_maxTiles->value());
00793
00794 KisTileManager::instance()->configChanged();
00795
00796 dialog->m_tabletSettings->applySettings();
00797
00798 #ifdef HAVE_GL
00799 cfg.setUseOpenGL(dialog->m_displaySettings->cbUseOpenGL->isChecked());
00800
00801 #endif
00802
00803
00804 cfg.setGridMainStyle( dialog->m_gridSettings->selectMainStyle->currentItem() );
00805 cfg.setGridSubdivisionStyle( dialog->m_gridSettings->selectSubdivisionStyle->currentItem() );
00806
00807 cfg.setGridMainColor( dialog->m_gridSettings->colorMain->color() );
00808 cfg.setGridSubdivisionColor(dialog->m_gridSettings->colorSubdivision->color() );
00809
00810 cfg.setGridHSpacing( dialog->m_gridSettings->intHSpacing->value( ));
00811 cfg.setGridVSpacing( dialog->m_gridSettings->intVSpacing->value( ));
00812 cfg.setGridSubdivisions( dialog->m_gridSettings->intSubdivision->value( ));
00813 cfg.setGridOffsetX( dialog->m_gridSettings->intOffsetX->value( ));
00814 cfg.setGridOffsetY( dialog->m_gridSettings->intOffsetY->value( ));
00815
00816 }
00817 delete dialog;
00818 return baccept;
00819 }
00820
00821 #include "kis_dlg_preferences.moc"