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 KisConfig cfg;
00223
00224 slPressure->setValue( 100 - cfg.getPressureCorrection() );
00225
00226 #ifdef EXTENDED_X11_TABLET_SUPPORT
00227 initTabletDevices();
00228 #else
00229 grpTabletDevices->hide();
00230 #endif
00231 }
00232
00233 void TabletSettingsTab::setDefault()
00234 {
00235 KisConfig cfg;
00236
00237 slPressure->setValue(100 - cfg.getDefaultPressureCorrection());
00238 }
00239
00240 void TabletSettingsTab::applySettings()
00241 {
00242 KisConfig cfg;
00243
00244
00245 cfg.setPressureCorrection(100 - slPressure->value());
00246
00247 #ifdef EXTENDED_X11_TABLET_SUPPORT
00248 applyTabletDeviceSettings();
00249 #endif
00250 }
00251
00252 #ifdef EXTENDED_X11_TABLET_SUPPORT
00253 TabletSettingsTab::DeviceSettings::DeviceSettings(KisCanvasWidget::X11TabletDevice *tabletDevice, bool enabled,
00254 Q_INT32 xAxis, Q_INT32 yAxis, Q_INT32 pressureAxis,
00255 Q_INT32 xTiltAxis, Q_INT32 yTiltAxis, Q_INT32 wheelAxis,
00256 Q_INT32 toolIDAxis, Q_INT32 serialNumberAxis)
00257 : m_tabletDevice(tabletDevice),
00258 m_enabled(enabled),
00259 m_xAxis(xAxis),
00260 m_yAxis(yAxis),
00261 m_pressureAxis(pressureAxis),
00262 m_xTiltAxis(xTiltAxis),
00263 m_yTiltAxis(yTiltAxis),
00264 m_wheelAxis(wheelAxis),
00265 m_toolIDAxis(toolIDAxis),
00266 m_serialNumberAxis(serialNumberAxis)
00267 {
00268 }
00269
00270 TabletSettingsTab::DeviceSettings::DeviceSettings()
00271 : m_tabletDevice(0),
00272 m_enabled(false),
00273 m_xAxis(KisCanvasWidget::X11TabletDevice::NoAxis),
00274 m_yAxis(KisCanvasWidget::X11TabletDevice::NoAxis),
00275 m_pressureAxis(KisCanvasWidget::X11TabletDevice::NoAxis),
00276 m_xTiltAxis(KisCanvasWidget::X11TabletDevice::NoAxis),
00277 m_yTiltAxis(KisCanvasWidget::X11TabletDevice::NoAxis),
00278 m_wheelAxis(KisCanvasWidget::X11TabletDevice::NoAxis),
00279 m_toolIDAxis(KisCanvasWidget::X11TabletDevice::NoAxis),
00280 m_serialNumberAxis(KisCanvasWidget::X11TabletDevice::NoAxis)
00281 {
00282 }
00283
00284 void TabletSettingsTab::DeviceSettings::applySettings()
00285 {
00286 m_tabletDevice->setEnabled(enabled());
00287 m_tabletDevice->setXAxis(xAxis());
00288 m_tabletDevice->setYAxis(yAxis());
00289 m_tabletDevice->setPressureAxis(pressureAxis());
00290 m_tabletDevice->setXTiltAxis(xTiltAxis());
00291 m_tabletDevice->setYTiltAxis(yTiltAxis());
00292 m_tabletDevice->setWheelAxis(wheelAxis());
00293 m_tabletDevice->setToolIDAxis(toolIDAxis());
00294 m_tabletDevice->setSerialNumberAxis(serialNumberAxis());
00295 m_tabletDevice->writeSettingsToConfig();
00296 }
00297
00298 void TabletSettingsTab::DeviceSettings::setEnabled(bool enabled)
00299 {
00300 m_enabled = enabled;
00301 }
00302
00303 bool TabletSettingsTab::DeviceSettings::enabled() const
00304 {
00305 return m_enabled;
00306 }
00307
00308 Q_INT32 TabletSettingsTab::DeviceSettings::numAxes() const
00309 {
00310 return m_tabletDevice->numAxes();
00311 }
00312
00313 void TabletSettingsTab::DeviceSettings::setXAxis(Q_INT32 axis)
00314 {
00315 m_xAxis = axis;
00316 }
00317
00318 void TabletSettingsTab::DeviceSettings::setYAxis(Q_INT32 axis)
00319 {
00320 m_yAxis = axis;
00321 }
00322
00323 void TabletSettingsTab::DeviceSettings::setPressureAxis(Q_INT32 axis)
00324 {
00325 m_pressureAxis = axis;
00326 }
00327
00328 void TabletSettingsTab::DeviceSettings::setXTiltAxis(Q_INT32 axis)
00329 {
00330 m_xTiltAxis = axis;
00331 }
00332
00333 void TabletSettingsTab::DeviceSettings::setYTiltAxis(Q_INT32 axis)
00334 {
00335 m_yTiltAxis = axis;
00336 }
00337
00338 void TabletSettingsTab::DeviceSettings::setWheelAxis(Q_INT32 axis)
00339 {
00340 m_wheelAxis = axis;
00341 }
00342
00343 void TabletSettingsTab::DeviceSettings::setToolIDAxis(Q_INT32 axis)
00344 {
00345 m_toolIDAxis = axis;
00346 }
00347
00348 void TabletSettingsTab::DeviceSettings::setSerialNumberAxis(Q_INT32 axis)
00349 {
00350 m_serialNumberAxis = axis;
00351 }
00352
00353 Q_INT32 TabletSettingsTab::DeviceSettings::xAxis() const
00354 {
00355 return m_xAxis;
00356 }
00357
00358 Q_INT32 TabletSettingsTab::DeviceSettings::yAxis() const
00359 {
00360 return m_yAxis;
00361 }
00362
00363 Q_INT32 TabletSettingsTab::DeviceSettings::pressureAxis() const
00364 {
00365 return m_pressureAxis;
00366 }
00367
00368 Q_INT32 TabletSettingsTab::DeviceSettings::xTiltAxis() const
00369 {
00370 return m_xTiltAxis;
00371 }
00372
00373 Q_INT32 TabletSettingsTab::DeviceSettings::yTiltAxis() const
00374 {
00375 return m_yTiltAxis;
00376 }
00377
00378 Q_INT32 TabletSettingsTab::DeviceSettings::wheelAxis() const
00379 {
00380 return m_wheelAxis;
00381 }
00382
00383 Q_INT32 TabletSettingsTab::DeviceSettings::toolIDAxis() const
00384 {
00385 return m_toolIDAxis;
00386 }
00387
00388 Q_INT32 TabletSettingsTab::DeviceSettings::serialNumberAxis() const
00389 {
00390 return m_serialNumberAxis;
00391 }
00392
00393 TabletSettingsTab::TabletDeviceSettingsDialog::TabletDeviceSettingsDialog(const QString& deviceName, DeviceSettings settings,
00394 QWidget *parent, const char *name)
00395 : super(parent, name, true, "", Ok | Cancel)
00396 {
00397 setCaption(i18n("Configure %1").arg(deviceName));
00398
00399 m_page = new WdgTabletDeviceSettings(this);
00400
00401 setMainWidget(m_page);
00402 resize(m_page->sizeHint());
00403
00404 for (Q_INT32 axis = 0; axis < settings.numAxes(); axis++) {
00405 QString axisString;
00406
00407 axisString.setNum(axis);
00408
00409 m_page->cbX->insertItem(axisString);
00410 m_page->cbY->insertItem(axisString);
00411 m_page->cbPressure->insertItem(axisString);
00412 m_page->cbXTilt->insertItem(axisString);
00413 m_page->cbYTilt->insertItem(axisString);
00414 m_page->cbWheel->insertItem(axisString);
00415
00416
00417 }
00418
00419 m_page->cbX->insertItem(i18n("None"));
00420 m_page->cbY->insertItem(i18n("None"));
00421 m_page->cbPressure->insertItem(i18n("None"));
00422 m_page->cbXTilt->insertItem(i18n("None"));
00423 m_page->cbYTilt->insertItem(i18n("None"));
00424 m_page->cbWheel->insertItem(i18n("None"));
00425
00426
00427
00428 if (settings.xAxis() != KisCanvasWidget::X11TabletDevice::NoAxis) {
00429 m_page->cbX->setCurrentItem(settings.xAxis());
00430 } else {
00431 m_page->cbX->setCurrentItem(settings.numAxes());
00432 }
00433
00434 if (settings.yAxis() != KisCanvasWidget::X11TabletDevice::NoAxis) {
00435 m_page->cbY->setCurrentItem(settings.yAxis());
00436 } else {
00437 m_page->cbY->setCurrentItem(settings.numAxes());
00438 }
00439
00440 if (settings.pressureAxis() != KisCanvasWidget::X11TabletDevice::NoAxis) {
00441 m_page->cbPressure->setCurrentItem(settings.pressureAxis());
00442 } else {
00443 m_page->cbPressure->setCurrentItem(settings.numAxes());
00444 }
00445
00446 if (settings.xTiltAxis() != KisCanvasWidget::X11TabletDevice::NoAxis) {
00447 m_page->cbXTilt->setCurrentItem(settings.xTiltAxis());
00448 } else {
00449 m_page->cbXTilt->setCurrentItem(settings.numAxes());
00450 }
00451
00452 if (settings.yTiltAxis() != KisCanvasWidget::X11TabletDevice::NoAxis) {
00453 m_page->cbYTilt->setCurrentItem(settings.yTiltAxis());
00454 } else {
00455 m_page->cbYTilt->setCurrentItem(settings.numAxes());
00456 }
00457
00458 if (settings.wheelAxis() != KisCanvasWidget::X11TabletDevice::NoAxis) {
00459 m_page->cbWheel->setCurrentItem(settings.wheelAxis());
00460 } else {
00461 m_page->cbWheel->setCurrentItem(settings.numAxes());
00462 }
00463
00464
00465
00466
00467
00468
00469
00470
00471
00472
00473
00474
00475
00476 m_settings = settings;
00477 }
00478
00479 TabletSettingsTab::TabletDeviceSettingsDialog::~TabletDeviceSettingsDialog()
00480 {
00481 delete m_page;
00482 }
00483
00484 TabletSettingsTab::DeviceSettings TabletSettingsTab::TabletDeviceSettingsDialog::settings()
00485 {
00486 const Q_INT32 noAxis = m_settings.numAxes();
00487
00488 if (m_page->cbX->currentItem() != noAxis ) {
00489 m_settings.setXAxis(m_page->cbX->currentItem());
00490 } else {
00491 m_settings.setXAxis(KisCanvasWidget::X11TabletDevice::NoAxis);
00492 }
00493
00494 if (m_page->cbY->currentItem() != noAxis ) {
00495 m_settings.setYAxis(m_page->cbY->currentItem());
00496 } else {
00497 m_settings.setYAxis(KisCanvasWidget::X11TabletDevice::NoAxis);
00498 }
00499
00500 if (m_page->cbPressure->currentItem() != noAxis ) {
00501 m_settings.setPressureAxis(m_page->cbPressure->currentItem());
00502 } else {
00503 m_settings.setPressureAxis(KisCanvasWidget::X11TabletDevice::NoAxis);
00504 }
00505
00506 if (m_page->cbXTilt->currentItem() != noAxis ) {
00507 m_settings.setXTiltAxis(m_page->cbXTilt->currentItem());
00508 } else {
00509 m_settings.setXTiltAxis(KisCanvasWidget::X11TabletDevice::NoAxis);
00510 }
00511
00512 if (m_page->cbYTilt->currentItem() != noAxis ) {
00513 m_settings.setYTiltAxis(m_page->cbYTilt->currentItem());
00514 } else {
00515 m_settings.setYTiltAxis(KisCanvasWidget::X11TabletDevice::NoAxis);
00516 }
00517
00518 if (m_page->cbWheel->currentItem() != noAxis ) {
00519 m_settings.setWheelAxis(m_page->cbWheel->currentItem());
00520 } else {
00521 m_settings.setWheelAxis(KisCanvasWidget::X11TabletDevice::NoAxis);
00522 }
00523
00524
00525
00526
00527
00528
00529
00530
00531
00532
00533
00534
00535
00536 return m_settings;
00537 }
00538
00539 void TabletSettingsTab::initTabletDevices()
00540 {
00541 connect(cbTabletDevice, SIGNAL(activated(int)), SLOT(slotActivateDevice(int)));
00542 connect(chkEnableTabletDevice, SIGNAL(toggled(bool)), SLOT(slotSetDeviceEnabled(bool)));
00543 connect(btnConfigureTabletDevice, SIGNAL(clicked()), SLOT(slotConfigureDevice()));
00544
00545 KisCanvasWidget::X11XIDTabletDeviceMap& tabletDevices = KisCanvasWidget::tabletDeviceMap();
00546
00547 cbTabletDevice->clear();
00548
00549 if (!tabletDevices.empty()) {
00550 KisCanvasWidget::X11XIDTabletDeviceMap::iterator it;
00551
00552 for (it = tabletDevices.begin(); it != tabletDevices.end(); ++it) {
00553 KisCanvasWidget::X11TabletDevice& device = (*it).second;
00554
00555 m_deviceSettings.append(DeviceSettings(&device, device.enabled(), device.xAxis(), device.yAxis(),
00556 device.pressureAxis(), device.xTiltAxis(), device.yTiltAxis(), device.wheelAxis(),
00557 device.toolIDAxis(), device.serialNumberAxis()));
00558 cbTabletDevice->insertItem(device.name());
00559 }
00560 slotActivateDevice(0);
00561 } else {
00562 cbTabletDevice->insertItem(i18n("No devices detected"));
00563 cbTabletDevice->setEnabled(false);
00564 chkEnableTabletDevice->setEnabled(false);
00565 btnConfigureTabletDevice->setEnabled(false);
00566 }
00567 }
00568
00569 void TabletSettingsTab::slotActivateDevice(int deviceIndex)
00570 {
00571 bool deviceEnabled = m_deviceSettings[deviceIndex].enabled();
00572
00573 chkEnableTabletDevice->setChecked(deviceEnabled);
00574 slotSetDeviceEnabled(deviceEnabled);
00575 }
00576
00577 void TabletSettingsTab::slotSetDeviceEnabled(bool enabled)
00578 {
00579 btnConfigureTabletDevice->setEnabled(enabled);
00580 m_deviceSettings[cbTabletDevice->currentItem()].setEnabled(enabled);
00581 }
00582
00583 void TabletSettingsTab::slotConfigureDevice()
00584 {
00585 TabletDeviceSettingsDialog dialog(cbTabletDevice->currentText(), m_deviceSettings[cbTabletDevice->currentItem()],
00586 this, "TabletDeviceSettings");
00587
00588 if (dialog.exec() == QDialog::Accepted)
00589 {
00590 m_deviceSettings[cbTabletDevice->currentItem()] = dialog.settings();
00591 }
00592 }
00593
00594 void TabletSettingsTab::applyTabletDeviceSettings()
00595 {
00596 for (Q_UINT32 deviceIndex = 0; deviceIndex < m_deviceSettings.count(); ++deviceIndex) {
00597 m_deviceSettings[deviceIndex].applySettings();
00598 }
00599 }
00600
00601 #else // EXTENDED_X11_TABLET_SUPPORT
00602
00603
00604
00605 void TabletSettingsTab::slotActivateDevice(int )
00606 {
00607 }
00608
00609 void TabletSettingsTab::slotSetDeviceEnabled(bool )
00610 {
00611 }
00612
00613 void TabletSettingsTab::slotConfigureDevice()
00614 {
00615 }
00616
00617 void TabletSettingsTab::applyTabletDeviceSettings()
00618 {
00619 }
00620
00621 #endif
00622
00623
00624
00625 DisplaySettingsTab::DisplaySettingsTab( QWidget *parent, const char *name)
00626 : WdgDisplaySettings( parent, name )
00627 {
00628 #ifdef HAVE_GL
00629 KisConfig cfg;
00630
00631 if (!QGLFormat::hasOpenGL()) {
00632 cbUseOpenGL->setEnabled(false);
00633
00634 } else {
00635 cbUseOpenGL->setChecked(cfg.useOpenGL());
00636
00637
00638 }
00639 #else
00640 cbUseOpenGL->setEnabled(false);
00641
00642 #endif
00643
00644 connect(cbUseOpenGL, SIGNAL(toggled(bool)), SLOT(slotUseOpenGLToggled(bool)));
00645 }
00646
00647 void DisplaySettingsTab::setDefault()
00648 {
00649 cbUseOpenGL->setChecked(false);
00650
00651
00652 }
00653
00654 void DisplaySettingsTab::slotUseOpenGLToggled(bool )
00655 {
00656
00657 }
00658
00659
00660 GridSettingsTab::GridSettingsTab(QWidget* parent) : WdgGridSettingsBase(parent)
00661 {
00662 KisConfig cfg;
00663 selectMainStyle->setCurrentItem(cfg.getGridMainStyle());
00664 selectSubdivisionStyle->setCurrentItem(cfg.getGridSubdivisionStyle());
00665
00666 colorMain->setColor(cfg.getGridMainColor());
00667 colorSubdivision->setColor(cfg.getGridSubdivisionColor());
00668
00669 intHSpacing->setValue( cfg.getGridHSpacing() );
00670 intVSpacing->setValue( cfg.getGridVSpacing() );
00671 intSubdivision->setValue( cfg.getGridSubdivisions());
00672 intOffsetX->setValue( cfg.getGridOffsetX());
00673 intOffsetY->setValue( cfg.getGridOffsetY());
00674
00675 linkSpacingToggled(true);
00676 connect(bnLinkSpacing, SIGNAL(toggled(bool)), this, SLOT(linkSpacingToggled( bool )));
00677
00678 connect(intHSpacing, SIGNAL(valueChanged(int)),this,SLOT(spinBoxHSpacingChanged(int)));
00679 connect(intVSpacing, SIGNAL(valueChanged(int)),this,SLOT(spinBoxVSpacingChanged(int)));
00680
00681
00682 }
00683
00684 void GridSettingsTab::setDefault()
00685 {
00686 KisConfig cfg;
00687 selectMainStyle->setCurrentItem(0);
00688 selectSubdivisionStyle->setCurrentItem(1);
00689
00690 colorMain->setColor(QColor(99,99,99));
00691 colorSubdivision->setColor(QColor(199,199,199));
00692
00693 intHSpacing->setValue( 10 );
00694 intVSpacing->setValue( 10 );
00695 intSubdivision->setValue( 1 );
00696 intOffsetX->setValue( 0 );
00697 intOffsetY->setValue( 0 );
00698 }
00699
00700 void GridSettingsTab::spinBoxHSpacingChanged(int v)
00701 {
00702 if(m_linkSpacing)
00703 {
00704 intVSpacing->setValue(v);
00705 }
00706 }
00707
00708 void GridSettingsTab::spinBoxVSpacingChanged(int v )
00709 {
00710 if(m_linkSpacing)
00711 {
00712 intHSpacing->setValue(v);
00713 }
00714 }
00715
00716
00717 void GridSettingsTab::linkSpacingToggled(bool b)
00718 {
00719 m_linkSpacing = b;
00720
00721 KoImageResource kir;
00722 if (b) {
00723 bnLinkSpacing->setPixmap(kir.chain());
00724 }
00725 else {
00726 bnLinkSpacing->setPixmap(kir.chainBroken());
00727 }
00728 }
00729
00730
00731
00732
00733 PreferencesDialog::PreferencesDialog( QWidget* parent, const char* name )
00734 : KDialogBase( IconList, i18n("Preferences"), Ok | Cancel | Help | Default , Ok, parent, name, true, true )
00735 {
00736 QVBox *vbox;
00737
00738 vbox = addVBoxPage( i18n( "General"), i18n( "General"), BarIcon( "misc", KIcon::SizeMedium ));
00739 m_general = new GeneralTab( vbox );
00740 #ifdef HAVE_GL
00741 vbox = addVBoxPage ( i18n( "Display" ), i18n( "Display" ), BarIcon( "kscreensaver", KIcon::SizeMedium ));
00742 m_displaySettings = new DisplaySettingsTab( vbox );
00743 #endif
00744 vbox = addVBoxPage( i18n( "Color Management"), i18n( "Color"), BarIcon( "colorize", KIcon::SizeMedium ));
00745 m_colorSettings = new ColorSettingsTab( vbox );
00746
00747 vbox = addVBoxPage( i18n( "Performance"), i18n( "Performance"), BarIcon( "fork", KIcon::SizeMedium ));
00748 m_performanceSettings = new PerformanceTab ( vbox );
00749
00750 vbox = addVBoxPage ( i18n( "Tablet" ), i18n( "Tablet" ), BarIcon( "tablet", KIcon::SizeMedium ));
00751 m_tabletSettings = new TabletSettingsTab( vbox );
00752
00753 vbox = addVBoxPage ( i18n( "Grid" ), i18n( "Grid" ), BarIcon( "grid", KIcon::SizeMedium ));
00754 m_gridSettings = new GridSettingsTab( vbox );
00755
00756 }
00757
00758 PreferencesDialog::~PreferencesDialog()
00759 {
00760 }
00761
00762 void PreferencesDialog::slotDefault()
00763 {
00764 m_general->setDefault();
00765 m_colorSettings->setDefault();
00766 m_tabletSettings->setDefault();
00767 m_performanceSettings->setDefault();
00768 m_displaySettings->setDefault();
00769 m_gridSettings->setDefault();
00770 }
00771
00772 bool PreferencesDialog::editPreferences()
00773 {
00774 PreferencesDialog* dialog;
00775
00776 dialog = new PreferencesDialog();
00777 bool baccept = ( dialog->exec() == Accepted );
00778 if( baccept )
00779 {
00780 KisConfig cfg;
00781 cfg.setCursorStyle(dialog->m_general->cursorStyle());
00782 cfg.setDockability( dialog->m_general->dockability() );
00783 cfg.setDockerFontSize( dialog->m_general->dockerFontSize() );
00784
00785
00786 cfg.setMonitorProfile( dialog->m_colorSettings->m_page->cmbMonitorProfile->currentText());
00787 cfg.setWorkingColorSpace( dialog->m_colorSettings->m_page->cmbWorkingColorSpace->currentText());
00788 cfg.setPrinterColorSpace( dialog->m_colorSettings->m_page->cmbPrintingColorSpace->currentText());
00789 cfg.setPrinterProfile( dialog->m_colorSettings->m_page->cmbPrintProfile->currentText());
00790
00791 cfg.setUseBlackPointCompensation( dialog->m_colorSettings->m_page->chkBlackpoint->isChecked());
00792 cfg.setPasteBehaviour( dialog->m_colorSettings->m_page->grpPasteBehaviour->selectedId());
00793 cfg.setRenderIntent( dialog->m_colorSettings->m_page->cmbMonitorIntent->currentItem());
00794
00795
00796 cfg.setSwappiness(dialog->m_performanceSettings->m_swappiness->value() * 50);
00797 cfg.setMaxTilesInMem(dialog->m_performanceSettings->m_maxTiles->value());
00798
00799 KisTileManager::instance()->configChanged();
00800
00801 dialog->m_tabletSettings->applySettings();
00802
00803 cfg.setUseOpenGL(dialog->m_displaySettings->cbUseOpenGL->isChecked());
00804
00805
00806
00807 cfg.setGridMainStyle( dialog->m_gridSettings->selectMainStyle->currentItem() );
00808 cfg.setGridSubdivisionStyle( dialog->m_gridSettings->selectSubdivisionStyle->currentItem() );
00809
00810 cfg.setGridMainColor( dialog->m_gridSettings->colorMain->color() );
00811 cfg.setGridSubdivisionColor(dialog->m_gridSettings->colorSubdivision->color() );
00812
00813 cfg.setGridHSpacing( dialog->m_gridSettings->intHSpacing->value( ));
00814 cfg.setGridVSpacing( dialog->m_gridSettings->intVSpacing->value( ));
00815 cfg.setGridSubdivisions( dialog->m_gridSettings->intSubdivision->value( ));
00816 cfg.setGridOffsetX( dialog->m_gridSettings->intOffsetX->value( ));
00817 cfg.setGridOffsetY( dialog->m_gridSettings->intOffsetY->value( ));
00818
00819 }
00820 delete dialog;
00821 return baccept;
00822 }
00823
00824 #include "kis_dlg_preferences.moc"