Sync to trunk.

This commit is contained in:
John Schember 2009-07-13 00:29:37 -04:00
commit dcdda76dbc
9 changed files with 328 additions and 256 deletions

View File

@ -229,6 +229,8 @@ def get_metadata(stream):
tags = [x.strip() for x in mi.category.split(',') if x.strip()] tags = [x.strip() for x in mi.category.split(',') if x.strip()]
if tags: if tags:
mi.tags = tags mi.tags = tags
if mi.category.strip() == ',':
mi.category = None
mi.publisher = lrf.publisher.strip() mi.publisher = lrf.publisher.strip()
mi.cover_data = lrf.get_cover() mi.cover_data = lrf.get_cover()
try: try:

View File

@ -22,9 +22,18 @@ class LRFOptions(object):
m = oeb.metadata m = oeb.metadata
self.title = None self.title = None
self.author = self.publisher = _('Unknown') self.author = self.publisher = _('Unknown')
self.title_sort = self.author_sort = ''
for x in m.creator:
if x.role == 'aut':
self.author = unicode(x)
fa = unicode(getattr(x, 'file_as', ''))
if fa:
self.author_sort = fa
for x in m.title:
if unicode(x.file_as):
self.title_sort = unicode(x.file_as)
self.freetext = f2s(m.description) self.freetext = f2s(m.description)
self.category = f2s(m.tags) self.category = f2s(m.tags)
self.title_sort = self.author_sort = ''
self.cover = None self.cover = None
self.use_metadata_cover = True self.use_metadata_cover = True
self.output = output self.output = output

View File

@ -317,7 +317,7 @@ class MetaInformation(object):
if getattr(self, 'book_producer', False): if getattr(self, 'book_producer', False):
fmt('Book Producer', self.book_producer) fmt('Book Producer', self.book_producer)
if self.category: if self.category:
ans += u'Category : ' + unicode(self.category) + u'\n' fmt('Category', self.category)
if self.comments: if self.comments:
fmt('Comments', self.comments) fmt('Comments', self.comments)
if self.isbn: if self.isbn:

View File

@ -7,7 +7,7 @@ __docformat__ = 'restructuredtext en'
lxml based OPF parser. lxml based OPF parser.
''' '''
import sys, unittest, functools, os, mimetypes, uuid, glob, cStringIO import re, sys, unittest, functools, os, mimetypes, uuid, glob, cStringIO
from urllib import unquote from urllib import unquote
from urlparse import urlparse from urlparse import urlparse
@ -435,7 +435,7 @@ class OPF(object):
spine_path = XPath('descendant::*[re:match(name(), "spine", "i")]/*[re:match(name(), "itemref", "i")]') spine_path = XPath('descendant::*[re:match(name(), "spine", "i")]/*[re:match(name(), "itemref", "i")]')
guide_path = XPath('descendant::*[re:match(name(), "guide", "i")]/*[re:match(name(), "reference", "i")]') guide_path = XPath('descendant::*[re:match(name(), "guide", "i")]/*[re:match(name(), "reference", "i")]')
title = MetadataField('title') title = MetadataField('title', formatter=lambda x: re.sub(r'\s+', ' ', x))
publisher = MetadataField('publisher') publisher = MetadataField('publisher')
language = MetadataField('language') language = MetadataField('language')
comments = MetadataField('description') comments = MetadataField('description')

View File

@ -10,6 +10,7 @@ import os
from datetime import datetime from datetime import datetime
def meta_info_to_oeb_metadata(mi, m, log): def meta_info_to_oeb_metadata(mi, m, log):
from calibre.ebooks.oeb.base import OPF
if mi.title: if mi.title:
m.clear('title') m.clear('title')
m.add('title', mi.title) m.add('title', mi.title)
@ -22,7 +23,7 @@ def meta_info_to_oeb_metadata(mi, m, log):
for a in mi.authors: for a in mi.authors:
attrib = {'role':'aut'} attrib = {'role':'aut'}
if mi.author_sort: if mi.author_sort:
attrib['file_as'] = mi.author_sort attrib[OPF('file-as')] = mi.author_sort
m.add('creator', a, attrib=attrib) m.add('creator', a, attrib=attrib)
if mi.book_producer: if mi.book_producer:
m.filter('contributor', lambda x : x.role.lower() == 'bkp') m.filter('contributor', lambda x : x.role.lower() == 'bkp')

View File

@ -144,13 +144,36 @@
</item> </item>
</widget> </widget>
</item> </item>
<item row="3" column="0" colspan="2"> <item row="4" column="0" colspan="2">
<widget class="QCheckBox" name="opt_remember_window_size"> <widget class="QCheckBox" name="opt_remember_window_size">
<property name="text"> <property name="text">
<string>Remember last used &amp;window size</string> <string>Remember last used &amp;window size</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="3" column="1">
<widget class="QSpinBox" name="max_view_width">
<property name="suffix">
<string> px</string>
</property>
<property name="minimum">
<number>100</number>
</property>
<property name="maximum">
<number>10000</number>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_7">
<property name="text">
<string>Maximum &amp;view width:</string>
</property>
<property name="buddy">
<cstring>max_view_width</cstring>
</property>
</widget>
</item>
</layout> </layout>
</item> </item>
<item row="2" column="0"> <item row="2" column="0">
@ -159,7 +182,7 @@
<string>&amp;User stylesheet</string> <string>&amp;User stylesheet</string>
</property> </property>
<layout class="QGridLayout" name="gridLayout_5"> <layout class="QGridLayout" name="gridLayout_5">
<item row="0" column="0"> <item row="1" column="0">
<widget class="QPlainTextEdit" name="css"/> <widget class="QPlainTextEdit" name="css"/>
</item> </item>
</layout> </layout>
@ -180,6 +203,18 @@
</item> </item>
</layout> </layout>
</widget> </widget>
<tabstops>
<tabstop>serif_family</tabstop>
<tabstop>sans_family</tabstop>
<tabstop>mono_family</tabstop>
<tabstop>default_font_size</tabstop>
<tabstop>mono_font_size</tabstop>
<tabstop>standard_font</tabstop>
<tabstop>max_view_width</tabstop>
<tabstop>opt_remember_window_size</tabstop>
<tabstop>css</tabstop>
<tabstop>buttonBox</tabstop>
</tabstops>
<resources> <resources>
<include location="../images.qrc"/> <include location="../images.qrc"/>
</resources> </resources>

View File

@ -59,6 +59,8 @@ def config(defaults=None):
help=_('Remember last used window size')) help=_('Remember last used window size'))
c.add_opt('user_css', default='', c.add_opt('user_css', default='',
help=_('Set the user CSS stylesheet. This can be used to customize the look of all books.')) help=_('Set the user CSS stylesheet. This can be used to customize the look of all books.'))
c.add_opt('max_view_width', default=6000,
help=_('Maximum width of the viewer window, in pixels.'))
fonts = c.add_group('FONTS', _('Font options')) fonts = c.add_group('FONTS', _('Font options'))
fonts('serif_family', default='Times New Roman' if iswindows else 'Liberation Serif', fonts('serif_family', default='Times New Roman' if iswindows else 'Liberation Serif',
@ -103,6 +105,7 @@ class ConfigDialog(QDialog, Ui_Dialog):
self.standard_font.setCurrentIndex({'serif':0, 'sans':1, 'mono':2}[opts.standard_font]) self.standard_font.setCurrentIndex({'serif':0, 'sans':1, 'mono':2}[opts.standard_font])
self.css.setPlainText(opts.user_css) self.css.setPlainText(opts.user_css)
self.css.setToolTip(_('Set the user CSS stylesheet. This can be used to customize the look of all books.')) self.css.setToolTip(_('Set the user CSS stylesheet. This can be used to customize the look of all books.'))
self.max_view_width.setValue(opts.max_view_width)
def accept(self, *args): def accept(self, *args):
@ -115,6 +118,7 @@ class ConfigDialog(QDialog, Ui_Dialog):
c.set('standard_font', {0:'serif', 1:'sans', 2:'mono'}[self.standard_font.currentIndex()]) c.set('standard_font', {0:'serif', 1:'sans', 2:'mono'}[self.standard_font.currentIndex()])
c.set('user_css', unicode(self.css.toPlainText())) c.set('user_css', unicode(self.css.toPlainText()))
c.set('remember_window_size', self.opt_remember_window_size.isChecked()) c.set('remember_window_size', self.opt_remember_window_size.isChecked())
c.set('max_view_width', int(self.max_view_width.value()))
return QDialog.accept(self, *args) return QDialog.accept(self, *args)
@ -333,6 +337,10 @@ class DocumentView(QWebView):
self.connect(self.document, SIGNAL('animated_scroll_done()'), self.connect(self.document, SIGNAL('animated_scroll_done()'),
self.animated_scroll_done, Qt.QueuedConnection) self.animated_scroll_done, Qt.QueuedConnection)
@property
def copy_action(self):
return self.document.action(QWebPage.Copy)
def animated_scroll_done(self): def animated_scroll_done(self):
if self.manager is not None: if self.manager is not None:
self.manager.scrolled(self.document.scroll_fraction) self.manager.scrolled(self.document.scroll_fraction)
@ -349,6 +357,8 @@ class DocumentView(QWebView):
def config(self, parent=None): def config(self, parent=None):
self.document.do_config(parent) self.document.do_config(parent)
if self.manager is not None:
self.manager.set_max_width()
def bookmark(self): def bookmark(self):
return self.document.bookmark() return self.document.bookmark()

View File

@ -9,7 +9,7 @@ from PyQt4.Qt import QMovie, QApplication, Qt, QIcon, QTimer, QWidget, SIGNAL, \
QDesktopServices, QDoubleSpinBox, QLabel, QTextBrowser, \ QDesktopServices, QDoubleSpinBox, QLabel, QTextBrowser, \
QPainter, QBrush, QColor, QStandardItemModel, QPalette, \ QPainter, QBrush, QColor, QStandardItemModel, QPalette, \
QStandardItem, QUrl, QRegExpValidator, QRegExp, QLineEdit, \ QStandardItem, QUrl, QRegExpValidator, QRegExp, QLineEdit, \
QToolButton, QMenu, QInputDialog, QAction QToolButton, QMenu, QInputDialog, QAction, QKeySequence
from calibre.gui2.viewer.main_ui import Ui_EbookViewer from calibre.gui2.viewer.main_ui import Ui_EbookViewer
from calibre.gui2.viewer.printing import Printing from calibre.gui2.viewer.printing import Printing
@ -284,6 +284,15 @@ class EbookViewer(MainWindow, Ui_EbookViewer):
self.tool_bar.widgetForAction(self.action_print).setPopupMode(QToolButton.MenuButtonPopup) self.tool_bar.widgetForAction(self.action_print).setPopupMode(QToolButton.MenuButtonPopup)
self.connect(self.action_print, SIGNAL("triggered(bool)"), partial(self.print_book, preview=False)) self.connect(self.action_print, SIGNAL("triggered(bool)"), partial(self.print_book, preview=False))
self.connect(self.print_menu.actions()[0], SIGNAL("triggered(bool)"), partial(self.print_book, preview=True)) self.connect(self.print_menu.actions()[0], SIGNAL("triggered(bool)"), partial(self.print_book, preview=True))
self.set_max_width()
ca = self.view.copy_action
ca.setShortcut(QKeySequence.Copy)
def set_max_width(self):
from calibre.gui2.viewer.documentview import config
c = config().parse()
self.frame.setMaximumWidth(c.max_view_width)
def print_book(self, preview): def print_book(self, preview):
Printing(self.iterator.spine, preview) Printing(self.iterator.spine, preview)

View File

@ -1,7 +1,8 @@
<ui version="4.0" > <?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>EbookViewer</class> <class>EbookViewer</class>
<widget class="QMainWindow" name="EbookViewer" > <widget class="QMainWindow" name="EbookViewer">
<property name="geometry" > <property name="geometry">
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
@ -9,37 +10,42 @@
<height>672</height> <height>672</height>
</rect> </rect>
</property> </property>
<property name="windowTitle" > <property name="windowTitle">
<string>Ebook Viewer</string> <string>Ebook Viewer</string>
</property> </property>
<property name="windowIcon" > <property name="windowIcon">
<iconset resource="../images.qrc" > <iconset resource="../images.qrc">
<normaloff>:/images/viewer.svg</normaloff>:/images/viewer.svg</iconset> <normaloff>:/images/viewer.svg</normaloff>:/images/viewer.svg</iconset>
</property> </property>
<widget class="QWidget" name="centralwidget" > <widget class="QWidget" name="centralwidget">
<layout class="QGridLayout" name="gridLayout_2" > <layout class="QGridLayout" name="gridLayout_2">
<item row="0" column="0" > <item row="0" column="0">
<widget class="QSplitter" name="splitter" > <widget class="QSplitter" name="splitter">
<property name="orientation" > <property name="orientation">
<enum>Qt::Horizontal</enum> <enum>Qt::Horizontal</enum>
</property> </property>
<widget class="QTreeView" name="toc" /> <widget class="QTreeView" name="toc"/>
<widget class="QWidget" name="layoutWidget" > <widget class="QFrame" name="frame">
<layout class="QGridLayout" name="gridLayout" > <property name="frameShape">
<item row="0" column="0" > <enum>QFrame::StyledPanel</enum>
<widget class="QWebView" name="view" > </property>
</widget> <property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QWebView" name="view"/>
</item> </item>
<item row="0" column="1" > <item row="0" column="1">
<widget class="QScrollBar" name="vertical_scrollbar" > <widget class="QScrollBar" name="vertical_scrollbar">
<property name="orientation" > <property name="orientation">
<enum>Qt::Vertical</enum> <enum>Qt::Vertical</enum>
</property> </property>
</widget> </widget>
</item> </item>
<item row="1" column="0" > <item row="1" column="0">
<widget class="QScrollBar" name="horizontal_scrollbar" > <widget class="QScrollBar" name="horizontal_scrollbar">
<property name="orientation" > <property name="orientation">
<enum>Qt::Horizontal</enum> <enum>Qt::Horizontal</enum>
</property> </property>
</widget> </widget>
@ -50,193 +56,193 @@
</item> </item>
</layout> </layout>
</widget> </widget>
<widget class="QToolBar" name="tool_bar" > <widget class="QToolBar" name="tool_bar">
<property name="windowTitle" > <property name="windowTitle">
<string>toolBar</string> <string>toolBar</string>
</property> </property>
<property name="iconSize" > <property name="iconSize">
<size> <size>
<width>32</width> <width>32</width>
<height>32</height> <height>32</height>
</size> </size>
</property> </property>
<attribute name="toolBarArea" > <attribute name="toolBarArea">
<enum>LeftToolBarArea</enum> <enum>LeftToolBarArea</enum>
</attribute> </attribute>
<attribute name="toolBarBreak" > <attribute name="toolBarBreak">
<bool>false</bool> <bool>false</bool>
</attribute> </attribute>
<addaction name="action_back" /> <addaction name="action_back"/>
<addaction name="action_forward" /> <addaction name="action_forward"/>
<addaction name="separator" /> <addaction name="separator"/>
<addaction name="action_open_ebook" /> <addaction name="action_open_ebook"/>
<addaction name="action_copy" /> <addaction name="action_copy"/>
<addaction name="action_font_size_larger" /> <addaction name="action_font_size_larger"/>
<addaction name="action_font_size_smaller" /> <addaction name="action_font_size_smaller"/>
<addaction name="action_table_of_contents" /> <addaction name="action_table_of_contents"/>
<addaction name="action_metadata" /> <addaction name="action_metadata"/>
<addaction name="separator" /> <addaction name="separator"/>
<addaction name="action_previous_page" /> <addaction name="action_previous_page"/>
<addaction name="action_next_page" /> <addaction name="action_next_page"/>
<addaction name="separator" /> <addaction name="separator"/>
<addaction name="action_bookmark" /> <addaction name="action_bookmark"/>
<addaction name="action_reference_mode" /> <addaction name="action_reference_mode"/>
<addaction name="separator" /> <addaction name="separator"/>
<addaction name="action_preferences" /> <addaction name="action_preferences"/>
<addaction name="action_full_screen" /> <addaction name="action_full_screen"/>
<addaction name="separator" /> <addaction name="separator"/>
<addaction name="action_print" /> <addaction name="action_print"/>
</widget> </widget>
<widget class="QToolBar" name="tool_bar2" > <widget class="QToolBar" name="tool_bar2">
<attribute name="toolBarArea" > <attribute name="toolBarArea">
<enum>TopToolBarArea</enum> <enum>TopToolBarArea</enum>
</attribute> </attribute>
<attribute name="toolBarBreak" > <attribute name="toolBarBreak">
<bool>false</bool> <bool>false</bool>
</attribute> </attribute>
<addaction name="action_find_next" /> <addaction name="action_find_next"/>
</widget> </widget>
<action name="action_back" > <action name="action_back">
<property name="icon" > <property name="icon">
<iconset resource="../images.qrc" > <iconset resource="../images.qrc">
<normaloff>:/images/back.svg</normaloff>:/images/back.svg</iconset> <normaloff>:/images/back.svg</normaloff>:/images/back.svg</iconset>
</property> </property>
<property name="text" > <property name="text">
<string>Back</string> <string>Back</string>
</property> </property>
</action> </action>
<action name="action_forward" > <action name="action_forward">
<property name="icon" > <property name="icon">
<iconset resource="../images.qrc" > <iconset resource="../images.qrc">
<normaloff>:/images/forward.svg</normaloff>:/images/forward.svg</iconset> <normaloff>:/images/forward.svg</normaloff>:/images/forward.svg</iconset>
</property> </property>
<property name="text" > <property name="text">
<string>Forward</string> <string>Forward</string>
</property> </property>
</action> </action>
<action name="action_next_page" > <action name="action_next_page">
<property name="icon" > <property name="icon">
<iconset resource="../images.qrc" > <iconset resource="../images.qrc">
<normaloff>:/images/next.svg</normaloff>:/images/next.svg</iconset> <normaloff>:/images/next.svg</normaloff>:/images/next.svg</iconset>
</property> </property>
<property name="text" > <property name="text">
<string>Next page</string> <string>Next page</string>
</property> </property>
</action> </action>
<action name="action_previous_page" > <action name="action_previous_page">
<property name="icon" > <property name="icon">
<iconset resource="../images.qrc" > <iconset resource="../images.qrc">
<normaloff>:/images/previous.svg</normaloff>:/images/previous.svg</iconset> <normaloff>:/images/previous.svg</normaloff>:/images/previous.svg</iconset>
</property> </property>
<property name="text" > <property name="text">
<string>Previous page</string> <string>Previous page</string>
</property> </property>
</action> </action>
<action name="action_font_size_larger" > <action name="action_font_size_larger">
<property name="icon" > <property name="icon">
<iconset resource="../images.qrc" > <iconset resource="../images.qrc">
<normaloff>:/images/font_size_larger.svg</normaloff>:/images/font_size_larger.svg</iconset> <normaloff>:/images/font_size_larger.svg</normaloff>:/images/font_size_larger.svg</iconset>
</property> </property>
<property name="text" > <property name="text">
<string>Font size larger</string> <string>Font size larger</string>
</property> </property>
</action> </action>
<action name="action_font_size_smaller" > <action name="action_font_size_smaller">
<property name="icon" > <property name="icon">
<iconset resource="../images.qrc" > <iconset resource="../images.qrc">
<normaloff>:/images/font_size_smaller.svg</normaloff>:/images/font_size_smaller.svg</iconset> <normaloff>:/images/font_size_smaller.svg</normaloff>:/images/font_size_smaller.svg</iconset>
</property> </property>
<property name="text" > <property name="text">
<string>Font size smaller</string> <string>Font size smaller</string>
</property> </property>
</action> </action>
<action name="action_table_of_contents" > <action name="action_table_of_contents">
<property name="icon" > <property name="icon">
<iconset resource="../images.qrc" > <iconset resource="../images.qrc">
<normaloff>:/images/chapters.svg</normaloff>:/images/chapters.svg</iconset> <normaloff>:/images/chapters.svg</normaloff>:/images/chapters.svg</iconset>
</property> </property>
<property name="text" > <property name="text">
<string>Table of Contents</string> <string>Table of Contents</string>
</property> </property>
</action> </action>
<action name="action_metadata" > <action name="action_metadata">
<property name="icon" > <property name="icon">
<iconset resource="../images.qrc" > <iconset resource="../images.qrc">
<normaloff>:/images/dialog_information.svg</normaloff>:/images/dialog_information.svg</iconset> <normaloff>:/images/dialog_information.svg</normaloff>:/images/dialog_information.svg</iconset>
</property> </property>
<property name="text" > <property name="text">
<string>Metadata</string> <string>Metadata</string>
</property> </property>
</action> </action>
<action name="action_open_ebook" > <action name="action_open_ebook">
<property name="icon" > <property name="icon">
<iconset resource="../images.qrc" > <iconset resource="../images.qrc">
<normaloff>:/images/document_open.svg</normaloff>:/images/document_open.svg</iconset> <normaloff>:/images/document_open.svg</normaloff>:/images/document_open.svg</iconset>
</property> </property>
<property name="text" > <property name="text">
<string>Open ebook</string> <string>Open ebook</string>
</property> </property>
</action> </action>
<action name="action_find_next" > <action name="action_find_next">
<property name="icon" > <property name="icon">
<iconset resource="../images.qrc" > <iconset resource="../images.qrc">
<normaloff>:/images/arrow-down.svg</normaloff>:/images/arrow-down.svg</iconset> <normaloff>:/images/arrow-down.svg</normaloff>:/images/arrow-down.svg</iconset>
</property> </property>
<property name="text" > <property name="text">
<string>Find next</string> <string>Find next</string>
</property> </property>
</action> </action>
<action name="action_copy" > <action name="action_copy">
<property name="icon" > <property name="icon">
<iconset resource="../images.qrc" > <iconset resource="../images.qrc">
<normaloff>:/images/convert.svg</normaloff>:/images/convert.svg</iconset> <normaloff>:/images/convert.svg</normaloff>:/images/convert.svg</iconset>
</property> </property>
<property name="text" > <property name="text">
<string>Copy to clipboard</string> <string>Copy to clipboard</string>
</property> </property>
</action> </action>
<action name="action_preferences" > <action name="action_preferences">
<property name="icon" > <property name="icon">
<iconset resource="../images.qrc" > <iconset resource="../images.qrc">
<normaloff>:/images/config.svg</normaloff>:/images/config.svg</iconset> <normaloff>:/images/config.svg</normaloff>:/images/config.svg</iconset>
</property> </property>
<property name="text" > <property name="text">
<string>Preferences</string> <string>Preferences</string>
</property> </property>
</action> </action>
<action name="action_reference_mode" > <action name="action_reference_mode">
<property name="icon" > <property name="icon">
<iconset resource="../images.qrc" > <iconset resource="../images.qrc">
<normaloff>:/images/lookfeel.svg</normaloff>:/images/lookfeel.svg</iconset> <normaloff>:/images/lookfeel.svg</normaloff>:/images/lookfeel.svg</iconset>
</property> </property>
<property name="text" > <property name="text">
<string>Reference Mode</string> <string>Reference Mode</string>
</property> </property>
</action> </action>
<action name="action_bookmark" > <action name="action_bookmark">
<property name="icon" > <property name="icon">
<iconset resource="../images.qrc" > <iconset resource="../images.qrc">
<normaloff>:/images/bookmarks.svg</normaloff>:/images/bookmarks.svg</iconset> <normaloff>:/images/bookmarks.svg</normaloff>:/images/bookmarks.svg</iconset>
</property> </property>
<property name="text" > <property name="text">
<string>Bookmark</string> <string>Bookmark</string>
</property> </property>
</action> </action>
<action name="action_full_screen" > <action name="action_full_screen">
<property name="icon" > <property name="icon">
<iconset resource="../images.qrc" > <iconset resource="../images.qrc">
<normaloff>:/images/page.svg</normaloff>:/images/page.svg</iconset> <normaloff>:/images/page.svg</normaloff>:/images/page.svg</iconset>
</property> </property>
<property name="text" > <property name="text">
<string>Toggle full screen</string> <string>Toggle full screen</string>
</property> </property>
</action> </action>
<action name="action_print" > <action name="action_print">
<property name="icon" > <property name="icon">
<iconset resource="../images.qrc" > <iconset resource="../images.qrc">
<normaloff>:/images/print.svg</normaloff>:/images/print.svg</iconset> <normaloff>:/images/print.svg</normaloff>:/images/print.svg</iconset>
</property> </property>
<property name="text" > <property name="text">
<string>Print</string> <string>Print</string>
</property> </property>
</action> </action>
@ -249,7 +255,7 @@
</customwidget> </customwidget>
</customwidgets> </customwidgets>
<resources> <resources>
<include location="../images.qrc" /> <include location="../images.qrc"/>
</resources> </resources>
<connections/> <connections/>
</ui> </ui>