Get rid of another .ui file

This commit is contained in:
Kovid Goyal 2016-07-23 10:32:10 +05:30
parent d331c1fbe2
commit edb17d89ce
2 changed files with 186 additions and 533 deletions

View File

@ -6,7 +6,11 @@ __copyright__ = '2010, Kovid Goyal <kovid at kovidgoyal.net>'
import re import re
from functools import partial from functools import partial
from PyQt5.Qt import QDialog, Qt, QColor from PyQt5.Qt import (
QDialog, Qt, QColor, QIcon, QVBoxLayout, QLabel, QGridLayout,
QDialogButtonBox, QWidget, QLineEdit, QHBoxLayout, QComboBox,
QCheckBox
)
from calibre.gui2.preferences.create_custom_column_ui import Ui_QCreateCustomColumn from calibre.gui2.preferences.create_custom_column_ui import Ui_QCreateCustomColumn
from calibre.gui2 import error_dialog from calibre.gui2 import error_dialog
@ -81,10 +85,9 @@ class CreateCustomColumn(QDialog, Ui_QCreateCustomColumn):
def __init__(self, parent, current_row, current_key, standard_colheads, standard_colnames): def __init__(self, parent, current_row, current_key, standard_colheads, standard_colnames):
QDialog.__init__(self, parent) QDialog.__init__(self, parent)
Ui_QCreateCustomColumn.__init__(self) self.setup_ui()
self.setupUi(self)
self.setWindowTitle(_('Create a custom column')) self.setWindowTitle(_('Create a custom column'))
self.heading_label.setText(_('Create a custom column')) self.heading_label.setText('<b>' + _('Create a custom column'))
# Remove help icon on title bar # Remove help icon on title bar
icon = self.windowIcon() icon = self.windowIcon()
self.setWindowFlags(self.windowFlags()&(~Qt.WindowContextHelpButtonHint)) self.setWindowFlags(self.windowFlags()&(~Qt.WindowContextHelpButtonHint))
@ -92,18 +95,6 @@ class CreateCustomColumn(QDialog, Ui_QCreateCustomColumn):
self.simple_error = partial(error_dialog, self, show=True, self.simple_error = partial(error_dialog, self, show=True,
show_copy_button=False) show_copy_button=False)
self.button_box.accepted.connect(self.accept)
self.button_box.rejected.connect(self.reject)
self.shortcuts.linkActivated.connect(self.shortcut_activated)
text = '<p>'+_('Quick create:')
for col, name in [('isbn', _('ISBN')), ('formats', _('Formats')),
('yesno', _('Yes/No')),
('tags', _('Tags')), ('series', _('Series')), ('rating',
_('Rating')), ('people', _("People's names"))]:
text += ' <a href="col:%s">%s</a>,'%(col, name)
text = text[:-1]
self.shortcuts.setText(text)
for sort_by in [_('Text'), _('Number'), _('Date'), _('Yes/No')]: for sort_by in [_('Text'), _('Number'), _('Date'), _('Yes/No')]:
self.composite_sort_by.addItem(sort_by) self.composite_sort_by.addItem(sort_by)
@ -126,7 +117,7 @@ class CreateCustomColumn(QDialog, Ui_QCreateCustomColumn):
return return
self.setWindowTitle(_('Edit a custom column')) self.setWindowTitle(_('Edit a custom column'))
self.heading_label.setText(_('Edit a custom column')) self.heading_label.setText('<b>' + _('Edit a custom column'))
self.shortcuts.setVisible(False) self.shortcuts.setVisible(False)
idx = current_row idx = current_row
if idx < 0: if idx < 0:
@ -152,7 +143,7 @@ class CreateCustomColumn(QDialog, Ui_QCreateCustomColumn):
self.column_type_box.setEnabled(False) self.column_type_box.setEnabled(False)
if ct == 'datetime': if ct == 'datetime':
if c['display'].get('date_format', None): if c['display'].get('date_format', None):
self.date_format_box.setText(c['display'].get('date_format', '')) self.format_box.setText(c['display'].get('date_format', ''))
elif ct in ['composite', '*composite']: elif ct in ['composite', '*composite']:
self.composite_box.setText(c['display'].get('composite_template', '')) self.composite_box.setText(c['display'].get('composite_template', ''))
sb = c['display'].get('composite_sort', 'text') sb = c['display'].get('composite_sort', 'text')
@ -171,7 +162,7 @@ class CreateCustomColumn(QDialog, Ui_QCreateCustomColumn):
self.enum_colors.setText(','.join(c['display'].get('enum_colors', []))) self.enum_colors.setText(','.join(c['display'].get('enum_colors', [])))
elif ct in ['int', 'float']: elif ct in ['int', 'float']:
if c['display'].get('number_format', None): if c['display'].get('number_format', None):
self.number_format_box.setText(c['display'].get('number_format', '')) self.format_box.setText(c['display'].get('number_format', ''))
self.datatype_changed() self.datatype_changed()
if ct in ['text', 'composite', 'enumeration']: if ct in ['text', 'composite', 'enumeration']:
self.use_decorations.setChecked(c['display'].get('use_decorations', False)) self.use_decorations.setChecked(c['display'].get('use_decorations', False))
@ -179,19 +170,6 @@ class CreateCustomColumn(QDialog, Ui_QCreateCustomColumn):
self.is_names.setChecked(c['display'].get('is_names', False)) self.is_names.setChecked(c['display'].get('is_names', False))
self.description_box.setText(c['display'].get('description', '')) self.description_box.setText(c['display'].get('description', ''))
self.composite_contains_html.setToolTip('<p>' +
_('If checked, this column will be displayed as HTML in '
'book details and the content server. This can be used to '
'construct links with the template language. For example, '
'the template '
'<pre>&lt;big&gt;&lt;b&gt;{title}&lt;/b&gt;&lt;/big&gt;'
'{series:| [|}{series_index:| [|]]}</pre>'
'will create a field displaying the title in bold large '
'characters, along with the series, for example <br>"<big><b>'
'An Oblique Approach</b></big> [Belisarius [1]]". The template '
'<pre>&lt;a href="http://www.beam-ebooks.de/ebook/{identifiers'
':select(beam)}"&gt;Beam book&lt;/a&gt;</pre> '
'will generate a link to the book on the Beam ebooks site.') + '</p>')
self.exec_() self.exec_()
def shortcut_activated(self, url): def shortcut_activated(self, url):
@ -221,14 +199,184 @@ class CreateCustomColumn(QDialog, Ui_QCreateCustomColumn):
}[which]) }[which])
self.composite_sort_by.setCurrentIndex(0) self.composite_sort_by.setCurrentIndex(0)
def setup_ui(self):
self.setWindowModality(Qt.ApplicationModal)
self.setWindowIcon(QIcon(I('column.png')))
self.vl = l = QVBoxLayout(self)
self.heading_label = la = QLabel('')
l.addWidget(la)
self.shortcuts = s = QLabel('')
s.setWordWrap(True)
s.linkActivated.connect(self.shortcut_activated)
text = '<p>'+_('Quick create:')
for col, name in [('isbn', _('ISBN')), ('formats', _('Formats')),
('yesno', _('Yes/No')),
('tags', _('Tags')), ('series', _('Series')), ('rating',
_('Rating')), ('people', _("People's names"))]:
text += ' <a href="col:%s">%s</a>,'%(col, name)
text = text[:-1]
s.setText(text)
l.addWidget(s)
self.g = g = QGridLayout()
l.addLayout(g)
l.addStretch(10)
self.button_box = bb = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel, self)
bb.accepted.connect(self.accept), bb.rejected.connect(self.reject)
l.addWidget(bb)
def add_row(text, widget):
if text is None:
f = g.addWidget if isinstance(widget, QWidget) else g.addLayout
f(widget, g.rowCount(), 0, 1, -1)
return
row = g.rowCount()
la = QLabel(text)
g.addWidget(la, row, 0, 1, 1)
if isinstance(widget, QWidget):
la.setBuddy(widget)
g.addWidget(widget, row, 1, 1, 1)
else:
widget.setContentsMargins(0, 0, 0, 0)
g.addLayout(widget, row, 1, 1, 1)
for i in range(widget.count()):
w = widget.itemAt(i).widget()
if isinstance(w, QWidget):
la.setBuddy(w)
break
return la
# Lookup name
self.column_name_box = cnb = QLineEdit(self)
cnb.setToolTip(_("Used for searching the column. Must contain only digits and lower case letters."))
add_row(_("&Lookup name"), cnb)
# Heading
self.column_heading_box = chb = QLineEdit(self)
chb.setToolTip(_("Column heading in the library view and category name in the tag browser"))
add_row(_("Column &heading"), chb)
# Column Type
h = QHBoxLayout()
self.column_type_box = ctb = QComboBox(self)
ctb.setMinimumWidth(70)
ctb.setToolTip(_("What kind of information will be kept in the column."))
h.addWidget(ctb)
self.use_decorations = ud = QCheckBox(_("Show &checkmarks"), self)
ud.setToolTip(_("Show check marks in the GUI. Values of 'yes', 'checked', and 'true'\n"
"will show a green check. Values of 'no', 'unchecked', and 'false' will show a red X.\n"
"Everything else will show nothing."))
h.addWidget(ud)
self.is_names = ins = QCheckBox(_("Contains names"), self)
ins.setToolTip(_("Check this box if this column contains names, like the authors column."))
h.addWidget(ins)
add_row(_("&Column type"), h)
# Description
self.description_box = d = QLineEdit(self)
d.setToolTip(_("Optional text describing what this column is for"))
add_row(_("D&escription"), d)
# Date/number formatting
h = QHBoxLayout()
self.format_box = fb = QLineEdit(self)
h.addWidget(fb)
self.format_default_label = la = QLabel('')
la.setOpenExternalLinks(True)
h.addWidget(la)
self.format_label = add_row('', h)
# Template
self.composite_box = cb = QLineEdit(self)
self.composite_default_label = cdl = QLabel(_("Default: (nothing)"))
cb.setToolTip(_("Field template. Uses the same syntax as save templates."))
cdl.setToolTip(_("Similar to save templates. For example, %s") % "{title} {isbn}")
h = QHBoxLayout()
h.addWidget(cb), h.addWidget(cdl)
self.composite_label = add_row(_("&Template"), h)
# Values for enum type
l = QGridLayout()
self.enum_box = eb = QLineEdit(self)
eb.setToolTip(_(
"A comma-separated list of permitted values. The empty value is always\n"
"included, and is the default. For example, the list 'one,two,three' has\n"
"four values, the first of them being the empty value."))
self.enum_default_label = la = QLabel(_("Values"))
la.setBuddy(eb)
l.addWidget(eb), l.addWidget(la, 0, 1)
self.enum_colors = ec = QLineEdit(self)
ec.setToolTip(_("A list of color names to use when displaying an item. The\n"
"list must be empty or contain a color for each value."))
self.enum_colors_label = la = QLabel(_('Colors'))
la.setBuddy(ec)
l.addWidget(ec), l.addWidget(la, 1, 1)
self.enum_label = add_row(_('&Values'), l)
# Composite display properties
l = QHBoxLayout()
self.composite_sort_by_label = la = QLabel(_("&Sort/search column by"))
self.composite_sort_by = csb = QComboBox(self)
la.setBuddy(csb), csb.setToolTip(_("How this column should handled in the GUI when sorting and searching"))
l.addWidget(la), l.addWidget(csb)
self.composite_make_category = cmc = QCheckBox(_("Show in tags browser"))
cmc.setToolTip(_("If checked, this column will appear in the tags browser as a category"))
l.addWidget(cmc)
self.composite_contains_html = cch = QCheckBox(_("Show as HTML in book details"))
cch.setToolTip('<p>' +
_('If checked, this column will be displayed as HTML in '
'book details and the content server. This can be used to '
'construct links with the template language. For example, '
'the template '
'<pre>&lt;big&gt;&lt;b&gt;{title}&lt;/b&gt;&lt;/big&gt;'
'{series:| [|}{series_index:| [|]]}</pre>'
'will create a field displaying the title in bold large '
'characters, along with the series, for example <br>"<big><b>'
'An Oblique Approach</b></big> [Belisarius [1]]". The template '
'<pre>&lt;a href="http://www.beam-ebooks.de/ebook/{identifiers'
':select(beam)}"&gt;Beam book&lt;/a&gt;</pre> '
'will generate a link to the book on the Beam ebooks site.') + '</p>')
l.addWidget(cch)
add_row(None, l)
self.resize(self.sizeHint())
def datatype_changed(self, *args): def datatype_changed(self, *args):
try: try:
col_type = self.column_types[self.column_type_box.currentIndex()]['datatype'] col_type = self.column_types[self.column_type_box.currentIndex()]['datatype']
except: except:
col_type = None col_type = None
needs_format = col_type in ('datetime', 'int', 'float')
for x in ('box', 'default_label', 'label'): for x in ('box', 'default_label', 'label'):
getattr(self, 'date_format_'+x).setVisible(col_type == 'datetime') getattr(self, 'format_'+x).setVisible(needs_format)
getattr(self, 'number_format_'+x).setVisible(col_type in ['int', 'float']) if needs_format:
if col_type == 'datetime':
l, dl = _('&Format for dates'), _('Default: dd MMM yyyy.')
self.format_box.setToolTip(_(
"<p>Date format. Use 1-4 \'d\'s for day, 1-4 \'M\'s for month, and 2 or 4 \'y\'s for year.</p>\n"
"<p>For example:\n"
"<ul>\n"
"<li> ddd, d MMM yyyy gives Mon, 5 Jan 2010<li>\n"
"<li>dd MMMM yy gives 05 January 10</li>\n"
"</ul> "))
else:
l, dl = _('&Format for numbers'), (
'<p>' + _('Default: Not formatted. For format language details see'
' <a href="https://docs.python.org/library/string.html#format-string-syntax">the python documentation</a>'))
if col_type == 'int':
self.format_box.setToolTip('<p>' +
_('Examples: The format <code>{0:0>4d}</code> '
'gives a 4-digit number with leading zeros. The format '
'<code>{0:d}&nbsp;days</code> prints the number then the word "days"')+ '</p>')
else:
self.format_box.setToolTip('<p>' +
_('Examples: The format <code>{0:.1f}</code> gives a floating '
'point number with 1 digit after the decimal point. The format '
'<code>Price:&nbsp;$&nbsp;{0:,.2f}</code> prints '
'"Price&nbsp;$&nbsp;" then displays the number with 2 digits '
'after the decimal point and thousands separated by commas.') + '</p>'
)
self.format_label.setText(l), self.format_default_label.setText(dl)
for x in ('box', 'default_label', 'label', 'sort_by', 'sort_by_label', for x in ('box', 'default_label', 'label', 'sort_by', 'sort_by_label',
'make_category', 'contains_html'): 'make_category', 'contains_html'):
getattr(self, 'composite_'+x).setVisible(col_type in ['composite', '*composite']) getattr(self, 'composite_'+x).setVisible(col_type in ['composite', '*composite'])
@ -236,18 +384,6 @@ class CreateCustomColumn(QDialog, Ui_QCreateCustomColumn):
getattr(self, 'enum_'+x).setVisible(col_type == 'enumeration') getattr(self, 'enum_'+x).setVisible(col_type == 'enumeration')
self.use_decorations.setVisible(col_type in ['text', 'composite', 'enumeration']) self.use_decorations.setVisible(col_type in ['text', 'composite', 'enumeration'])
self.is_names.setVisible(col_type == '*text') self.is_names.setVisible(col_type == '*text')
if col_type == 'int':
self.number_format_box.setToolTip('<p>' +
_('Examples: The format <code>{0:0>4d}</code> '
'gives a 4-digit number with leading zeros. The format '
'<code>{0:d}&nbsp;days</code> prints the number then the word "days"')+ '</p>')
elif col_type == 'float':
self.number_format_box.setToolTip('<p>' +
_('Examples: The format <code>{0:.1f}</code> gives a floating '
'point number with 1 digit after the decimal point. The format '
'<code>Price:&nbsp;$&nbsp;{0:,.2f}</code> prints '
'"Price&nbsp;$&nbsp;" then displays the number with 2 digits '
'after the decimal point and thousands separated by commas.') + '</p>')
def accept(self): def accept(self):
col = unicode(self.column_name_box.text()).strip() col = unicode(self.column_name_box.text()).strip()
@ -297,8 +433,8 @@ class CreateCustomColumn(QDialog, Ui_QCreateCustomColumn):
display_dict = {} display_dict = {}
if col_type == 'datetime': if col_type == 'datetime':
if unicode(self.date_format_box.text()).strip(): if unicode(self.format_box.text()).strip():
display_dict = {'date_format':unicode(self.date_format_box.text()).strip()} display_dict = {'date_format':unicode(self.format_box.text()).strip()}
else: else:
display_dict = {'date_format': None} display_dict = {'date_format': None}
elif col_type == 'composite': elif col_type == 'composite':
@ -338,8 +474,8 @@ class CreateCustomColumn(QDialog, Ui_QCreateCustomColumn):
elif col_type == 'text' and is_multiple: elif col_type == 'text' and is_multiple:
display_dict = {'is_names': self.is_names.isChecked()} display_dict = {'is_names': self.is_names.isChecked()}
elif col_type in ['int', 'float']: elif col_type in ['int', 'float']:
if unicode(self.number_format_box.text()).strip(): if unicode(self.format_box.text()).strip():
display_dict = {'number_format':unicode(self.number_format_box.text()).strip()} display_dict = {'number_format':unicode(self.format_box.text()).strip()}
else: else:
display_dict = {'number_format': None} display_dict = {'number_format': None}

View File

@ -1,483 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>QCreateCustomColumn</class>
<widget class="QDialog" name="QCreateCustomColumn">
<property name="windowModality">
<enum>Qt::ApplicationModal</enum>
</property>
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>831</width>
<height>344</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="windowIcon">
<iconset resource="../../../../resources/images.qrc">
<normaloff>:/images/column.png</normaloff>:/images/column.png</iconset>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<layout class="QGridLayout" name="gridLayout_2" rowstretch="0,0,0,0,0,0,0,0,0,0,0,0,0,0,0">
<property name="sizeConstraint">
<enum>QLayout::SetDefaultConstraint</enum>
</property>
<property name="margin">
<number>5</number>
</property>
<item row="5" column="0">
<layout class="QGridLayout" name="gridLayout">
<property name="margin">
<number>0</number>
</property>
<item row="0" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string>&amp;Lookup name</string>
</property>
<property name="buddy">
<cstring>column_name_box</cstring>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>Column &amp;heading</string>
</property>
<property name="buddy">
<cstring>column_heading_box</cstring>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QLineEdit" name="column_name_box">
<property name="minimumSize">
<size>
<width>20</width>
<height>0</height>
</size>
</property>
<property name="toolTip">
<string>Used for searching the column. Must contain only digits and lower case letters.</string>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QLineEdit" name="column_heading_box">
<property name="toolTip">
<string>Column heading in the library view and category name in the tag browser</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>&amp;Column type</string>
</property>
<property name="buddy">
<cstring>column_type_box</cstring>
</property>
</widget>
</item>
<item row="2" column="2">
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QComboBox" name="column_type_box">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>70</width>
<height>0</height>
</size>
</property>
<property name="toolTip">
<string>What kind of information will be kept in the column.</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="use_decorations">
<property name="toolTip">
<string>Show check marks in the GUI. Values of 'yes', 'checked', and 'true'
will show a green check. Values of 'no', 'unchecked', and 'false' will show a red X.
Everything else will show nothing.</string>
</property>
<property name="text">
<string>Show checkmarks</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="is_names">
<property name="toolTip">
<string>Check this box if this column contains names, like the authors column.</string>
</property>
<property name="text">
<string>Contains names</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_27">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>10</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>0</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_31">
<property name="text">
<string>D&amp;escription</string>
</property>
<property name="buddy">
<cstring>description_box</cstring>
</property>
</widget>
</item>
<item row="3" column="2">
<widget class="QLineEdit" name="description_box">
<property name="toolTip">
<string>Optional text describing what this column is for</string>
</property>
</widget>
</item>
<item row="4" column="2">
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QLineEdit" name="date_format_box">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>&lt;p&gt;Date format. Use 1-4 'd's for day, 1-4 'M's for month, and 2 or 4 'y's for year.&lt;/p&gt;
&lt;p&gt;For example:
&lt;ul&gt;
&lt;li&gt; ddd, d MMM yyyy gives Mon, 5 Jan 2010&lt;li&gt;
&lt;li&gt;dd MMMM yy gives 05 January 10&lt;/li&gt;
&lt;/ul&gt; </string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="number_format_box">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="date_format_default_label">
<property name="toolTip">
<string>Use MMM yyyy for month + year, yyyy for year only</string>
</property>
<property name="text">
<string>Default: dd MMM yyyy.</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="number_format_default_label">
<property name="toolTip">
<string>&lt;p&gt;The format specifier must begin with &lt;code&gt;{0:&lt;/code&gt;
and end with &lt;code&gt;}&lt;/code&gt; You can have text before and after the format specifier.
</string>
</property>
<property name="text">
<string>&lt;p&gt;Default: Not formatted. For format language details see &lt;a href="http://docs.python.org/library/string.html#format-string-syntax"&gt;the python documentation&lt;/a&gt;</string>
</property>
<property name="openExternalLinks">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</item>
<item row="4" column="0">
<widget class="QLabel" name="date_format_label">
<property name="text">
<string>Format for &amp;dates</string>
</property>
<property name="buddy">
<cstring>date_format_box</cstring>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="number_format_label">
<property name="text">
<string>Format for &amp;numbers</string>
</property>
<property name="buddy">
<cstring>number_format_box</cstring>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="composite_label">
<property name="text">
<string>&amp;Template</string>
</property>
<property name="buddy">
<cstring>composite_box</cstring>
</property>
</widget>
</item>
<item row="5" column="2">
<layout class="QHBoxLayout" name="horizontalLayout_4">
<item>
<widget class="QLineEdit" name="composite_box">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>Field template. Uses the same syntax as save templates.</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="composite_default_label">
<property name="toolTip">
<string>Similar to save templates. For example, {title} {isbn}</string>
</property>
<property name="text">
<string>Default: (nothing)</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="6" column="2">
<layout class="QHBoxLayout" name="composite_layout">
<item>
<widget class="QLabel" name="composite_sort_by_label">
<property name="text">
<string>&amp;Sort/search column by</string>
</property>
<property name="buddy">
<cstring>composite_sort_by</cstring>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="composite_sort_by">
<property name="toolTip">
<string>How this column should handled in the GUI when sorting and searching</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="composite_make_category">
<property name="toolTip">
<string>If checked, this column will appear in the tags browser as a category</string>
</property>
<property name="text">
<string>Show in tags browser</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="composite_contains_html">
<property name="text">
<string>Show as HTML in book details</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_24">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>10</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>0</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item row="11" column="0" colspan="4">
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item row="6" column="0">
<widget class="QLabel" name="enum_label">
<property name="text">
<string>Values</string>
</property>
<property name="buddy">
<cstring>enum_box</cstring>
</property>
</widget>
</item>
<item row="6" column="2">
<layout class="QGridLayout" name="horizontalLayout_2">
<item row="0" column="0">
<widget class="QLineEdit" name="enum_box">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>A comma-separated list of permitted values. The empty value is always
included, and is the default. For example, the list 'one,two,three' has
four values, the first of them being the empty value.</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLabel" name="enum_default_label">
<property name="toolTip">
<string>The empty string is always the first value</string>
</property>
<property name="text">
<string>Values</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLineEdit" name="enum_colors">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>A list of color names to use when displaying an item. The
list must be empty or contain a color for each value.</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLabel" name="enum_colors_label">
<property name="text">
<string>Colors</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</item>
<item row="14" column="0">
<widget class="QDialogButtonBox" name="button_box">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
<property name="centerButtons">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="heading_label">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="shortcuts">
<property name="text">
<string/>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="Line" name="line">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="Line" name="line_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
<tabstops>
<tabstop>column_name_box</tabstop>
<tabstop>column_heading_box</tabstop>
<tabstop>column_type_box</tabstop>
<tabstop>date_format_box</tabstop>
<tabstop>composite_box</tabstop>
<tabstop>button_box</tabstop>
</tabstops>
<resources>
<include location="../../../../resources/images.qrc"/>
</resources>
<connections/>
</ui>