<ui version="4.0" >
 <comment>*********************************************************************
**
** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the Qt Designer of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** GNU Lesser General Public License Usage
** This file may be used under the terms of the GNU Lesser General Public
** License version 2.1 as published by the Free Software Foundation and
** appearing in the file LICENSE.LGPL included in the packaging of this
** file. Please review the following information to ensure the GNU Lesser
** General Public License version 2.1 requirements will be met:
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** In addition, as a special exception, Nokia gives you certain additional
** rights. These rights are described in the Nokia Qt LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU General
** Public License version 3.0 as published by the Free Software Foundation
** and appearing in the file LICENSE.GPL included in the packaging of this
** file. Please review the following information to ensure the GNU General
** Public License version 3.0 requirements will be met:
** http://www.gnu.org/copyleft/gpl.html.
**
** Other Usage
** Alternatively, this file may be used in accordance with the terms and
** conditions contained in a signed written agreement between you and Nokia.
**
**
**
**
**
** $QT_END_LICENSE$
**
*********************************************************************</comment>
 <class>qdesigner_internal::PaletteEditor</class>
 <widget class="QDialog" name="qdesigner_internal::PaletteEditor" >
  <property name="geometry" >
   <rect>
    <x>0</x>
    <y>0</y>
    <width>365</width>
    <height>409</height>
   </rect>
  </property>
  <property name="sizePolicy" >
   <sizepolicy>
    <hsizetype>7</hsizetype>
    <vsizetype>7</vsizetype>
    <horstretch>0</horstretch>
    <verstretch>0</verstretch>
   </sizepolicy>
  </property>
  <property name="windowTitle" >
   <string>Edit Palette</string>
  </property>
  <layout class="QVBoxLayout" >
   <property name="margin" >
    <number>9</number>
   </property>
   <property name="spacing" >
    <number>6</number>
   </property>
   <item>
    <widget class="QGroupBox" name="advancedBox" >
     <property name="minimumSize" >
      <size>
       <width>0</width>
       <height>0</height>
      </size>
     </property>
     <property name="maximumSize" >
      <size>
       <width>16777215</width>
       <height>16777215</height>
      </size>
     </property>
     <property name="title" >
      <string>Tune Palette</string>
     </property>
     <layout class="QGridLayout" >
      <property name="margin" >
       <number>9</number>
      </property>
      <property name="spacing" >
       <number>6</number>
      </property>
      <item row="0" column="1" >
       <widget class="QtColorButton" name="buildButton" >
        <property name="sizePolicy" >
         <sizepolicy>
          <hsizetype>7</hsizetype>
          <vsizetype>13</vsizetype>
          <horstretch>0</horstretch>
          <verstretch>0</verstretch>
         </sizepolicy>
        </property>
        <property name="text" >
         <string/>
        </property>
       </widget>
      </item>
      <item row="1" column="0" colspan="4" >
       <widget class="QTreeView" name="paletteView" >
        <property name="minimumSize" >
         <size>
          <width>0</width>
          <height>200</height>
         </size>
        </property>
       </widget>
      </item>
      <item row="0" column="3" >
       <widget class="QRadioButton" name="detailsRadio" >
        <property name="text" >
         <string>Show Details</string>
        </property>
       </widget>
      </item>
      <item row="0" column="2" >
       <widget class="QRadioButton" name="computeRadio" >
        <property name="text" >
         <string>Compute Details</string>
        </property>
        <property name="checked" >
         <bool>true</bool>
        </property>
       </widget>
      </item>
      <item row="0" column="0" >
       <widget class="QLabel" name="label" >
        <property name="text" >
         <string>Quick</string>
        </property>
       </widget>
      </item>
     </layout>
    </widget>
   </item>
   <item>
    <widget class="QGroupBox" name="GroupBox126" >
     <property name="sizePolicy" >
      <sizepolicy>
       <hsizetype>5</hsizetype>
       <vsizetype>7</vsizetype>
       <horstretch>0</horstretch>
       <verstretch>0</verstretch>
      </sizepolicy>
     </property>
     <property name="title" >
      <string>Preview</string>
     </property>
     <layout class="QGridLayout" >
      <property name="margin" >
       <number>8</number>
      </property>
      <property name="spacing" >
       <number>6</number>
      </property>
      <item row="0" column="2" >
       <widget class="QRadioButton" name="disabledRadio" >
        <property name="text" >
         <string>Disabled</string>
        </property>
       </widget>
      </item>
      <item row="0" column="1" >
       <widget class="QRadioButton" name="inactiveRadio" >
        <property name="text" >
         <string>Inactive</string>
        </property>
       </widget>
      </item>
      <item row="0" column="0" >
       <widget class="QRadioButton" name="activeRadio" >
        <property name="text" >
         <string>Active</string>
        </property>
        <property name="checked" >
         <bool>true</bool>
        </property>
       </widget>
      </item>
      <item row="1" column="0" colspan="3" >
       <widget class="qdesigner_internal::PreviewFrame" native="1" name="previewFrame" >
        <property name="sizePolicy" >
         <sizepolicy>
          <hsizetype>7</hsizetype>
          <vsizetype>7</vsizetype>
          <horstretch>0</horstretch>
          <verstretch>0</verstretch>
         </sizepolicy>
        </property>
       </widget>
      </item>
     </layout>
    </widget>
   </item>
   <item>
    <widget class="QDialogButtonBox" name="buttonBox" >
     <property name="orientation" >
      <enum>Qt::Horizontal</enum>
     </property>
     <property name="standardButtons" >
      <set>QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok</set>
     </property>
    </widget>
   </item>
  </layout>
 </widget>
 <customwidgets>
  <customwidget>
   <class>QtColorButton</class>
   <extends>QToolButton</extends>
   <header>qtcolorbutton.h</header>
  </customwidget>
  <customwidget>
   <class>qdesigner_internal::PreviewFrame</class>
   <extends>QWidget</extends>
   <header>previewframe.h</header>
  </customwidget>
 </customwidgets>
 <resources/>
 <connections>
  <connection>
   <sender>buttonBox</sender>
   <signal>accepted()</signal>
   <receiver>qdesigner_internal::PaletteEditor</receiver>
   <slot>accept()</slot>
   <hints>
    <hint type="sourcelabel" >
     <x>180</x>
     <y>331</y>
    </hint>
    <hint type="destinationlabel" >
     <x>134</x>
     <y>341</y>
    </hint>
   </hints>
  </connection>
  <connection>
   <sender>buttonBox</sender>
   <signal>rejected()</signal>
   <receiver>qdesigner_internal::PaletteEditor</receiver>
   <slot>reject()</slot>
   <hints>
    <hint type="sourcelabel" >
     <x>287</x>
     <y>329</y>
    </hint>
    <hint type="destinationlabel" >
     <x>302</x>
     <y>342</y>
    </hint>
   </hints>
  </connection>
 </connections>
</ui>
