qpdfview-0.4.18/CHANGES0000644000000000000000000010673313516127411012565 0ustar 00000000000000Release 0.4.18: * Fixed various issue w.r.t. statically linked plug-ins and cross builds for Windows. Thanks to Marshall Banana. * Fixed encoding issues w.r.t. CUPS names. Thanks to Silvan Scherrer. * Fixed not overwriting page ranges CUPS option when set already by Qt's print dialog. Thanks to Fabio Rossi. * Fixed refreshing modified documents from disk. * Added support for nested splitting of document views. * Added support for transparent decompression of document files. * Added restoring of tab order and of current tab. * Added action to open current file in new window. Thanks to Pavel Sanda. * Updated support for MuPDF to version 1.12 and later. Thanks to S. Razi Alavizadeh. * Added support for EPUB, XPS, CBZ and FB2 via MuPDF. Thanks to S. Razi Alavizadeh. * Automated translations import from Launchpad via Travis CI. Thanks to S. Razi Alavizadeh. * Imported various new and updated translations from Launchpad. Thanks to all Launchpad translators! Release 0.4.17: * Fixed query to populate the instance list for the choose instance dialog. * Fixed selecting the complete text upon opening a page number dialog. * Fixed computation of tile sub rect w.r.t. non-unit device pixel ratios. * Moved loading of interactive elements out of the main event loop. * Optimize tile rendering event handling by centralizing dispatch. * The results of the current tab are now automatically expanded in the extended search dock. * Added support for external document links to the outline view. * Added optional page-parallel execution of text search. * Added triggering SyncTeX reverse search using a keyboard modifier. * Keyboard modifiers for mouse interaction can be disabled. * Optimizations of the search dock layout w.r.t. vertical/horizontal positioning. * Added context menu action to move document to a different instance. * Changed cache size tracking from byte to kilobyte granularity to support more than 2 GB cache. * Added a save in addition to the save-as action to simplify modifying documents in-place. * Added Japanese translations. Thanks to Koji Yokota. * Updated British English translations. Thanks to Anthony Harrington. * Updated Russian translations. Thanks to ned. * Updated French translations. Thanks to Charles Monzat. * Updated Lithunian translations. Thanks Moo. Release 0.4.16: * Fixed an incompatibility with FDo's shared MIME type database that broke opening DjVu documents. * Added function to dynamically fit thumbnails into the viewport. * Added support to use system SyncTeX parser library. * Added support to open image formats supported by Qt. * SyncTeX is available and discoverable within the main view's context menu. * Updated Czech translations. Thanks to Pavel Fric. * Updated Malay translations. Thanks to abuyop. * Updated Brazilian Portuguese translations. Thanks to Felipe Braga. * Updated Russian translations. Thanks to ned. * Updated British English translations. Thanks to Andi Chandler and Anthony Harrington. * Updated Ukrainian translations. Thanks to Yuri Chornoivan. * Updated Portuguese translations. Thanks to Sérgio Marques. * Updated Lithunian translations. Thanks to Moo. * Updated Spanish translations. Thanks to Guillermo and Adolfo Jayme. * Updated French translations. Thanks to Charles Monzat. Release 0.4.15: * Fixed compatibility with MuPDF version 1.7. Thanks to Martin Banky. * Added keeping the page-relative position upon page change. * Added document properties on PDF version, encryption and linearization. * Added keyboard navigation to the outline view. Thanks to Bendik R. Opstad. * Added configurable document and tab context menus. Thanks to S. Razi Alavizadeh. * Added composition modes to adjust the background of scanned documents. * Extended the default movement keyboard shortcuts to include the numpad keys. * Made the trim-margins setting a per-tab property. * Added Hungarian translations. Thanks to Páder Rezső. * Updated Polish translations. Thanks to Piotr Strębski. * Updated Italian translations. Thanks to Claudio Arseni. * Updated Czech translations. Thanks to Pavel Fric. * Updated British English translations. Thanks to Anthony Harrington and Andy Chandler. * Updated Malay translations. Thanks to abuyop. * Updated Ukrainian translations. Thanks to Yuri Chornoivan. * Updated French translations. Thanks to Jean Marc. Release 0.4.14: * Fixed keyboard movement not working in annotations and form fields. * Fixed display of warning dialog upon restoring tabs. * Fixed compilation using LLVM Clang. Thanks to Franz Fellner. * Fixed crash upon middle-clicking into empty part of tab bar. * Fixed a race condition in text extraction within the extended search dock. * Fixed losing rendering hints after unlocking encrypted PDF documents. * Improved user interaction of the extended search dock. * Improved the speed of text extraction within the extended search dock. Thanks to S. Razi Alavizadeh. * Improved performance at very large scale factors by dynamically adjusting tile size. * Added restoring of expanded outline items after refresh. Thanks to Bendik R. Opstad. * Added various smaller user interface enhancements. * Added whole-words-only search option (depending on Poppler version 0.31 or higher). * Added optionally searchable tabs and bookmarks menus. * Improved flexibility of searching DjVu documents. * Added Finnish translation of online help. Thanks to Timo Seppola. * Updated settings section of the online help. * Updated Czech translations. Thanks to Pavel Fric. * Updated Ukrainian translations. Thanks to Yuri Chornoivan. * Updated Polish translations. Thanks to Piotr Strębski. * Updated British English translations. Thanks to Anthony Harrington. * Updated Slovak translations. Thanks to DAG Software. * Updated Spanish translations. Thanks to Adolfo Jayme. * Updated Simplified Chinese translations. Thanks to electricface. * Updated Catalan translations. Thanks to VPablo. * Updated Russian translations. Thanks to ☠Jay ZDLin☠ and Aleksey Kabanov. * Updated Galician translations. Thanks to Marcos Lans. * Updated Malay translations. Thanks to abuyop. * Updated French translations. Thanks to Jean Marc. Release 0.4.13: * Fixed a memory leak when processing meta-data in the DjVu plug-in. * Fixed a crash when loading corrupted DjVu documents. * Removed the warning dialog about unknown file type to fix the '--quiet' option. * Added optional extended search dock displaying results from all open tabs. Thanks to S. Razi Alavizadeh. * Added per-tab setting to convert pages to grayscale after rendering. * Updated British English translations. Thanks to Anthony Harrington. * Updated Czech translations. Thanks to Pavel Fric. * Updated Malay translations. Thanks to abuyop. * Updated Galician translations. Thanks to Marcos Lans. * Updated Kazakh translations. Thanks to Baurzhan Muftakhidinov. * Updated Ukrainian translations. Thanks to Yuri Chornoivan. * Updated Portuguese translations. Thanks to Sérgio Marques. * Updated Polish translations. Thanks to Piotr Strębski. Release 0.4.12: * Fixed loading document-supplied view mode defaults. * Fixed installation location of application icon to use hicolor icon theme. * Fixed an instability of DjVu meta-data extraction. * Added function to automatically trim empty page margins. * Added dock to improved access to bookmarks. Thanks to S. Razi Alavizadeh. * Added support for document-supplied page label. Thanks to S. Razi Alavizadeh. * Added context menu to copy link addresses. * Improved caching, i.e. do not drop pixmaps on scale factor change. Thanks to Martin Spacek. * Improved rendering by giving a higher priority to rendering visible pages compared to prefetching. Thanks to S. Razi Alavizadeh. * Improved computation of current page for continuous layouts. Thanks to S. Razi Alavizadeh. * Improved searching of DjVu documents. Thanks to S. Razi Alavizadeh. * Extended the D-Bus interface to support more IPC scenarios. * Updated Italian translations. Thanks to Claudio Arseni. * Updated British English translations. Thanks to Anthony Harrington. * Updated Ukrainian translations. Thanks to Yuri Chornoivan. * Updated Czech translations. Thanks to Pavel Fric. * Updated Slovak translations. Thanks to DAG Software. * Updated Thai translations. Thanks to Rockworld. * Updated Russian translations. Thanks to Oleg Koptev. * Updated Malay translations. Thanks to abuyop. * Updated Catalan translations. Thanks to VPablo. * Updated Galician translations. Thanks to Marcos Lans. * Updated Polish translations. Thanks to Mateusz Łukasik. Release 0.4.11.1: * Fix progress and error icons and obsolete pixmaps not working without tiling. * Fix compilation using Microsoft Visual C++. Thanks to S. Razi Alavizadeh. Release 0.4.11: * Added tiled rendering currently disabled by default. * Made zooming logarithmic instead of linear. Thanks to Martin Spacek. * Added displaying various library versions in the about box. Thanks to Martin Spacek. * Added actions to toggle visibility of tool bars and menu bar. * Fixed questionably low interval for automatically saving persistent state. Thanks to Martin Spacek. * Fixed high writing overhead for automatically saving persistent state. Thanks to Boris Popov. * Fixed building without SQLite support again. Thanks to Sébastien Szymanski. * Fixed disabling restoring of tabs and bookmarks. Thanks to Benjamin Eltzner. * Removed extended print options page set and number-up as Qt version 5.2 supports them internally. * Updated French translations. Thanks to Tubuntu and Sylvie Gallet. * Updated British English translations. Thanks to A. Kohl, Anthony Harrington and fossfreedom. * Updated Galician translations. Thanks to Marcos Lans. * Updated Ukrainian translations. Thanks to Yuri Chornoivan. * Updated Spanish translations. Thanks to Adolfo Jayme. * Updated Czech translations. Thanks to Pavel Fric. * Updated Catalan translations. Thanks to VPablo. * Updated Malay translations. Thanks to abuyop. * Updated Italian translations. Thanks to Claudio Arseni. * Updated Polish translations. Thanks to Piotr Strębski. * Updated Russian translations. Thanks to Alexander Volkov. * Updated Slovak translations. Thanks to DAG Software. * Added Belarussian translations. Thanks to Yury Yatsynovich. * Added Thai translations. Thanks to KL. Release 0.4.10: * Fixed race condition when a deleted render task mit tries to emit a signal. Thanks to Benjamin Eltzner. * Fixed double deletion in recently closed menu. Thanks to Arnaud Schmittbuhl. * Fixed inconsistency when invoking a unique instance. Thanks to Dorian Scholz. * Fixed confusing auto-refresh if file is deleted. * Added using the document title from the meta-data as the tab title. Thanks to Dorian Scholz. * Added spreading out tabs to fill the whole tab bar. Thanks to Dorian Scholz. * Added periodically storing persistent state. * Added opening internal links in a new tab by middle-clicking. * Added zooming to selection by middle-dragging. * Updated Ukrainian translations. Thanks to Yuri Chornoivan. * Updated British English translations. Thanks to Anthony Harrington. * Updated Vietnamese translations. Thanks to Khang Mạnh Tử. * Updated Indonesian translation. Thanks to Rizal Muttaqin and Trisno Pamuji. * Updated Czech translations. Thanks to Pavel Fric. * Updated Slovak translations. Thanks to DAG Software. * Updated Polish translations. Thanks to Piotr Strębski. * Updated Romainian translations. Thanks to Vlad Paul Paval. * Updated Portuguese translations. Thanks to Sérgio Marques. * Updated Malay translations. Thanks abuyop. * Updated Galician translations. Thanks to Marcos Lans. * Updated Asturian translations. Thanks to Xuacu Saturio. * Updated Brazilian Portuguese translations. Thanks to Lucas Reis. Release 0.4.9: * Added experimental Fitz plug-in. * Added action to use text as selection instead of copying to clipboard. * Added color feedback whether search term was found to help dialog. Thanks to Benjamin Eltzner. * Added option to switch multiple page layouts into right-to-left mode. Thanks to Abdellah Chelli. * Added loading of document-supplied defaults. * Added setting to choose Poppler backend. * Updated Czech translations. Thanks to Pavel Fric. * Updated Slovak translations. Thanks to DAG Software. * Updated British English translations. Thanks to Anthony Harrington. * Updated Polish translations. Thanks to Piotr Strębski. * Updated French translations. Thanks to Pierre Soulat and Arnaud Schmittbuhl. * Updated Azerbaijani translations. Thanks to Rashid Aliyev. * Updated Ukrainian translations. Thanks to Yuri Chornoivan. * Updated Malay translations. Thanks to abuyop. * Updated German translations. Thanks to Benjamin Eltzner. * Updated Vietnamese translations. Thanks to Khang Mạnh Tử. * Updated Kazakh translations. Thanks to Baurzhan Muftakhidinov. * Updated Asturian translations. Thanks to Xuacu Saturio. * Updated Catalan translations. Thanks to Marc Coll Carrillo and VPablo. * Updated Spanish translations. Thanks to Aaron Farias. * Updated Galician translatios. Thanks to Miguel Anxo Bouzada. * Updated Hebrew translations. Thanks to Yaron Shahrabani. * Updated Italian translations. Thanks to Claudio Arseni. Release 0.4.8: * Fixed building without SQLite support. Thanks to Franz Fellner. * Fixed a performance problem when switching to a tab with a fallback outline takes seconds. * Added optional functionality to restore closed tabs. * Added zoom functionality to the presentation view. * Added Vietnamese translations. Thanks to Khang Mạnh Tử. * Added Swedish translations. Thanks to Martin Linder. * Updated Bulgarian translations. Thanks to Atanas Kovachki. * Updated Malay translations. Thanks to abuyop. * Updated Ukrainian translations. Thanks to Yuri Chornoivan. * Updated Slovak translations. Thanks to DAG Software. * Updated Portuguese translations. Thanks to Sérgio Marques. * Updated Czech translations. Thanks to Pavel Fric. * Updated Russian translations. Thanks to HsH and Aleksey Kabanov. * Updated French translations. Thanks to Arnaud Schmittbuhl. * Updated British English translations. Thanks to Anthony Harrington. * Updated Catalan translations. Thanks to Marc Coll Carrillo. * Updated German translations. Thanks to Dennis Baudys. * Updated Chinese (Simplified) translations. Thanks to Evo Jimmy. * Updated Malay translations. Thanks to abuyop. * Updated Azerbaijani translations. Thanks to Rashid Aliyev. * Updated Polish translations. Thanks to Mateusz Łukasik. Release 0.4.7: * Extended bookmarks storage format to add labelled bookmarks. * Extended handling of annotations and form fields using overlays. * Added support for opening execute links and for saving file attachments from annotations. * Improved parsing of command-line arguments and Workbench integration on AmigaOS. Thanks to Chris Young. * Improved behaviour of movement keys in certain corner cases. Thanks to Thomas Etter. * Added keyboard shortcuts to focus current page and scale factor in tool bar. * Fixed a race condition that could lead to dropping rendered pages. * Fixed a small issue with adding and removing annotations. * Added partial Lithunian translation. Thanks to Automatizatorius. * Added partial Korean translation. Thanks to Litty. * Updated Czech translations. Thanks to Pavel Fric. * Updated French translations. Thanks to Arnaud Schmittbuhl, Tubuntu, Pierre Soulat and Teromene. * Updated Ukrainian translations. Thanks to Yuri Chornoivan. * Updated British English translations. Thanks to Andi Chandler and Anthony Harrington. * Updated Malay translations. Thanks to abuyop. * Updated Italian translations. Thanks to Claudio Arseni. * Updated Polish translations. Thanks to Mateusz Łukasik and Piotr Strębski. * Updated Brazilian Portuguese translations. Thanks to Rodrigo Zimmermann. * Updated German translations. Thanks to Thomas Worofsky, Tobias B. and Benjamin Eltzner. * Updated Kazakh translations. Thanks to Baurzhan Muftakhidinov. * Updated Slovak translations. Thanks to DAG Software. * Updated Bulgarian translations. Thanks to Atanas Kovachki. * Updated Galician translations. Thanks to Marcos Lans. * Updated Catalan translations. Thanks to VPablo. * Updated Greek translations. Thanks to George Christofis. * Updated Italian translations. Thanks to Giovanni Grieco. * Updated Spanish translations. Thanks to Adolfo Jayme Barrientos. * Updated Azerbaijani translations. Thanks to Rashid Aliyev. Release 0.4.6: * Added function that keeps obsolete pixmaps and displays them until final rendering is available. * Added command-line option that displays a dialog to choose the name of the started instance. * Added confirmation dialog before closing a modified document. * Added optional support for device pixel ratios that are unequal to one. * Added setting to change presentation background. * Added desktop action for non-unique instances and choosing instances to the desktop entry. * Fixed loading of translation for Qt dialogs, e.g. the print dialog. * Added support for translations of online help. Thanks to Yuri Chornoivan. * Added support for searching of online help. Thanks to Benjamin Eltzner. * Updated Ukrainian translation and added translation of the online help. Thanks to Yuri Chornoivan. * Updated Czech translation. Thanks to Pavel Fric. * Updated Galician translation and added partial translation of the online help. Thanks to Marcos Lans. * Updated Malay translation and added partial translation of the online help. Thanks to abuyop. * Updated Polish translation and added partial translation of the online help. Thanks to Mateusz Łukasik. * Updated French translation and added partial translation of the online help. Thanks to Arnaud Schmittbuhl, Pierre Soulat and Pierre Slamich. * Updated Italian translation and added partial translation of the online help. Thanks to Claudio Arseni. * Updated Catalan translation. Thanks to Marc Coll Carrillo and VPablo. * Updated Czech translation and added translation of the online help. Thanks to Pavel Fric. * Updated Slovak translation and added partial translation of the online help. Thanks to DAG Software. * Updated Portuguese translation. Thanks to Sérgio Marques. * Updated British English translation and added partial translation of the online help. Thanks to fossfreedom and Andi Chandler. * Updated Idonesian translation. Thanks to Trisno Pamuji. * Updated Azerbaijani translation and added partial translation of the online help. Thanks to Rashid Aliyev. * Updated Chinese (Simplified) translation and added partial translation of the online help. Thanks to Xiaoxing Ye. * Updated Hebrew translation. Thanks to Yaron Shahrabani. * Updated German translation and added partial translation of the online help. Thanks to Tobias B. and Benjamin Eltzner. * Added partial Bulgarian translation of the online help. Thanks to Atanas Kovachki. Release 0.4.5: * Fixed an error in drawing the search progress. * Fixed an error preventing the annotation context menu from being displayed. * Fixed decorating links when using Qt5. * Improved the layout of the search widgets. * Added setting to heuristically synchronize the outline view to the current page. * Improved thumbnails layout to change between horizontal and vertical according to dock location. * Updated Malay translation. Thanks to abuyop. * Updated Ukrainian translation. Thanks to Yuri Chornoivan. * Updated Czech translation. Thanks to Pavel Fric. * Updated Italian translation. Thanks to Claudio Arseni. * Updated Slovak translation. Thanks to DAG Software. * Updated German translation. Thanks to A. Kohl. * Updated Bulgarian translation. Thanks to Blagovest Petrov. * Updated French translation. Thanks to Arnaud Schmittbuhl. * Updated Kazakh translation. Thanks to Baurzhan Muftakhidinov. Release 0.4.4: * Improved building on Windows and OS/2 and plug-in handling on all platforms. Thanks to Silvan Scherrer. * Added button to revert only the settings on the current tab of the settings dialog to their defaults. * Added tool tip showing paper size to the thumbnails view. * Added setting for number of entries in the recently used list. * Updated Russian translation. Thanks to Kyrill Detinov and Rashid Aliyev. * Updated Azerbaijani translation. Thanks to Rashid Aliyev. * Updated Brazilian Portuguese translation. Thanks to Phillipe Smith. * Updated Spanish translation. Thanks to Adolfo Jayme Barrientos. * Updated Slovak translation. Thanks to DAG Software. * Updated Ukrainian translation. Thanks to Yuri Chornoivan. * Updated Esperanto translation. Thanks to Eliovir. * Updated Czech translation. Thanks to Pavel Fric. * Updated Galician translation. Thanks to Marcos Lans. * Updated Romanian translation. Thanks to Vlad Paul Paval. * Updated Malay translation. Thanks to abuyop. * Updated British English translation. Thanks to Andi Chandler. * Updated Italian translation. Thanks to Claudio Arseni. * Updated Polish translation. Thanks to Mateusz Łukasik. * Updated Croatian translation. Thanks to freedomrun. * Updated French translation. Thanks to Teromene. * Added Portuguese translation. Thanks to Sérgio Marques. * Added Kazakh translation. Thanks to Baurzhan Muftakhidinov. Release 0.4.3: * Fixed custom movement shortcuts not being activated after program initialization. * Fixed default scroll area shortcuts not being shadowed completely. * Fixed outline view layout on open and refresh and trying to set resize mode of non-existent outline view columns. * Increased auto-refresh timeout and made auto-refresh and prefetch timeouts configurable. * Improved drawing of search result highlights and added a setting for the highlight color. * Added command-line options '--quiet' and '--help'. * Added support for multiple shortcuts for each action. * Added option to highlight the current thumbnail. * Updated Ukrainian translation. Thanks to Yuri Chornoivan. * Updated Malay translation. Thanks to abuyop. * Updated Slovak translation. Thanks to DAG Software. * Updated Croatian translation. Thanks to freedomrun. * Updated Polish translation. Thanks to Mateusz Łukasik. * Updated Czech translation. Thanks to Pavel Fric. * Updated French translation. Thanks to Hélion du Mas des Bourboux and Dorian. * Updated Catalan translation. Thanks to VPablo. * Updated Hebrew translation. Thanks to Yaron Shahrabani. * Updated Asturian translation. Thanks to Xuacu Saturio. * Updated British English translation. Thanks to Andi Chandler. * Updated Brazilian Portuguese translation. Thanks to Phillipe Smith. * Updated Romanian translation. Thanks to Vlad Paul Paval. * Added Galician translation. Thanks to Marcos Lans and Miguel Anxo Bouzada. Release 0.4.2: * Refactoring to improve code size and quality. * Added restoring and saving of printer settings. * Added command-line option to initiate a search in the current tab. * Added setting to determine the color of annotations added. * Instead of return to page, there is now jump backward and forward. * Added setting to limit thumbnails to search results. * Added setting on where to open new tabs. * Added setting to display the current page in the window title. * Updated Czech translation. Thanks Pavel Fric. * Updated Malay translation. Thanks to abuyop. * Updated French translation. Thanks to Tubuntu and Hélion du Mas des Bourboux. * Updated Ukrainian translation. Thanks to Yuri Chornoivan. * Updated Polish translation. Thanks to isamu715 and Mateusz Łukasik. * Updated Azerbaijani translation. Thanks to Rashid Aliyev. * Updated Romanian translation. Thanks to Vlad Paul Paval. * Updated Bulgarian translation. Thanks to Blagovest Petrov. * Updated Slovak translation. Thanks to DAG Software. * Updated Russian translation. Thanks to Eugene Marshal and Ivlev Denis. * Updated British English translation. Thanks to fossfreedom. * Updated Croatian translation. Thanks to freedomrun and Paolo Pelesk. * Updated Spanish translation. Thanks to Adolfo Jayme Barrientos and Aaron Farias. * Updated Italian translation. Thanks to Claudio Arseni. * Updated Catalan translation. Thanks to VPablo. * Updated Chinese (Simplified) translation. Thanks to Wang Dianjin. * Updated Brazilian Portuguese translation. Thanks to Phillipe Smith. Release 0.4.1: * Added configurable keyboard shortcuts. * Added per-plug-in settings for PDF and PS plug-ins. * Added granular hinting and thin line mode settings for the PDF plug-in. * Added progress and errors icons for page rendering. * Added workaround for overwriting a file with itself using a temporary file. * Added rudimentary text extraction and search support for DjVu documents. * Changed color inversion to be a per-tab property. * Improved rotation and color inversion in the presentation view. * Updated Danish translation. Thanks to Aputsiaq Niels Janussen. * Updated Czech translation. Thanks to Pavel Fric. * Updated Polish translation. Thanks to Mateusz Łukasik and isamu715. * Updated Malay translation. Thanks to abuyop. * Updated Slovak translation. Thanks to DAG Software. * Updated Italian translation. Thanks to Claudio Arseni. * Updated Russian translation. Thanks to Kyrill Detinov. * Updated Brazilian Portuguese translation. Thanks to Phillipe Smith. * Updated Danish translation. Thanks to Aputsiaq Niels Janussen. * Updated French translation. Thanks to Sylvie Gallet and Tubuntu. * Updated Catalan translation. Thanks to VPablo. * Updated Spanish translation. Thanks to Adolfo Jayme Barrientos. * Updated Hebrew translation. Thanks to Yaron Shahrabani. * Updated Ukrainian translation. Thanks to yurchor. * Updated British English translation. Thanks to Andi Chandler. * Added Esperanto translation. Thanks to Donald Rogers. * Added Bulgarian translation. Thanks to Atanas Kovachki and Blagovest Petrov. * Added partial Azerbaijani translation. Thanks to Rashid Aliyev. Release 0.4: * Added support for multiple formats. * Added format detection using libmagic. * Added support for PostScript. Thanks to Alexander Volkov. * Added rudimentary support for DjVu. * Added support for hyperlinks in DjVu documents. Thanks to Alexander Volkov. * Added support for outline and properties of DjVu documents. * Added support for UNIX signals. * Added missing support for links to external documents. * Small improvements to prefetching. * Changed presentation view to support rotation, caching and prefetching. * Dropped support for storing tabs and bookmarks as XML files. * Improved handling of headers and their interdependencies. Thanks to Alexander Volkov. * Updated Ukrainian translation. Thanks to Vladimir Smolyar and yurchor. * Updated Croatian translation. Thanks to freedomrun. * Updated Slovak translation. Thanks to DAG Software. * Updated Czech translation. Thanks to Pavel Fric. * Updated British English translation. Thanks to Andi Chandler. * Updated French translation. Thanks to Hélion du Mas des Bourboux. * Updated Polish translation. Thanks to Mateusz Łukasik and Mike08. * Updated Brazilian Portuguese translation. Thanks to Phillipe Smith. * Updated Hebrew translation. Thanks to Yaron Shahrabani. * Updated Catalan translation. Thanks to VPablo. * Updated Asturian translation. Thanks to Xuacu Saturio. * Updated French translation. Thanks to Sylvie Gallet and Tanguy Herrmann. * Updated Italian translation. Thanks to Claudio Arseni. * Updated Spanish translation. Thanks to Dante Diaz. * Updated Russian translation. Thanks to Vladimir Smolyar. * Updated Bosnian translation. Thanks to Kenan Dervišević. * Added Malay translation. Thanks to abuyop. Release 0.3.7: * Added persistent per-file settings. * Separated "Save copy" and "Save as" functionality. * Added extended print option "page ranges". * Added configurable background and paper color. * Added named instances. Thanks to Michał Trybus. * Refactored settings handling. Thanks to Alexander Volkov. * Reduced header interdependencies. Thanks to Alexander Volkov. * Changed searching for data files in the "data" subdirectory of the application directory. * Updated Hebrew translation. Thanks to Yaron Shahrabani. * Updated Italian translation. Thanks to Claudio Arseni. * Updated Slovak translation. Thanks to DAG Software. * Updated Brazilian Portuguese translation. Thanks to Átila Camurça and Phillipe Smith. * Updated Asturian translation. Thanks to Xuacu Saturio. * Updated Czech translation. Thanks to Pavel Fric. * Updated Danish translation. Thanks to Daniel Ejsing-Duun and Aputsiaq Niels Janussen. * Updated Romanian translation. Thanks to Vlad Paul Paval. * Updated Catalan translation. Thanks to VPablo. * Updated Russian translation. Thanks to Nkolay Parukhin. * Updated Spanish translation. Thanks to Adolfo Jayme Barrientos. * Updated Uyghur translation. Thanks to Gheyret T.Kenji and Sahran. * Updated Croatian translation. Thanks to freedomrun. * Added Bosnian translation. Thanks to Kenan Dervišević. * Added Polish translation. Thanks to Michał Trybus. * Added Basque translation. Thanks to Asier Iturralde Sarasola. * Added partial Kirgiz translation. Thanks to blacktext. * Added partial Indonesian translation. Thanks to Abdul Munif Hanafi. Release 0.3.6: * Added a 'multiple pages' layout mode. * Added support for extended options in the print dialog. * Added support for multiple returns. * Added rudimentary form support. * Fixed handling of boolean CUPS options. * Exposed render hint 'overprint preview'. * Added viewport culling for the thumbnails view. * Updated Slovak translation. Thanks to DAG Software. * Updated Czech translation. Thanks Pavel Fric. * Updated Hebrew translation. Thanks to Yaron Shahrabani. * Updated Brazilian Portuguese translation. Thanks to Phillipe Smith and Rafael Neri. * Updated Spanish translation. Thanks to Adolfo Jayme Barrientos, manolox and Daniel Ejsing-Duun. * Updated Croatian translation. Thanks to freedomrun and gogo. * Updated French translation. Thanks to Aurélien Ribeiro, Dominique Chomet, Quentin Pagès and Gisele Perreault. * Updated Greek translation. Thanks to George Christofis. * Updated Russian translation. Thanks to Kyrill Detinov and Vladimir Smolyar. * Updated Ukrainian translation. Thanks to Vladimir Smolyar. * Added Danish translation. Thanks to mjjzf, Ask Hjorth Larsen and Daniel Ejsing-Duun. * Added partial Uyghur translation. Thanks to Gheyret T.Kenji. * Added British English translation. Thanks to Andi Chandler. * Added Italian translation. Thanks to Claudio Arseni. * Added Romanian translation. Thanks to Vlad Paul Paval. * Added partial Chinese (Simplified) translation. Thanks to Wang Dianjin. * Added partial Burmese translation. Thanks to Pyae Sone. * Added Catalan translation. Thanks to VPablo. Release 0.3.5: * Improved compatibility with older versions of Qt and Poppler. * Improved the layout of the settings dialog. * Improved compatibility with other applications using Poppler by cropping text annotations to 24px x 24px @ 72dpi. * Added searching data files in the application directory to improve compatibility with Windows and OS/2. * Added a 'save image to file' option to the 'copy to clipboard' pop-up menu. * Added support for forward and inverse search using SyncTeX. * Updated Slovak and Czech translations. Thanks to DAG Software and Pavel Fric. * Updated Brazilian Portuguese translation. Thanks to Phillipe Smith and Fábio Nogueira. * Updated Russian and Ukrainian translations. Thanks to Vladimir Smolyar. * Added Hebrew translation. Thanks to Yaron Shahrabani. * Updated partial Greek translation. Thanks to George Christofis. * Added Turkish translation. Thanks to Şâkir Aşçı. * Added partial Croation translation. Thanks to freedomrun. * Added partial Finnish translation. Thanks to Eetu Aalto. * Added partial Asturian translation. Thanks to Xuacu Saturio. * Added partial French translation. Thanks to Baptiste Fontaine, Kévin Peignot, Smonff, Sylvie Gallet, fbn69 and Gisele Perreault. * Added partial Spanish translation. Thanks to Adolfo Jayme Barrientos, Dante Díaz and Paco Molinero. Release 0.3.4: * Fixed a crash when highlight all is enabled and the document is refreshed. * Fixed problems with highlight all and find next. * Added a setting to select the screen used in the presentation view. * Added a setting to synchronize main view and presentation view. * Added a 'Two pages with cover page' layout mode. * Added delayed pop-up menu for 'recently used' to 'open (in new tab)' tool bar action. * Added Brazilian Portuguese translation. Thanks to Phillipe Smith. * Updated Slovak translation. Thanks to DAG Software. * Updated Czech translation. Thanks to Pavel Fric. * Updated Russian and Ukrainian translations. Thanks to Vladimir Smolyar. Release 0.3.3: * Fixed some rendering artifacts. * Improved navigation using bookmarks. * Reorganized settings dialog and made keyboard modifiers for several mouse actions configurable. * Added menu and tool bar actions to copy texts or images or add annotations. * Added Ukrainian translation. Thanks to Vladimir Smolyar. * Updated Slovak translation. Thanks to DAG Software. * Updated Czech translation. Thanks to Pavel Fric. * Updated Russian translation. Thanks to Eugene Marshal and Vladimir Smolyar. Release 0.3.2: * Reduced code size and complexity. * Reduced memory consumption and made caching optional. * Further interface consolidation. * Changed the search interface to allow concurrent search processes. * Replaced the transient bookmarking mechanism in the document view with an optionally persistent bookmarking mechanism in the main window which bookmarks files and pages. * Added rudimentary annotation support. * Added '--unique' command-line option to the system-wide launcher. * Added Czech translation. Thanks to Pavel Fric. * Added partial Greek translation. Thanks to athmakrigiannis. * Added partial Russian translation. Thanks to v_2e. * Added Slovak translation. Thanks to DAG Software. Release 0.3.1: * Fixed several bugs. * Changed license from GPLv3 to GPLv2 to remove license incompatibilities with poppler. * Removed French, Ukrainian and Russian translations because of license change. Release 0.3: * Focus on usability of the interface. * Improved scaling. * Added printing using CUPS. * Added configurable tool bars. * Added build-time options. * Improved documentation. * Updated German translation. * Updated Russian translation. Thanks to Eugene Marshal. Release 0.2.2: * Improved settings dialog. * Improved thumbnails view. * Added recenctly used menu. * Added presentation view. * Added automatic refresh. * Added simple transient bookmarks mechanism. * Added '--unique' command-line option. * Added some help content and updated the manual page. Thanks to Benjamin Eltzner. * Updated French translation. Thanks to Fabian Pijcke. * Added partial Romanian translation. Thanks to Andi Cristian Șerbănescu. Release 0.2.1: * Extensive refactoring. * Improved search. * Simplified text-selection. * Added outline and thumbnails view. * Added settings dialog. * Added French translation. Thanks to Glad Deschrijver. * Added partial Russian, Belorussian and Ukrainian translations. Thanks to Leo Romanovski. Release 0.2: * Complete rewrite introducing background rendering. * Added rudimentary support for search and text-selection. * Limited page cache by byte count instead of image count. qpdfview-0.4.18/CONTRIBUTORS0000644000000000000000000000760513516127411013450 0ustar 00000000000000Eetu Aalto S. Razi Alavizadeh Automatizatorius abuyop Ganesh Ajjanagadde Rashid Aliyev Claudio Arseni Şâkir Aşçı athmakrigiannis Marshall Banana Martin Banky Dennis Baudys Adolfo Jayme Barrientos blacktext Felipe Braga Hélion du Mas des Bourboux Miguel Anxo Bouzada Tobias B. Átila Camurça Marc Coll Carrillo Andi Chandler Abdellah Chelli Dominique Chomet Yuri Chornoivan George Christofis Consus DAG Software Ivlev Denis Kenan Dervišević Glad Deschrijver Kyrill Detinov Wang Dianjin Dante Díaz djcj Dorian Daniel Ejsing-Duun electricface Eliovir Benjamin Eltzner Thomas Etter Aaron Farias fbn69 Baptiste Fontaine fossfreedom freedomrun Franz Fellner Pavel Fric Sylvie Gallet gogo Giovanni Grieco Guillermo Abdul Munif Hanafi Anthony Harrington Tanguy Herrmann HsH isamu715 Aputsiaq Niels Janussen Evo Jimmy Aleksey Kabanov KL A. Kohl Oleg Koptev Atanas Kovachki Marcos Lans Ask Hjorth Larsen Jerome Laurens Martin Linder Litty Mateusz Łukasik manolox Jean Marc Eugene Marshal Sérgio Marques Mike08 mjjzf Charles Monzat Paco Molinero Moo Baurzhan Muftakhidinov Rizal Muttaqin ned Rafael Neri Fábio Nogueira Bendik R. Opstad Sandor Ortegon Quentin Pagès Trisno Pamuji Nkolay Parukhin Vlad Paul Paval Kévin Peignot Paolo Pelesk Gisele Perreault Blagovest Petrov Fabian Pijcke Eugene Pivnev Boris Popov Adam Reichold Páder Rezső Lucas Reis Aurélien Ribeiro Rockworld Donald Rogers Leo Romanovski Pavel Sanda Sahran Asier Iturralde Sarasola Xuacu Saturio Timo Seppola Andi Cristian Șerbănescu Silvan Scherrer Arnaud Schmittbuhl Dorian Scholz Yaron Shahrabani Pierre Slamich Mark Smith Phillipe Smith Vladimir Smolyar Smonff Pyae Sone Pierre Soulat Martin Spacek Piotr Strębski Sébastien Szymanski Teromene Gheyret T.Kenji Michał Trybus Tubuntu Khang Mạnh Tử VPablo Alexander Volkov Thomas Worofsky Yury Yatsynovich Xiaoxing Ye Koji Yokota Chris Young ☠Jay ZDLin☠ Egor Zenkov Rodrigo Zimmermann qpdfview-0.4.18/COPYING0000644000000000000000000004325413516127411012623 0ustar 00000000000000 GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. qpdfview-0.4.18/README0000644000000000000000000000756513516127411012455 0ustar 00000000000000qpdfview is a tabbed document viewer using Poppler, libspectre, DjVuLibre, CUPS and Qt, licensed under GPL version 2 or later. The project homepage is "https://launchpad.net/qpdfview". The project maintainer is "Adam Reichold ". It depends on libQtCore, libQtGui. It also depends on libQtSvg, libQtSql, libQtDBus, libcups, resp. libz if SVG, SQL, D-Bus, CUPS, resp. SyncTeX support is enabled. It also depends on libmagic if Qt version 4 is used and libmagic support is enabled. The PDF plug-in depends on libQtCore, libQtXml, libQtGui and libpoppler-qt4 or libpoppler-qt5. The PS plug-in depends on libQtCore, libQtGui and libspectre. The DjVu plug-in depends on libQtCore, libQtGui and libdjvulibre. The Fitz plug-in depends on libQtCore, libQtGui and libmupdf. The Fitz plug-in is currently considered experimental due to the lack of a maintainer. It also lacks support for various features, e.g. meta-data, encryption, text search, text extraction, form fields and annotations. It is built using "lrelease qpdfview.pro", "qmake qpdfview.pro" and "make". It is installed using "make install". The installation paths are defined in "qpdfview.pri". The following build-time options are available: * 'without_svg' disables SVG support, i.e. fallback and application-specific icons will not be available. * 'without_sql' disables SQL support, i.e. restoring tabs, bookmarks and per-file settings will not be available. * 'without_dbus' disables D-Bus support, i.e. the '--unique' command-line option will not be available. * 'without_pkgconfig' disables the use of pkg-config, i.e. compiler and linker options have to be configured manually in "qpdfview.pri". * 'without_pdf' disables PDF support, i.e. the PDF plug-in using Poppler will not be built. * 'without_ps' disables PS support, i.e. the PS plug-in using libspectre will not be built. * 'without_djvu' disables DjVu support, i.e. the DjVu plug-in using DjVuLibre will not be built. * 'with_fitz' enables Fitz support, i.e. the Fitz plug-in using MuPDF will be built. * 'without_image' disable image support, i.e. the plug-in using Qt's built-in image I/O will not be built. * 'static_pdf_plugin' links the PDF plug-in statically (This could lead to linker dependency collisions.) * 'static_ps_plugin' links the PS plug-in statically. (This could lead to linker dependency collisions.) * 'static_djvu_plugin' links the DjVu plug-in statically. (This could lead to linker dependency collisions.) * 'static_fitz_plugin' links the Fitz plug-in statically. (This could lead to linker dependency collisions.) * 'static_image_plugin' links the image plug-in statically. * 'without_cups' disables CUPS support, i.e. the program will attempt to rasterize the document instead of requesting CUPS to print the document file. * 'without_synctex' disables SyncTeX support, i.e. the program will not perform forward and inverse search for sources. * 'without_magic' disables libmagic support, i.e. the program will determine file type using the file suffix. * 'without_signals' disabled support for UNIX signals, i.e. the program will not save bookmarks, tabs and per-file settings on receiving SIGINT or SIGTERM. * 'with_lto' enables link time optimizations for the application binary to reduce its size and improve its performance. * 'static_resources' to statically embed resources like translations and online help into the application binary. * 'plugin_resolve_all' to enable early symbol resolution in plug-ins to be more robust when incompatible libraries are installed. For example, if one wants to build the program without support for CUPS and PostScript, one could run "qmake CONFIG+="without_cups without_ps" qpdfview.pro" instead of "qmake qpdfview.pro". The fallback and application-specific icons are derived from the Tango icon theme available at "http://tango.freedesktop.org". qpdfview-0.4.18/TODO0000644000000000000000000000046213516127411012252 0ustar 00000000000000* improve DjVu support * add DVI support * add ePUB support * add CHM support * rewrite tool support * add annotations dock * improve text-selection support * improve link support * improve annotation support * improve form support * add code documentation * investigate integration with KDE Frameworks qpdfview-0.4.18/application.pro0000644000000000000000000002015513516127411014610 0ustar 00000000000000include(qpdfview.pri) TARGET = qpdfview TEMPLATE = app OBJECTS_DIR = objects MOC_DIR = moc HEADERS += \ sources/global.h \ sources/renderparam.h \ sources/printoptions.h \ sources/settings.h \ sources/model.h \ sources/pluginhandler.h \ sources/shortcuthandler.h \ sources/rendertask.h \ sources/tileitem.h \ sources/pageitem.h \ sources/thumbnailitem.h \ sources/presentationview.h \ sources/searchmodel.h \ sources/searchitemdelegate.h \ sources/searchtask.h \ sources/miscellaneous.h \ sources/documentlayout.h \ sources/documentview.h \ sources/printdialog.h \ sources/settingsdialog.h \ sources/fontsdialog.h \ sources/helpdialog.h \ sources/recentlyusedmenu.h \ sources/recentlyclosedmenu.h \ sources/bookmarkmodel.h \ sources/bookmarkmenu.h \ sources/bookmarkdialog.h \ sources/database.h \ sources/mainwindow.h SOURCES += \ sources/settings.cpp \ sources/pluginhandler.cpp \ sources/shortcuthandler.cpp \ sources/rendertask.cpp \ sources/tileitem.cpp \ sources/pageitem.cpp \ sources/thumbnailitem.cpp \ sources/presentationview.cpp \ sources/searchmodel.cpp \ sources/searchitemdelegate.cpp \ sources/searchtask.cpp \ sources/miscellaneous.cpp \ sources/documentlayout.cpp \ sources/documentview.cpp \ sources/printdialog.cpp \ sources/settingsdialog.cpp \ sources/fontsdialog.cpp \ sources/helpdialog.cpp \ sources/recentlyusedmenu.cpp \ sources/recentlyclosedmenu.cpp \ sources/bookmarkmenu.cpp \ sources/bookmarkdialog.cpp \ sources/bookmarkmodel.cpp \ sources/database.cpp \ sources/mainwindow.cpp \ sources/main.cpp DEFINES += APPLICATION_VERSION=\\\"$${APPLICATION_VERSION}\\\" with_lto { QMAKE_CFLAG += -flto QMAKE_CXXFLAGS += -flto QMAKE_LFLAGS += -flto } QT += core gui greaterThan(QT_MAJOR_VERSION, 4): QT += concurrent widgets printsupport !without_svg { DEFINES += WITH_SVG QT += svg RESOURCES += icons.qrc } !without_sql { DEFINES += WITH_SQL QT += sql } !without_dbus { DEFINES += WITH_DBUS QT += dbus } isEmpty(QMAKE_EXTENSION_SHLIB):QMAKE_EXTENSION_SHLIB = "so" isEmpty(QMAKE_EXTENSION_STATICLIB):QMAKE_EXTENSION_STATICLIB = "a" DEFINES += PLUGIN_INSTALL_PATH=\\\"$${PLUGIN_INSTALL_PATH}\\\" plugin_resolve_all { DEFINES += PLUGIN_RESOLVE_ALL } !without_pdf { DEFINES += WITH_PDF !without_pkgconfig:POPPLER_VERSION = $$system(pkg-config --modversion poppler-qt$${QT_MAJOR_VERSION}) DEFINES += POPPLER_VERSION=\\\"$${POPPLER_VERSION}\\\" static_pdf_plugin { isEmpty(PDF_PLUGIN_NAME):PDF_PLUGIN_NAME = $${QMAKE_PREFIX_STATICLIB}qpdfview_pdf.$${QMAKE_EXTENSION_STATICLIB} DEFINES += STATIC_PDF_PLUGIN LIBS += $$PDF_PLUGIN_NAME $$PDF_PLUGIN_LIBS PRE_TARGETDEPS += $$PDF_PLUGIN_NAME QT += xml !without_pkgconfig { CONFIG += link_pkgconfig PKGCONFIG += poppler-qt$${QT_MAJOR_VERSION} } } else { isEmpty(PDF_PLUGIN_NAME):PDF_PLUGIN_NAME = $${QMAKE_PREFIX_SHLIB}qpdfview_pdf.$${QMAKE_EXTENSION_SHLIB} } DEFINES += PDF_PLUGIN_NAME=\\\"$${PDF_PLUGIN_NAME}\\\" } !without_ps { DEFINES += WITH_PS !without_pkgconfig:LIBSPECTRE_VERSION = $$system(pkg-config --modversion libspectre) DEFINES += LIBSPECTRE_VERSION=\\\"$${LIBSPECTRE_VERSION}\\\" static_ps_plugin { isEmpty(PS_PLUGIN_NAME):PS_PLUGIN_NAME = $${QMAKE_PREFIX_STATICLIB}qpdfview_ps.$${QMAKE_EXTENSION_STATICLIB} DEFINES += STATIC_PS_PLUGIN LIBS += $$PS_PLUGIN_NAME $$PS_PLUGIN_LIBS PRE_TARGETDEPS += $$PS_PLUGIN_NAME !without_pkgconfig { CONFIG += link_pkgconfig PKGCONFIG += libspectre } } else { isEmpty(PS_PLUGIN_NAME):PS_PLUGIN_NAME = $${QMAKE_PREFIX_SHLIB}qpdfview_ps.$${QMAKE_EXTENSION_SHLIB} } DEFINES += PS_PLUGIN_NAME=\\\"$${PS_PLUGIN_NAME}\\\" } !without_djvu { DEFINES += WITH_DJVU !without_pkgconfig:DJVULIBRE_VERSION = $$system(pkg-config --modversion ddjvuapi) DEFINES += DJVULIBRE_VERSION=\\\"$${DJVULIBRE_VERSION}\\\" static_djvu_plugin { isEmpty(DJVU_PLUGIN_NAME):DJVU_PLUGIN_NAME = $${QMAKE_PREFIX_STATICLIB}qpdfview_djvu.$${QMAKE_EXTENSION_STATICLIB} DEFINES += STATIC_DJVU_PLUGIN LIBS += $$DJVU_PLUGIN_NAME $$DJVU_PLUGIN_LIBS PRE_TARGETDEPS += $$DJVU_PLUGIN_NAME !without_pkgconfig { CONFIG += link_pkgconfig PKGCONFIG += ddjvuapi } } else { isEmpty(DJVU_PLUGIN_NAME):DJVU_PLUGIN_NAME = $${QMAKE_PREFIX_SHLIB}qpdfview_djvu.$${QMAKE_EXTENSION_SHLIB} } DEFINES += DJVU_PLUGIN_NAME=\\\"$${DJVU_PLUGIN_NAME}\\\" } with_fitz { DEFINES += WITH_FITZ DEFINES += FITZ_VERSION=\\\"$${FITZ_VERSION}\\\" static_fitz_plugin { isEmpty(FITZ_PLUGIN_NAME):FITZ_PLUGIN_NAME = $${QMAKE_PREFIX_STATICLIB}qpdfview_fitz.$${QMAKE_EXTENSION_STATICLIB} DEFINES += STATIC_FITZ_PLUGIN LIBS += $$FITZ_PLUGIN_NAME $$FITZ_PLUGIN_LIBS PRE_TARGETDEPS += $$FITZ_PLUGIN_NAME isEmpty(FITZ_PLUGIN_LIBS) { LIBS += -lmupdf -lfreetype -ljbig2dec -lopenjp2 -ljpeg -lz -lm } else { LIBS += $$FITZ_PLUGIN_LIBS } } else { isEmpty(FITZ_PLUGIN_NAME):FITZ_PLUGIN_NAME = $${QMAKE_PREFIX_SHLIB}qpdfview_fitz.$${QMAKE_EXTENSION_SHLIB} } DEFINES += FITZ_PLUGIN_NAME=\\\"$${FITZ_PLUGIN_NAME}\\\" } !without_image { DEFINES += WITH_IMAGE static_image_plugin { isEmpty(IMAGE_PLUGIN_NAME):IMAGE_PLUGIN_NAME = $${QMAKE_PREFIX_STATICLIB}qpdfview_image.$${QMAKE_EXTENSION_STATICLIB} DEFINES += STATIC_IMAGE_PLUGIN LIBS += $$IMAGE_PLUGIN_NAME $$IMAGE_PLUGIN_LIBS PRE_TARGETDEPS += $$IMAGE_PLUGIN_NAME } else { isEmpty(IMAGE_PLUGIN_NAME):IMAGE_PLUGIN_NAME = $${QMAKE_PREFIX_SHLIB}qpdfview_image.$${QMAKE_EXTENSION_SHLIB} } DEFINES += IMAGE_PLUGIN_NAME=\\\"$${IMAGE_PLUGIN_NAME}\\\" } !without_cups { DEFINES += WITH_CUPS isEmpty(CUPS_VERSION):CUPS_VERSION = $$system(cups-config --version) isEmpty(CUPS_LIBS):CUPS_LIBS = $$system(cups-config --libs) DEFINES += CUPS_VERSION=\\\"$${CUPS_VERSION}\\\" LIBS += $$CUPS_LIBS } !without_synctex { DEFINES += WITH_SYNCTEX !without_pkgconfig:system(pkg-config --exists synctex) { CONFIG += link_pkgconfig PKGCONFIG += synctex system(pkg-config --atleast-version=1.19 synctex):DEFINES += HAS_SYNCTEX_2 } else { HEADERS += synctex/synctex_parser.h synctex/synctex_parser_utils.h synctex/synctex_parser_local.h SOURCES += synctex/synctex_parser.c synctex/synctex_parser_utils.c INCLUDEPATH += synctex LIBS += -lz } } lessThan(QT_MAJOR_VERSION, 5) : !without_magic { DEFINES += WITH_MAGIC LIBS += -lmagic } !without_signals { DEFINES += WITH_SIGNALS HEADERS += sources/signalhandler.h SOURCES += sources/signalhandler.cpp } static_resources { RESOURCES += help.qrc translations.qrc } DEFINES += DATA_INSTALL_PATH=\\\"$${DATA_INSTALL_PATH}\\\" DESKTOP_FILE = miscellaneous/qpdfview.desktop APPDATA_FILE = miscellaneous/qpdfview.appdata.xml !without_pdf|with_fitz:MIME_TYPES += application/pdf application/x-pdf text/pdf text/x-pdf image/pdf image/x-pdf !without_ps:MIME_TYPES += application/postscript !without_djvu:MIME_TYPES += image/vnd.djvu image/x-djvu system("sed -e \"s:DATA_INSTALL_PATH:$${DATA_INSTALL_PATH}:\" -e \"s:MIME_TYPES:$$join(MIME_TYPES,";","",";"):\" $${DESKTOP_FILE}.in > $${DESKTOP_FILE}") target.path = $${TARGET_INSTALL_PATH} data.files = translations/*.qm help/help*.html data.path = $${DATA_INSTALL_PATH} manual.files = miscellaneous/qpdfview.1 manual.path = $${MANUAL_INSTALL_PATH} icon.files = icons/qpdfview.svg icon.path = $${ICON_INSTALL_PATH} launcher.files = $${DESKTOP_FILE} launcher.path = $${LAUNCHER_INSTALL_PATH} appdata.files = $${APPDATA_FILE} appdata.path = $${APPDATA_INSTALL_PATH} INSTALLS += target data manual icon launcher appdata INCLUDEPATH += icons win32:RC_FILE = icons/qpdfview_win32.rc os2:RC_FILE = icons/qpdfview_os2.rc qpdfview-0.4.18/djvu-plugin.pro0000644000000000000000000000124213516127411014545 0ustar 00000000000000include(qpdfview.pri) TARGET = qpdfview_djvu TEMPLATE = lib CONFIG += plugin static_djvu_plugin:CONFIG += static TARGET_SHORT = qpdfdjvu !isEmpty(PLUGIN_DESTDIR): DESTDIR = $$PLUGIN_DESTDIR OBJECTS_DIR = objects-djvu MOC_DIR = moc-djvu HEADERS = sources/model.h sources/djvumodel.h SOURCES = sources/djvumodel.cpp QT += core gui greaterThan(QT_MAJOR_VERSION, 4): QT += widgets !without_pkgconfig { CONFIG += link_pkgconfig PKGCONFIG += ddjvuapi } else { DEFINES += $$DJVU_PLUGIN_DEFINES INCLUDEPATH += $$DJVU_PLUGIN_INCLUDEPATH LIBS += $$DJVU_PLUGIN_LIBS } !static_djvu_plugin { target.path = $${PLUGIN_INSTALL_PATH} INSTALLS += target } qpdfview-0.4.18/fitz-plugin.pro0000644000000000000000000000120213516127411014545 0ustar 00000000000000include(qpdfview.pri) TARGET = qpdfview_fitz TEMPLATE = lib CONFIG += plugin static_fitz_plugin:CONFIG += static TARGET_SHORT = qpdffitz !isEmpty(PLUGIN_DESTDIR): DESTDIR = $$PLUGIN_DESTDIR OBJECTS_DIR = objects-fitz MOC_DIR = moc-fitz HEADERS = sources/model.h sources/fitzmodel.h SOURCES = sources/fitzmodel.cpp QT += core gui greaterThan(QT_MAJOR_VERSION, 4): QT += widgets DEFINES += $$FITZ_PLUGIN_DEFINES INCLUDEPATH += $$FITZ_PLUGIN_INCLUDEPATH isEmpty(FITZ_PLUGIN_LIBS):FITZ_PLUGIN_LIBS = -lmupdf -lmupdfthird LIBS += $$FITZ_PLUGIN_LIBS !static_fitz_plugin { target.path = $${PLUGIN_INSTALL_PATH} INSTALLS += target } qpdfview-0.4.18/help/0000755000000000000000000000000013516127411012510 5ustar 00000000000000qpdfview-0.4.18/help.qrc0000644000000000000000000000360413516127411013222 0ustar 00000000000000 help/help_az.html help/help_bg.html help/help_ca.html help/help_cs.html help/help_da.html help/help_de.html help/help_en_GB.html help/help_es.html help/help_fa.html help/help_fi.html help/help_fr.html help/help_gl.html help/help.html help/help_it.html help/help_ja.html help/help_ko.html help/help_ku.html help/help_lt.html help/help_ms.html help/help_pl.html help/help_pt_BR.html help/help_pt.html help/help_ru.html help/help_sk.html help/help_sr.html help/help_sv.html help/help_tr.html help/help_uk.html help/help_vi.html help/help_zh_CN.html help/help_zh_TW.html qpdfview-0.4.18/icons/0000755000000000000000000000000013516127411012673 5ustar 00000000000000qpdfview-0.4.18/icons.qrc0000644000000000000000000000466713516127411013417 0ustar 00000000000000 icons/qpdfview.svg icons/image-loading.svg icons/image-missing.svg icons/document-open.svg icons/tab-new.svg icons/folder.svg icons/view-refresh.svg icons/document-print.svg icons/document-save.svg icons/document-save-as.svg icons/go-previous.svg icons/go-next.svg icons/go-first.svg icons/go-last.svg icons/go-jump.svg icons/media-seek-backward.svg icons/media-seek-forward.svg icons/edit-find.svg icons/go-up.svg icons/go-down.svg icons/process-stop.svg icons/edit-copy.svg icons/mail-attachment.svg icons/continuous.svg icons/two-pages.svg icons/two-pages-with-cover-page.svg icons/multiple-pages.svg icons/right-to-left.svg icons/zoom-in.svg icons/zoom-out.svg icons/zoom-original.svg icons/fit-to-page-width.svg icons/fit-to-page-size.svg icons/object-rotate-left.svg icons/object-rotate-right.svg icons/view-fullscreen.svg icons/x-office-presentation.svg qpdfview-0.4.18/image-plugin.pro0000644000000000000000000000073713516127411014667 0ustar 00000000000000include(qpdfview.pri) TARGET = qpdfview_image TEMPLATE = lib CONFIG += plugin static_image_plugin:CONFIG += static TARGET_SHORT = qpdfimg !isEmpty(PLUGIN_DESTDIR): DESTDIR = $$PLUGIN_DESTDIR OBJECTS_DIR = objects-image MOC_DIR = moc-image HEADERS = sources/model.h sources/imagemodel.h SOURCES = sources/imagemodel.cpp QT += core gui greaterThan(QT_MAJOR_VERSION, 4): QT += widgets !static_image_plugin { target.path = $${PLUGIN_INSTALL_PATH} INSTALLS += target } qpdfview-0.4.18/miscellaneous/0000755000000000000000000000000013516127411014423 5ustar 00000000000000qpdfview-0.4.18/pdf-plugin.pro0000644000000000000000000000304713516127411014353 0ustar 00000000000000include(qpdfview.pri) TARGET = qpdfview_pdf TEMPLATE = lib CONFIG += plugin static_pdf_plugin:CONFIG += static TARGET_SHORT = qpdfpdf !isEmpty(PLUGIN_DESTDIR): DESTDIR = $$PLUGIN_DESTDIR OBJECTS_DIR = objects-pdf MOC_DIR = moc-pdf HEADERS = sources/model.h sources/pdfmodel.h sources/annotationwidgets.h sources/formfieldwidgets.h SOURCES = sources/pdfmodel.cpp sources/annotationwidgets.cpp sources/formfieldwidgets.cpp QT += core xml gui greaterThan(QT_MAJOR_VERSION, 4): QT += widgets !without_pkgconfig { poppler_qt_pkg = poppler-qt$${QT_MAJOR_VERSION} system(pkg-config --atleast-version=0.14 $${poppler_qt_pkg}):DEFINES += HAS_POPPLER_14 system(pkg-config --atleast-version=0.18 $${poppler_qt_pkg}):DEFINES += HAS_POPPLER_18 system(pkg-config --atleast-version=0.20.1 $${poppler_qt_pkg}):DEFINES += HAS_POPPLER_20 system(pkg-config --atleast-version=0.22 $${poppler_qt_pkg}):DEFINES += HAS_POPPLER_22 system(pkg-config --atleast-version=0.24 $${poppler_qt_pkg}):DEFINES += HAS_POPPLER_24 system(pkg-config --atleast-version=0.26 $${poppler_qt_pkg}):DEFINES += HAS_POPPLER_26 system(pkg-config --atleast-version=0.31 $${poppler_qt_pkg}):DEFINES += HAS_POPPLER_31 system(pkg-config --atleast-version=0.35 $${poppler_qt_pkg}):DEFINES += HAS_POPPLER_35 CONFIG += link_pkgconfig PKGCONFIG += $${poppler_qt_pkg} } else { DEFINES += $$PDF_PLUGIN_DEFINES INCLUDEPATH += $$PDF_PLUGIN_INCLUDEPATH LIBS += $$PDF_PLUGIN_LIBS } !static_pdf_plugin { target.path = $${PLUGIN_INSTALL_PATH} INSTALLS += target } qpdfview-0.4.18/ps-plugin.pro0000644000000000000000000000121613516127411014220 0ustar 00000000000000include(qpdfview.pri) TARGET = qpdfview_ps TEMPLATE = lib CONFIG += plugin static_ps_plugin:CONFIG += static TARGET_SHORT = qpdfps !isEmpty(PLUGIN_DESTDIR): DESTDIR = $$PLUGIN_DESTDIR OBJECTS_DIR = objects-ps MOC_DIR = moc-ps HEADERS = sources/model.h sources/psmodel.h SOURCES = sources/psmodel.cpp QT += core gui greaterThan(QT_MAJOR_VERSION, 4): QT += widgets !without_pkgconfig { CONFIG += link_pkgconfig PKGCONFIG += libspectre } else { DEFINES += $$PS_PLUGIN_DEFINES INCLUDEPATH += $$PS_PLUGIN_INCLUDEPATH LIBS += $$PS_PLUGIN_LIBS } !static_ps_plugin { target.path = $${PLUGIN_INSTALL_PATH} INSTALLS += target } qpdfview-0.4.18/qpdfview.pri0000644000000000000000000000116413516127411014123 0ustar 00000000000000isEmpty(APPLICATION_VERSION):APPLICATION_VERSION = 0.4.18 isEmpty(TARGET_INSTALL_PATH):TARGET_INSTALL_PATH = /usr/bin isEmpty(PLUGIN_INSTALL_PATH):PLUGIN_INSTALL_PATH = /usr/lib/qpdfview isEmpty(DATA_INSTALL_PATH):DATA_INSTALL_PATH = /usr/share/qpdfview isEmpty(MANUAL_INSTALL_PATH):MANUAL_INSTALL_PATH = /usr/share/man/man1 isEmpty(ICON_INSTALL_PATH):ICON_INSTALL_PATH = /usr/share/icons/hicolor/scalable/apps isEmpty(LAUNCHER_INSTALL_PATH):LAUNCHER_INSTALL_PATH = /usr/share/applications isEmpty(APPDATA_INSTALL_PATH):APPDATA_INSTALL_PATH = /usr/share/appdata win32:include(qpdfview_win32.pri) os2:include(qpdfview_os2.pri) qpdfview-0.4.18/qpdfview.pro0000644000000000000000000000363113516127411014132 0ustar 00000000000000include(qpdfview.pri) TEMPLATE = subdirs CONFIG += ordered !without_pdf { SUBDIRS += pdf-plugin.pro application.pro.depends = pdf-plugin.pro } !without_ps { SUBDIRS += ps-plugin.pro application.pro.depends = ps-plugin.pro } !without_djvu { SUBDIRS += djvu-plugin.pro application.pro.depends = djvu-plugin.pro } with_fitz { SUBDIRS += fitz-plugin.pro application.pro.depends = fitz-plugin.pro } !without_image { SUBDIRS += image-plugin.pro application.pro.depends = image-plugin.pro } SUBDIRS += application.pro TRANSLATIONS += \ translations/qpdfview_ast.ts \ translations/qpdfview_az.ts \ translations/qpdfview_be.ts \ translations/qpdfview_bg.ts \ translations/qpdfview_bs.ts \ translations/qpdfview_ca.ts \ translations/qpdfview_cs.ts \ translations/qpdfview_da.ts \ translations/qpdfview_de.ts \ translations/qpdfview_el.ts \ translations/qpdfview_en_GB.ts \ translations/qpdfview_eo.ts \ translations/qpdfview_es.ts \ translations/qpdfview_eu.ts \ translations/qpdfview_fi.ts \ translations/qpdfview_fr.ts \ translations/qpdfview_gl.ts \ translations/qpdfview_he.ts \ translations/qpdfview_hr.ts \ translations/qpdfview_hu.ts \ translations/qpdfview_id.ts \ translations/qpdfview_it.ts \ translations/qpdfview_kk.ts \ translations/qpdfview_ky.ts \ translations/qpdfview_lt.ts \ translations/qpdfview_ms.ts \ translations/qpdfview_my.ts \ translations/qpdfview_pl.ts \ translations/qpdfview_pt.ts \ translations/qpdfview_pt_BR.ts \ translations/qpdfview_ro.ts \ translations/qpdfview_ru.ts \ translations/qpdfview_sk.ts \ translations/qpdfview_sv.ts \ translations/qpdfview_th.ts \ translations/qpdfview_tr.ts \ translations/qpdfview_ug.ts \ translations/qpdfview_uk.ts \ translations/qpdfview_vi.ts \ translations/qpdfview_zh_CN.ts qpdfview-0.4.18/sources/0000755000000000000000000000000013516127411013243 5ustar 00000000000000qpdfview-0.4.18/synctex/0000755000000000000000000000000013516127411013255 5ustar 00000000000000qpdfview-0.4.18/translations/0000755000000000000000000000000013516127411014301 5ustar 00000000000000qpdfview-0.4.18/translations.qrc0000644000000000000000000000560213516127411015013 0ustar 00000000000000 translations/qpdfview_ast.qm translations/qpdfview_az.qm translations/qpdfview_be.qm translations/qpdfview_bg.qm translations/qpdfview_bs.qm translations/qpdfview_ca.qm translations/qpdfview_cs.qm translations/qpdfview_da.qm translations/qpdfview_de.qm translations/qpdfview_el.qm translations/qpdfview_en_GB.qm translations/qpdfview_eo.qm translations/qpdfview_es.qm translations/qpdfview_eu.qm translations/qpdfview_fi.qm translations/qpdfview_fr.qm translations/qpdfview_gl.qm translations/qpdfview_he.qm translations/qpdfview_hr.qm translations/qpdfview_hu.qm translations/qpdfview_id.qm translations/qpdfview_it.qm translations/qpdfview_kk.qm translations/qpdfview_ky.qm translations/qpdfview_lt.qm translations/qpdfview_ms.qm translations/qpdfview_my.qm translations/qpdfview_pl.qm translations/qpdfview_pt_BR.qm translations/qpdfview_pt.qm translations/qpdfview_ro.qm translations/qpdfview_ru.qm translations/qpdfview_sk.qm translations/qpdfview_sv.qm translations/qpdfview_th.qm translations/qpdfview_tr.qm translations/qpdfview_ug.qm translations/qpdfview_uk.qm translations/qpdfview_vi.qm translations/qpdfview_zh_CN.qm qpdfview-0.4.18/help/help.html0000644000000000000000000006140713516127411014336 0ustar 00000000000000 Help

Help

Table of contents

  1. Main menu
    1. File
    2. Edit
    3. View
    4. Tabs
    5. Bookmarks
    6. Help
  2. Main view
  3. Auxiliary views
  4. Settings
    1. Behavior settings
    2. Graphics settings
    3. Interface settings
    4. Shortcut settings
    5. Modifier settings

Introduction

qpdfview is a tabbed document viewer. It uses Poppler for PDF support, libspectre for PS support, DjVuLibre for DjVu support, CUPS for printing support and the Qt toolkit for its interface.

Please refer to the manual page for information on command-line options and configuration files.

Main menu

File

  • Open... Opens a dialog to choose a file to open in the current tab. If there is no tab, the file is opened in a new tab.
  • Open in new tab... Opens a dialog to choose files to open in new tabs.
  • Recently used Contains a list of the most recently used files (if enabled in the settings).
  • Refresh Reloads the file displayed in the current tab.
  • Save Saves changes to annotations and form fields to the file displayed in the current tab.
  • Save as... Opens a dialog to save the file displayed in the current tab including changes to annotations and form fields.
  • Save copy... Opens a dialog to save an umodified copy of the file displayed in the current tab.
  • Print... Opens a dialog to print the file displayed in the current tab.
  • Exit Closes all tabs and ends the program.

Edit

  • Next/Previous/First/Last page Skips to the next/previous/first/last page of the document.
  • Jump to page... Opens a dialog to enter a page to display in the current tab.
  • Jump backward/forward Jumps backward/forward in the history of displayed page.
  • Search... Opens the search dock below the main view. The search automatically starts two seconds after the last change of the search term or is manually started by pressing the return key. If the Shift modifier is held when the return key is pressed, the search starts in all tabs instead of just the current tab. (This effect is reversed if the extended search dock is enabled in the settings.)
  • Find previous/next Jumps to the previous/next occurrence of the search term in the document.
  • Cancel search Cancels the currently running search and closes the search dock.
  • Copy to clipboard If checked, the program will wait for a frame to be dragged to copy texts or images.
  • Add annotation If checked, the program will wait for a frame to be dragged to add annotations.
  • Settings... Opens the settings dialog. The button labeled 'Defaults' will revert all settings on all tabs to their default values. The button labeled 'Defaults on current tab' will revert only the settings on the current tab to their default values.

The current page can be changed by entering the desired page into the text field in the edit tool bar, which can be focused using Ctrl+K, and pressing the return key.

View

  • Continuous Determines whether all rows of the page layout are visible at once.
  • Two pages Determines whether the page layout uses two columns.
  • Two pages with cover page Determines whether the page layout uses two columns with a break after the cover page.
  • Multiple pages Determines whether the page layout uses multiple columns. The number of columns can be changed in the settings dialog.
  • Right to left Determines how pages are arranged in layouts with multiple pages per row.
  • Zoom in Increases the scale factor by 10 percent. The maximum scale factor is 5000 percent.
  • Zoom out Decreases the scale factor by 10 percent. The minimum scale factor is 10 percent.
  • Original size Resets the scale factor to 100 percent.
  • Fit to page width Determines the scale factor such that all pages fully fit into the main view horizontally.
  • Fit to page size Determines the scale factor such that all pages fully fit into the main view horizontally and vertically.
  • Rotate left Rotates the pages left/counterclockwise by 90 degrees.
  • Rotate right Rotates the pages right/clockwise by 90 degrees.
  • Invert colors Determines whether pages are rendered with inverted colors.
  • Convert to grayscale Determines whether pages are converted to grayscale after rendering.
  • Trim margins Enables the removal of empty page margins after rendering.
  • Composition Enables the composition of the rendered page with the paper color to adjust the background of scanned documents.
  • Tool bars This menu contains a list of available tool bars for accessing frequently used actions.
  • Docks This menu contains a list of available docks for displaying supplementary information.
  • Fonts... Opens a dialog listing the fonts used in the document.
  • Fullscreen Toggles the fullscreen mode, i.e. the window is shown maximized and without decoration.
  • Presentation... Enters presentation mode which can be left by pressing F12 or escape. The home/end key is used to display the first/last page. Arrow keys right and down, space and the page down key jump to the next page. Arrow keys left and up, backspace and the page up key jump to the previous page. Pressing control and return jumps back to the page before the last jump.

The scale factor can be changed by entering the desired percentage into the text field in the view tool bar, which can be focused using Ctrl+L, and pressing the return key.

Tabs

  • Previous/Next tab Makes the previous/next tab the current tab. Cycles to the last/first tab if the first/last tab is the current tab.
  • Close tab Closes the current tab.
  • Close all tabs Closes all tabs.
  • Close all tabs but current tab Closes all tabs except for the current tab.
  • Recently closed Contains a list of the most recently closed tabs (if enabled in the settings).

This menu contains a list of all tabs which can be made the current tab by clicking on the corresponding menu item. Tabs can also be closed by middle-clicking. The first nine tabs can also be activated by holding the Alt modifier and pressing keys one to nine.

Bookmarks

  • Previous bookmark Jumps to the closest bookmark before the current page.
  • Next bookmark Jumps to the closest bookmark after the current page.
  • Add bookmark Adds a bookmark for the current file and page.
  • Remove bookmark Removes the bookmark for the current file and page.
  • Remove all bookmarks Removes all bookmarks.
  • Open Opens the corresponding file in the current tab. If there is no tab, the file is opened in a new tab.
  • Open in new tab Opens the corresponding file in a new tab.
  • Jump to page Jumps to the corresponding page if the corresponding file is already open. Otherwise the corresponding file is opened in a new tab.

Help

  • Contents Displays this document.
  • About Displays the program version.

Main view

The backspace/space key skips to the previous/next page. The home/end key skips to the first/last page. The arrow, page up and page down keys scroll the viewport. Pressing control and return jumps to the page before the last jump.

Using the mouse wheel scrolls up and down. Holding ALT while using the mouse wheel scrolls left and right. Holding CTRL while using the mouse wheel scales the document. Holding SHIFT while using the mouse wheel rotates the document. (Keyboard modifiers can be changed in the settings dialog.) Click and hold the middle mouse button to select a rectangle to zoom to.

Links are highlighted by red frames (if enabled in the settings). Left-click on a link to show the linked page or open the linked URL in the default browser (if enabled in the settings). Middle-click on a link to show the linked page in a new tab. Hovering over a link displays its destination as a tool tip.

Form fields are highlighted by blue frames (if enabled in the settings). Left-click on a form field to edit its contents. Hovering over a form field displays its name as a tool tip.

The source of a position in the document can be opened in the source editor using the context menu which optionally contains an item for the first matching SyncTeX node.

To copy texts or images, hold SHIFT, click and hold the left mouse button to drag a frame around the area to copy. Once the mouse button is released, a pop-up menu is displayed to select whether to copy texts or images into the clipboard.

To add annotations, hold CTRL, click and hold the left mouse button to drag a frame around the region to annotate. Once the mouse button is released, a pop-up menu is displayed to select whether to add text or highlight annotations. Left-click to edit annotations. Right-click to remove annotations. (Adding and removing annotations requires version 0.20.1 or higher of the Poppler library.) Hovering over an annotation displays its contents as a tool tip.

To zoom to a selection, hold SHIFT and CTRL, click and hold the left mouse button to drag a frame around region to zoom into.

The visibility of the tool and menu bars can be toggled using configurable keyboard shortcuts whose default values are "Shift+Alt+T" and "Shift+Alt+M".

Auxiliary views

The outline view displays an overview of the contents of the document. A left click on an entry jumps to the respective page in the main view. The context menu can be used to expand/collapse all items below the selected item.

The outline view can also be navigated using the keyboard and the mouse wheel. Holding Shift and using the Up/Down keys will scroll the view. Holding Shift and using the Left/Right keys will collapse/expand one level of items below the selected item. Holding Control and using the Left/Right keys will completely collapse/expand the selected item and its children. Holding Shift and using the mousel wheel will change the selected item. Holding Control and using the mouse wheel will expand/collapse the selected item.

The properties view displays additional information contained in the document.

The thumbnails view displays smaller versions of the pages of the document. A left click on an entry jumps to the respective page in the main view.

The bookmarks view shows the bookmarks related to the document displayed in the current tab. The context menu contains entries to jump to the previous/next boookmark or to add bookmarks. The context menu of each entry also contains entries to edit and delete bookmarks.

If enabled in the settings, the extended search dock shows an overview containing the results of all searches being performed in all tabs. It also shows the text surrounding a result with the search term being emphasized. Clicking on a result opens the corresponding tab and jumps to its position.

Settings

Behavior settings

  • Open URL Determines whether links to URL are opened in the default browser.
  • Auto-refresh Determines whether files are automatically reloaded if changed on disk.
  • Track recently used If enabled, a recently used menu is available and lists as many recently used files as set in the "Recently used count" option. (Effective after restart.)
  • Keep recently closed If enabled, a recently closed menu is available and lists as many recently closed tabs as set in the "Recently closed count" option. Keeping the tabs available could increase memory usage considerably. (Effective after restart.)
  • Restore tabs If enabled, tabs and their properties are saved on ending the program and restored on restart.
  • Restore bookmarks If enabled, bookmarks are saved on ending the program and restored on restart.
  • Restore per-file settings If enabled, per-file settings are saved/restored on opening/closing tabs.
  • Save database interval The interval after which tabs, bookmarks or per-file settings are saved to the database.
  • Synchronize presentation If enabled, the main view can be used to control the presentation view.
  • Presentation screen The index of the screen to display the presentation view on.
  • Synchronize outline view If enabled, the outline view will highlight the first entry pointing to the current page whenever the current page changes.
  • Minimal scrolling If enabled, the view port will only be scrolled if the target position is not yet visible.
  • Zoom factor The number by which the scale factor is multiplied resp. divided upon zooming in resp. out.
  • Highlight color Determines the color of highlights.
  • Highlight duration Determines the duration of temporary highlights.
  • Annotation color The color of annotations added by the program using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Source editor The program which is started to edit sources. '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number.

Graphics settings

  • Use tiling Pages will be divided into tiles before rendering and caching to reduce memory usage.
  • Keep obsolete pixmaps If enabled, then upon change of the zoom factor, cached pixmaps will be used to draw approximations of final pixmaps until these are available at the cost of increased memory usage.
  • Use device pixel ratio If enabled, the highest available device pixel ratio is used to render at physical and display at logical resolution.
  • Decorate pages Determines whether pages are set apart from the background.
  • Decorate links Determines whether links are highlighted by red frames.
  • Decorate form fields Determines whether form fields are highlighted by blue frames.
  • Background color Determines the color of the background using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Paper color Determines the color of pages using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Presentation background color Overrides the paper color in the computation of the background color of the presentation view and is defined using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Pages per row Number of pages per row in the 'multiple pages' layout mode.
  • Page spacing Determines both vertical and horizontal space displayed between pages.
  • Thumbnail spacing Determines both vertical and horizontal space displayed between thumbnails.
  • Thumbnail size Determines the size of the thumbnails.
  • Cache size The program will try to cache rendered pages within this limit increasing rendering speed at the cost of increased memory usage.
  • Prefetch The program will try to render pages that are not yet visible increasing rendering speed at the cost of increased cache usage.
  • Prefetch distance The number of rows beyond the current row and twice the number of rows before the current row that are prefetched.
  • PDF settings
    • Antialiasing Improves display quality at the cost of performance
    • Text antialiasing Improves text display quality at the cost of performance
    • Text hinting May improve text display quality for certain fonts.
    • Overprint preview If enabled, a preview of printing one layer of ink on top of another is displayed.
    • Thin line mode Chooses the optimization used to draw thin lines.
    • Backend Chooses the backend used to render pages.
  • PS settings
    • Graphics antialias bits Determines the amount of antialiasing for graphics.
    • Text antialias bits Determines the amount of antialiasing for text.

Interface settings

  • Extended search dock If enabled, the default search dock is extended by an overview showing the results of all tabs. (Effective after restart.)
  • Annotation overlay If enabled, all annotations on a page will be displayed as an interactive overlay. Otherwise each annotation will be handled as a separate pop-up window.
  • Form field overlay If enabled, all form fields on a page will be displayed as an interactive overlay. Otherwise each form field will be handled as a separate pop-up window.
  • Tab position Defines at which edge of the main view tabs will be displayed.
  • Tab visibility Determines whether tabs will be displayed if less than two documents are opened.
  • Spread tabs Determines if tabs will be spread out evenly over the whole tab bar.
  • New tab next to current tab If enabled, new tabs are opened to the right of the active tab.
  • Exit after last tab If enabled, the application exits after the last tab is closed.
  • Recently used count Sets the number of files that are listed in the recently used menu, if "Track recently used" is enabled. (Effective after restart.)
  • Recently closed count Sets the number of tabs that are listed in the recently closed menu, if "Keep recently closed" is enabled. (Effective after restart.)
  • File tool bar Defines which actions are visible in the file tool bar. Available actions are openInNewTab, open, refresh, saveCopy, saveAs, print and separator. (Effective after restart.)
  • Edit tool bar Defines which actions are visible in the edit tool bar. Available actions are currentPage, previousPage, nextPage, firstPage, lastPage, jumpToPage, jumpBackward, jumpForward, search, copyToClipboardMode, addAnnotationMode and separator. (Effective after restart.)
  • View tool bar Defines which actions are visible in the view tool bar. Available actions are scaleFactor, zoomIn, zoomOut, continuousMode, twoPagesMode, twoPagesWithCoverPageMode, multiplePagesMode, originalSize, fitToPageWidthMode, fitToPageSizeMode, rotateLeft, rotateRight, fullscreen, presentation and separator. (Effective after restart.)
  • Document context menu Defines which actions are visible in the document's context menu. Available actions are openCopyInNewTab, openCopyInNewWindow, openContainingFolder, moveToInstance, previousPage, nextPage, firstPage, lastPage, jumpToPage, jumpBackward, jumpForward, setFirstPage, findPrevious, findNext, cancelSearch and separator.
  • Tab context menu Defines which actions are visible in a tab's context menu. Available actions are openCopyInNewTab, openCopyInNewWindow, openContainingFolder, moveToInstance, copyFilePath, selectFilePath, closeAllTabs, closeAllTabsButThisOne, closeAllTabsToTheLeft, closeAllTabsToTheRight and separator.
  • Scrollable menus Will override the default style so that pop-up menus scroll instead being laid-out in mutliple columns if they are larger than the available screen space. (Effective after restart.)
  • Searchable menus Extends the default keyboard navigation of the tabs and bookmarks menus by a search-as-you-type mechanism.
  • Toggle tool and menu bars with fullscreen Always toggles the visibility of the tool and menu bars when toggling fullscreen mode.
  • Use page label Determines if document-supplied page label will be used instead of page numbers when available.
  • Document title as tab title Determines if the tab title as derived from the meta-data instead of the file name.
  • Current page in window title If enabled, the current page and number of pages of the document in the active tab are displayed in the window title.
  • Instance name in window title If enabled and the current instance is named, its name is displayed in the window title.
  • Highlight current thumbnail If enabled, the current page is highlighted in the thumbnails view.
  • Limit thumbnails to results If this option is enabled and a search is conducted, only the pages where the search term is found are displayed in the thumbnails view.

Shortcut settings

The shortcut settings allows the adjustment of keyboard shortcuts to personal preference. Shortcuts are changed by double-clicking on the shortcut to edit it and entering the new shortcut. Each action can have several shortcuts by entering a semicolon-separated list of them. Names of keys that are not single letters are written out explicitly (e.g. "Alt", "Ctrl", "PgDown"), where the matching is not case sensitive. If the shortcut contains modifier keys, the names of the keys are joined by a plus sign and modifier keys must be listed first, e.g. "Ctrl+A" or "Ctrl++".

Modifier settings

  • Zoom The keyboard modifiers to zoom using the mouse wheel in the main view.
  • Rotate The keyboard modifiers to rotate using the mouse wheel in the main view.
  • Scroll The keyboard modifiers to scroll horizontally using the mouse wheel in the main view.
  • Copy to clipboard The keyboard modifiers to copy texts or images from a page to the clipboard.
  • Add annotation The keyboard modifiers to add annotations to a page.
  • Zoom to selection The keyboard modifiers to zoom to a slection on a page.
qpdfview-0.4.18/help/help_az.html0000644000000000000000000006232013516127411015023 0ustar 00000000000000 Yardım

Yardım

Mündəricat

  1. Ana səhifə
    1. Fayl
    2. Redaktə
    3. Görünüş
    4. Siğmələr
    5. Əlfəcinlər
    6. Yardım
  2. Əsas görünüş
  3. Yardımçı görünüş
  4. Seçənəklər
    1. Davran;. seçənəkləri
    2. Qrafiki seçənəklər
    3. İnterfeys seçənəkləri
    4. Qısayol seçənəkləri
    5. Təyinedici seçənəklər

Giriş

qpdfview siğməli sənəd baxıcısıdır. O PDF dəstəyi üçün Poppler, PS dəstəyi üçün libspectre, DjVu dəstəyi üçün DjVuLibre, çap dəstəyi üçün CUPS və öz interfeyi üçün Qt toolkit-dən istifadə edir.

Seçənəklər faylı və əmr-sətri ilə əlaqədar məlumatlar üçün istifadəçi dəstəyi səhifəsindən istifadə edin.

Ana menyu

Fayl

  • Aç... hazırki siğmə üçün faylı açmaq üçündür. Əgər heç bir açığ siğmə yoxdursa, fayl yeni siğmədə açılır.
  • Yeni siğmədə aç... Faylı yeni siğmədə açmaq üçün faylı açma dialoq pəncərəsini çağırır.
  • Recently used Contains a list of the most recently used files (if enabled in the settings).
  • Yenilə Hazırkı siğmədə yerləşən faylı yenidən yükləyir.
  • Save Saves changes to annotations and form fields to the file displayed in the current tab.
  • Save as... Opens a dialog to save the file displayed in the current tab including changes to annotations and form fields.
  • Save copy... Opens a dialog to save an umodified copy of the file displayed in the current tab.
  • Çap... Hazılı çap etmək üçün çap dialoq pəncərəsini açır.
  • Çıxış Bütün tabları bağla və proqramdan çıx.

Redaktə

  • Sənədirn Növbəti/Öncəki/İlk/Sonuncu səhifə Növbətiyə keç/öncəkinə/ilkə/son səhifəyə.
  • Səhifəyə keç... Hazırki siğədə keçmək istəiyiniz səhifəyə keçid dialoq pəncərəsini çağırır.
  • Jump backward/forward Jumps backward/forward in the history of displayed page.
  • Search... Opens the search dock below the main view. The search automatically starts two seconds after the last change of the search term or is manually started by pressing the return key. If the Shift modifier is held when the return key is pressed, the search starts in all tabs instead of just the current tab. (This effect is reversed if the extended search dock is enabled in the settings.)
  • Find previous/next Jumps to the previous/next occurrence of the search term in the document.
  • Cancel search Cancels the currently running search and closes the search dock.
  • Copy to clipboard If checked, the program will wait for a frame to be dragged to copy texts or images.
  • Add annotation If checked, the program will wait for a frame to be dragged to add annotations.
  • Settings... Opens the settings dialog. The button labeled 'Defaults' will revert all settings on all tabs to their default values. The button labeled 'Defaults on current tab' will revert only the settings on the current tab to their default values.

The current page can be changed by entering the desired page into the text field in the edit tool bar, which can be focused using Ctrl+K, and pressing the return key.

Görünüş

  • Davamedici Səhifənin bütün sətrlərinin hansı halda eyni baxtda görünəcəyini təyin edir.
  • İki səhifə Səhifədə iki sütundan istifadə edilməsinə gətirir.
  • Two pages with cover page Determines whether the page layout uses two columns with a break after the cover page.
  • Multiple pages Determines whether the page layout uses multiple columns. The number of columns can be changed in the settings dialog.
  • Right to left Determines how pages are arranged in layouts with multiple pages per row.
  • Zoom in Increases the scale factor by 10 percent. The maximum scale factor is 5000 percent.
  • Zoom out Decreases the scale factor by 10 percent. The minimum scale factor is 10 percent.
  • Orijinal ölçü Miqyası orijinal 100%-ə qaytarır.
  • Səhifənin eninə görə yerləşdir Səhifənin bütövlüklə pəncərədə yerləşməsi miqyasına gətirir.
  • Fit to page size Determines the scale factor such that all pages fully fit into the main view horizontally and vertically.
  • Sola döndər Shifəni sola (saat əqrəbi istiqamətinin əksinə) 90 dərəcə döndərir.
  • Sola döndər Shifəni sağa (saat əqrəbi istiqamətinə) 90 dərəcə döndərir.
  • Invert colors Determines whether pages are rendered with inverted colors.
  • Convert to grayscale Determines whether pages are converted to grayscale after rendering.
  • Trim margins Enables the removal of empty page margins after rendering.
  • Composition Enables the composition of the rendered page with the paper color to adjust the background of scanned documents.
  • Alətlər sətri Bu menyu var olan bütün alətlər sətrlərinə tez ulaşmaq üçün istifadə olunur.
  • Docks This menu contains a list of available docks for displaying supplementary information.
  • Fonts... Opens a dialog listing the fonts used in the document.
  • Fullscreen Toggles the fullscreen mode, i.e. the window is shown maximized and without decoration.
  • Presentation... Enters presentation mode which can be left by pressing F12 or escape. The home/end key is used to display the first/last page. Arrow keys right and down, space and the page down key jump to the next page. Arrow keys left and up, backspace and the page up key jump to the previous page. Pressing control and return jumps back to the page before the last jump.

The scale factor can be changed by entering the desired percentage into the text field in the view tool bar, which can be focused using Ctrl+L, and pressing the return key.

Siğmələr

  • Previous/Next tab Makes the previous/next tab the current tab. Cycles to the last/first tab if the first/last tab is the current tab.
  • Siğməni bağla Aktiv siğməni bağlayır.
  • Bütün siğmələri bağla Bütün siğmələri bağlayır.
  • Close all tabs but current tab Closes all tabs except for the current tab.
  • Recently closed Contains a list of the most recently closed tabs (if enabled in the settings).

This menu contains a list of all tabs which can be made the current tab by clicking on the corresponding menu item. Tabs can also be closed by middle-clicking. The first nine tabs can also be activated by holding the Alt modifier and pressing keys one to nine.

Əfləcinlər

  • Previous bookmark Jumps to the closest bookmark before the current page.
  • Next bookmark Jumps to the closest bookmark after the current page.
  • Add bookmark Adds a bookmark for the current file and page.
  • Remove bookmark Removes the bookmark for the current file and page.
  • Remove all bookmarks Removes all bookmarks.
  • Open Opens the corresponding file in the current tab. If there is no tab, the file is opened in a new tab.
  • Open in new tab Opens the corresponding file in a new tab.
  • Jump to page Jumps to the corresponding page if the corresponding file is already open. Otherwise the corresponding file is opened in a new tab.

Help

  • Contents Displays this document.
  • About Displays the program version.

Main view

The backspace/space key skips to the previous/next page. The home/end key skips to the first/last page. The arrow, page up and page down keys scroll the viewport. Pressing control and return jumps to the page before the last jump.

Using the mouse wheel scrolls up and down. Holding ALT while using the mouse wheel scrolls left and right. Holding CTRL while using the mouse wheel scales the document. Holding SHIFT while using the mouse wheel rotates the document. (Keyboard modifiers can be changed in the settings dialog.) Click and hold the middle mouse button to select a rectangle to zoom to.

Links are highlighted by red frames (if enabled in the settings). Left-click on a link to show the linked page or open the linked URL in the default browser (if enabled in the settings). Middle-click on a link to show the linked page in a new tab. Hovering over a link displays its destination as a tool tip.

Form fields are highlighted by blue frames (if enabled in the settings). Left-click on a form field to edit its contents. Hovering over a form field displays its name as a tool tip.

The source of a position in the document can be opened in the source editor using the context menu which optionally contains an item for the first matching SyncTeX node.

To copy texts or images, hold SHIFT, click and hold the left mouse button to drag a frame around the area to copy. Once the mouse button is released, a pop-up menu is displayed to select whether to copy texts or images into the clipboard.

To add annotations, hold CTRL, click and hold the left mouse button to drag a frame around the region to annotate. Once the mouse button is released, a pop-up menu is displayed to select whether to add text or highlight annotations. Left-click to edit annotations. Right-click to remove annotations. (Adding and removing annotations requires version 0.20.1 or higher of the Poppler library.) Hovering over an annotation displays its contents as a tool tip.

To zoom to a selection, hold SHIFT and CTRL, click and hold the left mouse button to drag a frame around region to zoom into.

The visibility of the tool and menu bars can be toggled using configurable keyboard shortcuts whose default values are "Shift+Alt+T" and "Shift+Alt+M".

Auxiliary views

The outline view displays an overview of the contents of the document. A left click on an entry jumps to the respective page in the main view. The context menu can be used to expand/collapse all items below the selected item.

The outline view can also be navigated using the keyboard and the mouse wheel. Holding Shift and using the Up/Down keys will scroll the view. Holding Shift and using the Left/Right keys will collapse/expand one level of items below the selected item. Holding Control and using the Left/Right keys will completely collapse/expand the selected item and its children. Holding Shift and using the mousel wheel will change the selected item. Holding Control and using the mouse wheel will expand/collapse the selected item.

The properties view displays additional information contained in the document.

The thumbnails view displays smaller versions of the pages of the document. A left click on an entry jumps to the respective page in the main view.

The bookmarks view shows the bookmarks related to the document displayed in the current tab. The context menu contains entries to jump to the previous/next boookmark or to add bookmarks. The context menu of each entry also contains entries to edit and delete bookmarks.

If enabled in the settings, the extended search dock shows an overview containing the results of all searches being performed in all tabs. It also shows the text surrounding a result with the search term being emphasized. Clicking on a result opens the corresponding tab and jumps to its position.

Settings

Behavior settings

  • Open URL Determines whether links to URL are opened in the default browser.
  • Auto-refresh Determines whether files are automatically reloaded if changed on disk.
  • Track recently used If enabled, a recently used menu is available and lists as many recently used files as set in the "Recently used count" option. (Effective after restart.)
  • Keep recently closed If enabled, a recently closed menu is available and lists as many recently closed tabs as set in the "Recently closed count" option. Keeping the tabs available could increase memory usage considerably. (Effective after restart.)
  • Restore tabs If enabled, tabs and their properties are saved on ending the program and restored on restart.
  • Restore bookmarks If enabled, bookmarks are saved on ending the program and restored on restart.
  • Restore per-file settings If enabled, per-file settings are saved/restored on opening/closing tabs.
  • Save database interval The interval after which tabs, bookmarks or per-file settings are saved to the database.
  • Synchronize presentation If enabled, the main view can be used to control the presentation view.
  • Presentation screen The index of the screen to display the presentation view on.
  • Synchronize outline view If enabled, the outline view will highlight the first entry pointing to the current page whenever the current page changes.
  • Minimal scrolling If enabled, the view port will only be scrolled if the target position is not yet visible.
  • Zoom factor The number by which the scale factor is multiplied resp. divided upon zooming in resp. out.
  • Highlight color Determines the color of highlights.
  • Highlight duration Determines the duration of temporary highlights.
  • Annotation color The color of annotations added by the program using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Source editor The program which is started to edit sources. '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number.

Graphics settings

  • Use tiling Pages will be divided into tiles before rendering and caching to reduce memory usage.
  • Keep obsolete pixmaps If enabled, then upon change of the zoom factor, cached pixmaps will be used to draw approximations of final pixmaps until these are available at the cost of increased memory usage.
  • Use device pixel ratio If enabled, the highest available device pixel ratio is used to render at physical and display at logical resolution.
  • Decorate pages Determines whether pages are set apart from the background.
  • Decorate links Determines whether links are highlighted by red frames.
  • Decorate form fields Determines whether form fields are highlighted by blue frames.
  • Background color Determines the color of the background using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Paper color Determines the color of pages using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Presentation background color Overrides the paper color in the computation of the background color of the presentation view and is defined using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Pages per row Number of pages per row in the 'multiple pages' layout mode.
  • Page spacing Determines both vertical and horizontal space displayed between pages.
  • Thumbnail spacing Determines both vertical and horizontal space displayed between thumbnails.
  • Thumbnail size Determines the size of the thumbnails.
  • Cache size The program will try to cache rendered pages within this limit increasing rendering speed at the cost of increased memory usage.
  • Prefetch The program will try to render pages that are not yet visible increasing rendering speed at the cost of increased cache usage.
  • Prefetch distance The number of rows beyond the current row and twice the number of rows before the current row that are prefetched.
  • PDF settings
    • Antialiasing Improves display quality at the cost of performance
    • Text antialiasing Improves text display quality at the cost of performance
    • Text hinting May improve text display quality for certain fonts.
    • Overprint preview If enabled, a preview of printing one layer of ink on top of another is displayed.
    • Thin line mode Chooses the optimization used to draw thin lines.
    • Backend Chooses the backend used to render pages.
  • PS settings
    • Graphics antialias bits Determines the amount of antialiasing for graphics.
    • Text antialias bits Determines the amount of antialiasing for text.

Interface settings

  • Extended search dock If enabled, the default search dock is extended by an overview showing the results of all tabs. (Effective after restart.)
  • Annotation overlay If enabled, all annotations on a page will be displayed as an interactive overlay. Otherwise each annotation will be handled as a separate pop-up window.
  • Form field overlay If enabled, all form fields on a page will be displayed as an interactive overlay. Otherwise each form field will be handled as a separate pop-up window.
  • Tab position Defines at which edge of the main view tabs will be displayed.
  • Tab visibility Determines whether tabs will be displayed if less than two documents are opened.
  • Spread tabs Determines if tabs will be spread out evenly over the whole tab bar.
  • New tab next to current tab If enabled, new tabs are opened to the right of the active tab.
  • Exit after last tab If enabled, the application exits after the last tab is closed.
  • Recently used count Sets the number of files that are listed in the recently used menu, if "Track recently used" is enabled. (Effective after restart.)
  • Recently closed count Sets the number of tabs that are listed in the recently closed menu, if "Keep recently closed" is enabled. (Effective after restart.)
  • File tool bar Defines which actions are visible in the file tool bar. Available actions are openInNewTab, open, refresh, saveCopy, saveAs, print and separator. (Effective after restart.)
  • Edit tool bar Defines which actions are visible in the edit tool bar. Available actions are currentPage, previousPage, nextPage, firstPage, lastPage, jumpToPage, jumpBackward, jumpForward, search, copyToClipboardMode, addAnnotationMode and separator. (Effective after restart.)
  • View tool bar Defines which actions are visible in the view tool bar. Available actions are scaleFactor, zoomIn, zoomOut, continuousMode, twoPagesMode, twoPagesWithCoverPageMode, multiplePagesMode, originalSize, fitToPageWidthMode, fitToPageSizeMode, rotateLeft, rotateRight, fullscreen, presentation and separator. (Effective after restart.)
  • Document context menu Defines which actions are visible in the document's context menu. Available actions are openCopyInNewTab, openCopyInNewWindow, openContainingFolder, moveToInstance, previousPage, nextPage, firstPage, lastPage, jumpToPage, jumpBackward, jumpForward, setFirstPage, findPrevious, findNext, cancelSearch and separator.
  • Tab context menu Defines which actions are visible in a tab's context menu. Available actions are openCopyInNewTab, openCopyInNewWindow, openContainingFolder, moveToInstance, copyFilePath, selectFilePath, closeAllTabs, closeAllTabsButThisOne, closeAllTabsToTheLeft, closeAllTabsToTheRight and separator.
  • Scrollable menus Will override the default style so that pop-up menus scroll instead being laid-out in mutliple columns if they are larger than the available screen space. (Effective after restart.)
  • Searchable menus Extends the default keyboard navigation of the tabs and bookmarks menus by a search-as-you-type mechanism.
  • Toggle tool and menu bars with fullscreen Always toggles the visibility of the tool and menu bars when toggling fullscreen mode.
  • Use page label Determines if document-supplied page label will be used instead of page numbers when available.
  • Document title as tab title Determines if the tab title as derived from the meta-data instead of the file name.
  • Current page in window title If enabled, the current page and number of pages of the document in the active tab are displayed in the window title.
  • Instance name in window title If enabled and the current instance is named, its name is displayed in the window title.
  • Highlight current thumbnail If enabled, the current page is highlighted in the thumbnails view.
  • Limit thumbnails to results If this option is enabled and a search is conducted, only the pages where the search term is found are displayed in the thumbnails view.

Qısayol seçənəkləri

The shortcut settings allows the adjustment of keyboard shortcuts to personal preference. Shortcuts are changed by double-clicking on the shortcut to edit it and entering the new shortcut. Each action can have several shortcuts by entering a semicolon-separated list of them. Names of keys that are not single letters are written out explicitly (e.g. "Alt", "Ctrl", "PgDown"), where the matching is not case sensitive. If the shortcut contains modifier keys, the names of the keys are joined by a plus sign and modifier keys must be listed first, e.g. "Ctrl+A" or "Ctrl++".

Dəyişdirici seçənəkləri

  • Zoom The keyboard modifiers to zoom using the mouse wheel in the main view.
  • Rotate The keyboard modifiers to rotate using the mouse wheel in the main view.
  • Scroll The keyboard modifiers to scroll horizontally using the mouse wheel in the main view.
  • Copy to clipboard The keyboard modifiers to copy texts or images from a page to the clipboard.
  • Add annotation The keyboard modifiers to add annotations to a page.
  • Zoom to selection The keyboard modifiers to zoom to a slection on a page.
qpdfview-0.4.18/help/help_bg.html0000644000000000000000000006142513516127411015006 0ustar 00000000000000 Помощ

Помощ

Table of contents

  1. Main menu
    1. File
    2. Edit
    3. View
    4. Tabs
    5. Bookmarks
    6. Help
  2. Main view
  3. Auxiliary views
  4. Settings
    1. Behavior settings
    2. Graphics settings
    3. Interface settings
    4. Shortcut settings
    5. Modifier settings

Introduction

qpdfview is a tabbed document viewer. It uses Poppler for PDF support, libspectre for PS support, DjVuLibre for DjVu support, CUPS for printing support and the Qt toolkit for its interface.

Please refer to the manual page for information on command-line options and configuration files.

Main menu

File

  • Open... Opens a dialog to choose a file to open in the current tab. If there is no tab, the file is opened in a new tab.
  • Open in new tab... Opens a dialog to choose files to open in new tabs.
  • Recently used Contains a list of the most recently used files (if enabled in the settings).
  • Refresh Reloads the file displayed in the current tab.
  • Save Saves changes to annotations and form fields to the file displayed in the current tab.
  • Save as... Opens a dialog to save the file displayed in the current tab including changes to annotations and form fields.
  • Save copy... Opens a dialog to save an umodified copy of the file displayed in the current tab.
  • Print... Opens a dialog to print the file displayed in the current tab.
  • Exit Closes all tabs and ends the program.

Edit

  • Next/Previous/First/Last page Skips to the next/previous/first/last page of the document.
  • Jump to page... Opens a dialog to enter a page to display in the current tab.
  • Jump backward/forward Jumps backward/forward in the history of displayed page.
  • Search... Opens the search dock below the main view. The search automatically starts two seconds after the last change of the search term or is manually started by pressing the return key. If the Shift modifier is held when the return key is pressed, the search starts in all tabs instead of just the current tab. (This effect is reversed if the extended search dock is enabled in the settings.)
  • Find previous/next Jumps to the previous/next occurrence of the search term in the document.
  • Cancel search Cancels the currently running search and closes the search dock.
  • Copy to clipboard If checked, the program will wait for a frame to be dragged to copy texts or images.
  • Add annotation If checked, the program will wait for a frame to be dragged to add annotations.
  • Settings... Opens the settings dialog. The button labeled 'Defaults' will revert all settings on all tabs to their default values. The button labeled 'Defaults on current tab' will revert only the settings on the current tab to their default values.

The current page can be changed by entering the desired page into the text field in the edit tool bar, which can be focused using Ctrl+K, and pressing the return key.

View

  • Continuous Determines whether all rows of the page layout are visible at once.
  • Two pages Determines whether the page layout uses two columns.
  • Two pages with cover page Determines whether the page layout uses two columns with a break after the cover page.
  • Multiple pages Determines whether the page layout uses multiple columns. The number of columns can be changed in the settings dialog.
  • Right to left Determines how pages are arranged in layouts with multiple pages per row.
  • Zoom in Increases the scale factor by 10 percent. The maximum scale factor is 5000 percent.
  • Zoom out Decreases the scale factor by 10 percent. The minimum scale factor is 10 percent.
  • Original size Resets the scale factor to 100 percent.
  • Fit to page width Determines the scale factor such that all pages fully fit into the main view horizontally.
  • Fit to page size Determines the scale factor such that all pages fully fit into the main view horizontally and vertically.
  • Rotate left Rotates the pages left/counterclockwise by 90 degrees.
  • Rotate right Rotates the pages right/clockwise by 90 degrees.
  • Invert colors Determines whether pages are rendered with inverted colors.
  • Convert to grayscale Determines whether pages are converted to grayscale after rendering.
  • Trim margins Enables the removal of empty page margins after rendering.
  • Composition Enables the composition of the rendered page with the paper color to adjust the background of scanned documents.
  • Tool bars This menu contains a list of available tool bars for accessing frequently used actions.
  • Docks This menu contains a list of available docks for displaying supplementary information.
  • Fonts... Opens a dialog listing the fonts used in the document.
  • Fullscreen Toggles the fullscreen mode, i.e. the window is shown maximized and without decoration.
  • Presentation... Enters presentation mode which can be left by pressing F12 or escape. The home/end key is used to display the first/last page. Arrow keys right and down, space and the page down key jump to the next page. Arrow keys left and up, backspace and the page up key jump to the previous page. Pressing control and return jumps back to the page before the last jump.

The scale factor can be changed by entering the desired percentage into the text field in the view tool bar, which can be focused using Ctrl+L, and pressing the return key.

Tabs

  • Previous/Next tab Makes the previous/next tab the current tab. Cycles to the last/first tab if the first/last tab is the current tab.
  • Close tab Closes the current tab.
  • Close all tabs Closes all tabs.
  • Close all tabs but current tab Closes all tabs except for the current tab.
  • Recently closed Contains a list of the most recently closed tabs (if enabled in the settings).

This menu contains a list of all tabs which can be made the current tab by clicking on the corresponding menu item. Tabs can also be closed by middle-clicking. The first nine tabs can also be activated by holding the Alt modifier and pressing keys one to nine.

Bookmarks

  • Previous bookmark Jumps to the closest bookmark before the current page.
  • Next bookmark Jumps to the closest bookmark after the current page.
  • Add bookmark Adds a bookmark for the current file and page.
  • Remove bookmark Removes the bookmark for the current file and page.
  • Remove all bookmarks Removes all bookmarks.
  • Open Opens the corresponding file in the current tab. If there is no tab, the file is opened in a new tab.
  • Open in new tab Opens the corresponding file in a new tab.
  • Jump to page Jumps to the corresponding page if the corresponding file is already open. Otherwise the corresponding file is opened in a new tab.

Help

  • Contents Displays this document.
  • About Displays the program version.

Main view

The backspace/space key skips to the previous/next page. The home/end key skips to the first/last page. The arrow, page up and page down keys scroll the viewport. Pressing control and return jumps to the page before the last jump.

Using the mouse wheel scrolls up and down. Holding ALT while using the mouse wheel scrolls left and right. Holding CTRL while using the mouse wheel scales the document. Holding SHIFT while using the mouse wheel rotates the document. (Keyboard modifiers can be changed in the settings dialog.) Click and hold the middle mouse button to select a rectangle to zoom to.

Links are highlighted by red frames (if enabled in the settings). Left-click on a link to show the linked page or open the linked URL in the default browser (if enabled in the settings). Middle-click on a link to show the linked page in a new tab. Hovering over a link displays its destination as a tool tip.

Form fields are highlighted by blue frames (if enabled in the settings). Left-click on a form field to edit its contents. Hovering over a form field displays its name as a tool tip.

The source of a position in the document can be opened in the source editor using the context menu which optionally contains an item for the first matching SyncTeX node.

To copy texts or images, hold SHIFT, click and hold the left mouse button to drag a frame around the area to copy. Once the mouse button is released, a pop-up menu is displayed to select whether to copy texts or images into the clipboard.

To add annotations, hold CTRL, click and hold the left mouse button to drag a frame around the region to annotate. Once the mouse button is released, a pop-up menu is displayed to select whether to add text or highlight annotations. Left-click to edit annotations. Right-click to remove annotations. (Adding and removing annotations requires version 0.20.1 or higher of the Poppler library.) Hovering over an annotation displays its contents as a tool tip.

To zoom to a selection, hold SHIFT and CTRL, click and hold the left mouse button to drag a frame around region to zoom into.

The visibility of the tool and menu bars can be toggled using configurable keyboard shortcuts whose default values are "Shift+Alt+T" and "Shift+Alt+M".

Auxiliary views

The outline view displays an overview of the contents of the document. A left click on an entry jumps to the respective page in the main view. The context menu can be used to expand/collapse all items below the selected item.

The outline view can also be navigated using the keyboard and the mouse wheel. Holding Shift and using the Up/Down keys will scroll the view. Holding Shift and using the Left/Right keys will collapse/expand one level of items below the selected item. Holding Control and using the Left/Right keys will completely collapse/expand the selected item and its children. Holding Shift and using the mousel wheel will change the selected item. Holding Control and using the mouse wheel will expand/collapse the selected item.

The properties view displays additional information contained in the document.

The thumbnails view displays smaller versions of the pages of the document. A left click on an entry jumps to the respective page in the main view.

The bookmarks view shows the bookmarks related to the document displayed in the current tab. The context menu contains entries to jump to the previous/next boookmark or to add bookmarks. The context menu of each entry also contains entries to edit and delete bookmarks.

If enabled in the settings, the extended search dock shows an overview containing the results of all searches being performed in all tabs. It also shows the text surrounding a result with the search term being emphasized. Clicking on a result opens the corresponding tab and jumps to its position.

Settings

Behavior settings

  • Open URL Determines whether links to URL are opened in the default browser.
  • Auto-refresh Determines whether files are automatically reloaded if changed on disk.
  • Track recently used If enabled, a recently used menu is available and lists as many recently used files as set in the "Recently used count" option. (Effective after restart.)
  • Keep recently closed If enabled, a recently closed menu is available and lists as many recently closed tabs as set in the "Recently closed count" option. Keeping the tabs available could increase memory usage considerably. (Effective after restart.)
  • Restore tabs If enabled, tabs and their properties are saved on ending the program and restored on restart.
  • Restore bookmarks If enabled, bookmarks are saved on ending the program and restored on restart.
  • Restore per-file settings If enabled, per-file settings are saved/restored on opening/closing tabs.
  • Save database interval The interval after which tabs, bookmarks or per-file settings are saved to the database.
  • Synchronize presentation If enabled, the main view can be used to control the presentation view.
  • Presentation screen The index of the screen to display the presentation view on.
  • Synchronize outline view If enabled, the outline view will highlight the first entry pointing to the current page whenever the current page changes.
  • Minimal scrolling If enabled, the view port will only be scrolled if the target position is not yet visible.
  • Zoom factor The number by which the scale factor is multiplied resp. divided upon zooming in resp. out.
  • Highlight color Determines the color of highlights.
  • Highlight duration Determines the duration of temporary highlights.
  • Annotation color The color of annotations added by the program using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Source editor The program which is started to edit sources. '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number.

Graphics settings

  • Use tiling Pages will be divided into tiles before rendering and caching to reduce memory usage.
  • Keep obsolete pixmaps If enabled, then upon change of the zoom factor, cached pixmaps will be used to draw approximations of final pixmaps until these are available at the cost of increased memory usage.
  • Use device pixel ratio If enabled, the highest available device pixel ratio is used to render at physical and display at logical resolution.
  • Decorate pages Determines whether pages are set apart from the background.
  • Decorate links Determines whether links are highlighted by red frames.
  • Decorate form fields Determines whether form fields are highlighted by blue frames.
  • Background color Determines the color of the background using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Paper color Determines the color of pages using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Presentation background color Overrides the paper color in the computation of the background color of the presentation view and is defined using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Pages per row Number of pages per row in the 'multiple pages' layout mode.
  • Page spacing Determines both vertical and horizontal space displayed between pages.
  • Thumbnail spacing Determines both vertical and horizontal space displayed between thumbnails.
  • Thumbnail size Determines the size of the thumbnails.
  • Cache size The program will try to cache rendered pages within this limit increasing rendering speed at the cost of increased memory usage.
  • Prefetch The program will try to render pages that are not yet visible increasing rendering speed at the cost of increased cache usage.
  • Prefetch distance The number of rows beyond the current row and twice the number of rows before the current row that are prefetched.
  • PDF settings
    • Antialiasing Improves display quality at the cost of performance
    • Text antialiasing Improves text display quality at the cost of performance
    • Text hinting May improve text display quality for certain fonts.
    • Overprint preview If enabled, a preview of printing one layer of ink on top of another is displayed.
    • Thin line mode Chooses the optimization used to draw thin lines.
    • Backend Chooses the backend used to render pages.
  • PS settings
    • Graphics antialias bits Determines the amount of antialiasing for graphics.
    • Text antialias bits Determines the amount of antialiasing for text.

Interface settings

  • Extended search dock If enabled, the default search dock is extended by an overview showing the results of all tabs. (Effective after restart.)
  • Annotation overlay If enabled, all annotations on a page will be displayed as an interactive overlay. Otherwise each annotation will be handled as a separate pop-up window.
  • Form field overlay If enabled, all form fields on a page will be displayed as an interactive overlay. Otherwise each form field will be handled as a separate pop-up window.
  • Tab position Defines at which edge of the main view tabs will be displayed.
  • Tab visibility Determines whether tabs will be displayed if less than two documents are opened.
  • Spread tabs Determines if tabs will be spread out evenly over the whole tab bar.
  • New tab next to current tab If enabled, new tabs are opened to the right of the active tab.
  • Exit after last tab If enabled, the application exits after the last tab is closed.
  • Recently used count Sets the number of files that are listed in the recently used menu, if "Track recently used" is enabled. (Effective after restart.)
  • Recently closed count Sets the number of tabs that are listed in the recently closed menu, if "Keep recently closed" is enabled. (Effective after restart.)
  • File tool bar Defines which actions are visible in the file tool bar. Available actions are openInNewTab, open, refresh, saveCopy, saveAs, print and separator. (Effective after restart.)
  • Edit tool bar Defines which actions are visible in the edit tool bar. Available actions are currentPage, previousPage, nextPage, firstPage, lastPage, jumpToPage, jumpBackward, jumpForward, search, copyToClipboardMode, addAnnotationMode and separator. (Effective after restart.)
  • View tool bar Defines which actions are visible in the view tool bar. Available actions are scaleFactor, zoomIn, zoomOut, continuousMode, twoPagesMode, twoPagesWithCoverPageMode, multiplePagesMode, originalSize, fitToPageWidthMode, fitToPageSizeMode, rotateLeft, rotateRight, fullscreen, presentation and separator. (Effective after restart.)
  • Document context menu Defines which actions are visible in the document's context menu. Available actions are openCopyInNewTab, openCopyInNewWindow, openContainingFolder, moveToInstance, previousPage, nextPage, firstPage, lastPage, jumpToPage, jumpBackward, jumpForward, setFirstPage, findPrevious, findNext, cancelSearch and separator.
  • Tab context menu Defines which actions are visible in a tab's context menu. Available actions are openCopyInNewTab, openCopyInNewWindow, openContainingFolder, moveToInstance, copyFilePath, selectFilePath, closeAllTabs, closeAllTabsButThisOne, closeAllTabsToTheLeft, closeAllTabsToTheRight and separator.
  • Scrollable menus Will override the default style so that pop-up menus scroll instead being laid-out in mutliple columns if they are larger than the available screen space. (Effective after restart.)
  • Searchable menus Extends the default keyboard navigation of the tabs and bookmarks menus by a search-as-you-type mechanism.
  • Toggle tool and menu bars with fullscreen Always toggles the visibility of the tool and menu bars when toggling fullscreen mode.
  • Use page label Determines if document-supplied page label will be used instead of page numbers when available.
  • Document title as tab title Determines if the tab title as derived from the meta-data instead of the file name.
  • Current page in window title If enabled, the current page and number of pages of the document in the active tab are displayed in the window title.
  • Instance name in window title If enabled and the current instance is named, its name is displayed in the window title.
  • Highlight current thumbnail If enabled, the current page is highlighted in the thumbnails view.
  • Limit thumbnails to results If this option is enabled and a search is conducted, only the pages where the search term is found are displayed in the thumbnails view.

Shortcut settings

The shortcut settings allows the adjustment of keyboard shortcuts to personal preference. Shortcuts are changed by double-clicking on the shortcut to edit it and entering the new shortcut. Each action can have several shortcuts by entering a semicolon-separated list of them. Names of keys that are not single letters are written out explicitly (e.g. "Alt", "Ctrl", "PgDown"), where the matching is not case sensitive. If the shortcut contains modifier keys, the names of the keys are joined by a plus sign and modifier keys must be listed first, e.g. "Ctrl+A" or "Ctrl++".

Modifier settings

  • Zoom The keyboard modifiers to zoom using the mouse wheel in the main view.
  • Rotate The keyboard modifiers to rotate using the mouse wheel in the main view.
  • Scroll The keyboard modifiers to scroll horizontally using the mouse wheel in the main view.
  • Copy to clipboard The keyboard modifiers to copy texts or images from a page to the clipboard.
  • Add annotation The keyboard modifiers to add annotations to a page.
  • Zoom to selection The keyboard modifiers to zoom to a slection on a page.
qpdfview-0.4.18/help/help_ca.html0000644000000000000000000006264013516127411015001 0ustar 00000000000000 Ajuda

Ajuda

Taula de continguts

  1. Menú principal
    1. Fitxer
    2. Edita
    3. Visualitza
    4. Pestanyes
    5. Marcadors
    6. Ajuda
  2. Visualització principal
  3. Visualitzacions auxiliars
  4. Ajusts
    1. Ajusts del comportament
    2. Ajusts gràfics
    3. Ajusts de la interfície
    4. Ajusts de les dreceres
    5. Ajusts dels modificadors

Introducció

qpdfview és un visualitzador de documents amb pestanyes. Utilitza Poppler per a la compatibilitat amb PDF, libspectre per a la compatibilitat amb PS, DjVuLibre per a la compatibilitat amb DjVu, CUPS per a la compatibilitat amb la impressió i el conjunt d'eines Qt per a la seva interfície.

Consulteu la pàgina del manual per obtenir informació sobre les opcions de la línia d'ordres i els fitxers de configuració.

Menú principal

Fitxer

  • Obre... Obre un diàleg per triar el fitxer que s'ha d'obrir a la pestanya actual. Si no hi ha cap pestanya, el fitxer s'obre en una pestanya nova.
  • Obre en una pestanya nova... Obre un diàleg per triar els fitxers que s'han d'obrir en pestanyes noves.
  • Utilitzat recentment Conté una llista dels fitxers utilitzats més recentment (si està habilitat als ajusts).
  • Refresca Torna a carregar el fitxer que es mostra a la pestanya actual.
  • Desa Desa els canvis a les anotacions i els camps del formulari al fitxer que es mostra a la pestanya actual.
  • Anomena i desa Obre un diàleg per desar el fitxer que es mostra a la pestanya actual, incloent-hi els canvis a les anotacions i els camps del formulari.
  • Desa'n una còpia Obre un diàleg per desar una còpia sense modificar el fitxer que es mostra a la pestanya actual.
  • Imprimeix... Obre un diàleg per imprimir el fitxer que es mostra a la pestanya actual.
  • Surt Tanca totes les pestanyes i finalitza el programa.

Edita

  • Següent/Anterior/Primera/Última pàgina Passa a la següent,anterior,primera o última pàgina del document.
  • Salta a la pàgina... Obre un diàleg per introduir la pàgina que s'ha de mostrar a la pestanya actual.
  • Salta cap enrere/endavant Salta cap enrere o endavant a la història de la pàgina que es mostra.
  • Cerca... Obre l'acoblador de cerca a sota de la visualització principal. La cerca s'inicia automàticament passats dos segons de l'últim canvi al terme de cerca o s'inicia manualment en prémer la tecla de retorn. Si el modificador Maj es manté quan es prem la tecla de retorn, la cerca s'inicia en totes les pestanyes en lloc de només la pestanya actual. (Aquest efecte s'inverteix si l'acoblador de cerca ampliada està habilitat als ajusts).
  • Troba l'anterior/la següent/ Salta a l'anterior o a la següent ocurrència del terme de cerca al document.
  • Cancel·la la cerca Cancel·la la cerca que s'està executant i tanca l'acoblador de cerca.
  • Copia al porta-retalls Si es marca, el programa esperarà que arrossegueu un marc per copiar texts o imatges.
  • Afegeix anotacions Si es marca, el programa esperarà que arrossegueu un marc per afegir-hi anotacions.
  • Ajusts... Obre el diàleg dels ajusts. El botó anomenat "Valors predeterminats" revertirà tots els ajusts a totes les pestanyes als valors predeterminats. El botó anomenat "Valors predeterminats a la pestanya actual" només revertirà els ajusts de la pestanya actual als valors predeterminats.

La pàgina actual es pot canviar introduint la pàgina desitjada al camp de text a la barra d'eines d'edició, que es pot donar el focus mitjançant Ctrl+K i prement la tecla de retorn.

Visualitza

  • Continu Determina si totes les files del disseny de pàgina estan visibles alhora.
  • Dos pàgines Determina si el disseny de pàgina fa servir dues columnes.
  • Two pages with cover page Determines whether the page layout uses two columns with a break after the cover page.
  • Multiple pages Determines whether the page layout uses multiple columns. The number of columns can be changed in the settings dialog.
  • Right to left Determines how pages are arranged in layouts with multiple pages per row.
  • Zoom in Increases the scale factor by 10 percent. The maximum scale factor is 5000 percent.
  • Zoom out Decreases the scale factor by 10 percent. The minimum scale factor is 10 percent.
  • Original size Resets the scale factor to 100 percent.
  • Fit to page width Determines the scale factor such that all pages fully fit into the main view horizontally.
  • Fit to page size Determines the scale factor such that all pages fully fit into the main view horizontally and vertically.
  • Rotate left Rotates the pages left/counterclockwise by 90 degrees.
  • Rotate right Rotates the pages right/clockwise by 90 degrees.
  • Invert colors Determines whether pages are rendered with inverted colors.
  • Convert to grayscale Determines whether pages are converted to grayscale after rendering.
  • Trim margins Enables the removal of empty page margins after rendering.
  • Composition Enables the composition of the rendered page with the paper color to adjust the background of scanned documents.
  • Tool bars This menu contains a list of available tool bars for accessing frequently used actions.
  • Docks This menu contains a list of available docks for displaying supplementary information.
  • Fonts... Opens a dialog listing the fonts used in the document.
  • Fullscreen Toggles the fullscreen mode, i.e. the window is shown maximized and without decoration.
  • Presentation... Enters presentation mode which can be left by pressing F12 or escape. The home/end key is used to display the first/last page. Arrow keys right and down, space and the page down key jump to the next page. Arrow keys left and up, backspace and the page up key jump to the previous page. Pressing control and return jumps back to the page before the last jump.

The scale factor can be changed by entering the desired percentage into the text field in the view tool bar, which can be focused using Ctrl+L, and pressing the return key.

Tabs

  • Previous/Next tab Makes the previous/next tab the current tab. Cycles to the last/first tab if the first/last tab is the current tab.
  • Close tab Closes the current tab.
  • Close all tabs Closes all tabs.
  • Close all tabs but current tab Closes all tabs except for the current tab.
  • Recently closed Contains a list of the most recently closed tabs (if enabled in the settings).

This menu contains a list of all tabs which can be made the current tab by clicking on the corresponding menu item. Tabs can also be closed by middle-clicking. The first nine tabs can also be activated by holding the Alt modifier and pressing keys one to nine.

Bookmarks

  • Previous bookmark Jumps to the closest bookmark before the current page.
  • Next bookmark Jumps to the closest bookmark after the current page.
  • Add bookmark Adds a bookmark for the current file and page.
  • Remove bookmark Removes the bookmark for the current file and page.
  • Remove all bookmarks Removes all bookmarks.
  • Open Opens the corresponding file in the current tab. If there is no tab, the file is opened in a new tab.
  • Open in new tab Opens the corresponding file in a new tab.
  • Jump to page Jumps to the corresponding page if the corresponding file is already open. Otherwise the corresponding file is opened in a new tab.

Help

  • Contents Displays this document.
  • About Displays the program version.

Main view

The backspace/space key skips to the previous/next page. The home/end key skips to the first/last page. The arrow, page up and page down keys scroll the viewport. Pressing control and return jumps to the page before the last jump.

Using the mouse wheel scrolls up and down. Holding ALT while using the mouse wheel scrolls left and right. Holding CTRL while using the mouse wheel scales the document. Holding SHIFT while using the mouse wheel rotates the document. (Keyboard modifiers can be changed in the settings dialog.) Click and hold the middle mouse button to select a rectangle to zoom to.

Links are highlighted by red frames (if enabled in the settings). Left-click on a link to show the linked page or open the linked URL in the default browser (if enabled in the settings). Middle-click on a link to show the linked page in a new tab. Hovering over a link displays its destination as a tool tip.

Form fields are highlighted by blue frames (if enabled in the settings). Left-click on a form field to edit its contents. Hovering over a form field displays its name as a tool tip.

The source of a position in the document can be opened in the source editor using the context menu which optionally contains an item for the first matching SyncTeX node.

To copy texts or images, hold SHIFT, click and hold the left mouse button to drag a frame around the area to copy. Once the mouse button is released, a pop-up menu is displayed to select whether to copy texts or images into the clipboard.

To add annotations, hold CTRL, click and hold the left mouse button to drag a frame around the region to annotate. Once the mouse button is released, a pop-up menu is displayed to select whether to add text or highlight annotations. Left-click to edit annotations. Right-click to remove annotations. (Adding and removing annotations requires version 0.20.1 or higher of the Poppler library.) Hovering over an annotation displays its contents as a tool tip.

To zoom to a selection, hold SHIFT and CTRL, click and hold the left mouse button to drag a frame around region to zoom into.

The visibility of the tool and menu bars can be toggled using configurable keyboard shortcuts whose default values are "Shift+Alt+T" and "Shift+Alt+M".

Auxiliary views

The outline view displays an overview of the contents of the document. A left click on an entry jumps to the respective page in the main view. The context menu can be used to expand/collapse all items below the selected item.

The outline view can also be navigated using the keyboard and the mouse wheel. Holding Shift and using the Up/Down keys will scroll the view. Holding Shift and using the Left/Right keys will collapse/expand one level of items below the selected item. Holding Control and using the Left/Right keys will completely collapse/expand the selected item and its children. Holding Shift and using the mousel wheel will change the selected item. Holding Control and using the mouse wheel will expand/collapse the selected item.

The properties view displays additional information contained in the document.

The thumbnails view displays smaller versions of the pages of the document. A left click on an entry jumps to the respective page in the main view.

The bookmarks view shows the bookmarks related to the document displayed in the current tab. The context menu contains entries to jump to the previous/next boookmark or to add bookmarks. The context menu of each entry also contains entries to edit and delete bookmarks.

If enabled in the settings, the extended search dock shows an overview containing the results of all searches being performed in all tabs. It also shows the text surrounding a result with the search term being emphasized. Clicking on a result opens the corresponding tab and jumps to its position.

Settings

Behavior settings

  • Open URL Determines whether links to URL are opened in the default browser.
  • Auto-refresh Determines whether files are automatically reloaded if changed on disk.
  • Track recently used If enabled, a recently used menu is available and lists as many recently used files as set in the "Recently used count" option. (Effective after restart.)
  • Keep recently closed If enabled, a recently closed menu is available and lists as many recently closed tabs as set in the "Recently closed count" option. Keeping the tabs available could increase memory usage considerably. (Effective after restart.)
  • Restore tabs If enabled, tabs and their properties are saved on ending the program and restored on restart.
  • Restore bookmarks If enabled, bookmarks are saved on ending the program and restored on restart.
  • Restore per-file settings If enabled, per-file settings are saved/restored on opening/closing tabs.
  • Save database interval The interval after which tabs, bookmarks or per-file settings are saved to the database.
  • Synchronize presentation If enabled, the main view can be used to control the presentation view.
  • Presentation screen The index of the screen to display the presentation view on.
  • Synchronize outline view If enabled, the outline view will highlight the first entry pointing to the current page whenever the current page changes.
  • Minimal scrolling If enabled, the view port will only be scrolled if the target position is not yet visible.
  • Zoom factor The number by which the scale factor is multiplied resp. divided upon zooming in resp. out.
  • Highlight color Determines the color of highlights.
  • Highlight duration Determines the duration of temporary highlights.
  • Annotation color The color of annotations added by the program using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Source editor The program which is started to edit sources. '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number.

Graphics settings

  • Use tiling Pages will be divided into tiles before rendering and caching to reduce memory usage.
  • Keep obsolete pixmaps If enabled, then upon change of the zoom factor, cached pixmaps will be used to draw approximations of final pixmaps until these are available at the cost of increased memory usage.
  • Use device pixel ratio If enabled, the highest available device pixel ratio is used to render at physical and display at logical resolution.
  • Decorate pages Determines whether pages are set apart from the background.
  • Decorate links Determines whether links are highlighted by red frames.
  • Decorate form fields Determines whether form fields are highlighted by blue frames.
  • Background color Determines the color of the background using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Paper color Determines the color of pages using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Presentation background color Overrides the paper color in the computation of the background color of the presentation view and is defined using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Pages per row Number of pages per row in the 'multiple pages' layout mode.
  • Page spacing Determines both vertical and horizontal space displayed between pages.
  • Thumbnail spacing Determines both vertical and horizontal space displayed between thumbnails.
  • Thumbnail size Determines the size of the thumbnails.
  • Cache size The program will try to cache rendered pages within this limit increasing rendering speed at the cost of increased memory usage.
  • Prefetch The program will try to render pages that are not yet visible increasing rendering speed at the cost of increased cache usage.
  • Prefetch distance The number of rows beyond the current row and twice the number of rows before the current row that are prefetched.
  • PDF settings
    • Antialiasing Improves display quality at the cost of performance
    • Text antialiasing Improves text display quality at the cost of performance
    • Text hinting May improve text display quality for certain fonts.
    • Overprint preview If enabled, a preview of printing one layer of ink on top of another is displayed.
    • Thin line mode Chooses the optimization used to draw thin lines.
    • Backend Chooses the backend used to render pages.
  • PS settings
    • Graphics antialias bits Determines the amount of antialiasing for graphics.
    • Text antialias bits Determines the amount of antialiasing for text.

Interface settings

  • Extended search dock If enabled, the default search dock is extended by an overview showing the results of all tabs. (Effective after restart.)
  • Annotation overlay If enabled, all annotations on a page will be displayed as an interactive overlay. Otherwise each annotation will be handled as a separate pop-up window.
  • Form field overlay If enabled, all form fields on a page will be displayed as an interactive overlay. Otherwise each form field will be handled as a separate pop-up window.
  • Tab position Defines at which edge of the main view tabs will be displayed.
  • Tab visibility Determines whether tabs will be displayed if less than two documents are opened.
  • Spread tabs Determines if tabs will be spread out evenly over the whole tab bar.
  • New tab next to current tab If enabled, new tabs are opened to the right of the active tab.
  • Exit after last tab If enabled, the application exits after the last tab is closed.
  • Recently used count Sets the number of files that are listed in the recently used menu, if "Track recently used" is enabled. (Effective after restart.)
  • Recently closed count Sets the number of tabs that are listed in the recently closed menu, if "Keep recently closed" is enabled. (Effective after restart.)
  • File tool bar Defines which actions are visible in the file tool bar. Available actions are openInNewTab, open, refresh, saveCopy, saveAs, print and separator. (Effective after restart.)
  • Edit tool bar Defines which actions are visible in the edit tool bar. Available actions are currentPage, previousPage, nextPage, firstPage, lastPage, jumpToPage, jumpBackward, jumpForward, search, copyToClipboardMode, addAnnotationMode and separator. (Effective after restart.)
  • View tool bar Defines which actions are visible in the view tool bar. Available actions are scaleFactor, zoomIn, zoomOut, continuousMode, twoPagesMode, twoPagesWithCoverPageMode, multiplePagesMode, originalSize, fitToPageWidthMode, fitToPageSizeMode, rotateLeft, rotateRight, fullscreen, presentation and separator. (Effective after restart.)
  • Document context menu Defines which actions are visible in the document's context menu. Available actions are openCopyInNewTab, openCopyInNewWindow, openContainingFolder, moveToInstance, previousPage, nextPage, firstPage, lastPage, jumpToPage, jumpBackward, jumpForward, setFirstPage, findPrevious, findNext, cancelSearch and separator.
  • Tab context menu Defines which actions are visible in a tab's context menu. Available actions are openCopyInNewTab, openCopyInNewWindow, openContainingFolder, moveToInstance, copyFilePath, selectFilePath, closeAllTabs, closeAllTabsButThisOne, closeAllTabsToTheLeft, closeAllTabsToTheRight and separator.
  • Scrollable menus Will override the default style so that pop-up menus scroll instead being laid-out in mutliple columns if they are larger than the available screen space. (Effective after restart.)
  • Searchable menus Extends the default keyboard navigation of the tabs and bookmarks menus by a search-as-you-type mechanism.
  • Toggle tool and menu bars with fullscreen Always toggles the visibility of the tool and menu bars when toggling fullscreen mode.
  • Use page label Determines if document-supplied page label will be used instead of page numbers when available.
  • Document title as tab title Determines if the tab title as derived from the meta-data instead of the file name.
  • Current page in window title If enabled, the current page and number of pages of the document in the active tab are displayed in the window title.
  • Instance name in window title If enabled and the current instance is named, its name is displayed in the window title.
  • Highlight current thumbnail If enabled, the current page is highlighted in the thumbnails view.
  • Limit thumbnails to results If this option is enabled and a search is conducted, only the pages where the search term is found are displayed in the thumbnails view.

Shortcut settings

The shortcut settings allows the adjustment of keyboard shortcuts to personal preference. Shortcuts are changed by double-clicking on the shortcut to edit it and entering the new shortcut. Each action can have several shortcuts by entering a semicolon-separated list of them. Names of keys that are not single letters are written out explicitly (e.g. "Alt", "Ctrl", "PgDown"), where the matching is not case sensitive. If the shortcut contains modifier keys, the names of the keys are joined by a plus sign and modifier keys must be listed first, e.g. "Ctrl+A" or "Ctrl++".

Modifier settings

  • Zoom The keyboard modifiers to zoom using the mouse wheel in the main view.
  • Rotate The keyboard modifiers to rotate using the mouse wheel in the main view.
  • Scroll The keyboard modifiers to scroll horizontally using the mouse wheel in the main view.
  • Copy to clipboard The keyboard modifiers to copy texts or images from a page to the clipboard.
  • Add annotation The keyboard modifiers to add annotations to a page.
  • Zoom to selection The keyboard modifiers to zoom to a slection on a page.
qpdfview-0.4.18/help/help_cs.html0000644000000000000000000007156313516127411015027 0ustar 00000000000000 Nápověda

Nápověda

Obsah

  1. Hlavní nabídka
    1. Soubor
    2. Úpravy
    3. Pohled
    4. Karty
    5. Záložky
    6. Nápověda
  2. Hlavní pohled
  3. Pomocné pohledy
  4. Nastavení
    1. Nastavení chování
    2. Nastavení grafiky
    3. Nastavení rozhraní
    4. Nastavení klávesových zkratek
    5. Nastavení modifikátorů

Úvod

qpdfview je prohlížeč dokumentů s kartami. Používá Poppler pro podporu PDF, libspectre pro podporu PS, DjVuLibre pro podporu DjVu, CUPS pro podporu tisku a sadu Qt pro své rozhraní.

Podívejte se, prosím, do manuálových stránek, hledáte-li informace k volbám příkazového řádku a k souborům s nastavením.

Hlavní nabídka

Soubor

  • Otevřít... Otevře dialog pro výběr souboru k otevření v nynější kartě. Pokud není žádná karta, soubor je otevřen v nové kartě.
  • Otevřít v nové kartě... Otevře dialog pro výběr souborů k otevření v nových kartách.
  • Nedávno použité Obsahuje seznam naposledy použitých souborů (pokud je to povoleno v nastavení).
  • Obnovit Obnoví soubor zobrazený v nynější kartě.
  • Uložit Uloží změny ve vysvětlivkách a formulářových polí do souboru zobrazeného v nynější kartě.
  • Uložit jako... Otevře dialog pro uložení souboru zobrazeného v nynější kartě včetně změn v poznámkách a formulářových polích.
  • Uložit kopii... Otevře dialog pro uložení nezměněné kopie souboru zobrazeného v nynější kartě.
  • Tisk... Otevře dialog pro vytištění souboru zobrazeného v nynější kartě.
  • Ukončit Zavře všechny karty a program ukončí.

Úpravy

  • Další/Předchozí/První/Poslední strana Skočí na další/předchozí/první/poslední stranu dokumentu.
  • Přejít na stranu... Otevře dialog pro vstoupení na stranu zobrazenou v nynější kartě.
  • Skočit zpět/vpřed Skočí zpět/vpřed v historii zobrazené strany.
  • Hledat... Otevře panel pro hledání pod hlavním pohledem. Hledání začne automaticky dvě sekundy po poslední změně v hledaném výrazu nebo je spuštěno ručně stisknutím klávesy Enter. Pokud je podržen modifikátor Shift když je stisknuta klávesa Enter, prohledávání začne ve všech kartách místo pouze v nynější kartě. (Tento účinek je zrušen, pokud je v nastavení povolen panel pro rozšířené hledání.)
  • Najít předchozí/další Skočí v dokumentu na předchozí/další výskyt hledaného pojmu.
  • Zrušit hledání Zruší nyní probíhající hledání a zavře panel pro hledání.
  • Kopírovat do schránky Je-li zaškrtnuto, program počká na vytvoření rámečku pro zkopírování textu nebo obrázků tažením.
  • Přidat poznámku Je-li zaškrtnuto, program počká na vytvoření rámečku pro přidání poznámek tažením.
  • Nastavení... Otevře dialog pro nastavení. Tlačítko označené Výchozí vrátí všechna nastavení všech karet zpět na jejich výchozí hodnoty. Tlačítko označené Výchozí na nynější kartě vrátí zpět na výchozí hodnotu pouze nastavení nynější karty.

Nynější stranu lze změnit zadáním požadované strany do textového pole v panelu nástrojů pro úpravy, který je možné zaměřit pomocí Ctrl+K, a stisknutím klávesy Enter.

Pohled

  • Průběžně Určuje, zda jsou všechny řádky rozvržení strany viditelné zároveň.
  • Dvě strany Určuje, zda rozvržení strany používá dva sloupce
  • Dvě strany s titulní stranou Určuje, zda rozvržení strany používá dva sloupce se zalomením po titulní straně.
  • Více stran Určuje, zda rozvržení strany používá více sloupců. Počet sloupců lze změnit v dialogu pro nastavení.
  • Zprava doleva Určuje, jak jsou strany uspořádány v rozvrženích s více stranami na řádek.
  • Přiblížit Zvýší násobek měřítka o 10 procent. Největší násobek měřítka je 5000 procent.
  • Oddálit Sníží násobek měřítka o 10 procent. Nejmenší násobek měřítka je 10 procent.
  • Původní velikost Nastaví násobek zvětšení znovu na 100 procent.
  • Přizpůsobit šířce strany Určuje násobek zvětšení tak, že se všechny strany vodorovně zcela vejdou do hlavního pohledu.
  • Přizpůsobit velikosti strany Určuje násobek zvětšení tak, že se všechny strany vodorovně i svisle zcela vejdou do hlavního pohledu.
  • Otočit vlevo Otočí strany doleva/proti směru hodinových ručiček o 90 stupňů.
  • Otočit vpravo Otočí strany doprava/po směru hodinových ručiček o 90 stupňů.
  • Obrátit barvy Určuje, zda jsou strany kresleny s obrácenými barvami.
  • Převést na odstíny šedi Určuje, zda jsou strany po vykreslení převedeny na odstíny šedi.
  • Oříznout okraje Povolí odstranění prázdných okrajů strany po vykreslení.
  • Přizpůsobení barev Povolí přizpůsobení barev vykreslené strany barvě papíru pro upravení pozadí nasnímaných dokumentů.
  • Nástrojové panely Tato nabídka obsahuje seznam dostupných nástrojových panelů pro přístup k často používaným činnostem.
  • Postranní panely Tato nabídka obsahuje seznam dostupných postranních panelů pro zobrazení doplňkových informací.
  • Písma... Otevře dialog uvádějící v seznamu písma použitá v dokumentu.
  • Celá obrazovka Přepne režim na celou obrazovku, tj. okno je ukázáno zvětšené a bez dekorace.
  • Promítání... Vstoupí do režimu promítání, jejž lze opustit stisknutím klávesy F12 nebo Esc. Klávesa Home/End se používá k zobrazení první/poslední strany. Klávesy šipek vpravo a dolů, mezerník a Page Down se používají pro skok na další stranu. Klávesy šipek vlevo a nahoru, Backspace a Page Up se používají pro skok na předchozí stranu. Stisknutí Ctrl a Enter provede skok zpět na stranu před posledním skokem.

Násobek zvětšení lze změnit zadáním požadovaného procenta do textového pole v panelu nástrojů pro pohled, který je možné zaměřit pomocí Ctrl+L, a stisknutím klávesy Enter.

Karty

  • Předchozí/Další karta Udělá z předchozí/další karty nynější kartu. Proběhne na poslední/první kartu, pokud je první/poslední karta nynější kartou.
  • Zavřít kartu Zavře nynější kartu.
  • Zavřít všechny karty Zavře všechny karty.
  • Zavřít všechny karty kromě nynější karty Zavře všechny karty kromě nynější karty.
  • Nedávno zavřené Obsahuje seznam naposledy zavřených karet (pokud je to povoleno v nastavení).

Tato nabídka obsahuje seznam všech karet, ze kterých je možné udělat nynější kartu klepnutím na odpovídající položku nabídky. Karty lze rovněž zavřít klepnutím prostředním tlačítkem myši. Prvních devět karet je také možné zapnout podržením modifikátoru Alt a stisknutím kláves od jedné do devíti.

Záložky

  • Předchozí záložka Skočí na nejbližší záložku před nynější stranou.
  • Další záložka Skočí na nejbližší záložku po nynější straně.
  • Přidat záložku Přidá záložku pro nynější soubor a stranu.
  • Odstranit záložku Odstraní záložku pro nynější soubor a stranu.
  • Odstranit všechny záložky Odstraní všechny záložky.
  • Otevřít Otevře odpovídající soubor v nynější kartě. Pokud není žádná karta, soubor je otevřen v nové kartě.
  • Otevřít v nové kartě Otevře odpovídající soubor v nové kartě.
  • Jít na stranu Skočí na odpovídající stranu, pokud je odpovídající soubor již otevřen. Jinak je odpovídající soubor otevřen v nové kartě.

Nápověda

  • Obsah Zobrazí tento dokument.
  • O programu Zobrazí verzi programu.

Hlavní pohled

Klávesa Backspace/mezerník skočí na předchozí/další stranu. Klávesa Home/End skočí na první/poslední stranu. Klávesy šipek, Page Up a Page Down posouvají pohled. Stisknutím Ctrl a Enter se skočí na stranu před posledním skokem.

Pomocí kolečka myši se provádí posun nahoru a dolů. Podržením Alt během používání kolečka myši se dělá posun doleva a doprava. Podržením Ctrl během používání kolečka myši se mění velikost dokumentu. Podržením Shift během používání kolečka myši se mění velikost dokument otáčí. (Klávesnicové modifikátory je možné změnit v dialogu pro nastavení.) Klepněte a podržte prostřední tlačítko myši pro výběr obdélníkové oblasti a její přiblížení.

Odkazy jsou zvýrazněny červenými rámečky (pokud je to povoleno v nastavení). Klepnutí levým tlačítkem myši na odkaz pro ukázání odkazované stránky nebo pro otevření odkazované adresy (URL) ve výchozím prohlížeči (pokud je to povoleno v nastavení). Klepnutí prostředním tlačítkem myši na odkaz pro ukázání odkazované stránky v nové kartě. Přejetí ukazovátkem myši nad odkazem zobrazí jeho cíl jako nástrojovou radu.

Formulářová pole jsou zvýrazněna modrými rámečky (pokud je to povoleno v nastavení). Klepněte levým tlačítkem myši na formulářové pole pro upravení jeho obsahu. Přejetí nad formulářovým polem zobrazí jeho cíl jako nástrojovou radu.

Zdrojový text místa v dokumentu lze otevřít v editoru zdrojového textu pomocí nabídky souvisejících činností, která volitelně obsahuje položku pro první odpovídající uzel SyncTeX.

Pro kopírování textů nebo obrázků podržte Shift, klepněte a podržte levé tlačítko myši a tažením okolo oblasti ke zkopírování vytvořte rámeček. Jakmile je tlačítko myši uvolněno, zobrazí se vyskakovací nabídka, kde se zvolí, zda texty nebo obrázky kopírovat do schránky.

Pro přidání poznámek podržte klávesu Ctrl, klepněte a podržte levé tlačítko myši pro vytvoření rámečku tažením okolo oblasti, ke které se má vytvořit poznámka. Jakmile je tlačítko myši uvolněno, zobrazí se vyskakovací nabídka, kde se zvolí, zda se má přidat text nebo zvýraznit poznámka. Klepněte levým tlačítkem myši pro upravení poznámek. Klepněte pravým tlačítkem myši pro odstranění poznámek. (Přidávání nebo odstraňování poznámek vyžaduje verzi 0.20.1 nebo vyšší knihovny Poppler.) Při přejetí ukazovátkem nad poznámkou se její obsah zobrazí jako nástrojová rada.

Pro přiblížení výběru podržte klávesu Shift a Ctrl, klepněte a držte levé tlačítko myši, abyste natáhl rámeček okolo oblasti, která se má přiblížit.

Viditelnost nástrojových pruhů a pruhu s hlavní nabídkou lze přepnout pomocí nastavitelných klávesových zkratek, jejichž výchozími hodnotami jsou "Shift+Alt+T" a "Shift+Alt+M".

Pomocné pohledy

Pohled na osnovu zobrazí přehled obsahu dokumentu. Po klepnutí na položku levým tlačítkem myši dojde ke skoku na příslušnou stranu v hlavním pohledu. Nabídku souvisejících činností lze použít k rozbalení/sbalení všech položek pod vybranou položkou.

V pohledu na osnovu se také lze pohybovat pomocí klávesnice a kolečka myši. Při podržení klávesy Shift a za použití kláves šipek nahoru/dolů dojde k pohybu obrazu. Při podržení klávesy Shift a za použití kláves šipek vlevo/vpravo se sbalí/rozbalí jedna úroveň položek pod vybranou položkou. Při podržení klávesy Ctrl a za použití kláves šipek vlevo/vpravo se úplně sbalí/rozbalí vybraná položka a jí podřízené položky. Při podržení klávesy Ctrl a za použití kolečka myši se sbalí/rozbalí vybraná položka.

Pohled na vlastnosti zobrazí dodatečné informace obsažené v dokumentu.

Pohled na náhledy zobrazí menší provedení stran dokumentu. Po klepnutí na položku levým tlačítkem myši dojde ke skoku na příslušnou stranu v hlavním pohledu.

Pohled na záložky ukáže záložky související s dokumentem zobrazené v nynější kartě. Nabídka souvisejících činností obsahuje záznamy pro skok na předchozí/další záložku nebo pro přidání záložek. Nabídka souvisejících činností ke každému záznamu také umožňuje záznamy upravovat a mazat.

Pokud je to povoleno v nastavení panel pro rozšířené hledání ukáže přehled obsahující výsledky všech hledání provedených ve všech kartách. Také ukáže text obklopující výsledek se zvýrazněným hledaným pojmem. Klepnutí na výsledek otevře odpovídající kartu a udělá skok na jeho místo.

Nastavení

Nastavení chování

  • Otevřít adresu (URL) Určuje, zda se odkazy na adresu (URL) otevřou ve výchozím prohlížeči.
  • Obnovit automaticky Určuje, zda jsou soubory automaticky nahrány znovu, když jsou změněny na disku.
  • Sledovat nedávno použité Je-li povoleno, je dostupná nabídka pro nedávno použité, v níž je uvedeno tolik nedávno použitých souborů, kolik je nastaveno volbou Počet nedávno použitých. (Nabude účinnosti po opětovném spuštění programu.)
  • Uchovat nedávno zavřené Je-li povoleno, je dostupná nabídka nedávno zavřených dokumentů, ve které je uváděno právě tolik nedávno zavřených karet, kolik je jich nastaveno volbou Počet nedávno zavřených. Udržování dostupnosti karet může vést k povážlivému zvýšení využívání paměti. (Vchází v účinnost po opětovném spuštění programu.)
  • Obnovit karty Je-li povoleno, karty a jejich vlastnosti jsou uloženy při ukončení programu a obnoveny po jeho opětovném spuštění.
  • Obnovit záložky Je-li povoleno, záložky jsou uloženy při ukončení programu a obnoveny po jeho opětovném spuštění.
  • Obnovit nastavení souborů Je-li povoleno, nastavení souboru jsou uložena/obnovena při otevření/zavření karet.
  • Uložit databázový interval Doba, po níž jsou karty, záložky nebo nastavení na soubor uložena do databáze.
  • Ovládat promítání Je-li povoleno, je možné hlavní pohled použít k ovládání pohledu na promítání.
  • Promítací obrazovka Je-li povoleno, je možné hlavní pohled použít k ovládání pohledu na promítání.
  • Zvýraznit položku osnovy Je-li povoleno, bude v pohledu na osnovu zvýrazněna první položka ukazující na nynější stranu, kdykoli se posunutím nynější strana změní.
  • Nejmenší posun obrazu Je-li povoleno, zobrazené místo se bude posunovat jen tehdy, pokud není cílová poloha ještě viditelná.
  • Násobek zvětšení Číslo, kterým je činitel změny velikosti násoben případně dělen při přibližování nebo oddalování.
  • Barva zvýraznění Určuje barvu zvýraznění.
  • Doba trvání zvýraznění Určuje dobu trvání dočasných zvýraznění.
  • Barva poznámky Barva poznámek přidaná programem pomocí klíčových slov barev SVG nebo šestnáctkovým zápisem '#rrggbb'.
  • Editor zdroje Program, který je spuštěn, aby v něm byly upravovány zdroje. '%1' je nahrazeno absolutní souborovou cestou. '%2' příp. '%3' je nahrazeno číslem řádku popřípadě sloupce.

Nastavení grafiky

  • Použít dláždění Strany budou před vykreslením rozděleny do dlaždic a uloženy do vyrovnávací paměti, aby se zmenšila míra využití paměti.
  • Zachovat zastaralé pixmapy Je-li povoleno, potom se po změně násobku zvětšení pixmapy uložené ve vyrovnávací paměti použijí na kreslení přibližných pixmap konečných pixmap, dokud tyto nebudou dostupné za cenu zvýšeného využití paměti.
  • Použít poměr pixelu zařízení Je-li povoleno, používá se při kreslení fyzického rozlišení a při zobrazování logického rozlišení nejvyšší dostupný poměr pixelu zařízení.
  • Obtáhnout strany Určuje, zda jsou strany odděleny od pozadí.
  • Obtáhnout odkazy Určuje, zda jsou odkazy zvýrazněny červenými rámečky.
  • Obtáhnout formulářová pole Určuje, zda jsou formulářová pole zvýrazněna modrými rámečky.
  • Barva pozadí Určuje barvu pozadí pomocí klíčových slov barev SVG nebo šestnáctkovým zápisem '#rrggbb'.
  • Barva papíru Určuje barvu stran pomocí klíčových slov barev SVG nebo šestnáctkovým zápisem '#rrggbb'.
  • Barva pozadí promítání Potlačí barvu papíru ve výpočtu barvy pozadí pohledu na promítání. Je stanovena pomocí klíčových slov barev SVG nebo šestnáctkovým zápisem '#rrggbb'.
  • Stran na řádek Počet stran na řádek v režimu rozvržení na více stran.
  • Odstup stran Určuje jak svislý tak vodorovný odstup zobrazený mezi stranami.
  • Odstup náhledů Určuje jak svislý tak vodorovný odstup zobrazený mezi náhledy.
  • Velikost náhledů Určuje velikost náhledů.
  • Velikost vyrovnávací paměti Program se pokusí o ukládání vykreslených stran v rámci tohoto omezení do vyrovnávací paměti, čímž dojde ke zvýšení rychlosti kreslení za cenu zvýšeného využití paměti.
  • Přednatažení Program se pokusí o vykreslování stran, jež ještě nejsou viditelné, čímž dojde ke zvýšení rychlosti kreslení za cenu zvýšeného využití paměti.
  • Vzdálenost přednatažení Počet řádků za nynějším řádkem a dvakrát tolik řádků před nynějším řádkem, které jsou přednataženy.
  • Nastavení PDF
    • Vyhlazování Zlepšuje jakost zobrazení za cenu výkonu.
    • Vyhlazování textu Zlepšuje jakost zobrazení textu za cenu výkonu.
    • Instruování textu U některých písem může zlepšit jakost zobrazení textu.
    • Náhled přetisku Je-li povoleno, je zobrazen náhled tisku jedné vrstvy černě na vrchu jiné.
    • Režim tenkého řádku Vybere optimalizaci používanou ke kreslení tenkých řádků.
    • Jádro Vybere jádro používané ke kreslení stran.
  • Nastavení PS
    • Bity vyhlazování grafiky Určuje množství vyhlazování pro grafiku.
    • Bity vyhlazování textu Určuje množství vyhlazování pro text.

Nastavení rozhraní

  • Panel pro rozšířené hledání Je-li povoleno, výchozí panel pro hledání je rozšířen o přehled ukazující výsledky všech karet. (Účinné po opětovném spuštění.)
  • Vložené poznámky Je-li povoleno, všechny poznámky na straně budou zobrazeny jako interaktivní překrytí. V opačném případě bude s každou poznámkou zacházeno jako se samostatným oknem.
  • Vložené formulářové pole Je-li povoleno, všechna formulářová pole na straně budou zobrazena jako interaktivní překrytí. V opačném případě bude s každým formulářovým polem zacházeno jako se samostatným oknem.
  • Umístění karet Stanovuje, při kterém okraji hlavního pohledu budou karty zobrazeny.
  • Viditelnost karet Určuje, zda budou karty zobrazeny, v případě že budou otevřeny méně než dva dokumenty.
  • Roztáhnout karty Určí, zda se budou karty rozkládat rovnoměrně po celém pruhu s kartami.
  • Nová karta vedle nynější karty Je-li povoleno, jsou nové karty otevřeny napravo od činné karty.
  • Ukončit po poslední kartě Je-li povoleno, dojde k ukončení programu, poté co je zavřena poslední karta.
  • Počet nedávno použitých Nastavuje počet souborů, jež jsou uváděny v nabídce nedávno použitých, pokud je povoleno Sledovat nedávno použité. (Začne účinkovat po opětovném spuštění programu.)
  • Počet nedávno zavřených Nastavuje počet karet, jež jsou uváděny v nabídce nedávno zavřených, pokud je povoleno Uchovat nedávno zavřené. (Začne účinkovat po opětovném spuštění programu.)
  • Panel nástrojů pro soubor Stanovuje, které činnosti jsou viditelné v panelu nástrojů pro soubor. Dostupné činnosti jsou Otevřít v nové kartě, Otevřít, Uložit kopii, Uložit jako, Tisk a oddělovač. (Nabude účinnosti po opětovném spuštění programu.)
  • Panel nástrojů pro úpravy Stanovuje, které činnosti jsou viditelné v panelu nástrojů pro úpravy. Dostupné činnosti jsou Nynější strana, Předchozí strana, Další strana, První strana, Poslední strana, Přejít na stranu, Skočit zpět, Skočit vpřed, Hledat, Kopírovat do schránky, Přidat poznámku a oddělovač. (Nabude účinnosti po opětovném spuštění programu.)
  • Panel nástrojů pro pohled Stanovuje, které činnosti jsou viditelné v panelu nástrojů pro pohled. Dostupné činnosti jsou Násobek zvětšení, Přiblížit, Oddálit, Průběžně, Dvě strany, Dvě strany s titulní stranou, Více stran, Původní velikost, Přizpůsobit šířce strany, Přizpůsobit velikosti strany, Otočit vlevo, Otočit vpravo, Celá obrazovka, Promítání a oddělovač. (Nabude účinnosti po opětovném spuštění programu.)
  • Související nabídka k dokumentu Určuje, které činnosti jsou viditelné v související nabídce k dokumentu. Dostupnými činnostmi jsou otevření kopie v nové kartě, otevření kopie v novém okně, otevření obsahující složky, přechod na instanci, předchozí strana, další strana, první strana, poslední strana, skok na stranu, skok zpět, skok vpřed, nastavení první strany, nalezení předchozího, nalezení dalšího, zrušení hledání a oddělovač.
  • Související nabídka ke kartě Určuje, které činnosti jsou viditelné v související nabídce ke kartě. Dostupnými činnostmi jsou otevření kopie v nové kartě, otevření kopie v novém okně, otevření obsahující složky, přechod na instanci, kopírování cesty k souboru, vybrání cesty k souboru, zavření všech karet, zavření všech karet až na označenou, zavření všech karet nalevo, zavření všech karet napravo a oddělovač.
  • Ubíhající nabídky Přepíše výchozí styl, takže položky v nabídkách při projíždění ubíhají, místo toho aby byly zobrazeny ve více sloupcích, v případě že zabírají více místa, než je dostupný prostor na obrazovce. (Účinné po opětovném spuštění.)
  • Prohledávatelné nabídky Rozšíří výchozí způsob pohybu v nabídkách s kartami a záložkami pomocí klávesnice o mechanismus hledání rovnou při psaní.
  • Přepnout nástrojové pruhy a pruh s hlavní nabídkou při zobrazení na celou obrazovku Viditelnost nástrojových pruhů a pruhu s hlavní nabídkou je přepnuta vždy, když dojde k přepnutí do režimu na celou obrazovku.
  • Použít popis strany Stanoví, zda se použije popis strany poskytnutý dokumentem místo čísel stran.
  • Název dokumentu jako název karty Určí, zda je název karty odvozen z popisných dat namísto z názvu souboru.
  • Nynější strana v názvu okna Je-li povoleno, jsou nynější strana a počet stran dokumentu v činné kartě zobrazeny v názvu okna.
  • Název instance v názvu okna Je-li povoleno a má-li nynější instance přidělen název, její název je zobrazen v okně.
  • Zvýraznit nynější náhled Je-li povoleno, bude nynější strana zvýrazněna v pohledu na náhledy
  • Omezit náhledy na výsledky Je-li povolena tato volba a je prováděno hledání, budou v pohledu na náhledy zobrazeny jen ty strany, kde byl hledaný pojem nalezen.

Nastavení klávesových zkratek

Nastavení zkratek umožňuje přizpůsobení klávesových zkratek podle osobních voleb. Zkratky jsou měněny dvojitým klepnutím na zkratku pro její upravení a zadáním nové zkratky. Každá činnost může mít několik zkratek pomocí seznamu, v němž jsou jednotlivé zkratky odděleny středníkem. Názvy kláves, jež nejsou jednopísmenné, jsou uvedeny výslovně (např. "Alt", "Ctrl", "PgDown"), přičemž se nerozlišují velká a malá písmena. Pokud zkratka obsahuje modifikátorové klávesy, názvy kláves jsou spojeny znaménkem plus a modifikátorové klávesy se musí uvést jako první, např. "Ctrl+A" nebo "Ctrl++".

Nastavení modifikátorů

  • Zvětšení Klávesy modifikátorů pro zvětšování pomocí kolečka myši v hlavním pohledu.
  • Otáčení Klávesy modifikátorů pro otáčení pomocí kolečka myši v hlavním pohledu.
  • Posunování Klávesy modifikátorů pro posunování pomocí kolečka myši v hlavním pohledu.
  • Kopírovat do schránky Klávesy modifikátorů pro kopírování textů nebo obrázků ze strany do schránky.
  • Přidat poznámku Klávesy modifikátorů pro přidání poznámek ke straně.
  • Přiblížit výběr Klávesové modifikátory pro přiblížení výběru na straně.
qpdfview-0.4.18/help/help_da.html0000644000000000000000000006147113516127411015003 0ustar 00000000000000 Hjælp

Hjælp

Indholdsfortegnelse

  1. Hovedmenu
    1. Fil
    2. Rediger
    3. Vis
    4. Faneblade
    5. Bogmærker
    6. Hjælp
  2. Hovedvisning
  3. Auxiliary views
  4. Indstillinger
    1. Opførselsindstillinger
    2. Grafikindstillinger
    3. Grænsefladeindstillinger
    4. Genvejsindstillinger
    5. Modifier settings

Introduktion

qpdfview is a tabbed document viewer. It uses Poppler for PDF support, libspectre for PS support, DjVuLibre for DjVu support, CUPS for printing support and the Qt toolkit for its interface.

Please refer to the manual page for information on command-line options and configuration files.

Hovedmenu

Fil

  • Open... Opens a dialog to choose a file to open in the current tab. If there is no tab, the file is opened in a new tab.
  • Open in new tab... Opens a dialog to choose files to open in new tabs.
  • Recently used Contains a list of the most recently used files (if enabled in the settings).
  • Refresh Reloads the file displayed in the current tab.
  • Save Saves changes to annotations and form fields to the file displayed in the current tab.
  • Save as... Opens a dialog to save the file displayed in the current tab including changes to annotations and form fields.
  • Save copy... Opens a dialog to save an umodified copy of the file displayed in the current tab.
  • Print... Opens a dialog to print the file displayed in the current tab.
  • Afslut Luk alle faneblade of afslut programmet.

Rediger

  • Next/Previous/First/Last page Skips to the next/previous/first/last page of the document.
  • Jump to page... Opens a dialog to enter a page to display in the current tab.
  • Jump backward/forward Jumps backward/forward in the history of displayed page.
  • Search... Opens the search dock below the main view. The search automatically starts two seconds after the last change of the search term or is manually started by pressing the return key. If the Shift modifier is held when the return key is pressed, the search starts in all tabs instead of just the current tab. (This effect is reversed if the extended search dock is enabled in the settings.)
  • Find previous/next Jumps to the previous/next occurrence of the search term in the document.
  • Cancel search Cancels the currently running search and closes the search dock.
  • Copy to clipboard If checked, the program will wait for a frame to be dragged to copy texts or images.
  • Add annotation If checked, the program will wait for a frame to be dragged to add annotations.
  • Settings... Opens the settings dialog. The button labeled 'Defaults' will revert all settings on all tabs to their default values. The button labeled 'Defaults on current tab' will revert only the settings on the current tab to their default values.

The current page can be changed by entering the desired page into the text field in the edit tool bar, which can be focused using Ctrl+K, and pressing the return key.

View

  • Continuous Determines whether all rows of the page layout are visible at once.
  • Two pages Determines whether the page layout uses two columns.
  • Two pages with cover page Determines whether the page layout uses two columns with a break after the cover page.
  • Multiple pages Determines whether the page layout uses multiple columns. The number of columns can be changed in the settings dialog.
  • Right to left Determines how pages are arranged in layouts with multiple pages per row.
  • Zoom in Increases the scale factor by 10 percent. The maximum scale factor is 5000 percent.
  • Zoom out Decreases the scale factor by 10 percent. The minimum scale factor is 10 percent.
  • Original size Resets the scale factor to 100 percent.
  • Fit to page width Determines the scale factor such that all pages fully fit into the main view horizontally.
  • Fit to page size Determines the scale factor such that all pages fully fit into the main view horizontally and vertically.
  • Rotate left Rotates the pages left/counterclockwise by 90 degrees.
  • Rotate right Rotates the pages right/clockwise by 90 degrees.
  • Invert colors Determines whether pages are rendered with inverted colors.
  • Convert to grayscale Determines whether pages are converted to grayscale after rendering.
  • Trim margins Enables the removal of empty page margins after rendering.
  • Composition Enables the composition of the rendered page with the paper color to adjust the background of scanned documents.
  • Tool bars This menu contains a list of available tool bars for accessing frequently used actions.
  • Docks This menu contains a list of available docks for displaying supplementary information.
  • Fonts... Opens a dialog listing the fonts used in the document.
  • Fullscreen Toggles the fullscreen mode, i.e. the window is shown maximized and without decoration.
  • Presentation... Enters presentation mode which can be left by pressing F12 or escape. The home/end key is used to display the first/last page. Arrow keys right and down, space and the page down key jump to the next page. Arrow keys left and up, backspace and the page up key jump to the previous page. Pressing control and return jumps back to the page before the last jump.

The scale factor can be changed by entering the desired percentage into the text field in the view tool bar, which can be focused using Ctrl+L, and pressing the return key.

Tabs

  • Previous/Next tab Makes the previous/next tab the current tab. Cycles to the last/first tab if the first/last tab is the current tab.
  • Close tab Closes the current tab.
  • Close all tabs Closes all tabs.
  • Close all tabs but current tab Closes all tabs except for the current tab.
  • Recently closed Contains a list of the most recently closed tabs (if enabled in the settings).

This menu contains a list of all tabs which can be made the current tab by clicking on the corresponding menu item. Tabs can also be closed by middle-clicking. The first nine tabs can also be activated by holding the Alt modifier and pressing keys one to nine.

Bookmarks

  • Previous bookmark Jumps to the closest bookmark before the current page.
  • Next bookmark Jumps to the closest bookmark after the current page.
  • Add bookmark Adds a bookmark for the current file and page.
  • Remove bookmark Removes the bookmark for the current file and page.
  • Remove all bookmarks Removes all bookmarks.
  • Open Opens the corresponding file in the current tab. If there is no tab, the file is opened in a new tab.
  • Open in new tab Opens the corresponding file in a new tab.
  • Jump to page Jumps to the corresponding page if the corresponding file is already open. Otherwise the corresponding file is opened in a new tab.

Help

  • Contents Displays this document.
  • About Displays the program version.

Main view

The backspace/space key skips to the previous/next page. The home/end key skips to the first/last page. The arrow, page up and page down keys scroll the viewport. Pressing control and return jumps to the page before the last jump.

Using the mouse wheel scrolls up and down. Holding ALT while using the mouse wheel scrolls left and right. Holding CTRL while using the mouse wheel scales the document. Holding SHIFT while using the mouse wheel rotates the document. (Keyboard modifiers can be changed in the settings dialog.) Click and hold the middle mouse button to select a rectangle to zoom to.

Links are highlighted by red frames (if enabled in the settings). Left-click on a link to show the linked page or open the linked URL in the default browser (if enabled in the settings). Middle-click on a link to show the linked page in a new tab. Hovering over a link displays its destination as a tool tip.

Form fields are highlighted by blue frames (if enabled in the settings). Left-click on a form field to edit its contents. Hovering over a form field displays its name as a tool tip.

The source of a position in the document can be opened in the source editor using the context menu which optionally contains an item for the first matching SyncTeX node.

To copy texts or images, hold SHIFT, click and hold the left mouse button to drag a frame around the area to copy. Once the mouse button is released, a pop-up menu is displayed to select whether to copy texts or images into the clipboard.

To add annotations, hold CTRL, click and hold the left mouse button to drag a frame around the region to annotate. Once the mouse button is released, a pop-up menu is displayed to select whether to add text or highlight annotations. Left-click to edit annotations. Right-click to remove annotations. (Adding and removing annotations requires version 0.20.1 or higher of the Poppler library.) Hovering over an annotation displays its contents as a tool tip.

To zoom to a selection, hold SHIFT and CTRL, click and hold the left mouse button to drag a frame around region to zoom into.

The visibility of the tool and menu bars can be toggled using configurable keyboard shortcuts whose default values are "Shift+Alt+T" and "Shift+Alt+M".

Auxiliary views

The outline view displays an overview of the contents of the document. A left click on an entry jumps to the respective page in the main view. The context menu can be used to expand/collapse all items below the selected item.

The outline view can also be navigated using the keyboard and the mouse wheel. Holding Shift and using the Up/Down keys will scroll the view. Holding Shift and using the Left/Right keys will collapse/expand one level of items below the selected item. Holding Control and using the Left/Right keys will completely collapse/expand the selected item and its children. Holding Shift and using the mousel wheel will change the selected item. Holding Control and using the mouse wheel will expand/collapse the selected item.

The properties view displays additional information contained in the document.

The thumbnails view displays smaller versions of the pages of the document. A left click on an entry jumps to the respective page in the main view.

The bookmarks view shows the bookmarks related to the document displayed in the current tab. The context menu contains entries to jump to the previous/next boookmark or to add bookmarks. The context menu of each entry also contains entries to edit and delete bookmarks.

If enabled in the settings, the extended search dock shows an overview containing the results of all searches being performed in all tabs. It also shows the text surrounding a result with the search term being emphasized. Clicking on a result opens the corresponding tab and jumps to its position.

Settings

Behavior settings

  • Open URL Determines whether links to URL are opened in the default browser.
  • Auto-refresh Determines whether files are automatically reloaded if changed on disk.
  • Track recently used If enabled, a recently used menu is available and lists as many recently used files as set in the "Recently used count" option. (Effective after restart.)
  • Keep recently closed If enabled, a recently closed menu is available and lists as many recently closed tabs as set in the "Recently closed count" option. Keeping the tabs available could increase memory usage considerably. (Effective after restart.)
  • Restore tabs If enabled, tabs and their properties are saved on ending the program and restored on restart.
  • Restore bookmarks If enabled, bookmarks are saved on ending the program and restored on restart.
  • Restore per-file settings If enabled, per-file settings are saved/restored on opening/closing tabs.
  • Save database interval The interval after which tabs, bookmarks or per-file settings are saved to the database.
  • Synchronize presentation If enabled, the main view can be used to control the presentation view.
  • Presentation screen The index of the screen to display the presentation view on.
  • Synchronize outline view If enabled, the outline view will highlight the first entry pointing to the current page whenever the current page changes.
  • Minimal scrolling If enabled, the view port will only be scrolled if the target position is not yet visible.
  • Zoom factor The number by which the scale factor is multiplied resp. divided upon zooming in resp. out.
  • Highlight color Determines the color of highlights.
  • Highlight duration Determines the duration of temporary highlights.
  • Annotation color The color of annotations added by the program using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Source editor The program which is started to edit sources. '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number.

Graphics settings

  • Use tiling Pages will be divided into tiles before rendering and caching to reduce memory usage.
  • Keep obsolete pixmaps If enabled, then upon change of the zoom factor, cached pixmaps will be used to draw approximations of final pixmaps until these are available at the cost of increased memory usage.
  • Use device pixel ratio If enabled, the highest available device pixel ratio is used to render at physical and display at logical resolution.
  • Decorate pages Determines whether pages are set apart from the background.
  • Decorate links Determines whether links are highlighted by red frames.
  • Decorate form fields Determines whether form fields are highlighted by blue frames.
  • Background color Determines the color of the background using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Paper color Determines the color of pages using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Presentation background color Overrides the paper color in the computation of the background color of the presentation view and is defined using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Pages per row Number of pages per row in the 'multiple pages' layout mode.
  • Page spacing Determines both vertical and horizontal space displayed between pages.
  • Thumbnail spacing Determines both vertical and horizontal space displayed between thumbnails.
  • Thumbnail size Determines the size of the thumbnails.
  • Cache size The program will try to cache rendered pages within this limit increasing rendering speed at the cost of increased memory usage.
  • Prefetch The program will try to render pages that are not yet visible increasing rendering speed at the cost of increased cache usage.
  • Prefetch distance The number of rows beyond the current row and twice the number of rows before the current row that are prefetched.
  • PDF settings
    • Antialiasing Improves display quality at the cost of performance
    • Text antialiasing Improves text display quality at the cost of performance
    • Text hinting May improve text display quality for certain fonts.
    • Overprint preview If enabled, a preview of printing one layer of ink on top of another is displayed.
    • Thin line mode Chooses the optimization used to draw thin lines.
    • Backend Chooses the backend used to render pages.
  • PS settings
    • Graphics antialias bits Determines the amount of antialiasing for graphics.
    • Text antialias bits Determines the amount of antialiasing for text.

Interface settings

  • Extended search dock If enabled, the default search dock is extended by an overview showing the results of all tabs. (Effective after restart.)
  • Annotation overlay If enabled, all annotations on a page will be displayed as an interactive overlay. Otherwise each annotation will be handled as a separate pop-up window.
  • Form field overlay If enabled, all form fields on a page will be displayed as an interactive overlay. Otherwise each form field will be handled as a separate pop-up window.
  • Tab position Defines at which edge of the main view tabs will be displayed.
  • Tab visibility Determines whether tabs will be displayed if less than two documents are opened.
  • Spread tabs Determines if tabs will be spread out evenly over the whole tab bar.
  • New tab next to current tab If enabled, new tabs are opened to the right of the active tab.
  • Exit after last tab If enabled, the application exits after the last tab is closed.
  • Recently used count Sets the number of files that are listed in the recently used menu, if "Track recently used" is enabled. (Effective after restart.)
  • Recently closed count Sets the number of tabs that are listed in the recently closed menu, if "Keep recently closed" is enabled. (Effective after restart.)
  • File tool bar Defines which actions are visible in the file tool bar. Available actions are openInNewTab, open, refresh, saveCopy, saveAs, print and separator. (Effective after restart.)
  • Edit tool bar Defines which actions are visible in the edit tool bar. Available actions are currentPage, previousPage, nextPage, firstPage, lastPage, jumpToPage, jumpBackward, jumpForward, search, copyToClipboardMode, addAnnotationMode and separator. (Effective after restart.)
  • View tool bar Defines which actions are visible in the view tool bar. Available actions are scaleFactor, zoomIn, zoomOut, continuousMode, twoPagesMode, twoPagesWithCoverPageMode, multiplePagesMode, originalSize, fitToPageWidthMode, fitToPageSizeMode, rotateLeft, rotateRight, fullscreen, presentation and separator. (Effective after restart.)
  • Document context menu Defines which actions are visible in the document's context menu. Available actions are openCopyInNewTab, openCopyInNewWindow, openContainingFolder, moveToInstance, previousPage, nextPage, firstPage, lastPage, jumpToPage, jumpBackward, jumpForward, setFirstPage, findPrevious, findNext, cancelSearch and separator.
  • Tab context menu Defines which actions are visible in a tab's context menu. Available actions are openCopyInNewTab, openCopyInNewWindow, openContainingFolder, moveToInstance, copyFilePath, selectFilePath, closeAllTabs, closeAllTabsButThisOne, closeAllTabsToTheLeft, closeAllTabsToTheRight and separator.
  • Scrollable menus Will override the default style so that pop-up menus scroll instead being laid-out in mutliple columns if they are larger than the available screen space. (Effective after restart.)
  • Searchable menus Extends the default keyboard navigation of the tabs and bookmarks menus by a search-as-you-type mechanism.
  • Toggle tool and menu bars with fullscreen Always toggles the visibility of the tool and menu bars when toggling fullscreen mode.
  • Use page label Determines if document-supplied page label will be used instead of page numbers when available.
  • Document title as tab title Determines if the tab title as derived from the meta-data instead of the file name.
  • Current page in window title If enabled, the current page and number of pages of the document in the active tab are displayed in the window title.
  • Instance name in window title If enabled and the current instance is named, its name is displayed in the window title.
  • Highlight current thumbnail If enabled, the current page is highlighted in the thumbnails view.
  • Limit thumbnails to results If this option is enabled and a search is conducted, only the pages where the search term is found are displayed in the thumbnails view.

Shortcut settings

The shortcut settings allows the adjustment of keyboard shortcuts to personal preference. Shortcuts are changed by double-clicking on the shortcut to edit it and entering the new shortcut. Each action can have several shortcuts by entering a semicolon-separated list of them. Names of keys that are not single letters are written out explicitly (e.g. "Alt", "Ctrl", "PgDown"), where the matching is not case sensitive. If the shortcut contains modifier keys, the names of the keys are joined by a plus sign and modifier keys must be listed first, e.g. "Ctrl+A" or "Ctrl++".

Modifier settings

  • Zoom The keyboard modifiers to zoom using the mouse wheel in the main view.
  • Rotate The keyboard modifiers to rotate using the mouse wheel in the main view.
  • Scroll The keyboard modifiers to scroll horizontally using the mouse wheel in the main view.
  • Copy to clipboard The keyboard modifiers to copy texts or images from a page to the clipboard.
  • Add annotation The keyboard modifiers to add annotations to a page.
  • Zoom to selection The keyboard modifiers to zoom to a slection on a page.
qpdfview-0.4.18/help/help_de.html0000644000000000000000000007302113516127411015001 0ustar 00000000000000 Hilfe

Hilfe

Inhaltsverzeichnis

  1. Hauptmenü
    1. Datei
    2. Bearbeiten
    3. Ansicht
    4. Reiter
    5. Lesezeichen
    6. Hilfe
  2. Hauptansicht
  3. Hilfsansichten
  4. Einstellungen
    1. Verhalten
    2. Grafik
    3. Oberfläche
    4. Tastenkürzel
    5. Modifikatoren

Einleitung

qpdfview ist ein Programm zum Anzeigen von Dokumenten mit Reitern. Es verwendet Poppler für PDF-Unterstützung, libspectre für PS-Unterstützung, DjVuLibre für DjVu-Unterstützung, CUPS zum Drucken und den Qt-Werkzeugsatz für die Benutzeroberfläche.

Informationen über Kommandozeilenoptionen und Konfigurationsdateien sind in der Kommandozeilenanleitung zu finden.

Hauptmenü

Datei

  • Öffnen... Öffnet einen Auswahldialog zum Öffnen einer Datei im aktuellen Reiter. Falls kein Reiter vorhanden ist, wird die Datei in einem neuen Reiter geöffnet.
  • In neuem Reiter öffnen... Öffnet einen Auswahldialog zum Öffnen von Dateien in neuen Reitern.
  • Zuletzt verwendet Enthält eine Liste der zuletzt verwendeten Dateien (falls dies in den Einstellungen eingeschaltet ist).
  • Aktualisieren Lädt die Datei neu, die im aktuellen Reiter angezeigt wird.
  • Save Saves changes to annotations and form fields to the file displayed in the current tab.
  • Speichern unter... Öffnet einen Auswahldialog zum Speichern einer Kopie der im aktuellen Reiter angezeigten Datei mit allen Änderungen an Anmerkungen und Formularfeldern.
  • Save copy... Opens a dialog to save an umodified copy of the file displayed in the current tab.
  • Drucken... Öffnet einen Druckdialog für die im aktuellen Reiter angezeigte Datei.
  • Beenden Schließt alle Reiter und beendet das Programm.

Bearbeiten

  • Vorige/Nächste/Erste/Letzte Seite Springt zur vorigen/nächsten/ersten/letzten Seite des Dokuments.
  • Zu Seite springen... Öffnet einen Dialog zur Eingabe einer Seite zur Anzeige im aktuellen Reiter.
  • Springe rückwärts/vorwärts Springt rückwärts/vorwärts in der Chronik der angezeigten Seiten.
  • Suchen... Öffnet die Suchansicht unter der Hauptansicht. Die Suche beginnt automatisch zwei Sekunden nach der letzten Änderung des Suchbegriffs oder wird manuell mit der Eingabetaste gestartet. Falls die Umschalttaste gehalten wird, während die Eingabetaste gedrückt wird, startet die Suche in allen Reitern anstatt nur dem aktuellen Reiter. (Dieser Effekt wird umgekehrt falls die erweiterte Suchansicht verwendet wird.)
  • Rückwärts/Vorwärts suchen Springt zur vorigen/nächsten Fundstelle des Suchbegriffs im Dokument.
  • Suche abbrechen Bricht die aktuelle laufende Suche ab und schließt die Suchansicht.
  • In Zwischenablage kopieren Wenn aktiviert, wird das Programm darauf warten, dass zum Kopieren ein Rahmen um Text oder Bilder gezogen wird.
  • Anmerkung hinzufügen Wenn aktiviert, wird das Programm darauf warten, dass ein Rahmen gezogen wird um Anmerkungen hinzuzufügen.
  • Einstellungen... Öffnet den Einstellungsdialog. Die Schaltflächen mit der Aufschrift 'Vorgaben' setzt alle Einstellungen in allen Reitern des Einstellungsdialogs auf ihre Vorgabewerte. Die Schaltfläche 'Vorgaben auf aktuellem Reiter' setzt nur die Einstellungen im aktuellen Reiter des Einstellungsdialogs auf ihre Vorgabewerte.

Die aktuelle Seite kann geändert werden, indem die Zielseite in das Textfeld in der Bearbeiten-Werkzeugleiste eingegeben wird. Das Textfeld kann durch Druck von Strg+K und Bestätigung mit der Eingabetaste fokussiert werden.

Ansicht

  • Fortlaufend Legt fest, ob die Seiten fortlaufend in Reihen übereinander angezeigt werden.
  • Zweiseitig Legt fest, ob die Seitenanzeige zweispaltig ist.
  • Zweiseitig mit Titelseite Legt fest, ob die Seitenanzeige zweispaltig ist und die Titelseite einzeln anzeigt.
  • Mehrere Seiten Legt fest, ob die Seitenanzeige mehrspaltig ist. Die Anzahl der Spalten für diese Anzeigeart kann im Einstellungsdialog geändert werden.
  • Rechts nach links Bestimmt wie die Seiten in Darstellungen mit mehreren Seiten pro Reihe angeordnet werden.
  • Vergrößern Vergrößert den Skalenfaktor um 10 Prozent. Der Maximalwert beträgt 5000 Prozent.
  • Verkleinern Verkleinert den Skalenfaktor um 10 Prozent. Der Minimalwert beträgt 10 Prozent.
  • Ursprüngliche Größe Setzt den Skalenfaktor auf 100 Prozent zurück.
  • An Seitenbreite anpassen Bestimmt den Skalenfaktor so dass eine Zeile von Seiten die Hauptansicht horizontal ausfüllt.
  • An Seitengröße anpassen Bestimmt den Skalenfaktor so dass eine Zeile von Seiten vollständig in der Hauptansicht angezeigt wird.
  • Nach links drehen Dreht alle Seiten nach links gegen den Uhrzeigersinn um 90 Grad.
  • Nach rechts drehen Dreht alle Seiten nach rechts im Uhrzeigersinn um 90 Grad.
  • Farben umkehren Legt fest, ob Seiten mit umgekehrten Farben dargestellt werden.
  • In Graustufen umwandeln Legt fest, ob Seiten vor der Darstellung in Graustufen umgewandelt werden.
  • Ränder abschneiden Aktiviert das automatische Entfernen leerer Seitenränder.
  • Farbanpassung Aktiviert das Mischen der Seitendarstellung mit der Papierfarbe um beispielsweise den Hintergrund eingescannter Dokumente anzupassen.
  • Werkzeugleisten Dieses Menü enthält eine Liste verfügbarer Werkzeugleisten zum Zugriff auf häufig genutzte Aktionen.
  • Paletten Dieses Menü enthält eine Liste verfügbarer Paletten zur Anzeige von Zusatzinformationen.
  • Schriften... Öffnet einen Dialog, der die im Dokument verwendeten Schriftarten auflistet.
  • Vollbild Schaltet die Vollbildanzeige ein, in der das Fenster maximiert und ohne Fensterdekorationen angezeigt wird.
  • Präsentation... Schaltet in den Präsentationsmodus, der durch Drücken von F12 oder Escape verlassen werden kann. Die Pos1/Ende-Tasten werden verwendet um die erste/letzte Seite zu zeigen. Die Pfeiltasten rechts und unten, die Leertaste und die Bild-ab-Taste springen zur nächsten Seite. Die Pfeiltasten links und oben, die Rücktaste und die Bild-auf-Taste springen zur vorigen Seite. Drücken von Strg und Eingabetaste springt zur Seite vor dem letzten Sprung.

Der Skalenfaktor kann geändert werden, indem die gewünschte Prozentzahl in das Textfeld in der Ansicht-Werkzeugleiste eingetragen wird. Das Textfeld kann durch Druck von Strg+L und Bestätigung mit der Eingabetaste fokussiert werden.

Reiter

  • Voriger/Nächster Reiter Hebt den vorigen/nächsten Reiter in der Leiste hervor. Springt zum letzten/ersten Reiter, wenn der erste/letzte Reiter aktuell hervorgehoben ist.
  • Reiter schließen Schließt den hervorgehobenen Reiter.
  • Alle Reiter schließen Schließt alle Reiter.
  • Alle Reiter bis auf den Aktuellen schließen Schließt alle bis auf den aktuell hervorgehobenen Reiter.
  • Zuletzt geschlossen Enthält eine Liste der zuletzt geschlossenen Reiter (falls dies in den Einstellungen eingeschaltet ist).

Dieses Menü enthält eine Liste aller Reiter, die durch ein Klick auf den entsprechenden Menüeintrag hervorgehoben werden können. Reiter können auch durch einen Mittelklick geschlossen werden. Die ersten neun Reiter können auch durch Halten der Alt-Taste und Druck auf die entsprechende Zahltaste hervorgehoben werden.

Lesezeichen

  • Voriges Lesezeichen Springt zum nächsten Lesezeichen vor der aktuellen Seite.
  • Nächstes Lesezeichen Springt zum nächsten Lesezeichen nach der aktuellen Seite.
  • Lesezeichen hinzufügen Fügt ein Lesezeichen für die aktuelle Datei und Seite hinzu.
  • Lesezeichen entfernen Entfernt das Lesezeichen für die aktuelle Datei und Seite.
  • Alle Lesezeichen entfernen Entfernt alle Lesezeichen für alle Dateien.
  • Öffnen Öffnet die entsprechende Datei im aktuellen Reiter. Falls es keinen Reiter gibt, wird die Datei in einem neuen Reiter geöffnet.
  • In neuem Reiter öffnen Öffnet die entsprechende Datei in einem neuen Reiter.
  • Gehe zu Seite Springt zur entsprechenden Seite, falls die entsprechende Datei bereits geöffnet ist. Andernfalls wird die entsprechende Datei in einem neuen Reiter geöffnet.

Hilfe

  • Inhalt Zeigt dieses Dokument an.
  • Über Zeigt die Programmversion an.

Hauptansicht

Die Rücktaste/Leertaste springt zur vorigen/nächsten Seite. Die Pos1/Ende-Taste springt zur ersten/letzten Seite. Die Pfeil-, Bild-auf- und Bild-ab-Tasten bewegen den Sichtbereich. Steuerung und Eingabetaste springt zur Seite vor dem letzten Sprung.

Das Mausrad rollt den Sichtbereich auf und ab. Halten von ALT während der Verwendung des Mausrads rollt den Sichtbereich nach links und rechts. Halten von STRG während der Verwendung des Mausrads skaliert das Dokument. Halten von UMSCHALT während der Verwendung des Mausrads rotiert das Dokument. (Modifikator-Tasten können in den Einstellungen geändert werden. Kilcken und halten der mittleren Maustaste wählt ein zu vergrößerndes Rechteck aus.

Links werden rot umrandet (falls dies in den Einstellungen eingeschaltet ist). Ein Linksklick auf einen Link zeigt die verlinkte Seite oder öffnet die verlinkte URL im Standard-Browser (falls dies in den Einstellungen eingeschaltet ist). Ein Mittelklick auf einen Link zeigt die verlinkte Seite in einem neuen Reiter. Wird der Mauszeiger ohne Tastendruck auf einem Link platziert, wird das Linkziel als Tooltip angezeigt.

Formularfelder werden blau umrandet (falls dies in den Einstellungen eingeschaltet ist). Ein Linksklick auf ein Formularfeld ermöglicht die Bearbeitung. Wird der Mauszeiger ohne Tastendruck auf einem Formularfeld platziert, wird dessen Name als Tooltip angezeigt.

The source of a position in the document can be opened in the source editor using the context menu which optionally contains an item for the first matching SyncTeX node.

In Zwischenablage kopieren: Bei gedrückter SHIFT-Taste mit der linken Maustaste klicken, halten und einen Rahmen um die zu kopierende Fläche ziehen. Sobald die Maustaste losgelassen wird, wird ein Menü angezeigt, um auszuwählen, ob Text oder Bilder in die Zwischenablage kopiert werden.

Anmerkungen hinzufügen: Bei gedrückter STRG-Taste mit der linken Maustaste klicken, halten und einen Rahmen um die zu nutzende Fläche ziehen. Sobald die Maustaste losgelassen wird, wird ein Menü angezeigt, um auszuwählen, ob Texte oder Hervorhebungen hinzugefügt werden sollen. Mittels Linksklick werden vorhandene Anmerkungen bearbeitet. Mittels Rechtsklick werden vorhandene Anmerkungen entfernt. (Das Hinzufügen und Entfernen von Anmerkungen setzt Version 0.20.1 oder höher der Poppler-Bibliothek voraus.) Wird der Mauszeiger ohne Tastendruck auf einer Anmerkung platziert, wird deren Inhalt als Tooltip angezeigt.

Auswahl vergrößern: Die Tasten SHIFT and STRG gedrückt halten und einen Rahmen um den zu vergrößernden Bereich ziehen.

Die Sichtbarkeit der Werkzeug- und Menüleisten kann mittels einstellbarer Tastaturkürzel mit den Standardwerten "Umschalt+Alt+T" und "Umschalt+Alt+M" umgeschalten werden.

Hilfsansichten

Die Gliederungs-Ansicht stelle eine Übersicht des Dokumenteninhalts dar. Durch einen Linksclick auf einen Eintrag springt die Hauptansicht zur entsprechenden Seite. Mit Hilfe des Kontextmenüs könnte alle Einträge unterhalb des gewählten Eintrags expandiert/kollabiert werden.

Die Gliederungs-Ansicht kann ebenfalls mittels der Tastatur und dem Mausrad bedient werden. Wird Umschalt gehalten, so verschieben die Hoch/Runter-Tasten die Ansicht. Wird Umschalt gehalten, so klappen die Links/Rechts-Tasten eine Ebene unter dem ausgewählten Element zu/auf. Wird Steuerung gehalten, so klappen die Links/Rechts-Tasten alle Ebenen unter dem ausgewählten Elements zu/auf. Wird Umschalt gehalten, so ändert das Mausrad das ausgewählte Element. Wird Steuerung gehalten, so klappt das Mausrad das ausgewählte Element auf/zu.

Die Eigenschaften-Ansicht zeigt zusätzliche im Dokument enthaltene Informationen an.

Die Vorschaubilder-Ansicht zeigt kleinere Ansichten der Seiten des Dokumentes. Durch einen Linksclick auf einen Eintrag springt die Hauptansicht zur entsprechenden Seite.

The Lesezeichen-Ansicht zeigt die zum im aktuellen Reiter dargestellten Dokument gehörenden Lesezeichen. Das Kontextmenü erlaubt es zum vorigen/nächsten Lesezeichen zu springen oder Lesezeichen hinzuzufügen. Das Kontextmenü jedes Eintrags erlaubt es außerdem den Eintrag zu bearbeiten und zu löschen.

Falls sie in den Einstellungen aktiviert wurde, stellt die erweiterte Suchansicht eine Übersicht der Ergebnisse der in den Reitern durchgeführten Suchvorgänge dar. Sie stellt außerdem den die Suchergebnisse umgebenden Text dar, wobei der Suchbegriff hervorgehoben wird. Durch Mausklick auf einen Eintrag wechselt die Hauptansicht zum zugehörigen Reiter und springt zur entsprechenden Position.

Einstellungen

Einstellungen zum Verhalten

  • URL öffnen Legt fest, ob Links auf URLs bei Anklicken im Standard-Browser geöffnet werden sollen.
  • Automatische Aktualisierung Legt fest, ob Dateien automatisch neu geladen werden, nachdem sie auf der Festplatte verändert wurden.
  • Verwendete Dateien merken Aktiviert ein Menü welches eine Liste der zuletzt verwendeten Dateien enthält, deren Anzahl durch die Option "Anzahl verwendeter Dateien" bestimmt wird. (Erst nach Neustart wirksam.)
  • Geschlossene Reiter aufheben Aktiviert ein Menü welches eine Liste der zuletzt geschlossenen Reiter enthält, deren Anzahl durch die Option "Anzahl geschlossener Reiter" bestimmt wird. Die Reiter verfügbar zu halten kann den Speicherverbrauch signifikant erhöhen. (Erst nach Neustart wirksam.)
  • Reiter wiederherstellen Falls eingeschaltet werden Reiter und ihre Eigenschaften beim Beenden des Programms gespeichert und beim nächsten Starten wiederhergestellt.
  • Lesezeichen wiederherstellen Falls eingeschaltet werden Lesezeichen beim Beenden des Programms gespeichert und beim nächsten Starten wiederhergestellt.
  • Dateieinstellungen wiederherstellen Falls eingeschaltet werden Einstellungen für einzelne Dateien beim Schließen/Öffnen von Reitern gespeichert/geladen.
  • Speicherintervall Das Zeitintervall nach dem Reiter, Lesezeichen und Dateieinstellungen in der Datenbank gespeichert werden.
  • Präsentation synchronisieren Falls eingeschaltet kann die Hauptansicht verwendet werden um die Präsentationsansicht zu steuern.
  • Präsentationsbildschirm Der Index des Bildschirms, der die Präsentationsansicht zeigen soll.
  • Gliederung synchronisieren Falls eingeschaltet, wird in der Gliederungsansicht der erste Eintrag zur aktuellen Seite hervorgehoben, wenn die aktuelle Seite wechselt.
  • Minimaler Bildlauf Falls aktiviert, wird die Ansicht nur dann wenn verschoben, wenn das Ziel eines Sprungs nicht bereits sichtbar ist.
  • Vergrößerungsfaktor Der Skalierungsfaktor wird beim Vergrößern mit dieser Zahl multipliziert und beim Verkleinern durch diese Zahl dividiert.
  • Farbe der Hervorhebungen Legt die Farbe von Hervorhebungen fest.
  • Dauer der Hervorhebungen Legt die Dauer von vorübergehenden Hervorhebungen fest.
  • Farbe für Anmerkungen Die Farbe von Anmerkungen die mit diesem Programm hinzugefügt werden, beschrieben durch SVG-Farbnamen oder in hexadezimaler Notation '#rrggbb'.
  • Quelltexteditor Das Programm, das gestartet wird um Quelltexte zu bearbeiten. '%1' wird durch den absoluten Dateipfad und '%2' bzw. '%3' durch Zeilen- bzw. Spaltennummer ersetzt.

Einstellungen zur Grafik

  • Kachelung verwenden Die Seiten werden vor Darstellung und Zwischenspeicherung in Kacheln unterteilt, um den Speicherverbrauch zu reduzieren.
  • Veraltete Grafiken aufheben Falls eingeschaltet, werden bei Veränderung der Vergrößerung (auf Kosten zusätzlichen Arbeitsspeicherverbrauchs) bereits erstellte Grafiken der alten Auflösung verwendet, um Näherungen der endgültigen Grafiken darzustellen, bis diese verfügbar sind.
  • .
  • Seiten verzieren Legt fest, ob Seiten vom Hintergrund abgesetzt dargestellt werden.
  • Verweise verzieren Legt fest, ob Verweise ("Links") durch rote Rahmen hervorgehoben werden.
  • Formularfelder verzieren Legt fest, ob Formularfelder durch blaue Rahmen hervorgehoben werden.
  • Hintergrundfarbe Legt die Farbe des Hintergrundes mittels SVG-Farbnamen oder hexadezimaler Notation '#rrggbb' fest.
  • Papierfarbe Legt die Farbe der Seiten mittels SVG-Farbnamen oder hexadezimaler Notation '#rrggbb' fest.
  • Präsentationshintergrundfarbe Überschreibt die Papierfarbe bei der Darstellung der Hintergrundfarbe der Präsentationsansicht und wird mittels SVG-Farbnamen oder hexadezimaler Notation '#rrggbb' definiert.
  • Seiten pro Zeile Anzahl der Seiten pro Zeile in der 'Mehrere Seiten'-Ansicht.
  • Abstand der Seiten Legt sowohl vertikalen als auch horizontalen Abstand zwischen Seiten fest.
  • Abstand der Vorschaubilder Legt sowohl vertikalen als auch horizontalen Abstand zwischen Vorschaubildern fest.
  • Größe der Vorschaubilder Legt die Größe der Vorschaubilder fest.
  • Größe des Zwischenspeichers Das Programm wird versuchen, gezeichnete Seiten bis zu diesem Speicherverbrauch zwischenzuspeichern, was die Anzeige von Seiten auf Kosten höheren Speicherverbrauchs beschleunigt.
  • Vorausladen Das Programm wird versuchen, Seiten zu zeichnen, die noch nicht angezeigt werden, was die Anzeige von Seiten auf Kosten höheren Zwischenspeicherverbrauchs beschleunigt.
  • Reichweite des Vorausladens Das Vorausladen lädt diese Anzahl an Zeilen über die aktuelle Zeile hinaus und halb so viele Zeilen vor der aktuellen Zeile voraus.
  • PDF-Einstellungen
    • Kantenglättung Verbessert die Anzeigequalität auf Kosten der Geschwindigkeit.
    • Text-Kantenglättung Verbessert die Anzeigequalität von Text auf Kosten der Geschwindigkeit.
    • Text-Hinting Kann die Anzeigequalität von Text für bestimmte Schriftarten verbessern.
    • Überdruckvorschau Falls eingeschaltet, wird eine Vorschau des Überdruckens einer Tintenlage über eine andere angezeigt.
    • Modus für dünne Linien Wählt das Optimierungsverfahren für das Zeichnen dünner Linien aus.
    • Unterbau Wählt den Unterbau zum Zeichnen von Seiten aus.
  • PS-Einstellungen
    • Bits für Grafik-Kantenglättung Legt fest wie stark Kanten in Grafiken geglättet werden.
    • Bits für Text-Kantenglättung Legt fest wie stark Kanten im Text geglättet werden.

Einstellung zur Oberfläche

  • Erweiterte Suchansicht Erweitert die Standardsuchansicht um eine Übersicht der Suchergebnisse aller Reiter. (Nach Neustart wirksam.)
  • Eingebettet dargestellte Anmerkungen Ist diese Option aktiviert, werden alle Anmerkungen einer Seite als interaktive Überlagerung dargestellt. Ansonsten wird jede Anmerkung als separates Fenster behandelt.
  • Eingebettet dargestellte Formularfelder Ist diese Option aktiviert, werden alle Formularfelder einer Seite als interaktive Überlagerung dargestellt. Ansonsten wird jedes Formularfeld als separates Fenster behandelt.
  • Reiterposition Legt fest an welcher Kante der Hauptansicht die Reiter angezeigt werden.
  • Reitersichtbarkeit Legt fest ob Reiter angezeigt werden falls weniger als zwei Dokumente geöffnet sind.
  • Reiter ausbreiten Legt fest ob die Reiter gleichmäßig über den gesamten Reiterbereich ausgebreitet werden.
  • Neuer Reiter neben aktuellem Reiter Falls aktiviert werden neue Reiter rechts neben dem aktuellen Reiter eingefügt.
  • Nach letztem Reiter beenden Bewirkt, dass die Anwendung nach dem Schließen des letzten Reiters beendet wird.
  • Anzahl verwendeter Dateien Legt die Azahl der Dateien fest, die im Menü für zuletzt verwendete Dateien aufgeführt werden, falls "Verwendete Dateien merken" aktiviert ist. (Tritt nach Neustart des Programms in Kraft.)
  • Anzahl geschlossener Reiter Legt die Azahl der Reiter fest, die im Menü für zuletzt geschlossene Reiter aufgeführt werden, falls "Geschlossene Reiter merken" aktiviert ist. (Tritt nach Neustart des Programms in Kraft.)
  • Datei-Werkzeugleiste Legt fest, welche Aktionen in welcher Reihenfolge in der Datei-Werkzeugleiste angezeigt werden. Verfügbare Aktionen sind "openInNewTab" (In neuem Reiter öffnen), "open" (Öffnen), "refresh" (Aktualisieren), "saveCopy" (Kopie speichern), "saveAs" (Speichern unter), "print" (Drucken) und "separator" (Trennelement). (Tritt nach Neustart des Programms in Kraft.)
  • Bearbeiten-Werkzeugleiste Legt fest, welche Aktionen in welcher Reihenfolge in der Bearbeiten-Werkzeugleiste angezeigt werden. Verfügbare Aktionen sind "currentPage" (Aktuelle Seite), "previousPage" (Vorige Seite), "nextPage" (Nächste Seite), "firstPage" (Erste Seite), "lastPage" (Letzte Seite), "jumpToPage" (Springe zu Seite), "jumpBackward" (Springe Rückwärts), "jumpForward" (Springe Vorwärts), "search" (Suche), "copyToClipboardMode" (Kopieren in Zwischenablage), "addAnnotationMode" (Anmerkung hinzufügen) und "separator" (Trennelement). (Tritt nach Neustart des Programms in Kraft.)
  • Ansicht-Werkzeugleiste Legt fest, welche Aktionen in welcher Reihenfolge in der Bearbeiten-Werkzeugleiste angezeigt werden. Verfügbare Aktionen sind "scaleFactor" (Skalenfaktor), "zoomIn" (Vergrößern), "zoomOut" (Verkleinern), "continuousMode" (Fortlaufend), "twoPagesMode" (Zweiseitig), "twoPagesWithCoverPageMode" (Zweiseitig mit Titelseite), "multiplePagesMode" (Mehrere Seiten), "originalSize" (Ursprüngliche Größe), "fitToPageWidthMode" (An Seitenbreite anpassen), "fitToPageSizeMode" (An Seitengröße anpassen), "rotateLeft" (Nach links drehen), "rotateRight" (Nach rechts drehen), "fullscreen" (Vollbild), "presentation" (Präsentation) und "separator" (Trennelement). (Tritt nach Neustart des Programms in Kraft.)
  • Document context menu Defines which actions are visible in the document's context menu. Available actions are openCopyInNewTab, openCopyInNewWindow, openContainingFolder, moveToInstance, previousPage, nextPage, firstPage, lastPage, jumpToPage, jumpBackward, jumpForward, setFirstPage, findPrevious, findNext, cancelSearch and separator.
  • Tab context menu Defines which actions are visible in a tab's context menu. Available actions are openCopyInNewTab, openCopyInNewWindow, openContainingFolder, moveToInstance, copyFilePath, selectFilePath, closeAllTabs, closeAllTabsButThisOne, closeAllTabsToTheLeft, closeAllTabsToTheRight and separator.
  • Laufende Menüs Überschreibt die Vorgabe des Standardstils, so dass Menüs laufen anstatt in mehreren Spalten dargestellt zu werden, falls sie größer sind als die verfügbare Bildschirmfläche. (Nach Neustart wirksam.)
  • Durchsuchbare Menüs Erweitert die übliche Tastaturnavigation der Reiter- und Lesezeichen-Menüs um eine Suchfunktion.
  • Werkzeug- und Menüleisten bei Vollbild umschalten Die Sichtbarkeit von Werkzeug- und Menüleisten wird immer dann umgeschalten wenn der Vollbildmouds umgeschalten wird.
  • Seitenbeschriftung verwenden Legt fest, ob vom Dokument vergebene Seitenbeschriftungen anstatt von Seitenzahlen verwendet werden.
  • Dokumententitel als Reitertitel Legt fest ob der Reitertitel anhand der Metadaten anstatt des Dateinamens ermittelt wird.
  • Aktuelle Seite im Fenstertitel Falls aktiviert wird die aktuelle Seite und die Anzahl der Seiten des aktuellen Dokuments im Fenstertitel angezeigt.
  • Falls aktiviert und die aktuelle Instanz benannt ist wird deren Name im Fenstertitel angezeigt.
  • Aktuelles Vorschaubild hervorheben Falls eingeschaltet, wird die aktuelle Seite in der Vorschauansicht hervorgehoben.
  • Vorschaubilder auf Ergebnisse beschränken Falls diese Einstellung eingeschaltet ist und eine Suche durchgeführt wird, werden nur Seiten, die den Suchbegriff enthalten, in der Vorschauansicht angezeigt.

Einstellungen zu Tastenkürzeln

Die Tastenkürzel-Einstellungen ermöglichen die Anpassung der Tastenkürzel an persönliche Vorlieben. Zum Ändern eines Tastenkürzel wird ein Doppelklick auf das Tastenkürzel ausgeführt und anschließend das neue Tastenkürzel eingegeben. Jeder Aktion können mehrere Tastenkürzel zugeordnet werden, die durch Semikolons getrennt aufgelistet werden. Tastennamen, die nicht aus einem Zeichen bestehen, (z.B. "Alt", "Strg", "Bild aufwärts") werden explizit ausgeschrieben, wobei die Erkennung Groß- und Kleinschreibung nicht unterscheidet. Falls das Tastenkürzel Modifikator-Tasten enthält, werden die Namen der Tasten mit einem Pluszeichen zusammengefügt wobei die Modifikator-Taste zuerst genannt werden muss, z.B. "Strg+A" oder "Strg++".

Einstellungen zu Modifikatoren

  • Skalieren Die Tastaturmodifikatoren, um die Darstellung der Hauptansicht mittels des Mausrads zu skalieren.
  • Rotieren Die Tastaturmodifikatoren, um die Darstellung der Hauptansicht mittels des Mausrads zu rotieren.
  • Bildlauf Die Tastaturmodifikatoren, um die Darstellung der Hauptansicht mittels des Mausrads horizontal zu verschieben.
  • In Zwischenablage kopieren Die Tastaturmodifikatoren, um Texte oder Bilder von einer Seite in die Zwischenablage zu kopieren.
  • Anmerkungen hinzufügen Die Tastaturmodifikatoren, um einer Seite Anmerkungen hinzu zufügen.
  • Auswahl vergrößern Die Tastaturmodifikatoren, um die einen zu vergrößernden Bereich mit der Maus auszuwählen.
qpdfview-0.4.18/help/help_en_GB.html0000644000000000000000000006144313516127411015370 0ustar 00000000000000 Help

Help

Table of contents

  1. Main menu
    1. File
    2. Edit
    3. View
    4. Tabs
    5. Bookmarks
    6. Help
  2. Main view
  3. Auxiliary views
  4. Settings
    1. Behavior settings
    2. Graphics settings
    3. Interface settings
    4. Shortcut settings
    5. Modifier settings

Introduction

qpdfview is a tabbed document viewer. It uses Poppler for PDF support, libspectre for PS support, DjVuLibre for DjVu support, CUPS for printing support and the Qt toolkit for its interface.

Please refer to the manual page for information on command-line options and configuration files.

Main menu

File

  • Open... Opens a dialogue to choose a file to open in the current tab. If there is no tab, the file is opened in a new tab.
  • Open in new tab... Opens a dialog to choose files to open in new tabs.
  • Recently used Contains a list of the most recently used files (if enabled in the settings).
  • Refresh Reloads the file displayed in the current tab.
  • Save Saves changes to annotations and form fields to the file displayed in the current tab.
  • Save as... Opens a dialog to save the file displayed in the current tab including changes to annotations and form fields.
  • Save copy... Opens a dialogue to save an unmodified copy of the file displayed in the current tab.
  • Print... Opens a dialog to print the file displayed in the current tab.
  • Exit Closes all tabs and ends the program.

Edit

  • Next/Previous/First/Last page Skips to the next/previous/first/last page of the document.
  • Jump to page... Opens a dialog to enter a page to display in the current tab.
  • Jump backward/forward Jumps backward/forward in the history of displayed page.
  • Search... Opens the search dock below the main view. The search automatically starts two seconds after the last change of the search term or is manually started by pressing the return key. If the Shift modifier is held when the return key is pressed, the search starts in all tabs instead of just the current tab. (This effect is reversed if the extended search dock is enabled in the settings.)
  • Find previous/next Jumps to the previous/next occurrence of the search term in the document.
  • Cancel search Cancels the currently running search and closes the search dock.
  • Copy to clipboard If checked, the program will wait for a frame to be dragged to copy texts or images.
  • Add annotation If checked, the program will wait for a frame to be dragged to add annotations.
  • Settings... Opens the settings dialog. The button labeled 'Defaults' will revert all settings on all tabs to their default values. The button labeled 'Defaults on current tab' will revert only the settings on the current tab to their default values.

The current page can be changed by entering the desired page into the text field in the edit tool bar, which can be focused using Ctrl+K, and pressing the return key.

View

  • Continuous Determines whether all rows of the page layout are visible at once.
  • Two pages Determines whether the page layout uses two columns.
  • Two pages with cover page Determines whether the page layout uses two columns with a break after the cover page.
  • Multiple pages Determines whether the page layout uses multiple columns. The number of columns can be changed in the settings dialog.
  • Right to left Determines how pages are arranged in layouts with multiple pages per row.
  • Zoom in Increases the scale factor by 10 percent. The maximum scale factor is 5000 percent.
  • Zoom out Decreases the scale factor by 10 percent. The minimum scale factor is 10 percent.
  • Original size Resets the scale factor to 100 percent.
  • Fit to page width Determines the scale factor such that all pages fully fit into the main view horizontally.
  • Fit to page size Determines the scale factor such that all pages fully fit into the main view horizontally and vertically.
  • Rotate left Rotates the pages left/counterclockwise by 90 degrees.
  • Rotate right Rotates the pages right/clockwise by 90 degrees.
  • Invert colours Determines whether pages are rendered with inverted colours.
  • Convert to greyscale Determines whether pages are converted to greyscale after rendering.
  • Trim margins Enables the removal of empty page margins after rendering.
  • Composition Enables the composition of the rendered page with the paper colour to adjust the background of scanned documents.
  • Tool bars This menu contains a list of available tool bars for accessing frequently used actions.
  • Docks This menu contains a list of available docks for displaying supplementary information.
  • Fonts... Opens a dialogue listing the fonts used in the document.
  • Fullscreen Toggles the fullscreen mode, i.e. the window is shown maximised and without decoration.
  • Presentation... Enters presentation mode which can be left by pressing F12 or escape. The home/end key is used to display the first/last page. Arrow keys right and down, space and the page down key jump to the next page. Arrow keys left and up, backspace and the page up key jump to the previous page. Pressing control and return jumps back to the page before the last jump.

The scale factor can be changed by entering the desired percentage into the text field in the view tool bar, which can be focused using Ctrl+L, and pressing the return key.

Tabs

  • Previous/Next tab Makes the previous/next tab the current tab. Cycles to the last/first tab if the first/last tab is the current tab.
  • Close tab Closes the current tab.
  • Close all tabs Closes all tabs.
  • Close all tabs but current tab Closes all tabs except for the current tab.
  • Recently closed Contains a list of the most recently closed tabs (if enabled in the settings).

This menu contains a list of all tabs which can be made the current tab by clicking on the corresponding menu item. Tabs can also be closed by middle-clicking. The first nine tabs can also be activated by holding the Alt modifier and pressing keys one to nine.

Bookmarks

  • Previous bookmark Jumps to the closest bookmark before the current page.
  • Next bookmark Jumps to the closest bookmark after the current page.
  • Add bookmark Adds a bookmark for the current file and page.
  • Remove bookmark Removes the bookmark for the current file and page.
  • Remove all bookmarks Removes all bookmarks.
  • Open Opens the corresponding file in the current tab. If there is no tab, the file is opened in a new tab.
  • Open in new tab Opens the corresponding file in a new tab.
  • Jump to page Jumps to the corresponding page if the corresponding file is already open. Otherwise the corresponding file is opened in a new tab.

Help

  • Content Displays this document.
  • About Displays the program version.

Main view

The backspace/space key skips to the previous/next page. The home/end key skips to the first/last page. The arrow, page up and page down keys scroll the viewport. Pressing control and return jumps to the page before the last jump.

Using the mouse wheel scrolls up and down. Holding ALT while using the mouse wheel scrolls left and right. Holding CTRL while using the mouse wheel scales the document. Holding SHIFT while using the mouse wheel rotates the document. (Keyboard modifiers can be changed in the settings dialog.) Click and hold the middle mouse button to select a rectangle to zoom to.

Links are highlighted by red frames (if enabled in the settings). Left-click on a link to show the linked page or open the linked URL in the default browser (if enabled in the settings). Middle-click on a link to show the linked page in a new tab. Hovering over a link displays its destination as a tool tip.

Form fields are highlighted by blue frames (if enabled in the settings). Left-click on a form field to edit its contents. Hovering over a form field displays its name as a tool tip.

The source of a position in the document can be opened in the source editor using the context menu which optionally contains an item for the first matching SyncTeX node.

To copy texts or images, hold SHIFT, click and hold the left mouse button to drag a frame around the area to copy. Once the mouse button is released, a pop-up menu is displayed to select whether to copy texts or images into the clipboard.

To add annotations, hold CTRL, click and hold the left mouse button to drag a frame around the region to annotate. Once the mouse button is released, a pop-up menu is displayed to select whether to add text or highlight annotations. Left-click to edit annotations. Right-click to remove annotations. (Adding and removing annotations requires version 0.20.1 or higher of the Poppler library.) Hovering over an annotation displays its contents as a tool tip.

To zoom to a selection, hold SHIFT and CTRL, click and hold the left mouse button to drag a frame around region to zoom into.

The visibility of the tool and menu bars can be toggled using configurable keyboard shortcuts whose default values are "Shift+Alt+T" and "Shift+Alt+M".

Auxiliary views

The outline view displays an overview of the contents of the document. A left click on an entry jumps to the respective page in the main view. The context menu can be used to expand/collapse all items below the selected item.

The outline view can also be navigated using the keyboard and the mouse wheel. Holding Shift and using the Up/Down keys will scroll the view. Holding Shift and using the Left/Right keys will collapse/expand one level of items below the selected item. Holding Control and using the Left/Right keys will completely collapse/expand the selected item and its children. Holding Shift and using the mousel wheel will change the selected item. Holding Control and using the mouse wheel will expand/collapse the selected item.

The properties view displays additional information contained in the document.

The thumbnails view displays smaller versions of the pages of the document. A left click on an entry jumps to the respective page in the main view.

The bookmarks view shows the bookmarks related to the document displayed in the current tab. The context menu contains entries to jump to the previous/next boookmark or to add bookmarks. The context menu of each entry also contains entries to edit and delete bookmarks.

If enabled in the settings, the extended search dock shows an overview containing the results of all searches being performed in all tabs. It also shows the text surrounding a result with the search term being emphasised. Clicking on a result opens the corresponding tab and jumps to its position.

Settings

Behaviour settings

  • Open URL Determines whether links to URL are opened in the default browser.
  • Auto-refresh Determines whether files are automatically reloaded if changed on disk.
  • Track recently used If enabled, a recently used menu is available and lists as many recently used files as set in the "Recently used count" option. (Effective after restart.)
  • Keep recently closed If enabled, a recently closed menu is available and lists as many recently closed tabs as set in the "Recently closed count" option. Keeping the tabs available could increase memory usage considerably. (Effective after restart.)
  • Restore tabs If enabled, tabs and their properties are saved on ending the program and restored on restart.
  • Restore bookmarks If enabled, bookmarks are saved on ending the program and restored on restart.
  • Restore per-file settings If enabled, per-file settings are saved/restored on opening/closing tabs.
  • Save database interval The interval after which tabs, bookmarks or per-file settings are saved to the database.
  • Synchronise presentation If enabled, the main view can be used to control the presentation view.
  • Presentation screen The index of the screen to display the presentation view on.
  • Synchronise outline view If enabled, the outline view will highlight the first entry pointing to the current page whenever the current page changes.
  • Minimal scrolling If enabled, the view port will only be scrolled if the target position is not yet visible.
  • Zoom factor The number by which the scale factor is multiplied resp. divided upon zooming in resp. out.
  • Highlight colour Determines the colour of highlights.
  • Highlight duration Determines the duration of temporary highlights.
  • Annotation colour The colour of annotations added by the program using SVG colour keywords or hexadecimal notation '#rrggbb'.
  • Source editor The program which is started to edit sources. '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number.

Graphics settings

  • Use tiling Pages will be divided into tiles before rendering and caching to reduce memory usage.
  • Keep obsolete pixmaps If enabled, then upon change of the zoom factor, cached pixmaps will be used to draw approximations of final pixmaps until these are available at the cost of increased memory usage.
  • Use device pixel ratio If enabled, the highest available device pixel ratio is used to render at physical and display at logical resolution.
  • Decorate pages Determines whether pages are set apart from the background.
  • Decorate links Determines whether links are highlighted by red frames.
  • Decorate form fields Determines whether form fields are highlighted by blue frames.
  • Background colour Determines the colour of the background using SVG colour keywords or hexadecimal notation '#rrggbb'.
  • Paper colour Determines the colour of pages using SVG colour keywords or hexadecimal notation '#rrggbb'.
  • Presentation background colour Overrides the paper colour in the computation of the background colour of the presentation view and is defined using SVG colour keywords or hexadecimal notation '#rrggbb'.
  • Pages per row Number of pages per row in the 'multiple pages' layout mode.
  • Page spacing Determines both vertical and horizontal space displayed between pages.
  • Thumbnail spacing Determines both vertical and horizontal space displayed between thumbnails.
  • Thumbnail size Determines the size of the thumbnails.
  • Cache size The program will try to cache rendered pages within this limit increasing rendering speed at the cost of increased memory usage.
  • Prefetch The program will try to render pages that are not yet visible increasing rendering speed at the cost of increased cache usage.
  • Prefetch distance The number of rows beyond the current row and twice the number of rows before the current row that are prefetched.
  • PDF settings
    • Antialiasing Improves display quality at the cost of performance
    • Text antialiasing Improves text display quality at the cost of performance
    • Text hinting May improve text display quality for certain fonts.
    • Overprint preview If enabled, a preview of printing one layer of ink on top of another is displayed.
    • Thin line mode Chooses the optimisation used to draw thin lines.
    • Backend Chooses the backend used to render pages.
  • PS settings
    • Graphics antialias bits Determines the amount of antialiasing for graphics.
    • Text antialias bits Determines the amount of antialiasing for text.

Interface settings

  • Extended search dock If enabled, the default search dock is extended by an overview showing the results of all tabs. (Effective after restart.)
  • Annotation overlay If enabled, all annotations on a page will be displayed as an interactive overlay. Otherwise each annotation will be handled as a separate pop-up window.
  • Form field overlay If enabled, all form fields on a page will be displayed as an interactive overlay. Otherwise each form field will be handled as a separate pop-up window.
  • Tab position Defines at which edge of the main view tabs will be displayed.
  • Tab visibility Determines whether tabs will be displayed if less than two documents are opened.
  • Spread tabs Determines if tabs will be spread out evenly over the whole tab bar.
  • New tab next to current tab If enabled, new tabs are opened to the right of the active tab.
  • Exit after last tab If enabled, the application exits after the last tab is closed.
  • Recently used count Sets the number of files that are listed in the recently used menu, if "Track recently used" is enabled. (Effective after restart.)
  • Recently closed count Sets the number of tabs that are listed in the recently closed menu, if "Keep recently closed" is enabled. (Effective after restart.)
  • File tool bar Defines which actions are visible in the file tool bar. Available actions are openInNewTab, open, refresh, saveCopy, saveAs, print and separator. (Effective after restart.)
  • Edit tool bar Defines which actions are visible in the edit tool bar. Available actions are currentPage, previousPage, nextPage, firstPage, lastPage, jumpToPage, jumpBackward, jumpForward, search, copyToClipboardMode, addAnnotationMode and separator. (Effective after restart.)
  • View tool bar Defines which actions are visible in the view tool bar. Available actions are scaleFactor, zoomIn, zoomOut, continuousMode, twoPagesMode, twoPagesWithCoverPageMode, multiplePagesMode, originalSize, fitToPageWidthMode, fitToPageSizeMode, rotateLeft, rotateRight, fullscreen, presentation and separator. (Effective after restart.)
  • Document context menu Defines which actions are visible in the document's context menu. Available actions are openCopyInNewTab, openCopyInNewWindow, openContainingFolder, moveToInstance, previousPage, nextPage, firstPage, lastPage, jumpToPage, jumpBackward, jumpForward, setFirstPage, findPrevious, findNext, cancelSearch and separator.
  • Tab context menu Defines which actions are visible in a tab's context menu. Available actions are openCopyInNewTab, openCopyInNewWindow, openContainingFolder, moveToInstance, copyFilePath, selectFilePath, closeAllTabs, closeAllTabsButThisOne, closeAllTabsToTheLeft, closeAllTabsToTheRight and separator.
  • Scrollable menus Will override the default style so that pop-up menus scroll instead being laid-out in mutliple columns if they are larger than the available screen space. (Effective after restart.)
  • Searchable menus Extends the default keyboard navigation of the tabs and bookmarks menus by a search-as-you-type mechanism.
  • Toggle tool and menu bars with fullscreen Always toggles the visibility of the tool and menu bars when toggling fullscreen mode.
  • Use page label Determines if document-supplied page label will be used instead of page numbers when available.
  • Document title as tab title Determines if the tab title as derived from the meta-data instead of the file name.
  • Current page in window title If enabled, the current page and number of pages of the document in the active tab are displayed in the window title.
  • Instance name in window title If enabled and the current instance is named, its name is displayed in the window title.
  • Highlight current thumbnail If enabled, the current page is highlighted in the thumbnails view.
  • Limit thumbnails to results If this option is enabled and a search is conducted, only the pages where the search term is found are displayed in the thumbnails view.

Shortcut settings

The shortcut settings allows the adjustment of keyboard shortcuts to personal preference. Shortcuts are changed by double-clicking on the shortcut to edit it and entering the new shortcut. Each action can have several shortcuts by entering a semicolon-separated list of them. Names of keys that are not single letters are written out explicitly (e.g. "Alt", "Ctrl", "PgDown"), where the matching is not case sensitive. If the shortcut contains modifier keys, the names of the keys are joined by a plus sign and modifier keys must be listed first, e.g. "Ctrl+A" or "Ctrl++".

Modifier settings

  • Zoom The keyboard modifiers to zoom using the mouse wheel in the main view.
  • Rotate The keyboard modifiers to rotate using the mouse wheel in the main view.
  • Scroll The keyboard modifiers to scroll horizontally using the mouse wheel in the main view.
  • Copy to clipboard The keyboard modifiers to copy texts or images from a page to the clipboard.
  • Add annotation The keyboard modifiers to add annotations to a page.
  • Zoom to selection The keyboard modifiers to zoom to a selection on a page.
qpdfview-0.4.18/help/help_es.html0000644000000000000000000007246613516127411015034 0ustar 00000000000000 Ayuda

Ayuda

Tabla de contenidos

  1. Menú principal
    1. Archivo
    2. Edición
    3. Ver
    4. Pestañas
    5. Marcadores
    6. Ayuda
  2. Copy text Vista principal
  3. Vistas auxiliares
  4. Configuración
    1. Opciones de comportamiento
    2. Opciones de gráficos
    3. Opciones de la interfaz
    4. Acceso directo a configuraciones
    5. Configurar modificador

Introducción

qpdfview es un visor de documentos con pestañas. Usa Poppler como soporte para PDF, libspectre para soporte de PS, DjVuLibre para soporte de DjVu, CUPS para soporte de impresión y Qt para su interfaz.

Por favor consulte la página de manual para obtener información sobre la línea de comandos y la configuración de archivos.

Menú principal

Archivo

  • Abrir... Abre un cuadro de diálogo para seleccionar un archivo a abrir en la pestaña actual. Si no hay ninguna pestaña, el archivo se abre en una nueva pestaña.
  • Abrir en una nueva pestaña... Abre un cuadro de diálogo para seleccionar archivos a abrir en nuevas pestañas.
  • Recientemente usados Contiene una lista de los últimos archivos utilizados (si está activado en la configuración).
  • Actualizar Vuelve a cargar el archivo mostrado en la pestaña actual.
  • Guardar Guarda los cambios en anotaciones y campos de formulario en el archivo mostrado en la pestaña actual.
  • Guardar como... Abre un cuadro de diálogo para guardar el archivo mostrado en la pestaña actual incluyendo los cambios en anotaciones y campos de formulario.
  • Guardar copia ... Abre un cuadro de diálogo para guardar una copia no modificada del archivo mostrado en la pestaña actual.
  • Imprimir... Abre un cuadro de diálogo para imprimir el archivo mostrado en la pestaña actual.
  • Salir Cierra todas las pestañas y finaliza el programa.

Editar

  • Siguiente/Anterior/Primera/Última página Salta a la siguiente/anterior/primera/última página del documento.
  • Salta a la página... Abre un cuadro de diálogo para introducir una página para mostrar en la pestaña actual.
  • Saltar atŕas/adelante Salta hacia atŕas/adelante en el historial de la página mostrada.
  • Buscar... Abre un cuadro de búsqueda debajo de la vista principal. La búsqueda se inicia automáticamente dos segundos después del último cambio del término de búsqueda o se inicia manualmente pulsando la tecla Intro. Si se pulsan a la vez las teclas Mayús e Intro, la búsqueda se inicia en todas las pestañas en vez de en la pestaña actual (este efecto se invierte si el cuadro de búsqueda extendido se activa en la configuración).
  • Buscar anterior/siguiente Salta hacia la ocurrencia anterior/siguiente del término de búsqueda en el documento.
  • Cancelar búsqueda Cancela la búsqueda actual y cierra el cuadro de búsqueda.
  • Copiar al portapapeles Si se selecciona, el programa esperará a que se arrastre un marco para copiar textos o imágenes.
  • Agregar anotación Si se selecciona, el programa esperará a que se arrastre un marco para añadir anotaciones.
  • Configuración... Abre el diálogo de configuración. El botón denominado 'Valores predeterminados' revertirá todos los ajustes en todas las pestañas a sus valores predeterminados. El botón denominado 'Valores predeterminados en la pestaña actual' sólo revertirá los ajustes de la pestaña actual.

La página actual se puede cambiar introduciendo la página deseada en el campo de texto de la barra de edición, que se puede enfocar usando Ctrl+K y presionando la tecla Intro.

Ver

  • Continuo Determina que todas las filas que componen la presentación de las páginas sean visibles a la vez.
  • Dos páginas Determina que la presentación de las páginas use 2 columnas.
  • Dos páginas con portada Determina que la presentación de las páginas usen 2 columnas con una interrupción después de la portada.
  • Múltiples páginas Determina si las páginas usan múltiples columnas. El número de columnas puede ser cambiado en cuadro de configuración.
  • Derecha a izquierdat Determina cómo las páginas son ordenadas en composiciones con múltiples páginas por fila.
  • Aumentar Incrementa la escala en un 10 por ciento. La escala máxima es 5000 por ciento.
  • Reducir Reduce la escala en un 10 por ciento. La escala mínima es 10 por ciento.
  • Tamaño original Reinicia la escala al 100 por ciento.
  • b>Ajustar al ancho de página Determina la escala de tal forma que todas las páginas se ajusten a la ventana principal horizontalmente.
  • b>Ajustar al tamaño de la página Determina la escala de tal forma que todas las páginas se ajusten a la ventana principal horizontal y verticalmente.
  • Girar a la izquierda Gira la páginas a la izquierda en 90 grados.
  • Girar a la derecha Gira la páginas a la derecha en 90 grados.
  • Invertir colores Determina que las páginas se visualicen con los colores invertidos.
  • Convertir a grises Determina que las páginas sean convertidas a escala de grises al visualizarlas.
  • Recorte de márgenes Habilita la eliminación de los márgenes de la página al visualizarlas.
  • Composición Habilita la composición de la página visualizada con el color del papel para ajustar el fondo de los documentos escaneados.
  • Barra de herramientas Este menu contiene una lista de barras de herramientas para acceder a acciones usadas frecuentemente.
  • Barra de tareas Este menu contiene una lista de todas las barras de tareas disponibles para mostrar información suplementaria.
  • Fuentes... Abre un cuadro de diálogo listando las fuentes usadas en el documento.
  • Pantalla completa Alterna al modo pantalla completa, es decir la ventana se muestra maximizada y sin decoraciones.
  • Presentación Se ingresa al modo presentación que puede abandonarse al presionar la tecla F12 o Escape. La tecla Inicio/Fin es usada para mostrar la primera/última página. Las flechas de desplazamiento Derecha y Abajo, la tecla Espacio y la tecla Av. pág. saltan a la siguiente página. Las flechas de desplazamiento Izquierda y Arriba, la tecla de Retroceso y la tecla Re.pág. saltan a la página previa. Presionando Control y Enter salta a la última página previo al último salto.

La factor escala puede ser cambiado al ingresar el porcentaje deseado en el campo de texto dentro de la barra de herramientas de Ver, el cual puede ser enfocado usando Ctrl+L, y presionando la tecla Enter.

Pestañas

  • Pestaña Anterior/Siguiente Convierte la pestaña anterior/siguiente en la pestaña actual. Se traslada a la última/primera pestaña si la primera/última pestaña es la pestaña actual.
  • Cerrar pestaña Cierra la pestaña actual.
  • Cerrar todas las pestañas Cierra todas las pestañas.
  • Cerrar todas las pestañas salvo la actual Cierra todas las pestañas excepto la pestaña actual.
  • Recientemente cerrados Contiene una lista de las pestañas recientemente cerradas (si está activada en la configuración).

Este menú contiene una lista de todas las pestañas a las cuales se las puede convertir en la pestaña actual al hacer click en el correspondiente item del menú. Las pestañas puede también ser cerradas con un clic del botón central del mouse. Las primeras nueve pestañas también pueden ser activadas al presionar la tecla Alt y alguna tecla del uno al nueve.

Marcadores

  • Marcador previo Salta al marcador más próximo que se encuentre previamente a la página actual.
  • Marcador previo Salta al marcador más próximo que se encuentre posteriormente a la página actual.
  • Agregar marcador Agrega un marcador al archivo y página actualmente abierto.
  • Quitar marcador Quita el marcador del archivo y página actualmente abierto.
  • Quitar todos los marcadores Quita todos los marcadores presentes.
  • Abrir Abre el archivo correspondiente en la pestaña actual. Si no hay ninguna pestaña, el archivo se abrirá en una pestaña nueva.
  • Abrir en una nueva pestaña Abre el archivo correspondiente en una nueva pestaña.
  • Saltar a la página Salta a la correspondiente página si el archivo ya se encuentra abierto. De no ser así el archivo correspondiente se abre en una nueva pestaña.

Ayuda

  • Contenidos Se muestra este documento.
  • Acerca Se muestra la versión del programa.

Vista principal

La tecla de retroceso/espacio salta a la anterior/siguiente página. La tecla inicio/fin salta a la primera/última página. La flechas de dirección, las teclas repág y avpág desplazan la ventana de visualización. Presionando Ctrl y enter salta a la última página antes del último salto.

Usando la rueda del mouse se desplaza hacia arriba y hacia abajo. Presionando ALT mientras se usa la rueda del mouse permite desplazar de izquierda a derecha. Presionando CTRL mientras se usa la rueda del mouse permite escalar el documento. Presionando SHIFT mientras se usa la rueda del mouse permite rotar el documento (Las teclas especiales pueden ser cambiadas en el cuadro de diálogo de configuraciones). Presionar y mantener el botón de la rueda del mouse para seleccionar un rectángulo que permita hacer zoom.

Los links son resaltados en recuadros rojos (si es activado en configuraciones). Clic con el botón izquierdo sobre un link para mostrar la página linkeada o para abrir la URL linkeada en el navegador predeterminado del sistema (si es activado en configuraciones). Clic con el bot central sobre un link para mostrar la página linkeada en una nueva pestaña. Posicionarse con el mouse sobre un link muestra su destino final en forma de pequeña ventana emergente.

Los campos de formulario son resaltados en recuadros azules (si es activado en configuraciones). Clic con el botón izquierdo sobre un campo de formulario para editar sus contenidos. Posicionarse con el mouse sobre un campo de formulario muestra su nombre n forma de pequeña ventana emergente.

La fuente de una posición en el documento puede ser abierto en el editor usando el menú contextual, el cual puede opcionalmente contener un item para la primera concidencia encontrada del nodo SyncTeX.

Para copiar textos o imágenes, presiona SHIFT, haz clic y mantiene presionado el botón izquierdo del mouse para dibujar un recuadro alrededor del área a copiar. Una vez liberado el botón, un menú emergente es mostrado para seleccionar textos o imágenes al portapapeles.

Para agregar anotaciones, presiona CTRL, haz clic y mantiene presionado el botón izquierdo del mouse para dibujar un recuadro alrededor del área a anotar. Una vez liberado el botón, un menú emergente es mostrado para poder seleccionar agregar textos o resaltar anotaciones. Clic con el botón izquierdo para editar anotaciones. Clic con el botón derecho para borrar anotaciones (Agregar y borrar anotaciones requiere versión 0.20.1 o superior de la librería Poppler). Al poner el cursor del mouse sobre una anotación se muestra su contenido en forma de pequeña ventana emergente.

Para hacer zoom sobre una selección, mantenter presionados SHIFT y CTRL y hacer clic y mantener el botón izquierdo del mouse para dibujar un recuadro alrededor de la región desea para hacer zoom.

Mostrar barras y menues de herramientas puede ser alternado usando atajos del teclado cuyos valores por defecto son "Shift+Alt+T" y "Shift+Alt+M".

Vistas auxiliares

La Vista de perfil muestra una visión general del contenido del documento. Un clic con el botón izquierdo sobre una entrada salta a la respectiva página como vista principal. El menú contextual puede ser usado para expandir/colapsar todos los items por debajo del item seleccionado.

La Vista de perfil puede ser también navegada usando el teclado y la rueda del mouse. Manteniendo Shift y usando las teclas Arriba/Abajo se puede desplazar la vista. Manteniendo Shift y usando las teclas Izquierda/Derecha permite colapsar/expandir el item seleccionado y sus descendientes. Manteniendo Shift y usando la rueda del mouse permite cambiar el item seleccionado. Manteniendo la tecla Ctrl y usando la rueda del mouse permite expandir/colapsar el item seleccionado.

La Vista de propiedades muestra información adicional contenida en el documento.

La Vista de miniaturas muestra pequeñas versiones de las páginas del documento. Un clic con el botón izquierdo en una entrada salta a la respectiva página en la vista principal.

La Vista de marcadores muestra los marcadores relacionados con el documento mostrado en la pestaña actual. El menú contextual contiene entradas para saltar al marcador previo/siguiente o para agregar marcadores. El menú contextual de cada entrada también contiene entradas para editar y borrar marcadores.

Si está activado en las configuraciones, el cuadro de búsquea extendido muestra una vista general conteniendo todos los resultados de todas las búsquedas siendo realizadas en todas las pestañas. También muestra el texto que rodea al resultado con el término de búsqueda resaltado. Cliqueando en un resultado abre la pestaña correspondiente y salta a su posición.

Opciones

Opciones de comportamiento

  • Abrir URL Determina la apertura de links con URL en el navegador web predeterminado.
  • Autoactualizar Determina si los archivos son automáticamente recargados al cambiar en el disco.
  • Pistas recientemente usadas Si está activado, se muestra un menú de usados recientemente y pone en lista a todos los archivos recientemente utilizados según se haya configurado en la opción de "Cantidad de últimos usados" (se hace efectivo después de reiniciar).
  • Mantener recientemente usados Si está activado, se muestra un menú de cerrados recientemente y pone en lista a todas las pestañas recientemente cerradas egún se haya configurado en la opción de "Cantidad de últimos cerrados". Manteniendo las pestañas abiertas puede incrementar el uso de memoria considerablemente (se hace efectivo después de reiniciar).
  • Restaurar pestañas Si está activado, las pestañas y sus propiedades son guardadas al finalizar el programa y restauradas al iniciar nuevamente el mismo.
  • Restaurar marcadores Si está activado, los marcadores son guardados al finalizar el programa y restaurados al iniciar nuevamente el mismo.
  • b>Restaurar configuraciones de archivo Si está activado, las configuraciones de archivo son guardadas/restauradas al abrir/cerrar pestañas.
  • Guardar base de datos por intervalos El intervalo por el cual pestañas, marcadores o configuraciones por página son guardados a la base de datos.
  • Sincronizar presentación Si está activado, la vista principal puede ser usada para controlar la vista de presentación.
  • Pantalla de presentación El índice de la pantalla a ser mostrada en la vista de presentación.
  • Sincronizar vista de perfil Si está activado, la vista de perfil resaltará la primera entrada apuntando a la página actual apenas esta última cambie.
  • Desplazamiento mínimo Si está activado, la ventana solo se desplazará si la posición de destino no se encuentra aún visible.
  • Factor zoom El número por el cual el factor de escala es multiplicado.
  • Color de resaltado Determina el color de resaltado.
  • Tiempo de resaltado Determina la duración de los resaltados temporales.
  • Color de anotación El color de anotación agregado por el programa usando claves SVG de color o notación hexadecimal '#rrggbb'.
  • Editor El programa el cual es iniciado para editar. '%1' es reemplazado por la dirección absoluta del archivo. '%2' resp. '%3' es reemplazado por linea resp. del número de columna.

Configuración de gráficos

  • Usar mosaicos Las páginas se dividirán en mosaicos antes del renderizado y de la copia caché para reducir el uso de memoria.
  • Mantenter mixmaps caducos Si es activado, luego de un cambio en el factor zoom, los mapas de píxeles (pixmaps) serán usados para dibujar aproximaciones de los pixmaps finales hasta que que estos estén disponibles al costo de incrementar el uso de memoria.
  • Usar la proporción de píxeles del dispositivo Si es activado, la mayor proporción de píxeles del dispositivo que sea disponible se utilizará para renderizar a modo fisico y mostrar en resolución lógica.
  • Adornar páginas Determina si las páginas serán apartadas del fondo.
  • Adornar links Determina si los links serán resaltados con recuadros rojos.
  • Adornar campos de formulario Determina si los campos de formulario serán resaltados con recuadros azules.
  • Color de fondo Determina el color de fondo usando claves de color SVG o notación hexadecimal '#rrggbb'.
  • Color de página Determina el color de las páginas usando claves de color SVG o notación hexadecimal '#rrggbb'.
  • Color de fondo en modo presentación Anula el color de fondo de la página en modo presentación y se define usando claves de color SVG o notación hexadecimal '#rrggbb'.
  • Páginas por fila Número de páginas por fila en modo composicion de "múltiples páginas".

  • Espaciado de página Determina tanto el espacio vertical como horizontal mostrado entre páginas.
  • Espaciado miniaturas Determina tanto el espacio vertical como horizontal mostrado entre miniaturas.
  • Tamaño de miniaturas Determina el tamaño de las miniaturas.
  • Tamaño caché El programa tratará de ubicar en cache las páginas renderizadas dentro de este límite fijado incrementando la velocidad de renderizado al costo de incrementar el uso de memoria.
  • Prefetch El programa tratará de renderizar páginas aún no visibles incrementando la velocidad de renderizado al costo de incrementar el uso de memoria.
  • Distancia de prefetch El número de filas a más allá de la fila actual y el doble de número de filas después de la misma que serán puestos en prefetch.
  • Opciones PDF
    • Antialiasing Mejora la calidad de visualización a costa de la performance.
    • Antialiasing en texto Mejora la calidad de visualización del texto a costa de la performance.
    • Hinting texto Puede mejorar la calidad del texto para ciertas fuentes.
    • Previa de sobreimpresión Si es activado, se muestra una vista previa de la impresión de una capa de tinta encima de otra.
    • Modo lineas finas Permite seleccionar la optimización usada para dibujar lineas finas.
    • Backend Permite seleccionar el backend usado para renderizar páginas.
  • Opciones de PS
    • Bits de antialias en gráficos Determina la cantidad de antialiasing para gráficos.
    • Bits de antialias en texto Determina la cantidad de antialiasing para texto.

Configuración de interfase

  • Recuadro de búsqueda extendido Si es activado, el recuadro de búsqueda predeterminado es extendido como panorámica mostrando los resultados en todas las pestañas (efectivo después de reiniciar).
  • Superposición de anotaciones Si es activado, todas las anotaciones de la página serán mostradas como superposiciones interactivas. De otro modo cada anotación serán manejadas como recuadros emergentes individuales.
  • Overlay en campo de formulario Si es activado, todos los campos de formulario en la página serán mostrados con un overlay interactivo. De lo contrario cada campo de formulario será manejado como una ventana emergente individual.
  • Posición de pestaña Define sobre qué borde de la vista principal serán mostradas las pestañas.
  • Visibilidad de pestañas Determina si las pestañas serán mostradas si al menos dos documentos se encuentran abiertos.
  • Extensión de pestañas Determina si las pestañas se extenderán uniformemente sobre toda la barra de pestañas.
  • Nueva pestaña sobre pestaña activa Si es activado, nuevas pestañas serán abiertas a la derecha de la pestaña activa.
  • Salir después de la última pestaña Si es activado, la aplicación se cerrará después de cerrar la última pestaña.
  • Contador de recientemente abiertos Fija el número de archivos que son listados en el menú de recientemente usados, siempre que "listar recientemente usados" se encuentre activado (efectivo después de reiniciar).
  • Contador de recientemente cerrados Fija el número de pestañas que son listadas en el menú de recientemente usados, siempre que "listar recientemente cerrados" se encuentre activado (efectivo después de reiniciar).
  • Barra de archivos Define qué acciones serán visibles en la barra de archivos. Acciones disponibles son: abrir en nueva pestaña, abrir, actualizar, guardar copia, guardar como, imprimir y separador (efectivo solo después de reiniciar).
  • b>Barra de edición Define qué acciones serán visibles en la barra de edición. Acciones disponibles son: página actual, página previa, página siguiente, primera página, última página, saltar a página, saltar hacia atrás, saltar hacia adelante, buscar, modo copiar a portapapeles, modo agregar anotaciones y separador (efectivo solo después de reiniciar).
  • b>Barra de vista Define qué acciones serán visibles en la barra de vista. Las acciones disponibles son: Factor de escala, incrementar zoom, reducir zoom, modo páginas continuas, modo doble página, modo doble página con cubierta, modo múltiples páginas, tamaño original, modo encajar al ancho de la página, modo encajar al tamaño de página, rotar hacia la izquierda, rotar hacia la derecha, pantalla completa, presentación y separador (efectivo solo después de reiniciar).
  • Document context menu Defines which actions are visible in the document's context menu. Available actions are openCopyInNewTab, openCopyInNewWindow, openContainingFolder, moveToInstance, previousPage, nextPage, firstPage, lastPage, jumpToPage, jumpBackward, jumpForward, setFirstPage, findPrevious, findNext, cancelSearch and separator.
  • Tab context menu Defines which actions are visible in a tab's context menu. Available actions are openCopyInNewTab, openCopyInNewWindow, openContainingFolder, moveToInstance, copyFilePath, selectFilePath, closeAllTabs, closeAllTabsButThisOne, closeAllTabsToTheLeft, closeAllTabsToTheRight and separator.
  • Menues desplazables Anula el estilo por defecto de tal forma que los menues emergentes se puedan desplazarse en lugar de disponerse en múltiples columnas si son más grandes que el espacio disponible en pantalla (efectivo después de reiniciar).
  • Menues buscables Extiende la navegación por defecto vía teclado en los menues de pestañas y marcadores mediante un mecanismo del tipo "buscar-mientras-escribo".
  • Alternar barras de menu y herramientas con pantalla completa Siempre se conmuta la visibilidad de las barras de menu y herramientas cuando se pasa a pantalla completa.
  • Usar etiqueta de página Determina si una etiqueta de página del documento suministrado será usado en lugar de números de página cuando se sea disponible.
  • Título de documento como título de pestaña Determina el título de pestaña según lo obtenido de los meta-datos en lugar del nombre del archivo.
  • Página activa en título de ventana Si es activado, la página activa y el número de páginas del documento en la pestaña activa serán mostradas en el título de la ventana.
  • Nombre de instancia en título de ventana Si es activado y la instancia actual es nombrada, su nombre se mostrará en el título de la ventana.
  • Resaltar miniatura activa Si es activado, la página actual será remarcada en la vista de miniaturas.
  • Limitar miniaturas en resultados Si esta opción es activada y una búsqueda es realizada, solo las páginas donde el término de búsqueda es encontrado son mostrados en la vista de miniaturas.

Configuración de atajos

La configuración de atajos permite el ajuste de atajos de teclado según preferencia personal. Los atajos son cambiados con doble clic sobre los mismos para editar e ingresar el nuevo atajo. Cada acción puede disponer de varios atajos al ingresar una lista de estos separados por punto y coma. Los nombres de tecla que no son representados con una letra simple puede escribirse explícitamente (ej.: "Alt", "Ctrl", "avPág"), y la concordancia no es sensible entre letras mayúsculas y minúsculas. Si el atajo contiene claves de modificadores, los nombres de las claves son agregadas con un signo más y estas claves deben ser listadas primero (ej.: "Ctrl+A" o "Ctrl++").

Configuración de modificadores

  • Zoom Los modificadores de teclado para hacer zoom usando la rueda del mouse en la vista principal.
  • Rotar Zoom Los modificadores de teclado para rotar usando la rueda del mouse en la vista principal.
  • Desplazamientol Los modificadores de teclado para desplazarse horizontalmente usando la rueda del mouse en la vista principal.
  • Copiar al portapapeles Los modificadores de teclado para copiar textos o imágenes desde la página al portapapeles.
  • Agregar anotación Los modificadores de teclado para agregar anotaciones en la página.
  • Zoom en selección Los modificadores de teclado para hacer zoom en una selección sobre la página.
qpdfview-0.4.18/help/help_fa.html0000644000000000000000000006153013516127411015001 0ustar 00000000000000 راهنما

راهنما

فهرست مطالب

  1. منوی اصلی
    1. فایل
    2. ویرایش
    3. نما
    4. برگه‌ها
    5. نشان‌ها
    6. راهنما
  2. نمای اصلی
  3. Auxiliary views
  4. سامانش
    1. Behavior settings
    2. Graphics settings
    3. Interface settings
    4. Shortcut settings
    5. Modifier settings

Introduction

qpdfview is a tabbed document viewer. It uses Poppler for PDF support, libspectre for PS support, DjVuLibre for DjVu support, CUPS for printing support and the Qt toolkit for its interface.

Please refer to the manual page for information on command-line options and configuration files.

Main menu

File

  • Open... Opens a dialog to choose a file to open in the current tab. If there is no tab, the file is opened in a new tab.
  • Open in new tab... Opens a dialog to choose files to open in new tabs.
  • Recently used Contains a list of the most recently used files (if enabled in the settings).
  • Refresh Reloads the file displayed in the current tab.
  • Save Saves changes to annotations and form fields to the file displayed in the current tab.
  • Save as... Opens a dialog to save the file displayed in the current tab including changes to annotations and form fields.
  • Save copy... Opens a dialog to save an umodified copy of the file displayed in the current tab.
  • Print... Opens a dialog to print the file displayed in the current tab.
  • Exit Closes all tabs and ends the program.

Edit

  • Next/Previous/First/Last page Skips to the next/previous/first/last page of the document.
  • Jump to page... Opens a dialog to enter a page to display in the current tab.
  • Jump backward/forward Jumps backward/forward in the history of displayed page.
  • Search... Opens the search dock below the main view. The search automatically starts two seconds after the last change of the search term or is manually started by pressing the return key. If the Shift modifier is held when the return key is pressed, the search starts in all tabs instead of just the current tab. (This effect is reversed if the extended search dock is enabled in the settings.)
  • Find previous/next Jumps to the previous/next occurrence of the search term in the document.
  • Cancel search Cancels the currently running search and closes the search dock.
  • Copy to clipboard If checked, the program will wait for a frame to be dragged to copy texts or images.
  • Add annotation If checked, the program will wait for a frame to be dragged to add annotations.
  • Settings... Opens the settings dialog. The button labeled 'Defaults' will revert all settings on all tabs to their default values. The button labeled 'Defaults on current tab' will revert only the settings on the current tab to their default values.

The current page can be changed by entering the desired page into the text field in the edit tool bar, which can be focused using Ctrl+K, and pressing the return key.

View

  • Continuous Determines whether all rows of the page layout are visible at once.
  • Two pages Determines whether the page layout uses two columns.
  • Two pages with cover page Determines whether the page layout uses two columns with a break after the cover page.
  • Multiple pages Determines whether the page layout uses multiple columns. The number of columns can be changed in the settings dialog.
  • Right to left Determines how pages are arranged in layouts with multiple pages per row.
  • Zoom in Increases the scale factor by 10 percent. The maximum scale factor is 5000 percent.
  • Zoom out Decreases the scale factor by 10 percent. The minimum scale factor is 10 percent.
  • Original size Resets the scale factor to 100 percent.
  • Fit to page width Determines the scale factor such that all pages fully fit into the main view horizontally.
  • Fit to page size Determines the scale factor such that all pages fully fit into the main view horizontally and vertically.
  • Rotate left Rotates the pages left/counterclockwise by 90 degrees.
  • Rotate right Rotates the pages right/clockwise by 90 degrees.
  • Invert colors Determines whether pages are rendered with inverted colors.
  • Convert to grayscale Determines whether pages are converted to grayscale after rendering.
  • Trim margins Enables the removal of empty page margins after rendering.
  • Composition Enables the composition of the rendered page with the paper color to adjust the background of scanned documents.
  • Tool bars This menu contains a list of available tool bars for accessing frequently used actions.
  • Docks This menu contains a list of available docks for displaying supplementary information.
  • Fonts... Opens a dialog listing the fonts used in the document.
  • Fullscreen Toggles the fullscreen mode, i.e. the window is shown maximized and without decoration.
  • Presentation... Enters presentation mode which can be left by pressing F12 or escape. The home/end key is used to display the first/last page. Arrow keys right and down, space and the page down key jump to the next page. Arrow keys left and up, backspace and the page up key jump to the previous page. Pressing control and return jumps back to the page before the last jump.

The scale factor can be changed by entering the desired percentage into the text field in the view tool bar, which can be focused using Ctrl+L, and pressing the return key.

Tabs

  • Previous/Next tab Makes the previous/next tab the current tab. Cycles to the last/first tab if the first/last tab is the current tab.
  • Close tab Closes the current tab.
  • Close all tabs Closes all tabs.
  • Close all tabs but current tab Closes all tabs except for the current tab.
  • Recently closed Contains a list of the most recently closed tabs (if enabled in the settings).

This menu contains a list of all tabs which can be made the current tab by clicking on the corresponding menu item. Tabs can also be closed by middle-clicking. The first nine tabs can also be activated by holding the Alt modifier and pressing keys one to nine.

Bookmarks

  • Previous bookmark Jumps to the closest bookmark before the current page.
  • Next bookmark Jumps to the closest bookmark after the current page.
  • Add bookmark Adds a bookmark for the current file and page.
  • Remove bookmark Removes the bookmark for the current file and page.
  • Remove all bookmarks Removes all bookmarks.
  • Open Opens the corresponding file in the current tab. If there is no tab, the file is opened in a new tab.
  • Open in new tab Opens the corresponding file in a new tab.
  • Jump to page Jumps to the corresponding page if the corresponding file is already open. Otherwise the corresponding file is opened in a new tab.

Help

  • Contents Displays this document.
  • About Displays the program version.

Main view

The backspace/space key skips to the previous/next page. The home/end key skips to the first/last page. The arrow, page up and page down keys scroll the viewport. Pressing control and return jumps to the page before the last jump.

Using the mouse wheel scrolls up and down. Holding ALT while using the mouse wheel scrolls left and right. Holding CTRL while using the mouse wheel scales the document. Holding SHIFT while using the mouse wheel rotates the document. (Keyboard modifiers can be changed in the settings dialog.) Click and hold the middle mouse button to select a rectangle to zoom to.

Links are highlighted by red frames (if enabled in the settings). Left-click on a link to show the linked page or open the linked URL in the default browser (if enabled in the settings). Middle-click on a link to show the linked page in a new tab. Hovering over a link displays its destination as a tool tip.

Form fields are highlighted by blue frames (if enabled in the settings). Left-click on a form field to edit its contents. Hovering over a form field displays its name as a tool tip.

The source of a position in the document can be opened in the source editor using the context menu which optionally contains an item for the first matching SyncTeX node.

To copy texts or images, hold SHIFT, click and hold the left mouse button to drag a frame around the area to copy. Once the mouse button is released, a pop-up menu is displayed to select whether to copy texts or images into the clipboard.

To add annotations, hold CTRL, click and hold the left mouse button to drag a frame around the region to annotate. Once the mouse button is released, a pop-up menu is displayed to select whether to add text or highlight annotations. Left-click to edit annotations. Right-click to remove annotations. (Adding and removing annotations requires version 0.20.1 or higher of the Poppler library.) Hovering over an annotation displays its contents as a tool tip.

To zoom to a selection, hold SHIFT and CTRL, click and hold the left mouse button to drag a frame around region to zoom into.

The visibility of the tool and menu bars can be toggled using configurable keyboard shortcuts whose default values are "Shift+Alt+T" and "Shift+Alt+M".

Auxiliary views

The outline view displays an overview of the contents of the document. A left click on an entry jumps to the respective page in the main view. The context menu can be used to expand/collapse all items below the selected item.

The outline view can also be navigated using the keyboard and the mouse wheel. Holding Shift and using the Up/Down keys will scroll the view. Holding Shift and using the Left/Right keys will collapse/expand one level of items below the selected item. Holding Control and using the Left/Right keys will completely collapse/expand the selected item and its children. Holding Shift and using the mousel wheel will change the selected item. Holding Control and using the mouse wheel will expand/collapse the selected item.

The properties view displays additional information contained in the document.

The thumbnails view displays smaller versions of the pages of the document. A left click on an entry jumps to the respective page in the main view.

The bookmarks view shows the bookmarks related to the document displayed in the current tab. The context menu contains entries to jump to the previous/next boookmark or to add bookmarks. The context menu of each entry also contains entries to edit and delete bookmarks.

If enabled in the settings, the extended search dock shows an overview containing the results of all searches being performed in all tabs. It also shows the text surrounding a result with the search term being emphasized. Clicking on a result opens the corresponding tab and jumps to its position.

Settings

Behavior settings

  • Open URL Determines whether links to URL are opened in the default browser.
  • Auto-refresh Determines whether files are automatically reloaded if changed on disk.
  • Track recently used If enabled, a recently used menu is available and lists as many recently used files as set in the "Recently used count" option. (Effective after restart.)
  • Keep recently closed If enabled, a recently closed menu is available and lists as many recently closed tabs as set in the "Recently closed count" option. Keeping the tabs available could increase memory usage considerably. (Effective after restart.)
  • Restore tabs If enabled, tabs and their properties are saved on ending the program and restored on restart.
  • Restore bookmarks If enabled, bookmarks are saved on ending the program and restored on restart.
  • Restore per-file settings If enabled, per-file settings are saved/restored on opening/closing tabs.
  • Save database interval The interval after which tabs, bookmarks or per-file settings are saved to the database.
  • Synchronize presentation If enabled, the main view can be used to control the presentation view.
  • Presentation screen The index of the screen to display the presentation view on.
  • Synchronize outline view If enabled, the outline view will highlight the first entry pointing to the current page whenever the current page changes.
  • Minimal scrolling If enabled, the view port will only be scrolled if the target position is not yet visible.
  • Zoom factor The number by which the scale factor is multiplied resp. divided upon zooming in resp. out.
  • Highlight color Determines the color of highlights.
  • Highlight duration Determines the duration of temporary highlights.
  • Annotation color The color of annotations added by the program using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Source editor The program which is started to edit sources. '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number.

Graphics settings

  • Use tiling Pages will be divided into tiles before rendering and caching to reduce memory usage.
  • Keep obsolete pixmaps If enabled, then upon change of the zoom factor, cached pixmaps will be used to draw approximations of final pixmaps until these are available at the cost of increased memory usage.
  • Use device pixel ratio If enabled, the highest available device pixel ratio is used to render at physical and display at logical resolution.
  • Decorate pages Determines whether pages are set apart from the background.
  • Decorate links Determines whether links are highlighted by red frames.
  • Decorate form fields Determines whether form fields are highlighted by blue frames.
  • Background color Determines the color of the background using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Paper color Determines the color of pages using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Presentation background color Overrides the paper color in the computation of the background color of the presentation view and is defined using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Pages per row Number of pages per row in the 'multiple pages' layout mode.
  • Page spacing Determines both vertical and horizontal space displayed between pages.
  • Thumbnail spacing Determines both vertical and horizontal space displayed between thumbnails.
  • Thumbnail size Determines the size of the thumbnails.
  • Cache size The program will try to cache rendered pages within this limit increasing rendering speed at the cost of increased memory usage.
  • Prefetch The program will try to render pages that are not yet visible increasing rendering speed at the cost of increased cache usage.
  • Prefetch distance The number of rows beyond the current row and twice the number of rows before the current row that are prefetched.
  • PDF settings
    • Antialiasing Improves display quality at the cost of performance
    • Text antialiasing Improves text display quality at the cost of performance
    • Text hinting May improve text display quality for certain fonts.
    • Overprint preview If enabled, a preview of printing one layer of ink on top of another is displayed.
    • Thin line mode Chooses the optimization used to draw thin lines.
    • Backend Chooses the backend used to render pages.
  • PS settings
    • Graphics antialias bits Determines the amount of antialiasing for graphics.
    • Text antialias bits Determines the amount of antialiasing for text.

Interface settings

  • Extended search dock If enabled, the default search dock is extended by an overview showing the results of all tabs. (Effective after restart.)
  • Annotation overlay If enabled, all annotations on a page will be displayed as an interactive overlay. Otherwise each annotation will be handled as a separate pop-up window.
  • Form field overlay If enabled, all form fields on a page will be displayed as an interactive overlay. Otherwise each form field will be handled as a separate pop-up window.
  • Tab position Defines at which edge of the main view tabs will be displayed.
  • Tab visibility Determines whether tabs will be displayed if less than two documents are opened.
  • Spread tabs Determines if tabs will be spread out evenly over the whole tab bar.
  • New tab next to current tab If enabled, new tabs are opened to the right of the active tab.
  • Exit after last tab If enabled, the application exits after the last tab is closed.
  • Recently used count Sets the number of files that are listed in the recently used menu, if "Track recently used" is enabled. (Effective after restart.)
  • Recently closed count Sets the number of tabs that are listed in the recently closed menu, if "Keep recently closed" is enabled. (Effective after restart.)
  • File tool bar Defines which actions are visible in the file tool bar. Available actions are openInNewTab, open, refresh, saveCopy, saveAs, print and separator. (Effective after restart.)
  • Edit tool bar Defines which actions are visible in the edit tool bar. Available actions are currentPage, previousPage, nextPage, firstPage, lastPage, jumpToPage, jumpBackward, jumpForward, search, copyToClipboardMode, addAnnotationMode and separator. (Effective after restart.)
  • View tool bar Defines which actions are visible in the view tool bar. Available actions are scaleFactor, zoomIn, zoomOut, continuousMode, twoPagesMode, twoPagesWithCoverPageMode, multiplePagesMode, originalSize, fitToPageWidthMode, fitToPageSizeMode, rotateLeft, rotateRight, fullscreen, presentation and separator. (Effective after restart.)
  • Document context menu Defines which actions are visible in the document's context menu. Available actions are openCopyInNewTab, openCopyInNewWindow, openContainingFolder, moveToInstance, previousPage, nextPage, firstPage, lastPage, jumpToPage, jumpBackward, jumpForward, setFirstPage, findPrevious, findNext, cancelSearch and separator.
  • Tab context menu Defines which actions are visible in a tab's context menu. Available actions are openCopyInNewTab, openCopyInNewWindow, openContainingFolder, moveToInstance, copyFilePath, selectFilePath, closeAllTabs, closeAllTabsButThisOne, closeAllTabsToTheLeft, closeAllTabsToTheRight and separator.
  • Scrollable menus Will override the default style so that pop-up menus scroll instead being laid-out in mutliple columns if they are larger than the available screen space. (Effective after restart.)
  • Searchable menus Extends the default keyboard navigation of the tabs and bookmarks menus by a search-as-you-type mechanism.
  • Toggle tool and menu bars with fullscreen Always toggles the visibility of the tool and menu bars when toggling fullscreen mode.
  • Use page label Determines if document-supplied page label will be used instead of page numbers when available.
  • Document title as tab title Determines if the tab title as derived from the meta-data instead of the file name.
  • Current page in window title If enabled, the current page and number of pages of the document in the active tab are displayed in the window title.
  • Instance name in window title If enabled and the current instance is named, its name is displayed in the window title.
  • Highlight current thumbnail If enabled, the current page is highlighted in the thumbnails view.
  • Limit thumbnails to results If this option is enabled and a search is conducted, only the pages where the search term is found are displayed in the thumbnails view.

Shortcut settings

The shortcut settings allows the adjustment of keyboard shortcuts to personal preference. Shortcuts are changed by double-clicking on the shortcut to edit it and entering the new shortcut. Each action can have several shortcuts by entering a semicolon-separated list of them. Names of keys that are not single letters are written out explicitly (e.g. "Alt", "Ctrl", "PgDown"), where the matching is not case sensitive. If the shortcut contains modifier keys, the names of the keys are joined by a plus sign and modifier keys must be listed first, e.g. "Ctrl+A" or "Ctrl++".

Modifier settings

  • Zoom The keyboard modifiers to zoom using the mouse wheel in the main view.
  • Rotate The keyboard modifiers to rotate using the mouse wheel in the main view.
  • Scroll The keyboard modifiers to scroll horizontally using the mouse wheel in the main view.
  • Copy to clipboard The keyboard modifiers to copy texts or images from a page to the clipboard.
  • Add annotation The keyboard modifiers to add annotations to a page.
  • Zoom to selection The keyboard modifiers to zoom to a slection on a page.
qpdfview-0.4.18/help/help_fi.html0000644000000000000000000006141613516127411015014 0ustar 00000000000000 Help

Help

Table of contents

  1. Main menu
    1. File
    2. Edit
    3. View
    4. Tabs
    5. Bookmarks
    6. Help
  2. Main view
  3. Auxiliary views
  4. Settings
    1. Behavior settings
    2. Graphics settings
    3. Interface settings
    4. Shortcut settings
    5. Modifier settings

Johdanto

qpdfview on välehdet mahdollistava dokumenttiselain. Siinä on Poppler PDF tukeen, libspectre PS tukeen, DjVuLibre DjVu tukeen, CUPS tulostustukeen ja Qt työkalupakki on sen käyttöliittymään.

Please refer to the manual page for information on command-line options and configuration files.

Main menu

File

  • Open... Opens a dialog to choose a file to open in the current tab. If there is no tab, the file is opened in a new tab.
  • Open in new tab... Opens a dialog to choose files to open in new tabs.
  • Recently used Contains a list of the most recently used files (if enabled in the settings).
  • Refresh Reloads the file displayed in the current tab.
  • Save Saves changes to annotations and form fields to the file displayed in the current tab.
  • Save as... Opens a dialog to save the file displayed in the current tab including changes to annotations and form fields.
  • Save copy... Opens a dialog to save an umodified copy of the file displayed in the current tab.
  • Print... Opens a dialog to print the file displayed in the current tab.
  • Exit Closes all tabs and ends the program.

Edit

  • Next/Previous/First/Last page Skips to the next/previous/first/last page of the document.
  • Jump to page... Opens a dialog to enter a page to display in the current tab.
  • Jump backward/forward Jumps backward/forward in the history of displayed page.
  • Search... Opens the search dock below the main view. The search automatically starts two seconds after the last change of the search term or is manually started by pressing the return key. If the Shift modifier is held when the return key is pressed, the search starts in all tabs instead of just the current tab. (This effect is reversed if the extended search dock is enabled in the settings.)
  • Find previous/next Jumps to the previous/next occurrence of the search term in the document.
  • Cancel search Cancels the currently running search and closes the search dock.
  • Copy to clipboard If checked, the program will wait for a frame to be dragged to copy texts or images.
  • Add annotation If checked, the program will wait for a frame to be dragged to add annotations.
  • Settings... Opens the settings dialog. The button labeled 'Defaults' will revert all settings on all tabs to their default values. The button labeled 'Defaults on current tab' will revert only the settings on the current tab to their default values.

The current page can be changed by entering the desired page into the text field in the edit tool bar, which can be focused using Ctrl+K, and pressing the return key.

View

  • Continuous Determines whether all rows of the page layout are visible at once.
  • Two pages Determines whether the page layout uses two columns.
  • Two pages with cover page Determines whether the page layout uses two columns with a break after the cover page.
  • Multiple pages Determines whether the page layout uses multiple columns. The number of columns can be changed in the settings dialog.
  • Right to left Determines how pages are arranged in layouts with multiple pages per row.
  • Zoom in Increases the scale factor by 10 percent. The maximum scale factor is 5000 percent.
  • Zoom out Decreases the scale factor by 10 percent. The minimum scale factor is 10 percent.
  • Original size Resets the scale factor to 100 percent.
  • Fit to page width Determines the scale factor such that all pages fully fit into the main view horizontally.
  • Fit to page size Determines the scale factor such that all pages fully fit into the main view horizontally and vertically.
  • Rotate left Rotates the pages left/counterclockwise by 90 degrees.
  • Rotate right Rotates the pages right/clockwise by 90 degrees.
  • Invert colors Determines whether pages are rendered with inverted colors.
  • Convert to grayscale Determines whether pages are converted to grayscale after rendering.
  • Trim margins Enables the removal of empty page margins after rendering.
  • Composition Enables the composition of the rendered page with the paper color to adjust the background of scanned documents.
  • Tool bars This menu contains a list of available tool bars for accessing frequently used actions.
  • Docks This menu contains a list of available docks for displaying supplementary information.
  • Fonts... Opens a dialog listing the fonts used in the document.
  • Fullscreen Toggles the fullscreen mode, i.e. the window is shown maximized and without decoration.
  • Presentation... Enters presentation mode which can be left by pressing F12 or escape. The home/end key is used to display the first/last page. Arrow keys right and down, space and the page down key jump to the next page. Arrow keys left and up, backspace and the page up key jump to the previous page. Pressing control and return jumps back to the page before the last jump.

The scale factor can be changed by entering the desired percentage into the text field in the view tool bar, which can be focused using Ctrl+L, and pressing the return key.

Tabs

  • Previous/Next tab Makes the previous/next tab the current tab. Cycles to the last/first tab if the first/last tab is the current tab.
  • Close tab Closes the current tab.
  • Close all tabs Closes all tabs.
  • Close all tabs but current tab Closes all tabs except for the current tab.
  • Recently closed Contains a list of the most recently closed tabs (if enabled in the settings).

This menu contains a list of all tabs which can be made the current tab by clicking on the corresponding menu item. Tabs can also be closed by middle-clicking. The first nine tabs can also be activated by holding the Alt modifier and pressing keys one to nine.

Bookmarks

  • Previous bookmark Jumps to the closest bookmark before the current page.
  • Next bookmark Jumps to the closest bookmark after the current page.
  • Add bookmark Adds a bookmark for the current file and page.
  • Remove bookmark Removes the bookmark for the current file and page.
  • Remove all bookmarks Removes all bookmarks.
  • Open Opens the corresponding file in the current tab. If there is no tab, the file is opened in a new tab.
  • Open in new tab Opens the corresponding file in a new tab.
  • Jump to page Jumps to the corresponding page if the corresponding file is already open. Otherwise the corresponding file is opened in a new tab.

Help

  • Contents Displays this document.
  • About Displays the program version.

Main view

The backspace/space key skips to the previous/next page. The home/end key skips to the first/last page. The arrow, page up and page down keys scroll the viewport. Pressing control and return jumps to the page before the last jump.

Using the mouse wheel scrolls up and down. Holding ALT while using the mouse wheel scrolls left and right. Holding CTRL while using the mouse wheel scales the document. Holding SHIFT while using the mouse wheel rotates the document. (Keyboard modifiers can be changed in the settings dialog.) Click and hold the middle mouse button to select a rectangle to zoom to.

Links are highlighted by red frames (if enabled in the settings). Left-click on a link to show the linked page or open the linked URL in the default browser (if enabled in the settings). Middle-click on a link to show the linked page in a new tab. Hovering over a link displays its destination as a tool tip.

Form fields are highlighted by blue frames (if enabled in the settings). Left-click on a form field to edit its contents. Hovering over a form field displays its name as a tool tip.

The source of a position in the document can be opened in the source editor using the context menu which optionally contains an item for the first matching SyncTeX node.

To copy texts or images, hold SHIFT, click and hold the left mouse button to drag a frame around the area to copy. Once the mouse button is released, a pop-up menu is displayed to select whether to copy texts or images into the clipboard.

To add annotations, hold CTRL, click and hold the left mouse button to drag a frame around the region to annotate. Once the mouse button is released, a pop-up menu is displayed to select whether to add text or highlight annotations. Left-click to edit annotations. Right-click to remove annotations. (Adding and removing annotations requires version 0.20.1 or higher of the Poppler library.) Hovering over an annotation displays its contents as a tool tip.

To zoom to a selection, hold SHIFT and CTRL, click and hold the left mouse button to drag a frame around region to zoom into.

The visibility of the tool and menu bars can be toggled using configurable keyboard shortcuts whose default values are "Shift+Alt+T" and "Shift+Alt+M".

Auxiliary views

The outline view displays an overview of the contents of the document. A left click on an entry jumps to the respective page in the main view. The context menu can be used to expand/collapse all items below the selected item.

The outline view can also be navigated using the keyboard and the mouse wheel. Holding Shift and using the Up/Down keys will scroll the view. Holding Shift and using the Left/Right keys will collapse/expand one level of items below the selected item. Holding Control and using the Left/Right keys will completely collapse/expand the selected item and its children. Holding Shift and using the mousel wheel will change the selected item. Holding Control and using the mouse wheel will expand/collapse the selected item.

The properties view displays additional information contained in the document.

The thumbnails view displays smaller versions of the pages of the document. A left click on an entry jumps to the respective page in the main view.

The bookmarks view shows the bookmarks related to the document displayed in the current tab. The context menu contains entries to jump to the previous/next boookmark or to add bookmarks. The context menu of each entry also contains entries to edit and delete bookmarks.

If enabled in the settings, the extended search dock shows an overview containing the results of all searches being performed in all tabs. It also shows the text surrounding a result with the search term being emphasized. Clicking on a result opens the corresponding tab and jumps to its position.

Settings

Behavior settings

  • Open URL Determines whether links to URL are opened in the default browser.
  • Auto-refresh Determines whether files are automatically reloaded if changed on disk.
  • Track recently used If enabled, a recently used menu is available and lists as many recently used files as set in the "Recently used count" option. (Effective after restart.)
  • Keep recently closed If enabled, a recently closed menu is available and lists as many recently closed tabs as set in the "Recently closed count" option. Keeping the tabs available could increase memory usage considerably. (Effective after restart.)
  • Restore tabs If enabled, tabs and their properties are saved on ending the program and restored on restart.
  • Restore bookmarks If enabled, bookmarks are saved on ending the program and restored on restart.
  • Restore per-file settings If enabled, per-file settings are saved/restored on opening/closing tabs.
  • Save database interval The interval after which tabs, bookmarks or per-file settings are saved to the database.
  • Synchronize presentation If enabled, the main view can be used to control the presentation view.
  • Presentation screen The index of the screen to display the presentation view on.
  • Synchronize outline view If enabled, the outline view will highlight the first entry pointing to the current page whenever the current page changes.
  • Minimal scrolling If enabled, the view port will only be scrolled if the target position is not yet visible.
  • Zoom factor The number by which the scale factor is multiplied resp. divided upon zooming in resp. out.
  • Highlight color Determines the color of highlights.
  • Highlight duration Determines the duration of temporary highlights.
  • Annotation color The color of annotations added by the program using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Source editor The program which is started to edit sources. '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number.

Graphics settings

  • Use tiling Pages will be divided into tiles before rendering and caching to reduce memory usage.
  • Keep obsolete pixmaps If enabled, then upon change of the zoom factor, cached pixmaps will be used to draw approximations of final pixmaps until these are available at the cost of increased memory usage.
  • Use device pixel ratio If enabled, the highest available device pixel ratio is used to render at physical and display at logical resolution.
  • Decorate pages Determines whether pages are set apart from the background.
  • Decorate links Determines whether links are highlighted by red frames.
  • Decorate form fields Determines whether form fields are highlighted by blue frames.
  • Background color Determines the color of the background using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Paper color Determines the color of pages using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Presentation background color Overrides the paper color in the computation of the background color of the presentation view and is defined using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Pages per row Number of pages per row in the 'multiple pages' layout mode.
  • Page spacing Determines both vertical and horizontal space displayed between pages.
  • Thumbnail spacing Determines both vertical and horizontal space displayed between thumbnails.
  • Thumbnail size Determines the size of the thumbnails.
  • Cache size The program will try to cache rendered pages within this limit increasing rendering speed at the cost of increased memory usage.
  • Prefetch The program will try to render pages that are not yet visible increasing rendering speed at the cost of increased cache usage.
  • Prefetch distance The number of rows beyond the current row and twice the number of rows before the current row that are prefetched.
  • PDF settings
    • Antialiasing Improves display quality at the cost of performance
    • Text antialiasing Improves text display quality at the cost of performance
    • Text hinting May improve text display quality for certain fonts.
    • Overprint preview If enabled, a preview of printing one layer of ink on top of another is displayed.
    • Thin line mode Chooses the optimization used to draw thin lines.
    • Backend Chooses the backend used to render pages.
  • PS settings
    • Graphics antialias bits Determines the amount of antialiasing for graphics.
    • Text antialias bits Determines the amount of antialiasing for text.

Interface settings

  • Extended search dock If enabled, the default search dock is extended by an overview showing the results of all tabs. (Effective after restart.)
  • Annotation overlay If enabled, all annotations on a page will be displayed as an interactive overlay. Otherwise each annotation will be handled as a separate pop-up window.
  • Form field overlay If enabled, all form fields on a page will be displayed as an interactive overlay. Otherwise each form field will be handled as a separate pop-up window.
  • Tab position Defines at which edge of the main view tabs will be displayed.
  • Tab visibility Determines whether tabs will be displayed if less than two documents are opened.
  • Spread tabs Determines if tabs will be spread out evenly over the whole tab bar.
  • New tab next to current tab If enabled, new tabs are opened to the right of the active tab.
  • Exit after last tab If enabled, the application exits after the last tab is closed.
  • Recently used count Sets the number of files that are listed in the recently used menu, if "Track recently used" is enabled. (Effective after restart.)
  • Recently closed count Sets the number of tabs that are listed in the recently closed menu, if "Keep recently closed" is enabled. (Effective after restart.)
  • File tool bar Defines which actions are visible in the file tool bar. Available actions are openInNewTab, open, refresh, saveCopy, saveAs, print and separator. (Effective after restart.)
  • Edit tool bar Defines which actions are visible in the edit tool bar. Available actions are currentPage, previousPage, nextPage, firstPage, lastPage, jumpToPage, jumpBackward, jumpForward, search, copyToClipboardMode, addAnnotationMode and separator. (Effective after restart.)
  • View tool bar Defines which actions are visible in the view tool bar. Available actions are scaleFactor, zoomIn, zoomOut, continuousMode, twoPagesMode, twoPagesWithCoverPageMode, multiplePagesMode, originalSize, fitToPageWidthMode, fitToPageSizeMode, rotateLeft, rotateRight, fullscreen, presentation and separator. (Effective after restart.)
  • Document context menu Defines which actions are visible in the document's context menu. Available actions are openCopyInNewTab, openCopyInNewWindow, openContainingFolder, moveToInstance, previousPage, nextPage, firstPage, lastPage, jumpToPage, jumpBackward, jumpForward, setFirstPage, findPrevious, findNext, cancelSearch and separator.
  • Tab context menu Defines which actions are visible in a tab's context menu. Available actions are openCopyInNewTab, openCopyInNewWindow, openContainingFolder, moveToInstance, copyFilePath, selectFilePath, closeAllTabs, closeAllTabsButThisOne, closeAllTabsToTheLeft, closeAllTabsToTheRight and separator.
  • Scrollable menus Will override the default style so that pop-up menus scroll instead being laid-out in mutliple columns if they are larger than the available screen space. (Effective after restart.)
  • Searchable menus Extends the default keyboard navigation of the tabs and bookmarks menus by a search-as-you-type mechanism.
  • Toggle tool and menu bars with fullscreen Always toggles the visibility of the tool and menu bars when toggling fullscreen mode.
  • Use page label Determines if document-supplied page label will be used instead of page numbers when available.
  • Document title as tab title Determines if the tab title as derived from the meta-data instead of the file name.
  • Current page in window title If enabled, the current page and number of pages of the document in the active tab are displayed in the window title.
  • Instance name in window title If enabled and the current instance is named, its name is displayed in the window title.
  • Highlight current thumbnail If enabled, the current page is highlighted in the thumbnails view.
  • Limit thumbnails to results If this option is enabled and a search is conducted, only the pages where the search term is found are displayed in the thumbnails view.

Shortcut settings

The shortcut settings allows the adjustment of keyboard shortcuts to personal preference. Shortcuts are changed by double-clicking on the shortcut to edit it and entering the new shortcut. Each action can have several shortcuts by entering a semicolon-separated list of them. Names of keys that are not single letters are written out explicitly (e.g. "Alt", "Ctrl", "PgDown"), where the matching is not case sensitive. If the shortcut contains modifier keys, the names of the keys are joined by a plus sign and modifier keys must be listed first, e.g. "Ctrl+A" or "Ctrl++".

Modifier settings

  • Zoom The keyboard modifiers to zoom using the mouse wheel in the main view.
  • Rotate The keyboard modifiers to rotate using the mouse wheel in the main view.
  • Scroll The keyboard modifiers to scroll horizontally using the mouse wheel in the main view.
  • Copy to clipboard The keyboard modifiers to copy texts or images from a page to the clipboard.
  • Add annotation The keyboard modifiers to add annotations to a page.
  • Zoom to selection The keyboard modifiers to zoom to a slection on a page.
qpdfview-0.4.18/help/help_fr.html0000644000000000000000000007145413516127411015030 0ustar 00000000000000 Aide

Aide

Table des matières

  1. Menu principal
    1. Fichier
    2. Édition
    3. Afficher
    4. Onglets
    5. Signets
    6. Aide
  2. Vue principale
  3. Vues auxiliaires
  4. Paramètres
    1. Comportement
    2. Paramètres d'affichage
    3. Paramètres de l'interface
    4. Raccourcis
    5. Modificateurs

Introduction

qpdfview est une visionneuse de documents par onglets. Elle utilise Poppler pour la prise en charge du format PDF, libspectre pour le format PS, DjVuLibre pour le format DjVu, CUPS pour le support d'impression et la bibliothèque Qt pour son interface.

Veuillez consulter la page du manuel pour obtenir des informations sur les options en ligne de commande et sur les fichiers de configuration.

Menu principal

Fichier

  • Ouvrir... Ouvre une boîte de dialogue pour choisir un fichier à ouvrir dans l'onglet courant. S'il n'y a pas d'onglet, le fichier est ouvert dans un nouvel onglet.
  • Ouvrir dans un nouvel onglet... Ouvre une boîte de dialogue pour choisir les fichiers à ouvrir dans de nouveaux onglets.
  • Récemment utilisés Contient une liste des fichiers récemment utilisés (si l'option est activée dans les paramètres).
  • Actualiser Recharge le fichier affiché dans l'onglet courant.
  • Enregistrer Enregistre les modifications des annotations et champs de formulaire dans le fichier affiché dans l'onglet actuel.
  • Enregistrer sous... Ouvre une boîte de dialogue pour enregistrer le fichier affiché dans l'onglet courant y compris les modifications des annotations et des champs de formulaire.
  • Enregistrer une copie… Ouvre une boîte de dialogue pour enregistrer une copie non modifiée du fichier affiché dans l'onglet actuel.
  • Imprimer... Ouvre une boîte de dialogue pour imprimer le fichier affiché dans l'onglet courant.
  • Quitter Ferme tous les onglets, puis le programme.

Édition

  • Page suivante/Page précédente/Première page/Dernière page Va à la page suivante/page précédente/première page/dernière page du document.
  • Aller à la page... Ouvre une boîte de dialogue demandant le numéro de la page à afficher dans l'onglet courant.
  • Aller vers l'arrière/l'avant Aller vers l'arrière/l'avant dans l'historique des pages affichées.
  • Rechercher... Ouvre la barre de recherche sous l'affichage principal. La recherche démarre automatiquement 2 secondes après le dernier changement du terme de recherche ou est démarrée manuellement en appuyant sur la touche entrée. Si la touche Maj est maintenue enfoncée quand la touche entrée est pressée, la recherche démarre dans tous les onglets, et non plus seulement dans l'onglet actuel. (Cet effet est annulé si la barre de recherche avancée est activée dans les paramètres.)
  • Rechercher le précédent/suivant Saute à l'occurrence précédente/suivante du terme recherché dans le document.
  • Annuler la recherche Annule la recherche en cours et ferme la barre de recherche.
  • Copier dans le presse-papiers Lorsque l'action est lancée, le programme attend le tracé d'une zone de sélection à la souris pour copier son contenu sous forme de textes ou d'images.
  • Ajouter une annotation Lorsque cette action est lancée, le programme attend qu'une zone soit tracée avec la souris pour y ajouter une annotation.
  • Paramètres... Ouvre la boîte de dialogue des paramètres. Le bouton « Défauts » permet de restaurer tous les réglages de tous les onglets à leur valeur par défaut. Le bouton « Défauts sur l'onglet actuel » ne restaure les paramètres par défaut que de l'onglet courant.

La page courante peut être modifiée en saisissant le numéro de la page souhaitée dans le champ de texte de la barre d'outils, auquel on peut accéder par Ctrl+K, et en validant par la touche entrée.

Affichage

  • Continu Permet de rendre simultanément visibles les différentes lignes de la mise en page.
  • Deux pages Mise en page en mode deux colonnes.
  • Deux pages avec page de couverture Mise en page en deux colonnes avec un saut de page pour la page de couverture.
  • Multiples pages Mode de mise en page à plusieurs colonnes. Le nombre de colonnes se règle dans le menu paramètres.
  • Droite vers la gauche Indique comment les pages sont présentées lorsque la mise en page multiple comporte plusieurs pages par ligne.
  • Zoom avant Augmente le facteur d'échelle par tranche de 10 %. Le facteur d'échelle maximum est de 5000 %.
  • Zoom arrière Diminue le facteur d'échelle par tranche de 10 %. Le facteur d'échelle minimum est de 10 %.
  • Taille originale Rétablit le facteur d'échelle à 100 pourcent.
  • Ajuster à la largeur de la page Ajuste le facteur d'échelle de façon à ce que la page occupe toute la largeur de la fenêtre principale.
  • Ajuster à la taille de la page Ajuste le facteur d'échelle de façon à ce que la page occupe toute la hauteur de la fenêtre principale.
  • Rotation vers la gauche Tourne la page vers la gauche (le sens contraire des aiguilles d'une montre) de 90 degrés.
  • Rotation vers la droite Tourne la page vers la droite (le sens des aiguilles d'une montre) de 90 degrés.
  • Inverser les couleurs Précise que les pages doivent être affichées en couleurs inversées.
  • Convertir en niveaux de gris Détermine si les pages sont converties en niveaux de gris après le rendu.
  • Rogner les marges Active la suppression des marges de page vides après le rendu.
  • Composition
  • Barre d'outils Ce menu contient une liste de barres d'outils disponibles pour accéder aux actions fréquemment utilisées.
  • Docks Ce menu contient la liste des docks disponibles pour afficher des informations supplémentaires.
  • Polices... Ouvre une boîte de dialogue cataloguant l'ensemble des polices de caractères utilisées dans le document.
  • Plein écran Bascule en mode plein écran ; la fenêtre occupe la taille maximale sans décoration.
  • Présentation... Entre dans le mode présentation que l'on peut quitter par les touches F12 ou Echap. La touche Home/Fin permet d'afficher la première/dernière page. Les touches droite, bas ou espace permettent d'aller à la page suivante. Les touches gauche, haut ou retour permettent d'aller à la page précédente. L'appui simultané sur les touches control et entrée permet d'aller à la page précédent le dernier saut.

Le facteur d'échelle peut-être modifié en saisissant le pourcentage souhaité dans le champ de texte de la barre d'outils, accessible par le raccourci Ctrl+L, et en valident par la touche entrée.

Onglets

  • Onglet précédent/suivant Passe à l'onglet précédent/suivant. Boucle sur le dernier/premier onglet si l'onglet courant est le premier/dernier.
  • Fermer l'onglet Ferme l'onglet courant.
  • Fermer tous les onglets Ferme tous les onglets.
  • Fermer tous les onglets sauf l'onglet courant Ferme tous les onglets sauf l'onglet courant.
  • Récemment fermés Contient une liste des onglets récemment fermés (si l'option est activée dans les paramètres).

Ce menu contient une liste de tous les onglets qui peuvent devenir l'onglet courant par sélection dans le menu. Les onglets peuvent être fermés en cliquant sur le bouton du milieu de la souris. Les neufs premiers onglets peuvent être sélectionnés en maintenant la touche Alt enfoncée et en pressant une touche de un à neuf.

Signets

  • Signet précédent Va au signet le plus proche avant la page courante.
  • Signet suivant Va au signet le plus proche après la page courante.
  • Ajouter un signet Ajoute un signet à la page courante du fichier courant.
  • Supprimer le signet Supprime le signet de la page courante du fichier courant.
  • Enlever tous les signets Enlève tous les signets.
  • Ouvrir Ouvre le fichier correspondant dans l'onglet courant. S'il n'y a pas d'onglet, le fichier est ouvert dans un nouvel onglet.
  • Ouvrir dans un nouvel onglet Ouvre le fichier correspondant dans un nouvel onglet.
  • Aller à la page Va à la page correspondante si le fichier en question est déjà ouvert. Sinon le fichier est d'abord ouvert dans un nouvel onglet.

Aide

  • Contenu Affiche ce document.
  • À propos Affiche le numéro de version du programme.

Vue principale

La touche retour/espace permet d'aller à la page précédente/suivante. La touche Home/Fin permet d'aller à la première/dernière page. Les flèches, les touches page vers le haut, page vers le bas permettent de faire défiler la vue. L'appui simultané sur les touches control et entrée permet d'aller à la page précédent le dernier saut.

Utilisez la roulette de la souris pour faire défiler la page verticalement. Maintenez la touche ALT enfoncée lorsque vous utilisez la roulette pour faire défiler la page horizontalement. Maintenez la touche CTRL enfoncée lorsque vous utilisez la roulette pour zoomer ou dézoomer le document. Maintenez la touche SHIFT enfoncée lorsque vous utilisez la roulette pour tourner le document (la configuration du clavier peut être changée dans la boîte de dialogue des paramètres). Cliquez et maintenez le bouton central de la souris pour sélectionner une zone rectangulaire sur laquelle zoomer.

Les liens sont surlignés par des cadres rouges (si cela est activé dans les paramètres). Un clic gauche sur un lien montre la page liée ou ouvre la page dans le navigateur par défaut (si cela est activé dans les paramètres). Un clic central sur un lien ouvre la page liée dans un nouvel onglet. Passer le curseur au-dessus d’un lien affiche sa destination comme une astuce.

Les champs de formulaire sont mis en valeur par un cadre bleu (si ce comportement a été choisi dans les paramètres). Un clic gauche sur un champ de formulaire permet d'en éditer le contenu. Passer sur un champ de formulaire affiche son nom dans une bulle d'aide.

The source of a position in the document can be opened in the source editor using the context menu which optionally contains an item for the first matching SyncTeX node.

Pour copier du texte ou des images, maintenir la touche Maj enfoncée, cliquer et maintenir le bouton gauche de la souris enfoncé pour dessiner un cadre autour de la zone à copier. Une fois le bouton de la souris relâché, une boîte de dialogue s'affiche, permettant de choisir de copier le texte ou l'image dans le presse-papiers.

To add annotations, hold CTRL, click and hold the left mouse button to drag a frame around the region to annotate. Once the mouse button is released, a pop-up menu is displayed to select whether to add text or highlight annotations. Left-click to edit annotations. Right-click to remove annotations. (Adding and removing annotations requires version 0.20.1 or higher of the Poppler library.) Hovering over an annotation displays its contents as a tool tip.

Pour zoomer sur la sélection, maintenir Maj et Ctrl, puis cliquer et maintenir le bouton gauche de la souris enfoncé pour encadrer la région à agrandir.

La visibilité des barres d’outils et de menu peut être alternée en utilisant les raccourcis clavier configurables dont les valeurs par défaut sont « Shift + Alt + T » et « Shift + Alt + M ».

Vues auxiliaires

Le sommaire (F6) affiche une vue d'ensemble du contenu du document. Un clic gauche sur une entrée bascule sur la page respective dans la vue principale. Le menu contextuel peut être utilisé pour développer/réduire tous les éléments en dessous de l'élément sélectionné.

The outline view can also be navigated using the keyboard and the mouse wheel. Holding Shift and using the Up/Down keys will scroll the view. Holding Shift and using the Left/Right keys will collapse/expand one level of items below the selected item. Holding Control and using the Left/Right keys will completely collapse/expand the selected item and its children. Holding Shift and using the mousel wheel will change the selected item. Holding Control and using the mouse wheel will expand/collapse the selected item.

L' affichage des propriétés permet d'afficher des informations supplémentaires contenues dans le document.

L' affichage des miniatures permet d'afficher des versions plus petites des pages du document. Un clic gauche dans une entrée passe à la page respective dans la vue principale.

The bookmarks view shows the bookmarks related to the document displayed in the current tab. The context menu contains entries to jump to the previous/next boookmark or to add bookmarks. The context menu of each entry also contains entries to edit and delete bookmarks.

Si activé dans les paramètres, la barre de recherche avancée affiche une vue d'ensemble contenant les résultats de toutes les recherches étant exécutées dans tous les onglets. Elle affiche également le texte au environ d'un résultat avec le terme de recherche étant mis en surbrillance. Cliquer sur un résultat ouvre l'onglet correspondant et bascule sur sa position.

Paramètres

Comportement

  • Ouvrir une URL Détermine si les liens vers une URL sont ouverts dans le navigateur par défaut.
  • Actualisation automatique Détermine si les fichiers sont rechargés automatiquement lors de leur modification sur le disque dur.
  • Fichiers récemment ouverts Si l'item est validé, un menu est disponible et propose autant de fichiers récemment ouverts qu'il est précisé dans le champ « Nombre de fichiers récemment ouverts » (nécessite un redémarrage).
  • Keep recently closed If enabled, a recently closed menu is available and lists as many recently closed tabs as set in the "Recently closed count" option. Keeping the tabs available could increase memory usage considerably. (Effective after restart.)
  • Restaurer les onglets Si l'option est validée, les onglets et leurs propriétés sont enregistrées lors de la fermeture du programme et restaurer lors de son ouverture.
  • Restaurer les signets Si l'item est validé, les signets sont enregistrés en quittant le programme et restaurés lors de sa ré-ouverture.
  • Restaurer les paramètres par fichier Si l'item est validé, les réglages propres à chaque fichier sont enregistrés/restaurés à chaque ouverture/fermeture des onglets.
  • Intervalle de sauvegarde de la base de données L’intervalle après lequel les onglets, marques-pages ou les paramètres personalisés par fichier sont sauvegardés dans la base de données.
  • Synchroniser la présentation Si l'item est validé, la vue principale permet de contrôler la vue du mode présentation.
  • Écran de présentation La référence de l'écran sur lequel afficher la présentation.
  • Synchroniser le sommaire Si l'item est validé, la page du sommaire correspondant à la page courante est mise en valeur et s'actualise à tous changements de page.
  • Minimal scrolling If enabled, the view port will only be scrolled if the target position is not yet visible.
  • Facteur de zoom Le nombre par lequel le facteur de zoom sera respectivement multiplié ou divisé selon que l’on zoome ou dézoome.
  • Couleur de surlignement Permet de choisir la couleur de surlignement.
  • Durée de mise en surbrillance Précise la durée des surlignements temporaires.
  • Couleur d'annotation Précise la couleur des annotation ajoutées par le programme, en utilisant les couleurs SVG ou la notation hexadécimale '#rrggbb'.
  • Éditeur de source Le programme qui est lancé pour éditer un fichier source. « %1 » est remplacé par le chemin absolu du fichier. « %2 » (resp. « %3 ») est remplacé par le numéro de ligne (resp. colonne).

Affichage

  • Use tiling Pages will be divided into tiles before rendering and caching to reduce memory usage.
  • Conserver l'affichage lors du zoom Si l'item est validé, le cache graphique est utilisé lors des zoom pour permettre un affichage approximatif temporaire avant le rendu de l'image finale. Cette option augment l'utilisation de la mémoire.
  • Utiliser le taux de pixel de l'appareil Si l'item est validé, l'affichage se fait en utilisant la valeur maximale du taux de pixel.
  • Décorer les pages Permet de tracer le cadre séparant la page de son arrière-plan.
  • Décorer les liens Précise si les liens sont mis en valeur par un cadre rouge.
  • Décorer les champs de formulaire Précise si les champs de formulaire sont mis en valeur par un cadre bleu.
  • Couleur de l'arrière-plan Précise la couleur de l'arrière-plan à l'aide des couleurs SVG ou en notation hexadécimale « #rrggbb ».
  • Couleur du papier Précise la couleur du papier à l'aide des couleurs SVG ou en notation hexadécimal « #rrggbb ».
  • Couleur de l'arrière plan en mode présentation Remplace la couleur du papier dans le mode présentation. La couleur est définie à l'aide des couleurs SVG ou de la notation hexadécimal « #rrggbb » .
  • Pages par ligne Nombre de pages affichées par ligne dans le mode « Pages multiples ».
  • Espacement des pages Précise les espacements verticaux et horizontaux entre les pages.
  • Espacement des miniatures Précise les espacements verticaux et horizontaux entre les miniatures.
  • Taille des miniatures Précise la dimension des miniatures.
  • Taille du cache Le programme stocke les pages affichées dans le cache, dans la limite de l'espace choisi, améliorant ainsi la vitesse d'affichage au prix d'une augmentation de l'utilisation de la mémoire.
  • Préchargement Le programme essaye de préparer l'affichage des pages qui ne sont pas encore visibles afin d'accélérer leur rendu, au prix d'une augmentation de l'usage du cache.
  • Distance de préchargement Le nombre de lignes au-delà de la ligne actuelle et le double du nombre de lignes avant la ligne actuelle qui sont préchargées.
  • Paramètres PDF
    • Anti-crénelage Améliore la qualité de l'affichage au prix d'une baisse de performances.
    • Anti-crénelage du texte Améliore l'affichage du texte au prix d'une baisse de performances.
    • Indications Peut améliorer l'affichage de certaines polices de caractères.
    • Sur-imprimer l'aperçu Si l'item est validé, l'aperçu d'impression est affiché en tenant compte de la superposition des couches d'encre.
    • Mode ligne fine Optimisation de rendu des lignes fines.
    • Moteur Choisit le moteur de rendu utilisé pour les pages.
  • Paramètres PS
    • Nombre de bits d'anti-crénelage graphique Précise le nombre de bits dédiés à l'anti-crénelage graphique.
    • Nombre de bites d'anti-crénelage du texte Précise le nombre de bits dédiés à l'anti-crénelage du texte.

Interface

  • Extended search dock If enabled, the default search dock is extended by an overview showing the results of all tabs. (Effective after restart.)
  • Superposition des annotations Si activé, toutes les annotations présentes sur la page seront affichées en même temps. Autrement, chaque annotation sera affichée séparément.
  • Form field overlay If enabled, all form fields on a page will be displayed as an interactive overlay. Otherwise each form field will be handled as a separate pop-up window.
  • Position des onglets Défini le côté de la vue principale sur lequel seront placés les onglets.
  • Visibilité des onglets Précise si l'onglet est affiché lorsqu'il y a moins de deux documents ouverts.
  • Étendre les onglets Détermine si les onglets seront étendus même au-delà de la barre des onglets.
  • Nouvel onglet à côté de l'onglet courant Si l'item est validé, les nouveaux onglets sont ouverts à droite de l'onglet courant.
  • Fermer avec le dernier onglet Si l'option est validée, l'application ferme après la fermeture du dernier onglet.
  • Compteur des fichiers récemments ouverts Précise le nombre de fichiers qui sont listés dans le menu des fichiers récemments ouverts, si l'item « Suivre les fichiers récemment ouverts » est validé (option effective après un redémarrage).
  • Compteur des fichiers récemment fermés Précise le nombre de fichiers qui sont listés dans le menu des fichiers récemment fermés, si l'item « Suivre les fichiers récemment fermés » est validé (option effective après un redémarrage).
  • Barre d'outils Fichier Défini quelles actions sont affichées dans la barre d'outils Fichier. Les actions disponibles sont openInNewTab, open, refresh, saveCopy, saveAs, print et separator. (Nécessite un redémarrage.)
  • Barre d'outils Édition Défini quelles actions sont visibles dans la barre d'outils Édition. Les actions disponibles sont currentPage, previousPage, nextPage, firstPage, lastPage, jumpToPage, jumpBackward, jumpForward, search, copyToClipboardMode, addAnnotationMode et separator. (Nécessite un redémarrage.)
  • Barre d'outils Affichage Défini quelles actions sont visibles dans la barre d'outils Affichage. Les actions disponibles sont scaleFactor, zoomIn, zoomOut, continuousMode, twoPagesMode, twoPagesWithCoverPageMode, multiplePagesMode, originalSize, fitToPageWidthMode, fitToPageSizeMode, rotateLeft, rotateRight, fullscreen, presentation et separator. (Nécessite un redémarrage.)
  • Document context menu Defines which actions are visible in the document's context menu. Available actions are openCopyInNewTab, openCopyInNewWindow, openContainingFolder, moveToInstance, previousPage, nextPage, firstPage, lastPage, jumpToPage, jumpBackward, jumpForward, setFirstPage, findPrevious, findNext, cancelSearch and separator.
  • Tab context menu Defines which actions are visible in a tab's context menu. Available actions are openCopyInNewTab, openCopyInNewWindow, openContainingFolder, moveToInstance, copyFilePath, selectFilePath, closeAllTabs, closeAllTabsButThisOne, closeAllTabsToTheLeft, closeAllTabsToTheRight and separator.
  • Scrollable menus Will override the default style so that pop-up menus scroll instead being laid-out in mutliple columns if they are larger than the available screen space. (Effective after restart.)
  • Searchable menus Extends the default keyboard navigation of the tabs and bookmarks menus by a search-as-you-type mechanism.
  • Toggle tool and menu bars with fullscreen Always toggles the visibility of the tool and menu bars when toggling fullscreen mode.
  • Use page label Determines if document-supplied page label will be used instead of page numbers when available.
  • Titre du document comme titre de l’onglet Détermine si le titre de l’onglet correspond aux métadonnées au lieu du nom du fichier.
  • Page courante dans le titre de la fenêtre Si cet item est validé, le numéro de la page et le nombre total de pages du document actif sont affichés dans la barre de titre de la fenêtre.
  • Nom de l’instance dans la barre de la fenêtre Si activé et si l’instance courante est nommée, son nom est affiché dans la barre de la fenêtre.
  • Surligner la miniature courante Si l'item est validé, la page courante est mise en valeur dans la vue des miniatures.
  • Limiter les miniatures aux résultats Si cet item est validé, seules les miniatures contenant le terme recherché sont affichées lors d'une recherche.

Modificateurs

Le menu des raccourcis permet d'ajuster les raccourcis clavier à ses goûts personnels. Les raccourcis sont modifiables en double-cliquant sur le raccourci à éditer puis en saisissant ler nouveau raccourci. Chaque action peut avoir plusieurs raccourcis, séparés par un point virgule. Les touches dont le nom n'est pas une lettre unique doivent être écrites explicitement (par exemple « Alt », « Ctrl », « PgDown »), et ne sont pas sensibles à la casse. Si le raccourci contient des touches de modifications, les touches doivent être jointes par le signe plus et la touche de modification doit être écrite en premier, par exemple « Ctrl+A » or « Ctrl++ ».

Modificateurs

  • Zoom La touche spéciale pour zoomer dans la vue principale à l'aide de la molette de la souris.
  • Rotation La touche spéciale permettant la rotation dans la fenêtre principale à l'aide de la molette de la souris.
  • Défiler La touche spéciale permettant le défilement dans la fenêtre principale à l'aide de la molette de la souris.
  • Copier dans le presse-papiers La touche spéciale pour copier textes et images dans le presse-papiers.
  • Ajouter une annotation La touche spéciale pour ajouter une annotation dans une page.
  • Zoom to selection The keyboard modifiers to zoom to a slection on a page.
qpdfview-0.4.18/help/help_gl.html0000644000000000000000000006147013516127411015020 0ustar 00000000000000 Axuda

Axuda

Índice

  1. Menú principal
    1. Ficheiro
    2. Editar
    3. Ver
    4. Lapelas
    5. Marcadores
    6. Axuda
  2. Vista principal
  3. Vistas auxiliares
  4. Axustes
    1. Axustes do comportamento
    2. Axustes gráficos
    3. Axustes da interface
    4. Axustes dos atallos
    5. Axustes dos modificadores

Introdución

qpdfview is a tabbed document viewer. It uses Poppler for PDF support, libspectre for PS support, DjVuLibre for DjVu support, CUPS for printing support and the Qt toolkit for its interface.

Please refer to the manual page for information on command-line options and configuration files.

Main menu

File

  • Abrir... Inicia o diálogo de selección do ficheiro para abrir na lapela actual. Se non hai aberta unha lapela, abrirase nunha nova.
  • Open in new tab... Opens a dialog to choose files to open in new tabs.
  • Recently used Contains a list of the most recently used files (if enabled in the settings).
  • Refresh Reloads the file displayed in the current tab.
  • Save Saves changes to annotations and form fields to the file displayed in the current tab.
  • Save as... Opens a dialog to save the file displayed in the current tab including changes to annotations and form fields.
  • Save copy... Opens a dialog to save an umodified copy of the file displayed in the current tab.
  • Print... Opens a dialog to print the file displayed in the current tab.
  • Exit Closes all tabs and ends the program.

Edit

  • Next/Previous/First/Last page Skips to the next/previous/first/last page of the document.
  • Jump to page... Opens a dialog to enter a page to display in the current tab.
  • Jump backward/forward Jumps backward/forward in the history of displayed page.
  • Search... Opens the search dock below the main view. The search automatically starts two seconds after the last change of the search term or is manually started by pressing the return key. If the Shift modifier is held when the return key is pressed, the search starts in all tabs instead of just the current tab. (This effect is reversed if the extended search dock is enabled in the settings.)
  • Find previous/next Jumps to the previous/next occurrence of the search term in the document.
  • Cancel search Cancels the currently running search and closes the search dock.
  • Copy to clipboard If checked, the program will wait for a frame to be dragged to copy texts or images.
  • Add annotation If checked, the program will wait for a frame to be dragged to add annotations.
  • Settings... Opens the settings dialog. The button labeled 'Defaults' will revert all settings on all tabs to their default values. The button labeled 'Defaults on current tab' will revert only the settings on the current tab to their default values.

The current page can be changed by entering the desired page into the text field in the edit tool bar, which can be focused using Ctrl+K, and pressing the return key.

View

  • Continuous Determines whether all rows of the page layout are visible at once.
  • Two pages Determines whether the page layout uses two columns.
  • Two pages with cover page Determines whether the page layout uses two columns with a break after the cover page.
  • Multiple pages Determines whether the page layout uses multiple columns. The number of columns can be changed in the settings dialog.
  • Right to left Determines how pages are arranged in layouts with multiple pages per row.
  • Zoom in Increases the scale factor by 10 percent. The maximum scale factor is 5000 percent.
  • Zoom out Decreases the scale factor by 10 percent. The minimum scale factor is 10 percent.
  • Original size Resets the scale factor to 100 percent.
  • Fit to page width Determines the scale factor such that all pages fully fit into the main view horizontally.
  • Fit to page size Determines the scale factor such that all pages fully fit into the main view horizontally and vertically.
  • Rotate left Rotates the pages left/counterclockwise by 90 degrees.
  • Rotate right Rotates the pages right/clockwise by 90 degrees.
  • Invert colors Determines whether pages are rendered with inverted colors.
  • Convert to grayscale Determines whether pages are converted to grayscale after rendering.
  • Trim margins Enables the removal of empty page margins after rendering.
  • Composition Enables the composition of the rendered page with the paper color to adjust the background of scanned documents.
  • Tool bars This menu contains a list of available tool bars for accessing frequently used actions.
  • Docks This menu contains a list of available docks for displaying supplementary information.
  • Fonts... Opens a dialog listing the fonts used in the document.
  • Fullscreen Toggles the fullscreen mode, i.e. the window is shown maximized and without decoration.
  • Presentation... Enters presentation mode which can be left by pressing F12 or escape. The home/end key is used to display the first/last page. Arrow keys right and down, space and the page down key jump to the next page. Arrow keys left and up, backspace and the page up key jump to the previous page. Pressing control and return jumps back to the page before the last jump.

The scale factor can be changed by entering the desired percentage into the text field in the view tool bar, which can be focused using Ctrl+L, and pressing the return key.

Tabs

  • Previous/Next tab Makes the previous/next tab the current tab. Cycles to the last/first tab if the first/last tab is the current tab.
  • Close tab Closes the current tab.
  • Close all tabs Closes all tabs.
  • Close all tabs but current tab Closes all tabs except for the current tab.
  • Recently closed Contains a list of the most recently closed tabs (if enabled in the settings).

This menu contains a list of all tabs which can be made the current tab by clicking on the corresponding menu item. Tabs can also be closed by middle-clicking. The first nine tabs can also be activated by holding the Alt modifier and pressing keys one to nine.

Bookmarks

  • Previous bookmark Jumps to the closest bookmark before the current page.
  • Next bookmark Jumps to the closest bookmark after the current page.
  • Add bookmark Adds a bookmark for the current file and page.
  • Remove bookmark Removes the bookmark for the current file and page.
  • Remove all bookmarks Removes all bookmarks.
  • Open Opens the corresponding file in the current tab. If there is no tab, the file is opened in a new tab.
  • Open in new tab Opens the corresponding file in a new tab.
  • Jump to page Jumps to the corresponding page if the corresponding file is already open. Otherwise the corresponding file is opened in a new tab.

Help

  • Contents Displays this document.
  • About Displays the program version.

Main view

The backspace/space key skips to the previous/next page. The home/end key skips to the first/last page. The arrow, page up and page down keys scroll the viewport. Pressing control and return jumps to the page before the last jump.

Using the mouse wheel scrolls up and down. Holding ALT while using the mouse wheel scrolls left and right. Holding CTRL while using the mouse wheel scales the document. Holding SHIFT while using the mouse wheel rotates the document. (Keyboard modifiers can be changed in the settings dialog.) Click and hold the middle mouse button to select a rectangle to zoom to.

Links are highlighted by red frames (if enabled in the settings). Left-click on a link to show the linked page or open the linked URL in the default browser (if enabled in the settings). Middle-click on a link to show the linked page in a new tab. Hovering over a link displays its destination as a tool tip.

Form fields are highlighted by blue frames (if enabled in the settings). Left-click on a form field to edit its contents. Hovering over a form field displays its name as a tool tip.

The source of a position in the document can be opened in the source editor using the context menu which optionally contains an item for the first matching SyncTeX node.

To copy texts or images, hold SHIFT, click and hold the left mouse button to drag a frame around the area to copy. Once the mouse button is released, a pop-up menu is displayed to select whether to copy texts or images into the clipboard.

To add annotations, hold CTRL, click and hold the left mouse button to drag a frame around the region to annotate. Once the mouse button is released, a pop-up menu is displayed to select whether to add text or highlight annotations. Left-click to edit annotations. Right-click to remove annotations. (Adding and removing annotations requires version 0.20.1 or higher of the Poppler library.) Hovering over an annotation displays its contents as a tool tip.

To zoom to a selection, hold SHIFT and CTRL, click and hold the left mouse button to drag a frame around region to zoom into.

The visibility of the tool and menu bars can be toggled using configurable keyboard shortcuts whose default values are "Shift+Alt+T" and "Shift+Alt+M".

Auxiliary views

The outline view displays an overview of the contents of the document. A left click on an entry jumps to the respective page in the main view. The context menu can be used to expand/collapse all items below the selected item.

The outline view can also be navigated using the keyboard and the mouse wheel. Holding Shift and using the Up/Down keys will scroll the view. Holding Shift and using the Left/Right keys will collapse/expand one level of items below the selected item. Holding Control and using the Left/Right keys will completely collapse/expand the selected item and its children. Holding Shift and using the mousel wheel will change the selected item. Holding Control and using the mouse wheel will expand/collapse the selected item.

The properties view displays additional information contained in the document.

The thumbnails view displays smaller versions of the pages of the document. A left click on an entry jumps to the respective page in the main view.

The bookmarks view shows the bookmarks related to the document displayed in the current tab. The context menu contains entries to jump to the previous/next boookmark or to add bookmarks. The context menu of each entry also contains entries to edit and delete bookmarks.

If enabled in the settings, the extended search dock shows an overview containing the results of all searches being performed in all tabs. It also shows the text surrounding a result with the search term being emphasized. Clicking on a result opens the corresponding tab and jumps to its position.

Settings

Behavior settings

  • Open URL Determines whether links to URL are opened in the default browser.
  • Auto-refresh Determines whether files are automatically reloaded if changed on disk.
  • Track recently used If enabled, a recently used menu is available and lists as many recently used files as set in the "Recently used count" option. (Effective after restart.)
  • Keep recently closed If enabled, a recently closed menu is available and lists as many recently closed tabs as set in the "Recently closed count" option. Keeping the tabs available could increase memory usage considerably. (Effective after restart.)
  • Restore tabs If enabled, tabs and their properties are saved on ending the program and restored on restart.
  • Restore bookmarks If enabled, bookmarks are saved on ending the program and restored on restart.
  • Restore per-file settings If enabled, per-file settings are saved/restored on opening/closing tabs.
  • Save database interval The interval after which tabs, bookmarks or per-file settings are saved to the database.
  • Synchronize presentation If enabled, the main view can be used to control the presentation view.
  • Presentation screen The index of the screen to display the presentation view on.
  • Synchronize outline view If enabled, the outline view will highlight the first entry pointing to the current page whenever the current page changes.
  • Minimal scrolling If enabled, the view port will only be scrolled if the target position is not yet visible.
  • Zoom factor The number by which the scale factor is multiplied resp. divided upon zooming in resp. out.
  • Highlight color Determines the color of highlights.
  • Highlight duration Determines the duration of temporary highlights.
  • Annotation color The color of annotations added by the program using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Source editor The program which is started to edit sources. '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number.

Graphics settings

  • Use tiling Pages will be divided into tiles before rendering and caching to reduce memory usage.
  • Keep obsolete pixmaps If enabled, then upon change of the zoom factor, cached pixmaps will be used to draw approximations of final pixmaps until these are available at the cost of increased memory usage.
  • Use device pixel ratio If enabled, the highest available device pixel ratio is used to render at physical and display at logical resolution.
  • Decorate pages Determines whether pages are set apart from the background.
  • Decorate links Determines whether links are highlighted by red frames.
  • Decorate form fields Determines whether form fields are highlighted by blue frames.
  • Background color Determines the color of the background using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Paper color Determines the color of pages using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Presentation background color Overrides the paper color in the computation of the background color of the presentation view and is defined using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Pages per row Number of pages per row in the 'multiple pages' layout mode.
  • Page spacing Determines both vertical and horizontal space displayed between pages.
  • Thumbnail spacing Determines both vertical and horizontal space displayed between thumbnails.
  • Thumbnail size Determines the size of the thumbnails.
  • Cache size The program will try to cache rendered pages within this limit increasing rendering speed at the cost of increased memory usage.
  • Prefetch The program will try to render pages that are not yet visible increasing rendering speed at the cost of increased cache usage.
  • Prefetch distance The number of rows beyond the current row and twice the number of rows before the current row that are prefetched.
  • PDF settings
    • Antialiasing Improves display quality at the cost of performance
    • Text antialiasing Improves text display quality at the cost of performance
    • Text hinting May improve text display quality for certain fonts.
    • Overprint preview If enabled, a preview of printing one layer of ink on top of another is displayed.
    • Thin line mode Chooses the optimization used to draw thin lines.
    • Backend Chooses the backend used to render pages.
  • PS settings
    • Graphics antialias bits Determines the amount of antialiasing for graphics.
    • Text antialias bits Determines the amount of antialiasing for text.

Interface settings

  • Extended search dock If enabled, the default search dock is extended by an overview showing the results of all tabs. (Effective after restart.)
  • Annotation overlay If enabled, all annotations on a page will be displayed as an interactive overlay. Otherwise each annotation will be handled as a separate pop-up window.
  • Form field overlay If enabled, all form fields on a page will be displayed as an interactive overlay. Otherwise each form field will be handled as a separate pop-up window.
  • Tab position Defines at which edge of the main view tabs will be displayed.
  • Tab visibility Determines whether tabs will be displayed if less than two documents are opened.
  • Spread tabs Determines if tabs will be spread out evenly over the whole tab bar.
  • New tab next to current tab If enabled, new tabs are opened to the right of the active tab.
  • Exit after last tab If enabled, the application exits after the last tab is closed.
  • Recently used count Sets the number of files that are listed in the recently used menu, if "Track recently used" is enabled. (Effective after restart.)
  • Recently closed count Sets the number of tabs that are listed in the recently closed menu, if "Keep recently closed" is enabled. (Effective after restart.)
  • File tool bar Defines which actions are visible in the file tool bar. Available actions are openInNewTab, open, refresh, saveCopy, saveAs, print and separator. (Effective after restart.)
  • Edit tool bar Defines which actions are visible in the edit tool bar. Available actions are currentPage, previousPage, nextPage, firstPage, lastPage, jumpToPage, jumpBackward, jumpForward, search, copyToClipboardMode, addAnnotationMode and separator. (Effective after restart.)
  • View tool bar Defines which actions are visible in the view tool bar. Available actions are scaleFactor, zoomIn, zoomOut, continuousMode, twoPagesMode, twoPagesWithCoverPageMode, multiplePagesMode, originalSize, fitToPageWidthMode, fitToPageSizeMode, rotateLeft, rotateRight, fullscreen, presentation and separator. (Effective after restart.)
  • Document context menu Defines which actions are visible in the document's context menu. Available actions are openCopyInNewTab, openCopyInNewWindow, openContainingFolder, moveToInstance, previousPage, nextPage, firstPage, lastPage, jumpToPage, jumpBackward, jumpForward, setFirstPage, findPrevious, findNext, cancelSearch and separator.
  • Tab context menu Defines which actions are visible in a tab's context menu. Available actions are openCopyInNewTab, openCopyInNewWindow, openContainingFolder, moveToInstance, copyFilePath, selectFilePath, closeAllTabs, closeAllTabsButThisOne, closeAllTabsToTheLeft, closeAllTabsToTheRight and separator.
  • Scrollable menus Will override the default style so that pop-up menus scroll instead being laid-out in mutliple columns if they are larger than the available screen space. (Effective after restart.)
  • Searchable menus Extends the default keyboard navigation of the tabs and bookmarks menus by a search-as-you-type mechanism.
  • Toggle tool and menu bars with fullscreen Always toggles the visibility of the tool and menu bars when toggling fullscreen mode.
  • Use page label Determines if document-supplied page label will be used instead of page numbers when available.
  • Document title as tab title Determines if the tab title as derived from the meta-data instead of the file name.
  • Current page in window title If enabled, the current page and number of pages of the document in the active tab are displayed in the window title.
  • Instance name in window title If enabled and the current instance is named, its name is displayed in the window title.
  • Highlight current thumbnail If enabled, the current page is highlighted in the thumbnails view.
  • Limit thumbnails to results If this option is enabled and a search is conducted, only the pages where the search term is found are displayed in the thumbnails view.

Shortcut settings

The shortcut settings allows the adjustment of keyboard shortcuts to personal preference. Shortcuts are changed by double-clicking on the shortcut to edit it and entering the new shortcut. Each action can have several shortcuts by entering a semicolon-separated list of them. Names of keys that are not single letters are written out explicitly (e.g. "Alt", "Ctrl", "PgDown"), where the matching is not case sensitive. If the shortcut contains modifier keys, the names of the keys are joined by a plus sign and modifier keys must be listed first, e.g. "Ctrl+A" or "Ctrl++".

Modifier settings

  • Zoom The keyboard modifiers to zoom using the mouse wheel in the main view.
  • Rotate The keyboard modifiers to rotate using the mouse wheel in the main view.
  • Scroll The keyboard modifiers to scroll horizontally using the mouse wheel in the main view.
  • Copy to clipboard The keyboard modifiers to copy texts or images from a page to the clipboard.
  • Add annotation The keyboard modifiers to add annotations to a page.
  • Zoom to selection The keyboard modifiers to zoom to a slection on a page.
qpdfview-0.4.18/help/help_it.html0000644000000000000000000006471313516127411015035 0ustar 00000000000000 Guida

Guida

Sommario

  1. Menù principale
    1. File
    2. Modifica
    3. Visualizza
    4. Schede
    5. Segnalibri
    6. Aiuto
  2. Vista principale
  3. Viste ausiliarie
  4. Impostazioni
    1. Impostazioni del comportamento
    2. Impostazioni grafiche
    3. Impostazioni dell'interfaccia
    4. Impostazioni delle scorciatoie
    5. Impostazioni dei modificatori

Introduzione

qpdfview è un visualizzatore di documenti a schede. Utilizza Poppler per il supporto PDF, libspectre per PS, DjVuLibre per DjVu, CUPS per la stampa e il toolkit Qt per l'interfaccia.

Fare riferimento al manuale per informazioni sulle opzioni a riga di comando e per i file di configurazione.

Menù principale

File

  • Apri... apre un dialogo per consentire la scelta di un file da visualizzare nella scheda corrente. Se non è aperta alcuna scheda, il file verrà aperto in una nuova.
  • Apri in nuova scheda... apre un dialogo per consentire di scegliere i file da aprire nelle nuove schede.
  • Usati di recente contiene un elenco dei file usati più recentemente (se abilitato nelle impostazioni).
  • Aggiorna ricarica il file visualizzato nella scheda corrente.
  • Save Saves changes to annotations and form fields to the file displayed in the current tab.
  • Salva come... apre un dialogo per consentire il salvataggio del file visualizzato nella scheda corrente includendo le modifiche alle note e ai campi del form.
  • Save copy... Opens a dialog to save an umodified copy of the file displayed in the current tab.
  • Stampa... apre un dialogo per la stampa del file visualizzato nella scheda corrente.
  • Esci chiude tutte le schede e termina il programma.

Modifica

  • Pagina successiva/precedente e Prima/Ultima pagina consentono lo spostamento attraverso le pagine del documento.
  • Vai alla pagina... apre un dialogo dove inserire la pagina da visualizzare nella scheda corrente.
  • Va indietro/avanti si sposta indietro e avanti nella cronologia della pagina visualizzata.
  • Search... Opens the search dock below the main view. The search automatically starts two seconds after the last change of the search term or is manually started by pressing the return key. If the Shift modifier is held when the return key is pressed, the search starts in all tabs instead of just the current tab. (This effect is reversed if the extended search dock is enabled in the settings.)
  • Trova precedente/successivo va al risultato precedente/successivo del termine ricercato nel documento.
  • Cancel search Cancels the currently running search and closes the search dock.
  • Copia negli appunti se selezionato, il programma attenderà la selezione di una parte del documenti per copiare testi o immagini.
  • Aggiungi nota se selezionato, il programma attenderà la selezione di una parte del documento per aggiungere le note.
  • Impostazioni... apre la finestra delle impostazioni. Il pulsante «Predefiniti» riporterà tutte le impostazioni di tutte le schede ai valori predefiniti. Il pulsante «Ripristina i valori predefiniti per la scheda attuale» riporterà ai valori predefiniti solo le impostazioni della scheda corrente.

La scheda attuale può essere modificata inserendo la pagina desiderata nel campo di testo della barra di modifica, attivabile usando Ctrl+K e premendo il tasto «Invio».

Visualizza

  • Continuo indica se rendere visibili tutte le righe della pagina in una volta.
  • Due pagine indica se il layout della pagina usa due colonne.
  • Due pagine compresa la copertina indica se il layout della pagina usa due colonne con una interruzione dopo la copertina.
  • Pagine multiple indica se il layout della pagina usa più colonne. Il numero di colonne può essere modificato nelle impostazioni.
  • Da destra a sinistra indica come posizionare le pagine nei layout con più pagine per riga.
  • Zoom in Increases the scale factor by 10 percent. The maximum scale factor is 5000 percent.
  • Zoom out Decreases the scale factor by 10 percent. The minimum scale factor is 10 percent.
  • Dimensione originale ripristina il fattore di scala al 100%.
  • Adatta alla larghezza della pagina indica il fattore di scala consentendo la visualizzazione di tutte le pagine adattate alla dimensione orizzontale della finestra principale.
  • Adatta alla dimensione della pagina indica il fattore di scala consentendo la visualizzazione di tutte le pagine adattate alla dimensione orizzontale e verticale della finestra principale.
  • Ruota a sinistra ruota le pagine a sinistra (in senso antiorario) di 90 gradi.
  • Ruota a destra ruota le pagine a destra (in senso orario) di 90 gradi.
  • Inverti colori indica se le pagine vengono mostrate con i colori invertiti.
  • Convert to grayscale Determines whether pages are converted to grayscale after rendering.
  • Trim margins Enables the removal of empty page margins after rendering.
  • Composition Enables the composition of the rendered page with the paper color to adjust the background of scanned documents.
  • Barre degli strumenti contiene un elenco delle barre degli strumenti disponibili per accedere rapidamente alle azioni svolte di frequente.
  • Elementi contiene un elenco di elementi disponibili per mostrare informazioni supplementari.
  • Caratteri... apre un dialogo con l'elenco dei tipi di carattere usati nel documento.
  • Schermo intero attiva/disattiva la modalità a schermo intero. Per esempio, la finestra viene mostrata massimizzata e senza decorazioni.
  • Presentazione... avvia la modalità "presentazione" che può essere terminata premendo F12 o Esc. I tasti "Home/Fine" vengono usati per mostrare la prima o l'ultima pagina. I tasti freccia su e giù, la barra spaziatrice e il tasto pagina giù vanno alla pagina successiva. I tasti freccia a sinistra e freccia su vanno alla pagina precedente. Premendo Ctrl e Invio si tornerà alla pagina visualizzata prima dell'ultimo spostamento.

Il fattore di scala può essere modificato inserendo la percentuale desiderata nell campo di testo nella barra della visualizzazione che può essere attivato usando Ctrl+L e premendo il tasto Invio.

Schede

  • Scheda precedente/successiva attiva la scheda precedente/successiva. Esegue un ciclo ultima/prima scheda se la prima/ultima scheda è quella attuale.
  • Chiudi scheda chiude la scheda corrente.
  • Chiudi tutte le schede chiude tutte le schede.
  • Chiudi tutte le schede tranne questa chiude tutte le schede ad eccezione della scheda in primo piano.
  • Chiusi di recente contiene un elenco delle schede chiuse più di recente (se abilitato nelle impostazioni).

Questo menù contiene un elenco di tutte le schede che possono essere attivate facendo clic sull'elemento del menù corrispondente. Le schede possono anche essere chiuse facendo clic con il pulsante centrale del mouse. Le prime nove schede possono anche essere attivate tenendo premuto «Alt» e premendo i tasti da uno a nove.

Segnalibri

  • Segnalibro precedente va al segnalibro più vicino prima della pagina corrente.
  • Segnalibro successivo va al segnalibro più vicino dopo la pagina corrente.
  • Aggiungi segnalibro aggiunge un segnalibro per il file e la pagina attuale.
  • Rimuovi segnalibro rimuove il segnalibro per il file e la pagina attuale.
  • Rimuovi tutti i segnalibri rimuove tutti i segnalibri.
  • Apri apre il file corrispondente nella scheda attuale. Se non c'è una scheda il file verrà aperto in una nuova scheda.
  • Apri in nuova scheda apre il file corrispondente in una nuova scheda.
  • Vai alla pagina va alla pagina corrispondente se il file è già aperto. In alternativa il file corrispondente verrà aperto in una nuova scheda.

Aiuto

  • Contenuti mostra questo documento.
  • Informazioni mostra la versione del programma.

Vista principale

The backspace/space key skips to the previous/next page. The home/end key skips to the first/last page. The arrow, page up and page down keys scroll the viewport. Pressing control and return jumps to the page before the last jump.

Using the mouse wheel scrolls up and down. Holding ALT while using the mouse wheel scrolls left and right. Holding CTRL while using the mouse wheel scales the document. Holding SHIFT while using the mouse wheel rotates the document. (Keyboard modifiers can be changed in the settings dialog.) Click and hold the middle mouse button to select a rectangle to zoom to.

Links are highlighted by red frames (if enabled in the settings). Left-click on a link to show the linked page or open the linked URL in the default browser (if enabled in the settings). Middle-click on a link to show the linked page in a new tab. Hovering over a link displays its destination as a tool tip.

Form fields are highlighted by blue frames (if enabled in the settings). Left-click on a form field to edit its contents. Hovering over a form field displays its name as a tool tip.

The source of a position in the document can be opened in the source editor using the context menu which optionally contains an item for the first matching SyncTeX node.

To copy texts or images, hold SHIFT, click and hold the left mouse button to drag a frame around the area to copy. Once the mouse button is released, a pop-up menu is displayed to select whether to copy texts or images into the clipboard.

To add annotations, hold CTRL, click and hold the left mouse button to drag a frame around the region to annotate. Once the mouse button is released, a pop-up menu is displayed to select whether to add text or highlight annotations. Left-click to edit annotations. Right-click to remove annotations. (Adding and removing annotations requires version 0.20.1 or higher of the Poppler library.) Hovering over an annotation displays its contents as a tool tip.

To zoom to a selection, hold SHIFT and CTRL, click and hold the left mouse button to drag a frame around region to zoom into.

The visibility of the tool and menu bars can be toggled using configurable keyboard shortcuts whose default values are "Shift+Alt+T" and "Shift+Alt+M".

Viste ausiliarie

The outline view displays an overview of the contents of the document. A left click on an entry jumps to the respective page in the main view. The context menu can be used to expand/collapse all items below the selected item.

The outline view can also be navigated using the keyboard and the mouse wheel. Holding Shift and using the Up/Down keys will scroll the view. Holding Shift and using the Left/Right keys will collapse/expand one level of items below the selected item. Holding Control and using the Left/Right keys will completely collapse/expand the selected item and its children. Holding Shift and using the mousel wheel will change the selected item. Holding Control and using the mouse wheel will expand/collapse the selected item.

The properties view displays additional information contained in the document.

The thumbnails view displays smaller versions of the pages of the document. A left click on an entry jumps to the respective page in the main view.

The bookmarks view shows the bookmarks related to the document displayed in the current tab. The context menu contains entries to jump to the previous/next boookmark or to add bookmarks. The context menu of each entry also contains entries to edit and delete bookmarks.

If enabled in the settings, the extended search dock shows an overview containing the results of all searches being performed in all tabs. It also shows the text surrounding a result with the search term being emphasized. Clicking on a result opens the corresponding tab and jumps to its position.

Impostazioni

Impostazioni del comportamento

  • Aprire URL indica se i collegamenti a URL devono essere aperti nel browser predefinito.
  • Aggiornare automaticamente indica se i file vengono ricaricati automaticamente se modificati sul disco.
  • Track recently used If enabled, a recently used menu is available and lists as many recently used files as set in the "Recently used count" option. (Effective after restart.)
  • Keep recently closed If enabled, a recently closed menu is available and lists as many recently closed tabs as set in the "Recently closed count" option. Keeping the tabs available could increase memory usage considerably. (Effective after restart.)
  • Ripristinare schede se abilitato, le schede e le relative proprietà vengono salvate alla chiusura del programma e ripristinate al riavvio.
  • Ripristinare segnalibri se abilitato, i segnalibri vengono salvati alla chiusura del programma e ripristinati al riavvio.
  • Modificare impostazioni per singoli file se abilitato, le impostazioni per ogni singolo file vengono salvate/ripristinate all'apertura e alla chiusura delle schede.
  • Save database interval The interval after which tabs, bookmarks or per-file settings are saved to the database.
  • Sincronizzare presentazione se abilitato, consente di usare la vista principale per controllare la presentazione.
  • Schermo per presentazione indica l'indice dello schermo su cui visualizzare la presentazione.
  • Synchronize outline view If enabled, the outline view will highlight the first entry pointing to the current page whenever the current page changes.
  • Minimal scrolling If enabled, the view port will only be scrolled if the target position is not yet visible.
  • Zoom factor The number by which the scale factor is multiplied resp. divided upon zooming in resp. out.
  • Colore dell'evidenziatore indica il colore dell'evidenziatore.
  • Durata dell'evidenziatore indica la durata delle evidenziazioni temporanee.
  • Colore dell'annotazione il colore delle note aggiunte dal programma usando codici colore SVG o natazioni esadecimali «#rrggbb».
  • Source editor The program which is started to edit sources. '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number.

Impostazioni della grafica

  • Use tiling Pages will be divided into tiles before rendering and caching to reduce memory usage.
  • Keep obsolete pixmaps If enabled, then upon change of the zoom factor, cached pixmaps will be used to draw approximations of final pixmaps until these are available at the cost of increased memory usage.
  • Use device pixel ratio If enabled, the highest available device pixel ratio is used to render at physical and display at logical resolution.
  • Decorate pages Determines whether pages are set apart from the background.
  • Decorate links Determines whether links are highlighted by red frames.
  • Decorare campo del form indica se i campi del form sono evidenziati con frame blu.
  • Colore di fondo indica il colore dello sfondo usando colori SVG o notazioni esadecimali «#rrggbb».
  • Colore della carta indica il colore delle pagine usando colori SVG o notazioni esadecimali «#rrggbb».
  • Colore sfondo presentazione sovrascrive il colore della carta per lo sfondo della presentazione ed è definito usando colori SVG o notazioni esadecimali «#rrggbb».
  • Pagine per riga indica il numero di pagine per riga nella modalità a pagine multiple.
  • Spaziatura pagina indica lo spazio sia orizzontale che verticale mostrato tra le pagine.
  • Spaziatura miniatura indica lo spazio sia orizzontale che verticale mostrato tra le miniature.
  • Dimensione miniatura indica la dimensione delle miniature.
  • Cache size The program will try to cache rendered pages within this limit increasing rendering speed at the cost of increased memory usage.
  • Prefetch The program will try to render pages that are not yet visible increasing rendering speed at the cost of increased cache usage.
  • Prefetch distance The number of rows beyond the current row and twice the number of rows before the current row that are prefetched.
  • Impostazioni PDF
    • Antialiasing migliora la qualità di visualizzazione a scapito delle prestazioni.
    • Antialiasing del testo migliora la qualità del testo mostrato a scapito delle prestazioni.
    • Approssimazione del testo può migliorare la qualità del testo mostrato per alcuni tipi di carattere.
    • Overprint preview If enabled, a preview of printing one layer of ink on top of another is displayed.
    • Thin line mode Chooses the optimization used to draw thin lines.
    • Backend seleziona il backend usanto per il render delle pagine.
  • Impostazioni PS
    • Graphics antialias bits Determines the amount of antialiasing for graphics.
    • Approssimazione del desto indica la misura di approssimazione per il testo.

Impostazioni interfaccia

  • Extended search dock If enabled, the default search dock is extended by an overview showing the results of all tabs. (Effective after restart.)
  • Annotation overlay If enabled, all annotations on a page will be displayed as an interactive overlay. Otherwise each annotation will be handled as a separate pop-up window.
  • Form field overlay If enabled, all form fields on a page will be displayed as an interactive overlay. Otherwise each form field will be handled as a separate pop-up window.
  • Posizione scheda indica su quale lato della vista principale verranno mostrate le schede.
  • Visibilità scheda indica se mostrare le schede se sono aperti meno di due documenti.
  • Spread tabs Determines if tabs will be spread out evenly over the whole tab bar.
  • Nuova scheda dopo quella attualese abilitato, le nuovo schede verranno aperte alla destra di quella attiva.
  • Exit after last tab If enabled, the application exits after the last tab is closed.
  • Conteggio usati di recente imposta il numero di file che vengono elencati nel relativo menù se «Memorizzare usati di recente» è abilitato. (Le modifiche hanno effetto dopo il riavvio.)
  • Conteggio chiusi di recente imposta il numero di schede elencate nel relativo menù, se «Mantenere chiuse di recente» è abilitato. (Le modifiche hanno effetto dopo il riavvio.)
  • Barra degli strumenti «File» indica quali azioni sono disponibili nella barre degli strumenti File. Le azioni disponibili sono openInNewTab, open, refresh, saveCopy, saveAs, print e separator. (Le modifiche hanno effetto dopo il riavvio.)
  • Barra degli strumenti «Modifica» indica quali azioni sono visibili nella barra degli strumenti Modifica. Le azioni disponibili sono currentPage, previousPage, nextPage, firstPage, lastPage, jumpToPage, jumpBackward, jumpForward, search, copyToClipboardMode, addAnnotationMode e separator. (Le modifiche hanno effetto dopo il riavvio.)
  • Barra degli strumenti «Visualizza» indica quali azioni sono visibili nella barra degli strumenti Visualizza. Le azioni disponibili sono scaleFactor, zoomIn, zoomOut, continuousMode, twoPagesMode, twoPagesWithCoverPageMode, multiplePagesMode, originalSize, fitToPageWidthMode, fitToPageSizeMode, rotateLeft, rotateRight, fullscreen, presentation e separator. (Le modifiche hanno effetto dopo il riavvio.)
  • Document context menu Defines which actions are visible in the document's context menu. Available actions are openCopyInNewTab, openCopyInNewWindow, openContainingFolder, moveToInstance, previousPage, nextPage, firstPage, lastPage, jumpToPage, jumpBackward, jumpForward, setFirstPage, findPrevious, findNext, cancelSearch and separator.
  • Tab context menu Defines which actions are visible in a tab's context menu. Available actions are openCopyInNewTab, openCopyInNewWindow, openContainingFolder, moveToInstance, copyFilePath, selectFilePath, closeAllTabs, closeAllTabsButThisOne, closeAllTabsToTheLeft, closeAllTabsToTheRight and separator.
  • Scrollable menus Will override the default style so that pop-up menus scroll instead being laid-out in mutliple columns if they are larger than the available screen space. (Effective after restart.)
  • Searchable menus Extends the default keyboard navigation of the tabs and bookmarks menus by a search-as-you-type mechanism.
  • Toggle tool and menu bars with fullscreen Always toggles the visibility of the tool and menu bars when toggling fullscreen mode.
  • Use page label Determines if document-supplied page label will be used instead of page numbers when available.
  • Titolo del documento come titolo della scheda indica se il titolo della scheda dovrà essere determinato dai meta-dati anziché dal nome del file.
  • Pagina attuale nel titolo della finestra se abilitato, la pagina attuale e il numero di pagine del documento verranno usati come titolo della finestra.
  • Nome dell'istanza nel titolo della finestra se abilitato, e l'istanza attuale ha un nome, il nome verrà usato com e titolo della finestra.
  • Evidenziare scheda corrente se abilitato, la pagina attuale verrà evidenziata nelle miniature.
  • Limit thumbnails to results If this option is enabled and a search is conducted, only the pages where the search term is found are displayed in the thumbnails view.

Impostazioni delle scorciatoie

The shortcut settings allows the adjustment of keyboard shortcuts to personal preference. Shortcuts are changed by double-clicking on the shortcut to edit it and entering the new shortcut. Each action can have several shortcuts by entering a semicolon-separated list of them. Names of keys that are not single letters are written out explicitly (e.g. "Alt", "Ctrl", "PgDown"), where the matching is not case sensitive. If the shortcut contains modifier keys, the names of the keys are joined by a plus sign and modifier keys must be listed first, e.g. "Ctrl+A" or "Ctrl++".

Impostazioni modificatori

  • Ingrandimento il tasto da usare con la rotella del mouse per variare la dimensione della vista principale.
  • Rotazione il tasto da usare con la rotella del mouse per ruotare la vista principale.
  • Scorrimento il tasto da usare con la rotella del mouse per scorrere orizzontalmente la vista principale.
  • Copia negli appunti il tasto da usare per copiare testi e immagini da una pagina agli appunti.
  • Aggiungi nota il tasto per aggiungere note nella pagina.
  • Zoom to selection The keyboard modifiers to zoom to a slection on a page.
qpdfview-0.4.18/help/help_ja.html0000644000000000000000000006730513516127411015013 0ustar 00000000000000 ヘルプ

ヘルプ

目次

  1. メインメニュー
    1. ファイル
    2. 編集
    3. 表示
    4. タブ
    5. しおり
    6. ヘルプ
  2. メインビュー
  3. 予備ビュー
  4. 設定
    1. 挙動設定
    2. 画像設定
    3. インタフェース設定
    4. ショートカット設定
    5. 修飾キー設定

はじめに

qpdfview はタブ型文書ビューアです。PDF サポートに Poppler、PS サポートに libspectre、DjVu サポートに DjVuLibre、印刷サポートに CUPS、インタフェースに Qt toolkit を使用しています。

コマンドラインオプションと設定ファイルの情報については、マニュアルページを参照してください。

メインメニュー

ファイル

  • 開く... 現在のタブで開くファイルを選択するダイアログを開きます。タブが無い場合は新規タブにファイルを開きます。
  • 新規タブで開く... 新規タブで開くファイルを選択するダイアログを開きます。
  • 最近使用したもの 最近使用したファイルの一覧を含みます (設定で有効になっている場合)。
  • 再読込 現在のタブに表示されているファイルを再読み込みします。
  • 保存 註釈やフォームフィールドへの変更を、現在のタブに表示されているファイルへ保存します。
  • 名前を付けて保存... 現在のタブに表示されている内容に対して行われた、註釈やフォームフィールドへの変更を、ファイルへ保存するダイアログを開きます。
  • コピーを保存... 現在のタブに表示されているファイルのコピーを、未変更のまま保存するダイアログを開きます。
  • 印刷... 現在のタブに表示されているファイルを印刷するダイアログを開きます。
  • 終了 全てのタブを閉じてプログラムを終了します。

編集

  • 前ページ/次ページ/最初のページ/最後のページ 文書の前のページ、次のページ、最初のページ、最後のページへ移動します。
  • 指定ページへ跳ぶ... 現在のタブに表示するページを入力するダイアログを開きます。
  • 後ろに跳ぶ/前に跳ぶ 表示されているページの履歴で前後に跳びます。
  • 検索... メインビューの下に検索ドックを開きます。そこに文字を入力すると、2秒後に自動的に検索が開始されます。また、リターンキーを押して手動で開始することもできます。リターンキーを押下する際に Shift キーも押しておくと、現在のタブだけではなく全てのタブに対して検索を行います (この挙動は、設定で拡張検索ドックが有効になっていると逆になります)。
  • 前を検索/次を検索 文書内の検索用語が出現する前の場所、次の場所に跳びます。
  • 検索を取り消す 現在実行中の検索を取り止め、検索ドックを閉じます。
  • クリップボードにコピー チェックを入れると、ドラッグで範囲選択できるようになり、選択した部分のテキストや画像をコピーすることができます。
  • 註釈を追加 チェックを入れると、ドラッグで範囲選択できるようになり、選択した部分に註釈を追加することができます。
  • 設定... 設定ダイアログを開きます。「既定」ボタンを押すと、全てのタブの設定が既定値に戻ります。「このタブの既定値」ボタンは、現在のタブのみを既定値に戻します。

現在のページは、Ctrl + K を押して編集ツールバーのテキストフィールドにフォーカスを移し、目的のページ数を入力してリターンキーを押すことで、変更できます。

表示

  • 連続表示 全てのページを一度に表示するかどうかを指定します。
  • 見開き 2つのページを横に並べて表示するかどうかを指定します。
  • 見開き(表紙付き) カバーページ以降の2つのページを横に並べて表示するかどうかを指定します。
  • 複数ページ 複数のページを横に並べて表示するかどうかを指定します。一行あたりのページ数は設定ダイアログで変更できます。
  • 右から左 複数のページを横に並べる方向を指定します。
  • 拡大 拡大率を10%増加します。最大倍率は5000%です。
  • 縮小 拡大率を10%縮小します。最小倍率は10%です。
  • 原寸大 拡大率を100%に戻します。
  • ページ幅に合わせる 全てのページがメインビューの横幅に完全に収まるように拡大率を指定します。
  • ページ寸法に合わせる 全てのページがメインビューの縦幅と横幅に完全に収まるように拡大率を指定します。
  • 左に回転 ページを左/反時計回りに90度回転します。
  • 右に回転 ページを右/時計回りに90度回転します。
  • 色を反転 反転された色でページを描画するかどうかを指定します。
  • グレースケールに変換 ページを描画した後グレースケールに変換するかどうかを指定します。
  • 余白を落とす ページ描画後の余白 (マージン) 削除を有効にします。
  • 合成 スキャンされた文書の背景を調整するために、紙の色と描画されたページの合成を有効にします。
  • ツールバー このメニューには、使用頻度が高い動作を利用できるツールバーの一覧が表示されます。
  • ドック このメニューには、補足情報を表示するための利用可能なドックの一覧が表示されます。
  • フォント... 文書中で使用されるフォント一覧のダイアログを開きます。
  • 全画面表示 全画面表示モードを切り替えます。ウィンドウは最大化され、ウィンドウ装飾が非表示になります。
  • プレゼンテーション... F12 を押すとプレゼンテーションモードになります。Home キーを押すと最初のページを、End キーを押すと最後のページを表示します。矢印キーの → と ↓、スペースキーと Page Down キーで次のページに移動します。矢印キーの ← と ↑、Back Space キーと Page Up キーで前のページに移動します。Ctrl キーを押しながらリターンキーを押すと、前に表示したページに跳びます。

拡大率は Ctrl + L を押して表示ツールバーのテキストフィールドにフォーカスを移し、任意の数値を入力してリターンキーを押すことで変更できます。

タブ

  • 前のタブ/次のタブ 前のタブ/次のタブを現在のタブにします。現在のタブが先頭/末尾のタブの場合は循環します。
  • タブを閉じる 現在のタブを閉じます。
  • 全てのタブを閉じる 全てのタブを閉じます。
  • 現在のタブ以外全て閉じる 現在のタブを除いた全てのタブを閉じます。
  • 最近閉じたもの 最近閉じたタブの一覧が表示されます (設定で有効になっている場合)。

このメニューには、クリックすることで現在のタブとして表示できる全てのタブが、メニュー項目として表示されます。タブは中クリックで閉じることができます。最初の9個までのタブは、Alt キーを押しながら 1 〜 9 の数字キーを押すことで切り替えることもできます。

しおり

  • 前のしおり 現在のページより前の直近のしおりに跳びます。
  • 次のしおり 現在のページより後の直近のしおりに跳びます。
  • しおりを付ける 現在のファイルとページにしおりを追加します。
  • しおりを外す 現在のファイルとページからしおりを削除します。
  • しおりを全て外す 全てのしおりを削除します。
  • 開く 任意のファイルを現在のタブに開きます。タブが無い場合は新しいタブにファイルが開かれます。
  • 新規タブで開く 新しいタブにファイルを開きます。
  • 指定ページへ跳ぶ 対象のファイルを既に開いている場合は、直接そのページに移動します。そうでない場合は新しいタブにファイルを開きます。

ヘルプ

  • 目次 この文書を表示します。
  • qpdfviewについて プログラムのバージョンを表示します。

メインビュー

Back Space キーで前のページ、スペースキーで次のページ、Home キーで最初のページ、End キーで最後のページに移動します。矢印キーの ↑ と ↓、Page Up/Down キーでページを上下にスクロールします。Ctrl キーを押しながらリターンキーを押すとページの表示履歴を遡ります。

マウスホイールを上下に動かすとページがスクロールします。ALT を押しながらマウスホイールを動かすと左右にスクロールします。CTRL を押しながらマウスホイールを動かすと文書を拡大/縮小します。SHIFT を押しながらマウスホイールを動かすと文書が回転します (各キーは設定ダイアログで変更できます)。

リンクは赤い枠で囲われて強調されます (設定で有効になっている場合)。リンクを左クリックするとリンク先のページに移動するか、リンク先の URL をデフォルトのブラウザーで開きます (設定で有効になっている場合)。リンクを中クリックするとリンク先のページを新しいタブで表示します。リンクにカーソルを合わせるとリンク先をツールチップとして表示します。

フォームフィールドは青い枠で囲われて強調されます (設定で有効になっている場合)。フォームフィールドを左クリックすると内容を編集できます。フォームフィールドにカーソルを合わせると名前をツールチップとして表示します。

文書内のソースは、最初に一致した SyncTeX ノードの項目を含むコンテキストメニューから、ソースエディターで開くことができます。

文字や画像をコピーする場合は、SHIFT を押しながら対象の範囲をマウスの左ボタンでドラッグして選択します。マウスのボタンを放すと、文字や画像をクリップボードにコピーするポップアップメニューが表示されます。

註釈を追加する場合は、CTRL を押したままマウスの左ボタンでドラッグし、範囲選択します。マウスボタンを放すと、文字を追加したり註釈を強調したりできるポップアップメニューが表示されます。左クリックで註釈を編集、右クリックで註釈を削除できます (註釈の追加や削除にはバージョン 0.20.1 以降の Poppler ライブラリが必要です)。註釈にカーソルを合わせると内容をツールチップとして表示します。

特定の部分を拡大表示する場合は、SHIFTCTRL を押したままマウスの左ボタンでドラッグし、拡大表示したい範囲を選択します。

ツールバーとメニューバーは、キーボードショートカットで表示/非表示を切り替えることができます。初期設定では、ツールバーの表示切り替えは "Shift + Alt + T"、メニューバーの表示切り替えは "Shift + Alt + M" になっています。

補助ビュー

概要ビューは文書の内容の概要を表示します。各項目を左クリックすると、そのページがメインビューに表示されます。各項目を右クリックすると、その項目の要素を全て展開/畳むコンテキストメニューが表示されます。

The outline view can also be navigated using the keyboard and the mouse wheel. Holding Shift and using the Up/Down keys will scroll the view. Holding Shift and using the Left/Right keys will collapse/expand one level of items below the selected item. Holding Control and using the Left/Right keys will completely collapse/expand the selected item and its children. Holding Shift and using the mousel wheel will change the selected item. Holding Control and using the mouse wheel will expand/collapse the selected item.

The properties view displays additional information contained in the document.

The thumbnails view displays smaller versions of the pages of the document. A left click on an entry jumps to the respective page in the main view.

The bookmarks view shows the bookmarks related to the document displayed in the current tab. The context menu contains entries to jump to the previous/next boookmark or to add bookmarks. The context menu of each entry also contains entries to edit and delete bookmarks.

If enabled in the settings, the extended search dock shows an overview containing the results of all searches being performed in all tabs. It also shows the text surrounding a result with the search term being emphasized. Clicking on a result opens the corresponding tab and jumps to its position.

Settings

Behavior settings

  • Open URL Determines whether links to URL are opened in the default browser.
  • Auto-refresh Determines whether files are automatically reloaded if changed on disk.
  • Track recently used If enabled, a recently used menu is available and lists as many recently used files as set in the "Recently used count" option. (Effective after restart.)
  • Keep recently closed If enabled, a recently closed menu is available and lists as many recently closed tabs as set in the "Recently closed count" option. Keeping the tabs available could increase memory usage considerably. (Effective after restart.)
  • Restore tabs If enabled, tabs and their properties are saved on ending the program and restored on restart.
  • Restore bookmarks If enabled, bookmarks are saved on ending the program and restored on restart.
  • Restore per-file settings If enabled, per-file settings are saved/restored on opening/closing tabs.
  • Save database interval The interval after which tabs, bookmarks or per-file settings are saved to the database.
  • Synchronize presentation If enabled, the main view can be used to control the presentation view.
  • Presentation screen The index of the screen to display the presentation view on.
  • Synchronize outline view If enabled, the outline view will highlight the first entry pointing to the current page whenever the current page changes.
  • Minimal scrolling If enabled, the view port will only be scrolled if the target position is not yet visible.
  • Zoom factor The number by which the scale factor is multiplied resp. divided upon zooming in resp. out.
  • Highlight color Determines the color of highlights.
  • Highlight duration Determines the duration of temporary highlights.
  • Annotation color The color of annotations added by the program using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Source editor The program which is started to edit sources. '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number.

Graphics settings

  • Use tiling Pages will be divided into tiles before rendering and caching to reduce memory usage.
  • Keep obsolete pixmaps If enabled, then upon change of the zoom factor, cached pixmaps will be used to draw approximations of final pixmaps until these are available at the cost of increased memory usage.
  • Use device pixel ratio If enabled, the highest available device pixel ratio is used to render at physical and display at logical resolution.
  • Decorate pages Determines whether pages are set apart from the background.
  • Decorate links Determines whether links are highlighted by red frames.
  • Decorate form fields Determines whether form fields are highlighted by blue frames.
  • Background color Determines the color of the background using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Paper color Determines the color of pages using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Presentation background color Overrides the paper color in the computation of the background color of the presentation view and is defined using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Pages per row Number of pages per row in the 'multiple pages' layout mode.
  • Page spacing Determines both vertical and horizontal space displayed between pages.
  • Thumbnail spacing Determines both vertical and horizontal space displayed between thumbnails.
  • Thumbnail size Determines the size of the thumbnails.
  • Cache size The program will try to cache rendered pages within this limit increasing rendering speed at the cost of increased memory usage.
  • Prefetch The program will try to render pages that are not yet visible increasing rendering speed at the cost of increased cache usage.
  • Prefetch distance The number of rows beyond the current row and twice the number of rows before the current row that are prefetched.
  • PDF settings
    • Antialiasing Improves display quality at the cost of performance
    • Text antialiasing Improves text display quality at the cost of performance
    • Text hinting May improve text display quality for certain fonts.
    • Overprint preview If enabled, a preview of printing one layer of ink on top of another is displayed.
    • Thin line mode Chooses the optimization used to draw thin lines.
    • Backend Chooses the backend used to render pages.
  • PS settings
    • Graphics antialias bits Determines the amount of antialiasing for graphics.
    • Text antialias bits Determines the amount of antialiasing for text.

Interface settings

  • Extended search dock If enabled, the default search dock is extended by an overview showing the results of all tabs. (Effective after restart.)
  • Annotation overlay If enabled, all annotations on a page will be displayed as an interactive overlay. Otherwise each annotation will be handled as a separate pop-up window.
  • Form field overlay If enabled, all form fields on a page will be displayed as an interactive overlay. Otherwise each form field will be handled as a separate pop-up window.
  • Tab position Defines at which edge of the main view tabs will be displayed.
  • Tab visibility Determines whether tabs will be displayed if less than two documents are opened.
  • Spread tabs Determines if tabs will be spread out evenly over the whole tab bar.
  • New tab next to current tab If enabled, new tabs are opened to the right of the active tab.
  • Exit after last tab If enabled, the application exits after the last tab is closed.
  • Recently used count Sets the number of files that are listed in the recently used menu, if "Track recently used" is enabled. (Effective after restart.)
  • Recently closed count Sets the number of tabs that are listed in the recently closed menu, if "Keep recently closed" is enabled. (Effective after restart.)
  • File tool bar Defines which actions are visible in the file tool bar. Available actions are openInNewTab, open, refresh, saveCopy, saveAs, print and separator. (Effective after restart.)
  • Edit tool bar Defines which actions are visible in the edit tool bar. Available actions are currentPage, previousPage, nextPage, firstPage, lastPage, jumpToPage, jumpBackward, jumpForward, search, copyToClipboardMode, addAnnotationMode and separator. (Effective after restart.)
  • View tool bar Defines which actions are visible in the view tool bar. Available actions are scaleFactor, zoomIn, zoomOut, continuousMode, twoPagesMode, twoPagesWithCoverPageMode, multiplePagesMode, originalSize, fitToPageWidthMode, fitToPageSizeMode, rotateLeft, rotateRight, fullscreen, presentation and separator. (Effective after restart.)
  • Document context menu Defines which actions are visible in the document's context menu. Available actions are openCopyInNewTab, openCopyInNewWindow, openContainingFolder, moveToInstance, previousPage, nextPage, firstPage, lastPage, jumpToPage, jumpBackward, jumpForward, setFirstPage, findPrevious, findNext, cancelSearch and separator.
  • Tab context menu Defines which actions are visible in a tab's context menu. Available actions are openCopyInNewTab, openCopyInNewWindow, openContainingFolder, moveToInstance, copyFilePath, selectFilePath, closeAllTabs, closeAllTabsButThisOne, closeAllTabsToTheLeft, closeAllTabsToTheRight and separator.
  • Scrollable menus Will override the default style so that pop-up menus scroll instead being laid-out in mutliple columns if they are larger than the available screen space. (Effective after restart.)
  • Searchable menus Extends the default keyboard navigation of the tabs and bookmarks menus by a search-as-you-type mechanism.
  • Toggle tool and menu bars with fullscreen Always toggles the visibility of the tool and menu bars when toggling fullscreen mode.
  • Use page label Determines if document-supplied page label will be used instead of page numbers when available.
  • Document title as tab title Determines if the tab title as derived from the meta-data instead of the file name.
  • Current page in window title If enabled, the current page and number of pages of the document in the active tab are displayed in the window title.
  • Instance name in window title If enabled and the current instance is named, its name is displayed in the window title.
  • Highlight current thumbnail If enabled, the current page is highlighted in the thumbnails view.
  • Limit thumbnails to results If this option is enabled and a search is conducted, only the pages where the search term is found are displayed in the thumbnails view.

Shortcut settings

The shortcut settings allows the adjustment of keyboard shortcuts to personal preference. Shortcuts are changed by double-clicking on the shortcut to edit it and entering the new shortcut. Each action can have several shortcuts by entering a semicolon-separated list of them. Names of keys that are not single letters are written out explicitly (e.g. "Alt", "Ctrl", "PgDown"), where the matching is not case sensitive. If the shortcut contains modifier keys, the names of the keys are joined by a plus sign and modifier keys must be listed first, e.g. "Ctrl+A" or "Ctrl++".

Modifier settings

  • Zoom The keyboard modifiers to zoom using the mouse wheel in the main view.
  • Rotate The keyboard modifiers to rotate using the mouse wheel in the main view.
  • Scroll The keyboard modifiers to scroll horizontally using the mouse wheel in the main view.
  • Copy to clipboard The keyboard modifiers to copy texts or images from a page to the clipboard.
  • Add annotation The keyboard modifiers to add annotations to a page.
  • Zoom to selection The keyboard modifiers to zoom to a slection on a page.
qpdfview-0.4.18/help/help_ko.html0000644000000000000000000006141113516127411015022 0ustar 00000000000000 Help

Help

Table of contents

  1. Main menu
    1. File
    2. Edit
    3. View
    4. Tabs
    5. Bookmarks
    6. Help
  2. Main view
  3. Auxiliary views
  4. Settings
    1. Behavior settings
    2. Graphics settings
    3. Interface settings
    4. Shortcut settings
    5. Modifier settings

Introduction

qpdfview is a tabbed document viewer. It uses Poppler for PDF support, libspectre for PS support, DjVuLibre for DjVu support, CUPS for printing support and the Qt toolkit for its interface.

Please refer to the manual page for information on command-line options and configuration files.

Main menu

File

  • Open... Opens a dialog to choose a file to open in the current tab. If there is no tab, the file is opened in a new tab.
  • Open in new tab... Opens a dialog to choose files to open in new tabs.
  • Recently used Contains a list of the most recently used files (if enabled in the settings).
  • Refresh Reloads the file displayed in the current tab.
  • Save Saves changes to annotations and form fields to the file displayed in the current tab.
  • Save as... Opens a dialog to save the file displayed in the current tab including changes to annotations and form fields.
  • Save copy... Opens a dialog to save an umodified copy of the file displayed in the current tab.
  • Print... Opens a dialog to print the file displayed in the current tab.
  • Exit Closes all tabs and ends the program.

Edit

  • Next/Previous/First/Last page Skips to the next/previous/first/last page of the document.
  • Jump to page... Opens a dialog to enter a page to display in the current tab.
  • Jump backward/forward Jumps backward/forward in the history of displayed page.
  • Search... Opens the search dock below the main view. The search automatically starts two seconds after the last change of the search term or is manually started by pressing the return key. If the Shift modifier is held when the return key is pressed, the search starts in all tabs instead of just the current tab. (This effect is reversed if the extended search dock is enabled in the settings.)
  • Find previous/next Jumps to the previous/next occurrence of the search term in the document.
  • Cancel search Cancels the currently running search and closes the search dock.
  • Copy to clipboard If checked, the program will wait for a frame to be dragged to copy texts or images.
  • Add annotation If checked, the program will wait for a frame to be dragged to add annotations.
  • Settings... Opens the settings dialog. The button labeled 'Defaults' will revert all settings on all tabs to their default values. The button labeled 'Defaults on current tab' will revert only the settings on the current tab to their default values.

The current page can be changed by entering the desired page into the text field in the edit tool bar, which can be focused using Ctrl+K, and pressing the return key.

View

  • Continuous Determines whether all rows of the page layout are visible at once.
  • Two pages Determines whether the page layout uses two columns.
  • Two pages with cover page Determines whether the page layout uses two columns with a break after the cover page.
  • Multiple pages Determines whether the page layout uses multiple columns. The number of columns can be changed in the settings dialog.
  • Right to left Determines how pages are arranged in layouts with multiple pages per row.
  • Zoom in Increases the scale factor by 10 percent. The maximum scale factor is 5000 percent.
  • Zoom out Decreases the scale factor by 10 percent. The minimum scale factor is 10 percent.
  • Original size Resets the scale factor to 100 percent.
  • Fit to page width Determines the scale factor such that all pages fully fit into the main view horizontally.
  • Fit to page size Determines the scale factor such that all pages fully fit into the main view horizontally and vertically.
  • Rotate left Rotates the pages left/counterclockwise by 90 degrees.
  • Rotate right Rotates the pages right/clockwise by 90 degrees.
  • Invert colors Determines whether pages are rendered with inverted colors.
  • Convert to grayscale Determines whether pages are converted to grayscale after rendering.
  • Trim margins Enables the removal of empty page margins after rendering.
  • Composition Enables the composition of the rendered page with the paper color to adjust the background of scanned documents.
  • Tool bars This menu contains a list of available tool bars for accessing frequently used actions.
  • Docks This menu contains a list of available docks for displaying supplementary information.
  • Fonts... Opens a dialog listing the fonts used in the document.
  • Fullscreen Toggles the fullscreen mode, i.e. the window is shown maximized and without decoration.
  • Presentation... Enters presentation mode which can be left by pressing F12 or escape. The home/end key is used to display the first/last page. Arrow keys right and down, space and the page down key jump to the next page. Arrow keys left and up, backspace and the page up key jump to the previous page. Pressing control and return jumps back to the page before the last jump.

The scale factor can be changed by entering the desired percentage into the text field in the view tool bar, which can be focused using Ctrl+L, and pressing the return key.

Tabs

  • Previous/Next tab Makes the previous/next tab the current tab. Cycles to the last/first tab if the first/last tab is the current tab.
  • Close tab Closes the current tab.
  • Close all tabs Closes all tabs.
  • Close all tabs but current tab Closes all tabs except for the current tab.
  • Recently closed Contains a list of the most recently closed tabs (if enabled in the settings).

This menu contains a list of all tabs which can be made the current tab by clicking on the corresponding menu item. Tabs can also be closed by middle-clicking. The first nine tabs can also be activated by holding the Alt modifier and pressing keys one to nine.

Bookmarks

  • Previous bookmark Jumps to the closest bookmark before the current page.
  • Next bookmark Jumps to the closest bookmark after the current page.
  • Add bookmark Adds a bookmark for the current file and page.
  • Remove bookmark Removes the bookmark for the current file and page.
  • Remove all bookmarks Removes all bookmarks.
  • Open Opens the corresponding file in the current tab. If there is no tab, the file is opened in a new tab.
  • Open in new tab Opens the corresponding file in a new tab.
  • Jump to page Jumps to the corresponding page if the corresponding file is already open. Otherwise the corresponding file is opened in a new tab.

Help

  • Contents Displays this document.
  • About Displays the program version.

Main view

The backspace/space key skips to the previous/next page. The home/end key skips to the first/last page. The arrow, page up and page down keys scroll the viewport. Pressing control and return jumps to the page before the last jump.

Using the mouse wheel scrolls up and down. Holding ALT while using the mouse wheel scrolls left and right. Holding CTRL while using the mouse wheel scales the document. Holding SHIFT while using the mouse wheel rotates the document. (Keyboard modifiers can be changed in the settings dialog.) Click and hold the middle mouse button to select a rectangle to zoom to.

Links are highlighted by red frames (if enabled in the settings). Left-click on a link to show the linked page or open the linked URL in the default browser (if enabled in the settings). Middle-click on a link to show the linked page in a new tab. Hovering over a link displays its destination as a tool tip.

Form fields are highlighted by blue frames (if enabled in the settings). Left-click on a form field to edit its contents. Hovering over a form field displays its name as a tool tip.

The source of a position in the document can be opened in the source editor using the context menu which optionally contains an item for the first matching SyncTeX node.

To copy texts or images, hold SHIFT, click and hold the left mouse button to drag a frame around the area to copy. Once the mouse button is released, a pop-up menu is displayed to select whether to copy texts or images into the clipboard.

To add annotations, hold CTRL, click and hold the left mouse button to drag a frame around the region to annotate. Once the mouse button is released, a pop-up menu is displayed to select whether to add text or highlight annotations. Left-click to edit annotations. Right-click to remove annotations. (Adding and removing annotations requires version 0.20.1 or higher of the Poppler library.) Hovering over an annotation displays its contents as a tool tip.

To zoom to a selection, hold SHIFT and CTRL, click and hold the left mouse button to drag a frame around region to zoom into.

The visibility of the tool and menu bars can be toggled using configurable keyboard shortcuts whose default values are "Shift+Alt+T" and "Shift+Alt+M".

Auxiliary views

The outline view displays an overview of the contents of the document. A left click on an entry jumps to the respective page in the main view. The context menu can be used to expand/collapse all items below the selected item.

The outline view can also be navigated using the keyboard and the mouse wheel. Holding Shift and using the Up/Down keys will scroll the view. Holding Shift and using the Left/Right keys will collapse/expand one level of items below the selected item. Holding Control and using the Left/Right keys will completely collapse/expand the selected item and its children. Holding Shift and using the mousel wheel will change the selected item. Holding Control and using the mouse wheel will expand/collapse the selected item.

The properties view displays additional information contained in the document.

The thumbnails view displays smaller versions of the pages of the document. A left click on an entry jumps to the respective page in the main view.

The bookmarks view shows the bookmarks related to the document displayed in the current tab. The context menu contains entries to jump to the previous/next boookmark or to add bookmarks. The context menu of each entry also contains entries to edit and delete bookmarks.

If enabled in the settings, the extended search dock shows an overview containing the results of all searches being performed in all tabs. It also shows the text surrounding a result with the search term being emphasized. Clicking on a result opens the corresponding tab and jumps to its position.

Settings

Behavior settings

  • Open URL Determines whether links to URL are opened in the default browser.
  • Auto-refresh Determines whether files are automatically reloaded if changed on disk.
  • Track recently used If enabled, a recently used menu is available and lists as many recently used files as set in the "Recently used count" option. (Effective after restart.)
  • Keep recently closed If enabled, a recently closed menu is available and lists as many recently closed tabs as set in the "Recently closed count" option. Keeping the tabs available could increase memory usage considerably. (Effective after restart.)
  • Restore tabs If enabled, tabs and their properties are saved on ending the program and restored on restart.
  • Restore bookmarks If enabled, bookmarks are saved on ending the program and restored on restart.
  • Restore per-file settings If enabled, per-file settings are saved/restored on opening/closing tabs.
  • Save database interval The interval after which tabs, bookmarks or per-file settings are saved to the database.
  • Synchronize presentation If enabled, the main view can be used to control the presentation view.
  • Presentation screen The index of the screen to display the presentation view on.
  • Synchronize outline view If enabled, the outline view will highlight the first entry pointing to the current page whenever the current page changes.
  • Minimal scrolling If enabled, the view port will only be scrolled if the target position is not yet visible.
  • Zoom factor The number by which the scale factor is multiplied resp. divided upon zooming in resp. out.
  • Highlight color Determines the color of highlights.
  • Highlight duration Determines the duration of temporary highlights.
  • Annotation color The color of annotations added by the program using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Source editor The program which is started to edit sources. '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number.

Graphics settings

  • Use tiling Pages will be divided into tiles before rendering and caching to reduce memory usage.
  • Keep obsolete pixmaps If enabled, then upon change of the zoom factor, cached pixmaps will be used to draw approximations of final pixmaps until these are available at the cost of increased memory usage.
  • Use device pixel ratio If enabled, the highest available device pixel ratio is used to render at physical and display at logical resolution.
  • Decorate pages Determines whether pages are set apart from the background.
  • Decorate links Determines whether links are highlighted by red frames.
  • Decorate form fields Determines whether form fields are highlighted by blue frames.
  • Background color Determines the color of the background using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Paper color Determines the color of pages using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Presentation background color Overrides the paper color in the computation of the background color of the presentation view and is defined using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Pages per row Number of pages per row in the 'multiple pages' layout mode.
  • Page spacing Determines both vertical and horizontal space displayed between pages.
  • Thumbnail spacing Determines both vertical and horizontal space displayed between thumbnails.
  • Thumbnail size Determines the size of the thumbnails.
  • Cache size The program will try to cache rendered pages within this limit increasing rendering speed at the cost of increased memory usage.
  • Prefetch The program will try to render pages that are not yet visible increasing rendering speed at the cost of increased cache usage.
  • Prefetch distance The number of rows beyond the current row and twice the number of rows before the current row that are prefetched.
  • PDF settings
    • Antialiasing Improves display quality at the cost of performance
    • Text antialiasing Improves text display quality at the cost of performance
    • Text hinting May improve text display quality for certain fonts.
    • Overprint preview If enabled, a preview of printing one layer of ink on top of another is displayed.
    • Thin line mode Chooses the optimization used to draw thin lines.
    • Backend Chooses the backend used to render pages.
  • PS settings
    • Graphics antialias bits Determines the amount of antialiasing for graphics.
    • Text antialias bits Determines the amount of antialiasing for text.

Interface settings

  • Extended search dock If enabled, the default search dock is extended by an overview showing the results of all tabs. (Effective after restart.)
  • Annotation overlay If enabled, all annotations on a page will be displayed as an interactive overlay. Otherwise each annotation will be handled as a separate pop-up window.
  • Form field overlay If enabled, all form fields on a page will be displayed as an interactive overlay. Otherwise each form field will be handled as a separate pop-up window.
  • Tab position Defines at which edge of the main view tabs will be displayed.
  • Tab visibility Determines whether tabs will be displayed if less than two documents are opened.
  • Spread tabs Determines if tabs will be spread out evenly over the whole tab bar.
  • New tab next to current tab If enabled, new tabs are opened to the right of the active tab.
  • Exit after last tab If enabled, the application exits after the last tab is closed.
  • Recently used count Sets the number of files that are listed in the recently used menu, if "Track recently used" is enabled. (Effective after restart.)
  • Recently closed count Sets the number of tabs that are listed in the recently closed menu, if "Keep recently closed" is enabled. (Effective after restart.)
  • File tool bar Defines which actions are visible in the file tool bar. Available actions are openInNewTab, open, refresh, saveCopy, saveAs, print and separator. (Effective after restart.)
  • Edit tool bar Defines which actions are visible in the edit tool bar. Available actions are currentPage, previousPage, nextPage, firstPage, lastPage, jumpToPage, jumpBackward, jumpForward, search, copyToClipboardMode, addAnnotationMode and separator. (Effective after restart.)
  • View tool bar Defines which actions are visible in the view tool bar. Available actions are scaleFactor, zoomIn, zoomOut, continuousMode, twoPagesMode, twoPagesWithCoverPageMode, multiplePagesMode, originalSize, fitToPageWidthMode, fitToPageSizeMode, rotateLeft, rotateRight, fullscreen, presentation and separator. (Effective after restart.)
  • Document context menu Defines which actions are visible in the document's context menu. Available actions are openCopyInNewTab, openCopyInNewWindow, openContainingFolder, moveToInstance, previousPage, nextPage, firstPage, lastPage, jumpToPage, jumpBackward, jumpForward, setFirstPage, findPrevious, findNext, cancelSearch and separator.
  • Tab context menu Defines which actions are visible in a tab's context menu. Available actions are openCopyInNewTab, openCopyInNewWindow, openContainingFolder, moveToInstance, copyFilePath, selectFilePath, closeAllTabs, closeAllTabsButThisOne, closeAllTabsToTheLeft, closeAllTabsToTheRight and separator.
  • Scrollable menus Will override the default style so that pop-up menus scroll instead being laid-out in mutliple columns if they are larger than the available screen space. (Effective after restart.)
  • Searchable menus Extends the default keyboard navigation of the tabs and bookmarks menus by a search-as-you-type mechanism.
  • Toggle tool and menu bars with fullscreen Always toggles the visibility of the tool and menu bars when toggling fullscreen mode.
  • Use page label Determines if document-supplied page label will be used instead of page numbers when available.
  • Document title as tab title Determines if the tab title as derived from the meta-data instead of the file name.
  • Current page in window title If enabled, the current page and number of pages of the document in the active tab are displayed in the window title.
  • Instance name in window title If enabled and the current instance is named, its name is displayed in the window title.
  • Highlight current thumbnail If enabled, the current page is highlighted in the thumbnails view.
  • Limit thumbnails to results If this option is enabled and a search is conducted, only the pages where the search term is found are displayed in the thumbnails view.

Shortcut settings

The shortcut settings allows the adjustment of keyboard shortcuts to personal preference. Shortcuts are changed by double-clicking on the shortcut to edit it and entering the new shortcut. Each action can have several shortcuts by entering a semicolon-separated list of them. Names of keys that are not single letters are written out explicitly (e.g. "Alt", "Ctrl", "PgDown"), where the matching is not case sensitive. If the shortcut contains modifier keys, the names of the keys are joined by a plus sign and modifier keys must be listed first, e.g. "Ctrl+A" or "Ctrl++".

Modifier settings

  • Zoom The keyboard modifiers to zoom using the mouse wheel in the main view.
  • Rotate The keyboard modifiers to rotate using the mouse wheel in the main view.
  • Scroll The keyboard modifiers to scroll horizontally using the mouse wheel in the main view.
  • Copy to clipboard The keyboard modifiers to copy texts or images from a page to the clipboard.
  • Add annotation The keyboard modifiers to add annotations to a page.
  • Zoom to selection The keyboard modifiers to zoom to a slection on a page.
qpdfview-0.4.18/help/help_ku.html0000644000000000000000000006141213516127411015031 0ustar 00000000000000 Alîkarî

Help

Tabloya Naverokan

  1. Main menu
    1. File
    2. Edit
    3. View
    4. Tabs
    5. Bookmarks
    6. Help
  2. Main view
  3. Auxiliary views
  4. Settings
    1. Behavior settings
    2. Graphics settings
    3. Interface settings
    4. Shortcut settings
    5. Modifier settings

Destpêk

qpdfview is a tabbed document viewer. It uses Poppler for PDF support, libspectre for PS support, DjVuLibre for DjVu support, CUPS for printing support and the Qt toolkit for its interface.

Please refer to the manual page for information on command-line options and configuration files.

Main menu

File

  • Open... Opens a dialog to choose a file to open in the current tab. If there is no tab, the file is opened in a new tab.
  • Open in new tab... Opens a dialog to choose files to open in new tabs.
  • Recently used Contains a list of the most recently used files (if enabled in the settings).
  • Refresh Reloads the file displayed in the current tab.
  • Save Saves changes to annotations and form fields to the file displayed in the current tab.
  • Save as... Opens a dialog to save the file displayed in the current tab including changes to annotations and form fields.
  • Save copy... Opens a dialog to save an umodified copy of the file displayed in the current tab.
  • Print... Opens a dialog to print the file displayed in the current tab.
  • Exit Closes all tabs and ends the program.

Edit

  • Next/Previous/First/Last page Skips to the next/previous/first/last page of the document.
  • Jump to page... Opens a dialog to enter a page to display in the current tab.
  • Jump backward/forward Jumps backward/forward in the history of displayed page.
  • Search... Opens the search dock below the main view. The search automatically starts two seconds after the last change of the search term or is manually started by pressing the return key. If the Shift modifier is held when the return key is pressed, the search starts in all tabs instead of just the current tab. (This effect is reversed if the extended search dock is enabled in the settings.)
  • Find previous/next Jumps to the previous/next occurrence of the search term in the document.
  • Cancel search Cancels the currently running search and closes the search dock.
  • Copy to clipboard If checked, the program will wait for a frame to be dragged to copy texts or images.
  • Add annotation If checked, the program will wait for a frame to be dragged to add annotations.
  • Settings... Opens the settings dialog. The button labeled 'Defaults' will revert all settings on all tabs to their default values. The button labeled 'Defaults on current tab' will revert only the settings on the current tab to their default values.

The current page can be changed by entering the desired page into the text field in the edit tool bar, which can be focused using Ctrl+K, and pressing the return key.

View

  • Continuous Determines whether all rows of the page layout are visible at once.
  • Two pages Determines whether the page layout uses two columns.
  • Two pages with cover page Determines whether the page layout uses two columns with a break after the cover page.
  • Multiple pages Determines whether the page layout uses multiple columns. The number of columns can be changed in the settings dialog.
  • Right to left Determines how pages are arranged in layouts with multiple pages per row.
  • Zoom in Increases the scale factor by 10 percent. The maximum scale factor is 5000 percent.
  • Zoom out Decreases the scale factor by 10 percent. The minimum scale factor is 10 percent.
  • Original size Resets the scale factor to 100 percent.
  • Fit to page width Determines the scale factor such that all pages fully fit into the main view horizontally.
  • Fit to page size Determines the scale factor such that all pages fully fit into the main view horizontally and vertically.
  • Rotate left Rotates the pages left/counterclockwise by 90 degrees.
  • Rotate right Rotates the pages right/clockwise by 90 degrees.
  • Invert colors Determines whether pages are rendered with inverted colors.
  • Convert to grayscale Determines whether pages are converted to grayscale after rendering.
  • Trim margins Enables the removal of empty page margins after rendering.
  • Composition Enables the composition of the rendered page with the paper color to adjust the background of scanned documents.
  • Tool bars This menu contains a list of available tool bars for accessing frequently used actions.
  • Docks This menu contains a list of available docks for displaying supplementary information.
  • Fonts... Opens a dialog listing the fonts used in the document.
  • Fullscreen Toggles the fullscreen mode, i.e. the window is shown maximized and without decoration.
  • Presentation... Enters presentation mode which can be left by pressing F12 or escape. The home/end key is used to display the first/last page. Arrow keys right and down, space and the page down key jump to the next page. Arrow keys left and up, backspace and the page up key jump to the previous page. Pressing control and return jumps back to the page before the last jump.

The scale factor can be changed by entering the desired percentage into the text field in the view tool bar, which can be focused using Ctrl+L, and pressing the return key.

Tabs

  • Previous/Next tab Makes the previous/next tab the current tab. Cycles to the last/first tab if the first/last tab is the current tab.
  • Close tab Closes the current tab.
  • Close all tabs Closes all tabs.
  • Close all tabs but current tab Closes all tabs except for the current tab.
  • Recently closed Contains a list of the most recently closed tabs (if enabled in the settings).

This menu contains a list of all tabs which can be made the current tab by clicking on the corresponding menu item. Tabs can also be closed by middle-clicking. The first nine tabs can also be activated by holding the Alt modifier and pressing keys one to nine.

Bookmarks

  • Previous bookmark Jumps to the closest bookmark before the current page.
  • Next bookmark Jumps to the closest bookmark after the current page.
  • Add bookmark Adds a bookmark for the current file and page.
  • Remove bookmark Removes the bookmark for the current file and page.
  • Remove all bookmarks Removes all bookmarks.
  • Open Opens the corresponding file in the current tab. If there is no tab, the file is opened in a new tab.
  • Open in new tab Opens the corresponding file in a new tab.
  • Jump to page Jumps to the corresponding page if the corresponding file is already open. Otherwise the corresponding file is opened in a new tab.

Help

  • Contents Displays this document.
  • About Displays the program version.

Main view

The backspace/space key skips to the previous/next page. The home/end key skips to the first/last page. The arrow, page up and page down keys scroll the viewport. Pressing control and return jumps to the page before the last jump.

Using the mouse wheel scrolls up and down. Holding ALT while using the mouse wheel scrolls left and right. Holding CTRL while using the mouse wheel scales the document. Holding SHIFT while using the mouse wheel rotates the document. (Keyboard modifiers can be changed in the settings dialog.) Click and hold the middle mouse button to select a rectangle to zoom to.

Links are highlighted by red frames (if enabled in the settings). Left-click on a link to show the linked page or open the linked URL in the default browser (if enabled in the settings). Middle-click on a link to show the linked page in a new tab. Hovering over a link displays its destination as a tool tip.

Form fields are highlighted by blue frames (if enabled in the settings). Left-click on a form field to edit its contents. Hovering over a form field displays its name as a tool tip.

The source of a position in the document can be opened in the source editor using the context menu which optionally contains an item for the first matching SyncTeX node.

To copy texts or images, hold SHIFT, click and hold the left mouse button to drag a frame around the area to copy. Once the mouse button is released, a pop-up menu is displayed to select whether to copy texts or images into the clipboard.

To add annotations, hold CTRL, click and hold the left mouse button to drag a frame around the region to annotate. Once the mouse button is released, a pop-up menu is displayed to select whether to add text or highlight annotations. Left-click to edit annotations. Right-click to remove annotations. (Adding and removing annotations requires version 0.20.1 or higher of the Poppler library.) Hovering over an annotation displays its contents as a tool tip.

To zoom to a selection, hold SHIFT and CTRL, click and hold the left mouse button to drag a frame around region to zoom into.

The visibility of the tool and menu bars can be toggled using configurable keyboard shortcuts whose default values are "Shift+Alt+T" and "Shift+Alt+M".

Auxiliary views

The outline view displays an overview of the contents of the document. A left click on an entry jumps to the respective page in the main view. The context menu can be used to expand/collapse all items below the selected item.

The outline view can also be navigated using the keyboard and the mouse wheel. Holding Shift and using the Up/Down keys will scroll the view. Holding Shift and using the Left/Right keys will collapse/expand one level of items below the selected item. Holding Control and using the Left/Right keys will completely collapse/expand the selected item and its children. Holding Shift and using the mousel wheel will change the selected item. Holding Control and using the mouse wheel will expand/collapse the selected item.

The properties view displays additional information contained in the document.

The thumbnails view displays smaller versions of the pages of the document. A left click on an entry jumps to the respective page in the main view.

The bookmarks view shows the bookmarks related to the document displayed in the current tab. The context menu contains entries to jump to the previous/next boookmark or to add bookmarks. The context menu of each entry also contains entries to edit and delete bookmarks.

If enabled in the settings, the extended search dock shows an overview containing the results of all searches being performed in all tabs. It also shows the text surrounding a result with the search term being emphasized. Clicking on a result opens the corresponding tab and jumps to its position.

Settings

Behavior settings

  • Open URL Determines whether links to URL are opened in the default browser.
  • Auto-refresh Determines whether files are automatically reloaded if changed on disk.
  • Track recently used If enabled, a recently used menu is available and lists as many recently used files as set in the "Recently used count" option. (Effective after restart.)
  • Keep recently closed If enabled, a recently closed menu is available and lists as many recently closed tabs as set in the "Recently closed count" option. Keeping the tabs available could increase memory usage considerably. (Effective after restart.)
  • Restore tabs If enabled, tabs and their properties are saved on ending the program and restored on restart.
  • Restore bookmarks If enabled, bookmarks are saved on ending the program and restored on restart.
  • Restore per-file settings If enabled, per-file settings are saved/restored on opening/closing tabs.
  • Save database interval The interval after which tabs, bookmarks or per-file settings are saved to the database.
  • Synchronize presentation If enabled, the main view can be used to control the presentation view.
  • Presentation screen The index of the screen to display the presentation view on.
  • Synchronize outline view If enabled, the outline view will highlight the first entry pointing to the current page whenever the current page changes.
  • Minimal scrolling If enabled, the view port will only be scrolled if the target position is not yet visible.
  • Zoom factor The number by which the scale factor is multiplied resp. divided upon zooming in resp. out.
  • Highlight color Determines the color of highlights.
  • Highlight duration Determines the duration of temporary highlights.
  • Annotation color The color of annotations added by the program using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Source editor The program which is started to edit sources. '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number.

Graphics settings

  • Use tiling Pages will be divided into tiles before rendering and caching to reduce memory usage.
  • Keep obsolete pixmaps If enabled, then upon change of the zoom factor, cached pixmaps will be used to draw approximations of final pixmaps until these are available at the cost of increased memory usage.
  • Use device pixel ratio If enabled, the highest available device pixel ratio is used to render at physical and display at logical resolution.
  • Decorate pages Determines whether pages are set apart from the background.
  • Decorate links Determines whether links are highlighted by red frames.
  • Decorate form fields Determines whether form fields are highlighted by blue frames.
  • Background color Determines the color of the background using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Paper color Determines the color of pages using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Presentation background color Overrides the paper color in the computation of the background color of the presentation view and is defined using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Pages per row Number of pages per row in the 'multiple pages' layout mode.
  • Page spacing Determines both vertical and horizontal space displayed between pages.
  • Thumbnail spacing Determines both vertical and horizontal space displayed between thumbnails.
  • Thumbnail size Determines the size of the thumbnails.
  • Cache size The program will try to cache rendered pages within this limit increasing rendering speed at the cost of increased memory usage.
  • Prefetch The program will try to render pages that are not yet visible increasing rendering speed at the cost of increased cache usage.
  • Prefetch distance The number of rows beyond the current row and twice the number of rows before the current row that are prefetched.
  • PDF settings
    • Antialiasing Improves display quality at the cost of performance
    • Text antialiasing Improves text display quality at the cost of performance
    • Text hinting May improve text display quality for certain fonts.
    • Overprint preview If enabled, a preview of printing one layer of ink on top of another is displayed.
    • Thin line mode Chooses the optimization used to draw thin lines.
    • Backend Chooses the backend used to render pages.
  • PS settings
    • Graphics antialias bits Determines the amount of antialiasing for graphics.
    • Text antialias bits Determines the amount of antialiasing for text.

Interface settings

  • Extended search dock If enabled, the default search dock is extended by an overview showing the results of all tabs. (Effective after restart.)
  • Annotation overlay If enabled, all annotations on a page will be displayed as an interactive overlay. Otherwise each annotation will be handled as a separate pop-up window.
  • Form field overlay If enabled, all form fields on a page will be displayed as an interactive overlay. Otherwise each form field will be handled as a separate pop-up window.
  • Tab position Defines at which edge of the main view tabs will be displayed.
  • Tab visibility Determines whether tabs will be displayed if less than two documents are opened.
  • Spread tabs Determines if tabs will be spread out evenly over the whole tab bar.
  • New tab next to current tab If enabled, new tabs are opened to the right of the active tab.
  • Exit after last tab If enabled, the application exits after the last tab is closed.
  • Recently used count Sets the number of files that are listed in the recently used menu, if "Track recently used" is enabled. (Effective after restart.)
  • Recently closed count Sets the number of tabs that are listed in the recently closed menu, if "Keep recently closed" is enabled. (Effective after restart.)
  • File tool bar Defines which actions are visible in the file tool bar. Available actions are openInNewTab, open, refresh, saveCopy, saveAs, print and separator. (Effective after restart.)
  • Edit tool bar Defines which actions are visible in the edit tool bar. Available actions are currentPage, previousPage, nextPage, firstPage, lastPage, jumpToPage, jumpBackward, jumpForward, search, copyToClipboardMode, addAnnotationMode and separator. (Effective after restart.)
  • View tool bar Defines which actions are visible in the view tool bar. Available actions are scaleFactor, zoomIn, zoomOut, continuousMode, twoPagesMode, twoPagesWithCoverPageMode, multiplePagesMode, originalSize, fitToPageWidthMode, fitToPageSizeMode, rotateLeft, rotateRight, fullscreen, presentation and separator. (Effective after restart.)
  • Document context menu Defines which actions are visible in the document's context menu. Available actions are openCopyInNewTab, openCopyInNewWindow, openContainingFolder, moveToInstance, previousPage, nextPage, firstPage, lastPage, jumpToPage, jumpBackward, jumpForward, setFirstPage, findPrevious, findNext, cancelSearch and separator.
  • Tab context menu Defines which actions are visible in a tab's context menu. Available actions are openCopyInNewTab, openCopyInNewWindow, openContainingFolder, moveToInstance, copyFilePath, selectFilePath, closeAllTabs, closeAllTabsButThisOne, closeAllTabsToTheLeft, closeAllTabsToTheRight and separator.
  • Scrollable menus Will override the default style so that pop-up menus scroll instead being laid-out in mutliple columns if they are larger than the available screen space. (Effective after restart.)
  • Searchable menus Extends the default keyboard navigation of the tabs and bookmarks menus by a search-as-you-type mechanism.
  • Toggle tool and menu bars with fullscreen Always toggles the visibility of the tool and menu bars when toggling fullscreen mode.
  • Use page label Determines if document-supplied page label will be used instead of page numbers when available.
  • Document title as tab title Determines if the tab title as derived from the meta-data instead of the file name.
  • Current page in window title If enabled, the current page and number of pages of the document in the active tab are displayed in the window title.
  • Instance name in window title If enabled and the current instance is named, its name is displayed in the window title.
  • Highlight current thumbnail If enabled, the current page is highlighted in the thumbnails view.
  • Limit thumbnails to results If this option is enabled and a search is conducted, only the pages where the search term is found are displayed in the thumbnails view.

Shortcut settings

The shortcut settings allows the adjustment of keyboard shortcuts to personal preference. Shortcuts are changed by double-clicking on the shortcut to edit it and entering the new shortcut. Each action can have several shortcuts by entering a semicolon-separated list of them. Names of keys that are not single letters are written out explicitly (e.g. "Alt", "Ctrl", "PgDown"), where the matching is not case sensitive. If the shortcut contains modifier keys, the names of the keys are joined by a plus sign and modifier keys must be listed first, e.g. "Ctrl+A" or "Ctrl++".

Modifier settings

  • Zoom The keyboard modifiers to zoom using the mouse wheel in the main view.
  • Rotate The keyboard modifiers to rotate using the mouse wheel in the main view.
  • Scroll The keyboard modifiers to scroll horizontally using the mouse wheel in the main view.
  • Copy to clipboard The keyboard modifiers to copy texts or images from a page to the clipboard.
  • Add annotation The keyboard modifiers to add annotations to a page.
  • Zoom to selection The keyboard modifiers to zoom to a slection on a page.
qpdfview-0.4.18/help/help_lt.html0000644000000000000000000006162113516127411015033 0ustar 00000000000000 Pagalba

Pagalba

Turinys

  1. Pagrindinis meniu
    1. Failas
    2. Taisa
    3. Rodinys
    4. Kortelės
    5. Žymės
    6. Pagalba
  2. Pagrindinis rodinys
  3. Pagalbiniai rodiniai
  4. Nustatymai
    1. Elgsenos nustatymai
    2. Grafikos nustatymai
    3. Sąsajos nustatymai
    4. Sparčiųjų klavišų nustatymai
    5. Modifikavimo klavišų nustatymai

Pristatymas

qpdfview is a tabbed document viewer. It uses Poppler for PDF support, libspectre for PS support, DjVuLibre for DjVu support, CUPS for printing support and the Qt toolkit for its interface.

Please refer to the manual page for information on command-line options and configuration files.

Pagrindinis meniu

Failas

  • Open... Opens a dialog to choose a file to open in the current tab. If there is no tab, the file is opened in a new tab.
  • Open in new tab... Opens a dialog to choose files to open in new tabs.
  • Recently used Contains a list of the most recently used files (if enabled in the settings).
  • Įkelti iš naujo Iš naujo įkelia esamoje kortelėje rodomą failą.
  • Save Saves changes to annotations and form fields to the file displayed in the current tab.
  • Save as... Opens a dialog to save the file displayed in the current tab including changes to annotations and form fields.
  • Save copy... Opens a dialog to save an umodified copy of the file displayed in the current tab.
  • Print... Opens a dialog to print the file displayed in the current tab.
  • Išeiti Užveria visas korteles ir užbaigia programos darbą.

Taisa

  • Kitas/Ankstesnis/Pirmas/Paskutinis puslapis Pereina į kitą/ankstesnį/pirmą/paskutinį dokumento puslapį.
  • Jump to page... Opens a dialog to enter a page to display in the current tab.
  • Jump backward/forward Jumps backward/forward in the history of displayed page.
  • Search... Opens the search dock below the main view. The search automatically starts two seconds after the last change of the search term or is manually started by pressing the return key. If the Shift modifier is held when the return key is pressed, the search starts in all tabs instead of just the current tab. (This effect is reversed if the extended search dock is enabled in the settings.)
  • Find previous/next Jumps to the previous/next occurrence of the search term in the document.
  • Cancel search Cancels the currently running search and closes the search dock.
  • Copy to clipboard If checked, the program will wait for a frame to be dragged to copy texts or images.
  • Add annotation If checked, the program will wait for a frame to be dragged to add annotations.
  • Settings... Opens the settings dialog. The button labeled 'Defaults' will revert all settings on all tabs to their default values. The button labeled 'Defaults on current tab' will revert only the settings on the current tab to their default values.

The current page can be changed by entering the desired page into the text field in the edit tool bar, which can be focused using Ctrl+K, and pressing the return key.

View

  • Continuous Determines whether all rows of the page layout are visible at once.
  • Two pages Determines whether the page layout uses two columns.
  • Two pages with cover page Determines whether the page layout uses two columns with a break after the cover page.
  • Multiple pages Determines whether the page layout uses multiple columns. The number of columns can be changed in the settings dialog.
  • Right to left Determines how pages are arranged in layouts with multiple pages per row.
  • Zoom in Increases the scale factor by 10 percent. The maximum scale factor is 5000 percent.
  • Zoom out Decreases the scale factor by 10 percent. The minimum scale factor is 10 percent.
  • Original size Resets the scale factor to 100 percent.
  • Fit to page width Determines the scale factor such that all pages fully fit into the main view horizontally.
  • Fit to page size Determines the scale factor such that all pages fully fit into the main view horizontally and vertically.
  • Rotate left Rotates the pages left/counterclockwise by 90 degrees.
  • Rotate right Rotates the pages right/clockwise by 90 degrees.
  • Invert colors Determines whether pages are rendered with inverted colors.
  • Convert to grayscale Determines whether pages are converted to grayscale after rendering.
  • Trim margins Enables the removal of empty page margins after rendering.
  • Composition Enables the composition of the rendered page with the paper color to adjust the background of scanned documents.
  • Tool bars This menu contains a list of available tool bars for accessing frequently used actions.
  • Docks This menu contains a list of available docks for displaying supplementary information.
  • Fonts... Opens a dialog listing the fonts used in the document.
  • Fullscreen Toggles the fullscreen mode, i.e. the window is shown maximized and without decoration.
  • Presentation... Enters presentation mode which can be left by pressing F12 or escape. The home/end key is used to display the first/last page. Arrow keys right and down, space and the page down key jump to the next page. Arrow keys left and up, backspace and the page up key jump to the previous page. Pressing control and return jumps back to the page before the last jump.

The scale factor can be changed by entering the desired percentage into the text field in the view tool bar, which can be focused using Ctrl+L, and pressing the return key.

Tabs

  • Previous/Next tab Makes the previous/next tab the current tab. Cycles to the last/first tab if the first/last tab is the current tab.
  • Close tab Closes the current tab.
  • Close all tabs Closes all tabs.
  • Close all tabs but current tab Closes all tabs except for the current tab.
  • Recently closed Contains a list of the most recently closed tabs (if enabled in the settings).

This menu contains a list of all tabs which can be made the current tab by clicking on the corresponding menu item. Tabs can also be closed by middle-clicking. The first nine tabs can also be activated by holding the Alt modifier and pressing keys one to nine.

Bookmarks

  • Previous bookmark Jumps to the closest bookmark before the current page.
  • Next bookmark Jumps to the closest bookmark after the current page.
  • Add bookmark Adds a bookmark for the current file and page.
  • Remove bookmark Removes the bookmark for the current file and page.
  • Remove all bookmarks Removes all bookmarks.
  • Open Opens the corresponding file in the current tab. If there is no tab, the file is opened in a new tab.
  • Open in new tab Opens the corresponding file in a new tab.
  • Jump to page Jumps to the corresponding page if the corresponding file is already open. Otherwise the corresponding file is opened in a new tab.

Help

  • Contents Displays this document.
  • About Displays the program version.

Main view

The backspace/space key skips to the previous/next page. The home/end key skips to the first/last page. The arrow, page up and page down keys scroll the viewport. Pressing control and return jumps to the page before the last jump.

Using the mouse wheel scrolls up and down. Holding ALT while using the mouse wheel scrolls left and right. Holding CTRL while using the mouse wheel scales the document. Holding SHIFT while using the mouse wheel rotates the document. (Keyboard modifiers can be changed in the settings dialog.) Click and hold the middle mouse button to select a rectangle to zoom to.

Links are highlighted by red frames (if enabled in the settings). Left-click on a link to show the linked page or open the linked URL in the default browser (if enabled in the settings). Middle-click on a link to show the linked page in a new tab. Hovering over a link displays its destination as a tool tip.

Form fields are highlighted by blue frames (if enabled in the settings). Left-click on a form field to edit its contents. Hovering over a form field displays its name as a tool tip.

The source of a position in the document can be opened in the source editor using the context menu which optionally contains an item for the first matching SyncTeX node.

To copy texts or images, hold SHIFT, click and hold the left mouse button to drag a frame around the area to copy. Once the mouse button is released, a pop-up menu is displayed to select whether to copy texts or images into the clipboard.

To add annotations, hold CTRL, click and hold the left mouse button to drag a frame around the region to annotate. Once the mouse button is released, a pop-up menu is displayed to select whether to add text or highlight annotations. Left-click to edit annotations. Right-click to remove annotations. (Adding and removing annotations requires version 0.20.1 or higher of the Poppler library.) Hovering over an annotation displays its contents as a tool tip.

To zoom to a selection, hold SHIFT and CTRL, click and hold the left mouse button to drag a frame around region to zoom into.

The visibility of the tool and menu bars can be toggled using configurable keyboard shortcuts whose default values are "Shift+Alt+T" and "Shift+Alt+M".

Auxiliary views

The outline view displays an overview of the contents of the document. A left click on an entry jumps to the respective page in the main view. The context menu can be used to expand/collapse all items below the selected item.

The outline view can also be navigated using the keyboard and the mouse wheel. Holding Shift and using the Up/Down keys will scroll the view. Holding Shift and using the Left/Right keys will collapse/expand one level of items below the selected item. Holding Control and using the Left/Right keys will completely collapse/expand the selected item and its children. Holding Shift and using the mousel wheel will change the selected item. Holding Control and using the mouse wheel will expand/collapse the selected item.

The properties view displays additional information contained in the document.

The thumbnails view displays smaller versions of the pages of the document. A left click on an entry jumps to the respective page in the main view.

The bookmarks view shows the bookmarks related to the document displayed in the current tab. The context menu contains entries to jump to the previous/next boookmark or to add bookmarks. The context menu of each entry also contains entries to edit and delete bookmarks.

If enabled in the settings, the extended search dock shows an overview containing the results of all searches being performed in all tabs. It also shows the text surrounding a result with the search term being emphasized. Clicking on a result opens the corresponding tab and jumps to its position.

Settings

Behavior settings

  • Open URL Determines whether links to URL are opened in the default browser.
  • Auto-refresh Determines whether files are automatically reloaded if changed on disk.
  • Track recently used If enabled, a recently used menu is available and lists as many recently used files as set in the "Recently used count" option. (Effective after restart.)
  • Keep recently closed If enabled, a recently closed menu is available and lists as many recently closed tabs as set in the "Recently closed count" option. Keeping the tabs available could increase memory usage considerably. (Effective after restart.)
  • Restore tabs If enabled, tabs and their properties are saved on ending the program and restored on restart.
  • Restore bookmarks If enabled, bookmarks are saved on ending the program and restored on restart.
  • Restore per-file settings If enabled, per-file settings are saved/restored on opening/closing tabs.
  • Save database interval The interval after which tabs, bookmarks or per-file settings are saved to the database.
  • Synchronize presentation If enabled, the main view can be used to control the presentation view.
  • Presentation screen The index of the screen to display the presentation view on.
  • Synchronize outline view If enabled, the outline view will highlight the first entry pointing to the current page whenever the current page changes.
  • Minimal scrolling If enabled, the view port will only be scrolled if the target position is not yet visible.
  • Zoom factor The number by which the scale factor is multiplied resp. divided upon zooming in resp. out.
  • Highlight color Determines the color of highlights.
  • Highlight duration Determines the duration of temporary highlights.
  • Annotation color The color of annotations added by the program using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Source editor The program which is started to edit sources. '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number.

Graphics settings

  • Use tiling Pages will be divided into tiles before rendering and caching to reduce memory usage.
  • Keep obsolete pixmaps If enabled, then upon change of the zoom factor, cached pixmaps will be used to draw approximations of final pixmaps until these are available at the cost of increased memory usage.
  • Use device pixel ratio If enabled, the highest available device pixel ratio is used to render at physical and display at logical resolution.
  • Decorate pages Determines whether pages are set apart from the background.
  • Decorate links Determines whether links are highlighted by red frames.
  • Decorate form fields Determines whether form fields are highlighted by blue frames.
  • Background color Determines the color of the background using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Paper color Determines the color of pages using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Presentation background color Overrides the paper color in the computation of the background color of the presentation view and is defined using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Pages per row Number of pages per row in the 'multiple pages' layout mode.
  • Page spacing Determines both vertical and horizontal space displayed between pages.
  • Thumbnail spacing Determines both vertical and horizontal space displayed between thumbnails.
  • Thumbnail size Determines the size of the thumbnails.
  • Cache size The program will try to cache rendered pages within this limit increasing rendering speed at the cost of increased memory usage.
  • Prefetch The program will try to render pages that are not yet visible increasing rendering speed at the cost of increased cache usage.
  • Prefetch distance The number of rows beyond the current row and twice the number of rows before the current row that are prefetched.
  • PDF settings
    • Antialiasing Improves display quality at the cost of performance
    • Text antialiasing Improves text display quality at the cost of performance
    • Text hinting May improve text display quality for certain fonts.
    • Overprint preview If enabled, a preview of printing one layer of ink on top of another is displayed.
    • Thin line mode Chooses the optimization used to draw thin lines.
    • Backend Chooses the backend used to render pages.
  • PS settings
    • Graphics antialias bits Determines the amount of antialiasing for graphics.
    • Text antialias bits Determines the amount of antialiasing for text.

Interface settings

  • Extended search dock If enabled, the default search dock is extended by an overview showing the results of all tabs. (Effective after restart.)
  • Annotation overlay If enabled, all annotations on a page will be displayed as an interactive overlay. Otherwise each annotation will be handled as a separate pop-up window.
  • Form field overlay If enabled, all form fields on a page will be displayed as an interactive overlay. Otherwise each form field will be handled as a separate pop-up window.
  • Tab position Defines at which edge of the main view tabs will be displayed.
  • Tab visibility Determines whether tabs will be displayed if less than two documents are opened.
  • Spread tabs Determines if tabs will be spread out evenly over the whole tab bar.
  • New tab next to current tab If enabled, new tabs are opened to the right of the active tab.
  • Exit after last tab If enabled, the application exits after the last tab is closed.
  • Recently used count Sets the number of files that are listed in the recently used menu, if "Track recently used" is enabled. (Effective after restart.)
  • Recently closed count Sets the number of tabs that are listed in the recently closed menu, if "Keep recently closed" is enabled. (Effective after restart.)
  • File tool bar Defines which actions are visible in the file tool bar. Available actions are openInNewTab, open, refresh, saveCopy, saveAs, print and separator. (Effective after restart.)
  • Edit tool bar Defines which actions are visible in the edit tool bar. Available actions are currentPage, previousPage, nextPage, firstPage, lastPage, jumpToPage, jumpBackward, jumpForward, search, copyToClipboardMode, addAnnotationMode and separator. (Effective after restart.)
  • View tool bar Defines which actions are visible in the view tool bar. Available actions are scaleFactor, zoomIn, zoomOut, continuousMode, twoPagesMode, twoPagesWithCoverPageMode, multiplePagesMode, originalSize, fitToPageWidthMode, fitToPageSizeMode, rotateLeft, rotateRight, fullscreen, presentation and separator. (Effective after restart.)
  • Document context menu Defines which actions are visible in the document's context menu. Available actions are openCopyInNewTab, openCopyInNewWindow, openContainingFolder, moveToInstance, previousPage, nextPage, firstPage, lastPage, jumpToPage, jumpBackward, jumpForward, setFirstPage, findPrevious, findNext, cancelSearch and separator.
  • Tab context menu Defines which actions are visible in a tab's context menu. Available actions are openCopyInNewTab, openCopyInNewWindow, openContainingFolder, moveToInstance, copyFilePath, selectFilePath, closeAllTabs, closeAllTabsButThisOne, closeAllTabsToTheLeft, closeAllTabsToTheRight and separator.
  • Scrollable menus Will override the default style so that pop-up menus scroll instead being laid-out in mutliple columns if they are larger than the available screen space. (Effective after restart.)
  • Searchable menus Extends the default keyboard navigation of the tabs and bookmarks menus by a search-as-you-type mechanism.
  • Toggle tool and menu bars with fullscreen Always toggles the visibility of the tool and menu bars when toggling fullscreen mode.
  • Use page label Determines if document-supplied page label will be used instead of page numbers when available.
  • Document title as tab title Determines if the tab title as derived from the meta-data instead of the file name.
  • Current page in window title If enabled, the current page and number of pages of the document in the active tab are displayed in the window title.
  • Instance name in window title If enabled and the current instance is named, its name is displayed in the window title.
  • Highlight current thumbnail If enabled, the current page is highlighted in the thumbnails view.
  • Limit thumbnails to results If this option is enabled and a search is conducted, only the pages where the search term is found are displayed in the thumbnails view.

Shortcut settings

The shortcut settings allows the adjustment of keyboard shortcuts to personal preference. Shortcuts are changed by double-clicking on the shortcut to edit it and entering the new shortcut. Each action can have several shortcuts by entering a semicolon-separated list of them. Names of keys that are not single letters are written out explicitly (e.g. "Alt", "Ctrl", "PgDown"), where the matching is not case sensitive. If the shortcut contains modifier keys, the names of the keys are joined by a plus sign and modifier keys must be listed first, e.g. "Ctrl+A" or "Ctrl++".

Modifier settings

  • Zoom The keyboard modifiers to zoom using the mouse wheel in the main view.
  • Rotate The keyboard modifiers to rotate using the mouse wheel in the main view.
  • Scroll The keyboard modifiers to scroll horizontally using the mouse wheel in the main view.
  • Copy to clipboard The keyboard modifiers to copy texts or images from a page to the clipboard.
  • Add annotation The keyboard modifiers to add annotations to a page.
  • Zoom to selection The keyboard modifiers to zoom to a slection on a page.
qpdfview-0.4.18/help/help_ms.html0000644000000000000000000006353413516127411015040 0ustar 00000000000000 Bantuan

Bantuan

Senarai kandungan

  1. Menu utama
    1. Fail
    2. Sunting
    3. Lihat
    4. Tab
    5. Tanda buku
    6. Bantuan
  2. Paparan utama
  3. Paparan tambahan
  4. Tetapan
    1. Tetapan kelakuan
    2. Tetapan grafik
    3. Tetapan antaramuka
    4. Tetapan pintasan
    5. Tetapan pengubahsuai

Pengenalan

qpdfview merupakan pelihat dokumen bertab. Ia menggunakan Poppler untuk sokongan PDF, libspectre untuk sokongan PS, DjVuLibre untuk sokongan DjVu, CUPS untuk sokongan percetakan dan kit alat Qt untuk antaramukanya.

Sila rujuk halaman manual untuk maklumat pilihan baris-perintah dan fail konfigurasinya.

Menu utama

Fail

  • Buka... Buka dialog untuk memilih fail yang hendak dibuka dalam tab semasa. Jika tiada tab, Fail akan dibuka pada tab baru.
  • Buka dalam tab baru... Buka dialog untuk memilih fail yang hendak dibuka dalam tab baru.
  • Diguna baru-baru ini Mengandungi senarai fail yang baru diguna (jika dibenarkan dalam tetapan).
  • Segar semula Muat semula fail yang dipaparkan dalam tab semasa.
  • Save Saves changes to annotations and form fields to the file displayed in the current tab.
  • Simpan sebagai... Buka dialog untuk simpan fail yang dipapar dalam tab semasa termasuklah perubahan pada anotasi dan medan borang.
  • Save copy... Opens a dialog to save an umodified copy of the file displayed in the current tab.
  • Cetak... Buka dialog untuk mencetak fail yang dipapar dalam tab semasa.
  • Keluar Tutup semua tab dan tamatkan program.

Sunting

  • b>Halaman Berikut/Terdahulu/Pertama/Terakhir Langkau ke halaman dokumen berikut/terdahulu/pertama/terakhir.
  • Lompat ke halaman... Buka dialog untuk masuk ke halaman dan dipapar pada tab semasa.
  • Lompat undur/maju Lompat undur/maju dalam sejarah halaman yang dipaparkan.
  • Gelintar... Buka labuh gelintar dibawah paparan utama. Gelintar akan mula secara automatik dua saat selepas perubahan terakir terma gelintar atau ia dimulakan secara manual dengan menekan kekunci return. Jika pengubahsuai Shift ditahan ketika kekunci return masih ditekan, gelintar dimulakan dalam semua tab selain hanya tab semasa. (Kesan ini diterbalikkan jika labuh gelintar lanjutan dibenarkan di dalam tetapan.)
  • Cari terdahulu/berikut Lompat ke kemunculan terma gelintar terdahulu/berikut didalam dokumen.
  • Batal gelintar Batalkan gelintar yang sedang dijalankan dan tutu[ labuh gelintar.
  • Salin ke papan keratan Jika ditanda, program akan tunggu bingkai diseret untuk salin teks atau imej.
  • Tambah anotasi Jika ditanda, program akan tunggu bingkai diseret untuk tambah anotasi.
  • Tetapan... Buka dialog tetapan. Butang berlabel 'Lalai' akan kembalikan semua tetapan pada tab ke nilai lalainya. Butang berlabel 'Lalai pada tab semasa' akan hanya kembalikan tetapan pada tab semasa ke nilai lalai mereka.

Halaman semasa boleh diubah dengan memasukkan halaman yang dikehendaki ke dalam medan teks di dalam palang alat sunting, yang mana boleh difokus dengan menggunakan Ctrl+K, dan menekan kekunci return.

Lihat

  • Berterusan Tentukan sama ada semua baris bentangan halaman kelihatan serentak.
  • Dua halaman Tentukan sama ada bentangan halaman gunakan dua lajur.
  • Dua halaman dengan muka hadapan Tentukan sama ada bentangan halaman gunakan dua lajur dengan hentian selepas muka hadapan.
  • Halaman berbilang Tentukan sama ada bentangan halaman gunakan lajur berbilang. Bilangan lajur boleh diubah dalam dialog tetapan.
  • Kanan ke kiri Tentukan bagaimana halaman disusun dalam bentangan dengan halaman berbilang per baris.
  • Zum masuk Tingkatkan faktor skala sebanyak 10 peratus. Faktor skala maksimum ialah 5000 peratus.
  • Zum keluar Kurangkan faktor skala sebanyak 10 peratus. Faktor skala minimum ialah 10 peratus.
  • Saiz asal Tetap semula faktor skala ke 100 peratus.
  • Muat dengan lebar halaman Tentukan faktor skala supaya semua halaman sepenuhnya muat ke dalam paparan utama secara mengufuk.
  • Muat dengan saiz halaman Tentukan faktor skala supaya semua halaman sepenuhnya muat ke dalam paparan utama secara mengufuk dan menegak.
  • Putar kiri Putar halaman ke kiri/lawan jam sebanyak 90 darjah.
  • Putar kanan Putar halaman ke kanan/ikut jam sebanyak 90 darjah.
  • Warna songsang Tentukan sama ada halaman diterap dengan warna songsang.
  • Tukar ke skala kelabu Tentukan sama ada halaman ditukar ke skala kelabu selepas penerapan.
  • Kerat margin Benarkan pembuangan margin halaman kosong selepas penerapan.
  • Komposisi Benarkan komposisi halaman terterap dengan warna kertas untuk melaras latar belakang dokumen diimbas.
  • Palang alat Menu ini mengandungi senarai palang alat yang ada untuk mencapa tindakan yang kerap diguna.
  • b>Labuh Menu ini mengandungi senarai labuh yang ada untuk memaparkan maklumat tambahan.
  • Fon... Buka dialog menyenaraikan fon yang diguna dalam dokumen.
  • Skrin Penuh Togol ke mod skrin penuh, iaitu tetingkap dipaparkan secara maksimum dan tanpa hiasan.
  • Persemabahan... Masuk ke mod persembahan dengan menekan kekunci F12 atau escape. Kekunci home/end digunakan untuk paparkan halaman pertama/terakhir. Kekunci anak panah kanan dan bawah, kekunci space dan page down lompat ke halaman berikutnya. Kekunci anak panah kiri dan atas, kekunci backspace dan page up lompat ke halaman terdahulu. Menekan kekunci control dan return akan lompat kembali ke halaman terdahulu sebelum lompatan terakhir.

Faktor skala boleh diubah dengan memasukkan peratus yang dikehendaki ke dalam medan teks di dalam palang alat lihat, yang mana boleh difokus dengan menggunakan Ctrl+L, dan menekan kekunci return.

Tab

  • Tab terdahulu/berikutnya Jadikan tab terdahulu/berikutnya tab semasa. Kitar tab pertama/terakhir jika tab pertama/terakhir adalah tab semasa.
  • Tutup tab Tutup tab semasa.
  • Tutup semua tab Tutup semua tab.
  • Tutup semua tab kecuali tab semasa Tutup semua tab kecuali tab semasa.
  • Ditutup baru-baru ini Mengandungi senarai tab yang baru ditutup (jika dibenarkan dalam tetapan).

Menu ini mengandungi senarai semua tab yang jadikan tab semasa dengan mengklik pada item menu berkenaan. Tab juga boleh ditutup dengan mengklik-tengah tetikus. Sembilan tab yang pertama dapat diaktifkan dengan menahan pengubahsuai Alt dan menekan kekunci satu hingga sembilan.

Tanda Buku

  • Tanda buku terdahulu Lompat ke tanda buku terdekat sebelum halaman semasa.
  • Tanda buku berikutnya Lompat ke tanda buku terdekat selepas halaman semasa.
  • Tambah tanda buku Tambah tanda buku untuk fail dan halaman semasa.
  • Buang tanda buku Buang tanda buku untuk fail dan halaman semasa.
  • Buang tanda buku Buang semua tanda buku.
  • Buka Buka fail berkenaan di dalam tab semasa. Jika tiada tab, fail akan dibuka dalam tab baharu.
  • Buka dalam tab baru Buka fail berkenaan dalam tab baru.
  • Lompat ke halaman Lompat ka halaman berkenaan jika fail berkenaan sudah dibuka. Jika tidak, fail tersebut akan dibuka dalam tab baharu.

Bantuan

  • Kandungan Papar dokumen ini.
  • Perihal Papar versi program.

a name="mainview">Paparan utama

Kekunci backspace/space key langkau ke halaman terdahulu/berikutnya. Manakala, kekunci home/end langkau ke halaman pertama/terakhir. Kekunci anak panah, page up dan page menatal port pandang. Penekanan kekunci control dan return jumps akan lompat ke halaman sebelum lompatan terakhir.

Dengan menggunakan roda tetikus ditatal ke atas atau ke bawah. Tahan ALT ketika menggunakan roda tetikus untuk ditatal ke kiri dan ke kanan. Tahan CTRL ketika menggunakan roda tetikus untuk skalakan dokumen. Tahan SHIFT ketika menggunakan roda tetikus untuk memutar dokumen. (Pengubahsuai papan kekunci boleh diubah di dalam dialog tetapan.) Klik dan tahan butang tengah tetikus untuk membentuk segiempat seterusnya mengezum masuk.

Pautan disorot oleh bingkai merah (jika dibenarkan dalam tetapan). Klik-kiri pada pautan untuk menunjukkan halaman terpaut atau buka URL terpaut dalam pelayar lalai (jika dibenarkan dalam tetapan). Klik-tengah pada pautan untuk menunjukkan halaman terpaut dalam tab baharu. Kursor berada diatas pautan memaparkan destinasinya sebagai tip alat.

Medan borang disorot dengan bingkai biru (jika dibenarkan dalam tetapan). Klik-kiri pada medan borang untuk menyunting kandungannya. Terapung diatas medan borang akan paparkan namanya sebagai tip alat.

Sumber kedudukan dalam dokumen boleh dibuka dengan penyunting sumber menggunakan menu konteks yang secara pilihannya mengandungi item untuk pemadanan pertama nod SyncTeX.

Untuk menyalin teks atau imej, tahan SHIFT, klik dan tahan butang kiri tetikus untuk menyeret bingkai disekeliling kawasan yang hendak disalin. Seusai butang tetikus dilepaskan, satu menu timbul terpapar untuk memilih sama ada hendak menyalin teks atau imej ke dalam papan keratan.

Untuk menambah catatan atau anotasi, tahan CTRL, klik dan tahan butang kiri tetikus untuk menyeret bingkai disekeliling kawasan yang hendak dicatatkan. Bila butang tetikus dilepaskan, satu menu timbul terpapar sama ada hendak menambah teks atau menyorot cacatan. Klik-kiri untuk menyunting catatan. Klik-kanan untuk membuang catatan. (Penambahan dan pembuangan catatan memerlukan versi pustaka Poppler 0.20.1 atau ke atas.) Kursor berada di atas catatan akan paparkan kandungannya sebagai tip alat.

Untuk zum ke pemilihan, tahan SHIFT dan CTRL, kemudian klik dan tahan butang kiri tetikus dan seret bingkai disekitar kawasan yang hendak dizumkan.

Ketampakan palang alat dan menu boleh ditogol menggunakan pintasan papan kekunci boleh dikonfigur yang mana nilai lalai adalah "Shift+Alt+T" dan "Shift+Alt+M".

Paparan tambahan

Paparan garis luar memaparkan selayang pandang kandungan dokumen. Seklik kiri pada masukan akan langkau ke halaman berkenaan dalam paparan utama. Menu konteks boleh digunakan untuk kembang/kuncupkan semua item dibawah item terpilih.

Paparan garis luar juga boleh dinavigasi menggunakan papan kekunci dan roda tetikus. Tahan Shift dan klik kekunci Up/Down untuk menatal paparan. Tahan Shift dan klik kekunci Left/Right akan kuncup/kembangkan satu aras item dibawah item terpilih. Tahan Control dan klik kekunci Left/Right akan sepenuhnya kuncup/kembangkan item terpilih dan anak-anaknya. Tahan Shift dan tatal guna roda tetikus akan mengubah item terpilih. Tahan Control dan tatal roda tetikus akan kembang/kuncupkan item terpilih.

Paparan sifat paparkan maklumat tambahan yang terkandung di dalam dokumen.

Paparan lakaran kenit papar versi kecil halaman dokumen. Klik kiri padanya akan lompat ke halaman berkenaan di paparan utama.

Paparan tanda buku menunjukkan tanda buku berkaitan dengan dokumen yang terpapar dalam tab semasa. Menu konteks mengandungi masukan yang langkau ke tanda buku berikutnya/terdahulu atau untuk menambah tanda buku. Menu konteks bagi setiap masukan untuk sunting dan padam tanda buku.

Jika dibenarkan dalam tetapan, labuh gelintar lanjutan menunjukkan selayang pandang yang mengandungi keputusan semua gelintar yang telah dibuat dalam semua tab. Ia juga menunjukkan teks disekitar keputusan yang mana terma gelintar ditegaskan. Dengan mengklik pada keputusan tersebut akan membuka tab berkenaan dan langkau ke kedudukannya.

Tetapan

Tetapan kelakuan

  • Buka URL Tentuka sama ada pautan ke URL dibuka dalam pelayar lalai.
  • Segar semula automatik Tentukan sama ada fail dimuat semula secara automatik jika berubah pada cakera.
  • Jejak diguna baru-baru ini Jika dibenarkan, satu menu diguna baru-baru ini akan tersedia dan senaraikan sebanyak mungkin fail diguna baru-baru ini di dalam pilihan "Kiraan diguna baru-baru ini". (Berkesan selepas dimula semula.)
  • Kekalkan ditutup baru-baru ini Jika dibenarkan, menu ditutup baru-baru ini tersedia dan senaraikan beberapa tab ditutup baru-baru ini yang telah ditetapkan dalam pilihan "Kiraan ditutup baru-baru ini". Pengekalan tab sedia ada menyebabkan peningkatan penggunaan ingatan secara drastik. (Berkesan selepas mula semula.)
  • Pulih tab Jika dibenarkan, tab dan sifatnya disimpan pada penghujung program dan dipulih semasa mula semula.
  • Pulih tanda buku Jika dibenarkan, tanda buku disimpan pada penghujung program dan dipulih semasa mula semula.
  • Pulih tetapan per-fail Jika dibenarkan, tetapan per-fail disimpan/dipulih bila membuka/menutup tab.
  • Simpan sela pangkalan data Sela selepas tab, tanda buku atau tetapan per-fail disimpan ke dalam pangkalan data.
  • Segerak persembahan Jika dibenarkan, paparan utama boleh digunakan untuk mengawal paparan persembahan.
  • Skrin persembahan Indeks skrin untuk paparkan paparan persembahan.
  • Segerak paparan garis luas Jika dibenarkan, paparan garis luar akan menyorot masukan pertama yang menuju ke halaman semasa bilamana halaman semasa berubah.
  • Penatalan minimum Jika dibenarkan, port pandang hanya ditatal jika kedudukan sasaran belum lagi kelihatan.
  • Faktor zum Bilangan faktor skala ialah perwakilan gandaan dibahagi dengan perwakilan zum masuk.
  • Warna sorot Tentukan warna sorot.
  • Tempoh sorot Tentukan tempoh sorot sementara.
  • Warna catatan Warna catatan ditambah oleh program menggunakan kata kunci warna SVG atau tandaan heksadesimal '#rrggbb'.
  • Penyunting sumber Program yang dimulakan untuk menyunting sumber. '%1' diganti dengan laluan fail mutlak. '%2' diwakili '%3' diganti dengan nombor lajur wakil baris.

Tetapan grafik

  • Guna penjubinan Halaman akan dibahagikan kepada jubin sebelum diterap dan dicachekan untuk mengurangkan penggunaan ingatan.
  • Kekalkan peta pix lapuk Jika dibenarkan, bila berlaku perubahan faktor zum, peta pix tercache akan digunakan untuk melakar anggaran peta pix akhir sehinggalah ia tersedia tetapi dengan kos penggunaan ingatan.
  • Guna nisbah piksel peranti Jika dibenarkan, nisbah piksel peranti yang tersedia digunakan untuk menerap pada fizikal dan dipapar pada resolusi logikal
  • Hias halaman Tentukan sama ada halaman ditetapkan terasing dari latar belakang.
  • Hias pautan Tentukan sama ada pautan disorot dengan bingkai merah.
  • Hias medah borang Tentukan sama ada medan borang disorot dengan bingkai biru.
  • Warna latar belakang Tentukan warna latar belakang menggunakan kata kunci warna SVG atau notasi heksadesimal '#rrggbb'.
  • Warna kertas Tentukan warna halaman menggunakan kata kunci warna SVG atau notasi heksadesimal '#rrggbb'.
  • Warna latar belakang persembahan Batalkan warna kertas dalam pengiraan warna latar belakang paparan persembahan dan ditakrif menggunakan kata kunci warna SVG atau notasi heksadesimal '#rrggbb'.
  • Halaman per baris Bilangan halaman per baris di dalam mod bentangan 'halaman berbilang'.
  • Penjarakkan halaman Tentukan kedua-dua jarak menegak & mengufuk yang dipapar diantara halaman.
  • Penjarakkan lakaran kenit Tentukan kedua-dua jarak menegak & mengufuk yang dipapar diantara lakaran kenit.
  • b>Saiz lakaran kenit Tentukan saiz lakaran kenit.
  • Saiz cache Program akan cuba cache halaman terterap didalam had ini akan tingkatkan kelajuan penerapan dengan kos penggunaan ingatan meingkat.
  • Prefetch Program akan cuba menerap halaman yang belum lagi kelihatan dengan meningkatkan kelajuan penerapan pada kos penggunaan cache yang meningkat.
  • Jarak prefetch Bilangan baris disebalik baris semasa dan dua kali ganda bilangan baris sebelum baris semasa yang telah di prefetch.
  • Tetapan PDF
    • Antialias Pertingkatkan kualiti paparan dengan kos terhadap prestasi
    • Antialias teks Mepertingkatkan kualiti teks tetapi menjejaskan prestasi
    • Bayangan teks Dapat mempertingkatkan kualitit paparan teks bagi fon tertentu.
    • Pratonton lebih-cetak Jika dibenarkan, satu pratonton percetakan satu lapisan dakwat diatas yang lain dipaparkan.
    • Mod garis nipis Pilih pengoptimuman yang digunakan untuk melukis garis nipis.
    • Bahagian belakang Pilih bahagian belakang yang digunakan untuk menerap halaman.
  • Tetapan PS
    • Bit antialias grafik Tentukan amaun antialias untuk grafik.
    • Bit antialias teks Tentukan amaun antialias untuk teks.

Tetapan antaramuka

  • Labuh gelintar lanjutan Jika dibenarkan, labuh gelintar lalai dilanjutkan dengan paparan keputusan semua tab. (Berkessan selepas mula semula.)
  • Tindihan atas anotasi Jika dibenarkan, semua anotasi dalam halaman akan dipapar sebagai tindihan atas interaktif. Melainkan setiap anotasi akan dikendalikan sebagai tetingkap timbul berasingan.
  • Tindihan atas medan borang Jika dibenarkan, semua medan borang dalam halaman akan dipapar sebagai tindihan atas interaktif. Melainkan setiap medan borang akan dikendalikan sebagai tetingkap timbul berasingan.
  • Kedudukan tab Takrifkan bucu tab paparan utama yang manakah akan dipapar.
  • Ketampakan tab Tentukan sama ada tab akan dipapar jika kurang dari dua dokumen dibuka.
  • Hampar tab Tentukan jika tab akan dihampar secara sekata menyeluruhi keseluruhan palang tab.
  • Tab baharu disebelah tab semasa Jika dibenarkan, tab baharu dibuka disebelah kanan tab aktif.
  • Keluar selepas tab terakhir Jika dibenarkan, aplikasi keluar selepas tab terakhir ditutup.
  • Kiraan diguna baru-baru ini Tetapkan bilangan fail yang tersenarai dalam menu diguna baru-baru ini, jika "Jejak diguna baru-baru ini" dibenarkan. (Berkesan selepas mula semula.)
  • Kiraan ditutup baru-baru ini Tetapkan bilangan fail yang tersenarai dalam menu ditutup baru-baru ini, jika "Kekalkan ditutup baru-baru ini" dibenarkan. (Berkesan selepas mula semula.)
  • Palang alat fail Takrifkan tindakan yang manakah tampak dalam palang alat fail. Tindakan tersedia adalah openInNewTab, buku, segarsemula, saveCopy, saveAs, cetak dan pemisah. (Berkesan selepas mula semula.)
  • Palang alat sunting Takrif tindakan yang manakah tampak dalam palang alat sunting. Tindakan tersedia adalah currentPage, previousPage, nextPage, firstPage, lastPage, jumpToPage, jumpBackward, jumpForward, search, copyToClipboardMode, addAnnotationMode dan separator. (Berkesan selepas mula semula.)
  • Palang alat Lihat Takrif tindakan yang manakah tampak dalam palang alat lihat. Tindakan tersedia adalah scaleFactor, zoomIn, zoomOut, continuousMode, twoPagesMode, twoPagesWithCoverPageMode, multiplePagesMode, originalSize, fitToPageWidthMode, fitToPageSizeMode, rotateLeft, rotateRight, fullscreen, presentation dan separator. (Berkesan selepas mula semula.)
  • Document context menu Defines which actions are visible in the document's context menu. Available actions are openCopyInNewTab, openCopyInNewWindow, openContainingFolder, moveToInstance, previousPage, nextPage, firstPage, lastPage, jumpToPage, jumpBackward, jumpForward, setFirstPage, findPrevious, findNext, cancelSearch and separator.
  • Tab context menu Defines which actions are visible in a tab's context menu. Available actions are openCopyInNewTab, openCopyInNewWindow, openContainingFolder, moveToInstance, copyFilePath, selectFilePath, closeAllTabs, closeAllTabsButThisOne, closeAllTabsToTheLeft, closeAllTabsToTheRight and separator.
  • Menu boleh tatal Akan membatalkan gaya lalai supaya menu timbul ditatal selain dari dipersembahkan dalam lajur berbilang jika ia lebih besar dari ruang skrin sedia ada. (Berkesan selepas mula semula.)
  • Menu boleh gelintar Lanjutkan navigasi papan kekunci lalai bagi tab dan menu tanda buku berdasarkan mekanisma gelintar-apa-yang-anda-taip.
  • Togol palang alat dan menu dengan skrin penuh Sentiasa togol ketampakan palang alat dan menu bila menogol ke mod skrrin penuh.
  • Guna label halaman Tentukan jika label halaman dibekali-dokumen akan digunakan selain dari nombor halaman bila tersedia.
  • Tajuk dokumen sebagai tajuk tab Tentukan jika tajuk tab diambil dari data-meta selain dari nama fail.
  • Halaman semasa dalam tajuk tetingkap Jika dibenarkan, halaman semasa dan nombor halaman dokumen di dalam tab aktif dipaparkan dalam tajuk tetingkap.
  • Nama kejadian dalam tajuk tetingkap Jika dibenarkan dan kejadian semasa dinamakan, namanya dipapar dalam tajuk tetingkap.
  • Sorot lakaran kenit semasa Jika dibenarkan, halaman semasa disorot dalam paparan lakaran kenit.
  • Had lakaran kenit mengikut keputusan Jika pilihan ini dibenarkan dan gelintar dibuat, hanya halaman yang mana terma gelintar ditemui terpapar dalam paparan lakaran kenit.

Tetapan pintasan

Tetapan pintasan membolehkan pelarasan pintasan papan kekunci mengikut kehendaki peribadi. Pintasan boleh diubah dengan mengklik dua-kali pada pintasan untuk menyuntingnya dan menginput pintasan baharu. Setiap tindakan boleh mempunyai beberapa pintasan dengan menginput senarai terpisah-titik-bertindih pada mereka. Nama kekunci yang bukan satu abjad ditulis dengan jelas (contohnya. "Alt", "Ctrl", "PgDown"), yang mana pemadanan tidak sensitif kata. Jika pintasan mengandungi kekunci pengubahsuai, nama kekunci digabung dengan simbol campur dan kekunci pengubahsuai mesti disenarai terlebih dahulu, contohnya. "Ctrl+A" atau "Ctrl++".

Tetapan pengubahsuai

  • Zum Pengubahsuai papan kekunci untuk zum menggunakan roda tetikus dalam paparan utama.
  • Putar Pengubahsuai papan kekunci untuk diputar menggunakan roda tetikus dalam paparan utama.
  • Tatal Pengubahsuai papan kekunci untuk tatal secara mengufuk menggunakan roda tetikus dalam paparan utama.
  • Salin ke papan keratan Pengubahsuai papan kekunci untuk salin teks atau imej ke papan keratan.
  • Tambah catatan Pengubahsuai papan kekunci untuk tambah catatan ke dalam halaman.
  • Zum ke pemilihan Pengubahsuai papan kekunci yang mengezum ke pemilihan dalam satu halaman.
qpdfview-0.4.18/help/help_pl.html0000644000000000000000000006157213516127411015034 0ustar 00000000000000 Pomoc

Pomoc

Spis treści

  1. Główne menu
    1. Plik
    2. Edycja
    3. Widok
    4. Karty
    5. Zakładki
    6. Pomoc
  2. Widok główny
  3. Widok pomocniczy
  4. Ustawienia
    1. Zachowanie ustawień
    2. Ustawienia grafiki
    3. Ustawienia interfejsu
    4. Ustawienia skrótu
    5. Ustawienia modyfikatora

Wprowadzenie

qpdfview to przeglądarka dokumentów w obsługą kart. Używa Poppler dla wsparcia PDF, libspectre dla PS, DjVuLibre dla DjVu, CUPS dla wsparcia drukowania i bibioteki Qt jako interfejs graficzny.

Proszę odnieść się do strony podręcznika po informację na temat opcji wiersza polecenia i plików konfiguracyjnych.

Menu główne

Plik

  • Open... Opens a dialog to choose a file to open in the current tab. If there is no tab, the file is opened in a new tab.
  • Open in new tab... Opens a dialog to choose files to open in new tabs.
  • Recently used Contains a list of the most recently used files (if enabled in the settings).
  • Refresh Reloads the file displayed in the current tab.
  • Save Saves changes to annotations and form fields to the file displayed in the current tab.
  • Save as... Opens a dialog to save the file displayed in the current tab including changes to annotations and form fields.
  • Save copy... Opens a dialog to save an umodified copy of the file displayed in the current tab.
  • Print... Opens a dialog to print the file displayed in the current tab.
  • Wyjdź Zamyka wszystkie zakładki i kończy działanie programu.

Edycja

  • Next/Previous/First/Last page Skips to the next/previous/first/last page of the document.
  • Jump to page... Opens a dialog to enter a page to display in the current tab.
  • Jump backward/forward Jumps backward/forward in the history of displayed page.
  • Search... Opens the search dock below the main view. The search automatically starts two seconds after the last change of the search term or is manually started by pressing the return key. If the Shift modifier is held when the return key is pressed, the search starts in all tabs instead of just the current tab. (This effect is reversed if the extended search dock is enabled in the settings.)
  • Find previous/next Jumps to the previous/next occurrence of the search term in the document.
  • Cancel search Cancels the currently running search and closes the search dock.
  • Copy to clipboard If checked, the program will wait for a frame to be dragged to copy texts or images.
  • Add annotation If checked, the program will wait for a frame to be dragged to add annotations.
  • Settings... Opens the settings dialog. The button labeled 'Defaults' will revert all settings on all tabs to their default values. The button labeled 'Defaults on current tab' will revert only the settings on the current tab to their default values.

The current page can be changed by entering the desired page into the text field in the edit tool bar, which can be focused using Ctrl+K, and pressing the return key.

View

  • Continuous Determines whether all rows of the page layout are visible at once.
  • Two pages Determines whether the page layout uses two columns.
  • Two pages with cover page Determines whether the page layout uses two columns with a break after the cover page.
  • Multiple pages Determines whether the page layout uses multiple columns. The number of columns can be changed in the settings dialog.
  • Right to left Determines how pages are arranged in layouts with multiple pages per row.
  • Zoom in Increases the scale factor by 10 percent. The maximum scale factor is 5000 percent.
  • Zoom out Decreases the scale factor by 10 percent. The minimum scale factor is 10 percent.
  • Original size Resets the scale factor to 100 percent.
  • Fit to page width Determines the scale factor such that all pages fully fit into the main view horizontally.
  • Fit to page size Determines the scale factor such that all pages fully fit into the main view horizontally and vertically.
  • Rotate left Rotates the pages left/counterclockwise by 90 degrees.
  • Rotate right Rotates the pages right/clockwise by 90 degrees.
  • Invert colors Determines whether pages are rendered with inverted colors.
  • Convert to grayscale Determines whether pages are converted to grayscale after rendering.
  • Trim margins Enables the removal of empty page margins after rendering.
  • Composition Enables the composition of the rendered page with the paper color to adjust the background of scanned documents.
  • Tool bars This menu contains a list of available tool bars for accessing frequently used actions.
  • Docks This menu contains a list of available docks for displaying supplementary information.
  • Fonts... Opens a dialog listing the fonts used in the document.
  • Fullscreen Toggles the fullscreen mode, i.e. the window is shown maximized and without decoration.
  • Presentation... Enters presentation mode which can be left by pressing F12 or escape. The home/end key is used to display the first/last page. Arrow keys right and down, space and the page down key jump to the next page. Arrow keys left and up, backspace and the page up key jump to the previous page. Pressing control and return jumps back to the page before the last jump.

The scale factor can be changed by entering the desired percentage into the text field in the view tool bar, which can be focused using Ctrl+L, and pressing the return key.

Karty

  • Previous/Next tab Makes the previous/next tab the current tab. Cycles to the last/first tab if the first/last tab is the current tab.
  • Zamknij kartę Zamyka bieżącą kartę.
  • Zamknij wszystkie karty Zamyka wszystkie karty.
  • Close all tabs but current tab Closes all tabs except for the current tab.
  • Recently closed Contains a list of the most recently closed tabs (if enabled in the settings).

This menu contains a list of all tabs which can be made the current tab by clicking on the corresponding menu item. Tabs can also be closed by middle-clicking. The first nine tabs can also be activated by holding the Alt modifier and pressing keys one to nine.

Zakładki

  • Previous bookmark Jumps to the closest bookmark before the current page.
  • Next bookmark Jumps to the closest bookmark after the current page.
  • Add bookmark Adds a bookmark for the current file and page.
  • Remove bookmark Removes the bookmark for the current file and page.
  • Remove all bookmarks Removes all bookmarks.
  • Open Opens the corresponding file in the current tab. If there is no tab, the file is opened in a new tab.
  • Open in new tab Opens the corresponding file in a new tab.
  • Jump to page Jumps to the corresponding page if the corresponding file is already open. Otherwise the corresponding file is opened in a new tab.

Help

  • Contents Displays this document.
  • About Displays the program version.

Main view

The backspace/space key skips to the previous/next page. The home/end key skips to the first/last page. The arrow, page up and page down keys scroll the viewport. Pressing control and return jumps to the page before the last jump.

Using the mouse wheel scrolls up and down. Holding ALT while using the mouse wheel scrolls left and right. Holding CTRL while using the mouse wheel scales the document. Holding SHIFT while using the mouse wheel rotates the document. (Keyboard modifiers can be changed in the settings dialog.) Click and hold the middle mouse button to select a rectangle to zoom to.

Links are highlighted by red frames (if enabled in the settings). Left-click on a link to show the linked page or open the linked URL in the default browser (if enabled in the settings). Middle-click on a link to show the linked page in a new tab. Hovering over a link displays its destination as a tool tip.

Form fields are highlighted by blue frames (if enabled in the settings). Left-click on a form field to edit its contents. Hovering over a form field displays its name as a tool tip.

The source of a position in the document can be opened in the source editor using the context menu which optionally contains an item for the first matching SyncTeX node.

To copy texts or images, hold SHIFT, click and hold the left mouse button to drag a frame around the area to copy. Once the mouse button is released, a pop-up menu is displayed to select whether to copy texts or images into the clipboard.

To add annotations, hold CTRL, click and hold the left mouse button to drag a frame around the region to annotate. Once the mouse button is released, a pop-up menu is displayed to select whether to add text or highlight annotations. Left-click to edit annotations. Right-click to remove annotations. (Adding and removing annotations requires version 0.20.1 or higher of the Poppler library.) Hovering over an annotation displays its contents as a tool tip.

To zoom to a selection, hold SHIFT and CTRL, click and hold the left mouse button to drag a frame around region to zoom into.

The visibility of the tool and menu bars can be toggled using configurable keyboard shortcuts whose default values are "Shift+Alt+T" and "Shift+Alt+M".

Auxiliary views

The outline view displays an overview of the contents of the document. A left click on an entry jumps to the respective page in the main view. The context menu can be used to expand/collapse all items below the selected item.

The outline view can also be navigated using the keyboard and the mouse wheel. Holding Shift and using the Up/Down keys will scroll the view. Holding Shift and using the Left/Right keys will collapse/expand one level of items below the selected item. Holding Control and using the Left/Right keys will completely collapse/expand the selected item and its children. Holding Shift and using the mousel wheel will change the selected item. Holding Control and using the mouse wheel will expand/collapse the selected item.

The properties view displays additional information contained in the document.

The thumbnails view displays smaller versions of the pages of the document. A left click on an entry jumps to the respective page in the main view.

The bookmarks view shows the bookmarks related to the document displayed in the current tab. The context menu contains entries to jump to the previous/next boookmark or to add bookmarks. The context menu of each entry also contains entries to edit and delete bookmarks.

If enabled in the settings, the extended search dock shows an overview containing the results of all searches being performed in all tabs. It also shows the text surrounding a result with the search term being emphasized. Clicking on a result opens the corresponding tab and jumps to its position.

Settings

Behavior settings

  • Open URL Determines whether links to URL are opened in the default browser.
  • Auto-refresh Determines whether files are automatically reloaded if changed on disk.
  • Track recently used If enabled, a recently used menu is available and lists as many recently used files as set in the "Recently used count" option. (Effective after restart.)
  • Keep recently closed If enabled, a recently closed menu is available and lists as many recently closed tabs as set in the "Recently closed count" option. Keeping the tabs available could increase memory usage considerably. (Effective after restart.)
  • Restore tabs If enabled, tabs and their properties are saved on ending the program and restored on restart.
  • Restore bookmarks If enabled, bookmarks are saved on ending the program and restored on restart.
  • Restore per-file settings If enabled, per-file settings are saved/restored on opening/closing tabs.
  • Save database interval The interval after which tabs, bookmarks or per-file settings are saved to the database.
  • Synchronize presentation If enabled, the main view can be used to control the presentation view.
  • Presentation screen The index of the screen to display the presentation view on.
  • Synchronize outline view If enabled, the outline view will highlight the first entry pointing to the current page whenever the current page changes.
  • Minimal scrolling If enabled, the view port will only be scrolled if the target position is not yet visible.
  • Zoom factor The number by which the scale factor is multiplied resp. divided upon zooming in resp. out.
  • Highlight color Determines the color of highlights.
  • Highlight duration Determines the duration of temporary highlights.
  • Annotation color The color of annotations added by the program using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Source editor The program which is started to edit sources. '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number.

Graphics settings

  • Use tiling Pages will be divided into tiles before rendering and caching to reduce memory usage.
  • Keep obsolete pixmaps If enabled, then upon change of the zoom factor, cached pixmaps will be used to draw approximations of final pixmaps until these are available at the cost of increased memory usage.
  • Use device pixel ratio If enabled, the highest available device pixel ratio is used to render at physical and display at logical resolution.
  • Decorate pages Determines whether pages are set apart from the background.
  • Decorate links Determines whether links are highlighted by red frames.
  • Decorate form fields Determines whether form fields are highlighted by blue frames.
  • Background color Determines the color of the background using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Paper color Determines the color of pages using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Presentation background color Overrides the paper color in the computation of the background color of the presentation view and is defined using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Pages per row Number of pages per row in the 'multiple pages' layout mode.
  • Page spacing Determines both vertical and horizontal space displayed between pages.
  • Thumbnail spacing Determines both vertical and horizontal space displayed between thumbnails.
  • Thumbnail size Determines the size of the thumbnails.
  • Cache size The program will try to cache rendered pages within this limit increasing rendering speed at the cost of increased memory usage.
  • Prefetch The program will try to render pages that are not yet visible increasing rendering speed at the cost of increased cache usage.
  • Prefetch distance The number of rows beyond the current row and twice the number of rows before the current row that are prefetched.
  • PDF settings
    • Antialiasing Improves display quality at the cost of performance
    • Text antialiasing Improves text display quality at the cost of performance
    • Text hinting May improve text display quality for certain fonts.
    • Overprint preview If enabled, a preview of printing one layer of ink on top of another is displayed.
    • Thin line mode Chooses the optimization used to draw thin lines.
    • Backend Chooses the backend used to render pages.
  • PS settings
    • Graphics antialias bits Determines the amount of antialiasing for graphics.
    • Text antialias bits Determines the amount of antialiasing for text.

Interface settings

  • Extended search dock If enabled, the default search dock is extended by an overview showing the results of all tabs. (Effective after restart.)
  • Annotation overlay If enabled, all annotations on a page will be displayed as an interactive overlay. Otherwise each annotation will be handled as a separate pop-up window.
  • Form field overlay If enabled, all form fields on a page will be displayed as an interactive overlay. Otherwise each form field will be handled as a separate pop-up window.
  • Tab position Defines at which edge of the main view tabs will be displayed.
  • Tab visibility Determines whether tabs will be displayed if less than two documents are opened.
  • Spread tabs Determines if tabs will be spread out evenly over the whole tab bar.
  • New tab next to current tab If enabled, new tabs are opened to the right of the active tab.
  • Exit after last tab If enabled, the application exits after the last tab is closed.
  • Recently used count Sets the number of files that are listed in the recently used menu, if "Track recently used" is enabled. (Effective after restart.)
  • Recently closed count Sets the number of tabs that are listed in the recently closed menu, if "Keep recently closed" is enabled. (Effective after restart.)
  • File tool bar Defines which actions are visible in the file tool bar. Available actions are openInNewTab, open, refresh, saveCopy, saveAs, print and separator. (Effective after restart.)
  • Edit tool bar Defines which actions are visible in the edit tool bar. Available actions are currentPage, previousPage, nextPage, firstPage, lastPage, jumpToPage, jumpBackward, jumpForward, search, copyToClipboardMode, addAnnotationMode and separator. (Effective after restart.)
  • View tool bar Defines which actions are visible in the view tool bar. Available actions are scaleFactor, zoomIn, zoomOut, continuousMode, twoPagesMode, twoPagesWithCoverPageMode, multiplePagesMode, originalSize, fitToPageWidthMode, fitToPageSizeMode, rotateLeft, rotateRight, fullscreen, presentation and separator. (Effective after restart.)
  • Document context menu Defines which actions are visible in the document's context menu. Available actions are openCopyInNewTab, openCopyInNewWindow, openContainingFolder, moveToInstance, previousPage, nextPage, firstPage, lastPage, jumpToPage, jumpBackward, jumpForward, setFirstPage, findPrevious, findNext, cancelSearch and separator.
  • Tab context menu Defines which actions are visible in a tab's context menu. Available actions are openCopyInNewTab, openCopyInNewWindow, openContainingFolder, moveToInstance, copyFilePath, selectFilePath, closeAllTabs, closeAllTabsButThisOne, closeAllTabsToTheLeft, closeAllTabsToTheRight and separator.
  • Scrollable menus Will override the default style so that pop-up menus scroll instead being laid-out in mutliple columns if they are larger than the available screen space. (Effective after restart.)
  • Searchable menus Extends the default keyboard navigation of the tabs and bookmarks menus by a search-as-you-type mechanism.
  • Toggle tool and menu bars with fullscreen Always toggles the visibility of the tool and menu bars when toggling fullscreen mode.
  • Use page label Determines if document-supplied page label will be used instead of page numbers when available.
  • Document title as tab title Determines if the tab title as derived from the meta-data instead of the file name.
  • Current page in window title If enabled, the current page and number of pages of the document in the active tab are displayed in the window title.
  • Instance name in window title If enabled and the current instance is named, its name is displayed in the window title.
  • Highlight current thumbnail If enabled, the current page is highlighted in the thumbnails view.
  • Limit thumbnails to results If this option is enabled and a search is conducted, only the pages where the search term is found are displayed in the thumbnails view.

Shortcut settings

The shortcut settings allows the adjustment of keyboard shortcuts to personal preference. Shortcuts are changed by double-clicking on the shortcut to edit it and entering the new shortcut. Each action can have several shortcuts by entering a semicolon-separated list of them. Names of keys that are not single letters are written out explicitly (e.g. "Alt", "Ctrl", "PgDown"), where the matching is not case sensitive. If the shortcut contains modifier keys, the names of the keys are joined by a plus sign and modifier keys must be listed first, e.g. "Ctrl+A" or "Ctrl++".

Modifier settings

  • Zoom The keyboard modifiers to zoom using the mouse wheel in the main view.
  • Rotate The keyboard modifiers to rotate using the mouse wheel in the main view.
  • Scroll The keyboard modifiers to scroll horizontally using the mouse wheel in the main view.
  • Copy to clipboard The keyboard modifiers to copy texts or images from a page to the clipboard.
  • Add annotation The keyboard modifiers to add annotations to a page.
  • Zoom to selection The keyboard modifiers to zoom to a slection on a page.
qpdfview-0.4.18/help/help_pt.html0000644000000000000000000006141113516127411015034 0ustar 00000000000000 Help

Help

Table of contents

  1. Main menu
    1. File
    2. Edit
    3. View
    4. Tabs
    5. Bookmarks
    6. Help
  2. Main view
  3. Auxiliary views
  4. Settings
    1. Behavior settings
    2. Graphics settings
    3. Interface settings
    4. Shortcut settings
    5. Modifier settings

Introduction

qpdfview is a tabbed document viewer. It uses Poppler for PDF support, libspectre for PS support, DjVuLibre for DjVu support, CUPS for printing support and the Qt toolkit for its interface.

Please refer to the manual page for information on command-line options and configuration files.

Main menu

File

  • Open... Opens a dialog to choose a file to open in the current tab. If there is no tab, the file is opened in a new tab.
  • Open in new tab... Opens a dialog to choose files to open in new tabs.
  • Recently used Contains a list of the most recently used files (if enabled in the settings).
  • Refresh Reloads the file displayed in the current tab.
  • Save Saves changes to annotations and form fields to the file displayed in the current tab.
  • Save as... Opens a dialog to save the file displayed in the current tab including changes to annotations and form fields.
  • Save copy... Opens a dialog to save an umodified copy of the file displayed in the current tab.
  • Print... Opens a dialog to print the file displayed in the current tab.
  • Exit Closes all tabs and ends the program.

Edit

  • Next/Previous/First/Last page Skips to the next/previous/first/last page of the document.
  • Jump to page... Opens a dialog to enter a page to display in the current tab.
  • Jump backward/forward Jumps backward/forward in the history of displayed page.
  • Search... Opens the search dock below the main view. The search automatically starts two seconds after the last change of the search term or is manually started by pressing the return key. If the Shift modifier is held when the return key is pressed, the search starts in all tabs instead of just the current tab. (This effect is reversed if the extended search dock is enabled in the settings.)
  • Find previous/next Jumps to the previous/next occurrence of the search term in the document.
  • Cancel search Cancels the currently running search and closes the search dock.
  • Copy to clipboard If checked, the program will wait for a frame to be dragged to copy texts or images.
  • Add annotation If checked, the program will wait for a frame to be dragged to add annotations.
  • Settings... Opens the settings dialog. The button labeled 'Defaults' will revert all settings on all tabs to their default values. The button labeled 'Defaults on current tab' will revert only the settings on the current tab to their default values.

The current page can be changed by entering the desired page into the text field in the edit tool bar, which can be focused using Ctrl+K, and pressing the return key.

View

  • Continuous Determines whether all rows of the page layout are visible at once.
  • Two pages Determines whether the page layout uses two columns.
  • Two pages with cover page Determines whether the page layout uses two columns with a break after the cover page.
  • Multiple pages Determines whether the page layout uses multiple columns. The number of columns can be changed in the settings dialog.
  • Right to left Determines how pages are arranged in layouts with multiple pages per row.
  • Zoom in Increases the scale factor by 10 percent. The maximum scale factor is 5000 percent.
  • Zoom out Decreases the scale factor by 10 percent. The minimum scale factor is 10 percent.
  • Original size Resets the scale factor to 100 percent.
  • Fit to page width Determines the scale factor such that all pages fully fit into the main view horizontally.
  • Fit to page size Determines the scale factor such that all pages fully fit into the main view horizontally and vertically.
  • Rotate left Rotates the pages left/counterclockwise by 90 degrees.
  • Rotate right Rotates the pages right/clockwise by 90 degrees.
  • Invert colors Determines whether pages are rendered with inverted colors.
  • Convert to grayscale Determines whether pages are converted to grayscale after rendering.
  • Trim margins Enables the removal of empty page margins after rendering.
  • Composition Enables the composition of the rendered page with the paper color to adjust the background of scanned documents.
  • Tool bars This menu contains a list of available tool bars for accessing frequently used actions.
  • Docks This menu contains a list of available docks for displaying supplementary information.
  • Fonts... Opens a dialog listing the fonts used in the document.
  • Fullscreen Toggles the fullscreen mode, i.e. the window is shown maximized and without decoration.
  • Presentation... Enters presentation mode which can be left by pressing F12 or escape. The home/end key is used to display the first/last page. Arrow keys right and down, space and the page down key jump to the next page. Arrow keys left and up, backspace and the page up key jump to the previous page. Pressing control and return jumps back to the page before the last jump.

The scale factor can be changed by entering the desired percentage into the text field in the view tool bar, which can be focused using Ctrl+L, and pressing the return key.

Tabs

  • Previous/Next tab Makes the previous/next tab the current tab. Cycles to the last/first tab if the first/last tab is the current tab.
  • Close tab Closes the current tab.
  • Close all tabs Closes all tabs.
  • Close all tabs but current tab Closes all tabs except for the current tab.
  • Recently closed Contains a list of the most recently closed tabs (if enabled in the settings).

This menu contains a list of all tabs which can be made the current tab by clicking on the corresponding menu item. Tabs can also be closed by middle-clicking. The first nine tabs can also be activated by holding the Alt modifier and pressing keys one to nine.

Bookmarks

  • Previous bookmark Jumps to the closest bookmark before the current page.
  • Next bookmark Jumps to the closest bookmark after the current page.
  • Add bookmark Adds a bookmark for the current file and page.
  • Remove bookmark Removes the bookmark for the current file and page.
  • Remove all bookmarks Removes all bookmarks.
  • Open Opens the corresponding file in the current tab. If there is no tab, the file is opened in a new tab.
  • Open in new tab Opens the corresponding file in a new tab.
  • Jump to page Jumps to the corresponding page if the corresponding file is already open. Otherwise the corresponding file is opened in a new tab.

Help

  • Contents Displays this document.
  • About Displays the program version.

Main view

The backspace/space key skips to the previous/next page. The home/end key skips to the first/last page. The arrow, page up and page down keys scroll the viewport. Pressing control and return jumps to the page before the last jump.

Using the mouse wheel scrolls up and down. Holding ALT while using the mouse wheel scrolls left and right. Holding CTRL while using the mouse wheel scales the document. Holding SHIFT while using the mouse wheel rotates the document. (Keyboard modifiers can be changed in the settings dialog.) Click and hold the middle mouse button to select a rectangle to zoom to.

Links are highlighted by red frames (if enabled in the settings). Left-click on a link to show the linked page or open the linked URL in the default browser (if enabled in the settings). Middle-click on a link to show the linked page in a new tab. Hovering over a link displays its destination as a tool tip.

Form fields are highlighted by blue frames (if enabled in the settings). Left-click on a form field to edit its contents. Hovering over a form field displays its name as a tool tip.

The source of a position in the document can be opened in the source editor using the context menu which optionally contains an item for the first matching SyncTeX node.

To copy texts or images, hold SHIFT, click and hold the left mouse button to drag a frame around the area to copy. Once the mouse button is released, a pop-up menu is displayed to select whether to copy texts or images into the clipboard.

To add annotations, hold CTRL, click and hold the left mouse button to drag a frame around the region to annotate. Once the mouse button is released, a pop-up menu is displayed to select whether to add text or highlight annotations. Left-click to edit annotations. Right-click to remove annotations. (Adding and removing annotations requires version 0.20.1 or higher of the Poppler library.) Hovering over an annotation displays its contents as a tool tip.

To zoom to a selection, hold SHIFT and CTRL, click and hold the left mouse button to drag a frame around region to zoom into.

The visibility of the tool and menu bars can be toggled using configurable keyboard shortcuts whose default values are "Shift+Alt+T" and "Shift+Alt+M".

Auxiliary views

The outline view displays an overview of the contents of the document. A left click on an entry jumps to the respective page in the main view. The context menu can be used to expand/collapse all items below the selected item.

The outline view can also be navigated using the keyboard and the mouse wheel. Holding Shift and using the Up/Down keys will scroll the view. Holding Shift and using the Left/Right keys will collapse/expand one level of items below the selected item. Holding Control and using the Left/Right keys will completely collapse/expand the selected item and its children. Holding Shift and using the mousel wheel will change the selected item. Holding Control and using the mouse wheel will expand/collapse the selected item.

The properties view displays additional information contained in the document.

The thumbnails view displays smaller versions of the pages of the document. A left click on an entry jumps to the respective page in the main view.

The bookmarks view shows the bookmarks related to the document displayed in the current tab. The context menu contains entries to jump to the previous/next boookmark or to add bookmarks. The context menu of each entry also contains entries to edit and delete bookmarks.

If enabled in the settings, the extended search dock shows an overview containing the results of all searches being performed in all tabs. It also shows the text surrounding a result with the search term being emphasized. Clicking on a result opens the corresponding tab and jumps to its position.

Settings

Behavior settings

  • Open URL Determines whether links to URL are opened in the default browser.
  • Auto-refresh Determines whether files are automatically reloaded if changed on disk.
  • Track recently used If enabled, a recently used menu is available and lists as many recently used files as set in the "Recently used count" option. (Effective after restart.)
  • Keep recently closed If enabled, a recently closed menu is available and lists as many recently closed tabs as set in the "Recently closed count" option. Keeping the tabs available could increase memory usage considerably. (Effective after restart.)
  • Restore tabs If enabled, tabs and their properties are saved on ending the program and restored on restart.
  • Restore bookmarks If enabled, bookmarks are saved on ending the program and restored on restart.
  • Restore per-file settings If enabled, per-file settings are saved/restored on opening/closing tabs.
  • Save database interval The interval after which tabs, bookmarks or per-file settings are saved to the database.
  • Synchronize presentation If enabled, the main view can be used to control the presentation view.
  • Presentation screen The index of the screen to display the presentation view on.
  • Synchronize outline view If enabled, the outline view will highlight the first entry pointing to the current page whenever the current page changes.
  • Minimal scrolling If enabled, the view port will only be scrolled if the target position is not yet visible.
  • Zoom factor The number by which the scale factor is multiplied resp. divided upon zooming in resp. out.
  • Highlight color Determines the color of highlights.
  • Highlight duration Determines the duration of temporary highlights.
  • Annotation color The color of annotations added by the program using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Source editor The program which is started to edit sources. '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number.

Graphics settings

  • Use tiling Pages will be divided into tiles before rendering and caching to reduce memory usage.
  • Keep obsolete pixmaps If enabled, then upon change of the zoom factor, cached pixmaps will be used to draw approximations of final pixmaps until these are available at the cost of increased memory usage.
  • Use device pixel ratio If enabled, the highest available device pixel ratio is used to render at physical and display at logical resolution.
  • Decorate pages Determines whether pages are set apart from the background.
  • Decorate links Determines whether links are highlighted by red frames.
  • Decorate form fields Determines whether form fields are highlighted by blue frames.
  • Background color Determines the color of the background using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Paper color Determines the color of pages using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Presentation background color Overrides the paper color in the computation of the background color of the presentation view and is defined using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Pages per row Number of pages per row in the 'multiple pages' layout mode.
  • Page spacing Determines both vertical and horizontal space displayed between pages.
  • Thumbnail spacing Determines both vertical and horizontal space displayed between thumbnails.
  • Thumbnail size Determines the size of the thumbnails.
  • Cache size The program will try to cache rendered pages within this limit increasing rendering speed at the cost of increased memory usage.
  • Prefetch The program will try to render pages that are not yet visible increasing rendering speed at the cost of increased cache usage.
  • Prefetch distance The number of rows beyond the current row and twice the number of rows before the current row that are prefetched.
  • PDF settings
    • Antialiasing Improves display quality at the cost of performance
    • Text antialiasing Improves text display quality at the cost of performance
    • Text hinting May improve text display quality for certain fonts.
    • Overprint preview If enabled, a preview of printing one layer of ink on top of another is displayed.
    • Thin line mode Chooses the optimization used to draw thin lines.
    • Backend Chooses the backend used to render pages.
  • PS settings
    • Graphics antialias bits Determines the amount of antialiasing for graphics.
    • Text antialias bits Determines the amount of antialiasing for text.

Interface settings

  • Extended search dock If enabled, the default search dock is extended by an overview showing the results of all tabs. (Effective after restart.)
  • Annotation overlay If enabled, all annotations on a page will be displayed as an interactive overlay. Otherwise each annotation will be handled as a separate pop-up window.
  • Form field overlay If enabled, all form fields on a page will be displayed as an interactive overlay. Otherwise each form field will be handled as a separate pop-up window.
  • Tab position Defines at which edge of the main view tabs will be displayed.
  • Tab visibility Determines whether tabs will be displayed if less than two documents are opened.
  • Spread tabs Determines if tabs will be spread out evenly over the whole tab bar.
  • New tab next to current tab If enabled, new tabs are opened to the right of the active tab.
  • Exit after last tab If enabled, the application exits after the last tab is closed.
  • Recently used count Sets the number of files that are listed in the recently used menu, if "Track recently used" is enabled. (Effective after restart.)
  • Recently closed count Sets the number of tabs that are listed in the recently closed menu, if "Keep recently closed" is enabled. (Effective after restart.)
  • File tool bar Defines which actions are visible in the file tool bar. Available actions are openInNewTab, open, refresh, saveCopy, saveAs, print and separator. (Effective after restart.)
  • Edit tool bar Defines which actions are visible in the edit tool bar. Available actions are currentPage, previousPage, nextPage, firstPage, lastPage, jumpToPage, jumpBackward, jumpForward, search, copyToClipboardMode, addAnnotationMode and separator. (Effective after restart.)
  • View tool bar Defines which actions are visible in the view tool bar. Available actions are scaleFactor, zoomIn, zoomOut, continuousMode, twoPagesMode, twoPagesWithCoverPageMode, multiplePagesMode, originalSize, fitToPageWidthMode, fitToPageSizeMode, rotateLeft, rotateRight, fullscreen, presentation and separator. (Effective after restart.)
  • Document context menu Defines which actions are visible in the document's context menu. Available actions are openCopyInNewTab, openCopyInNewWindow, openContainingFolder, moveToInstance, previousPage, nextPage, firstPage, lastPage, jumpToPage, jumpBackward, jumpForward, setFirstPage, findPrevious, findNext, cancelSearch and separator.
  • Tab context menu Defines which actions are visible in a tab's context menu. Available actions are openCopyInNewTab, openCopyInNewWindow, openContainingFolder, moveToInstance, copyFilePath, selectFilePath, closeAllTabs, closeAllTabsButThisOne, closeAllTabsToTheLeft, closeAllTabsToTheRight and separator.
  • Scrollable menus Will override the default style so that pop-up menus scroll instead being laid-out in mutliple columns if they are larger than the available screen space. (Effective after restart.)
  • Searchable menus Extends the default keyboard navigation of the tabs and bookmarks menus by a search-as-you-type mechanism.
  • Toggle tool and menu bars with fullscreen Always toggles the visibility of the tool and menu bars when toggling fullscreen mode.
  • Use page label Determines if document-supplied page label will be used instead of page numbers when available.
  • Document title as tab title Determines if the tab title as derived from the meta-data instead of the file name.
  • Current page in window title If enabled, the current page and number of pages of the document in the active tab are displayed in the window title.
  • Instance name in window title If enabled and the current instance is named, its name is displayed in the window title.
  • Highlight current thumbnail If enabled, the current page is highlighted in the thumbnails view.
  • Limit thumbnails to results If this option is enabled and a search is conducted, only the pages where the search term is found are displayed in the thumbnails view.

Shortcut settings

The shortcut settings allows the adjustment of keyboard shortcuts to personal preference. Shortcuts are changed by double-clicking on the shortcut to edit it and entering the new shortcut. Each action can have several shortcuts by entering a semicolon-separated list of them. Names of keys that are not single letters are written out explicitly (e.g. "Alt", "Ctrl", "PgDown"), where the matching is not case sensitive. If the shortcut contains modifier keys, the names of the keys are joined by a plus sign and modifier keys must be listed first, e.g. "Ctrl+A" or "Ctrl++".

Modifier settings

  • Zoom The keyboard modifiers to zoom using the mouse wheel in the main view.
  • Rotate The keyboard modifiers to rotate using the mouse wheel in the main view.
  • Scroll The keyboard modifiers to scroll horizontally using the mouse wheel in the main view.
  • Copy to clipboard The keyboard modifiers to copy texts or images from a page to the clipboard.
  • Add annotation The keyboard modifiers to add annotations to a page.
  • Zoom to selection The keyboard modifiers to zoom to a slection on a page.
qpdfview-0.4.18/help/help_pt_BR.html0000644000000000000000000006211313516127411015417 0ustar 00000000000000 Ajuda

Ajuda

Tabela de conteúdos

  1. Menu principal
    1. Arquivo
    2. Editar
    3. Visualizar
    4. Abas
    5. Marcadores
    6. Ajuda
  2. Visualização principal
  3. Visualizações auxiliares
  4. Ajustes
    1. Ajustes de aparência
    2. Ajustes de gráficos
    3. Configurações da interface
    4. Configuração de atalhos
    5. Configurações de modificação

Introdução

qpdfview é um visualizador de documentos com abas. Utiliza o Poppler para suporte a PDF, libspectre para suporte a PS, DjVuLibre para suporte a DjVu, CUPS para suporte a impressão e QT Toolkit para sua interface.

Por favor, consulte a página do manual para obter informações sobre opções de linha de comando e arquivos de configuração.

Menu principal

Arquivo

  • Abrir... Abre uma janela para selecionar um arquivo para abrir na aba atual. Se não houver nenhuma aba, o arquivo é aberto é uma nova aba.
  • Abrir em nova aba... Abre uma janela para selecionar arquivos a serem abertos em novas abas.
  • Recentemente usado Contem uma lista dos arquivos recentemente utilizados (se ativado nas configurações).
  • Atualizar Recarrega o arquivo exibido na aba atual.
  • Save Saves changes to annotations and form fields to the file displayed in the current tab.
  • Salvar como... Abre um diálogo para salvar o arquivo exibido na aba atual incluindo alterações nas anotações e no formato.
  • Save copy... Opens a dialog to save an umodified copy of the file displayed in the current tab.
  • Imprimir... Abre um diálogo para imprimir o arquivo exibido na aba atual.
  • Sair Fecha todas as abas e encerra o programa.

Editar

  • Próxima/Anterior/Primeira/Última página Pula para a próxima/anterior/primeira/última página do documento.
  • Ir para a página... Abre um diálogo para colocar uma página para ser exibida na aba atual.
  • Pular para trás/para frente Pula para trás/frente no histórico da página em exibição.
  • Search... Opens the search dock below the main view. The search automatically starts two seconds after the last change of the search term or is manually started by pressing the return key. If the Shift modifier is held when the return key is pressed, the search starts in all tabs instead of just the current tab. (This effect is reversed if the extended search dock is enabled in the settings.)
  • Encontrar anterior/próximo Pula para a ocorrência anterior/próxima do termo procurado no documento.
  • Cancel search Cancels the currently running search and closes the search dock.
  • Copy to clipboard If checked, the program will wait for a frame to be dragged to copy texts or images.
  • Add annotation If checked, the program will wait for a frame to be dragged to add annotations.
  • Opções... Abre o diálogo de configuração. O botão chamado 'Padrão' irá reverter todas as configurações em todas as tabelas para seus valores padrões. O botão chamado 'Padrão na tabela atual' irá reverter apenas as configurações na tabela atual para seus valores padrões.

The current page can be changed by entering the desired page into the text field in the edit tool bar, which can be focused using Ctrl+K, and pressing the return key.

View

  • Continuous Determines whether all rows of the page layout are visible at once.
  • Two pages Determines whether the page layout uses two columns.
  • Two pages with cover page Determines whether the page layout uses two columns with a break after the cover page.
  • Multiple pages Determines whether the page layout uses multiple columns. The number of columns can be changed in the settings dialog.
  • Right to left Determines how pages are arranged in layouts with multiple pages per row.
  • Zoom in Increases the scale factor by 10 percent. The maximum scale factor is 5000 percent.
  • Zoom out Decreases the scale factor by 10 percent. The minimum scale factor is 10 percent.
  • Original size Resets the scale factor to 100 percent.
  • Fit to page width Determines the scale factor such that all pages fully fit into the main view horizontally.
  • Fit to page size Determines the scale factor such that all pages fully fit into the main view horizontally and vertically.
  • Rotate left Rotates the pages left/counterclockwise by 90 degrees.
  • Rotate right Rotates the pages right/clockwise by 90 degrees.
  • Invert colors Determines whether pages are rendered with inverted colors.
  • Convert to grayscale Determines whether pages are converted to grayscale after rendering.
  • Trim margins Enables the removal of empty page margins after rendering.
  • Composition Enables the composition of the rendered page with the paper color to adjust the background of scanned documents.
  • Tool bars This menu contains a list of available tool bars for accessing frequently used actions.
  • Docks This menu contains a list of available docks for displaying supplementary information.
  • Fonts... Opens a dialog listing the fonts used in the document.
  • Fullscreen Toggles the fullscreen mode, i.e. the window is shown maximized and without decoration.
  • Presentation... Enters presentation mode which can be left by pressing F12 or escape. The home/end key is used to display the first/last page. Arrow keys right and down, space and the page down key jump to the next page. Arrow keys left and up, backspace and the page up key jump to the previous page. Pressing control and return jumps back to the page before the last jump.

The scale factor can be changed by entering the desired percentage into the text field in the view tool bar, which can be focused using Ctrl+L, and pressing the return key.

Tabs

  • Previous/Next tab Makes the previous/next tab the current tab. Cycles to the last/first tab if the first/last tab is the current tab.
  • Close tab Closes the current tab.
  • Close all tabs Closes all tabs.
  • Close all tabs but current tab Closes all tabs except for the current tab.
  • Recently closed Contains a list of the most recently closed tabs (if enabled in the settings).

This menu contains a list of all tabs which can be made the current tab by clicking on the corresponding menu item. Tabs can also be closed by middle-clicking. The first nine tabs can also be activated by holding the Alt modifier and pressing keys one to nine.

Bookmarks

  • Previous bookmark Jumps to the closest bookmark before the current page.
  • Next bookmark Jumps to the closest bookmark after the current page.
  • Add bookmark Adds a bookmark for the current file and page.
  • Remove bookmark Removes the bookmark for the current file and page.
  • Remove all bookmarks Removes all bookmarks.
  • Open Opens the corresponding file in the current tab. If there is no tab, the file is opened in a new tab.
  • Open in new tab Opens the corresponding file in a new tab.
  • Jump to page Jumps to the corresponding page if the corresponding file is already open. Otherwise the corresponding file is opened in a new tab.

Help

  • Contents Displays this document.
  • About Displays the program version.

Main view

The backspace/space key skips to the previous/next page. The home/end key skips to the first/last page. The arrow, page up and page down keys scroll the viewport. Pressing control and return jumps to the page before the last jump.

Using the mouse wheel scrolls up and down. Holding ALT while using the mouse wheel scrolls left and right. Holding CTRL while using the mouse wheel scales the document. Holding SHIFT while using the mouse wheel rotates the document. (Keyboard modifiers can be changed in the settings dialog.) Click and hold the middle mouse button to select a rectangle to zoom to.

Links are highlighted by red frames (if enabled in the settings). Left-click on a link to show the linked page or open the linked URL in the default browser (if enabled in the settings). Middle-click on a link to show the linked page in a new tab. Hovering over a link displays its destination as a tool tip.

Form fields are highlighted by blue frames (if enabled in the settings). Left-click on a form field to edit its contents. Hovering over a form field displays its name as a tool tip.

The source of a position in the document can be opened in the source editor using the context menu which optionally contains an item for the first matching SyncTeX node.

To copy texts or images, hold SHIFT, click and hold the left mouse button to drag a frame around the area to copy. Once the mouse button is released, a pop-up menu is displayed to select whether to copy texts or images into the clipboard.

To add annotations, hold CTRL, click and hold the left mouse button to drag a frame around the region to annotate. Once the mouse button is released, a pop-up menu is displayed to select whether to add text or highlight annotations. Left-click to edit annotations. Right-click to remove annotations. (Adding and removing annotations requires version 0.20.1 or higher of the Poppler library.) Hovering over an annotation displays its contents as a tool tip.

To zoom to a selection, hold SHIFT and CTRL, click and hold the left mouse button to drag a frame around region to zoom into.

The visibility of the tool and menu bars can be toggled using configurable keyboard shortcuts whose default values are "Shift+Alt+T" and "Shift+Alt+M".

Auxiliary views

The outline view displays an overview of the contents of the document. A left click on an entry jumps to the respective page in the main view. The context menu can be used to expand/collapse all items below the selected item.

The outline view can also be navigated using the keyboard and the mouse wheel. Holding Shift and using the Up/Down keys will scroll the view. Holding Shift and using the Left/Right keys will collapse/expand one level of items below the selected item. Holding Control and using the Left/Right keys will completely collapse/expand the selected item and its children. Holding Shift and using the mousel wheel will change the selected item. Holding Control and using the mouse wheel will expand/collapse the selected item.

The properties view displays additional information contained in the document.

The thumbnails view displays smaller versions of the pages of the document. A left click on an entry jumps to the respective page in the main view.

The bookmarks view shows the bookmarks related to the document displayed in the current tab. The context menu contains entries to jump to the previous/next boookmark or to add bookmarks. The context menu of each entry also contains entries to edit and delete bookmarks.

If enabled in the settings, the extended search dock shows an overview containing the results of all searches being performed in all tabs. It also shows the text surrounding a result with the search term being emphasized. Clicking on a result opens the corresponding tab and jumps to its position.

Settings

Behavior settings

  • Open URL Determines whether links to URL are opened in the default browser.
  • Auto-refresh Determines whether files are automatically reloaded if changed on disk.
  • Track recently used If enabled, a recently used menu is available and lists as many recently used files as set in the "Recently used count" option. (Effective after restart.)
  • Keep recently closed If enabled, a recently closed menu is available and lists as many recently closed tabs as set in the "Recently closed count" option. Keeping the tabs available could increase memory usage considerably. (Effective after restart.)
  • Restore tabs If enabled, tabs and their properties are saved on ending the program and restored on restart.
  • Restore bookmarks If enabled, bookmarks are saved on ending the program and restored on restart.
  • Restore per-file settings If enabled, per-file settings are saved/restored on opening/closing tabs.
  • Save database interval The interval after which tabs, bookmarks or per-file settings are saved to the database.
  • Synchronize presentation If enabled, the main view can be used to control the presentation view.
  • Presentation screen The index of the screen to display the presentation view on.
  • Synchronize outline view If enabled, the outline view will highlight the first entry pointing to the current page whenever the current page changes.
  • Minimal scrolling If enabled, the view port will only be scrolled if the target position is not yet visible.
  • Zoom factor The number by which the scale factor is multiplied resp. divided upon zooming in resp. out.
  • Highlight color Determines the color of highlights.
  • Highlight duration Determines the duration of temporary highlights.
  • Annotation color The color of annotations added by the program using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Source editor The program which is started to edit sources. '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number.

Graphics settings

  • Use tiling Pages will be divided into tiles before rendering and caching to reduce memory usage.
  • Keep obsolete pixmaps If enabled, then upon change of the zoom factor, cached pixmaps will be used to draw approximations of final pixmaps until these are available at the cost of increased memory usage.
  • Use device pixel ratio If enabled, the highest available device pixel ratio is used to render at physical and display at logical resolution.
  • Decorate pages Determines whether pages are set apart from the background.
  • Decorate links Determines whether links are highlighted by red frames.
  • Decorate form fields Determines whether form fields are highlighted by blue frames.
  • Background color Determines the color of the background using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Paper color Determines the color of pages using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Presentation background color Overrides the paper color in the computation of the background color of the presentation view and is defined using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Pages per row Number of pages per row in the 'multiple pages' layout mode.
  • Page spacing Determines both vertical and horizontal space displayed between pages.
  • Thumbnail spacing Determines both vertical and horizontal space displayed between thumbnails.
  • Thumbnail size Determines the size of the thumbnails.
  • Cache size The program will try to cache rendered pages within this limit increasing rendering speed at the cost of increased memory usage.
  • Prefetch The program will try to render pages that are not yet visible increasing rendering speed at the cost of increased cache usage.
  • Prefetch distance The number of rows beyond the current row and twice the number of rows before the current row that are prefetched.
  • PDF settings
    • Antialiasing Improves display quality at the cost of performance
    • Text antialiasing Improves text display quality at the cost of performance
    • Text hinting May improve text display quality for certain fonts.
    • Overprint preview If enabled, a preview of printing one layer of ink on top of another is displayed.
    • Thin line mode Chooses the optimization used to draw thin lines.
    • Backend Chooses the backend used to render pages.
  • PS settings
    • Graphics antialias bits Determines the amount of antialiasing for graphics.
    • Text antialias bits Determines the amount of antialiasing for text.

Interface settings

  • Extended search dock If enabled, the default search dock is extended by an overview showing the results of all tabs. (Effective after restart.)
  • Annotation overlay If enabled, all annotations on a page will be displayed as an interactive overlay. Otherwise each annotation will be handled as a separate pop-up window.
  • Form field overlay If enabled, all form fields on a page will be displayed as an interactive overlay. Otherwise each form field will be handled as a separate pop-up window.
  • Tab position Defines at which edge of the main view tabs will be displayed.
  • Tab visibility Determines whether tabs will be displayed if less than two documents are opened.
  • Spread tabs Determines if tabs will be spread out evenly over the whole tab bar.
  • New tab next to current tab If enabled, new tabs are opened to the right of the active tab.
  • Exit after last tab If enabled, the application exits after the last tab is closed.
  • Recently used count Sets the number of files that are listed in the recently used menu, if "Track recently used" is enabled. (Effective after restart.)
  • Recently closed count Sets the number of tabs that are listed in the recently closed menu, if "Keep recently closed" is enabled. (Effective after restart.)
  • File tool bar Defines which actions are visible in the file tool bar. Available actions are openInNewTab, open, refresh, saveCopy, saveAs, print and separator. (Effective after restart.)
  • Edit tool bar Defines which actions are visible in the edit tool bar. Available actions are currentPage, previousPage, nextPage, firstPage, lastPage, jumpToPage, jumpBackward, jumpForward, search, copyToClipboardMode, addAnnotationMode and separator. (Effective after restart.)
  • View tool bar Defines which actions are visible in the view tool bar. Available actions are scaleFactor, zoomIn, zoomOut, continuousMode, twoPagesMode, twoPagesWithCoverPageMode, multiplePagesMode, originalSize, fitToPageWidthMode, fitToPageSizeMode, rotateLeft, rotateRight, fullscreen, presentation and separator. (Effective after restart.)
  • Document context menu Defines which actions are visible in the document's context menu. Available actions are openCopyInNewTab, openCopyInNewWindow, openContainingFolder, moveToInstance, previousPage, nextPage, firstPage, lastPage, jumpToPage, jumpBackward, jumpForward, setFirstPage, findPrevious, findNext, cancelSearch and separator.
  • Tab context menu Defines which actions are visible in a tab's context menu. Available actions are openCopyInNewTab, openCopyInNewWindow, openContainingFolder, moveToInstance, copyFilePath, selectFilePath, closeAllTabs, closeAllTabsButThisOne, closeAllTabsToTheLeft, closeAllTabsToTheRight and separator.
  • Scrollable menus Will override the default style so that pop-up menus scroll instead being laid-out in mutliple columns if they are larger than the available screen space. (Effective after restart.)
  • Searchable menus Extends the default keyboard navigation of the tabs and bookmarks menus by a search-as-you-type mechanism.
  • Toggle tool and menu bars with fullscreen Always toggles the visibility of the tool and menu bars when toggling fullscreen mode.
  • Use page label Determines if document-supplied page label will be used instead of page numbers when available.
  • Document title as tab title Determines if the tab title as derived from the meta-data instead of the file name.
  • Current page in window title If enabled, the current page and number of pages of the document in the active tab are displayed in the window title.
  • Instance name in window title If enabled and the current instance is named, its name is displayed in the window title.
  • Highlight current thumbnail If enabled, the current page is highlighted in the thumbnails view.
  • Limit thumbnails to results If this option is enabled and a search is conducted, only the pages where the search term is found are displayed in the thumbnails view.

Shortcut settings

The shortcut settings allows the adjustment of keyboard shortcuts to personal preference. Shortcuts are changed by double-clicking on the shortcut to edit it and entering the new shortcut. Each action can have several shortcuts by entering a semicolon-separated list of them. Names of keys that are not single letters are written out explicitly (e.g. "Alt", "Ctrl", "PgDown"), where the matching is not case sensitive. If the shortcut contains modifier keys, the names of the keys are joined by a plus sign and modifier keys must be listed first, e.g. "Ctrl+A" or "Ctrl++".

Modifier settings

  • Zoom The keyboard modifiers to zoom using the mouse wheel in the main view.
  • Rotate The keyboard modifiers to rotate using the mouse wheel in the main view.
  • Scroll The keyboard modifiers to scroll horizontally using the mouse wheel in the main view.
  • Copy to clipboard The keyboard modifiers to copy texts or images from a page to the clipboard.
  • Add annotation The keyboard modifiers to add annotations to a page.
  • Zoom to selection The keyboard modifiers to zoom to a slection on a page.
qpdfview-0.4.18/help/help_ru.html0000644000000000000000000012750613516127411015047 0ustar 00000000000000 Справка

Справка

Оглавление

  1. Главное меню
    1. Файл
    2. Правка
    3. Вид
    4. Вкладки
    5. Закладки
    6. Справка
  2. Основной вид
  3. Вспомогательные виды
  4. Настройки
    1. Настройки поведения
    2. Настройки графики
    3. Настройки интерфейса
    4. Настройки комбинаций клавиш
    5. Настройки модификаторов

Введение

qpdfview — это программа со вкладками для просмотра документов. Использует Poppler для поддержки PDF, libspectre для поддержки PS, DjVuLibre для поддержки DjVu, CUPS для поддержки печати и Qt для графического интерфейса.

Информацию о параметрах командной строки и конфигурационных файлах можно найти в man-странице программы.

Главное меню

Файл

  • Открыть... Запускает диалог выбора файла, который будет открыт на текущей вкладке. Если вкладка отсутствует, файл будет открыт в новой вкладке.
  • Открыть в новой вкладке... Запускает диалог выбора файлов, которые будут открыты в новых вкладках.
  • Недавние Содержит список файлов, использовавшихся в последнее время (если опция включена в настройках).
  • Обновить Повторная загрузка файла, отображаемого на текущей вкладке.
  • Сохранить Сохранить изменения для аннотаций и полей форм в файл, чья вкладка сейчас открыта.
  • Сохранить как... Открывает диалог для сохранения файла, отображаемого на текущей вкладке, включая изменения в примечаниях и полях форм.
  • Сохранить копию... Открыть диалог для сохранения неизмененной копии файла, чья вкладка сейчас открыта.
  • Печать... Запускает диалог для печати файла, отображаемого на текущей вкладке.
  • Выход Закрывает все вкладки и завершает работу программы.

Правка

  • Следующая/Предыдущая/Первая/Последняя страница Переход к следующей/предыдущей/первой/последней странице документа.
  • Перейти на страницу... Запускает диалог выбора страницы для отображения на текущей вкладке.
  • Назад/Вперёд Переход назад или вперёд по истории отображаемой страницы.
  • Поиск... Открывает панель поиска под областью, в которой отображается документ. Поиск начинается автоматически через 2 секунды после изменения текста в поле поиска; его также можно начать вручную, нажав клавишу Enter. При удержании нажатым модификатора Shift во время нажатия Enter поиск будет осуществляться во всех вкладках, а не только в текущей. (Это действует наоборот, если в настройках включена опция расширенной панели поиска.)
  • Найти предыдущее/следующее Переход к предыдущему или следующему найденному фрагменту текста в документе.
  • Отменить поиск Отменяет текущий поиск и закрывает панель поиска.
  • Скопировать в буфер Переводит программу в режим выделения текста или изображений для копирования в буфер обмена.
  • Добавить комментарий Переводит программу в режим выделения для добавления аннотаций.
  • Настройки... Открывает диалог настроек. Кнопка 'По умолчанию' сбрасывает все настройки на всех вкладках к их стандартным значениям. Кнопка 'По умолчанию на текущей вкладке' сбрасывает только настройки для текущей вкладки.

Текущую страницу можно изменить, указав нужный номер в текстовом поле на панели инструментов «Правка» (перейти в это поле можно нажатием Ctrl+K) и нажав клавишу Enter.

Просмотр

  • Рулоном Если включено, перелистывание осуществляется не постранично, а так, будто страницы подаются непрерывным рулоном.
  • Две страницы Просмотр в два столбца, при котором на экране отображаются по две страницы сразу.
  • Две страницы и обложка Как и предыдущая команда, отображает по две страницы, но обложка отображается отдельно.
  • Несколько страниц Отображение страниц в несколько столбцов. Количество столбцов можно изменить в диалоге настроек (на вкладке «Графика»).
  • Справа налево Изменяет порядок страниц при просмотре в несколько столбцов.
  • Увеличить масштаб Увеличивает масштаб на 10 процентов. Максимальное увеличение составляет 5000 процентов.
  • Уменьшить масштаб Уменьшает масштаб на 10 процентов. Минимальное уменьшение составляет 10 процентов.
  • Исходный размер Возвращает значение масштаба к 100 процентам.
  • По ширине Выбирает масштаб, при котором страницы умещаются по ширине в области просмотра.
  • Страница целиком Выбирает масштаб, при котором страницы полностью умещаются в область просмотра (и по горизонтали, и по вертикали).
  • Повернуть влево Поворачивает страницы влево, или против часовой стрелки, на 90 градусов.
  • Повернуть вправо Поворачивает страницы вправо, или по часовой стрелке, на 90 градусов.
  • Инвертировать цвета Отображает страницы в инвертированных цветах.
  • Конвертировать в серые тона Отображает страницы в оттенках серого цвета.
  • Обрезать поля Удаление пустого пространства на полях после визуализации.
  • Построение Построение визуализированной страницы с выбранным цветом бумаги для улучшения фона сканированных документов.
  • Панели инструментов Содержит список доступных панелей инструментов, обеспечивающих быстрый доступ к часто используемым действиям.
  • Прилипалы Содержит список доступных стыкуемых областей (доков), отображающих различную дополнительную информацию.
  • Шрифты... Открывает окно со шрифтами, используемыми в документе.
  • Полный экран Переключение на полноэкранный режим просмотра, когда окно распахнуто во весь размер экрана и не имеет элементов декорации.
  • Презентация... Переход в режим презентации, покинуть который можно нажатием F12 или Esc. Клавиши Home/End используются для перехода к первой/последней странице. Клавиши со стрелками вправо и вниз, пробел и Page down — для перехода к следующей странице. Стрелки влево и вверх, Backspace и Page up — к предыдущей странице. Control+Enter возвращает к странице, которая была текущей до последнего перехода.

Масштаб можно изменить, указав значение в процентах в текстовом поле на панели инструментов «Вид» (перейти в него можно с помощью Ctrl+L), и нажав клавишу Enter.

Вкладки

  • Предыдущая/Следующая вкладка Переход к предыдущей или следующей вкладке. Переход циклический, т.е. если текущая вкладка является последней, то переходит к первой вкладке, и наоборот.
  • Закрыть вкладку Закрывает текущую вкладку.
  • Закрыть все вкладки Закрывает все вкладки.
  • Закрыть все вкладки, кроме текущей Закрывает все вкладки, кроме текущей.
  • Недавно закрытые Содержит список недавно закрытых вкладок (если это разрешено в настройках).

Это меню содержит список всех вкладок, каждую из которых можно сделать текущей, щёлкнув на соответствующем пункте меню. Вкладки можно также закрывать щелчком средней кнопкой мыши. Первые девять вкладок можно активировать нажатием клавиш от 1 до 9 при нажатом модификаторе Alt.

Закладки

  • Предыдущая закладка Переход к ближайшей закладке перед текущей страницей.
  • Следующая закладка Переход к ближайшей закладке после текущей страницы.
  • Добавить закладку Добавляет закладку для текущего файла и страницы.
  • Удалить закладку Удаляет закладку для текущего файла и страницы.
  • Удалить все закладки Удаляет все закладки.
  • Открыть Открывает соответствующий файл в текущей вкладке. Если ни одной вкладки нет, файл открывается в новой вкладке.
  • Открыть в новой вкладке Открывает соответствующий файл в новой вкладке.
  • Перейти на страницу Осуществляет переход к указанной странице, если соответствующий файл уже открыт. В противном случае соответствующий файл открывается в новой вкладке.

Справка

  • Оглавление Отображает этот документ.
  • О программе Показывает версию программы и краткую информацию о ней.

Основная область

Клавиши Backspace/пробел используются для перехода к предыдущей следующей странице. Клавиши Home/End — для перехода к первой/последней странице. Клавиши со стрелками, Page up и Page down прокручивают документ в области просмотра. Нажатие Control+Enter возвращает к странице, которая была текущей до последнего перехода.

Используя колёсико мыши, можно прокручивать документ вверх и вниз. С нажатой клавишей ALT прокрутка осуществляется влево и вправо. Использование колёсика при нажатой клавише CTRL изменяет масштаб, а при нажатой SHIFT поворачивает документ. (Клавиши-модификаторы можно изменить в диалоге настройки.) Щёлкните и удерживайте среднюю кнопку мыши, чтобы выделить прямоугольную область и масштабировать документ до её размера.

Ссылки подсвечиваются красными рамочками (если это включено в настройках). Щёлкните левой кнопкой на ссылке для перехода на соответствующую страницу или открытия URL в используемом по умолчанию браузере (если это включено в настройках). Щелчок средней кнопкой на ссылке откроет страницу по ссылке в новой вкладке. При наведении указателя на ссылку во всплывающей подсказке будет показано, куда она ведёт.

Поля форм подсвечиваются синими рамочками (Если это включено в настройках). Щёлкните левой кнопкой на поле, чтобы изменить его содержимое. При наведении указателя на поле во всплывающей подсказке отображается его имя.

Исходный код позиции в документе можно открыть в редакторе через контекстное меню, в котором также может быть пункт для первого подходящего узла SyncTeX.

Для того, чтобы скопировать текст или изображения, удерживая нажатой SHIFT, щёлкните левой кнопкой мыши и, не отпуская её, выделите рамочкой копируемую область. После того, как вы отпустите кнопку мыши, появится всплывающее меню, позволяющее скопировать текст или изображение в буфер обмена.

Чтобы добавить комментарии, удерживая нажатой CTRL, щёлкните левой кнопкой мыши и, не отпуская её, обведите рамкой комментируемую область. Когда вы отпустите кнопку мыши, появится всплывающее меню, позволяющее добавить текст или выделить комментарии. Щёлкните левой кнопкой для редактирования комментариев. Щелчок правой кнопкой позволяет удалить комментарий. (Для добавления или удаления комментариев требуется версия библиотеки Poppler 0.20.1 или более поздняя.) При наведении указателя на комментарий во всплывающей подсказке отображается его содержимое.

Для того, чтобы масштабировать документ по выделению, удерживайте SHIFT и CTRL, щёлкните левой кнопкой мыши и, не отпуская её обведите рамочкой область, до которой нужно выполнить масштабирование.

Скрыть или снова сделать видимыми панель инструментов и меню можно с помощью настраиваемых комбинаций клавиш (по умолчанию это "Shift+Alt+T" и "Shift+Alt+M").

Вспомогательные области

Оглавление отображает обзор содержимого документа. Клик левой кнопкой мыши по записи вызовет переход к соответствующей странице в основном окне. Контекстное меню содержит действия для сворачивания и разворачивания всех вложенных элементов.

Оглавление может управляться с помощью клавиатуры и колёсика мыши. Зажатый Shift одновременно с клавишами Вверх/Вниз будет прокручивать вид. Зажатый Shift одновременно с клавишами Влево/Вправо будет сворачивать и разворачивать одноуровневые элементы выбранного пункта. Зажатый Ctrl одновременно с клавишами Влево/Вправо будет полностью сворачивать и разворачивать выбранный пункт и все вложенные элементы. Зажатый Shift одновременно с прокруткой колёсика мыши будет переключать выбранный пункт. Зажатый Ctrl одновременно с прокруткой колёсика мыши будет разворачивать и сворачивать выбранный пункт.

Свойства отображает дополнительные сведения о документе.

Миниатюры отображает уменьшенные копии страниц документа. Клик левой кнопкой мыши по миниатюре вызовет переход к соответствующей странице в основном окне.

Закладки отображает закладки, относящиеся к документу в текущей вкладке. Контекстное меню содержит пункты перехода к следующей и предыдущей закладкам, а также добавления закладки. Контекстное меню каждой записи содержит пункты для правки и удаления закладок.

Если включена в настройках, расширенная панель поиска отобразит результаты поиска, выполненного во всех вкладках. Также будет отображён текст, окружающий результат поиска, с выделенным поисковым запросом. Нажатие на результат поиска вызовет открытие соответствующей вкладки и переход к его расположению.

Настройки

Настройки поведения

  • Открыть адрес Указывает, разрешается ли программе открывать URL из документа в браузере по умолчанию.
  • Автообновление Позволяет программе автоматически перезагружать файлы, если они изменились на диске.
  • Отслеживать недавно открытые Если включено, в меню будет доступен список последних открывавшихся в программе документов (опция вступает в силу после перезапуска программы). Максимальное количество документов в списке можно указать в опции "Недавно использованные" на вкладке "Интерфейс".
  • Помнить недавно закрытые Если включено, в меню будет доступен список последних закрытых документов (опция вступает в силу после перезапуска программы). Максимальное количество документов в списке можно настроить с помощью параметра "Недавно закрытые" на вкладке "Интерфейс". Запоминание вкладок может значительно увеличить потребляемую память.
  • Восстановить вкладки Если включено, вкладки и их свойства сохраняются при выходе из программы и восстанавливаются при следующем запуске.
  • Восстановить закладки Если включено, закладки сохраняются при выходе из программы и восстанавливаются при следующем запуске.
  • Восстановление пофайловых настроек Если включено, настройки для каждого файла сохраняются при закрытии вкладок и восстанавливаются при следующем открытии.
  • Интервал сохранения базы данных Интервал сохранения вкладок, закладок и пофайловых настроек в базе данных.
  • Синхронная презентация Если включено, основной вид сможет управлять видом презентации.
  • Экран презентации Индекс экрана, на котором будет показываться презентация.
  • Синхронизация в режиме структуры Если включено, в оглавлении будет подсвечиваться первый элемент, указывающий на текущую страницу при каждом переходе на другую страницу.
  • Минимизация прокрутки Если включено, область просмотра будет прокручиваться только при невидимости целевой позиции.
  • Коэффициент масштабирования Число, на которое будет умножен или, соответственно, разделён масштаб при увеличении или уменьшении.
  • Цвет выделения Определяет цвет выделения.
  • Длительность выделения Длительность временного выделения.
  • Цвет аннотаций Цвет добавленных программой аннотаций. Указывается либо название цвета (как в SVG), либо 16-ричная нотация '#rrggbb'.
  • Редактор исходника Программа, используемая для редактирования исходников. '%1' заменяется на абсолютный путь к файлу. '%2' и '%3' заменяются номером строки и столбца, соответственно.

Настройки графики

  • Использовать тайлинг Страницы перед отрисовкой будут разделяться на тайлы и кэшироваться для уменьшения потребления памяти.
  • Запоминать устаревшие растровые изображения Если включено, то для уменьшения потребляемой памяти при изменении масштаба для отрисовки растровых изображений будет использоваться аппроксимация их кэшированных версий до тех пор, пока они доступны.
  • Использовать разрешение устройства Если включено, будет использоваться наибольшее доступное разрешение устройства для физической визуализации и как логическое разрешение.
  • Рамка страницы Выделение границ страницы для отделения от фона.
  • Выделять ссылки Определяет, должны ли ссылки выделяться красными рамочками.
  • Выделять поля форм Определяет, должны ли поля форм выделяться синими рамочками.
  • Цвет фона Цвет фона, указанный как название цвета в SVG или в 16-ричной нотации '#rrggbb'.
  • Цвет бумаги Цвет страниц, указанный как название цвета в SVG или в 16-ричной нотации '#rrggbb'.
  • Цвет фона презентации Перекрывает цвет бумаги при вычислении фонового цвета для презентации. Указывается как название цвета в SVG или в 16-ричной нотации '#rrggbb'.
  • Страниц в ряд Количество страниц в ряду при варианте отображения «Несколько страниц».
  • Расстояние между страницами Определяет вертикальный и горизонтальный отступы между страницами.
  • Расстояние между миниатюрамиОпределяет вертикальный и горизонтальный отступ между миниатюрами страниц.
  • Размер миниатюр Определяет размер миниатюр.
  • Размер кэша Предельный размер кэша, в который программа будет помещать отрисованные страницы для увеличения скорости отрисовки за счёт увеличения используемой памяти.
  • Подгружать наперёд Программа будет пытаться заранее отрисовывать ещё не видимые на экране страницы, увеличивая скорость отображения за счёт увеличения потребляемой памяти.
  • Длина предзагрузки Количество страниц для предзагрузки вниз и удвоенное количество страниц для предзагрузки вверх, не считая текущей страницы.
  • Настройки PDF
    • Сглаживание Улучшает качество изображения за счёт производительности
    • Сглаживание текста Улучшает качество отображения текста за счёт производительности
    • Хинтинг текста Может улучшить качество текста для некоторых шрифтов.
    • Предпросмотр надпечатки Если включено, отображается предварительный просмотр наложения печати одного слоя чернил поверх другого (т. наз. оверпринт).
    • Режим тонкой линии Позволяет выбрать режим оптимизации при отрисовке тонких линий.
    • Бэкенд Позволяет выбрать движок для отрисовки страниц.
  • Настройки PS
    • Биты сглаживания графики Определяет степень сглаживания графики.
    • Биты сглаживания текста Определяет степень сглаживания текста.

Настройки интерфейса

  • Расширенная панель поиска Если включено, стандартная область поиска дополняется обзором всех результатов поиска во всех вкладках. (Опция вступает в силу после перезапуска приложения.)
  • Наложение аннотации Если включено, все аннотации на странице будут отображаться, как интерактивный оверлей. Иначе каждая аннотация будет отображаться в отдельном всплывающем окне.
  • Наложение полей форм Если включено, все поля форм на странице будут отображаться, как интерактивный оверлей. Иначе каждое поле будет отображаться в отдельном всплывающем окне.
  • Положение вкладок Определяет, где будут отображаться вкладки по отношению к основной области.
  • Видимость вкладок Определяет, должны ли отображаться вкладки, если открыто менее двух документов.
  • Растянуть вкладки Определяет, должны ли вкладки равномерно распределяться по всей ширине панели вкладок.
  • Новая вкладка рядом с текущей вкладкой Если включено, новые вкладки будут открываться справа от активной вкладки.
  • Выход при закрытии последней вкладки Если включено, приложение завершает работу при закрытии последней вкладки.
  • Недавно использованные Задаёт количество файлов, отображаемых в списке недавно открытых файлов, если включена опция "Отслеживать недавно открытые". (Опция вступает в действие после перезапуска приложения.)
  • Недавно закрытые Задаёт количество вкладок, отображаемых в списке недавно закрытых вкладок, если включена опция "Запомнить недавно закрытые". (Опция вступает в действие после перезапуска.)
  • Панель "Файл" Определяет, какие действия будут видны в панели инструментов "Файл". Доступные: openInNewTab, open, refresh, saveCopy, saveAs, print и separator. (Вступает в действие после перезапуска.)
  • Панель "Правка" Определяет, какие действия будут видны в панели инструментов "Правка". Доступные действия: currentPage, previousPage, nextPage, firstPage, lastPage, jumpToPage, jumpBackward, jumpForward, search, copyToClipboardMode, addAnnotationMode и separator. (Вступает в действие после перезапуска.)
  • Панель "Вид" Определяет, какие действия будут видны в панели инструментов "Вид". Доступные действия: scaleFactor, zoomIn, zoomOut, continuousMode, twoPagesMode, twoPagesWithCoverPageMode, multiplePagesMode, originalSize, fitToPageWidthMode, fitToPageSizeMode, rotateLeft, rotateRight, fullscreen, presentation и separator. (Вступает в действие после перезапуска.)
  • Контекстное меню документа Определяет, какие действия будут видны в контекстном меню документа. Доступные действия: openCopyInNewTab, openCopyInNewWindow, openContainingFolder, moveToInstance, previousPage, nextPage, firstPage, lastPage, jumpToPage, jumpBackward, jumpForward, setFirstPage, findPrevious, findNext, cancelSearch и separator.
  • Контекстное меню вкладки Определяет, какие действия будут видны в контекстном меню вкладки. Доступные действия: openCopyInNewTab, openCopyInNewWindow, openContainingFolder, moveToInstance, copyFilePath, selectFilePath, closeAllTabs, closeAllTabsButThisOne, closeAllTabsToTheLeft, closeAllTabsToTheRight и separator.
  • Меню с прокруткой Изменяет стандартное поведение всплывающих меню, так что команды прокручиваются, а не располагаются в несколько столбцов, если они не умещаются в доступном пространстве. (Вступает в действие после перезапуска.)
  • Поиск в меню Расширяет функционал меню вкладок и закладок механизмом поиска по мере набора.
  • Скрывать инструменты и меню в полноэкранном режиме Переключает видимость панелей инструментов и меню при переходе в полноэкранный режим.
  • Использовать метку страницы Позволяет при доступности использовать предоставляемые документом метки страниц вместо номеров страниц.
  • Название документа как название вкладки Позволяет именовать вкладки не по именам файлов, а в зависимости от метаданных.
  • Текущая страница в заголовке окна Если включено, в заголовке окна отображаются текущая страница и число страниц документа из активной вкладки.
  • Имя экземпляра в заголовке окна Если включено, и текущий экземпляр имеет имя, то оно отображается в заголовке окна.
  • Выделять текущий эскиз Если включено, текущая страница будет подсвечиваться в области миниатюр.
  • Ограничивать показ миниатюр при поиске Если эта опция включена, то при выполнении поиска в области миниатюр будут видны только страницы, в которых найден искомый текст.

Настройки комбинаций клавиш

На этой вкладке можно настроить комбинации клавиш в соответствии с вашими личными предпочтениями. Для изменения комбинации выполните на ней двойной щелчок и введите новую комбинацию. К каждому действию можно привязать несколько комбинаций, указав их в виде списка, разделённого точкой с запятой. Имена небуквенных клавиш записываются явным образом (например, "Alt", "Ctrl", "PgDown"), регистр символов здесь не имеет значения. Если комбинация содержит клавиши-модификаторы, то имена клавиш соединяются знаком плюс и модификатор должен быть указан первым, например, "Ctrl+A" или "Ctrl++".

Настройки модификаторов

  • Масштаб Клавиши-модификаторы для изменения масштаба документа колёсиком мыши.
  • Поворот Модификаторы для поворота документа колёсиком мыши.
  • Прокрутка Модификаторы для горизонтальной прокрутки документа колёсиком мыши.
  • Копировать в буфер обмена Модификаторы для копирования текста или изображений со страницы документа в буфер обмена.
  • Добавить примечание Модификаторы для добавления аннотаций к странице.
  • Масштаб по выделению Модификаторы для масштабирования по размеру выделенной области на странице.
qpdfview-0.4.18/help/help_sk.html0000644000000000000000000006163213516127411015033 0ustar 00000000000000 Pomocník

Pomocník

Obsah

  1. Hlavné menu
    1. Súbor
    2. Upraviť
    3. Zobraziť
    4. Karty
    5. Záložky
    6. Nápoveda
  2. Hlavné zobrazenie
  3. Pomocné zobrazenia
  4. Nastavenia
    1. Nastavenia správania
    2. Nastavenia grafiky
    3. Nastavenia rozhrania
    4. Nastavenia klávesových skratiek
    5. Nastavenia modifikátorov

Úvod

qpdfview prehliadač dokumentov na kartách. Používa Poppler pre podporu PDF, libspectre pre podporu PS, DjVuLibre pre podporu DjVu, CUPS pro podporu tlače a Qt toolkit pre svoje rozhranie.

Pozrite sa, prosím, do manuálových stránok, ak hľadáte informácie k možnostiam príkazového riadka a k súborom s nastavením.

Hlavné menu

Súbor

  • Open... Opens a dialog to choose a file to open in the current tab. If there is no tab, the file is opened in a new tab.
  • Open in new tab... Opens a dialog to choose files to open in new tabs.
  • Recently used Contains a list of the most recently used files (if enabled in the settings).
  • Refresh Reloads the file displayed in the current tab.
  • Save Saves changes to annotations and form fields to the file displayed in the current tab.
  • Save as... Opens a dialog to save the file displayed in the current tab including changes to annotations and form fields.
  • Save copy... Opens a dialog to save an umodified copy of the file displayed in the current tab.
  • Print... Opens a dialog to print the file displayed in the current tab.
  • Exit Closes all tabs and ends the program.

Upraviť

  • Next/Previous/First/Last page Skips to the next/previous/first/last page of the document.
  • Jump to page... Opens a dialog to enter a page to display in the current tab.
  • Jump backward/forward Jumps backward/forward in the history of displayed page.
  • Search... Opens the search dock below the main view. The search automatically starts two seconds after the last change of the search term or is manually started by pressing the return key. If the Shift modifier is held when the return key is pressed, the search starts in all tabs instead of just the current tab. (This effect is reversed if the extended search dock is enabled in the settings.)
  • Find previous/next Jumps to the previous/next occurrence of the search term in the document.
  • Cancel search Cancels the currently running search and closes the search dock.
  • Copy to clipboard If checked, the program will wait for a frame to be dragged to copy texts or images.
  • Add annotation If checked, the program will wait for a frame to be dragged to add annotations.
  • Settings... Opens the settings dialog. The button labeled 'Defaults' will revert all settings on all tabs to their default values. The button labeled 'Defaults on current tab' will revert only the settings on the current tab to their default values.

The current page can be changed by entering the desired page into the text field in the edit tool bar, which can be focused using Ctrl+K, and pressing the return key.

Zobraziť

  • Continuous Determines whether all rows of the page layout are visible at once.
  • Two pages Determines whether the page layout uses two columns.
  • Two pages with cover page Determines whether the page layout uses two columns with a break after the cover page.
  • Multiple pages Determines whether the page layout uses multiple columns. The number of columns can be changed in the settings dialog.
  • Right to left Determines how pages are arranged in layouts with multiple pages per row.
  • Zoom in Increases the scale factor by 10 percent. The maximum scale factor is 5000 percent.
  • Zoom out Decreases the scale factor by 10 percent. The minimum scale factor is 10 percent.
  • Original size Resets the scale factor to 100 percent.
  • Fit to page width Determines the scale factor such that all pages fully fit into the main view horizontally.
  • Fit to page size Determines the scale factor such that all pages fully fit into the main view horizontally and vertically.
  • Rotate left Rotates the pages left/counterclockwise by 90 degrees.
  • Rotate right Rotates the pages right/clockwise by 90 degrees.
  • Invert colors Determines whether pages are rendered with inverted colors.
  • Convert to grayscale Determines whether pages are converted to grayscale after rendering.
  • Trim margins Enables the removal of empty page margins after rendering.
  • Composition Enables the composition of the rendered page with the paper color to adjust the background of scanned documents.
  • Tool bars This menu contains a list of available tool bars for accessing frequently used actions.
  • Docks This menu contains a list of available docks for displaying supplementary information.
  • Fonts... Opens a dialog listing the fonts used in the document.
  • Fullscreen Toggles the fullscreen mode, i.e. the window is shown maximized and without decoration.
  • Presentation... Enters presentation mode which can be left by pressing F12 or escape. The home/end key is used to display the first/last page. Arrow keys right and down, space and the page down key jump to the next page. Arrow keys left and up, backspace and the page up key jump to the previous page. Pressing control and return jumps back to the page before the last jump.

The scale factor can be changed by entering the desired percentage into the text field in the view tool bar, which can be focused using Ctrl+L, and pressing the return key.

Karty

  • Previous/Next tab Makes the previous/next tab the current tab. Cycles to the last/first tab if the first/last tab is the current tab.
  • Close tab Closes the current tab.
  • Close all tabs Closes all tabs.
  • Close all tabs but current tab Closes all tabs except for the current tab.
  • Recently closed Contains a list of the most recently closed tabs (if enabled in the settings).

This menu contains a list of all tabs which can be made the current tab by clicking on the corresponding menu item. Tabs can also be closed by middle-clicking. The first nine tabs can also be activated by holding the Alt modifier and pressing keys one to nine.

Záložky

  • Previous bookmark Jumps to the closest bookmark before the current page.
  • Next bookmark Jumps to the closest bookmark after the current page.
  • Add bookmark Adds a bookmark for the current file and page.
  • Remove bookmark Removes the bookmark for the current file and page.
  • Remove all bookmarks Removes all bookmarks.
  • Open Opens the corresponding file in the current tab. If there is no tab, the file is opened in a new tab.
  • Open in new tab Opens the corresponding file in a new tab.
  • Jump to page Jumps to the corresponding page if the corresponding file is already open. Otherwise the corresponding file is opened in a new tab.

Nápoveda

  • Contents Displays this document.
  • About Displays the program version.

Hlavné zobrazenie

The backspace/space key skips to the previous/next page. The home/end key skips to the first/last page. The arrow, page up and page down keys scroll the viewport. Pressing control and return jumps to the page before the last jump.

Using the mouse wheel scrolls up and down. Holding ALT while using the mouse wheel scrolls left and right. Holding CTRL while using the mouse wheel scales the document. Holding SHIFT while using the mouse wheel rotates the document. (Keyboard modifiers can be changed in the settings dialog.) Click and hold the middle mouse button to select a rectangle to zoom to.

Links are highlighted by red frames (if enabled in the settings). Left-click on a link to show the linked page or open the linked URL in the default browser (if enabled in the settings). Middle-click on a link to show the linked page in a new tab. Hovering over a link displays its destination as a tool tip.

Form fields are highlighted by blue frames (if enabled in the settings). Left-click on a form field to edit its contents. Hovering over a form field displays its name as a tool tip.

The source of a position in the document can be opened in the source editor using the context menu which optionally contains an item for the first matching SyncTeX node.

To copy texts or images, hold SHIFT, click and hold the left mouse button to drag a frame around the area to copy. Once the mouse button is released, a pop-up menu is displayed to select whether to copy texts or images into the clipboard.

To add annotations, hold CTRL, click and hold the left mouse button to drag a frame around the region to annotate. Once the mouse button is released, a pop-up menu is displayed to select whether to add text or highlight annotations. Left-click to edit annotations. Right-click to remove annotations. (Adding and removing annotations requires version 0.20.1 or higher of the Poppler library.) Hovering over an annotation displays its contents as a tool tip.

To zoom to a selection, hold SHIFT and CTRL, click and hold the left mouse button to drag a frame around region to zoom into.

The visibility of the tool and menu bars can be toggled using configurable keyboard shortcuts whose default values are "Shift+Alt+T" and "Shift+Alt+M".

Pomocné zobrazenia

The outline view displays an overview of the contents of the document. A left click on an entry jumps to the respective page in the main view. The context menu can be used to expand/collapse all items below the selected item.

The outline view can also be navigated using the keyboard and the mouse wheel. Holding Shift and using the Up/Down keys will scroll the view. Holding Shift and using the Left/Right keys will collapse/expand one level of items below the selected item. Holding Control and using the Left/Right keys will completely collapse/expand the selected item and its children. Holding Shift and using the mousel wheel will change the selected item. Holding Control and using the mouse wheel will expand/collapse the selected item.

The properties view displays additional information contained in the document.

The thumbnails view displays smaller versions of the pages of the document. A left click on an entry jumps to the respective page in the main view.

The bookmarks view shows the bookmarks related to the document displayed in the current tab. The context menu contains entries to jump to the previous/next boookmark or to add bookmarks. The context menu of each entry also contains entries to edit and delete bookmarks.

If enabled in the settings, the extended search dock shows an overview containing the results of all searches being performed in all tabs. It also shows the text surrounding a result with the search term being emphasized. Clicking on a result opens the corresponding tab and jumps to its position.

Nastavenia

Nastavenia správania

  • Open URL Determines whether links to URL are opened in the default browser.
  • Auto-refresh Determines whether files are automatically reloaded if changed on disk.
  • Track recently used If enabled, a recently used menu is available and lists as many recently used files as set in the "Recently used count" option. (Effective after restart.)
  • Keep recently closed If enabled, a recently closed menu is available and lists as many recently closed tabs as set in the "Recently closed count" option. Keeping the tabs available could increase memory usage considerably. (Effective after restart.)
  • Restore tabs If enabled, tabs and their properties are saved on ending the program and restored on restart.
  • Restore bookmarks If enabled, bookmarks are saved on ending the program and restored on restart.
  • Restore per-file settings If enabled, per-file settings are saved/restored on opening/closing tabs.
  • Save database interval The interval after which tabs, bookmarks or per-file settings are saved to the database.
  • Synchronize presentation If enabled, the main view can be used to control the presentation view.
  • Presentation screen The index of the screen to display the presentation view on.
  • Synchronize outline view If enabled, the outline view will highlight the first entry pointing to the current page whenever the current page changes.
  • Minimal scrolling If enabled, the view port will only be scrolled if the target position is not yet visible.
  • Zoom factor The number by which the scale factor is multiplied resp. divided upon zooming in resp. out.
  • Highlight color Determines the color of highlights.
  • Highlight duration Determines the duration of temporary highlights.
  • Annotation color The color of annotations added by the program using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Source editor The program which is started to edit sources. '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number.

Nastavenia grafiky

  • Use tiling Pages will be divided into tiles before rendering and caching to reduce memory usage.
  • Keep obsolete pixmaps If enabled, then upon change of the zoom factor, cached pixmaps will be used to draw approximations of final pixmaps until these are available at the cost of increased memory usage.
  • Use device pixel ratio If enabled, the highest available device pixel ratio is used to render at physical and display at logical resolution.
  • Decorate pages Determines whether pages are set apart from the background.
  • Decorate links Determines whether links are highlighted by red frames.
  • Decorate form fields Determines whether form fields are highlighted by blue frames.
  • Background color Determines the color of the background using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Paper color Determines the color of pages using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Presentation background color Overrides the paper color in the computation of the background color of the presentation view and is defined using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Pages per row Number of pages per row in the 'multiple pages' layout mode.
  • Page spacing Determines both vertical and horizontal space displayed between pages.
  • Thumbnail spacing Determines both vertical and horizontal space displayed between thumbnails.
  • Thumbnail size Determines the size of the thumbnails.
  • Cache size The program will try to cache rendered pages within this limit increasing rendering speed at the cost of increased memory usage.
  • Prefetch The program will try to render pages that are not yet visible increasing rendering speed at the cost of increased cache usage.
  • Prefetch distance The number of rows beyond the current row and twice the number of rows before the current row that are prefetched.
  • Nastavenia PDF
    • Antialiasing Improves display quality at the cost of performance
    • Text antialiasing Improves text display quality at the cost of performance
    • Text hinting May improve text display quality for certain fonts.
    • Overprint preview If enabled, a preview of printing one layer of ink on top of another is displayed.
    • Thin line mode Chooses the optimization used to draw thin lines.
    • Backend Chooses the backend used to render pages.
  • Nastavenia PS
    • Graphics antialias bits Determines the amount of antialiasing for graphics.
    • Text antialias bits Determines the amount of antialiasing for text.

Nastavenia rozhrania

  • Extended search dock If enabled, the default search dock is extended by an overview showing the results of all tabs. (Effective after restart.)
  • Annotation overlay If enabled, all annotations on a page will be displayed as an interactive overlay. Otherwise each annotation will be handled as a separate pop-up window.
  • Form field overlay If enabled, all form fields on a page will be displayed as an interactive overlay. Otherwise each form field will be handled as a separate pop-up window.
  • Tab position Defines at which edge of the main view tabs will be displayed.
  • Tab visibility Determines whether tabs will be displayed if less than two documents are opened.
  • Spread tabs Determines if tabs will be spread out evenly over the whole tab bar.
  • New tab next to current tab If enabled, new tabs are opened to the right of the active tab.
  • Exit after last tab If enabled, the application exits after the last tab is closed.
  • Recently used count Sets the number of files that are listed in the recently used menu, if "Track recently used" is enabled. (Effective after restart.)
  • Recently closed count Sets the number of tabs that are listed in the recently closed menu, if "Keep recently closed" is enabled. (Effective after restart.)
  • File tool bar Defines which actions are visible in the file tool bar. Available actions are openInNewTab, open, refresh, saveCopy, saveAs, print and separator. (Effective after restart.)
  • Edit tool bar Defines which actions are visible in the edit tool bar. Available actions are currentPage, previousPage, nextPage, firstPage, lastPage, jumpToPage, jumpBackward, jumpForward, search, copyToClipboardMode, addAnnotationMode and separator. (Effective after restart.)
  • View tool bar Defines which actions are visible in the view tool bar. Available actions are scaleFactor, zoomIn, zoomOut, continuousMode, twoPagesMode, twoPagesWithCoverPageMode, multiplePagesMode, originalSize, fitToPageWidthMode, fitToPageSizeMode, rotateLeft, rotateRight, fullscreen, presentation and separator. (Effective after restart.)
  • Document context menu Defines which actions are visible in the document's context menu. Available actions are openCopyInNewTab, openCopyInNewWindow, openContainingFolder, moveToInstance, previousPage, nextPage, firstPage, lastPage, jumpToPage, jumpBackward, jumpForward, setFirstPage, findPrevious, findNext, cancelSearch and separator.
  • Tab context menu Defines which actions are visible in a tab's context menu. Available actions are openCopyInNewTab, openCopyInNewWindow, openContainingFolder, moveToInstance, copyFilePath, selectFilePath, closeAllTabs, closeAllTabsButThisOne, closeAllTabsToTheLeft, closeAllTabsToTheRight and separator.
  • Scrollable menus Will override the default style so that pop-up menus scroll instead being laid-out in mutliple columns if they are larger than the available screen space. (Effective after restart.)
  • Searchable menus Extends the default keyboard navigation of the tabs and bookmarks menus by a search-as-you-type mechanism.
  • Toggle tool and menu bars with fullscreen Always toggles the visibility of the tool and menu bars when toggling fullscreen mode.
  • Use page label Determines if document-supplied page label will be used instead of page numbers when available.
  • Document title as tab title Determines if the tab title as derived from the meta-data instead of the file name.
  • Current page in window title If enabled, the current page and number of pages of the document in the active tab are displayed in the window title.
  • Instance name in window title If enabled and the current instance is named, its name is displayed in the window title.
  • Highlight current thumbnail If enabled, the current page is highlighted in the thumbnails view.
  • Limit thumbnails to results If this option is enabled and a search is conducted, only the pages where the search term is found are displayed in the thumbnails view.

Nastavenia klávesových skratiek

The shortcut settings allows the adjustment of keyboard shortcuts to personal preference. Shortcuts are changed by double-clicking on the shortcut to edit it and entering the new shortcut. Each action can have several shortcuts by entering a semicolon-separated list of them. Names of keys that are not single letters are written out explicitly (e.g. "Alt", "Ctrl", "PgDown"), where the matching is not case sensitive. If the shortcut contains modifier keys, the names of the keys are joined by a plus sign and modifier keys must be listed first, e.g. "Ctrl+A" or "Ctrl++".

Nastavenia modifikátorov

  • Zoom The keyboard modifiers to zoom using the mouse wheel in the main view.
  • Rotate The keyboard modifiers to rotate using the mouse wheel in the main view.
  • Scroll The keyboard modifiers to scroll horizontally using the mouse wheel in the main view.
  • Copy to clipboard The keyboard modifiers to copy texts or images from a page to the clipboard.
  • Add annotation The keyboard modifiers to add annotations to a page.
  • Zoom to selection The keyboard modifiers to zoom to a slection on a page.
qpdfview-0.4.18/help/help_sr.html0000644000000000000000000006364113516127411015044 0ustar 00000000000000 Помоћ

Помоћ

Садржај

  1. Главни мени
    1. Датотека
    2. Уреди
    3. Приказ
    4. Картице
    5. Обележивачи
    6. Помоћ
  2. Главни изглед
  3. Помоћни изглед
  4. Подешавања
    1. Понашање подешавања
    2. Графичка подешавања
    3. Подешавања интерфејса
    4. Подешавања пречица
    5. Подешавање модификација

Увод

qpdfviewје читач докумената са употрбом картица. Користи Poppler за PDF подршку, libspectre за PS подршку, DjVuLibre за DjVu подршку, CUPS за подршку штампања и Qt toolkit за интерфејс.

Молимо вас да на страници приручника видите информације о опцијама командне линије и конфигурационих фајлова.

Главни мени

Датотека

  • Open... Отвара дијалог за избор датотеке која се отвара у тренутној картици. Ако нема картице, датотека ће се отвотити у новој картици.
  • Open in new tab... Отвара дијалог за избор датотека које се отварају у новим картицама.
  • Recently used Садржи листу најчешће коришћених датотека (ако је омогућено у подешавањима).
  • Refresh Поново учитава датотеку приказану у текућој картици.
  • Save Saves changes to annotations and form fields to the file displayed in the current tab.
  • Сачувај као... Отвара дијалог да сачувате датотеку приказану у текућој картици укључујући измене у напоменама и облицима поља.
  • Save copy... Opens a dialog to save an umodified copy of the file displayed in the current tab.
  • Штампај... Отвара дијалог штампања датотеке приказане у тренутној картици.
  • Изађи Затвара све картице и излази из програма.

Уреди

  • Следећа/Претходна/Прва/Задња страна Прескаче на следећу/претходну/прву/задњу страну документа.
  • Иди на страну... Отвара дијалог за унос стране приказане у текућој картици.
  • Иди уназад/унапред Иде уназад/унапред у историјату приказаних страница.
  • Search... Opens the search dock below the main view. The search automatically starts two seconds after the last change of the search term or is manually started by pressing the return key. If the Shift modifier is held when the return key is pressed, the search starts in all tabs instead of just the current tab. (This effect is reversed if the extended search dock is enabled in the settings.)
  • Find previous/next Jumps to the previous/next occurrence of the search term in the document.
  • Cancel search Cancels the currently running search and closes the search dock.
  • Copy to clipboard If checked, the program will wait for a frame to be dragged to copy texts or images.
  • Add annotation If checked, the program will wait for a frame to be dragged to add annotations.
  • Settings... Opens the settings dialog. The button labeled 'Defaults' will revert all settings on all tabs to their default values. The button labeled 'Defaults on current tab' will revert only the settings on the current tab to their default values.

The current page can be changed by entering the desired page into the text field in the edit tool bar, which can be focused using Ctrl+K, and pressing the return key.

View

  • Continuous Determines whether all rows of the page layout are visible at once.
  • Two pages Determines whether the page layout uses two columns.
  • Two pages with cover page Determines whether the page layout uses two columns with a break after the cover page.
  • Multiple pages Determines whether the page layout uses multiple columns. The number of columns can be changed in the settings dialog.
  • Right to left Determines how pages are arranged in layouts with multiple pages per row.
  • Zoom in Increases the scale factor by 10 percent. The maximum scale factor is 5000 percent.
  • Zoom out Decreases the scale factor by 10 percent. The minimum scale factor is 10 percent.
  • Original size Resets the scale factor to 100 percent.
  • Fit to page width Determines the scale factor such that all pages fully fit into the main view horizontally.
  • Fit to page size Determines the scale factor such that all pages fully fit into the main view horizontally and vertically.
  • Rotate left Rotates the pages left/counterclockwise by 90 degrees.
  • Rotate right Rotates the pages right/clockwise by 90 degrees.
  • Invert colors Determines whether pages are rendered with inverted colors.
  • Convert to grayscale Determines whether pages are converted to grayscale after rendering.
  • Trim margins Enables the removal of empty page margins after rendering.
  • Composition Enables the composition of the rendered page with the paper color to adjust the background of scanned documents.
  • Tool bars This menu contains a list of available tool bars for accessing frequently used actions.
  • Docks This menu contains a list of available docks for displaying supplementary information.
  • Fonts... Opens a dialog listing the fonts used in the document.
  • Fullscreen Toggles the fullscreen mode, i.e. the window is shown maximized and without decoration.
  • Presentation... Enters presentation mode which can be left by pressing F12 or escape. The home/end key is used to display the first/last page. Arrow keys right and down, space and the page down key jump to the next page. Arrow keys left and up, backspace and the page up key jump to the previous page. Pressing control and return jumps back to the page before the last jump.

The scale factor can be changed by entering the desired percentage into the text field in the view tool bar, which can be focused using Ctrl+L, and pressing the return key.

Tabs

  • Previous/Next tab Makes the previous/next tab the current tab. Cycles to the last/first tab if the first/last tab is the current tab.
  • Close tab Closes the current tab.
  • Close all tabs Closes all tabs.
  • Close all tabs but current tab Closes all tabs except for the current tab.
  • Recently closed Contains a list of the most recently closed tabs (if enabled in the settings).

This menu contains a list of all tabs which can be made the current tab by clicking on the corresponding menu item. Tabs can also be closed by middle-clicking. The first nine tabs can also be activated by holding the Alt modifier and pressing keys one to nine.

Bookmarks

  • Previous bookmark Jumps to the closest bookmark before the current page.
  • Next bookmark Jumps to the closest bookmark after the current page.
  • Add bookmark Adds a bookmark for the current file and page.
  • Remove bookmark Removes the bookmark for the current file and page.
  • Remove all bookmarks Removes all bookmarks.
  • Open Opens the corresponding file in the current tab. If there is no tab, the file is opened in a new tab.
  • Open in new tab Opens the corresponding file in a new tab.
  • Jump to page Jumps to the corresponding page if the corresponding file is already open. Otherwise the corresponding file is opened in a new tab.

Help

  • Contents Displays this document.
  • About Displays the program version.

Main view

The backspace/space key skips to the previous/next page. The home/end key skips to the first/last page. The arrow, page up and page down keys scroll the viewport. Pressing control and return jumps to the page before the last jump.

Using the mouse wheel scrolls up and down. Holding ALT while using the mouse wheel scrolls left and right. Holding CTRL while using the mouse wheel scales the document. Holding SHIFT while using the mouse wheel rotates the document. (Keyboard modifiers can be changed in the settings dialog.) Click and hold the middle mouse button to select a rectangle to zoom to.

Links are highlighted by red frames (if enabled in the settings). Left-click on a link to show the linked page or open the linked URL in the default browser (if enabled in the settings). Middle-click on a link to show the linked page in a new tab. Hovering over a link displays its destination as a tool tip.

Form fields are highlighted by blue frames (if enabled in the settings). Left-click on a form field to edit its contents. Hovering over a form field displays its name as a tool tip.

The source of a position in the document can be opened in the source editor using the context menu which optionally contains an item for the first matching SyncTeX node.

To copy texts or images, hold SHIFT, click and hold the left mouse button to drag a frame around the area to copy. Once the mouse button is released, a pop-up menu is displayed to select whether to copy texts or images into the clipboard.

To add annotations, hold CTRL, click and hold the left mouse button to drag a frame around the region to annotate. Once the mouse button is released, a pop-up menu is displayed to select whether to add text or highlight annotations. Left-click to edit annotations. Right-click to remove annotations. (Adding and removing annotations requires version 0.20.1 or higher of the Poppler library.) Hovering over an annotation displays its contents as a tool tip.

To zoom to a selection, hold SHIFT and CTRL, click and hold the left mouse button to drag a frame around region to zoom into.

The visibility of the tool and menu bars can be toggled using configurable keyboard shortcuts whose default values are "Shift+Alt+T" and "Shift+Alt+M".

Auxiliary views

The outline view displays an overview of the contents of the document. A left click on an entry jumps to the respective page in the main view. The context menu can be used to expand/collapse all items below the selected item.

The outline view can also be navigated using the keyboard and the mouse wheel. Holding Shift and using the Up/Down keys will scroll the view. Holding Shift and using the Left/Right keys will collapse/expand one level of items below the selected item. Holding Control and using the Left/Right keys will completely collapse/expand the selected item and its children. Holding Shift and using the mousel wheel will change the selected item. Holding Control and using the mouse wheel will expand/collapse the selected item.

The properties view displays additional information contained in the document.

The thumbnails view displays smaller versions of the pages of the document. A left click on an entry jumps to the respective page in the main view.

The bookmarks view shows the bookmarks related to the document displayed in the current tab. The context menu contains entries to jump to the previous/next boookmark or to add bookmarks. The context menu of each entry also contains entries to edit and delete bookmarks.

If enabled in the settings, the extended search dock shows an overview containing the results of all searches being performed in all tabs. It also shows the text surrounding a result with the search term being emphasized. Clicking on a result opens the corresponding tab and jumps to its position.

Settings

Behavior settings

  • Open URL Determines whether links to URL are opened in the default browser.
  • Auto-refresh Determines whether files are automatically reloaded if changed on disk.
  • Track recently used If enabled, a recently used menu is available and lists as many recently used files as set in the "Recently used count" option. (Effective after restart.)
  • Keep recently closed If enabled, a recently closed menu is available and lists as many recently closed tabs as set in the "Recently closed count" option. Keeping the tabs available could increase memory usage considerably. (Effective after restart.)
  • Restore tabs If enabled, tabs and their properties are saved on ending the program and restored on restart.
  • Restore bookmarks If enabled, bookmarks are saved on ending the program and restored on restart.
  • Restore per-file settings If enabled, per-file settings are saved/restored on opening/closing tabs.
  • Save database interval The interval after which tabs, bookmarks or per-file settings are saved to the database.
  • Synchronize presentation If enabled, the main view can be used to control the presentation view.
  • Presentation screen The index of the screen to display the presentation view on.
  • Synchronize outline view If enabled, the outline view will highlight the first entry pointing to the current page whenever the current page changes.
  • Minimal scrolling If enabled, the view port will only be scrolled if the target position is not yet visible.
  • Zoom factor The number by which the scale factor is multiplied resp. divided upon zooming in resp. out.
  • Highlight color Determines the color of highlights.
  • Highlight duration Determines the duration of temporary highlights.
  • Annotation color The color of annotations added by the program using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Source editor The program which is started to edit sources. '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number.

Graphics settings

  • Use tiling Pages will be divided into tiles before rendering and caching to reduce memory usage.
  • Keep obsolete pixmaps If enabled, then upon change of the zoom factor, cached pixmaps will be used to draw approximations of final pixmaps until these are available at the cost of increased memory usage.
  • Use device pixel ratio If enabled, the highest available device pixel ratio is used to render at physical and display at logical resolution.
  • Decorate pages Determines whether pages are set apart from the background.
  • Decorate links Determines whether links are highlighted by red frames.
  • Decorate form fields Determines whether form fields are highlighted by blue frames.
  • Background color Determines the color of the background using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Paper color Determines the color of pages using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Presentation background color Overrides the paper color in the computation of the background color of the presentation view and is defined using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Pages per row Number of pages per row in the 'multiple pages' layout mode.
  • Page spacing Determines both vertical and horizontal space displayed between pages.
  • Thumbnail spacing Determines both vertical and horizontal space displayed between thumbnails.
  • Thumbnail size Determines the size of the thumbnails.
  • Cache size The program will try to cache rendered pages within this limit increasing rendering speed at the cost of increased memory usage.
  • Prefetch The program will try to render pages that are not yet visible increasing rendering speed at the cost of increased cache usage.
  • Prefetch distance The number of rows beyond the current row and twice the number of rows before the current row that are prefetched.
  • PDF settings
    • Antialiasing Improves display quality at the cost of performance
    • Text antialiasing Improves text display quality at the cost of performance
    • Text hinting May improve text display quality for certain fonts.
    • Overprint preview If enabled, a preview of printing one layer of ink on top of another is displayed.
    • Thin line mode Chooses the optimization used to draw thin lines.
    • Backend Chooses the backend used to render pages.
  • PS settings
    • Graphics antialias bits Determines the amount of antialiasing for graphics.
    • Text antialias bits Determines the amount of antialiasing for text.

Interface settings

  • Extended search dock If enabled, the default search dock is extended by an overview showing the results of all tabs. (Effective after restart.)
  • Annotation overlay If enabled, all annotations on a page will be displayed as an interactive overlay. Otherwise each annotation will be handled as a separate pop-up window.
  • Form field overlay If enabled, all form fields on a page will be displayed as an interactive overlay. Otherwise each form field will be handled as a separate pop-up window.
  • Tab position Defines at which edge of the main view tabs will be displayed.
  • Tab visibility Determines whether tabs will be displayed if less than two documents are opened.
  • Spread tabs Determines if tabs will be spread out evenly over the whole tab bar.
  • New tab next to current tab If enabled, new tabs are opened to the right of the active tab.
  • Exit after last tab If enabled, the application exits after the last tab is closed.
  • Recently used count Sets the number of files that are listed in the recently used menu, if "Track recently used" is enabled. (Effective after restart.)
  • Recently closed count Sets the number of tabs that are listed in the recently closed menu, if "Keep recently closed" is enabled. (Effective after restart.)
  • File tool bar Defines which actions are visible in the file tool bar. Available actions are openInNewTab, open, refresh, saveCopy, saveAs, print and separator. (Effective after restart.)
  • Edit tool bar Defines which actions are visible in the edit tool bar. Available actions are currentPage, previousPage, nextPage, firstPage, lastPage, jumpToPage, jumpBackward, jumpForward, search, copyToClipboardMode, addAnnotationMode and separator. (Effective after restart.)
  • View tool bar Defines which actions are visible in the view tool bar. Available actions are scaleFactor, zoomIn, zoomOut, continuousMode, twoPagesMode, twoPagesWithCoverPageMode, multiplePagesMode, originalSize, fitToPageWidthMode, fitToPageSizeMode, rotateLeft, rotateRight, fullscreen, presentation and separator. (Effective after restart.)
  • Document context menu Defines which actions are visible in the document's context menu. Available actions are openCopyInNewTab, openCopyInNewWindow, openContainingFolder, moveToInstance, previousPage, nextPage, firstPage, lastPage, jumpToPage, jumpBackward, jumpForward, setFirstPage, findPrevious, findNext, cancelSearch and separator.
  • Tab context menu Defines which actions are visible in a tab's context menu. Available actions are openCopyInNewTab, openCopyInNewWindow, openContainingFolder, moveToInstance, copyFilePath, selectFilePath, closeAllTabs, closeAllTabsButThisOne, closeAllTabsToTheLeft, closeAllTabsToTheRight and separator.
  • Scrollable menus Will override the default style so that pop-up menus scroll instead being laid-out in mutliple columns if they are larger than the available screen space. (Effective after restart.)
  • Searchable menus Extends the default keyboard navigation of the tabs and bookmarks menus by a search-as-you-type mechanism.
  • Toggle tool and menu bars with fullscreen Always toggles the visibility of the tool and menu bars when toggling fullscreen mode.
  • Use page label Determines if document-supplied page label will be used instead of page numbers when available.
  • Document title as tab title Determines if the tab title as derived from the meta-data instead of the file name.
  • Current page in window title If enabled, the current page and number of pages of the document in the active tab are displayed in the window title.
  • Instance name in window title If enabled and the current instance is named, its name is displayed in the window title.
  • Highlight current thumbnail If enabled, the current page is highlighted in the thumbnails view.
  • Limit thumbnails to results If this option is enabled and a search is conducted, only the pages where the search term is found are displayed in the thumbnails view.

Shortcut settings

The shortcut settings allows the adjustment of keyboard shortcuts to personal preference. Shortcuts are changed by double-clicking on the shortcut to edit it and entering the new shortcut. Each action can have several shortcuts by entering a semicolon-separated list of them. Names of keys that are not single letters are written out explicitly (e.g. "Alt", "Ctrl", "PgDown"), where the matching is not case sensitive. If the shortcut contains modifier keys, the names of the keys are joined by a plus sign and modifier keys must be listed first, e.g. "Ctrl+A" or "Ctrl++".

Modifier settings

  • Zoom The keyboard modifiers to zoom using the mouse wheel in the main view.
  • Rotate The keyboard modifiers to rotate using the mouse wheel in the main view.
  • Scroll The keyboard modifiers to scroll horizontally using the mouse wheel in the main view.
  • Copy to clipboard The keyboard modifiers to copy texts or images from a page to the clipboard.
  • Add annotation The keyboard modifiers to add annotations to a page.
  • Zoom to selection The keyboard modifiers to zoom to a slection on a page.
qpdfview-0.4.18/help/help_sv.html0000644000000000000000000006142013516127411015041 0ustar 00000000000000 Hjälp

Help

Innehållsförteckning

  1. Main menu
    1. File
    2. Edit
    3. View
    4. Tabs
    5. Bookmarks
    6. Help
  2. Main view
  3. Auxiliary views
  4. Settings
    1. Behavior settings
    2. Graphics settings
    3. Interface settings
    4. Shortcut settings
    5. Modifier settings

Introduction

qpdfview is a tabbed document viewer. It uses Poppler for PDF support, libspectre for PS support, DjVuLibre for DjVu support, CUPS for printing support and the Qt toolkit for its interface.

Please refer to the manual page for information on command-line options and configuration files.

Main menu

File

  • Open... Opens a dialog to choose a file to open in the current tab. If there is no tab, the file is opened in a new tab.
  • Open in new tab... Opens a dialog to choose files to open in new tabs.
  • Recently used Contains a list of the most recently used files (if enabled in the settings).
  • Refresh Reloads the file displayed in the current tab.
  • Save Saves changes to annotations and form fields to the file displayed in the current tab.
  • Save as... Opens a dialog to save the file displayed in the current tab including changes to annotations and form fields.
  • Save copy... Opens a dialog to save an umodified copy of the file displayed in the current tab.
  • Print... Opens a dialog to print the file displayed in the current tab.
  • Exit Closes all tabs and ends the program.

Edit

  • Next/Previous/First/Last page Skips to the next/previous/first/last page of the document.
  • Jump to page... Opens a dialog to enter a page to display in the current tab.
  • Jump backward/forward Jumps backward/forward in the history of displayed page.
  • Search... Opens the search dock below the main view. The search automatically starts two seconds after the last change of the search term or is manually started by pressing the return key. If the Shift modifier is held when the return key is pressed, the search starts in all tabs instead of just the current tab. (This effect is reversed if the extended search dock is enabled in the settings.)
  • Find previous/next Jumps to the previous/next occurrence of the search term in the document.
  • Cancel search Cancels the currently running search and closes the search dock.
  • Copy to clipboard If checked, the program will wait for a frame to be dragged to copy texts or images.
  • Add annotation If checked, the program will wait for a frame to be dragged to add annotations.
  • Settings... Opens the settings dialog. The button labeled 'Defaults' will revert all settings on all tabs to their default values. The button labeled 'Defaults on current tab' will revert only the settings on the current tab to their default values.

The current page can be changed by entering the desired page into the text field in the edit tool bar, which can be focused using Ctrl+K, and pressing the return key.

View

  • Continuous Determines whether all rows of the page layout are visible at once.
  • Two pages Determines whether the page layout uses two columns.
  • Two pages with cover page Determines whether the page layout uses two columns with a break after the cover page.
  • Multiple pages Determines whether the page layout uses multiple columns. The number of columns can be changed in the settings dialog.
  • Right to left Determines how pages are arranged in layouts with multiple pages per row.
  • Zoom in Increases the scale factor by 10 percent. The maximum scale factor is 5000 percent.
  • Zoom out Decreases the scale factor by 10 percent. The minimum scale factor is 10 percent.
  • Original size Resets the scale factor to 100 percent.
  • Fit to page width Determines the scale factor such that all pages fully fit into the main view horizontally.
  • Fit to page size Determines the scale factor such that all pages fully fit into the main view horizontally and vertically.
  • Rotate left Rotates the pages left/counterclockwise by 90 degrees.
  • Rotate right Rotates the pages right/clockwise by 90 degrees.
  • Invert colors Determines whether pages are rendered with inverted colors.
  • Convert to grayscale Determines whether pages are converted to grayscale after rendering.
  • Trim margins Enables the removal of empty page margins after rendering.
  • Composition Enables the composition of the rendered page with the paper color to adjust the background of scanned documents.
  • Tool bars This menu contains a list of available tool bars for accessing frequently used actions.
  • Docks This menu contains a list of available docks for displaying supplementary information.
  • Fonts... Opens a dialog listing the fonts used in the document.
  • Fullscreen Toggles the fullscreen mode, i.e. the window is shown maximized and without decoration.
  • Presentation... Enters presentation mode which can be left by pressing F12 or escape. The home/end key is used to display the first/last page. Arrow keys right and down, space and the page down key jump to the next page. Arrow keys left and up, backspace and the page up key jump to the previous page. Pressing control and return jumps back to the page before the last jump.

The scale factor can be changed by entering the desired percentage into the text field in the view tool bar, which can be focused using Ctrl+L, and pressing the return key.

Tabs

  • Previous/Next tab Makes the previous/next tab the current tab. Cycles to the last/first tab if the first/last tab is the current tab.
  • Close tab Closes the current tab.
  • Close all tabs Closes all tabs.
  • Close all tabs but current tab Closes all tabs except for the current tab.
  • Recently closed Contains a list of the most recently closed tabs (if enabled in the settings).

This menu contains a list of all tabs which can be made the current tab by clicking on the corresponding menu item. Tabs can also be closed by middle-clicking. The first nine tabs can also be activated by holding the Alt modifier and pressing keys one to nine.

Bookmarks

  • Previous bookmark Jumps to the closest bookmark before the current page.
  • Next bookmark Jumps to the closest bookmark after the current page.
  • Add bookmark Adds a bookmark for the current file and page.
  • Remove bookmark Removes the bookmark for the current file and page.
  • Remove all bookmarks Removes all bookmarks.
  • Open Opens the corresponding file in the current tab. If there is no tab, the file is opened in a new tab.
  • Open in new tab Opens the corresponding file in a new tab.
  • Jump to page Jumps to the corresponding page if the corresponding file is already open. Otherwise the corresponding file is opened in a new tab.

Help

  • Contents Displays this document.
  • About Displays the program version.

Main view

The backspace/space key skips to the previous/next page. The home/end key skips to the first/last page. The arrow, page up and page down keys scroll the viewport. Pressing control and return jumps to the page before the last jump.

Using the mouse wheel scrolls up and down. Holding ALT while using the mouse wheel scrolls left and right. Holding CTRL while using the mouse wheel scales the document. Holding SHIFT while using the mouse wheel rotates the document. (Keyboard modifiers can be changed in the settings dialog.) Click and hold the middle mouse button to select a rectangle to zoom to.

Links are highlighted by red frames (if enabled in the settings). Left-click on a link to show the linked page or open the linked URL in the default browser (if enabled in the settings). Middle-click on a link to show the linked page in a new tab. Hovering over a link displays its destination as a tool tip.

Form fields are highlighted by blue frames (if enabled in the settings). Left-click on a form field to edit its contents. Hovering over a form field displays its name as a tool tip.

The source of a position in the document can be opened in the source editor using the context menu which optionally contains an item for the first matching SyncTeX node.

To copy texts or images, hold SHIFT, click and hold the left mouse button to drag a frame around the area to copy. Once the mouse button is released, a pop-up menu is displayed to select whether to copy texts or images into the clipboard.

To add annotations, hold CTRL, click and hold the left mouse button to drag a frame around the region to annotate. Once the mouse button is released, a pop-up menu is displayed to select whether to add text or highlight annotations. Left-click to edit annotations. Right-click to remove annotations. (Adding and removing annotations requires version 0.20.1 or higher of the Poppler library.) Hovering over an annotation displays its contents as a tool tip.

To zoom to a selection, hold SHIFT and CTRL, click and hold the left mouse button to drag a frame around region to zoom into.

The visibility of the tool and menu bars can be toggled using configurable keyboard shortcuts whose default values are "Shift+Alt+T" and "Shift+Alt+M".

Auxiliary views

The outline view displays an overview of the contents of the document. A left click on an entry jumps to the respective page in the main view. The context menu can be used to expand/collapse all items below the selected item.

The outline view can also be navigated using the keyboard and the mouse wheel. Holding Shift and using the Up/Down keys will scroll the view. Holding Shift and using the Left/Right keys will collapse/expand one level of items below the selected item. Holding Control and using the Left/Right keys will completely collapse/expand the selected item and its children. Holding Shift and using the mousel wheel will change the selected item. Holding Control and using the mouse wheel will expand/collapse the selected item.

The properties view displays additional information contained in the document.

The thumbnails view displays smaller versions of the pages of the document. A left click on an entry jumps to the respective page in the main view.

The bookmarks view shows the bookmarks related to the document displayed in the current tab. The context menu contains entries to jump to the previous/next boookmark or to add bookmarks. The context menu of each entry also contains entries to edit and delete bookmarks.

If enabled in the settings, the extended search dock shows an overview containing the results of all searches being performed in all tabs. It also shows the text surrounding a result with the search term being emphasized. Clicking on a result opens the corresponding tab and jumps to its position.

Settings

Behavior settings

  • Open URL Determines whether links to URL are opened in the default browser.
  • Auto-refresh Determines whether files are automatically reloaded if changed on disk.
  • Track recently used If enabled, a recently used menu is available and lists as many recently used files as set in the "Recently used count" option. (Effective after restart.)
  • Keep recently closed If enabled, a recently closed menu is available and lists as many recently closed tabs as set in the "Recently closed count" option. Keeping the tabs available could increase memory usage considerably. (Effective after restart.)
  • Restore tabs If enabled, tabs and their properties are saved on ending the program and restored on restart.
  • Restore bookmarks If enabled, bookmarks are saved on ending the program and restored on restart.
  • Restore per-file settings If enabled, per-file settings are saved/restored on opening/closing tabs.
  • Save database interval The interval after which tabs, bookmarks or per-file settings are saved to the database.
  • Synchronize presentation If enabled, the main view can be used to control the presentation view.
  • Presentation screen The index of the screen to display the presentation view on.
  • Synchronize outline view If enabled, the outline view will highlight the first entry pointing to the current page whenever the current page changes.
  • Minimal scrolling If enabled, the view port will only be scrolled if the target position is not yet visible.
  • Zoom factor The number by which the scale factor is multiplied resp. divided upon zooming in resp. out.
  • Highlight color Determines the color of highlights.
  • Highlight duration Determines the duration of temporary highlights.
  • Annotation color The color of annotations added by the program using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Source editor The program which is started to edit sources. '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number.

Graphics settings

  • Use tiling Pages will be divided into tiles before rendering and caching to reduce memory usage.
  • Keep obsolete pixmaps If enabled, then upon change of the zoom factor, cached pixmaps will be used to draw approximations of final pixmaps until these are available at the cost of increased memory usage.
  • Use device pixel ratio If enabled, the highest available device pixel ratio is used to render at physical and display at logical resolution.
  • Decorate pages Determines whether pages are set apart from the background.
  • Decorate links Determines whether links are highlighted by red frames.
  • Decorate form fields Determines whether form fields are highlighted by blue frames.
  • Background color Determines the color of the background using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Paper color Determines the color of pages using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Presentation background color Overrides the paper color in the computation of the background color of the presentation view and is defined using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Pages per row Number of pages per row in the 'multiple pages' layout mode.
  • Page spacing Determines both vertical and horizontal space displayed between pages.
  • Thumbnail spacing Determines both vertical and horizontal space displayed between thumbnails.
  • Thumbnail size Determines the size of the thumbnails.
  • Cache size The program will try to cache rendered pages within this limit increasing rendering speed at the cost of increased memory usage.
  • Prefetch The program will try to render pages that are not yet visible increasing rendering speed at the cost of increased cache usage.
  • Prefetch distance The number of rows beyond the current row and twice the number of rows before the current row that are prefetched.
  • PDF settings
    • Antialiasing Improves display quality at the cost of performance
    • Text antialiasing Improves text display quality at the cost of performance
    • Text hinting May improve text display quality for certain fonts.
    • Overprint preview If enabled, a preview of printing one layer of ink on top of another is displayed.
    • Thin line mode Chooses the optimization used to draw thin lines.
    • Backend Chooses the backend used to render pages.
  • PS settings
    • Graphics antialias bits Determines the amount of antialiasing for graphics.
    • Text antialias bits Determines the amount of antialiasing for text.

Interface settings

  • Extended search dock If enabled, the default search dock is extended by an overview showing the results of all tabs. (Effective after restart.)
  • Annotation overlay If enabled, all annotations on a page will be displayed as an interactive overlay. Otherwise each annotation will be handled as a separate pop-up window.
  • Form field overlay If enabled, all form fields on a page will be displayed as an interactive overlay. Otherwise each form field will be handled as a separate pop-up window.
  • Tab position Defines at which edge of the main view tabs will be displayed.
  • Tab visibility Determines whether tabs will be displayed if less than two documents are opened.
  • Spread tabs Determines if tabs will be spread out evenly over the whole tab bar.
  • New tab next to current tab If enabled, new tabs are opened to the right of the active tab.
  • Exit after last tab If enabled, the application exits after the last tab is closed.
  • Recently used count Sets the number of files that are listed in the recently used menu, if "Track recently used" is enabled. (Effective after restart.)
  • Recently closed count Sets the number of tabs that are listed in the recently closed menu, if "Keep recently closed" is enabled. (Effective after restart.)
  • File tool bar Defines which actions are visible in the file tool bar. Available actions are openInNewTab, open, refresh, saveCopy, saveAs, print and separator. (Effective after restart.)
  • Edit tool bar Defines which actions are visible in the edit tool bar. Available actions are currentPage, previousPage, nextPage, firstPage, lastPage, jumpToPage, jumpBackward, jumpForward, search, copyToClipboardMode, addAnnotationMode and separator. (Effective after restart.)
  • View tool bar Defines which actions are visible in the view tool bar. Available actions are scaleFactor, zoomIn, zoomOut, continuousMode, twoPagesMode, twoPagesWithCoverPageMode, multiplePagesMode, originalSize, fitToPageWidthMode, fitToPageSizeMode, rotateLeft, rotateRight, fullscreen, presentation and separator. (Effective after restart.)
  • Document context menu Defines which actions are visible in the document's context menu. Available actions are openCopyInNewTab, openCopyInNewWindow, openContainingFolder, moveToInstance, previousPage, nextPage, firstPage, lastPage, jumpToPage, jumpBackward, jumpForward, setFirstPage, findPrevious, findNext, cancelSearch and separator.
  • Tab context menu Defines which actions are visible in a tab's context menu. Available actions are openCopyInNewTab, openCopyInNewWindow, openContainingFolder, moveToInstance, copyFilePath, selectFilePath, closeAllTabs, closeAllTabsButThisOne, closeAllTabsToTheLeft, closeAllTabsToTheRight and separator.
  • Scrollable menus Will override the default style so that pop-up menus scroll instead being laid-out in mutliple columns if they are larger than the available screen space. (Effective after restart.)
  • Searchable menus Extends the default keyboard navigation of the tabs and bookmarks menus by a search-as-you-type mechanism.
  • Toggle tool and menu bars with fullscreen Always toggles the visibility of the tool and menu bars when toggling fullscreen mode.
  • Use page label Determines if document-supplied page label will be used instead of page numbers when available.
  • Document title as tab title Determines if the tab title as derived from the meta-data instead of the file name.
  • Current page in window title If enabled, the current page and number of pages of the document in the active tab are displayed in the window title.
  • Instance name in window title If enabled and the current instance is named, its name is displayed in the window title.
  • Highlight current thumbnail If enabled, the current page is highlighted in the thumbnails view.
  • Limit thumbnails to results If this option is enabled and a search is conducted, only the pages where the search term is found are displayed in the thumbnails view.

Shortcut settings

The shortcut settings allows the adjustment of keyboard shortcuts to personal preference. Shortcuts are changed by double-clicking on the shortcut to edit it and entering the new shortcut. Each action can have several shortcuts by entering a semicolon-separated list of them. Names of keys that are not single letters are written out explicitly (e.g. "Alt", "Ctrl", "PgDown"), where the matching is not case sensitive. If the shortcut contains modifier keys, the names of the keys are joined by a plus sign and modifier keys must be listed first, e.g. "Ctrl+A" or "Ctrl++".

Modifier settings

  • Zoom The keyboard modifiers to zoom using the mouse wheel in the main view.
  • Rotate The keyboard modifiers to rotate using the mouse wheel in the main view.
  • Scroll The keyboard modifiers to scroll horizontally using the mouse wheel in the main view.
  • Copy to clipboard The keyboard modifiers to copy texts or images from a page to the clipboard.
  • Add annotation The keyboard modifiers to add annotations to a page.
  • Zoom to selection The keyboard modifiers to zoom to a slection on a page.
qpdfview-0.4.18/help/help_tr.html0000644000000000000000000007015513516127411015043 0ustar 00000000000000 Yardım

Yardım

İçeriklerin tablosu

  1. Ana menü
    1. Dosya
    2. Düzenle
    3. Görünüm
    4. Sekmeler
    5. Yer imleri
    6. Yardım
  2. Ana görünüm
  3. Yardımcı görünümler
  4. Ayarlar
    1. Davranış ayarları
    2. Grafik ayarları
    3. Arayüz ayarları
    4. Kısayol ayarları
    5. Değiştirici ayarları

Başlangıç

qpdfview sekmeli bir belge görüntüleyicidir. PDF desteği için Poppler, PS desteği için libspectre, DjVu desteği için DjVuLibre, yazdırma desteği için CUPS ve arabirimi için Qt araç seti kullanır.

Komut satırı seçenekleri ve yapılandırma dosyaları hakkında bilgi için lütfen klavuz sayfaya bakın.

Ana menü

Dosya

  • Aç... Geçerli sekmede açılacak bir dosyayı seçmek için bir iletişim kutusu açar. Sekme yoksa, dosya yeni bir sekmede açılır.
  • Yeni sekmede aç... Dosyaları yeni sekmelerde açmak için seçebileceğiniz bir iletişim kutusu açar.
  • Son kullanılan En son kullanılan dosyaların bir listesini içerir (ayarlarda etkinleştirildiyse).
  • Yenile Geçerli sekmede görüntülenen dosyayı yeniden yükleyin.
  • Kaydet Geçerli sekmede görüntülenen dosyaya ek açıklamalara ve form alanlarına değişiklikleri kaydeder.
  • Farklı kaydet ... Ek açıklamalardaki ve form alanlarındaki değişiklikler de dahil olmak üzere geçerli sekmede görüntülenen dosyayı kaydetmek için bir iletişim kutusu açar.
  • Kopya kaydet... Geçerli sekmede görüntülenen dosyanın umodified bir kopyasını kaydetmek için bir iletişim kutusu açar.
  • Yazdır... Geçerli sekmede görüntülenen dosyayı yazdırmak için bir iletişim kutusu açar.
  • Çıkış Tüm sekmeleri kapatır ve yazılım sona erer.

Düznele

  • Sonraki/Önceki/İlk/Son sayfa Belgenin sonraki/önceki /ilk/son sayfasına atlar.
  • Sayfaya atla... Geçerli sekmede görüntülenecek bir sayfa girmek için bir iletişim kutusu açar.
  • Geri/İleri atla Görüntülenen sayfada geçmişi ileri/geri atlar.
  • Ara... Arama platformunu ana görünümün altında açar. Arama, arama teriminin son değiştirilmesinden sonra otomatik olarak başlar ve dönüş tuşuna basarak manuel olarak başlatılır. Dönüş tuşu basılı tutulduğunda Shift düzenleyici basılı tutulursa, arama sadece geçerli sekme yerine tüm sekmelerde başlar. (Bu ayar, genişletilmiş arama platformu etkinleştirildiyse tersine çevrilir.)
  • Önceki/sonraki bul Belgedeki arama teriminin önceki/sonraki oluşumuna atlar.
  • Aramayı iptal et Çalışmakta olan aramayı iptal eder ve arama platformunu kapatır.
  • Panoya kopyala İşaretlenirse, program metin veya resim kopyalamak için sürüklenecek bir çerçeveyi bekleyecektir.
  • Ek açıklama ekleyin İşaretlenirse, ek açıklamalar eklemek için program bir çerçevenin sürüklenmesini bekleyecektir.
  • Ayarlar... Ayarlar iletişim kutusunu açar. 'Varsayılanlar' etiketli düğme, tüm sekmelerdeki tüm ayarları varsayılan değerlerine geri döndürür. 'Geçerli sekmede Varsayılanlar' etiketli düğme, yalnızca geçerli sekmedeki ayarları varsayılan değerlerine döndürür.

Geçerli sayfa, Ctrl+K ile odaklanılabilir ve dönüş tuşuna basarak düzenle araç çubuğundaki metin alanına istediğiniz sayfayı girerek değiştirilebilir.

Görünüm

  • Sürekli Sayfa düzeninin tüm satırlarının aynı anda görünüp görünmeyeceğini belirler.
  • İki sayfa Sayfa düzeninin iki sütun kullanıp kullanılmayacağını belirler.
  • Kapak sayfası içeren iki sayfa Sayfa düzeninin kapak sayfasından sonra iki sütun kullanıp kullanılmayacağını belirler.
  • Çoklu Sayfa Sayfa düzeninde birden çok sütun kullanılıp kullanılmayacağını belirler. Sütun sayısı, ayarlar iletişim kutusunda değiştirilebilir.
  • Sağdan sola Sayfalar satır başına birden fazla sayfa ile düzenleri nasıl düzenlendiğine belirler.
  • Yakınlaştır Ölçek etmenini yüzde 10 oranında artırır. Azami ölçek etmeni yüzde 5000'dir.
  • Uzaklaştır Ölçek etmenini yüzde 10 oranında azaltır. Asgari ölçek etmeni yüzde 10'dur.
  • Özgün boyut Ölçeği yüzde 100'e getirir.
  • Sayfaya genişliğe sığdır Tüm sayfaların ana görünüme tamamen yatay olarak sığacağı şekilde ölçek etmenini belirler.
  • Sayfaya sığdır Tüm sayfaların ana görünüme tamamen yatay ve dikey olarak sığacağı ölçek etmeni belirler.
  • Sola döndür Sayfaları sola/saat yönünün tersine 90 derece döndürür.
  • Sağa döndür Sayfaları sağa/sola 90 derece döndürür.
  • Renkleri ters çevir Sayfaların ters renklerle işlenip işlenmeyeceğini belirler.
  • Gri tonlamaya dönüştür Sayfa oluşturulduktan sonra gri tonlamaya dönüştürülüp dönüşmeyeceğini belirler.
  • Kenar boşluklarını düzelt Oluşturduktan sonra boş sayfa kenar boşluğunun kaldırılmasını sağlar.
  • Kompozisyon Taranan belgelerin arka planını ayarlamak için, işlenen sayfanın kağıt rengiyle bileşimini etkinleştirir.
  • Araç çubukları Bu menü, sık kullanılan eylemlere erişmek için kullanılabilen araç çubuklarının bir listesini içerir.
  • Rıhtımlar Bu menü, tamamlayıcı bilgileri görüntülemek için mevcut rıhtımların bir listesini içerir.
  • Yazı tipleri... Belgede kullanılan yazı tiplerini listeleyen bir iletişim kutusu açılır.
  • Tam Ekran Tam ekran kipini etkinleştirir, yani pencere azami ve dekorsuz olarak gösterilir.
  • Sunum ... F12 tuşuna basarak veya Esc bırakılabilecek sunum kipine girer. home/end ilk/son sayfayı görüntülemek için kullanılır. Ok tuşları sağa ve aşağı, boşluk ve sayfa aşağı tuşu bir sonraki sayfaya atlamaktadır. Ok tuşları sola ve yukarıya, geri ve sayfa yukarı tuşu bir önceki sayfaya atlar. Kontrol ve geri basma, son atlamadan önce sayfaya geri atlar.

ölçek etmeni, Ctrl+L ile odaklanılacak ve geri tuşuna basarak görüntüleme araç çubuğundaki metin alanına istenilen yüzdeyi girerek değiştirilebilir.

Sekmeler

  • Önceki/Sonraki sekme Önceki/sonraki sekmeyi geçerli sekmeye getirir. İlk/son sekme geçerli sekmeyse, son/ilk sekmeye döner.
  • Sekmeyi kapat Geçerli sekmeyi kapatır.
  • Tüm sekmeleri kapat Tüm sekmeleri kapatın.
  • Tüm sekmeleri kapatın, ancak geçerli sekmeyi hariç Geçerli sekme dışındaki tüm sekmeleri kapatın.
  • Son kapatılan En son kapatılan sekmelerin bir listesini içerir (ayarlarda etkinleştirildiyse).

Bu menü, ilgili menü öğesine tıklayarak geçerli sekmeyi oluşturan tüm sekmelerin bir listesini içerir. Sekmeler orta tıklama ile de kapatılabilir. İlk dokuz sekme, Alt değiştirici basılı tutularak ve bir ila dokuz arasındaki tuşlara basılarak etkinleştirilebilir.

Yer imleri

  • Önceki yer imi Geçerli sayfada önce en yakın yer işaretine atlar.
  • Sonraki yer imi Geçerli sayfanın ardından en yakın yer işaretine atlar.
  • Yer imi ekle Geçerli dosya ve sayfa için bir yer imi ekler.
  • Yer imini kaldır Geçerli dosya ve sayfa için yer işaretini kaldırır.
  • Tüm yer imini kaldır tüm yer işaretlerini kaldırır.
  • İlgili dosyayı geçerli sekmede açar. Sekme yoksa, dosya yeni bir sekmede açılır.
  • Yeni sekmede aç İlgili dosyayı yeni bir sekmede açar.
  • Sayfaya atla İlgili dosya zaten açıksa, ilgili sayfaya atlar. Aksi takdirde ilgili dosya yeni bir sekmede açılır.

Yardım

  • İçerikler Bu belgeyi görüntüler.
  • Hakkında Yazılım sürümünü görüntüler.

Ana görünüm

Geri/boşluk tuşu bir önceki/bir sonraki sayfaya atlar. Home/end tuşu ilk/son sayfaya atlar. Ok, sayfa yukarı ve aşağı sayfa tuşları görüntü kapısını kaydırır. Kontrol ve geri basıldığında, son atlamadan önce sayfaya atlar.

Farenin tekerleğini kullanarak yukarı ve aşağı kayar. Farenin tekerleğini kullanırken ALT tuşunu basılı tutarken sola ve sağa kayar. Farenin tekerleğini kullanırken CTRL tuşunu basılı tutmak dokümanı ölçeklendirir. Farenin tekerleğini kullanırken SHİFT tuşunu basılı tuttuğunuzda belge döndürülür. (Klavye değiştiricileri ayarlar diyaloğunda değiştirilebilir.) Yakınlaştırılacak bir dikdörtgen seçmek için orta fare düğmesini basılı tutun.

Bağlantılar kırmızı çerçevelerle vurgulanır (ayarlar etkinleştirildiyse). Bağlantılı sayfayı göstermek için bir bağlantıyı sol tıklayın veya varsayılan tarayıcıda bağlantı verilen URL'yi açın (ayarlar etkinleştirildiyse). Bağlantılı sayfayı yeni bir sekmede göstermek için bir bağlantıyı orta tıklayın. Bir bağın üzerine fareyle gelmek, hedefini bir araç ipucu olarak görüntüler.

Form alanları, mavi çerçevelerle vurgulanır (ayarlar etkinleştirildiyse). İçeriğini düzenlemek için bir form alanına sol tıklayın. Bir form alanının üzerine gelmek, adını araç ipucu olarak görüntüler.

Belgedeki bir konumun kaynağı, isteğe bağlı olarak ilk eşleşen SyncTeX düğümü için bir öğe içeren içerik menüsünü kullanarak kaynak düzenleyicisinde açılabilir.

metinleri veya resimleri kopyalatutSHİFT tuşunu basılı tutun, kopyalamak için alanı çevreleyen bir çerçeve sürüklemek adına farenin sol düğmesini basılı tutun. Fare düğmesi serbest bırakıldıktan sonra, metinleri veya resimleri panoya kopyalayıp kopyalamayacağınızı seçmek için bir açılır menü görüntülenir.

ek açıklamalar eklemek için, açıklama yapmak ve bölgenin çevresine bir çerçeve sürüklemek için CTRL tuşunu basılı tutun, farenin sol düğmesini basılı tutun. Fare düğmesi serbest bırakıldıktan sonra, metin ekleme veya vurgulama ek açıklama eklemeyi seçmek için bir açılır menü görüntülenir. Ek açıklamaları düzenle için sol tıklayın. Ek açıklamaları kaldırmak için sağ tıklayın. (Ek açıklamaları ekleme ve kaldırma, Poppler kitaplığının 0.20.1 veya daha yeni sürümünü gerektirir.) Bir açıklama üzerine gelmek, içeriğini bir araç ipucu olarak görüntüler.

bir seçime yakınlaştır, tut SHIFT ve CTRL, yakınlaştırmak için bölgenin etrafında bir çerçeve sürüklemek için farenin sol düğmesini basılı tutun.

araç ve menü çubuklarının görünürlüğü öntanımlı değerler "Shift+Alt+T" ve "Shift+Alt+M" olan yapılandırılabilir klavye kısayollarını kullanarak arasında geçiş yapılabilir.

Yardımcı görünümler

anahat görünümü belgenin içeriğine genel bir bakış görüntüler. Bir girişe sol tıklama, ana görünümdeki ilgili sayfaya atlar. Bağlam menüsü, seçili öğenin altındaki tüm öğeleri genişletmek/daraltmak için kullanılabilir.

Anahat görünümü klavyeyi ve fare tekerleğini kullanarak da gezinebilir. Shift tuşunu basılı tutarak ve Yukarı/Aşağı tuşlarını kullanarak görünümü kaydırır. Shift tuşunu basılı tutarak ve Sol/Sağ tuşlarını kullanarak, seçili öğenin altındaki bir öğe seviyesini daraltabilir/genişletebilirsiniz. Shift basılı ve Sol/Sağ tuşlarını kullanarak, seçili öğeyi ve altlarını tamamen daraltıp/genişletin. Kaydırma tuşunu basılı tutup kaydırma tekerleği kullanarak seçilen öğe değişir. Tutma Kontrolü ve fare tekerleğini kullanarak seçilen öğeyi genişletin/daraltın.

özellikler görünümü belgede bulunan ek bilgileri görüntüler.

küçük resimler görünümü belge sayfalarının daha küçük sürümlerini görüntüler. Bir girişe sol tıklama, ana görünümdeki ilgili sayfaya atlar.

yer imleri görünümü geçerli sekmede görüntülenen belgeye ilişkin yer imlerini gösterir. Bağlam menüsü bir önceki/sonraki yer imine atlamak veya yer imleri eklemek için girdileri içerir. Her girişin bağlam menüsü de yer imlerini düzenlemek ve silmek için girişler içermektedir.

Ayarlarda etkinleştirilirse, genişletilmiş arama platformu, tüm sekmelerde gerçekleştirilen tüm aramaların sonuçlarını içeren bir genel görünümü gösterir. Ayrıca, arama teriminin vurgulandığı bir sonucu çevreleyen metni gösterir. Sonuç tıklatıldığında, ilgili sekme açılır ve konumuna atlar.

Ayarlar

Davranış ayarları

  • URL Aç URL bağlantılarının varsayılan tarayıcıda açılıp açılmadığını belirler.
  • Otomatik yenile Dosyalar disk üzerinde değiştirildiğinde otomatik olarak yeniden yüklenip yüklenmeyeceğini belirler.
  • Son kullanılanları izle Etkinleştirildiğinde, yakın zamanda kullanılan bir menü kullanılabilir ve "Son kullanılan sayım" seçeneğinde ayarlandığı gibi çok yeni kullanılan dosyaları listeler. (Yeniden başlattıktan sonra etkili olur.)
  • Son kapatılanı sakla Etkinleştirilirse, yakın zamanda kapatılan bir menü mevcuttur ve "Son kapatılmışı say" seçeneğinde belirlenen şekilde son zamanlarda kapalı sekmeleri listeler. Sekmeleri tutmak bellek kullanımını önemli ölçüde artırabilir. (Yeniden başlattıktan sonra etkili olur.)
  • Sekmeleri geri yükle Etkinleştirilirse, sekmeler ve özellikleri programın bitiminde kaydedilir ve yeniden başlatıldığında kaydedilir.
  • Yer imlerini geri yükle Etkinleştirilirse, yer işaretleri programın bitiminde kaydedilir ve yeniden başlatıldığında geri yüklenir.
  • Dosya başına ayarları geri yükle Etkinleştirilirse, dosya başına ayarlar açma/kapatma sekmelerinde kaydedilir/geri yüklenir.
  • Veritabanı aralığını kaydetme Sekmelerin, yer imlerinin veya dosya başına ayarlarının veritabanına kaydedildikten sonraki aralık.
  • Sunuyu eşitle Etkinleştirilirse, ana görünüm sunum görünümünü kontrol etmek için kullanılabilir.
  • Sunum ekranı Sunu görünümünü görüntülemek için ekranın dizini.
  • Anahat görüntüsünü eşitle Etkinleştirilirse anahat görünümü, geçerli sayfa her değiştirildiğinde geçerli sayfaya işaret eden ilk girişi vurgulayacaktır.
  • Asgari kaydırma Etkinleştirilirse, hedef konum henüz görünür değilse, görüntüleme bağlantı noktası kaydırılır.
  • Yakınlaştırma etmeni Ölçek etmeninin çarpılma sayısını belirtir. Yakınlaştırma üzerine bölünmüş. Dışarı.
  • Vurgulama rengi Vurguların rengini belirler.
  • Vurgulama süresi Geçici vurgulama sürelerini belirler.
  • Ek açıklama rengi Program tarafından eklenen ek açıklamaların rengi, SVG renk anahtar kelimeleri veya onaltılık gösterim '#rrggbb' kullanılarak.
  • Kaynak düzenleyici Kaynakları düzenlemeye başlayan program. '%1' mutlak dosya yolu ile değiştirildi. '%2' sıra. '%3' yerine satırları geldi. Sütun numarası.

Grafik ayarları

  • Döşeme kullan Sayfalar, bellek kullanımını azaltmak için oluşturma ve önbelleğe alma işlemlerinden önce başlıklara bölünür.
  • Eski benek haritası sakla Etkinleştirilirse büyütme faktörünün değiştirilmesi üzerine, artan bellek kullanımı pahasına mevcut olana dek, pixmap benzerlerini çizmek için önbelleğe alınmış pixmap'ler kullanılacaktır.
  • Cihaz benek oranını kullan Etkinleştirilirse, mevcut en yüksek cihaz pikseli oranı fiziksel ve görüntü mantıksal çözünürlükte oluşturulur.
  • Sayfaları süsle Sayfaların artalandan ayrı olup olmadığını belirler.
  • Bağlantıları süsle Bağlantıların kırmızı çerçevelerle vurgulanıp vurgulanmadığını belirler.
  • Form alanlarını süsle Form alanlarının mavi çerçevelerle vurgulanıp vurgulanmadığını belirler.
  • Artalan rengi Artalanın rengini SVG renk anahtar kelimeleriyle veya onaltılık gösterimle '#rrggbb' kullanarak belirler.
  • Kağıt rengi SVG renk anahtar kelimeleri veya onaltılık gösterimi '#rrggbb' kullanarak sayfaların rengini belirler.
  • Sunum artalan rengi Sunum görünümünün artalan renginin hesaplamasındaki kağıt rengini geçersiz kılar ve SVG renk anahtar kelimeleriyle veya '#rrggbb' onaltılı gösterimini kullanarak tanımlanır.
  • Satır başına sayfalar 'çok sayfalı' sayfa düzeni kipindeki satır başına sayfa sayısı.
  • Sayfa aralığı Sayfalar arasında görüntülenen dikey ve yatay alanı belirler.
  • Küçük resim aralığı Küçük resimler arasında gösterilen dikey ve yatay alanı belirler.
  • Küçük resim boyutu Küçük resimlerin boyutunu belirler.
  • Önbellek boyutu Program, işlenen sayfaları bu sınırın üzerinde önbelleğe almaya çalışacak ve artan bellek kullanımı pahasına oluşturma hızı artacaktır.
  • Önbellekleme Yazılımı, görünür olmayan sayfaları, oluşturma hızını arttırarak artan önbellek kullanımı pahasına getirmeye çalışacaktır.
  • Önbellekleme mesafesi Geçerli satırın ötesinde satır sayısı ve geçerli satırdan önek getirilen satırların iki katı.
  • PDF ayarları
    • Keskinlik yumuşatma Performans kalitesini artırarak görüntü kalitesini artırır
    • Metin yumuşatma Metin görüntüleme kalitesini performans pahasına iyileştirir.
    • Metin keskinliği Bazı yazı tipleri için metin görüntüleme kalitesini artırabilir.
    • Üst Baskı Önizleme Etkinleştirilirse, bir kat daha üst üste bir mürekkep baskı önizlemesi görüntülenir.
    • İnce çizgi kipi İnce çizgiler çizmek için kullanılan iyileştirmeyi seçer.
    • Arka uç Sayfaları işlemek için kullanılan artalanı seçer.
  • PS ayarları
    • Grafik yumuşatma bitleri Grafikler için yumuşatma miktarını belirler.
    • Metin yumuşatma bitleri Metin için yumuşatma miktarını belirler.

Arayüz ayarları

  • Genişletilmiş arama platformu Etkinleştirilirse, varsayılan arama platformu, tüm sekmelerin sonuçlarını gösteren bir genel bakışla genişletilir. (Yeniden başlattıktan sonra etkili olur.)
  • Ek açıklama yer paylaşımı Etkinleştirilirse, bir sayfadaki tüm ek açıklamalar etkileşimli bir yer paylaşımı olarak görüntülenecektir. Aksi takdirde, her açıklama ayrı bir açılır pencere olarak ele alınacaktır.
  • Form alanı yer paylaşımı Etkinleştirilirse, sayfadaki tüm form alanları etkileşimli bir yer paylaşımı olarak görüntülenecektir. Aksi takdirde her form alanı ayrı bir açılır pencere olarak ele alınacaktır.
  • Sekme konumu Ana görünüm sekmelerinin hangi kenarında görüntüleneceğini tanımlar.
  • Sekme görünürlüğü İkiden az belge açıldığında sekmelerin görüntülenip görüntülenmeyeceğini belirler.
  • Sekmeleri yay Sekmelerin tüm sekme çubuğunda eşit olarak yayılıp yayılmayacağını belirler.
  • Geçerli sekmenin yanındaki yeni sekme Etkinleştirilirse, etkin sekmenin sağında yeni sekmeler açılır.
  • Son sekmeden çık Etkinleştirilirse, uygulama son sekme kapandıktan sonra çıkar.
  • Son kullanılan say "Yakın zamanda kullanılan parkur" etkinleştirildiyse, yakın zamanda kullanılan menüde listelenen dosya sayısını ayarlar. (Yeniden başlattıktan sonra etkili olur.)
  • Son kapatılanı say "Yakın bir yerde sakla" seçeneği etkinleştirilmişse, son kapatılan menüde listelenen sekmelerin sayısını ayarlar. (Yeniden başlattıktan sonra etkili olur.)
  • Dosya araç çubuğu Dosya araç çubuğunda hangi eylemlerin görüneceğini tanımlar. Kullanılabilir eylemler yeniSekmedeAç, açık, yenileme, kopyaKaydet, olarakKaydet, yazdırma ve ayırıcıdır. (Yeniden başlattıktan sonra etkili olur.)
  • Araç çubuğunu düzenle Düzenleme araç çubuğunda hangi eylemlerin görüneceğini tanımlar. Kullanılabilir işlemler Geçerli Sayfa, Önceki Sayfa, Sonraki Sayfa, İlk Sayfa, Son Sayfa, Sayfaya Atla, Geri Atla, İleri Atla, Bul, Pano Kipine Kopyala, Ek Açıklama Kipi ve ayırıcı ekleyin. (Yeniden başlattıktan sonra etkili olur.)
  • Araç çubuğunu görüntüle Görünüm araç çubuğunda hangi eylemlerin görünür olduğunu tanımlar. Kullanılabilir eylemler ölçek etmeni, yakınlaştır, uzaklaştır, sürekli kip, ikili sayfa kipi, ikili sayfa, kapak sayfası kipi, çoklu sayfa kipi, özgün boyut, sayfa genişlik kipine sığdır, sayfa boyut sığdır, sola döndür, sağa döndür, tam ekran , sunum ve ayırıcı. (Yeniden başlattıktan sonra etkili olur.)
  • Document context menu Defines which actions are visible in the document's context menu. Available actions are openCopyInNewTab, openCopyInNewWindow, openContainingFolder, moveToInstance, previousPage, nextPage, firstPage, lastPage, jumpToPage, jumpBackward, jumpForward, setFirstPage, findPrevious, findNext, cancelSearch and separator.
  • Tab context menu Defines which actions are visible in a tab's context menu. Available actions are openCopyInNewTab, openCopyInNewWindow, openContainingFolder, moveToInstance, copyFilePath, selectFilePath, closeAllTabs, closeAllTabsButThisOne, closeAllTabsToTheLeft, closeAllTabsToTheRight and separator.
  • Kaydırılabilir menüler Varsayılan biçemi geçersiz kılacak ve böylece kullanılabilir ekran alanından büyükse açılır menüler birden çok sütunda gösterilecek şekilde kaydırılacaktır. (Yeniden başlattıktan sonra etkili olur.)
  • Aranabilir menüler Sekmelerin ve yer imleri menülerinin varsayılan klavye gezinimini, sizin gibi bir arama mekanizması ile genişletir.
  • Araç ve menü çubuklarını tam ekranla değiştirme Tam ekran kipini değiştirirken aracın ve menü çubuklarının görünürlüğünü daima değiştirir.
  • Sayfa etiketini kullan Kullanılabilir olduğunda, belge tarafından sağlanan sayfa etiketinin sayfa numaraları yerine kullanılacağını belirler.
  • Sekme başlığı olarak belge başlığı Dosya adı yerine meta verilerden türetilmiş sekme başlığını belirler.
  • Pencere başlığında geçerli sayfa Etkinleştirilirse, geçerli sayfa ve etkin sekmedeki sayfanın sayfa sayısı pencere başlığında görüntülenir.
  • Pencere başlığında örnek adı Etkinleştirilirse ve geçerli örnek adı verilirse, adı pencere başlığında görüntülenir.
  • Geçerli küçük resmi vurgulayın Etkinleştirilirse, geçerli sayfa küçük resimler görünümünde vurgulanır.
  • Küçük resimleri sınırlandırın Bu seçenek etkinleştirilirse ve bir arama yapıldığında yalnızca arama teriminin bulunduğu sayfalar küçük resim görünümünde gösterilir.

Kısayol ayarları

Kısayol ayarları klavye kısayollarının kişisel tercihine ayarlanmasına izin verir. Kısayolları düzenlemek ve yeni kısayolu girmek için kısayolu çift tıklatarak değiştirilir. Her eylem, noktalı virgül ile ayrılmış bir liste girerek çeşitli kısayollara sahip olabilir. Tek harf olmayan anahtarların isimleri açıkça belirtilir (ör. "Alt", "Ctrl", "PgDown"), burada eşleşmeyle büyük/küçük harf duyarlı değildir. Kısayol değiştirici tuşlar içeriyorsa, tuşların adları artı işaretiyle birleştirilir ve değiştirici tuşlar önce listelenmelidir, ör. "Ctrl+A" veya "Ctrl ++".

Değiştirici ayarları

  • Yakınlaştır Ana görünümde fare tekerleğini kullanarak yakınlaştırma yapmak için klavye düzenleyicileri.
  • Döndür Ana görünüşte fare tekerleğini kullanarak döndürmek için klavye değiştiricileri.
  • Kaydır Ana görünümde fare tekerleğini kullanarak klavye değiştiricilerini yatay olarak kaydırma.
  • Panoya kopyala Bir sayfadaki metinleri veya resimleri panoya kopyalamak için klavye değiştiricileri.
  • Ek açıklama ekle Bir sayfaya ek açıklamalar eklemek için klavye değiştiricileri.
  • Seçime yakınlaştır Bir sayfada bir seçime basmak için klavye düzenleyicileri.
qpdfview-0.4.18/help/help_uk.html0000644000000000000000000014712713516127411015041 0ustar 00000000000000 Довідка

Довідка

Зміст

  1. Головне меню
    1. Файл
    2. Зміни
    3. Перегляд
    4. Вкладки
    5. Закладки
    6. Довідка
  2. Головна панель перегляду
  3. Допоміжні панелі
  4. Параметри
    1. Параметри поведінки
    2. Параметри графіки
    3. Параметри інтерфейсу
    4. Параметри клавіатурних скорочень
    5. Параметри модифікаторів

Вступ

qpdfview — програма для перегляду документів з використанням вкладок. У програмі використано бібліотеку Poppler для реалізації підтримки PDF, бібліотеку libspectre для реалізації підтримки PS, бібліотеку DjVuLibre для реалізації підтримки DjVu, бібліотеку CUPS для реалізації підтримки друку та набір бібліотек Qt для реалізації інтерфейсу.

Будь ласка, зверніться до сторінки підручника (man), щоб дізнатися більше про параметри командного рядка і файли налаштувань.

Головне меню

Файл

  • Відкрити... — відкриває діалогове вікно вибору файла, який слід відкрити у поточній вкладці. Якщо у вікні програми не відкрито жодної вкладки, файл буде відкрито у новій вкладці.
  • Відкрити у новій вкладці... — відкриває діалогове вікно вибору файлів, які слід відкрити у нових вкладках.
  • Останні відкриті — містить список останніх відкритих документів (якщо увімкнено у параметрах програми).
  • Оновити — перезавантажити файл, вміст якого показано у поточній вкладці.
  • Зберегти — зберігає анотації і вміст полів форм до файла, який показано на поточній вкладці.
  • Зберегти як... — відкрити діалогове вікно для збереження файла, показаного у поточній вкладці разом зі змінами у анотаціях та заповненими полями форм.
  • Зберегти копію... — відкриває діалогове вікно для зберігання незміненої копії файла, який показано на поточній вкладці.
  • Друкувати... — відкрити діалогове вікно для друку файла, вміст якого показано у поточній вкладці.
  • Вийти — закрити усі вкладки і завершити роботу програми.

Зміни

  • Наступна/Попередня/Перша/Остання сторінка — перейти до наступної, попередньої, першої чи останньої сторінки документа.
  • Перейти до сторінки... — відкрити діалогове вікно для введення номеру сторінки, яку слід показати у поточній вкладці.
  • Перейти назад/вперед — перейти назад або вперед журналом перегляду сторінок.
  • Пошук...: відкрити панель пошуку під головною панеллю. Пошук буде розпочато автоматично за дві секунди після останньої зміни у рядку пошуку. Також пошук можна розпочати вручну натисканням клавіші Enter. Якщо під час натискання клавіші Enter утримувати натисненою клавішу Shift, пошук буде виконано на усіх вкладках, а не лише на поточній. (Цю поведінку буде замінено на зворотну, якщо у параметрах програму буде увімкнено панель розширеного пошуку.)
  • Знайти попереднє/наступне — перейти до попереднього або наступного випадку використання у документі рядка, пошук якого виконується.
  • Скасувати пошук: скасувати поточний сеанс пошуку і закрити панель пошуку.
  • Копіювати до буфера — якщо позначено, програма зачекає, доки ви позначите область у документі, з якої слід скопіювати текст або зображення.
  • Додати коментар — якщо позначено цей пункт, програма зачекає, доки ви позначите у документі область, що якої слід додати анотацію або коментар.
  • Параметри... — відкрити діалогове вікно параметрів програми. За допомогою натискання кнопки з написом «Типові» можна повернутися до типових значень усіх параметрів на усіх вкладках. За допомогою натискання кнопки з написом «Типові на поточній вкладці» можна повернутися до типових значень параметрів лише для поточної вкладки.

Змінити номер поточної сторінки можна введенням номера бажаної сторінки до поля для редагування тексту на панелі інструментів редагування. Передати фокусування на поле можна за допомогою натискання комбінації клавіш Ctrl+K. Після введення значення слід натиснути клавішу Enter.

Перегляд

  • Неперервний перегляд — визначити, чи слід під час показу документа гортати сторінки неперервно без перестрибування між окремими сторінками.
  • Дві сторінки — визначити, чи слід використовувати у компонуванні сторінок два стовпчики.
  • Дві сторінки та обкладинка — визначити, чи слід використовувати у компонуванні сторінок два стовпчики з проміжком після сторінки обкладинки.
  • Декілька сторінок — визначити, чи слід показувати сторінки документа у декілька стовпців. Кількість показаних стовпців можна змінити за допомогою діалогового вікна параметрів роботи програми.
  • Справа ліворуч: визначає спосіб упорядковування у компонуваннях з декількома сторінками на рядок.
  • Збільшити: збільшити масштаб на 10 відсотків. Максимальним масштабом є масштаб у 5000 відсотків.
  • Зменшити: зменшити масштаб на 10 відсотків. Мінімальним масштабом є масштаб у 10 відсотків.
  • Початковий розмір — відновити масштабування у 100 відсотків.
  • За шириною — використати масштабування, за якого усі сторінки заповнюватимуть усю ширину головної панелі перегляду програми.
  • Сторінка цілком — використати масштабування, за якого усі сторінки заповнюватимуть усю ширину або висоту головної панелі перегляду програми.
  • Повернути ліворуч — повернути сторінки ліворуч або проти годинникової стрілки на 90 градусів.
  • Повернути праворуч — повернути сторінки праворуч або за годинниковою стрілкою на 90 градусів.
  • Інвертувати кольори — визначає, чи слід інвертувати кольори під час показу сторінок документів.
  • Перетворити на відтінки сірого: визначає, чи слід програмі перетворювати кольори на відтінки сірого під час приготування документа до показу.
  • Обрізати поля: увімкнути вилучення порожніх полів після обробки.
  • Компонування: увімкнути компонування обробленої сторінки з кольором паперу для коригування тла сканованих документів.
  • Панелі інструментів — у цьому меню наведено список усіх доступних панелей інструментів, за допомогою яких можна отримувати доступ до кнопок дій, якими користуються найчастіше.
  • Бічні панелі — у цьому меню міститься список усіх доступних бічних панелей, за допомогою яких програма показує допоміжну інформацію.
  • Шрифти... — відкрити діалогове вікно зі списком шрифтів, використаних у поточному документі.
  • На весь екран — вмикає або вимикає повноекранний режим роботи програми, тобто режим, у якому вікно програми максимізується, а декорації вікна приховуються.
  • Презентація... — переводить програму у режим презентації, вийти з якого можна за допомогою натискання клавіші F12 або Esc. Клавішами Home/End можна скористатися для того, щоб перейти до першої або останньої сторінок документа відповідно. Натисканням клавіші зі стрілкою праворуч, клавіші зі стрілкою вниз, пробілу та клавіші Page Down можна перейти до перегляду наступної сторінки. Натисканням клавіші зі стрілкою ліворуч, клавіші зі стрілкою вгору, клавіші Backspace та клавіші Page Up можна перейти до попередньої сторінки. Натисканням комбінації клавіш Ctrl+Enter можна перейти до сторінки, яку ви переглядали до останнього переходу сторінками документа.

Масштаб можна змінити до бажаного значення за допомогою текстового поля на панелі інструментів перегляду. Передати фокусування на поле можна за допомогою натискання комбінації клавіш Ctrl+L. Після введення значення слід натиснути клавішу Enter.

Вкладки

  • Попередня/Наступна вкладка — робить поточною попередню або наступну вкладку. Перехід вкладками виконується циклічно.
  • Закрити вкладку — закриває поточну вкладку.
  • Закрити всі вкладки — закриває усі вкладки.
  • Закрити усі вкладки, крім поточної — закрити усі вкладки, окрім поточної вкладки.
  • Останні закриті — містить список останніх закритих вкладок (якщо увімкнено у параметрах програми).

У цьому меню буде наведено список усіх вкладок. Зробити вкладку поточною можна шляхом натискання відповідного пункту у меню. Закрити вкладку можна клацанням середньою кнопкою миші на відповідному пункті меню. Перші дев’ять вкладок у списку також можна активувати одночасним натисканням клавіші Alt та клавіші номера вкладки (від 1 до 9).modifier and pressing keys one to nine.

Закладки

  • Попередня закладка — перейти до найближчої закладки, розташування якої передує поточній сторінці.
  • Наступна закладка — перейти до найближчої закладки, розташованої після поточної сторінки.
  • Додати закладку — додає закладку до поточного файла і сторінки.
  • Вилучити закладку — вилучає закладку для поточного файла і сторінки.
  • Вилучити усі закладки — вилучити з документа усі закладки.
  • Відкрити — відкриває відповідний файл у поточній вкладці. Якщо у вікні програми не відкрито жодної вкладки, файл буде відкрито у новій вкладці.
  • Відкрити у новій вкладці — відкрити відповідний файл у новій вкладці.
  • Перейти до сторінки — перейти до відповідної сторінки, якщо відповідний файл вже відкрито. Якщо файл не відкрито, його буде відкрито у новій вкладці.

Довідка

  • Зміст — показує цей документ.
  • Про програму — показує дані щодо версії програми.

Головна панель перегляду

За допомогою клавіш Backspace/пробіл можна перейти до попередньої/наступної сторінки. Натисканням клавіш Home/End можна перейти до першої/останньої сторінки документа. За допомогою клавіш зі стрілками та клавіш Page Up/Page Down можна гортати документ. За допомогою одночасного натискання клавіш Ctrl і Enter можна перейти до сторінки, яку було відкрито перед виконанням останньої дії з переходу документом.

За допомогою коліщатка миші можна гортати документ вгору і вниз. Якщо під час гортання утримувати натисненою клавішу ALT, гортання відбуватиметься праворуч-ліворуч. Утримуванням натиснутою клавіші CTRL можна перевести коліщатко у режим масштабування документа. Якщо утримувати натисненою клавішу SHIFT, гортанням коліщатка можна буде обертати документ. Клавіатурне керування можна змінити за допомогою діалогового вікна параметрів програми. Якщо ви натиснете і утримуватимете середню кнопку миші (коліщатко) і пересунете вказівник миші, ви зможете позначити область для масштабування.

Посилання позначаються червоними рамками (якщо позначення посилань увімкнено у параметрах програми). Клацанням лівою кнопкою миші можна перейти до пов’язаної з посиланням сторінки або відкрити адресу у типовій програмі для перегляду (якщо це увімкнено у параметрах програми). Клацанням середньою кнопкою миші на посиланні можна відкрити пов’язану з ним сторінку у новій вкладці. Якщо ви просто наведете вказівник миші на посилання, програма покаже панель з адресою, на яку вона посилається.

Поля форм буде позначено синіми рамками (якщо це увімкнено у параметрах програми). Після клацання лівою кнопкою миші на полі форми можна змінити вміст поля. Якщо ви наведете вказівник миші на поле форми, програма покаже назву поля на панелі підказки.

Код початкового документа може бути відкрито у редакторі коду за допомогою контекстного меню, у якому може міститися пункт переходу до відповідного вузла SyncTeX.

Щоб скопіювати фрагмент тексту або зображення, натисніть і утримуйте клавішу Shift, натисніть ліву кнопку миші і, утримуючи її, обведіть рамкою область, яку слід скопіювати. Щойно ви відпустите кнопку миші, програма покаже контекстне меню, за допомогою якого ви зможете скопіювати текст або зображення до буфера обміну даними.

Щоб додати анотацію, натисніть і утримуйте клавішу Ctrl, натисніть і утримуйте ліву кнопку миші, перетягніть вказівник миші, щоб окреслити область, до якої буде додано анотацію. Щойно кнопку миші буде відпущено, програма відкриє контекстне меню для вибору між додаванням тексту та позначенням кольором. Клацанням лівою кнопкою миші можна перейти до редагування анотацій. Клацанням правою кнопкою миші можна вилучити анотацію. (Для додавання або вилучення анотацій вам слід встановити версію 0.20.1 або новішу бібліотеки Poppler.) Після наведення вказівника миші на анотацію, програма покаже у контекстному вікні вміст анотації.

Щоб масштабувати область перегляду за позначеним, натисніть і утримуйте клавіші Shift та Ctrl, натисніть і утримуйте ліву кнопку миші, перетягніть вказівник миші так, щоб окреслити область, за якою буде виконано масштабування.

Увімкнути або вимкнути показ панелі інструментів та смужки меню можна за допомогою придатних до налаштовування клавіатурних скорочень. Типовими значеннями цих скорочень є «Shift+Alt+T» та «Shift+Alt+M».

Допоміжні панелі

Перегляд змісту — панель із оглядом вмісту документа. Наведенням вказівника миші на пункт змісту з наступним клацанням лівою кнопкою миші можна перейти до відповідної сторінки на основній панелі перегляду. Контекстним меню можна скористатися для розгортання або згортання усіх підпунктів поточного пункту.

Крім того, навігацію панеллю змісту можна здійснювати за допомогою клавіатури або коліщатка миші. Якщо натиснути і утримувати клавішу Shift, одночасно натискаючи клавіші зі стрілками вгору або вниз, програма гортатиме текст документа. Одночасним натисканням клавіші Shift та клавіш зі стрілками ліворуч або праворуч можна згортати або розгортати один рівень підпунктів поточного пункту у змісті. За допомогою одночасного натискання клавіші Ctrl та клавіш зі стрілками ліворуч або праворуч можна повністю згорнути або розгорнути увесь підлеглий список поточного пункту. Утримуючи натисненою клавішу Shift і прокручуючи коліщатко миші можна змінити позначений пункт змісту. Утриманням натисненою клавіш Ctrl з одночасним прокручуванням коліщатка миші можна розгортати або згортати список підпунктів позначеного пункту.

На панелі перегляду властивостей буде показано додаткові дані щодо документа.

На панелі мініатюр буде показано зменшені версії сторінок документа. Наведенням вказівника на пункт сторінки із наступним клацанням лівою кнопкою миші можна перейти до перегляду відповідної сторінки у документі.

На панелі перегляду закладок буде показано закладки, пов’язані із документом у поточній вкладці. За допомогою контекстного меню панелі можна перейти до попередньої або наступної закладки чи додати закладки. Крім того, у контекстному меню окремих закладок передбачено пункти для редагування та вилучення закладок.

Якщо відповідний пункт позначено у параметрах роботи програми, на панелі розширеного пошуку буде показано огляд результатів усіх пошуків на усіх вкладках. Також буде показано контекст знайденого рядка у тексті (сам рядок буде позначено). Наведенням вказівника миші на пункт результатів з наступним клацанням лівою кнопкою миші можна перейти до відповідної вкладки і позиції тексту у документі.

Параметри

Параметри поведінки

  • Відкривати URL — визначає, чи слід програмі відкривати посилання з адресами URL у типовій програмі для перегляду відповідних даних.
  • Автооновлення — визначає, чи слід автоматично перезавантажувати документи, якщо до відповідних файлів було внесено зміни.
  • Пам’ятати останні відкриті — якщо буде позначено цей пункт, доступним стане меню останніх відкритих документів. Кількість пунктів у меню можна визначити за допомогою параметра «Кількість останніх відкритих». Зміни набудуть чинності після перезапуску програми.
  • Пам’ятати останні закриті: якщо буде позначено цей пункт, програма показуватиме меню зі списком нещодавно закритих документів. Кількість документів у списку визначатиметься значенням параметра «Кількість записів останніх закритих документів». Збереження вмісту вкладок може призвести до значного збільшення споживання пам’яті програмою. Значення параметра буде застосовано лише після перезавантаження програми.
  • Відновлювати вкладки — якщо позначено цей пункт, програма зберігатиме дані щодо вкладок та їхніх властивостей і відновлюватиме ці дані під час запуску.
  • Відновлювати закладки — якщо позначено цей пункт, програма зберігатиме дані щодо закладок і відновлюватиме ці дані під час запуску.
  • Відновлювати налаштування окремих документів — якщо буде позначено цей пункт, програма зберігатиме і відновлюватиме параметри показу окремих файлів під час відкриття і закриття вкладок.
  • Інтервал між збереженнями бази даних: інтервал між послідовними сеансами збереження даних щодо вкладок, закладок та параметрів показу файлів до бази даних.
  • Синхронна презентація — якщо буде позначено цей пункт, головною панеллю перегляду можна буде користуватися для керування показом презентації.
  • Екран презентації — за допомогою цього пункту можна визначити індекс екрана, на якому слід показувати презентацію.
  • Синхронізувати перегляд ескізу — якщо позначено цей пункт, на панелі ескізів під час кожної зміни сторінок буде підсвічено перший запис, що вказуватиме на поточну сторінку.
  • Мінімальне гортання: якщо буде позначено цей пункт, поле перегляду буде пересунуто, лише якщо позицію призначення не видно.
  • Коефіцієнт масштабування: число, на яке буде помножено масштаб під час збільшення або поділено масштаб під час зменшення.
  • Колір підсвічування — цей пункт визначає колір підсвічування.
  • Тривалість підсвічування — за допомогою цього пункту можна визначити тривалість тимчасового підсвічування.
  • Колі анотацій — цей пункт визначає колір анотацій, які додаватимуться програмою. Колір можна визначити за допомогою ключового слова SVG або шістнадцяткового позначення у форматі «#ччззсс».
  • Редактор вихідного файла — програма, яку буде запущено для редагування файла початкових даних. «%1» замінюється абсолютним шляхом до файла. «%2» та «%3» замінюються номером рядка та стовпчика відповідно.

Параметри графіки

  • Мозаїчність: сторінки буде поділено між елементами мозаїки панелей показу до показу документа на екрані, буде використано кешування для зменшення споживання пам’яті.
  • Зберігати застарілі растрові зображення — якщо буде позначено цей пункт, програма використовуватиме кешовані растрові зображення для малювання проміжних зображень сторінок під час зміни масштабу за рахунок збільшення споживання пам’яті.
  • Використовувати співвідношення у пікселях пристрою — якщо буде позначено цей пункт, програма використовуватиме для відтворення на фізичних носіях і показу на екрані найвище з доступних значень роздільної здатності відповідного пристрою.
  • Рамка навколо сторінки — цей пункт визначає, чи слід показувати навколо сторінки рамку для відокремлення її від тла.
  • Виокремлювати посилання — за допомогою цього пункту можна визначити, чи слід програмі виокремлювати посилання червоними рамками.
  • Виокремлювати поля форм — за допомогою цього пункту можна визначити, чи слід програмі виокремлювати поля форм синіми рамками.
  • Колір тла — за допомогою цього пункту можна визначити колір тла. Колір тла можна задати ключовим словом SVG або у форматі шістнадцяткового числа «#ччззсс».
  • Колір паперу — за допомогою цього пункту можна визначити колір «паперу» сторінок. Колір можна задати ключовим словом SVG або у форматі шістнадцяткового числа «#ччззсс».
  • Колір тла презентації — цей пункт перевизначає колір паперу під час визначення кольору тла презентації. Колір можна задати ключовим словом SVG або у форматі шістнадцяткового числа «#ччззсс».
  • Сторінок у ряд — визначає кількість сторінок у ряд у режимі одночасного показу декількох сторінок.
  • Між сторінками — визначає вертикальний і горизонтальний проміжок між сторінками під час показу документа.
  • Між мініатюрами — визначає вертикальний і горизонтальний проміжок між мініатюрами на панелі показу ескізів сторінок.
  • Розмір мініатюр — цей пункт визначає розмір мініатюр на панелі ескізів.
  • Розмір кешу — програма намагатиметься кешувати зображення сторінок у цих межах, збільшуючи швидкість показу за рахунок збільшення об’єму використаної пам’яті.
  • Передзавантаження — якщо буде позначено цей пункт, програма намагатиметься обробити для показу дані сторінок, які ще не показано, збільшуючи швидкість показу за рахунок збільшення об’єму використаного кешу.
  • Довжина передзавантаження — цей пункт визначає кількість рядів сторінок за поточним рядом і подвоєну кількість рядів перед поточним рядом, які попередньо завантажуватимуться програмою.
  • Параметри PDF
    • Згладжування — покращує якість показу за рахунок певної втрати швидкодії програми.
    • Згладжування тексту — покращує якість показу тексту за рахунок певної втрати швидкодії.
    • Гінтінґ тексту — може покращити якість показу графіки для певних шрифтів.
    • Перегляд наддруку — якщо буде позначено цей пункт, програма показуватиме попередній перегляд результатів друку шарами чорнил різного кольору.
    • Режим тонких ліній надає змогу вибрати спосіб оптимізації під час показу тонких ліній.
    • Модуль обробки надає змогу вибрати модуль обробки і показу сторінок.
  • Параметри PS
    • Бітова маска згладжування графіки — цей пункт визначає рівень згладжування графічних зображень.
    • Бітова маска згладжування тексту — цей пункт визначає рівень згладжування тексту.

Параметри інтерфейсу

  • Розширена панель пошуку: якщо позначено цей пункт, типову панель пошуку буде розширено оглядом результатів пошуку на усіх вкладках. Зміна параметра набуде чинності після перезапуску програми.
  • Накладка анотації: якщо позначено цей пункт, усі анотації на сторінці буде показано як інтерактивні накладки. Якщо пункт не буде позначено, програма вважатиме кожну анотацію окремим контекстним вікном.
  • Накладка поля форми: якщо позначено цей пункт, усі поля форм на сторінці буде показано як інтерактивну накладку. Якщо пункт позначено не буде, кожне з полів форм вважатиметься окремим контекстним вікном.
  • Розташування вкладок — визначає, на якому боці головної панелі перегляду буде показано вкладки.
  • Показувати вкладки — визначає, чи буде показано вкладки, якщо відкрито менше за два документи.
  • Розтягнути вкладки: визначає, чи слід рівномірно розтягувати вкладки вздовж усієї панелі вкладок.
  • Нова вкладка поруч з поточною — якщо позначено цей пункт, нові вкладки відкриватимуться праворуч від активної вкладки.
  • Вийти після останньої вкладки: якщо позначено, програма завершуватиме роботу після закриття останньої вкладки.
  • Кількість останніх відкритих — визначає кількість записів у списку останніх відкритих документів, якщо позначено пункт «Пам’ятати останні відкриті». (Зміни буде задіяно після перезапуску програми.)
  • Кількість останніх закритих — визначає кількість записів у списку останніх закритих документів, якщо позначено пункт «Пам’ятати останні закриті». (Зміни буде задіяно після перезапуску програми.)
  • Панель «Файл» — цей пункт визначає, які кнопки буде показано на панелі інструментів «Файл». Можливі кнопки: openInNewTab, open, refresh, saveCopy, saveAs, print та separator. Зміни набудуть чинності після перезапуску програми.
  • Панель «Редагування» — цей пункт визначає перелік кнопок, які буде показано на панелі інструментів редагування. Можливі кнопки: currentPage, previousPage, nextPage, firstPage, lastPage, jumpToPage, jumpBackward, jumpForward, search, copyToClipboardMode, addAnnotationMode та separator. Зміни набудуть чинності після перезапуску програми.
  • Панель «Перегляд» — визначає, які пункти дій буде показано на панелі перегляду. Можна використовувати такі пункти: scaleFactor, zoomIn, zoomOut, continuousMode, twoPagesMode, twoPagesWithCoverPageMode, multiplePagesMode, originalSize, fitToPageWidthMode, fitToPageSizeMode, rotateLeft, rotateRight, fullscreen, presentation і separator. (Зміни буде задіяно після перезапуску програми.)
  • Контекстне меню документа — визначає, які пункти дій будуть видимими у контекстному меню документа. Доступними пунктами дій є openCopyInNewTab, openCopyInNewWindow, openContainingFolder, moveToInstance, previousPage, nextPage, firstPage, lastPage, jumpToPage, jumpBackward, jumpForward, setFirstPage, findPrevious, findNext, cancelSearch і роздільник.
  • Контекстне меню вкладки — визначає, які пункти дій будуть видимими у контекстному меню вкладки. Доступними пунктами дій є openCopyInNewTab, openCopyInNewWindow, openContainingFolder, moveToInstance, copyFilePath, selectFilePath, closeAllTabs, closeAllTabsButThisOne, closeAllTabsToTheLeft, closeAllTabsToTheRight і роздільник.
  • Меню з гортанням: перевизначити типовий стиль, щоб спадні меню горталися, а не показувалися у декілька стовпчиків, якщо вони не вміщаються на екрані. (Потребує перезапуску програми.)
  • Придатні до пошуку меню: розширює типову навігацію вкладками та закладками за допомогою клавіатурних скорочень можливістю шукати пункти простим введенням назв із клавіатури.
  • Вимкнути панелі у повноекранному режимі: завжди вимикати показ панелі інструментів та смужки меню у повноекранному режимі і вмикати показ після виходу з цього режиму.
  • Використовувати мітку сторінки: визначає, чи буде використано визначену у документі мітку сторінки, якщо таку визначено, замість номеру сторінки.
  • Назва документа як назва вкладки: визначає, чи слід визначати заголовок вкладки на основі метаданих, а не назви файла.
  • Поточна сторінка у заголовку вікна — якщо позначено цей пункт, у заголовку вікна програми буде показано дані щодо поточної сторінки і кількості сторінок документа у активній вкладці програми.
  • Назва екземпляра у заголовку вікна: якщо буде позначено цей пункт і поточний запущений екземпляр програми матиме якусь назву, цю назву буде показано у заголовку вікна програми.
  • Підсвічування поточної мініатюри — якщо позначено цей пункт, програма підсвічуватиме поточну сторінку на панелі мініатюр.
  • Обмежити мініатюри результатами — якщо позначено цей пункт і виконується пошук, програма показуватиме на панелі мініатюр лише сторінки, де було знайдено рядок пошуку.

Параметри скорочень

За допомогою вкладки параметрів клавіатурних скорочень можна скоригувати перелік клавіатурних скорочень відповідно до ваших уподобань. Щоб змінити скорочення для якоїсь з дій, двічі клацніть лівою кнопкою миші на відповідному пункті і введіть нове скорочення. Для кожної з дій можна вказати декілька скорочень, відокремлених крапкою з комою. Назви клавіш, які складаються з декількох літер, слід вказувати явним чином (наприклад, «Alt», «Ctrl», «PgDown»). Відповідність клавіш встановлюється без врахування регістру. Якщо клавіатурне скорочення містить клавіші-модифікатори, слід відокремлювати клавішу-модифікатор від решти клавіш скорочення символом «+». Клавішу-модифікатор має бути вказано першою. Приклади: «Ctrl+A» або «Ctrl++».

Параметри модифікаторів

  • Масштабування — клавіша-модифікатор для масштабування за допомогою коліщатка миші у головній панелі перегляду.
  • Обертання — клавіша-модифікатор для обертання за допомогою коліщатка миші у головній панелі перегляду.
  • Гортання — клавіша-модифікатор для горизонтального гортання за допомогою коліщатка миші у головній панелі перегляду.
  • Копіювати до буфера — клавіша-модифікатор для копіювання текстових фрагментів та зображень зі сторінки до буфера обміну даними системи.
  • Додавання анотації — клавіша-модифікатор для додавання анотацій на сторінку.
  • Масштабувати за позначеним: клавіші, які слід натиснути для масштабування області перегляду за позначеним фрагментом сторінки.
qpdfview-0.4.18/help/help_vi.html0000644000000000000000000006141113516127411015027 0ustar 00000000000000 Help

Help

Table of contents

  1. Main menu
    1. File
    2. Edit
    3. View
    4. Tabs
    5. Bookmarks
    6. Help
  2. Main view
  3. Auxiliary views
  4. Settings
    1. Behavior settings
    2. Graphics settings
    3. Interface settings
    4. Shortcut settings
    5. Modifier settings

Introduction

qpdfview is a tabbed document viewer. It uses Poppler for PDF support, libspectre for PS support, DjVuLibre for DjVu support, CUPS for printing support and the Qt toolkit for its interface.

Please refer to the manual page for information on command-line options and configuration files.

Main menu

File

  • Open... Opens a dialog to choose a file to open in the current tab. If there is no tab, the file is opened in a new tab.
  • Open in new tab... Opens a dialog to choose files to open in new tabs.
  • Recently used Contains a list of the most recently used files (if enabled in the settings).
  • Refresh Reloads the file displayed in the current tab.
  • Save Saves changes to annotations and form fields to the file displayed in the current tab.
  • Save as... Opens a dialog to save the file displayed in the current tab including changes to annotations and form fields.
  • Save copy... Opens a dialog to save an umodified copy of the file displayed in the current tab.
  • Print... Opens a dialog to print the file displayed in the current tab.
  • Exit Closes all tabs and ends the program.

Edit

  • Next/Previous/First/Last page Skips to the next/previous/first/last page of the document.
  • Jump to page... Opens a dialog to enter a page to display in the current tab.
  • Jump backward/forward Jumps backward/forward in the history of displayed page.
  • Search... Opens the search dock below the main view. The search automatically starts two seconds after the last change of the search term or is manually started by pressing the return key. If the Shift modifier is held when the return key is pressed, the search starts in all tabs instead of just the current tab. (This effect is reversed if the extended search dock is enabled in the settings.)
  • Find previous/next Jumps to the previous/next occurrence of the search term in the document.
  • Cancel search Cancels the currently running search and closes the search dock.
  • Copy to clipboard If checked, the program will wait for a frame to be dragged to copy texts or images.
  • Add annotation If checked, the program will wait for a frame to be dragged to add annotations.
  • Settings... Opens the settings dialog. The button labeled 'Defaults' will revert all settings on all tabs to their default values. The button labeled 'Defaults on current tab' will revert only the settings on the current tab to their default values.

The current page can be changed by entering the desired page into the text field in the edit tool bar, which can be focused using Ctrl+K, and pressing the return key.

View

  • Continuous Determines whether all rows of the page layout are visible at once.
  • Two pages Determines whether the page layout uses two columns.
  • Two pages with cover page Determines whether the page layout uses two columns with a break after the cover page.
  • Multiple pages Determines whether the page layout uses multiple columns. The number of columns can be changed in the settings dialog.
  • Right to left Determines how pages are arranged in layouts with multiple pages per row.
  • Zoom in Increases the scale factor by 10 percent. The maximum scale factor is 5000 percent.
  • Zoom out Decreases the scale factor by 10 percent. The minimum scale factor is 10 percent.
  • Original size Resets the scale factor to 100 percent.
  • Fit to page width Determines the scale factor such that all pages fully fit into the main view horizontally.
  • Fit to page size Determines the scale factor such that all pages fully fit into the main view horizontally and vertically.
  • Rotate left Rotates the pages left/counterclockwise by 90 degrees.
  • Rotate right Rotates the pages right/clockwise by 90 degrees.
  • Invert colors Determines whether pages are rendered with inverted colors.
  • Convert to grayscale Determines whether pages are converted to grayscale after rendering.
  • Trim margins Enables the removal of empty page margins after rendering.
  • Composition Enables the composition of the rendered page with the paper color to adjust the background of scanned documents.
  • Tool bars This menu contains a list of available tool bars for accessing frequently used actions.
  • Docks This menu contains a list of available docks for displaying supplementary information.
  • Fonts... Opens a dialog listing the fonts used in the document.
  • Fullscreen Toggles the fullscreen mode, i.e. the window is shown maximized and without decoration.
  • Presentation... Enters presentation mode which can be left by pressing F12 or escape. The home/end key is used to display the first/last page. Arrow keys right and down, space and the page down key jump to the next page. Arrow keys left and up, backspace and the page up key jump to the previous page. Pressing control and return jumps back to the page before the last jump.

The scale factor can be changed by entering the desired percentage into the text field in the view tool bar, which can be focused using Ctrl+L, and pressing the return key.

Tabs

  • Previous/Next tab Makes the previous/next tab the current tab. Cycles to the last/first tab if the first/last tab is the current tab.
  • Close tab Closes the current tab.
  • Close all tabs Closes all tabs.
  • Close all tabs but current tab Closes all tabs except for the current tab.
  • Recently closed Contains a list of the most recently closed tabs (if enabled in the settings).

This menu contains a list of all tabs which can be made the current tab by clicking on the corresponding menu item. Tabs can also be closed by middle-clicking. The first nine tabs can also be activated by holding the Alt modifier and pressing keys one to nine.

Bookmarks

  • Previous bookmark Jumps to the closest bookmark before the current page.
  • Next bookmark Jumps to the closest bookmark after the current page.
  • Add bookmark Adds a bookmark for the current file and page.
  • Remove bookmark Removes the bookmark for the current file and page.
  • Remove all bookmarks Removes all bookmarks.
  • Open Opens the corresponding file in the current tab. If there is no tab, the file is opened in a new tab.
  • Open in new tab Opens the corresponding file in a new tab.
  • Jump to page Jumps to the corresponding page if the corresponding file is already open. Otherwise the corresponding file is opened in a new tab.

Help

  • Contents Displays this document.
  • About Displays the program version.

Main view

The backspace/space key skips to the previous/next page. The home/end key skips to the first/last page. The arrow, page up and page down keys scroll the viewport. Pressing control and return jumps to the page before the last jump.

Using the mouse wheel scrolls up and down. Holding ALT while using the mouse wheel scrolls left and right. Holding CTRL while using the mouse wheel scales the document. Holding SHIFT while using the mouse wheel rotates the document. (Keyboard modifiers can be changed in the settings dialog.) Click and hold the middle mouse button to select a rectangle to zoom to.

Links are highlighted by red frames (if enabled in the settings). Left-click on a link to show the linked page or open the linked URL in the default browser (if enabled in the settings). Middle-click on a link to show the linked page in a new tab. Hovering over a link displays its destination as a tool tip.

Form fields are highlighted by blue frames (if enabled in the settings). Left-click on a form field to edit its contents. Hovering over a form field displays its name as a tool tip.

The source of a position in the document can be opened in the source editor using the context menu which optionally contains an item for the first matching SyncTeX node.

To copy texts or images, hold SHIFT, click and hold the left mouse button to drag a frame around the area to copy. Once the mouse button is released, a pop-up menu is displayed to select whether to copy texts or images into the clipboard.

To add annotations, hold CTRL, click and hold the left mouse button to drag a frame around the region to annotate. Once the mouse button is released, a pop-up menu is displayed to select whether to add text or highlight annotations. Left-click to edit annotations. Right-click to remove annotations. (Adding and removing annotations requires version 0.20.1 or higher of the Poppler library.) Hovering over an annotation displays its contents as a tool tip.

To zoom to a selection, hold SHIFT and CTRL, click and hold the left mouse button to drag a frame around region to zoom into.

The visibility of the tool and menu bars can be toggled using configurable keyboard shortcuts whose default values are "Shift+Alt+T" and "Shift+Alt+M".

Auxiliary views

The outline view displays an overview of the contents of the document. A left click on an entry jumps to the respective page in the main view. The context menu can be used to expand/collapse all items below the selected item.

The outline view can also be navigated using the keyboard and the mouse wheel. Holding Shift and using the Up/Down keys will scroll the view. Holding Shift and using the Left/Right keys will collapse/expand one level of items below the selected item. Holding Control and using the Left/Right keys will completely collapse/expand the selected item and its children. Holding Shift and using the mousel wheel will change the selected item. Holding Control and using the mouse wheel will expand/collapse the selected item.

The properties view displays additional information contained in the document.

The thumbnails view displays smaller versions of the pages of the document. A left click on an entry jumps to the respective page in the main view.

The bookmarks view shows the bookmarks related to the document displayed in the current tab. The context menu contains entries to jump to the previous/next boookmark or to add bookmarks. The context menu of each entry also contains entries to edit and delete bookmarks.

If enabled in the settings, the extended search dock shows an overview containing the results of all searches being performed in all tabs. It also shows the text surrounding a result with the search term being emphasized. Clicking on a result opens the corresponding tab and jumps to its position.

Settings

Behavior settings

  • Open URL Determines whether links to URL are opened in the default browser.
  • Auto-refresh Determines whether files are automatically reloaded if changed on disk.
  • Track recently used If enabled, a recently used menu is available and lists as many recently used files as set in the "Recently used count" option. (Effective after restart.)
  • Keep recently closed If enabled, a recently closed menu is available and lists as many recently closed tabs as set in the "Recently closed count" option. Keeping the tabs available could increase memory usage considerably. (Effective after restart.)
  • Restore tabs If enabled, tabs and their properties are saved on ending the program and restored on restart.
  • Restore bookmarks If enabled, bookmarks are saved on ending the program and restored on restart.
  • Restore per-file settings If enabled, per-file settings are saved/restored on opening/closing tabs.
  • Save database interval The interval after which tabs, bookmarks or per-file settings are saved to the database.
  • Synchronize presentation If enabled, the main view can be used to control the presentation view.
  • Presentation screen The index of the screen to display the presentation view on.
  • Synchronize outline view If enabled, the outline view will highlight the first entry pointing to the current page whenever the current page changes.
  • Minimal scrolling If enabled, the view port will only be scrolled if the target position is not yet visible.
  • Zoom factor The number by which the scale factor is multiplied resp. divided upon zooming in resp. out.
  • Highlight color Determines the color of highlights.
  • Highlight duration Determines the duration of temporary highlights.
  • Annotation color The color of annotations added by the program using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Source editor The program which is started to edit sources. '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number.

Graphics settings

  • Use tiling Pages will be divided into tiles before rendering and caching to reduce memory usage.
  • Keep obsolete pixmaps If enabled, then upon change of the zoom factor, cached pixmaps will be used to draw approximations of final pixmaps until these are available at the cost of increased memory usage.
  • Use device pixel ratio If enabled, the highest available device pixel ratio is used to render at physical and display at logical resolution.
  • Decorate pages Determines whether pages are set apart from the background.
  • Decorate links Determines whether links are highlighted by red frames.
  • Decorate form fields Determines whether form fields are highlighted by blue frames.
  • Background color Determines the color of the background using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Paper color Determines the color of pages using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Presentation background color Overrides the paper color in the computation of the background color of the presentation view and is defined using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Pages per row Number of pages per row in the 'multiple pages' layout mode.
  • Page spacing Determines both vertical and horizontal space displayed between pages.
  • Thumbnail spacing Determines both vertical and horizontal space displayed between thumbnails.
  • Thumbnail size Determines the size of the thumbnails.
  • Cache size The program will try to cache rendered pages within this limit increasing rendering speed at the cost of increased memory usage.
  • Prefetch The program will try to render pages that are not yet visible increasing rendering speed at the cost of increased cache usage.
  • Prefetch distance The number of rows beyond the current row and twice the number of rows before the current row that are prefetched.
  • PDF settings
    • Antialiasing Improves display quality at the cost of performance
    • Text antialiasing Improves text display quality at the cost of performance
    • Text hinting May improve text display quality for certain fonts.
    • Overprint preview If enabled, a preview of printing one layer of ink on top of another is displayed.
    • Thin line mode Chooses the optimization used to draw thin lines.
    • Backend Chooses the backend used to render pages.
  • PS settings
    • Graphics antialias bits Determines the amount of antialiasing for graphics.
    • Text antialias bits Determines the amount of antialiasing for text.

Interface settings

  • Extended search dock If enabled, the default search dock is extended by an overview showing the results of all tabs. (Effective after restart.)
  • Annotation overlay If enabled, all annotations on a page will be displayed as an interactive overlay. Otherwise each annotation will be handled as a separate pop-up window.
  • Form field overlay If enabled, all form fields on a page will be displayed as an interactive overlay. Otherwise each form field will be handled as a separate pop-up window.
  • Tab position Defines at which edge of the main view tabs will be displayed.
  • Tab visibility Determines whether tabs will be displayed if less than two documents are opened.
  • Spread tabs Determines if tabs will be spread out evenly over the whole tab bar.
  • New tab next to current tab If enabled, new tabs are opened to the right of the active tab.
  • Exit after last tab If enabled, the application exits after the last tab is closed.
  • Recently used count Sets the number of files that are listed in the recently used menu, if "Track recently used" is enabled. (Effective after restart.)
  • Recently closed count Sets the number of tabs that are listed in the recently closed menu, if "Keep recently closed" is enabled. (Effective after restart.)
  • File tool bar Defines which actions are visible in the file tool bar. Available actions are openInNewTab, open, refresh, saveCopy, saveAs, print and separator. (Effective after restart.)
  • Edit tool bar Defines which actions are visible in the edit tool bar. Available actions are currentPage, previousPage, nextPage, firstPage, lastPage, jumpToPage, jumpBackward, jumpForward, search, copyToClipboardMode, addAnnotationMode and separator. (Effective after restart.)
  • View tool bar Defines which actions are visible in the view tool bar. Available actions are scaleFactor, zoomIn, zoomOut, continuousMode, twoPagesMode, twoPagesWithCoverPageMode, multiplePagesMode, originalSize, fitToPageWidthMode, fitToPageSizeMode, rotateLeft, rotateRight, fullscreen, presentation and separator. (Effective after restart.)
  • Document context menu Defines which actions are visible in the document's context menu. Available actions are openCopyInNewTab, openCopyInNewWindow, openContainingFolder, moveToInstance, previousPage, nextPage, firstPage, lastPage, jumpToPage, jumpBackward, jumpForward, setFirstPage, findPrevious, findNext, cancelSearch and separator.
  • Tab context menu Defines which actions are visible in a tab's context menu. Available actions are openCopyInNewTab, openCopyInNewWindow, openContainingFolder, moveToInstance, copyFilePath, selectFilePath, closeAllTabs, closeAllTabsButThisOne, closeAllTabsToTheLeft, closeAllTabsToTheRight and separator.
  • Scrollable menus Will override the default style so that pop-up menus scroll instead being laid-out in mutliple columns if they are larger than the available screen space. (Effective after restart.)
  • Searchable menus Extends the default keyboard navigation of the tabs and bookmarks menus by a search-as-you-type mechanism.
  • Toggle tool and menu bars with fullscreen Always toggles the visibility of the tool and menu bars when toggling fullscreen mode.
  • Use page label Determines if document-supplied page label will be used instead of page numbers when available.
  • Document title as tab title Determines if the tab title as derived from the meta-data instead of the file name.
  • Current page in window title If enabled, the current page and number of pages of the document in the active tab are displayed in the window title.
  • Instance name in window title If enabled and the current instance is named, its name is displayed in the window title.
  • Highlight current thumbnail If enabled, the current page is highlighted in the thumbnails view.
  • Limit thumbnails to results If this option is enabled and a search is conducted, only the pages where the search term is found are displayed in the thumbnails view.

Shortcut settings

The shortcut settings allows the adjustment of keyboard shortcuts to personal preference. Shortcuts are changed by double-clicking on the shortcut to edit it and entering the new shortcut. Each action can have several shortcuts by entering a semicolon-separated list of them. Names of keys that are not single letters are written out explicitly (e.g. "Alt", "Ctrl", "PgDown"), where the matching is not case sensitive. If the shortcut contains modifier keys, the names of the keys are joined by a plus sign and modifier keys must be listed first, e.g. "Ctrl+A" or "Ctrl++".

Modifier settings

  • Zoom The keyboard modifiers to zoom using the mouse wheel in the main view.
  • Rotate The keyboard modifiers to rotate using the mouse wheel in the main view.
  • Scroll The keyboard modifiers to scroll horizontally using the mouse wheel in the main view.
  • Copy to clipboard The keyboard modifiers to copy texts or images from a page to the clipboard.
  • Add annotation The keyboard modifiers to add annotations to a page.
  • Zoom to selection The keyboard modifiers to zoom to a slection on a page.
qpdfview-0.4.18/help/help_zh_CN.html0000644000000000000000000006147013516127411015417 0ustar 00000000000000 帮助

帮助

目录

  1. 主菜单
    1. 文件
    2. 编辑
    3. 视图
    4. 标签页
    5. 书签
    6. 帮助
  2. 主视图
  3. Auxiliary views
  4. 设置
    1. Behavior settings
    2. Graphics settings
    3. Interface settings
    4. Shortcut settings
    5. Modifier settings

简介

qpdfview 是一个标签式文档查看器。它使用 Poppler 来提供 PDF 支持、使用 libspecture 来提供 PS 支持、使用 DjVuLibre 提供 DjVu 支持、使用 CUPS 提供打印支持并使用 Qt 工具箱编写其用户界面。

Please refer to the manual page for information on command-line options and configuration files.

主菜单

File

  • Open... Opens a dialog to choose a file to open in the current tab. If there is no tab, the file is opened in a new tab.
  • Open in new tab... Opens a dialog to choose files to open in new tabs.
  • Recently used Contains a list of the most recently used files (if enabled in the settings).
  • Refresh Reloads the file displayed in the current tab.
  • Save Saves changes to annotations and form fields to the file displayed in the current tab.
  • Save as... Opens a dialog to save the file displayed in the current tab including changes to annotations and form fields.
  • Save copy... Opens a dialog to save an umodified copy of the file displayed in the current tab.
  • Print... Opens a dialog to print the file displayed in the current tab.
  • Exit Closes all tabs and ends the program.

Edit

  • Next/Previous/First/Last page Skips to the next/previous/first/last page of the document.
  • Jump to page... Opens a dialog to enter a page to display in the current tab.
  • Jump backward/forward Jumps backward/forward in the history of displayed page.
  • Search... Opens the search dock below the main view. The search automatically starts two seconds after the last change of the search term or is manually started by pressing the return key. If the Shift modifier is held when the return key is pressed, the search starts in all tabs instead of just the current tab. (This effect is reversed if the extended search dock is enabled in the settings.)
  • Find previous/next Jumps to the previous/next occurrence of the search term in the document.
  • Cancel search Cancels the currently running search and closes the search dock.
  • Copy to clipboard If checked, the program will wait for a frame to be dragged to copy texts or images.
  • Add annotation If checked, the program will wait for a frame to be dragged to add annotations.
  • Settings... Opens the settings dialog. The button labeled 'Defaults' will revert all settings on all tabs to their default values. The button labeled 'Defaults on current tab' will revert only the settings on the current tab to their default values.

The current page can be changed by entering the desired page into the text field in the edit tool bar, which can be focused using Ctrl+K, and pressing the return key.

View

  • Continuous Determines whether all rows of the page layout are visible at once.
  • Two pages Determines whether the page layout uses two columns.
  • Two pages with cover page Determines whether the page layout uses two columns with a break after the cover page.
  • Multiple pages Determines whether the page layout uses multiple columns. The number of columns can be changed in the settings dialog.
  • Right to left Determines how pages are arranged in layouts with multiple pages per row.
  • Zoom in Increases the scale factor by 10 percent. The maximum scale factor is 5000 percent.
  • Zoom out Decreases the scale factor by 10 percent. The minimum scale factor is 10 percent.
  • Original size Resets the scale factor to 100 percent.
  • Fit to page width Determines the scale factor such that all pages fully fit into the main view horizontally.
  • Fit to page size Determines the scale factor such that all pages fully fit into the main view horizontally and vertically.
  • Rotate left Rotates the pages left/counterclockwise by 90 degrees.
  • Rotate right Rotates the pages right/clockwise by 90 degrees.
  • Invert colors Determines whether pages are rendered with inverted colors.
  • Convert to grayscale Determines whether pages are converted to grayscale after rendering.
  • Trim margins Enables the removal of empty page margins after rendering.
  • Composition Enables the composition of the rendered page with the paper color to adjust the background of scanned documents.
  • Tool bars This menu contains a list of available tool bars for accessing frequently used actions.
  • Docks This menu contains a list of available docks for displaying supplementary information.
  • Fonts... Opens a dialog listing the fonts used in the document.
  • Fullscreen Toggles the fullscreen mode, i.e. the window is shown maximized and without decoration.
  • Presentation... Enters presentation mode which can be left by pressing F12 or escape. The home/end key is used to display the first/last page. Arrow keys right and down, space and the page down key jump to the next page. Arrow keys left and up, backspace and the page up key jump to the previous page. Pressing control and return jumps back to the page before the last jump.

The scale factor can be changed by entering the desired percentage into the text field in the view tool bar, which can be focused using Ctrl+L, and pressing the return key.

Tabs

  • Previous/Next tab Makes the previous/next tab the current tab. Cycles to the last/first tab if the first/last tab is the current tab.
  • Close tab Closes the current tab.
  • Close all tabs Closes all tabs.
  • Close all tabs but current tab Closes all tabs except for the current tab.
  • Recently closed Contains a list of the most recently closed tabs (if enabled in the settings).

This menu contains a list of all tabs which can be made the current tab by clicking on the corresponding menu item. Tabs can also be closed by middle-clicking. The first nine tabs can also be activated by holding the Alt modifier and pressing keys one to nine.

Bookmarks

  • Previous bookmark Jumps to the closest bookmark before the current page.
  • Next bookmark Jumps to the closest bookmark after the current page.
  • Add bookmark Adds a bookmark for the current file and page.
  • Remove bookmark Removes the bookmark for the current file and page.
  • Remove all bookmarks Removes all bookmarks.
  • Open Opens the corresponding file in the current tab. If there is no tab, the file is opened in a new tab.
  • Open in new tab Opens the corresponding file in a new tab.
  • Jump to page Jumps to the corresponding page if the corresponding file is already open. Otherwise the corresponding file is opened in a new tab.

Help

  • Contents Displays this document.
  • About Displays the program version.

Main view

The backspace/space key skips to the previous/next page. The home/end key skips to the first/last page. The arrow, page up and page down keys scroll the viewport. Pressing control and return jumps to the page before the last jump.

Using the mouse wheel scrolls up and down. Holding ALT while using the mouse wheel scrolls left and right. Holding CTRL while using the mouse wheel scales the document. Holding SHIFT while using the mouse wheel rotates the document. (Keyboard modifiers can be changed in the settings dialog.) Click and hold the middle mouse button to select a rectangle to zoom to.

Links are highlighted by red frames (if enabled in the settings). Left-click on a link to show the linked page or open the linked URL in the default browser (if enabled in the settings). Middle-click on a link to show the linked page in a new tab. Hovering over a link displays its destination as a tool tip.

Form fields are highlighted by blue frames (if enabled in the settings). Left-click on a form field to edit its contents. Hovering over a form field displays its name as a tool tip.

The source of a position in the document can be opened in the source editor using the context menu which optionally contains an item for the first matching SyncTeX node.

To copy texts or images, hold SHIFT, click and hold the left mouse button to drag a frame around the area to copy. Once the mouse button is released, a pop-up menu is displayed to select whether to copy texts or images into the clipboard.

To add annotations, hold CTRL, click and hold the left mouse button to drag a frame around the region to annotate. Once the mouse button is released, a pop-up menu is displayed to select whether to add text or highlight annotations. Left-click to edit annotations. Right-click to remove annotations. (Adding and removing annotations requires version 0.20.1 or higher of the Poppler library.) Hovering over an annotation displays its contents as a tool tip.

To zoom to a selection, hold SHIFT and CTRL, click and hold the left mouse button to drag a frame around region to zoom into.

The visibility of the tool and menu bars can be toggled using configurable keyboard shortcuts whose default values are "Shift+Alt+T" and "Shift+Alt+M".

Auxiliary views

The outline view displays an overview of the contents of the document. A left click on an entry jumps to the respective page in the main view. The context menu can be used to expand/collapse all items below the selected item.

The outline view can also be navigated using the keyboard and the mouse wheel. Holding Shift and using the Up/Down keys will scroll the view. Holding Shift and using the Left/Right keys will collapse/expand one level of items below the selected item. Holding Control and using the Left/Right keys will completely collapse/expand the selected item and its children. Holding Shift and using the mousel wheel will change the selected item. Holding Control and using the mouse wheel will expand/collapse the selected item.

The properties view displays additional information contained in the document.

The thumbnails view displays smaller versions of the pages of the document. A left click on an entry jumps to the respective page in the main view.

The bookmarks view shows the bookmarks related to the document displayed in the current tab. The context menu contains entries to jump to the previous/next boookmark or to add bookmarks. The context menu of each entry also contains entries to edit and delete bookmarks.

If enabled in the settings, the extended search dock shows an overview containing the results of all searches being performed in all tabs. It also shows the text surrounding a result with the search term being emphasized. Clicking on a result opens the corresponding tab and jumps to its position.

Settings

Behavior settings

  • Open URL Determines whether links to URL are opened in the default browser.
  • Auto-refresh Determines whether files are automatically reloaded if changed on disk.
  • Track recently used If enabled, a recently used menu is available and lists as many recently used files as set in the "Recently used count" option. (Effective after restart.)
  • Keep recently closed If enabled, a recently closed menu is available and lists as many recently closed tabs as set in the "Recently closed count" option. Keeping the tabs available could increase memory usage considerably. (Effective after restart.)
  • Restore tabs If enabled, tabs and their properties are saved on ending the program and restored on restart.
  • Restore bookmarks If enabled, bookmarks are saved on ending the program and restored on restart.
  • Restore per-file settings If enabled, per-file settings are saved/restored on opening/closing tabs.
  • Save database interval The interval after which tabs, bookmarks or per-file settings are saved to the database.
  • Synchronize presentation If enabled, the main view can be used to control the presentation view.
  • Presentation screen The index of the screen to display the presentation view on.
  • Synchronize outline view If enabled, the outline view will highlight the first entry pointing to the current page whenever the current page changes.
  • Minimal scrolling If enabled, the view port will only be scrolled if the target position is not yet visible.
  • Zoom factor The number by which the scale factor is multiplied resp. divided upon zooming in resp. out.
  • Highlight color Determines the color of highlights.
  • Highlight duration Determines the duration of temporary highlights.
  • Annotation color The color of annotations added by the program using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Source editor The program which is started to edit sources. '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number.

Graphics settings

  • Use tiling Pages will be divided into tiles before rendering and caching to reduce memory usage.
  • Keep obsolete pixmaps If enabled, then upon change of the zoom factor, cached pixmaps will be used to draw approximations of final pixmaps until these are available at the cost of increased memory usage.
  • Use device pixel ratio If enabled, the highest available device pixel ratio is used to render at physical and display at logical resolution.
  • Decorate pages Determines whether pages are set apart from the background.
  • Decorate links Determines whether links are highlighted by red frames.
  • Decorate form fields Determines whether form fields are highlighted by blue frames.
  • Background color Determines the color of the background using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Paper color Determines the color of pages using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Presentation background color Overrides the paper color in the computation of the background color of the presentation view and is defined using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Pages per row Number of pages per row in the 'multiple pages' layout mode.
  • Page spacing Determines both vertical and horizontal space displayed between pages.
  • Thumbnail spacing Determines both vertical and horizontal space displayed between thumbnails.
  • Thumbnail size Determines the size of the thumbnails.
  • Cache size The program will try to cache rendered pages within this limit increasing rendering speed at the cost of increased memory usage.
  • Prefetch The program will try to render pages that are not yet visible increasing rendering speed at the cost of increased cache usage.
  • Prefetch distance The number of rows beyond the current row and twice the number of rows before the current row that are prefetched.
  • PDF settings
    • Antialiasing Improves display quality at the cost of performance
    • Text antialiasing Improves text display quality at the cost of performance
    • Text hinting May improve text display quality for certain fonts.
    • Overprint preview If enabled, a preview of printing one layer of ink on top of another is displayed.
    • Thin line mode Chooses the optimization used to draw thin lines.
    • Backend Chooses the backend used to render pages.
  • PS settings
    • Graphics antialias bits Determines the amount of antialiasing for graphics.
    • Text antialias bits Determines the amount of antialiasing for text.

Interface settings

  • Extended search dock If enabled, the default search dock is extended by an overview showing the results of all tabs. (Effective after restart.)
  • Annotation overlay If enabled, all annotations on a page will be displayed as an interactive overlay. Otherwise each annotation will be handled as a separate pop-up window.
  • Form field overlay If enabled, all form fields on a page will be displayed as an interactive overlay. Otherwise each form field will be handled as a separate pop-up window.
  • Tab position Defines at which edge of the main view tabs will be displayed.
  • Tab visibility Determines whether tabs will be displayed if less than two documents are opened.
  • Spread tabs Determines if tabs will be spread out evenly over the whole tab bar.
  • New tab next to current tab If enabled, new tabs are opened to the right of the active tab.
  • Exit after last tab If enabled, the application exits after the last tab is closed.
  • Recently used count Sets the number of files that are listed in the recently used menu, if "Track recently used" is enabled. (Effective after restart.)
  • Recently closed count Sets the number of tabs that are listed in the recently closed menu, if "Keep recently closed" is enabled. (Effective after restart.)
  • File tool bar Defines which actions are visible in the file tool bar. Available actions are openInNewTab, open, refresh, saveCopy, saveAs, print and separator. (Effective after restart.)
  • Edit tool bar Defines which actions are visible in the edit tool bar. Available actions are currentPage, previousPage, nextPage, firstPage, lastPage, jumpToPage, jumpBackward, jumpForward, search, copyToClipboardMode, addAnnotationMode and separator. (Effective after restart.)
  • View tool bar Defines which actions are visible in the view tool bar. Available actions are scaleFactor, zoomIn, zoomOut, continuousMode, twoPagesMode, twoPagesWithCoverPageMode, multiplePagesMode, originalSize, fitToPageWidthMode, fitToPageSizeMode, rotateLeft, rotateRight, fullscreen, presentation and separator. (Effective after restart.)
  • Document context menu Defines which actions are visible in the document's context menu. Available actions are openCopyInNewTab, openCopyInNewWindow, openContainingFolder, moveToInstance, previousPage, nextPage, firstPage, lastPage, jumpToPage, jumpBackward, jumpForward, setFirstPage, findPrevious, findNext, cancelSearch and separator.
  • Tab context menu Defines which actions are visible in a tab's context menu. Available actions are openCopyInNewTab, openCopyInNewWindow, openContainingFolder, moveToInstance, copyFilePath, selectFilePath, closeAllTabs, closeAllTabsButThisOne, closeAllTabsToTheLeft, closeAllTabsToTheRight and separator.
  • Scrollable menus Will override the default style so that pop-up menus scroll instead being laid-out in mutliple columns if they are larger than the available screen space. (Effective after restart.)
  • Searchable menus Extends the default keyboard navigation of the tabs and bookmarks menus by a search-as-you-type mechanism.
  • Toggle tool and menu bars with fullscreen Always toggles the visibility of the tool and menu bars when toggling fullscreen mode.
  • Use page label Determines if document-supplied page label will be used instead of page numbers when available.
  • Document title as tab title Determines if the tab title as derived from the meta-data instead of the file name.
  • Current page in window title If enabled, the current page and number of pages of the document in the active tab are displayed in the window title.
  • Instance name in window title If enabled and the current instance is named, its name is displayed in the window title.
  • Highlight current thumbnail If enabled, the current page is highlighted in the thumbnails view.
  • Limit thumbnails to results If this option is enabled and a search is conducted, only the pages where the search term is found are displayed in the thumbnails view.

Shortcut settings

The shortcut settings allows the adjustment of keyboard shortcuts to personal preference. Shortcuts are changed by double-clicking on the shortcut to edit it and entering the new shortcut. Each action can have several shortcuts by entering a semicolon-separated list of them. Names of keys that are not single letters are written out explicitly (e.g. "Alt", "Ctrl", "PgDown"), where the matching is not case sensitive. If the shortcut contains modifier keys, the names of the keys are joined by a plus sign and modifier keys must be listed first, e.g. "Ctrl+A" or "Ctrl++".

Modifier settings

  • Zoom The keyboard modifiers to zoom using the mouse wheel in the main view.
  • Rotate The keyboard modifiers to rotate using the mouse wheel in the main view.
  • Scroll The keyboard modifiers to scroll horizontally using the mouse wheel in the main view.
  • Copy to clipboard The keyboard modifiers to copy texts or images from a page to the clipboard.
  • Add annotation The keyboard modifiers to add annotations to a page.
  • Zoom to selection The keyboard modifiers to zoom to a slection on a page.
qpdfview-0.4.18/help/help_zh_TW.html0000644000000000000000000006136313516127411015452 0ustar 00000000000000 幫助

幫助

目錄

  1. 主選單
    1. 檔案
    2. 編輯
    3. 檢視
    4. 分頁
    5. 書籤
    6. 幫助
  2. Main view
  3. Auxiliary views
  4. 設定
    1. 行為設定
    2. 圖形設定
    3. 介面設定
    4. 捷徑設定
    5. Modifier settings

簡介

qpdfview is a tabbed document viewer. It uses Poppler for PDF support, libspectre for PS support, DjVuLibre for DjVu support, CUPS for printing support and the Qt toolkit for its interface.

Please refer to the manual page for information on command-line options and configuration files.

主選單

檔案

  • 開啟... 開啟對話方塊來選擇要在目前的分頁開啟的檔案。如果沒有分頁,檔案會在新分頁中開啟。
  • 在新分頁中開啟... 開啟對話方塊來選擇要在新分頁開啟的檔案。
  • Recently used Contains a list of the most recently used files (if enabled in the settings).
  • 重新整理 重新讀取在目前的分頁中顯示的檔案。
  • Save Saves changes to annotations and form fields to the file displayed in the current tab.
  • Save as... Opens a dialog to save the file displayed in the current tab including changes to annotations and form fields.
  • Save copy... Opens a dialog to save an umodified copy of the file displayed in the current tab.
  • 列印... 開啟對話方塊來列印目前分頁的檔案。
  • 退出 關閉所有分頁並結束程式。

編輯

  • 下一頁/上一頁/第一頁/最後一頁 跳到文件的下一頁/上一頁/第一頁/最後一頁。
  • 跳到頁面... 開啟對話方塊來輸入要顯示在目前分頁的頁面。
  • Jump backward/forward Jumps backward/forward in the history of displayed page.
  • Search... Opens the search dock below the main view. The search automatically starts two seconds after the last change of the search term or is manually started by pressing the return key. If the Shift modifier is held when the return key is pressed, the search starts in all tabs instead of just the current tab. (This effect is reversed if the extended search dock is enabled in the settings.)
  • Find previous/next Jumps to the previous/next occurrence of the search term in the document.
  • Cancel search Cancels the currently running search and closes the search dock.
  • Copy to clipboard If checked, the program will wait for a frame to be dragged to copy texts or images.
  • Add annotation If checked, the program will wait for a frame to be dragged to add annotations.
  • Settings... Opens the settings dialog. The button labeled 'Defaults' will revert all settings on all tabs to their default values. The button labeled 'Defaults on current tab' will revert only the settings on the current tab to their default values.

The current page can be changed by entering the desired page into the text field in the edit tool bar, which can be focused using Ctrl+K, and pressing the return key.

檢視

  • Continuous Determines whether all rows of the page layout are visible at once.
  • Two pages Determines whether the page layout uses two columns.
  • Two pages with cover page Determines whether the page layout uses two columns with a break after the cover page.
  • Multiple pages Determines whether the page layout uses multiple columns. The number of columns can be changed in the settings dialog.
  • Right to left Determines how pages are arranged in layouts with multiple pages per row.
  • 放大 增加縮放係數百分之十。縮放係數的最大值是百分之 5000 。
  • 縮小 減少縮放係數百分之十。縮放係數的最小值是百分之 10 。
  • 原始大小 重設縮放係數到百分之 100 。
  • Fit to page width Determines the scale factor such that all pages fully fit into the main view horizontally.
  • Fit to page size Determines the scale factor such that all pages fully fit into the main view horizontally and vertically.
  • 向左旋轉 向左/逆時針旋轉頁面 90 度。
  • 向右旋轉 向右/順時針旋轉頁面 90 度。
  • Invert colors Determines whether pages are rendered with inverted colors.
  • Convert to grayscale Determines whether pages are converted to grayscale after rendering.
  • Trim margins Enables the removal of empty page margins after rendering.
  • Composition Enables the composition of the rendered page with the paper color to adjust the background of scanned documents.
  • 工具列 這個選單包含可用的能存取常用的動作的工具列的清單。
  • Docks This menu contains a list of available docks for displaying supplementary information.
  • 字型... 開啟列出在這個文件中使用的字型的對話方塊。
  • Fullscreen Toggles the fullscreen mode, i.e. the window is shown maximized and without decoration.
  • Presentation... Enters presentation mode which can be left by pressing F12 or escape. The home/end key is used to display the first/last page. Arrow keys right and down, space and the page down key jump to the next page. Arrow keys left and up, backspace and the page up key jump to the previous page. Pressing control and return jumps back to the page before the last jump.

The scale factor can be changed by entering the desired percentage into the text field in the view tool bar, which can be focused using Ctrl+L, and pressing the return key.

Tabs

  • Previous/Next tab Makes the previous/next tab the current tab. Cycles to the last/first tab if the first/last tab is the current tab.
  • Close tab Closes the current tab.
  • Close all tabs Closes all tabs.
  • Close all tabs but current tab Closes all tabs except for the current tab.
  • Recently closed Contains a list of the most recently closed tabs (if enabled in the settings).

This menu contains a list of all tabs which can be made the current tab by clicking on the corresponding menu item. Tabs can also be closed by middle-clicking. The first nine tabs can also be activated by holding the Alt modifier and pressing keys one to nine.

Bookmarks

  • Previous bookmark Jumps to the closest bookmark before the current page.
  • Next bookmark Jumps to the closest bookmark after the current page.
  • Add bookmark Adds a bookmark for the current file and page.
  • Remove bookmark Removes the bookmark for the current file and page.
  • Remove all bookmarks Removes all bookmarks.
  • Open Opens the corresponding file in the current tab. If there is no tab, the file is opened in a new tab.
  • Open in new tab Opens the corresponding file in a new tab.
  • Jump to page Jumps to the corresponding page if the corresponding file is already open. Otherwise the corresponding file is opened in a new tab.

Help

  • Contents Displays this document.
  • About Displays the program version.

Main view

The backspace/space key skips to the previous/next page. The home/end key skips to the first/last page. The arrow, page up and page down keys scroll the viewport. Pressing control and return jumps to the page before the last jump.

Using the mouse wheel scrolls up and down. Holding ALT while using the mouse wheel scrolls left and right. Holding CTRL while using the mouse wheel scales the document. Holding SHIFT while using the mouse wheel rotates the document. (Keyboard modifiers can be changed in the settings dialog.) Click and hold the middle mouse button to select a rectangle to zoom to.

Links are highlighted by red frames (if enabled in the settings). Left-click on a link to show the linked page or open the linked URL in the default browser (if enabled in the settings). Middle-click on a link to show the linked page in a new tab. Hovering over a link displays its destination as a tool tip.

Form fields are highlighted by blue frames (if enabled in the settings). Left-click on a form field to edit its contents. Hovering over a form field displays its name as a tool tip.

The source of a position in the document can be opened in the source editor using the context menu which optionally contains an item for the first matching SyncTeX node.

To copy texts or images, hold SHIFT, click and hold the left mouse button to drag a frame around the area to copy. Once the mouse button is released, a pop-up menu is displayed to select whether to copy texts or images into the clipboard.

To add annotations, hold CTRL, click and hold the left mouse button to drag a frame around the region to annotate. Once the mouse button is released, a pop-up menu is displayed to select whether to add text or highlight annotations. Left-click to edit annotations. Right-click to remove annotations. (Adding and removing annotations requires version 0.20.1 or higher of the Poppler library.) Hovering over an annotation displays its contents as a tool tip.

To zoom to a selection, hold SHIFT and CTRL, click and hold the left mouse button to drag a frame around region to zoom into.

The visibility of the tool and menu bars can be toggled using configurable keyboard shortcuts whose default values are "Shift+Alt+T" and "Shift+Alt+M".

Auxiliary views

The outline view displays an overview of the contents of the document. A left click on an entry jumps to the respective page in the main view. The context menu can be used to expand/collapse all items below the selected item.

The outline view can also be navigated using the keyboard and the mouse wheel. Holding Shift and using the Up/Down keys will scroll the view. Holding Shift and using the Left/Right keys will collapse/expand one level of items below the selected item. Holding Control and using the Left/Right keys will completely collapse/expand the selected item and its children. Holding Shift and using the mousel wheel will change the selected item. Holding Control and using the mouse wheel will expand/collapse the selected item.

The properties view displays additional information contained in the document.

The thumbnails view displays smaller versions of the pages of the document. A left click on an entry jumps to the respective page in the main view.

The bookmarks view shows the bookmarks related to the document displayed in the current tab. The context menu contains entries to jump to the previous/next boookmark or to add bookmarks. The context menu of each entry also contains entries to edit and delete bookmarks.

If enabled in the settings, the extended search dock shows an overview containing the results of all searches being performed in all tabs. It also shows the text surrounding a result with the search term being emphasized. Clicking on a result opens the corresponding tab and jumps to its position.

Settings

Behavior settings

  • Open URL Determines whether links to URL are opened in the default browser.
  • Auto-refresh Determines whether files are automatically reloaded if changed on disk.
  • Track recently used If enabled, a recently used menu is available and lists as many recently used files as set in the "Recently used count" option. (Effective after restart.)
  • Keep recently closed If enabled, a recently closed menu is available and lists as many recently closed tabs as set in the "Recently closed count" option. Keeping the tabs available could increase memory usage considerably. (Effective after restart.)
  • Restore tabs If enabled, tabs and their properties are saved on ending the program and restored on restart.
  • Restore bookmarks If enabled, bookmarks are saved on ending the program and restored on restart.
  • Restore per-file settings If enabled, per-file settings are saved/restored on opening/closing tabs.
  • Save database interval The interval after which tabs, bookmarks or per-file settings are saved to the database.
  • Synchronize presentation If enabled, the main view can be used to control the presentation view.
  • Presentation screen The index of the screen to display the presentation view on.
  • Synchronize outline view If enabled, the outline view will highlight the first entry pointing to the current page whenever the current page changes.
  • Minimal scrolling If enabled, the view port will only be scrolled if the target position is not yet visible.
  • Zoom factor The number by which the scale factor is multiplied resp. divided upon zooming in resp. out.
  • Highlight color Determines the color of highlights.
  • Highlight duration Determines the duration of temporary highlights.
  • Annotation color The color of annotations added by the program using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Source editor The program which is started to edit sources. '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number.

Graphics settings

  • Use tiling Pages will be divided into tiles before rendering and caching to reduce memory usage.
  • Keep obsolete pixmaps If enabled, then upon change of the zoom factor, cached pixmaps will be used to draw approximations of final pixmaps until these are available at the cost of increased memory usage.
  • Use device pixel ratio If enabled, the highest available device pixel ratio is used to render at physical and display at logical resolution.
  • Decorate pages Determines whether pages are set apart from the background.
  • Decorate links Determines whether links are highlighted by red frames.
  • Decorate form fields Determines whether form fields are highlighted by blue frames.
  • Background color Determines the color of the background using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Paper color Determines the color of pages using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Presentation background color Overrides the paper color in the computation of the background color of the presentation view and is defined using SVG color keywords or hexadecimal notation '#rrggbb'.
  • Pages per row Number of pages per row in the 'multiple pages' layout mode.
  • Page spacing Determines both vertical and horizontal space displayed between pages.
  • Thumbnail spacing Determines both vertical and horizontal space displayed between thumbnails.
  • Thumbnail size Determines the size of the thumbnails.
  • Cache size The program will try to cache rendered pages within this limit increasing rendering speed at the cost of increased memory usage.
  • Prefetch The program will try to render pages that are not yet visible increasing rendering speed at the cost of increased cache usage.
  • Prefetch distance The number of rows beyond the current row and twice the number of rows before the current row that are prefetched.
  • PDF settings
    • Antialiasing Improves display quality at the cost of performance
    • Text antialiasing Improves text display quality at the cost of performance
    • Text hinting May improve text display quality for certain fonts.
    • Overprint preview If enabled, a preview of printing one layer of ink on top of another is displayed.
    • Thin line mode Chooses the optimization used to draw thin lines.
    • Backend Chooses the backend used to render pages.
  • PS settings
    • Graphics antialias bits Determines the amount of antialiasing for graphics.
    • Text antialias bits Determines the amount of antialiasing for text.

Interface settings

  • Extended search dock If enabled, the default search dock is extended by an overview showing the results of all tabs. (Effective after restart.)
  • Annotation overlay If enabled, all annotations on a page will be displayed as an interactive overlay. Otherwise each annotation will be handled as a separate pop-up window.
  • Form field overlay If enabled, all form fields on a page will be displayed as an interactive overlay. Otherwise each form field will be handled as a separate pop-up window.
  • Tab position Defines at which edge of the main view tabs will be displayed.
  • Tab visibility Determines whether tabs will be displayed if less than two documents are opened.
  • Spread tabs Determines if tabs will be spread out evenly over the whole tab bar.
  • New tab next to current tab If enabled, new tabs are opened to the right of the active tab.
  • Exit after last tab If enabled, the application exits after the last tab is closed.
  • Recently used count Sets the number of files that are listed in the recently used menu, if "Track recently used" is enabled. (Effective after restart.)
  • Recently closed count Sets the number of tabs that are listed in the recently closed menu, if "Keep recently closed" is enabled. (Effective after restart.)
  • File tool bar Defines which actions are visible in the file tool bar. Available actions are openInNewTab, open, refresh, saveCopy, saveAs, print and separator. (Effective after restart.)
  • Edit tool bar Defines which actions are visible in the edit tool bar. Available actions are currentPage, previousPage, nextPage, firstPage, lastPage, jumpToPage, jumpBackward, jumpForward, search, copyToClipboardMode, addAnnotationMode and separator. (Effective after restart.)
  • View tool bar Defines which actions are visible in the view tool bar. Available actions are scaleFactor, zoomIn, zoomOut, continuousMode, twoPagesMode, twoPagesWithCoverPageMode, multiplePagesMode, originalSize, fitToPageWidthMode, fitToPageSizeMode, rotateLeft, rotateRight, fullscreen, presentation and separator. (Effective after restart.)
  • Document context menu Defines which actions are visible in the document's context menu. Available actions are openCopyInNewTab, openCopyInNewWindow, openContainingFolder, moveToInstance, previousPage, nextPage, firstPage, lastPage, jumpToPage, jumpBackward, jumpForward, setFirstPage, findPrevious, findNext, cancelSearch and separator.
  • Tab context menu Defines which actions are visible in a tab's context menu. Available actions are openCopyInNewTab, openCopyInNewWindow, openContainingFolder, moveToInstance, copyFilePath, selectFilePath, closeAllTabs, closeAllTabsButThisOne, closeAllTabsToTheLeft, closeAllTabsToTheRight and separator.
  • Scrollable menus Will override the default style so that pop-up menus scroll instead being laid-out in mutliple columns if they are larger than the available screen space. (Effective after restart.)
  • Searchable menus Extends the default keyboard navigation of the tabs and bookmarks menus by a search-as-you-type mechanism.
  • Toggle tool and menu bars with fullscreen Always toggles the visibility of the tool and menu bars when toggling fullscreen mode.
  • Use page label Determines if document-supplied page label will be used instead of page numbers when available.
  • Document title as tab title Determines if the tab title as derived from the meta-data instead of the file name.
  • Current page in window title If enabled, the current page and number of pages of the document in the active tab are displayed in the window title.
  • Instance name in window title If enabled and the current instance is named, its name is displayed in the window title.
  • Highlight current thumbnail If enabled, the current page is highlighted in the thumbnails view.
  • Limit thumbnails to results If this option is enabled and a search is conducted, only the pages where the search term is found are displayed in the thumbnails view.

Shortcut settings

The shortcut settings allows the adjustment of keyboard shortcuts to personal preference. Shortcuts are changed by double-clicking on the shortcut to edit it and entering the new shortcut. Each action can have several shortcuts by entering a semicolon-separated list of them. Names of keys that are not single letters are written out explicitly (e.g. "Alt", "Ctrl", "PgDown"), where the matching is not case sensitive. If the shortcut contains modifier keys, the names of the keys are joined by a plus sign and modifier keys must be listed first, e.g. "Ctrl+A" or "Ctrl++".

Modifier settings

  • Zoom The keyboard modifiers to zoom using the mouse wheel in the main view.
  • Rotate The keyboard modifiers to rotate using the mouse wheel in the main view.
  • Scroll The keyboard modifiers to scroll horizontally using the mouse wheel in the main view.
  • Copy to clipboard The keyboard modifiers to copy texts or images from a page to the clipboard.
  • Add annotation The keyboard modifiers to add annotations to a page.
  • Zoom to selection The keyboard modifiers to zoom to a slection on a page.
qpdfview-0.4.18/icons/continuous.svg0000644000000000000000000000270713516127411015630 0ustar 00000000000000 qpdfview-0.4.18/icons/document-open.svg0000644000000000000000000002077413516127411016203 0ustar 00000000000000 qpdfview-0.4.18/icons/document-print.svg0000644000000000000000000001507313516127411016372 0ustar 00000000000000 qpdfview-0.4.18/icons/document-save-as.svg0000644000000000000000000002360613516127411016576 0ustar 00000000000000 qpdfview-0.4.18/icons/document-save.svg0000644000000000000000000002250113516127411016166 0ustar 00000000000000 qpdfview-0.4.18/icons/edit-copy.svg0000644000000000000000000000703513516127411015316 0ustar 00000000000000 qpdfview-0.4.18/icons/edit-find.svg0000644000000000000000000003002613516127411015260 0ustar 00000000000000 qpdfview-0.4.18/icons/fit-to-page-size.svg0000644000000000000000000000603313516127411016502 0ustar 00000000000000 qpdfview-0.4.18/icons/fit-to-page-width.svg0000644000000000000000000000441713516127411016653 0ustar 00000000000000 qpdfview-0.4.18/icons/folder.svg0000644000000000000000000001124513516127411014672 0ustar 00000000000000qpdfview-0.4.18/icons/go-down.svg0000644000000000000000000000354013516127411014770 0ustar 00000000000000 qpdfview-0.4.18/icons/go-first.svg0000644000000000000000000000367013516127411015154 0ustar 00000000000000 qpdfview-0.4.18/icons/go-jump.svg0000644000000000000000000000331113516127411014770 0ustar 00000000000000 qpdfview-0.4.18/icons/go-last.svg0000644000000000000000000000363213516127411014766 0ustar 00000000000000 qpdfview-0.4.18/icons/go-next.svg0000644000000000000000000000343613516127411015003 0ustar 00000000000000 qpdfview-0.4.18/icons/go-previous.svg0000644000000000000000000000331713516127411015677 0ustar 00000000000000 qpdfview-0.4.18/icons/go-up.svg0000644000000000000000000000341713516127411014450 0ustar 00000000000000 qpdfview-0.4.18/icons/image-loading.svg0000644000000000000000000002005113516127411016107 0ustar 00000000000000 qpdfview-0.4.18/icons/image-missing.svg0000644000000000000000000000703313516127411016150 0ustar 00000000000000 qpdfview-0.4.18/icons/mail-attachment.svg0000644000000000000000000000347313516127411016473 0ustar 00000000000000 qpdfview-0.4.18/icons/media-seek-backward.svg0000644000000000000000000000474713516127411017210 0ustar 00000000000000 qpdfview-0.4.18/icons/media-seek-forward.svg0000644000000000000000000000513113516127411017062 0ustar 00000000000000 qpdfview-0.4.18/icons/multiple-pages.svg0000644000000000000000000000663413516127411016355 0ustar 00000000000000 qpdfview-0.4.18/icons/object-rotate-left.svg0000644000000000000000000000355513516127411017116 0ustar 00000000000000 qpdfview-0.4.18/icons/object-rotate-right.svg0000644000000000000000000000330213516127411017267 0ustar 00000000000000 qpdfview-0.4.18/icons/process-stop.svg0000644000000000000000000000532513516127411016062 0ustar 00000000000000 qpdfview-0.4.18/icons/qpdfview.svg0000644000000000000000000004301213516127411015241 0ustar 00000000000000 qpdfview-0.4.18/icons/qpdfview_os2.ico0000644000000000000000000001722013516127411016001 0ustar 00000000000000BA(HCI (PCI ((κʞƾںҶƺގ¾ֶºֺƶҺ־Һƞ~βƺʺzƪ®ھvr¢Ʀž~®ʶʮ¾Ҿ²ʾƢƲ²ƶnʲҶξʲƮھšzκƞzֺʺƾʾںfʲƺή¦ζªΪʦ־ž¾ʮnnnֺ¶Ƣ–vƲªҾξrºҾª⦪κֺβƮ溲κζκƾzҾֶfƾ®겮֪ʶΪҾƮªξnvζֲҞ~¢¶ƺƮʲږvʮrrrζζξʶ檮ƪªƦj¦š~궮ҖκƶήBA(CI @CI κʞƾںҶƺގ¾ֶºֺƶҺ־Һƞ~βƺʺzƪ®ھvr¢Ʀž~®ʶʮ¾Ҿ²ʾƢƲ²ƶnʲҶξʲƮھšzκƞzֺʺƾʾںfʲƺή¦ζªΪʦ־ž¾ʮnnnֺ¶Ƣ–vƲªҾξrºҾª⦪κֺβƮ溲κζκƾzҾֶfƾ®겮֪ʶΪҾƮªξnvζֲҞ~¢¶ƺƮʲږvʮrrrζζξʶ檮ƪªƦj¦š~궮ҖκƶήBA( CI  (CI  κʞƾںҶƺގ¾ֶºֺƶҺ־Һƞ~βƺʺzƪ®ھvr¢Ʀž~®ʶʮ¾Ҿ²ʾƢƲ²ƶnʲҶξʲƮھšzκƞzֺʺƾʾںfʲƺή¦ζªΪʦ־ž¾ʮnnnֺ¶Ƣ–vƲªҾξrºҾª⦪κֺβƮ溲κζκƾzҾֶfƾ®겮֪ʶΪҾƮªξnvζֲҞ~¢¶ƺƮʲږvʮrrrζζξʶ檮ƪªƦj¦š~궮ҖκƶήBA(CI  CI κʞƾںҶƺގ¾ֶºֺƶҺ־Һƞ~βƺʺzƪ®ھvr¢Ʀž~®ʶʮ¾Ҿ²ʾƢƲ²ƶnʲҶξʲƮھšzκƞzֺʺƾʾںfʲƺή¦ζªΪʦ־ž¾ʮnnnֺ¶Ƣ–vƲªҾξrºҾª⦪κֺβƮ溲κζκƾzҾֶfƾ®겮֪ʶΪҾƮªξnvζֲҞ~¢¶ƺƮʲږvʮrrrζζξʶ檮ƪªƦj¦š~궮Җκƶή?      W    3333   X F    X +C (((  W   s99\5  b@?4ZNQ  B@N0--EP_(   hq0/-7jj7P2JD  DG2c0T7LL5K/8S b<-)66[E^`  lo{)$IehBJ0x% `ai';'$u>% awi;;',f^cq>k oU/I,&&e6RK?9 ٳ=zy,&&,IR[K}=mQ AnU'',$)E?k  O2)&$)/8m5 p @_J$|$fB "*Z:~%STsnD  "YrբgA p4  .r"4]::ߙ޿  ЈY**""*  .ы*    ##              W    333        X  99\5  b@4ZQ  @N0--EP_(  hq0/7jj72JD b<-)66[^`  lo)$IhBϫ0x `ai''$u> awi;;',^cq> ٳ=y,&,IR[}=mQ An'',$)?k  O2)&$)8m5 GG]O\<28=B "*Z~%Ssn  "YբgA p4  .r"4::ߙ  .*    ##              ƀր:ڀ6:2€::ހ6>ր2>>>6:ـ>:~    W    + (  ?4Q 0-j7J b-6[  `i;$% o/,&R?ĵ AU',)? p_$$v "*:%Tn  ."]: . #ƾ֪ʶҾªƀֲҀ~ƀրڀ    XZQ h07jJ $Bx ai'^q n''$?  G\2=B Ǣ p  #qpdfview-0.4.18/icons/qpdfview_os2.rc0000644000000000000000000000004613516127411015631 0ustar 00000000000000ICON 1 DISCARDABLE "qpdfview_os2.ico" qpdfview-0.4.18/icons/qpdfview_win32.ico0000644000000000000000000002000613516127411016234 0ustar 00000000000000(( F  h((PںҶƺ¾ֶºֺƶҺ־Һƞ~βƺʺzƪ®vr¢Ʀž~ʶʮ¾Ҿ²ʾƢƲ²ƶnʲҶξʲƮھšzκƞzֺʺƾʾfʲƺή¦ζªΪʦ־ž¾ʮnnnֺ¶Ƣ–vƲªҾrºҾªֺβƮκζκzҾf®ʶΪҾƮªξnvζֲ~¢¶ƺʲvrrrζζξʶƪªƦjš~κƶή      W    3333   X F    X +C (((  W   s99\5  b@?4ZNQ  B@N0--EP_(   hq0/-7jj7P2JD  DG2c0T7LL5K/8S b<-)66[E^`  lo{)$IehBJ0x% `ai';'$u>% awi;;',f^cq>k oU/I,&&e6RK?9 ٳ=zy,&&,IR[K}=mQ AnU'',$)E?k  O2)&$)/8m5 p @_J$|$fB "*Z:~%STsnD  "YrբgA p4  .r"4]::ߙ޿  ЈY**""*  .ы*    ##           ?( @ںҶƺ¾ֶºֺƶҺ־Һƞ~βƺʺzƪ®vr¢Ʀž~ʶʮ¾Ҿ²ʾƢƲ²ƶnʲҶξʲƮھšzκƞzֺʺƾʾfʲƺή¦ζªΪʦ־ž¾ʮnnnֺ¶Ƣ–vƲªҾrºҾªֺβƮκζκzҾf®ʶΪҾƮªξnvζֲ~¢¶ƺʲvrrrζζξʶƪªƦjš~κƶή   W    333        X  99\5  b@4ZQ  @N0--EP_(  hq0/7jj72JD b<-)66[^`  lo)$IhBϫ0x `ai''$u> awi;;',^cq> ٳ=y,&,IR[}=mQ An'',$)?k  O2)&$)8m5 GG]O\<28=B "*Z~%Ssn  "YբgA p4  .r"4::ߙ  .*    ##         ((ںҶƺ¾ֶºֺƶҺ־Һƞ~βƺʺzƪ®vr¢Ʀž~ʶʮ¾Ҿ²ʾƢƲ²ƶnʲҶξʲƮھšzκƞzֺʺƾʾfʲƺή¦ζªΪʦ־ž¾ʮnnnֺ¶Ƣ–vƲªҾrºҾªֺβƮκζκzҾf®ʶΪҾƮªξnvζֲ~¢¶ƺʲvrrrζζξʶƪªƦjš~κƶή    W    + (  ?4Q 0-j7J b-6[  `i;$% o/,&R?ĵ AU',)? p_$$v "*:%Tn  ."]: . # :6:2::6>2>>>6:>:~( @ںҶƺ¾ֶºֺƶҺ־Һƞ~βƺʺzƪ®vr¢Ʀž~ʶʮ¾Ҿ²ʾƢƲ²ƶnʲҶξʲƮھšzκƞzֺʺƾʾfʲƺή¦ζªΪʦ־ž¾ʮnnnֺ¶Ƣ–vƲªҾrºҾªֺβƮκζκzҾf®ʶΪҾƮªξnvζֲ~¢¶ƺʲvrrrζζξʶƪªƦjš~κƶή    XZQ h07jJ $Bx ai'^q n''$?  G\2=B Ǣ p  #qpdfview-0.4.18/icons/qpdfview_win32.rc0000644000000000000000000000006113516127411016065 0ustar 00000000000000IDI_ICON1 ICON DISCARDABLE "qpdfview_win32.ico" qpdfview-0.4.18/icons/right-to-left.svg0000644000000000000000000000354113516127411016104 0ustar 00000000000000 qpdfview-0.4.18/icons/tab-new.svg0000644000000000000000000000567313516127411014764 0ustar 00000000000000 qpdfview-0.4.18/icons/two-pages-with-cover-page.svg0000644000000000000000000000406713516127411020330 0ustar 00000000000000 qpdfview-0.4.18/icons/two-pages.svg0000644000000000000000000000270613516127411015327 0ustar 00000000000000 qpdfview-0.4.18/icons/view-fullscreen.svg0000644000000000000000000000675113516127411016537 0ustar 00000000000000 qpdfview-0.4.18/icons/view-refresh.svg0000644000000000000000000001120113516127411016015 0ustar 00000000000000 qpdfview-0.4.18/icons/x-office-presentation.svg0000644000000000000000000001431213516127411017626 0ustar 00000000000000 qpdfview-0.4.18/icons/zoom-in.svg0000644000000000000000000000317413516127411015011 0ustar 00000000000000 qpdfview-0.4.18/icons/zoom-original.svg0000644000000000000000000000310313516127411016177 0ustar 00000000000000 1:1 qpdfview-0.4.18/icons/zoom-out.svg0000644000000000000000000000174513516127411015214 0ustar 00000000000000 qpdfview-0.4.18/miscellaneous/qpdfview.10000644000000000000000000001547613516127411016347 0ustar 00000000000000.\" .\" .\" Copyright 2012-2013 Benjamin Eltzner .\" Copyright 2012-2015 Adam Reichold .\" Copyright 2012 Michał Trybus .\" .\" This file is part of qpdfview. .\" .\" qpdfview is free software: you can redistribute it and/or modify .\" it under the terms of the GNU General Public License as published by .\" the Free Software Foundation, either version 2 of the License, or .\" (at your option) any later version. .\" .\" qpdfview is distributed in the hope that it will be useful, .\" but WITHOUT ANY WARRANTY; without even the implied warranty of .\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the .\" GNU General Public License for more details. .\" .\" You should have received a copy of the GNU General Public License .\" along with qpdfview. If not, see . .\" .\" This file is additionally licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported (CC-BY-SA) license. The full text of the license can be found at https://creativecommons.org/licenses/by-sa/3.0/legalcode .\" .\" .TH QPDFVIEW 1 "July 2012" .SH NAME qpdfview \- tabbed document viewer .SH SYNOPSIS .B qpdfview .I [options] [--] [file[#page]] [file[#src:name:line:column]] ... .SH DESCRIPTION .B qpdfview is a simple viewer for document files in the portable document format (PDF). It uses the Poppler library for rendering and the Qt toolkit for its interface. .SH OPTIONS .IP "\-\-help" Displays usage information. .IP "\-\-quiet" Suppresses warning messages which are displayed if the program fails to open a file. .IP "\-\-search text" Initiates a search for .I text in the current tab. .IP \-\-unique If an instance of qpdfview is started with this option, any files that are opened using this option afterwards, are opened as tabs in the original window. If a file is already opened in a tab of the original window, it is merely reloaded. .IP "\-\-instance name" Uses .I name as the name of the instance contacted or created using the "\-\-unique" option. This allows one to run multiple instances and remotely open and refresh tabs in any of them by passing the instance name. The argument must only contain the characters "[A-Z][a-z][0-9]_" and must not begin with a digit. .IP "\-\-choose-instance" Can be combined with the "\-\-unique" option to display a dialog at start-up where the instance name can be chosen with all instances that have tabs stored as suggestions. .IP [file[#page]] .I file specifies the file to open. The optional parameter .I page opens the file at the given page. Multiple files will be opened in separate tabs. .IP [file[#src:name:line:column]] Forward search using SyncTeX is performed using the optional parameters .I name which is the name of the source file, .I line which is the line number in the source file and .I column which is the column number in the source file where the number 0 matches all lines respectively columns. .SH INTER-PROCESS COMMUNICATION If the program is invoked using the "\-\-unique" option, it registers an introspectable D-Bus interface at "local.qpdfview/MainWindow" which can be used to communicate with the application. If the "\-\-instance" option is used, the D-Bus interface is registered at "local.qpdfview.name/MainWindow". .SH CONFIGURATION FILES qpdfview uses configuration files usually located at .RS "~/.config/qpdfview" .RE with the majority of settings contained in "qpdfview.conf". Persitent state like per-file settings, bookmarks and tabs is stored in an SQLite database usually located at .RS "~/.local/share/data/qpdfview/qpdfview". .RE The icon theme used by Qt can be changed by setting the key "iconTheme" in the section "mainWindow". The application-wide Qt style sheet can be changed by setting the key "styleSheet" in the section "mainWindow". The tile size in pixels used for tiled rendering can be adjusted by setting the key "tileSize" in the section "pageItem". The default value is 1024 pixels. The mimimum resp. maximum scale factor can be modified by changing the keys "minimumScaleFactor" resp. "maximumScaleFactor" in the section "documentView". The default values are 0.1 resp. 10.0. The timeout for auto-refresh resp. prefetch can be changed by setting the keys "autoRefreshTimeout" resp. "prefetchTimeout" in the section "documentView". The defaults are 750 resp. 250 milliseconds. The maximum number of per-file settings can be modified by changing the key "perFileSettingsLimit" in the section "mainWindow". The default value is 1000. .SH EXAMPLES .RS The command .RE .B qpdfview foo.pdf#3 bar.pdf .RS opens "foo.pdf" in the first tab displaying the third page of the document and "bar.pdf" in the second tab displaying the beginning of the document. The command .RE .B qpdfview \-\-quiet foobar/* .RS opens all files that can be opened in the directory "foobar", suppressing warning messages for files that cannot be opened. The command .RE .B qpdfview \-\-search foo bar.pdf .RS opens "bar.pdf" in the first tab and starts a search for "foo". Subsequent execution of the commands .RE .B qpdfview \-\-unique foo.pdf bar.pdf .RS and .RE .B qpdfview \-\-unique foo.pdf#5 .RS opens "foo.pdf" and "bar.pdf", then reloads "foo.pdf" and displays its fifth page. Subsequent execution of the commands .RE .B qpdfview \-\-unique foo.pdf .RS and .RE .B qpdfview bar.pdf .RS and .RE .B qpdfview \-\-unique foo1.pdf bar1.pdf .RS opens "foo.pdf" in the first window, "bar.pdf" in a second window and then "foo1.pdf" and "bar1.pdf" in additional tabs in the first window. Subsequent execution of the commands .RE .B qpdfview \-\-unique \-\-instance a foo1.pdf bar1.pdf .RS and .RE .B qpdfview \-\-unique \-\-instance b foo2.pdf bar2.pdf .RS and .RE .B qpdfview \-\-unique foo3.pdf bar3.pdf .RS and .RE .B qpdfview \-\-unique \-\-instance a foo1.pdf#4 bar4.pdf .RS opens "foo1.pdf" and "bar1.pdf" in the first window, "foo2.pdf" and "bar2.pdf" in the second window, "foo3.pdf" and "bar3.pdf" in the third window and then reloads "foo1.pdf" and displays its fourth page and opens "bar4.pdf" in an additional tab in the first window. Subsequent execution of the commands .RE .B qpdfview \-\-unique \-\-instance a foo.pdf bar.pdf .RS and .RE .B qpdfview \-\-unique \-\-instance a \-\-search "foobar" .RS opens "foo.pdf" and "bar.pdf" in a window and then starts a search for the term "foobar" in the document in the active tab (which is the last opened "bar.pdf"). The command .RE .B qpdfview \-\-unique foobar.pdf#src:foobar.tex:42:0 .RS opens or refreshes "foobar.pdf" jumping to and highlighting the position that corresponds to line 42 of the source file "foobar.tex". The lines .RE .B [documentView] .RS .RE .B autoRefreshTimeout=1250 .RS .RE .B [mainWindow] .RS .RE .B styleSheet="QTabBar::tab { max-width: 150px; }" .RS will configure the auto-refresh timeout to 1250 milliseconds and the change the maximum tab width to 150 pixel. .SH BUGS If you find a bug, please report it at .RS "https://launchpad.net/qpdfview". .RE qpdfview-0.4.18/miscellaneous/qpdfview.appdata.xml0000644000000000000000000000411413516127411020403 0ustar 00000000000000 qpdfview.desktop CC0-1.0 GPL-2.0+ qpdfview tabbed document viewer

qpdfview is a simple tabbed document viewer which uses the Poppler library for PDF rendering and CUPS for printing and provides a clear and simple Qt graphical user interface. Support for the DjVu and PostScript formats can be added via plugins.

The current feature set includes:

  • Outline, properties and thumbnail panes
  • Scale, rotate and fit
  • Fullscreen and presentation views
  • Continuous and multi-page layouts
  • Persistent per-file settings
  • Configurable keyboard shortcuts
  • Configurable tool bars
  • Support for DjVu and PostScript documents via plug-ins
  • Search for text (PDF and DjVu only)
  • SyncTeX support (PDF only)
  • Partial annotation support (PDF only, Poppler version 0.20.1 or newer)
  • Partial form support (PDF only)
http://screenshots.debian.net/image/13652_large.png http://screenshots.debian.net/screenshots/q/qpdfview/13653_large.png http://screenshots.debian.net/screenshots/q/qpdfview/9701_large.png http://screenshots.debian.net/screenshots/q/qpdfview/9399_large.png https://launchpad.net/qpdfview qpdfview@lists.launchpad.net
qpdfview-0.4.18/miscellaneous/qpdfview.desktop.in0000644000000000000000000000103013516127411020242 0ustar 00000000000000[Desktop Entry] Type=Application Terminal=false Name=qpdfview Icon=qpdfview GenericName=tabbed document viewer Comment=A tabbed document viewer using Qt and the Poppler library. Categories=Viewer;Office; Keywords=viewer;document;presentation;pdf;ps;djvu; TryExec=qpdfview Exec=qpdfview --unique %F MimeType=MIME_TYPES Actions=ChooseInstance;NonUniqueInstance; [Desktop Action ChooseInstance] Name=Choose instance Exec=qpdfview --unique --choose-instance %F [Desktop Action NonUniqueInstance] Name=Non-unique instance Exec=qpdfview %F qpdfview-0.4.18/sources/annotationwidgets.cpp0000644000000000000000000001056313516127411017515 0ustar 00000000000000/* Copyright 2012-2013 Adam Reichold This file is part of qpdfview. qpdfview is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. qpdfview is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with qpdfview. If not, see . */ #include "annotationwidgets.h" #include #include #include #include #include #include #include #include #if QT_VERSION >= QT_VERSION_CHECK(5,0,0) #include #else #include #endif // QT_VERSION #include #ifndef HAS_POPPLER_24 #define LOCK_ANNOTATION QMutexLocker mutexLocker(m_mutex); #else #define LOCK_ANNOTATION #endif // HAS_POPPLER_24 namespace { bool hideOnEscape(QWidget* widget, QKeyEvent* event) { if(event->key() == Qt::Key_Escape) { widget->hide(); event->accept(); return true; } return false; } } // anonymous namespace qpdfview { AnnotationWidget::AnnotationWidget(QMutex* mutex, Poppler::Annotation* annotation, QWidget* parent) : QPlainTextEdit(parent), m_mutex(mutex), m_annotation(annotation) { LOCK_ANNOTATION setTabChangesFocus(true); setPlainText(m_annotation->contents()); connect(this, SIGNAL(textChanged()), SLOT(on_textChanged())); connect(this, SIGNAL(textChanged()), SIGNAL(wasModified())); moveCursor(QTextCursor::End); } void AnnotationWidget::keyPressEvent(QKeyEvent* event) { if(!hideOnEscape(this, event)) { QPlainTextEdit::keyPressEvent(event); } } void AnnotationWidget::on_textChanged() { LOCK_ANNOTATION m_annotation->setContents(toPlainText()); } FileAttachmentAnnotationWidget::FileAttachmentAnnotationWidget(QMutex* mutex, Poppler::FileAttachmentAnnotation* annotation, QWidget* parent) : QToolButton(parent), m_mutex(mutex), m_annotation(annotation) { m_menu = new QMenu(this); m_saveAction = m_menu->addAction(tr("Save...")); m_saveAndOpenAction = m_menu->addAction(tr("Save and open...")); setMenu(m_menu); setPopupMode(QToolButton::InstantPopup); setIcon(QIcon::fromTheme(QLatin1String("mail-attachment"), QIcon(QLatin1String(":icons/mail-attachment")))); connect(m_menu, SIGNAL(aboutToShow()), SLOT(on_aboutToShow())); connect(m_menu, SIGNAL(aboutToHide()), SLOT(on_aboutToHide())); connect(m_saveAction, SIGNAL(triggered()), SLOT(on_save_triggered())); connect(m_saveAndOpenAction, SIGNAL(triggered()), SLOT(on_saveAndOpen_triggered())); } void FileAttachmentAnnotationWidget::keyPressEvent(QKeyEvent *event) { if(!hideOnEscape(this, event)) { QToolButton::keyPressEvent(event); } } void FileAttachmentAnnotationWidget::on_aboutToShow() { graphicsProxyWidget()->setZValue(1.0); } void FileAttachmentAnnotationWidget::on_aboutToHide() { graphicsProxyWidget()->setZValue(0.0); } void FileAttachmentAnnotationWidget::on_save_triggered() { save(false); } void FileAttachmentAnnotationWidget::on_saveAndOpen_triggered() { save(true); } void FileAttachmentAnnotationWidget::save(bool open) { LOCK_ANNOTATION Poppler::EmbeddedFile* embeddedFile = m_annotation->embeddedFile(); QString filePath = QFileDialog::getSaveFileName(0, tr("Save file attachment"), embeddedFile->name()); if(!filePath.isEmpty()) { QFile file(filePath); if(file.open(QIODevice::WriteOnly | QIODevice::Truncate)) { file.write(embeddedFile->data()); file.close(); if(open) { if(!QDesktopServices::openUrl(QUrl::fromLocalFile(filePath))) { QMessageBox::warning(0, tr("Warning"), tr("Could not open file attachment saved to '%1'.").arg(filePath)); } } } else { QMessageBox::warning(0, tr("Warning"), tr("Could not save file attachment to '%1'.").arg(filePath)); } } } } // qpdfview qpdfview-0.4.18/sources/annotationwidgets.h0000644000000000000000000000371713516127411017165 0ustar 00000000000000/* Copyright 2012-2013 Adam Reichold This file is part of qpdfview. qpdfview is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. qpdfview is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with qpdfview. If not, see . */ #ifndef ANNOTATIONWIDGETS_H #define ANNOTATIONWIDGETS_H #include #include class QMutex; namespace Poppler { class Annotation; class FileAttachmentAnnotation; } namespace qpdfview { class AnnotationWidget : public QPlainTextEdit { Q_OBJECT public: AnnotationWidget(QMutex* mutex, Poppler::Annotation* annotation, QWidget* parent = 0); signals: void wasModified(); protected: void keyPressEvent(QKeyEvent* event); protected slots: void on_textChanged(); private: Q_DISABLE_COPY(AnnotationWidget) QMutex* m_mutex; Poppler::Annotation* m_annotation; }; class FileAttachmentAnnotationWidget : public QToolButton { Q_OBJECT public: FileAttachmentAnnotationWidget(QMutex* mutex, Poppler::FileAttachmentAnnotation* annotation, QWidget* parent = 0); protected: void keyPressEvent(QKeyEvent* event); protected slots: void on_aboutToShow(); void on_aboutToHide(); void on_save_triggered(); void on_saveAndOpen_triggered(); private: Q_DISABLE_COPY(FileAttachmentAnnotationWidget) QMutex* m_mutex; Poppler::FileAttachmentAnnotation* m_annotation; void save(bool open = false); QMenu* m_menu; QAction* m_saveAction; QAction* m_saveAndOpenAction; }; } // qpdfview #endif // ANNOTATIONWIDGETS_H qpdfview-0.4.18/sources/bookmarkdialog.cpp0000644000000000000000000000457213516127411016744 0ustar 00000000000000/* Copyright 2014 Adam Reichold This file is part of qpdfview. qpdfview is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. qpdfview is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with qpdfview. If not, see . */ #include "bookmarkdialog.h" #include #include #include #include #include #include "global.h" #include "bookmarkmodel.h" namespace qpdfview { BookmarkDialog::BookmarkDialog(BookmarkItem& bookmark, QWidget* parent) : QDialog(parent), m_bookmark(bookmark) { setWindowTitle(tr("Bookmark")); QFormLayout* formLayout = new QFormLayout(this); setLayout(formLayout); m_pageEdit = new QLineEdit(this); m_pageEdit->setReadOnly(true); m_pageEdit->setText(QString::number(m_bookmark.page)); formLayout->addRow(tr("Page:"), m_pageEdit); m_labelEdit = new QLineEdit(this); m_labelEdit->setText(m_bookmark.label); formLayout->addRow(tr("Label:"), m_labelEdit); m_commentEdit = new QTextEdit(this); m_commentEdit->setPlainText(m_bookmark.comment); formLayout->addRow(tr("Comment:"), m_commentEdit); m_modifiedEdit = new QLineEdit(this); m_modifiedEdit->setReadOnly(true); m_modifiedEdit->setText(m_bookmark.modified.toString(Qt::SystemLocaleLongDate)); formLayout->addRow(tr("Modified:"), m_modifiedEdit); m_dialogButtonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, Qt::Horizontal, this); connect(m_dialogButtonBox, SIGNAL(accepted()), SLOT(accept())); connect(m_dialogButtonBox, SIGNAL(rejected()), SLOT(reject())); formLayout->addWidget(m_dialogButtonBox); } void BookmarkDialog::accept() { QDialog::accept(); m_bookmark.label = m_labelEdit->text(); m_bookmark.comment = m_commentEdit->toPlainText(); m_bookmark.modified = QDateTime::currentDateTime(); } void BookmarkDialog::showEvent(QShowEvent*) { m_labelEdit->setFocus(); } } // qpdfview qpdfview-0.4.18/sources/bookmarkdialog.h0000644000000000000000000000246513516127411016410 0ustar 00000000000000/* Copyright 2014 Adam Reichold This file is part of qpdfview. qpdfview is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. qpdfview is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with qpdfview. If not, see . */ #ifndef BOOKMARKDIALOG_H #define BOOKMARKDIALOG_H #include class QDialogButtonBox; class QLineEdit; class QTextEdit; namespace qpdfview { struct BookmarkItem; class BookmarkDialog : public QDialog { Q_OBJECT public: BookmarkDialog(BookmarkItem& bookmark, QWidget* parent = 0); public slots: void accept(); protected: void showEvent(QShowEvent*); private: Q_DISABLE_COPY(BookmarkDialog) BookmarkItem& m_bookmark; QLineEdit* m_pageEdit; QLineEdit* m_labelEdit; QTextEdit* m_commentEdit; QLineEdit* m_modifiedEdit; QDialogButtonBox* m_dialogButtonBox; }; } // qpdfview #endif // BOOKMARKDIALOG_H qpdfview-0.4.18/sources/bookmarkmenu.cpp0000644000000000000000000000650313516127411016445 0ustar 00000000000000/* Copyright 2014 S. Razi Alavizadeh Copyright 2012-2014 Adam Reichold This file is part of qpdfview. qpdfview is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. qpdfview is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with qpdfview. If not, see . */ #include "bookmarkmenu.h" #include "miscellaneous.h" #include namespace qpdfview { BookmarkMenu::BookmarkMenu(const QFileInfo& fileInfo, QWidget* parent) : QMenu(parent) { QAction* const action = menuAction(); action->setText(fileInfo.completeBaseName()); action->setToolTip(fileInfo.absoluteFilePath()); action->setData(fileInfo.absoluteFilePath()); m_openAction = addAction(tr("&Open")); m_openAction->setIcon(loadIconWithFallback(QLatin1String("document-open"))); m_openAction->setIconVisibleInMenu(true); connect(m_openAction, SIGNAL(triggered()), SLOT(on_open_triggered())); m_openInNewTabAction = addAction(tr("Open in new &tab")); m_openInNewTabAction->setIcon(loadIconWithFallback(QLatin1String("tab-new"))); m_openInNewTabAction->setIconVisibleInMenu(true); connect(m_openInNewTabAction, SIGNAL(triggered()), SLOT(on_openInNewTab_triggered())); m_jumpToPageActionGroup = new QActionGroup(this); connect(m_jumpToPageActionGroup, SIGNAL(triggered(QAction*)), SLOT(on_jumpToPage_triggered(QAction*))); m_separatorAction = addSeparator(); m_removeBookmarkAction = addAction(tr("&Remove bookmark")); connect(m_removeBookmarkAction, SIGNAL(triggered()), SLOT(on_removeBookmark_triggered())); } void BookmarkMenu::addJumpToPageAction(int page, const QString& label) { QAction* before = m_separatorAction; foreach(QAction* action, m_jumpToPageActionGroup->actions()) { if(action->data().toInt() == page) { action->setText(label); return; } else if(action->data().toInt() > page) { before = action; break; } } QAction* action = new QAction(label, this); action->setIcon(loadIconWithFallback(QLatin1String("go-jump"))); action->setIconVisibleInMenu(true); action->setData(page); insertAction(before, action); m_jumpToPageActionGroup->addAction(action); } void BookmarkMenu::removeJumpToPageAction(int page) { foreach(QAction* action, m_jumpToPageActionGroup->actions()) { if(action->data().toInt() == page) { delete action; break; } } } void BookmarkMenu::on_open_triggered() { emit openTriggered(absoluteFilePath()); } void BookmarkMenu::on_openInNewTab_triggered() { emit openInNewTabTriggered(absoluteFilePath()); } void BookmarkMenu::on_jumpToPage_triggered(QAction* action) { emit jumpToPageTriggered(absoluteFilePath(), action->data().toInt()); } void BookmarkMenu::on_removeBookmark_triggered() { emit removeBookmarkTriggered(absoluteFilePath()); } } // qpdfview qpdfview-0.4.18/sources/bookmarkmenu.h0000644000000000000000000000346613516127411016117 0ustar 00000000000000/* Copyright 2014 S. Razi Alavizadeh Copyright 2012-2014 Adam Reichold This file is part of qpdfview. qpdfview is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. qpdfview is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with qpdfview. If not, see . */ #ifndef BOOKMARKMENU_H #define BOOKMARKMENU_H #include #include class QFileInfo; #include "global.h" namespace qpdfview { class BookmarkMenu : public QMenu { Q_OBJECT public: BookmarkMenu(const QFileInfo& fileInfo, QWidget* parent = 0); QString absoluteFilePath() const { return menuAction()->data().toString(); } void addJumpToPageAction(int page, const QString& label); void removeJumpToPageAction(int page); signals: void openTriggered(const QString& filePath); void openInNewTabTriggered(const QString& filePath); void jumpToPageTriggered(const QString& filePath, int page); void removeBookmarkTriggered(const QString& filePath); protected slots: void on_open_triggered(); void on_openInNewTab_triggered(); void on_jumpToPage_triggered(QAction* action); void on_removeBookmark_triggered(); private: Q_DISABLE_COPY(BookmarkMenu) QAction* m_openAction; QAction* m_openInNewTabAction; QActionGroup* m_jumpToPageActionGroup; QAction* m_separatorAction; QAction* m_removeBookmarkAction; }; } // qpdfview #endif // BOOKMARKMENU_H qpdfview-0.4.18/sources/bookmarkmodel.cpp0000644000000000000000000000765513516127411016612 0ustar 00000000000000/* Copyright 2018 S. Razi Alavizadeh Copyright 2014-2015 Adam Reichold This file is part of qpdfview. qpdfview is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. qpdfview is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with qpdfview. If not, see . */ #include "bookmarkmodel.h" #include namespace qpdfview { static inline bool operator<(int page, const BookmarkItem& bookmark) { return page < bookmark.page; } static inline bool operator<(const BookmarkItem& bookmark, int page) { return bookmark.page < page; } QHash< QString, BookmarkModel* > BookmarkModel::s_instances; BookmarkModel* BookmarkModel::fromPath(const QString& path, bool create) { BookmarkModel* model = s_instances.value(path, 0); if(create && model == 0) { model = new BookmarkModel(qApp); s_instances.insert(path, model); } return model; } QList< QString > BookmarkModel::paths() { return s_instances.keys(); } void BookmarkModel::removePath(const QString& path) { delete s_instances.take(path); } void BookmarkModel::removeAllPaths() { qDeleteAll(s_instances); s_instances.clear(); } void BookmarkModel::addBookmark(const BookmarkItem& bookmark) { const QVector< BookmarkItem >::iterator at = qLowerBound(m_bookmarks.begin(), m_bookmarks.end(), bookmark.page); const int row = at - m_bookmarks.begin(); if(at != m_bookmarks.end() && at->page == bookmark.page) { *at = bookmark; emit dataChanged(createIndex(row, 0), createIndex(row, 1)); } else { beginInsertRows(QModelIndex(), row, row); m_bookmarks.insert(at, bookmark); endInsertRows(); } } void BookmarkModel::removeBookmark(const BookmarkItem& bookmark) { const QVector< BookmarkItem >::iterator at = qBinaryFind(m_bookmarks.begin(), m_bookmarks.end(), bookmark.page); const int row = at - m_bookmarks.begin(); if(at != m_bookmarks.end()) { beginRemoveRows(QModelIndex(), row, row); m_bookmarks.erase(at); endRemoveRows(); } } void BookmarkModel::findBookmark(BookmarkItem& bookmark) const { const QVector< BookmarkItem >::const_iterator at = qBinaryFind(m_bookmarks.constBegin(), m_bookmarks.constEnd(), bookmark.page); if(at != m_bookmarks.constEnd()) { bookmark = *at; } } Qt::ItemFlags BookmarkModel::flags(const QModelIndex&) const { return Qt::ItemIsEnabled | Qt::ItemIsSelectable; } int BookmarkModel::columnCount(const QModelIndex&) const { return 2; } int BookmarkModel::rowCount(const QModelIndex& parent) const { return !parent.isValid() ? m_bookmarks.count() : 0; } QVariant BookmarkModel::data(const QModelIndex& index, int role) const { if(!index.isValid() || index.row() >= m_bookmarks.count()) { return QVariant(); } const BookmarkItem& bookmark = m_bookmarks.at(index.row()); switch(role) { default: return QVariant(); case PageRole: return bookmark.page; case LabelRole: case Qt::DisplayRole: return index.column() == 0 ? bookmark.label : QString::number(bookmark.page); case CommentRole: return bookmark.comment; case Qt::ToolTipRole: return QString("

%1

").arg(bookmark.comment); case ModifiedRole: return bookmark.modified; case Qt::TextAlignmentRole: return index.column() == 0 ? Qt::AlignLeft : Qt::AlignRight; } } BookmarkModel::BookmarkModel(QObject* parent) : QAbstractListModel(parent), m_bookmarks() { } } // qpdfview qpdfview-0.4.18/sources/bookmarkmodel.h0000644000000000000000000000457413516127411016254 0ustar 00000000000000/* Copyright 2014-2015 Adam Reichold This file is part of qpdfview. qpdfview is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. qpdfview is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with qpdfview. If not, see . */ #ifndef BOOKMARKMODEL_H #define BOOKMARKMODEL_H #include #include #include #include namespace qpdfview { struct BookmarkItem { int page; QString label; QString comment; QDateTime modified; BookmarkItem(int page = -1, const QString& label = QString(), const QString& comment = QString(), const QDateTime& modified = QDateTime::currentDateTime()) : page(page), label(label), comment(comment), modified(modified) {} }; } // namespace qpdfview Q_DECLARE_TYPEINFO(qpdfview::BookmarkItem, Q_MOVABLE_TYPE); namespace qpdfview { class BookmarkModel : public QAbstractListModel { Q_OBJECT public: static BookmarkModel* fromPath(const QString& path, bool create = false); static QList< QString > paths(); static void removePath(const QString& path); static void removeAllPaths(); bool isEmpty() const { return m_bookmarks.isEmpty(); } void addBookmark(const BookmarkItem& bookmark); void removeBookmark(const BookmarkItem& bookmark); void findBookmark(BookmarkItem& bookmark) const; enum { PageRole = Qt::UserRole + 1, LabelRole, CommentRole, ModifiedRole }; Qt::ItemFlags flags(const QModelIndex&) const; int columnCount(const QModelIndex& parent = QModelIndex()) const; int rowCount(const QModelIndex& parent = QModelIndex()) const; QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const; private: Q_DISABLE_COPY(BookmarkModel) static QHash< QString, BookmarkModel* > s_instances; BookmarkModel(QObject* parent = 0); QVector< BookmarkItem > m_bookmarks; }; } // qpdfview #endif // BOOKMARKMODEL_H qpdfview-0.4.18/sources/database.cpp0000644000000000000000000006306413516127411015524 0ustar 00000000000000/* Copyright 2014 S. Razi Alavizadeh Copyright 2012-2018 Adam Reichold Copyright 2012 Michał Trybus Copyright 2018 Egor Zenkov This file is part of qpdfview. qpdfview is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. qpdfview is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with qpdfview. If not, see . */ #include "database.h" #include #include #include #include #include #if QT_VERSION >= QT_VERSION_CHECK(5,0,0) #include #else #include #endif // QT_VERSION #ifdef WITH_SQL #include #include #endif // WITH_SQL #include "settings.h" #include "documentview.h" #include "bookmarkmodel.h" #ifdef WITH_SQL namespace { using namespace qpdfview; class Transaction { public: Transaction(QSqlDatabase& database) : m_database(database), m_committed(false) { if(s_current != 0) { return; } if(!m_database.transaction()) { throw m_database.lastError(); } s_current = this; } ~Transaction() throw() { if(s_current != this) { return; } if(!m_committed) { m_database.rollback(); } s_current = 0; } void commit() { if(s_current != this) { return; } if(!m_database.commit()) { throw m_database.lastError(); } m_committed = true; } private: Q_DISABLE_COPY(Transaction) QSqlDatabase& m_database; bool m_committed; static Transaction* s_current; }; Transaction* Transaction::s_current = 0; class Query { private: template< typename T > class BindValue { private: friend class Query; explicit BindValue(const T& value) : m_value(value) {} public: inline operator QVariant() const { return Conversion< T >::convert(m_value); } private: const T& m_value; template< typename S, bool Defined = QMetaTypeId2< S >::Defined > struct Conversion { static inline QVariant convert(const S& value) { return QVariant(value); } }; template< typename S > struct Conversion< S, false > { static inline QVariant convert(const S& value) { return QVariant(static_cast< uint >(value)); } }; }; public: class Value { private: friend class Query; explicit Value(const QVariant& value) : m_value(value) {} public: template< typename T > inline operator T() const { return Conversion< T >::convert(m_value); } private: const QVariant m_value; template< typename T, bool Defined = QMetaTypeId2< T >::Defined > struct Conversion { static inline T convert(const QVariant& value) { return value.value< T >(); } }; template< typename T > struct Conversion< T, false > { static inline T convert(const QVariant& value) { return static_cast< T >(value.value< uint >()); } }; }; public: Query(QSqlDatabase& database) : m_query(database), m_bindValueIndex(0), m_valueIndex(0) { } void prepare(const QString& query) { if(!m_query.prepare(query)) { throw m_query.lastError(); } m_bindValueIndex = 0; } void exec() { if(!m_query.exec()) { throw m_query.lastError(); } m_bindValueIndex = 0; } void exec(const QString& query) { if(!m_query.exec(query)) { throw m_query.lastError(); } m_bindValueIndex = 0; } Query& operator <<(const QVariant& value) { m_query.bindValue(m_bindValueIndex++, value); return *this; } template< typename T > Query& operator <<(const T& value) { m_query.bindValue(m_bindValueIndex++, BindValue< T >(value)); return *this; } bool nextRecord() { if(!m_query.isActive()) { throw m_query.lastError(); } m_valueIndex = 0; return m_query.next(); } Value nextValue() { return Value(m_query.value(m_valueIndex++)); } private: Q_DISABLE_COPY(Query) QSqlQuery m_query; int m_bindValueIndex; int m_valueIndex; }; inline QByteArray hashFilePath(const QString& filePath) { return QCryptographicHash::hash(filePath.toUtf8(), QCryptographicHash::Sha1).toBase64(); } } // anonymous #endif // WITH_SQL namespace qpdfview { Database* Database::s_instance = 0; Database* Database::instance() { if(s_instance == 0) { s_instance = new Database(qApp); } return s_instance; } Database::~Database() { s_instance = 0; } QStringList Database::knownInstanceNames() { QStringList instanceNames; #ifdef WITH_SQL try { Transaction transaction(m_database); Query query(m_database); query.exec("SELECT DISTINCT(instanceName) FROM tabs_v5"); while(query.nextRecord()) { const QString instanceName = query.nextValue(); if(!instanceName.isEmpty()) { instanceNames.append(instanceName); } } transaction.commit(); } catch(QSqlError& error) { qDebug() << error; } #endif // WITH_SQL return instanceNames; } void Database::restoreTabs(const RestoreTab& restoreTab) { #ifdef WITH_SQL try { Transaction transaction(m_database); Query query(m_database); query.prepare("SELECT filePath,currentPage,continuousMode,layoutMode,rightToLeftMode,scaleMode,scaleFactor,rotation,renderFlags,firstPage" " FROM tabs_v5 WHERE instanceName==? ORDER BY tabIndex"); query << instanceName(); query.exec(); while(query.nextRecord()) { if(DocumentView* newTab = restoreTab(query.nextValue())) { const int page = query.nextValue(); newTab->setContinuousMode(query.nextValue()); newTab->setLayoutMode(query.nextValue()); newTab->setRightToLeftMode(query.nextValue()); newTab->setScaleMode(query.nextValue()); newTab->setScaleFactor(query.nextValue()); newTab->setRotation(query.nextValue()); newTab->setRenderFlags(query.nextValue()); newTab->setFirstPage(query.nextValue()); newTab->jumpToPage(page, false); } } transaction.commit(); } catch(QSqlError& error) { qDebug() << error; } #else Q_UNUSED(restoreTab); #endif // WITH_SQL } void Database::saveTabs(const QVector< DocumentView* >& tabs) { #ifdef WITH_SQL try { Transaction transaction(m_database); Query query(m_database); query.prepare("DELETE FROM tabs_v5 WHERE instanceName==?"); query << instanceName(); query.exec(); query.prepare("INSERT INTO tabs_v5" " (filePath,instanceName,tabIndex,currentPage,continuousMode,layoutMode,rightToLeftMode,scaleMode,scaleFactor,rotation,renderFlags,firstPage)" " VALUES (?,?,?,?,?,?,?,?,?,?,?,?)"); for(int tabIndex = 0; tabIndex < tabs.size(); ++tabIndex) { const DocumentView* const tab = tabs.at(tabIndex); query << tab->fileInfo().absoluteFilePath() << instanceName() << tabIndex << tab->currentPage() << tab->continuousMode() << tab->layoutMode() << tab->rightToLeftMode() << tab->scaleMode() << tab->scaleFactor() << tab->rotation() << tab->renderFlags() << tab->firstPage(); query.exec(); } transaction.commit(); } catch(QSqlError& error) { qDebug() << error; } #else Q_UNUSED(tabs); #endif // WITH_SQL } void Database::clearTabs() { #ifdef WITH_SQL try { Transaction transaction(m_database); Query query(m_database); query.exec("DELETE FROM tabs_v5"); transaction.commit(); } catch(QSqlError& error) { qDebug() << error; } #endif // WITH_SQL } void Database::restoreBookmarks() { #ifdef WITH_SQL try { Transaction transaction(m_database); Query outerQuery(m_database); Query innerQuery(m_database); outerQuery.exec("SELECT DISTINCT(filePath) FROM bookmarks_v3"); innerQuery.prepare("SELECT page,label,comment,modified" " FROM bookmarks_v3 WHERE filePath==?"); while(outerQuery.nextRecord()) { const QString filePath = outerQuery.nextValue(); innerQuery << filePath; innerQuery.exec(); BookmarkModel* model = BookmarkModel::fromPath(filePath, true); while(innerQuery.nextRecord()) { const int page = innerQuery.nextValue(); const QString label = innerQuery.nextValue(); const QString comment = innerQuery.nextValue(); const QDateTime modified = innerQuery.nextValue(); model->addBookmark(BookmarkItem(page, label, comment, modified)); } } transaction.commit(); } catch(QSqlError& error) { qDebug() << error; } #endif // WITH_SQL } void Database::saveBookmarks() { #ifdef WITH_SQL try { Transaction transaction(m_database); Query query(m_database); query.exec("DELETE FROM bookmarks_v3"); if(Settings::instance()->mainWindow().restoreBookmarks()) { query.prepare("INSERT INTO bookmarks_v3" " (filePath,page,label,comment,modified)" " VALUES (?,?,?,?,?)"); foreach(const QString& filePath, BookmarkModel::paths()) { const BookmarkModel* model = BookmarkModel::fromPath(filePath); for(int row = 0, rowCount = model->rowCount(); row < rowCount; ++row) { const QModelIndex index = model->index(row); query << filePath << index.data(BookmarkModel::PageRole) << index.data(BookmarkModel::LabelRole) << index.data(BookmarkModel::CommentRole) << index.data(BookmarkModel::ModifiedRole); query.exec(); } } } transaction.commit(); } catch(QSqlError& error) { qDebug() << error; } #endif // WITH_SQL } void Database::clearBookmarks() { #ifdef WITH_SQL try { Transaction transaction(m_database); Query query(m_database); query.exec("DELETE FROM bookmarks_v3"); transaction.commit(); } catch(QSqlError& error) { qDebug() << error; } #endif // WITH_SQL } void Database::restorePerFileSettings(DocumentView* tab) { #ifdef WITH_SQL if(!Settings::instance()->mainWindow().restorePerFileSettings()) { return; } try { const QByteArray filePath = hashFilePath(tab->fileInfo().absoluteFilePath()); Transaction transaction(m_database); Query query(m_database); query.prepare("SELECT currentPage,continuousMode,layoutMode,rightToLeftMode,scaleMode,scaleFactor,rotation,renderFlags,firstPage" " FROM perfilesettings_v4 WHERE filePath==?"); query << filePath; query.exec(); if(query.nextRecord()) { const int page = query.nextValue(); tab->setContinuousMode(query.nextValue()); tab->setLayoutMode(query.nextValue()); tab->setRightToLeftMode(query.nextValue()); tab->setScaleMode(query.nextValue()); tab->setScaleFactor(query.nextValue()); tab->setRotation(query.nextValue()); tab->setRenderFlags(query.nextValue()); tab->setFirstPage(query.nextValue()); tab->jumpToPage(page, false); } query.prepare("SELECT expandedPath FROM perfilesettings_outline_v1 WHERE filePath==?"); query << filePath; query.exec(); QSet< QByteArray > expandedPaths; while(query.nextRecord()) { expandedPaths.insert(query.nextValue()); } tab->restoreExpandedPaths(expandedPaths); transaction.commit(); } catch(QSqlError& error) { qDebug() << error; } #else Q_UNUSED(tab); #endif // WITH_SQL } void Database::savePerFileSettings(const DocumentView* tab) { #ifdef WITH_SQL if(!Settings::instance()->mainWindow().restorePerFileSettings()) { return; } try { const QByteArray filePath = hashFilePath(tab->fileInfo().absoluteFilePath()); Transaction transaction(m_database); Query query(m_database); query.prepare("INSERT OR REPLACE INTO perfilesettings_v4" " (lastUsed,filePath,currentPage,continuousMode,layoutMode,rightToLeftMode,scaleMode,scaleFactor,rotation,renderFlags,firstPage)" " VALUES (strftime('%s','now'),?,?,?,?,?,?,?,?,?,?)"); query << filePath << tab->currentPage() << tab->continuousMode() << tab->layoutMode() << tab->rightToLeftMode() << tab->scaleMode() << tab->scaleFactor() << tab->rotation() << tab->renderFlags() << tab->firstPage(); query.exec(); query.prepare("DELETE FROM perfilesettings_outline_v1 WHERE filePath==?"); query << filePath; query.exec(); query.prepare("INSERT INTO perfilesettings_outline_v1" " (filePath,expandedPath)" " VALUES (?,?)"); foreach(const QByteArray& expandedPath, tab->saveExpandedPaths()) { query << filePath << expandedPath; query.exec(); } transaction.commit(); } catch(QSqlError& error) { qDebug() << error; } #else Q_UNUSED(tab); #endif // WITH_SQL } Database::Database(QObject* parent) : QObject(parent) { #ifdef WITH_SQL #if QT_VERSION >= QT_VERSION_CHECK(5,0,0) const QString path = QStandardPaths::writableLocation(QStandardPaths::DataLocation); #else const QString path = QDesktopServices::storageLocation(QDesktopServices::DataLocation); #endif // QT_VERSION QDir().mkpath(path); m_database = QSqlDatabase::addDatabase("QSQLITE"); m_database.setDatabaseName(QDir(path).filePath("database")); if(!m_database.open()) { qDebug() << m_database.lastError(); return; } try { Query query(m_database); query.exec("PRAGMA synchronous = OFF"); query.exec("PRAGMA journal_mode = MEMORY"); } catch(QSqlError& error) { qDebug() << error; } const QStringList tables = m_database.tables(); // tabs if(!tables.contains("tabs_v5")) { if(prepareTabs_v5()) { if(tables.contains("tabs_v4")) { migrateTabs_v4_v5(); } else if(tables.contains("tabs_v3")) { migrateTabs_v3_v5(); } else if(tables.contains("tabs_v2")) { migrateTabs_v2_v5(); } else if(tables.contains("tabs_v1")) { migrateTabs_v1_v5(); } } } // bookmarks if(!tables.contains("bookmarks_v3")) { if(prepareBookmarks_v3()) { if(tables.contains("bookmarks_v2")) { migrateBookmarks_v2_v3(); } else if(tables.contains("bookmarks_v1")) { migrateBookmarks_v1_v3(); } } } // per-file settings if(!tables.contains("perfilesettings_v4")) { if(preparePerFileSettings_v4()) { if(tables.contains("perfilesettings_v3")) { migratePerFileSettings_v3_v4(); } else if(tables.contains("perfilesettings_v2")) { migratePerFileSettings_v2_v4(); } else if(tables.contains("perfilesettings_v1")) { migratePerFileSettings_v1_v4(); } } } if(!tables.contains("perfilesettings_outline_v1")) { preparePerFileSettings_Outline_v1(); } limitPerFileSettings(); #endif // WITH_SQL } QString Database::instanceName() { QString instanceName = qApp->objectName(); if(instanceName.isNull()) { instanceName = QLatin1String(""); } return instanceName; } #ifdef WITH_SQL bool Database::prepareTabs_v5() { return prepareTable("CREATE TABLE tabs_v5 (" " filePath TEXT" " ,instanceName TEXT" " ,tabIndex INTEGER" " ,currentPage INTEGER" " ,continuousMode INTEGER" " ,layoutMode INTEGER" " ,rightToLeftMode INTEGER" " ,scaleMode INTEGER" " ,scaleFactor REAL" " ,rotation INTEGER" " ,renderFlags INTEGER" " ,firstPage INTEGER" " ,PRIMARY KEY (instanceName, tabIndex)" " )"); } bool Database::prepareBookmarks_v3() { return prepareTable("CREATE TABLE bookmarks_v3 (" " filePath TEXT" " ,page INTEGER" " ,label TEXT" " ,comment TEXT" " ,modified DATETIME" " )"); } bool Database::preparePerFileSettings_v4() { return prepareTable("CREATE TABLE perfilesettings_v4 (" " lastUsed INTEGER" " ,filePath TEXT PRIMARY KEY" " ,currentPage INTEGER" " ,continuousMode INTEGER" " ,layoutMode INTEGER" " ,rightToLeftMode INTEGER" " ,scaleMode INTEGER" " ,scaleFactor REAL" " ,rotation INTEGER" " ,renderFlags INTEGER" " ,firstPage INTEGER" " )"); } bool Database::preparePerFileSettings_Outline_v1() { return prepareTable("CREATE TABLE perfilesettings_outline_v1 (" " filePath TEXT" " ,expandedPath TEXT" " ,FOREIGN KEY (filePath) REFERENCES perfilesettings_v4 (filePath) ON DELETE CASCADE" " )"); } void Database::migrateTabs_v4_v5() { migrateTable("INSERT INTO tabs_v5" " SELECT filePath,instanceName,(SELECT MAX(tabIndex)+1 FROM tabs_v5 WHERE tabs_v5.instanceName=tabs_v4.instanceName),currentPage,continuousMode,layoutMode,rightToLeftMode,scaleMode,scaleFactor,rotation,0,-1" " FROM tabs_v4", "DROP TABLE tabs_v4", "Migrated tabs from v4 to v5, dropping v4."); } void Database::migrateTabs_v3_v5() { migrateTable("INSERT INTO tabs_v5" " SELECT filePath,instanceName,(SELECT MAX(tabIndex)+1 FROM tabs_v5 WHERE tabs_v5.instanceName=tabs_v3.instanceName),currentPage,continuousMode,layoutMode,rightToLeftMode,scaleMode,scaleFactor,rotation,0,-1" " FROM tabs_v3", "DROP TABLE tabs_v3", "Migrated tabs from v3 to v5, dropping v3."); } void Database::migrateTabs_v2_v5() { migrateTable("INSERT INTO tabs_v5" " SELECT filePath,instanceName,(SELECT MAX(tabIndex)+1 FROM tabs_v5 WHERE tabs_v5.instanceName=tabs_v2.instanceName),currentPage,continuousMode,layoutMode,0,scaleMode,scaleFactor,rotation,0,-1" " FROM tabs_v2", "DROP TABLE tabs_v2" , "Migrated tabs from v2 to v5, dropping v2."); } void Database::migrateTabs_v1_v5() { migrateTable("INSERT INTO tabs_v5" " SELECT filePath,'',(SELECT MAX(tabIndex)+1 FROM tabs_v5 WHERE tabs_v5.instanceName=''),currentPage,continuousMode,layoutMode,0,scaleMode,scaleFactor,rotation,0,-1" " FROM tabs_v1", "DROP TABLE tabs_v1", "Migrated tabs from v1 to v5, dropping v1."); } void Database::migrateBookmarks_v2_v3() { migrateTable("INSERT INTO bookmarks_v3" " SELECT filePath,page,label,'',datetime('now')" " FROM bookmarks_v2", "DROP TABLE bookmarks_v2", "Migrated bookmarks from v2 to v3, dropping v2."); } void Database::migrateBookmarks_v1_v3() { try { Transaction transaction(m_database); Query outerQuery(m_database); Query innerQuery(m_database); outerQuery.exec("SELECT filePath,pages FROM bookmarks_v1"); innerQuery.prepare("INSERT INTO bookmarks_v3" " (filePath,page,label,comment,modified)" " VALUES (?,?,?,'',datetime('now'))"); while(outerQuery.nextRecord()) { const QString filePath = outerQuery.nextValue(); const QString pages = outerQuery.nextValue(); foreach(const QString& page, pages.split(",", QString::SkipEmptyParts)) { innerQuery << filePath << page << tr("Jump to page %1").arg(page); innerQuery.exec(); } } qWarning() << "Migrated bookmarks from v1 to v3, dropping v1."; outerQuery.exec("DROP TABLE bookmarks_v1"); transaction.commit(); } catch(QSqlError& error) { qDebug() << error; } } void Database::migratePerFileSettings_v3_v4() { migrateTable("INSERT INTO perfilesettings_v4" " SELECT lastUsed,filePath,currentPage,continuousMode,layoutMode,rightToLeftMode,scaleMode,scaleFactor,rotation,0,firstPage" " FROM perfilesettings_v3", "DROP TABLE perfilesettings_v3", "Migrated per-file settings from v3 to v4, dropping v3."); } void Database::migratePerFileSettings_v2_v4() { migrateTable("INSERT INTO perfilesettings_v4" " SELECT lastUsed,filePath,currentPage,continuousMode,layoutMode,rightToLeftMode,scaleMode,scaleFactor,rotation,0,-1" " FROM perfilesettings_v2", "DROP TABLE perfilesettings_v2", "Migrated per-file settings from v2 to v4, dropping v2."); } void Database::migratePerFileSettings_v1_v4() { migrateTable("INSERT INTO perfilesettings_v4" " SELECT lastUsed,filePath,currentPage,continuousMode,layoutMode,0,scaleMode,scaleFactor,rotation,0,-1" " FROM perfilesettings_v1", "DROP TABLE perfilesettings_v1", "Migrated per-file settings from v1 to v4, dropping v1."); } bool Database::prepareTable(const QString& prepare) { try { Transaction transaction(m_database); Query query(m_database); query.exec(prepare); transaction.commit(); return true; } catch(QSqlError& error) { qDebug() << error; return false; } } void Database::migrateTable(const QString& migrate, const QString& prune, const QString& warning) { try { Transaction transaction(m_database); Query query(m_database); query.exec(migrate); qWarning() << warning; query.exec(prune); transaction.commit(); } catch(QSqlError& error) { qDebug() << error; } } void Database::limitPerFileSettings() { try { Transaction transaction(m_database); Query query(m_database); if(Settings::instance()->mainWindow().restorePerFileSettings()) { query.prepare("DELETE FROM perfilesettings_v4" " WHERE filePath NOT IN (" " SELECT filePath FROM perfilesettings_v4" " ORDER BY lastUsed DESC LIMIT ?" " )"); query << Settings::instance()->mainWindow().perFileSettingsLimit(); query.exec(); } else { query.exec("DELETE FROM perfilesettings_v4"); } transaction.commit(); } catch(QSqlError& error) { qDebug() << error; } } #endif // WITH_SQL } // qpdfview qpdfview-0.4.18/sources/database.h0000644000000000000000000000455613516127411015172 0ustar 00000000000000/* Copyright 2014 S. Razi Alavizadeh Copyright 2013-2018 Adam Reichold Copyright 2018 Egor Zenkov This file is part of qpdfview. qpdfview is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. qpdfview is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with qpdfview. If not, see . */ #ifndef DATABASE_H #define DATABASE_H #include #ifdef WITH_SQL #include #endif // WITH_SQL class QDateTime; #include "global.h" namespace qpdfview { class DocumentView; class Database : public QObject { Q_OBJECT public: static Database* instance(); ~Database(); QStringList knownInstanceNames(); struct RestoreTab { virtual DocumentView* operator()(const QString& absoluteFilePath) const = 0; }; void restoreTabs(const RestoreTab& restoreTab); void saveTabs(const QVector< DocumentView* >& tabs); void clearTabs(); void restoreBookmarks(); void saveBookmarks(); void clearBookmarks(); void restorePerFileSettings(DocumentView* tab); void savePerFileSettings(const DocumentView* tab); private: Q_DISABLE_COPY(Database) static Database* s_instance; Database(QObject* parent = 0); static QString instanceName(); #ifdef WITH_SQL bool prepareTabs_v5(); bool prepareBookmarks_v3(); bool preparePerFileSettings_v4(); bool preparePerFileSettings_Outline_v1(); void migrateTabs_v4_v5(); void migrateTabs_v3_v5(); void migrateTabs_v2_v5(); void migrateTabs_v1_v5(); void migrateBookmarks_v2_v3(); void migrateBookmarks_v1_v3(); void migratePerFileSettings_v3_v4(); void migratePerFileSettings_v2_v4(); void migratePerFileSettings_v1_v4(); bool prepareTable(const QString& prepare); void migrateTable(const QString& migrate, const QString& prune, const QString& warning); void limitPerFileSettings(); QSqlDatabase m_database; #endif // WITH_SQL }; } // qpdfview #endif // DATABASE_H qpdfview-0.4.18/sources/djvumodel.cpp0000644000000000000000000005667413516127411015762 0ustar 00000000000000/* Copyright 2014 S. Razi Alavizadeh Copyright 2018 Marshall Banana Copyright 2013-2014, 2018 Adam Reichold Copyright 2013 Alexander Volkov This file is part of qpdfview. The implementation is based on KDjVu by Pino Toscano. qpdfview is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. qpdfview is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with qpdfview. If not, see . */ #include "djvumodel.h" #include #include #include #if defined(Q_OS_WIN) && defined(DJVU_STATIC) #define DDJVUAPI /**/ #define MINILISPAPI /**/ #endif // Q_OS_WIN DJVU_STATIC #include #include #define LOCK_PAGE QMutexLocker mutexLocker(&m_parent->m_mutex); #define LOCK_DOCUMENT QMutexLocker mutexLocker(&m_mutex); #if DDJVUAPI_VERSION < 23 #define LOCK_PAGE_GLOBAL QMutexLocker globalMutexLocker(m_parent->m_globalMutex); #define LOCK_DOCUMENT_GLOBAL QMutexLocker globalMutexLocker(m_globalMutex); #else #define LOCK_PAGE_GLOBAL #define LOCK_DOCUMENT_GLOBAL #endif // DDJVUAPI_VERSION namespace { using namespace qpdfview; using namespace qpdfview::Model; inline miniexp_t miniexp_cadddr(miniexp_t exp) { return miniexp_cadr(miniexp_cddr(exp)); } inline miniexp_t miniexp_caddddr(miniexp_t exp) { return miniexp_caddr(miniexp_cddr(exp)); } inline miniexp_t skip(miniexp_t exp, int offset) { while(offset-- > 0) { exp = miniexp_cdr(exp); } return exp; } void clearMessageQueue(ddjvu_context_t* context, bool wait) { if(wait) { ddjvu_message_wait(context); } while(true) { if(ddjvu_message_peek(context) != 0) { ddjvu_message_pop(context); } else { break; } } } void waitForMessageTag(ddjvu_context_t* context, ddjvu_message_tag_t tag) { ddjvu_message_wait(context); while(true) { ddjvu_message_t* message = ddjvu_message_peek(context); if(message != 0) { if(message->m_any.tag == tag) { break; } ddjvu_message_pop(context); } else { break; } } } QPainterPath loadLinkBoundary(const QString& type, miniexp_t boundaryExp, QSizeF size) { QPainterPath boundary; const int count = miniexp_length(boundaryExp); if(count == 4 && (type == QLatin1String("rect") || type == QLatin1String("oval"))) { QPoint p(miniexp_to_int(miniexp_car(boundaryExp)), miniexp_to_int(miniexp_cadr(boundaryExp))); QSize s(miniexp_to_int(miniexp_caddr(boundaryExp)), miniexp_to_int(miniexp_cadddr(boundaryExp))); p.setY(size.height() - s.height() - p.y()); const QRectF r(p, s); if(type == QLatin1String("rect")) { boundary.addRect(r); } else { boundary.addEllipse(r); } } else if(count > 0 && count % 2 == 0 && type == QLatin1String("poly")) { QPolygon polygon; for(int index = 0; index < count; index += 2) { QPoint p(miniexp_to_int(miniexp_nth(index, boundaryExp)), miniexp_to_int(miniexp_nth(index + 1, boundaryExp))); p.setY(size.height() - p.y()); polygon << p; } boundary.addPolygon(polygon); } return QTransform::fromScale(1.0 / size.width(), 1.0 / size.height()).map(boundary); } Link* loadLinkTarget(const QPainterPath& boundary, miniexp_t targetExp, int index, const QHash< QString, int >& pageByName) { QString target; if(miniexp_stringp(targetExp)) { target = QString::fromUtf8(miniexp_to_str(targetExp)); } else if(miniexp_length(targetExp) == 3 && qstrcmp(miniexp_to_name(miniexp_car(targetExp)), "url") == 0) { target = QString::fromUtf8(miniexp_to_str(miniexp_cadr(targetExp))); } if(target.isEmpty()) { return 0; } if(target.at(0) == QLatin1Char('#')) { target.remove(0, 1); bool ok = false; int targetPage = target.toInt(&ok); if(!ok) { const int page = pageByName.value(target); if(page != 0) { targetPage = page; } else { return 0; } } else { if(target.at(0) == QLatin1Char('+') || target.at(0) == QLatin1Char('-')) { targetPage += index + 1; } } return new Link(boundary, targetPage); } else { return new Link(boundary, target); } } QList< Link* > loadLinks(miniexp_t linkExp, QSizeF size, int index, const QHash< QString, int >& pageByName) { QList< Link* > links; for(miniexp_t linkItem = miniexp_nil; miniexp_consp(linkExp); linkExp = miniexp_cdr(linkExp)) { linkItem = miniexp_car(linkExp); if(miniexp_length(linkItem) < 4 || qstrcmp(miniexp_to_name(miniexp_car(linkItem)), "maparea") != 0) { continue; } miniexp_t targetExp = miniexp_cadr(linkItem); miniexp_t boundaryExp = miniexp_cadddr(linkItem); if(!miniexp_symbolp(miniexp_car(boundaryExp))) { continue; } const QString type = QString::fromUtf8(miniexp_to_name(miniexp_car(boundaryExp))); if(type == QLatin1String("rect") || type == QLatin1String("oval") || type == QLatin1String("poly")) { QPainterPath boundary = loadLinkBoundary(type, miniexp_cdr(boundaryExp), size); if(!boundary.isEmpty()) { Link* link = loadLinkTarget(boundary, targetExp, index, pageByName); if(link != 0) { links.append(link); } } } } return links; } QString loadText(miniexp_t textExp, QSizeF size, const QRectF& rect) { if(miniexp_length(textExp) < 6 && !miniexp_symbolp(miniexp_car(textExp))) { return QString(); } const int xmin = miniexp_to_int(miniexp_cadr(textExp)); const int ymin = miniexp_to_int(miniexp_caddr(textExp)); const int xmax = miniexp_to_int(miniexp_cadddr(textExp)); const int ymax = miniexp_to_int(miniexp_caddddr(textExp)); if(rect.intersects(QRect(xmin, size.height() - ymax, xmax - xmin, ymax - ymin))) { const QString type = QString::fromUtf8(miniexp_to_name(miniexp_car(textExp))); if(type == QLatin1String("word")) { return QString::fromUtf8(miniexp_to_str(miniexp_nth(5, textExp))); } else { QStringList text; textExp = skip(textExp, 5); for(miniexp_t textItem = miniexp_nil; miniexp_consp(textExp); textExp = miniexp_cdr(textExp)) { textItem = miniexp_car(textExp); text.append(loadText(textItem, size, rect)); } return type == QLatin1String("line") ? text.join(" ") : text.join("\n"); } } return QString(); } QList< QRectF > findText(miniexp_t pageTextExp, QSizeF size, const QTransform& transform, const QStringList& words, bool matchCase, bool wholeWords) { if(words.isEmpty()) { return QList< QRectF >(); } const Qt::CaseSensitivity caseSensitivity = matchCase ? Qt::CaseSensitive : Qt::CaseInsensitive; QRectF result; int wordIndex = 0; QList< miniexp_t > texts; QList< QRectF > results; texts.append(pageTextExp); while(!texts.isEmpty()) { miniexp_t textExp = texts.takeFirst(); if(miniexp_length(textExp) < 6 || !miniexp_symbolp(miniexp_car(textExp))) { continue; } const QString type = QString::fromUtf8(miniexp_to_name(miniexp_car(textExp))); if(type == QLatin1String("word")) { const QString text = QString::fromUtf8(miniexp_to_str(miniexp_nth(5, textExp))); int index = 0; while((index = text.indexOf(words.at(wordIndex), index, caseSensitivity)) != -1) { const int nextIndex = index + words.at(wordIndex).length(); const bool wordBegins = index == 0 || !text.at(index - 1).isLetterOrNumber(); const bool wordEnds = nextIndex == text.length() || !text.at(nextIndex).isLetterOrNumber(); if(!wholeWords || (wordBegins && wordEnds)) { const int xmin = miniexp_to_int(miniexp_cadr(textExp)); const int ymin = miniexp_to_int(miniexp_caddr(textExp)); const int xmax = miniexp_to_int(miniexp_cadddr(textExp)); const int ymax = miniexp_to_int(miniexp_caddddr(textExp)); result = result.united(QRectF(xmin, size.height() - ymax, xmax - xmin, ymax - ymin)); // Advance after partial match if(++wordIndex == words.size()) { results.append(transform.mapRect(result)); // Reset after full match result = QRectF(); wordIndex = 0; } } else { // Reset after malformed match result = QRectF(); wordIndex = 0; } if((index = nextIndex) >= text.length()) { break; } } if(index < 0) { // Reset after empty match result = QRectF(); wordIndex = 0; } } else { textExp = skip(textExp, 5); for(miniexp_t textItem = miniexp_nil; miniexp_consp(textExp); textExp = miniexp_cdr(textExp)) { textItem = miniexp_car(textExp); texts.append(textItem); } } } return results; } Outline loadOutline(miniexp_t outlineExp, const QHash< QString, int >& pageByName) { Outline outline; for(miniexp_t outlineItem = miniexp_nil; miniexp_consp(outlineExp); outlineExp = miniexp_cdr(outlineExp)) { outlineItem = miniexp_car(outlineExp); if(miniexp_length(outlineItem) < 2 || !miniexp_stringp(miniexp_car(outlineItem)) || !miniexp_stringp(miniexp_cadr(outlineItem))) { continue; } const QString title = QString::fromUtf8(miniexp_to_str(miniexp_car(outlineItem))); if(title.isEmpty()) { continue; } outline.push_back(Section()); Section& section = outline.back(); section.title = title; QString destination = QString::fromUtf8(miniexp_to_str(miniexp_cadr(outlineItem))); if(!destination.isEmpty() && destination.at(0) == QLatin1Char('#')) { destination.remove(0, 1); bool ok = false; int page = destination.toInt(&ok); if(!ok) { const int destinationPage = pageByName.value(destination); if(destinationPage != 0) { ok = true; page = destinationPage; } } if(ok) { section.link.page = page; } } if(miniexp_length(outlineItem) > 2) { section.children = loadOutline(skip(outlineItem, 2), pageByName); } } return outline; } Properties loadProperties(miniexp_t annoExp) { Properties properties; for(miniexp_t annoItem = miniexp_nil; miniexp_consp(annoExp); annoExp = miniexp_cdr(annoExp)) { annoItem = miniexp_car(annoExp); if(miniexp_length(annoItem) < 2 || qstrcmp(miniexp_to_name(miniexp_car(annoItem)), "metadata") != 0) { continue; } annoItem = miniexp_cdr(annoItem); for(miniexp_t keyValueItem = miniexp_nil; miniexp_consp(annoItem); annoItem = miniexp_cdr(annoItem)) { keyValueItem = miniexp_car(annoItem); if(miniexp_length(keyValueItem) != 2) { continue; } const QString key = QString::fromUtf8(miniexp_to_name(miniexp_car(keyValueItem))); const QString value = QString::fromUtf8(miniexp_to_str(miniexp_cadr(keyValueItem))); if(!key.isEmpty() && !value.isEmpty()) { properties.push_back(qMakePair(key, value)); } } } return properties; } } // anonymous namespace qpdfview { namespace Model { DjVuPage::DjVuPage(const DjVuDocument* parent, int index, const ddjvu_pageinfo_t& pageinfo) : m_parent(parent), m_index(index), m_size(pageinfo.width, pageinfo.height), m_resolution(pageinfo.dpi) { } DjVuPage::~DjVuPage() { } QSizeF DjVuPage::size() const { return 72.0 / m_resolution * m_size; } QImage DjVuPage::render(qreal horizontalResolution, qreal verticalResolution, Rotation rotation, QRect boundingRect) const { LOCK_PAGE ddjvu_page_t* page = ddjvu_page_create_by_pageno(m_parent->m_document, m_index); if(page == 0) { return QImage(); } ddjvu_status_t status; while(true) { status = ddjvu_page_decoding_status(page); if(status < DDJVU_JOB_OK) { clearMessageQueue(m_parent->m_context, true); } else { break; } } if(status >= DDJVU_JOB_FAILED) { ddjvu_page_release(page); return QImage(); } switch(rotation) { default: case RotateBy0: ddjvu_page_set_rotation(page, DDJVU_ROTATE_0); break; case RotateBy90: ddjvu_page_set_rotation(page, DDJVU_ROTATE_270); break; case RotateBy180: ddjvu_page_set_rotation(page, DDJVU_ROTATE_180); break; case RotateBy270: ddjvu_page_set_rotation(page, DDJVU_ROTATE_90); break; } ddjvu_rect_t pagerect; pagerect.x = 0; pagerect.y = 0; switch(rotation) { default: case RotateBy0: case RotateBy180: pagerect.w = qRound(horizontalResolution / m_resolution * m_size.width()); pagerect.h = qRound(verticalResolution / m_resolution * m_size.height()); break; case RotateBy90: case RotateBy270: pagerect.w = qRound(horizontalResolution / m_resolution * m_size.height()); pagerect.h = qRound(verticalResolution / m_resolution * m_size.width()); break; } ddjvu_rect_t renderrect; if(boundingRect.isNull()) { renderrect.x = pagerect.x; renderrect.y = pagerect.y; renderrect.w = pagerect.w; renderrect.h = pagerect.h; } else { renderrect.x = boundingRect.x(); renderrect.y = boundingRect.y(); renderrect.w = boundingRect.width(); renderrect.h = boundingRect.height(); } QImage image(renderrect.w, renderrect.h, QImage::Format_RGB32); if(!ddjvu_page_render(page, DDJVU_RENDER_COLOR, &pagerect, &renderrect, m_parent->m_format, image.bytesPerLine(), reinterpret_cast< char* >(image.bits()))) { image = QImage(); } clearMessageQueue(m_parent->m_context, false); ddjvu_page_release(page); return image; } QString DjVuPage::label() const { return m_parent->m_titleByIndex.value(m_index); } QList< Link* > DjVuPage::links() const { LOCK_PAGE miniexp_t pageAnnoExp = miniexp_nil; { LOCK_PAGE_GLOBAL while(true) { pageAnnoExp = ddjvu_document_get_pageanno(m_parent->m_document, m_index); if(pageAnnoExp == miniexp_dummy) { clearMessageQueue(m_parent->m_context, true); } else { break; } } } const QList< Link* > links = loadLinks(pageAnnoExp, m_size, m_index, m_parent->m_pageByName); { LOCK_PAGE_GLOBAL ddjvu_miniexp_release(m_parent->m_document, pageAnnoExp); } return links; } QString DjVuPage::text(const QRectF& rect) const { LOCK_PAGE miniexp_t pageTextExp = miniexp_nil; { LOCK_PAGE_GLOBAL while(true) { pageTextExp = ddjvu_document_get_pagetext(m_parent->m_document, m_index, "word"); if(pageTextExp == miniexp_dummy) { clearMessageQueue(m_parent->m_context, true); } else { break; } } } const QTransform transform = QTransform::fromScale(m_resolution / 72.0, m_resolution / 72.0); const QString text = loadText(pageTextExp, m_size, transform.mapRect(rect)).simplified(); { LOCK_PAGE_GLOBAL ddjvu_miniexp_release(m_parent->m_document, pageTextExp); } return text.simplified(); } QList< QRectF > DjVuPage::search(const QString& text, bool matchCase, bool wholeWords) const { LOCK_PAGE miniexp_t pageTextExp = miniexp_nil; { LOCK_PAGE_GLOBAL while(true) { pageTextExp = ddjvu_document_get_pagetext(m_parent->m_document, m_index, "word"); if(pageTextExp == miniexp_dummy) { clearMessageQueue(m_parent->m_context, true); } else { break; } } } const QTransform transform = QTransform::fromScale(72.0 / m_resolution, 72.0 / m_resolution); const QStringList words = text.split(QRegExp(QLatin1String("\\W+")), QString::SkipEmptyParts); const QList< QRectF > results = findText(pageTextExp, m_size, transform, words, matchCase, wholeWords); { LOCK_PAGE_GLOBAL ddjvu_miniexp_release(m_parent->m_document, pageTextExp); } return results; } DjVuDocument::DjVuDocument(QMutex* globalMutex, ddjvu_context_t* context, ddjvu_document_t* document) : m_mutex(), m_globalMutex(globalMutex), m_context(context), m_document(document), m_format(0), m_pageByName(), m_titleByIndex() { unsigned int mask[] = {0x00ff0000, 0x0000ff00, 0x000000ff, 0xff000000}; m_format = ddjvu_format_create(DDJVU_FORMAT_RGBMASK32, 4, mask); ddjvu_format_set_row_order(m_format, 1); ddjvu_format_set_y_direction(m_format, 1); prepareFileInfo(); } DjVuDocument::~DjVuDocument() { ddjvu_document_release(m_document); ddjvu_context_release(m_context); ddjvu_format_release(m_format); } int DjVuDocument::numberOfPages() const { LOCK_DOCUMENT return ddjvu_document_get_pagenum(m_document); } Page* DjVuDocument::page(int index) const { LOCK_DOCUMENT ddjvu_status_t status; ddjvu_pageinfo_t pageinfo; while(true) { status = ddjvu_document_get_pageinfo(m_document, index, &pageinfo); if(status < DDJVU_JOB_OK) { clearMessageQueue(m_context, true); } else { break; } } if(status >= DDJVU_JOB_FAILED) { return 0; } return new DjVuPage(this, index, pageinfo); } QStringList DjVuDocument::saveFilter() const { return QStringList() << QLatin1String("DjVu (*.djvu *.djv)"); } bool DjVuDocument::canSave() const { return true; } bool DjVuDocument::save(const QString& filePath, bool withChanges) const { Q_UNUSED(withChanges); LOCK_DOCUMENT #ifdef _MSC_VER FILE* file = _wfopen(reinterpret_cast< const wchar_t* >(filePath.utf16()), L"w+"); #else FILE* file = fopen(QFile::encodeName(filePath), "w+"); #endif // _MSC_VER if(file == 0) { return false; } ddjvu_job_t* job = ddjvu_document_save(m_document, file, 0, 0); while(!ddjvu_job_done(job)) { clearMessageQueue(m_context, true); } fclose(file); return !ddjvu_job_error(job); } Outline DjVuDocument::outline() const { Outline outline; LOCK_DOCUMENT miniexp_t outlineExp = miniexp_nil; { LOCK_DOCUMENT_GLOBAL while(true) { outlineExp = ddjvu_document_get_outline(m_document); if(outlineExp == miniexp_dummy) { clearMessageQueue(m_context, true); } else { break; } } } if(miniexp_length(outlineExp) > 1 && qstrcmp(miniexp_to_name(miniexp_car(outlineExp)), "bookmarks") == 0) { outline = loadOutline(skip(outlineExp, 1), m_pageByName); } { LOCK_DOCUMENT_GLOBAL ddjvu_miniexp_release(m_document, outlineExp); } return outline; } Properties DjVuDocument::properties() const { Properties properties; LOCK_DOCUMENT miniexp_t annoExp = miniexp_nil; { LOCK_DOCUMENT_GLOBAL while(true) { annoExp = ddjvu_document_get_anno(m_document, TRUE); if(annoExp == miniexp_dummy) { clearMessageQueue(m_context, true); } else { break; } } } properties = loadProperties(annoExp); { LOCK_DOCUMENT_GLOBAL ddjvu_miniexp_release(m_document, annoExp); } return properties; } void DjVuDocument::prepareFileInfo() { for(int index = 0, count = ddjvu_document_get_filenum(m_document); index < count; ++index) { ddjvu_fileinfo_t fileinfo; if(ddjvu_document_get_fileinfo(m_document, index, &fileinfo) != DDJVU_JOB_OK || fileinfo.type != 'P') { continue; } const QString id = QString::fromUtf8(fileinfo.id); const QString name = QString::fromUtf8(fileinfo.name); const QString title = QString::fromUtf8(fileinfo.title); m_pageByName[id] = m_pageByName[name] = m_pageByName[title] = fileinfo.pageno + 1; if(!title.endsWith(".djvu", Qt::CaseInsensitive) && !title.endsWith(".djv", Qt::CaseInsensitive)) { m_titleByIndex[fileinfo.pageno] = title; } } m_pageByName.squeeze(); m_titleByIndex.squeeze(); } } // Model DjVuPlugin::DjVuPlugin(QObject* parent) : QObject(parent), m_globalMutex() { setObjectName("DjVuPlugin"); } Model::Document* DjVuPlugin::loadDocument(const QString& filePath) const { ddjvu_context_t* context = ddjvu_context_create("qpdfview"); if(context == 0) { return 0; } #if DDJVUAPI_VERSION >= 19 ddjvu_document_t* document = ddjvu_document_create_by_filename_utf8(context, filePath.toUtf8(), FALSE); #else ddjvu_document_t* document = ddjvu_document_create_by_filename(context, QFile::encodeName(filePath), FALSE); #endif // DDJVUAPI_VERSION if(document == 0) { ddjvu_context_release(context); return 0; } waitForMessageTag(context, DDJVU_DOCINFO); if(ddjvu_document_decoding_error(document)) { ddjvu_document_release(document); ddjvu_context_release(context); return 0; } return new Model::DjVuDocument(&m_globalMutex, context, document); } } // qpdfview #if QT_VERSION < QT_VERSION_CHECK(5,0,0) Q_EXPORT_PLUGIN2(qpdfview_djvu, qpdfview::DjVuPlugin) #endif // QT_VERSION qpdfview-0.4.18/sources/djvumodel.h0000644000000000000000000000614413516127411015412 0ustar 00000000000000/* Copyright 2013 Adam Reichold Copyright 2013 Alexander Volkov This file is part of qpdfview. The implementation is based on KDjVu by Pino Toscano. qpdfview is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. qpdfview is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with qpdfview. If not, see . */ #ifndef DJVUMODEL_H #define DJVUMODEL_H #include #include typedef struct ddjvu_context_s ddjvu_context_t; typedef struct ddjvu_format_s ddjvu_format_t; typedef struct ddjvu_document_s ddjvu_document_t; typedef struct ddjvu_pageinfo_s ddjvu_pageinfo_t; #include "model.h" namespace qpdfview { class DjVuPlugin; namespace Model { class DjVuPage : public Page { friend class DjVuDocument; public: ~DjVuPage(); QSizeF size() const; QImage render(qreal horizontalResolution, qreal verticalResolution, Rotation rotation, QRect boundingRect) const; QString label() const; QList< Link* > links() const; QString text(const QRectF& rect) const; QList< QRectF > search(const QString& text, bool matchCase, bool wholeWords) const; private: Q_DISABLE_COPY(DjVuPage) DjVuPage(const class DjVuDocument* parent, int index, const ddjvu_pageinfo_t& pageinfo); const class DjVuDocument* m_parent; int m_index; QSizeF m_size; int m_resolution; }; class DjVuDocument : public Document { friend class DjVuPage; friend class qpdfview::DjVuPlugin; public: ~DjVuDocument(); int numberOfPages() const; Page* page(int index) const; QStringList saveFilter() const; bool canSave() const; bool save(const QString& filePath, bool withChanges) const; Outline outline() const; Properties properties() const; private: Q_DISABLE_COPY(DjVuDocument) DjVuDocument(QMutex* globalMutex, ddjvu_context_t* context, ddjvu_document_t* document); mutable QMutex m_mutex; mutable QMutex* m_globalMutex; ddjvu_context_t* m_context; ddjvu_document_t* m_document; ddjvu_format_t* m_format; QHash< QString, int > m_pageByName; QHash< int, QString > m_titleByIndex; void prepareFileInfo(); }; } class DjVuPlugin : public QObject, Plugin { Q_OBJECT Q_INTERFACES(qpdfview::Plugin) #if QT_VERSION >= QT_VERSION_CHECK(5,0,0) Q_PLUGIN_METADATA(IID "local.qpdfview.Plugin") #endif // QT_VERSION public: DjVuPlugin(QObject* parent = 0); Model::Document* loadDocument(const QString& filePath) const; private: mutable QMutex m_globalMutex; }; } // qpdfview #endif // DJVUMODEL_H qpdfview-0.4.18/sources/documentlayout.cpp0000644000000000000000000002402013516127411017021 0ustar 00000000000000/* Copyright 2014 S. Razi Alavizadeh Copyright 2013-2014 Adam Reichold This file is part of qpdfview. qpdfview is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. qpdfview is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with qpdfview. If not, see . */ #include "documentlayout.h" #include "settings.h" #include "pageitem.h" namespace { using namespace qpdfview; const qreal viewportPadding = 6.0f; } // anonymous namespace qpdfview { Settings* DocumentLayout::s_settings = 0; DocumentLayout::DocumentLayout() { if(s_settings == 0) { s_settings = Settings::instance(); } } DocumentLayout* DocumentLayout::fromLayoutMode(LayoutMode layoutMode) { switch(layoutMode) { default: case SinglePageMode: return new SinglePageLayout; case TwoPagesMode: return new TwoPagesLayout; case TwoPagesWithCoverPageMode: return new TwoPagesWithCoverPageLayout; case MultiplePagesMode: return new MultiplePagesLayout; } } bool DocumentLayout::isCurrentPage(const QRectF& visibleRect, const QRectF& pageRect) const { // Works with vertically scrolling layouts, i.e. all currently implemented layouts. const qreal pageVisibleHeight = pageRect.intersected(visibleRect).height(); const qreal pageTopOffset = pageRect.top() - visibleRect.top(); if(visibleRect.height() > 2.0f * pageRect.height()) // Are more than two pages visible? { const qreal halfPageHeight = 0.5f * pageRect.height(); return pageVisibleHeight >= halfPageHeight && pageTopOffset < halfPageHeight && pageTopOffset >= -halfPageHeight; } else { return pageVisibleHeight >= 0.5f * visibleRect.height(); } } qreal DocumentLayout::visibleHeight(int viewportHeight) const { const qreal pageSpacing = s_settings->documentView().pageSpacing(); return viewportHeight - 2.0f * pageSpacing; } int SinglePageLayout::currentPage(int page) const { return page; } int SinglePageLayout::previousPage(int page) const { return qMax(page - 1, 1); } int SinglePageLayout::nextPage(int page, int count) const { return qMin(page + 1, count); } QPair< int, int > SinglePageLayout::prefetchRange(int page, int count) const { const int prefetchDistance = s_settings->documentView().prefetchDistance(); return qMakePair(qMax(page - prefetchDistance / 2, 1), qMin(page + prefetchDistance, count)); } int SinglePageLayout::leftIndex(int index) const { return index; } int SinglePageLayout::rightIndex(int index, int count) const { Q_UNUSED(count); return index; } qreal SinglePageLayout::visibleWidth(int viewportWidth) const { const qreal pageSpacing = s_settings->documentView().pageSpacing(); return viewportWidth - viewportPadding - 2.0f * pageSpacing; } void SinglePageLayout::prepareLayout(const QVector< PageItem* >& pageItems, bool /* rightToLeft */, qreal& left, qreal& right, qreal& height) { const qreal pageSpacing = s_settings->documentView().pageSpacing(); qreal pageHeight = 0.0f; for(int index = 0; index < pageItems.count(); ++index) { PageItem* page = pageItems.at(index); const QRectF boundingRect = page->boundingRect(); page->setPos(-boundingRect.left() - 0.5f * boundingRect.width(), height - boundingRect.top()); pageHeight = boundingRect.height(); left = qMin(left, -0.5f * boundingRect.width() - pageSpacing); right = qMax(right, 0.5f * boundingRect.width() + pageSpacing); height += pageHeight + pageSpacing; } } int TwoPagesLayout::currentPage(int page) const { return page % 2 != 0 ? page : page - 1; } int TwoPagesLayout::previousPage(int page) const { return qMax(page - 2, 1); } int TwoPagesLayout::nextPage(int page, int count) const { return qMin(page + 2, count); } QPair< int, int > TwoPagesLayout::prefetchRange(int page, int count) const { const int prefetchDistance = s_settings->documentView().prefetchDistance(); return qMakePair(qMax(page - prefetchDistance, 1), qMin(page + 2 * prefetchDistance + 1, count)); } int TwoPagesLayout::leftIndex(int index) const { return index % 2 == 0 ? index : index - 1; } int TwoPagesLayout::rightIndex(int index, int count) const { return qMin(index % 2 == 0 ? index + 1 : index, count - 1); } qreal TwoPagesLayout::visibleWidth(int viewportWidth) const { const qreal pageSpacing = s_settings->documentView().pageSpacing(); return (viewportWidth - viewportPadding - 3.0f * pageSpacing) / 2.0f; } void TwoPagesLayout::prepareLayout(const QVector< PageItem* >& pageItems, bool rightToLeft, qreal& left, qreal& right, qreal& height) { const qreal pageSpacing = s_settings->documentView().pageSpacing(); qreal pageHeight = 0.0f; for(int index = 0; index < pageItems.count(); ++index) { PageItem* page = pageItems.at(index); const QRectF boundingRect = page->boundingRect(); const qreal leftPos = -boundingRect.left() - boundingRect.width() - 0.5f * pageSpacing; const qreal rightPos = -boundingRect.left() + 0.5f * pageSpacing; if(index == leftIndex(index)) { page->setPos(rightToLeft ? rightPos : leftPos, height - boundingRect.top()); pageHeight = boundingRect.height(); if(rightToLeft) { right = qMax(right, boundingRect.width() + 1.5f * pageSpacing); } else { left = qMin(left, -boundingRect.width() - 1.5f * pageSpacing); } if(index == rightIndex(index, pageItems.count())) { right = qMax(right, 0.5f * pageSpacing); height += pageHeight + pageSpacing; } } else { page->setPos(rightToLeft ? leftPos : rightPos, height - boundingRect.top()); pageHeight = qMax(pageHeight, boundingRect.height()); if(rightToLeft) { left = qMin(left, -boundingRect.width() - 1.5f * pageSpacing); } else { right = qMax(right, boundingRect.width() + 1.5f * pageSpacing); } height += pageHeight + pageSpacing; } } } int TwoPagesWithCoverPageLayout::currentPage(int page) const { return page == 1 ? page : (page % 2 == 0 ? page : page - 1); } int TwoPagesWithCoverPageLayout::leftIndex(int index) const { return index == 0 ? index : (index % 2 != 0 ? index : index - 1); } int TwoPagesWithCoverPageLayout::rightIndex(int index, int count) const { return qMin(index % 2 != 0 ? index + 1 : index, count - 1); } int MultiplePagesLayout::currentPage(int page) const { const int pagesPerRow = s_settings->documentView().pagesPerRow(); return page - ((page - 1) % pagesPerRow); } int MultiplePagesLayout::previousPage(int page) const { const int pagesPerRow = s_settings->documentView().pagesPerRow(); return qMax(page - pagesPerRow, 1); } int MultiplePagesLayout::nextPage(int page, int count) const { const int pagesPerRow = s_settings->documentView().pagesPerRow(); return qMin(page + pagesPerRow, count); } QPair MultiplePagesLayout::prefetchRange(int page, int count) const { const int prefetchDistance = s_settings->documentView().prefetchDistance(); const int pagesPerRow = s_settings->documentView().pagesPerRow(); return qMakePair(qMax(page - pagesPerRow * (prefetchDistance / 2), 1), qMin(page + pagesPerRow * (prefetchDistance + 1) - 1, count)); } int MultiplePagesLayout::leftIndex(int index) const { const int pagesPerRow = s_settings->documentView().pagesPerRow(); return index - (index % pagesPerRow); } int MultiplePagesLayout::rightIndex(int index, int count) const { const int pagesPerRow = s_settings->documentView().pagesPerRow(); return qMin(index - (index % pagesPerRow) + pagesPerRow - 1, count - 1); } qreal MultiplePagesLayout::visibleWidth(int viewportWidth) const { const qreal pageSpacing = s_settings->documentView().pageSpacing(); const int pagesPerRow = s_settings->documentView().pagesPerRow(); return (viewportWidth - viewportPadding - (pagesPerRow + 1) * pageSpacing) / pagesPerRow; } void MultiplePagesLayout::prepareLayout(const QVector< PageItem* >& pageItems, bool rightToLeft, qreal& left, qreal& right, qreal& height) { const qreal pageSpacing = s_settings->documentView().pageSpacing(); qreal pageHeight = 0.0; for(int index = 0; index < pageItems.count(); ++index) { PageItem* page = pageItems.at(index); const QRectF boundingRect = page->boundingRect(); const qreal leftPos = left - boundingRect.left() + pageSpacing; const qreal rightPos = right - boundingRect.left() - boundingRect.width() - pageSpacing; page->setPos(rightToLeft ? rightPos : leftPos, height - boundingRect.top()); pageHeight = qMax(pageHeight, boundingRect.height()); if(rightToLeft) { right -= boundingRect.width() + pageSpacing; } else { left += boundingRect.width() + pageSpacing; } if(index == rightIndex(index, pageItems.count())) { height += pageHeight + pageSpacing; pageHeight = 0.0f; if(rightToLeft) { left = qMin(left, right - pageSpacing); right = 0.0f; } else { right = qMax(right, left + pageSpacing); left = 0.0f; } } } } } // qpdfview qpdfview-0.4.18/sources/documentlayout.h0000644000000000000000000000746413516127411016503 0ustar 00000000000000/* Copyright 2014 S. Razi Alavizadeh Copyright 2013-2014 Adam Reichold This file is part of qpdfview. qpdfview is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. qpdfview is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with qpdfview. If not, see . */ #ifndef DOCUMENTLAYOUT_H #define DOCUMENTLAYOUT_H #include #include #include "global.h" class QRectF; namespace qpdfview { class Settings; class PageItem; struct DocumentLayout { DocumentLayout(); virtual ~DocumentLayout() {} static DocumentLayout* fromLayoutMode(LayoutMode layoutMode); virtual LayoutMode layoutMode() const = 0; virtual int currentPage(int page) const = 0; virtual int previousPage(int page) const = 0; virtual int nextPage(int page, int count) const = 0; bool isCurrentPage(const QRectF& visibleRect, const QRectF& pageRect) const; virtual QPair< int, int > prefetchRange(int page, int count) const = 0; virtual int leftIndex(int index) const = 0; virtual int rightIndex(int index, int count) const = 0; virtual qreal visibleWidth(int viewportWidth) const = 0; qreal visibleHeight(int viewportHeight) const; virtual void prepareLayout(const QVector< PageItem* >& pageItems, bool rightToLeft, qreal& left, qreal& right, qreal& height) = 0; protected: static Settings* s_settings; }; struct SinglePageLayout : public DocumentLayout { LayoutMode layoutMode() const { return SinglePageMode; } int currentPage(int page) const; int previousPage(int page) const; int nextPage(int page, int count) const; QPair< int, int > prefetchRange(int page, int count) const; int leftIndex(int index) const; int rightIndex(int index, int count) const; qreal visibleWidth(int viewportWidth) const; void prepareLayout(const QVector< PageItem* >& pageItems, bool rightToLeft, qreal& left, qreal& right, qreal& height); }; struct TwoPagesLayout : public DocumentLayout { LayoutMode layoutMode() const { return TwoPagesMode; } int currentPage(int page) const; int previousPage(int page) const; int nextPage(int page, int count) const; QPair< int, int > prefetchRange(int page, int count) const; int leftIndex(int index) const; int rightIndex(int index, int count) const; qreal visibleWidth(int viewportWidth) const; void prepareLayout(const QVector< PageItem* >& pageItems, bool rightToLeft, qreal& left, qreal& right, qreal& height); }; struct TwoPagesWithCoverPageLayout : public TwoPagesLayout { LayoutMode layoutMode() const { return TwoPagesWithCoverPageMode; } int currentPage(int page) const; int leftIndex(int index) const; int rightIndex(int index, int count) const; }; struct MultiplePagesLayout : public DocumentLayout { LayoutMode layoutMode() const { return MultiplePagesMode; } int currentPage(int page) const; int previousPage(int page) const; int nextPage(int page, int count) const; QPair< int, int > prefetchRange(int page, int count) const; int leftIndex(int index) const; int rightIndex(int index, int count) const; qreal visibleWidth(int viewportWidth) const; void prepareLayout(const QVector< PageItem* >& pageItems, bool rightToLeft, qreal& left, qreal& right, qreal& height); }; } // qpdfview #endif // DOCUMENTLAYOUT_H qpdfview-0.4.18/sources/documentview.cpp0000644000000000000000000023552713516127411016476 0ustar 00000000000000/* Copyright 2014 S. Razi Alavizadeh Copyright 2013 Thomas Etter Copyright 2012-2015, 2018 Adam Reichold Copyright 2014 Dorian Scholz Copyright 2018 Egor Zenkov This file is part of qpdfview. qpdfview is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. qpdfview is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with qpdfview. If not, see . */ #include "documentview.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #ifdef WITH_CUPS #include #include #endif // WITH_CUPS #ifdef WITH_SYNCTEX #include #ifndef HAS_SYNCTEX_2 typedef synctex_scanner_t synctex_scanner_p; typedef synctex_node_t synctex_node_p; #define synctex_scanner_next_result(scanner) synctex_next_result(scanner) #endif // HAS_SYNCTEX_2 #endif // WITH_SYNCTEX #include "settings.h" #include "model.h" #include "pluginhandler.h" #include "shortcuthandler.h" #include "thumbnailitem.h" #include "presentationview.h" #include "searchmodel.h" #include "searchtask.h" #include "miscellaneous.h" #include "documentlayout.h" namespace { using namespace qpdfview; // taken from http://rosettacode.org/wiki/Roman_numerals/Decode#C.2B.2B int romanToInt(const QString& text) { if(text.size() == 1) { switch(text.at(0).toLower().toLatin1()) { case 'i': return 1; case 'v': return 5; case 'x': return 10; case 'l': return 50; case 'c': return 100; case 'd': return 500; case 'm': return 1000; } return 0; } int result = 0; int previous = 0, current = 0; for(int i = text.size() - 1; i >= 0; --i) { current = romanToInt(text.at(i)); result += current < previous ? -current : current; previous = current; } return result; } // taken from http://rosettacode.org/wiki/Roman_numerals/Encode#C.2B.2B QString intToRoman(int number) { struct romandata_t { int value; char const* numeral; }; static const romandata_t romandata[] = { { 1000, "m" }, { 900, "cm" }, { 500, "d" }, { 400, "cd" }, { 100, "c" }, { 90, "xc" }, { 50, "l" }, { 40, "xl" }, { 10, "x" }, { 9, "ix" }, { 5, "v" }, { 4, "iv" }, { 1, "i" }, { 0, NULL } }; if(number >= 4000) { return QLatin1String("?"); } QString result; for(const romandata_t* current = romandata; current->value > 0; ++current) { while(number >= current->value) { number -= current->value; result += QLatin1String(current->numeral); } } return result; } bool copyFile(QFile& source, QFile& destination) { const qint64 maxSize = 4096; qint64 size = -1; QScopedArrayPointer< char > buffer(new char[maxSize]); do { if((size = source.read(buffer.data(), maxSize)) < 0) { return false; } if(destination.write(buffer.data(), size) < 0) { return false; } } while(size > 0); return true; } inline void adjustFileTemplateSuffix(QTemporaryFile& temporaryFile, const QString& suffix) { temporaryFile.setFileTemplate(temporaryFile.fileTemplate() + QLatin1String(".") + suffix); } #ifdef WITH_CUPS struct RemovePpdFileDeleter { static inline void cleanup(const char* ppdFileName) { if(ppdFileName != 0) { QFile::remove(ppdFileName); } } }; struct ClosePpdFileDeleter { static inline void cleanup(ppd_file_t* ppdFile) { if(ppdFile != 0) { ppdClose(ppdFile); } } }; int addCMYKorRGBColorModel(cups_dest_t* dest, int num_options, cups_option_t** options) { QScopedPointer< const char, RemovePpdFileDeleter > ppdFileName(cupsGetPPD(dest->name)); if(ppdFileName.isNull()) { return num_options; } QScopedPointer< ppd_file_t, ClosePpdFileDeleter > ppdFile(ppdOpenFile(ppdFileName.data())); if(ppdFile.isNull()) { return num_options; } ppd_option_t* colorModel = ppdFindOption(ppdFile.data(), "ColorModel"); if(colorModel == 0) { return num_options; } for(int index = 0; index < colorModel->num_choices; ++index) { if(qstrcmp(colorModel->choices[index].choice, "CMYK") == 0) { return cupsAddOption("ColorModel", "CMYK", num_options, options); } } for(int index = 0; index < colorModel->num_choices; ++index) { if(qstrcmp(colorModel->choices[index].choice, "RGB") == 0) { return cupsAddOption("ColorModel", "RGB", num_options, options); } } return num_options; } #endif // WITH_CUPS #ifdef WITH_SYNCTEX DocumentView::SourceLink scanForSourceLink(const QString& filePath, const int page, QPointF pos) { DocumentView::SourceLink sourceLink; if(synctex_scanner_p scanner = synctex_scanner_new_with_output_file(filePath.toLocal8Bit(), 0, 1)) { if(synctex_edit_query(scanner, page, pos.x(), pos.y()) > 0) { for(synctex_node_p node = synctex_scanner_next_result(scanner); node != 0; node = synctex_scanner_next_result(scanner)) { sourceLink.name = QString::fromLocal8Bit(synctex_scanner_get_name(scanner, synctex_node_tag(node))); sourceLink.line = qMax(synctex_node_line(node), 0); sourceLink.column = qMax(synctex_node_column(node), 0); break; } } synctex_scanner_free(scanner); } return sourceLink; } #endif // WITH_SYNCTEX inline bool modifiersAreActive(const QWheelEvent* event, Qt::KeyboardModifiers modifiers) { if(modifiers == Qt::NoModifier) { return false; } return event->modifiers() == modifiers || (event->buttons() & modifiers) != 0; } inline bool modifiersUseMouseButton(Settings* settings, Qt::MouseButton mouseButton) { return ((settings->documentView().zoomModifiers() | settings->documentView().rotateModifiers() | settings->documentView().scrollModifiers()) & mouseButton) != 0; } inline void adjustScaleFactor(RenderParam& renderParam, qreal scaleFactor) { if(!qFuzzyCompare(renderParam.scaleFactor(), scaleFactor)) { renderParam.setScaleFactor(scaleFactor); } } inline void setValueIfNotVisible(QScrollBar* scrollBar, int value) { if(value < scrollBar->value() || value > scrollBar->value() + scrollBar->pageStep()) { scrollBar->setValue(value); } } inline int pageOfResult(const QModelIndex& index) { return index.data(SearchModel::PageRole).toInt(); } inline QRectF rectOfResult(const QModelIndex& index) { return index.data(SearchModel::RectRole).toRectF(); } class OutlineModel : public QAbstractItemModel { public: OutlineModel(const Model::Outline& outline, DocumentView* parent) : QAbstractItemModel(parent), m_outline(outline) { } QModelIndex index(int row, int column, const QModelIndex& parent) const { if(!hasIndex(row, column, parent)) { return QModelIndex(); } if(parent.isValid()) { const Model::Section* section = resolveIndex(parent); return createIndex(row, column, §ion->children); } else { return createIndex(row, column, &m_outline); } } QModelIndex parent(const QModelIndex& child) const { if(!child.isValid()) { return QModelIndex(); } const Model::Outline* children = static_cast< const Model::Outline* >(child.internalPointer()); if(&m_outline != children) { return findParent(&m_outline, children); } return QModelIndex(); } int columnCount(const QModelIndex&) const { return 2; } int rowCount(const QModelIndex& parent) const { if(parent.isValid()) { const Model::Section* section = resolveIndex(parent); return section->children.size(); } else { return m_outline.size(); } } QVariant data(const QModelIndex& index, int role) const { if(!index.isValid()) { return QVariant(); } const Model::Section* section = resolveIndex(index); switch(role) { case Qt::DisplayRole: switch(index.column()) { case 0: return section->title; case 1: return pageLabel(section->link.page); default: return QVariant(); } case Model::Document::PageRole: return section->link.page; case Model::Document::LeftRole: return section->link.left; case Model::Document::TopRole: return section->link.top; case Model::Document::FileNameRole: return section->link.urlOrFileName; case Model::Document::ExpansionRole: return m_expanded.contains(section); default: return QVariant(); } } bool setData(const QModelIndex& index, const QVariant& value, int role) { if(!index.isValid() || role != Model::Document::ExpansionRole) { return false; } const Model::Section* section = resolveIndex(index); if(value.toBool()) { m_expanded.insert(section); } else { m_expanded.remove(section); } return true; } private: const Model::Outline m_outline; DocumentView* documentView() const { return static_cast< DocumentView* >(QObject::parent()); } QString pageLabel(int pageNumber) const { return documentView()->pageLabelFromNumber(pageNumber); } QSet< const Model::Section* > m_expanded; const Model::Section* resolveIndex(const QModelIndex& index) const { return &static_cast< const Model::Outline* >(index.internalPointer())->at(index.row()); } QModelIndex createIndex(int row, int column, const Model::Outline* outline) const { return QAbstractItemModel::createIndex(row, column, const_cast< void* >(static_cast< const void* >(outline))); } QModelIndex findParent(const Model::Outline* outline, const Model::Outline* children) const { for(Model::Outline::const_iterator section = outline->begin(); section != outline->end(); ++section) { if(§ion->children == children) { return createIndex(section - outline->begin(), 0, outline); } } for(Model::Outline::const_iterator section = outline->begin(); section != outline->end(); ++section) { const QModelIndex parent = findParent(§ion->children, children); if(parent.isValid()) { return parent; } } return QModelIndex(); } }; class FallbackOutlineModel : public QAbstractTableModel { public: FallbackOutlineModel(DocumentView* parent) : QAbstractTableModel(parent) { } int columnCount(const QModelIndex&) const { return 2; } int rowCount(const QModelIndex& parent) const { if(parent.isValid()) { return 0; } return numberOfPages(); } QVariant data(const QModelIndex& index, int role) const { if(!index.isValid()) { return QVariant(); } const int pageNumber = index.row() + 1; switch(role) { case Qt::DisplayRole: switch(index.column()) { case 0: return DocumentView::tr("Page %1").arg(pageLabel(pageNumber)); case 1: return pageLabel(pageNumber); default: return QVariant(); } case Model::Document::PageRole: return pageNumber; case Model::Document::LeftRole: case Model::Document::TopRole: return qQNaN(); default: return QVariant(); } } private: DocumentView* documentView() const { return static_cast< DocumentView* >(QObject::parent()); } int numberOfPages() const { return documentView()->numberOfPages(); } QString pageLabel(int pageNumber) const { return documentView()->pageLabelFromNumber(pageNumber); } }; class PropertiesModel : public QAbstractTableModel { public: PropertiesModel(const Model::Properties& properties, DocumentView* parent = 0) : QAbstractTableModel(parent), m_properties(properties) { } int columnCount(const QModelIndex&) const { return 2; } int rowCount(const QModelIndex& parent) const { if(parent.isValid()) { return 0; } return m_properties.size(); } QVariant data(const QModelIndex& index, int role) const { if(!index.isValid() || role != Qt::DisplayRole) { return QVariant(); } switch (index.column()) { case 0: return m_properties[index.row()].first; case 1: return m_properties[index.row()].second; default: return QVariant(); } } private: const Model::Properties m_properties; }; void addProperty(Model::Properties& properties, const char* name, const QString& value) { properties.append(qMakePair(DocumentView::tr(name), value)); } QString formatFileSize(qint64 size) { static const char* const units[] = { "B", "kB", "MB", "GB" }; static const char* const* const lastUnit = &units[sizeof(units) / sizeof(units[0]) - 1]; const char* const* unit = &units[0]; while(size > 2048 && unit < lastUnit) { size /= 1024; unit++; } return QString("%1 %2").arg(size).arg(*unit); } void addFileProperties(Model::Properties& properties, const QFileInfo& fileInfo) { addProperty(properties, "File path", fileInfo.absoluteFilePath()); addProperty(properties, "File size", formatFileSize(fileInfo.size())); addProperty(properties, "File created", fileInfo.created().toString()); addProperty(properties, "File last modified", fileInfo.lastModified().toString()); addProperty(properties, "File owner", fileInfo.owner()); addProperty(properties, "File group", fileInfo.owner()); } void appendToPath(const QModelIndex& index, QByteArray& path) { path.append(index.data(Qt::DisplayRole).toByteArray()).append('\0'); } void saveExpandedPaths(const QAbstractItemModel* model, QSet< QByteArray >& paths, const QModelIndex& index = QModelIndex(), QByteArray path = QByteArray()) { appendToPath(index, path); if(model->data(index, Model::Document::ExpansionRole).toBool()) { paths.insert(path); } for(int row = 0, rowCount = model->rowCount(index); row < rowCount; ++row) { saveExpandedPaths(model, paths, model->index(row, 0, index), path); } } void restoreExpandedPaths(QAbstractItemModel* model, const QSet< QByteArray >& paths, const QModelIndex& index = QModelIndex(), QByteArray path = QByteArray()) { appendToPath(index, path); if(paths.contains(path)) { model->setData(index, true, Model::Document::ExpansionRole); } for(int row = 0, rowCount = model->rowCount(index); row < rowCount; ++row) { restoreExpandedPaths(model, paths, model->index(row, 0, index), path); } } } // anonymous namespace qpdfview { class DocumentView::VerticalScrollBarChangedBlocker { Q_DISABLE_COPY(VerticalScrollBarChangedBlocker) private: DocumentView* const that; public: VerticalScrollBarChangedBlocker(DocumentView* that) : that(that) { that->m_verticalScrollBarChangedBlocked = true; } ~VerticalScrollBarChangedBlocker() { that->m_verticalScrollBarChangedBlocked = false; } }; Settings* DocumentView::s_settings = 0; ShortcutHandler* DocumentView::s_shortcutHandler = 0; SearchModel* DocumentView::s_searchModel = 0; DocumentView::DocumentView(QWidget* parent) : QGraphicsView(parent), m_autoRefreshWatcher(0), m_autoRefreshTimer(0), m_prefetchTimer(0), m_document(0), m_pages(), m_fileInfo(), m_wasModified(false), m_currentPage(-1), m_firstPage(-1), m_past(), m_future(), m_layout(new SinglePageLayout), m_continuousMode(false), m_scaleMode(ScaleFactorMode), m_scaleFactor(1.0), m_rotation(RotateBy0), m_renderFlags(0), m_highlightAll(false), m_rubberBandMode(ModifiersMode), m_pageItems(), m_thumbnailItems(), m_highlight(0), m_thumbnailsViewportSize(), m_thumbnailsOrientation(Qt::Vertical), m_thumbnailsScene(0), m_outlineModel(0), m_propertiesModel(0), m_verticalScrollBarChangedBlocked(false), m_currentResult(), m_searchTask(0) { if(s_settings == 0) { s_settings = Settings::instance(); } if(s_shortcutHandler == 0) { s_shortcutHandler = ShortcutHandler::instance(); } if(s_searchModel == 0) { s_searchModel = SearchModel::instance(); } setScene(new QGraphicsScene(this)); setFocusPolicy(Qt::StrongFocus); setAcceptDrops(false); setDragMode(QGraphicsView::ScrollHandDrag); connect(verticalScrollBar(), SIGNAL(valueChanged(int)), this, SLOT(on_verticalScrollBar_valueChanged())); m_thumbnailsScene = new QGraphicsScene(this); // highlight m_highlight = new QGraphicsRectItem(); m_highlight->setGraphicsEffect(new GraphicsCompositionModeEffect(QPainter::CompositionMode_Multiply, this)); m_highlight->setVisible(false); scene()->addItem(m_highlight); // search m_searchTask = new SearchTask(this); connect(m_searchTask, SIGNAL(finished()), SIGNAL(searchFinished())); connect(m_searchTask, SIGNAL(progressChanged(int)), SLOT(on_searchTask_progressChanged(int))); connect(m_searchTask, SIGNAL(resultsReady(int,QList)), SLOT(on_searchTask_resultsReady(int,QList))); // auto-refresh m_autoRefreshWatcher = new QFileSystemWatcher(this); m_autoRefreshTimer = new QTimer(this); m_autoRefreshTimer->setInterval(s_settings->documentView().autoRefreshTimeout()); m_autoRefreshTimer->setSingleShot(true); connect(m_autoRefreshWatcher, SIGNAL(fileChanged(QString)), m_autoRefreshTimer, SLOT(start())); connect(m_autoRefreshTimer, SIGNAL(timeout()), this, SLOT(on_autoRefresh_timeout())); // prefetch m_prefetchTimer = new QTimer(this); m_prefetchTimer->setInterval(s_settings->documentView().prefetchTimeout()); m_prefetchTimer->setSingleShot(true); connect(this, SIGNAL(currentPageChanged(int)), m_prefetchTimer, SLOT(start())); connect(this, SIGNAL(layoutModeChanged(LayoutMode)), m_prefetchTimer, SLOT(start())); connect(this, SIGNAL(scaleModeChanged(ScaleMode)), m_prefetchTimer, SLOT(start())); connect(this, SIGNAL(scaleFactorChanged(qreal)), m_prefetchTimer, SLOT(start())); connect(this, SIGNAL(rotationChanged(Rotation)), m_prefetchTimer, SLOT(start())); connect(this, SIGNAL(renderFlagsChanged(qpdfview::RenderFlags)), m_prefetchTimer, SLOT(start())); connect(m_prefetchTimer, SIGNAL(timeout()), SLOT(on_prefetch_timeout())); // settings m_continuousMode = s_settings->documentView().continuousMode(); m_layout.reset(DocumentLayout::fromLayoutMode(s_settings->documentView().layoutMode())); m_rightToLeftMode = s_settings->documentView().rightToLeftMode(); m_scaleMode = s_settings->documentView().scaleMode(); m_scaleFactor = s_settings->documentView().scaleFactor(); m_rotation = s_settings->documentView().rotation(); if(s_settings->documentView().invertColors()) { m_renderFlags |= InvertColors; } if(s_settings->documentView().convertToGrayscale()) { m_renderFlags |= ConvertToGrayscale; } if(s_settings->documentView().trimMargins()) { m_renderFlags |= TrimMargins; } switch(s_settings->documentView().compositionMode()) { default: case DefaultCompositionMode: break; case DarkenWithPaperColorMode: m_renderFlags |= DarkenWithPaperColor; break; case LightenWithPaperColorMode: m_renderFlags |= LightenWithPaperColor; break; } m_highlightAll = s_settings->documentView().highlightAll(); } DocumentView::~DocumentView() { m_searchTask->cancel(); m_searchTask->wait(); s_searchModel->clearResults(this); qDeleteAll(m_pageItems); qDeleteAll(m_thumbnailItems); qDeleteAll(m_pages); delete m_document; } void DocumentView::setFirstPage(int firstPage) { if(m_firstPage != firstPage) { m_firstPage = firstPage; for(int index = 0; index < m_thumbnailItems.count(); ++index) { m_thumbnailItems.at(index)->setText(pageLabelFromNumber(index + 1)); } prepareThumbnailsScene(); emit numberOfPagesChanged(m_pages.count()); emit currentPageChanged(m_currentPage); } } QString DocumentView::defaultPageLabelFromNumber(int number) const { QLocale modifiedLocale = locale(); modifiedLocale.setNumberOptions(modifiedLocale.numberOptions() | QLocale::OmitGroupSeparator); return modifiedLocale.toString(number); } QString DocumentView::pageLabelFromNumber(int number) const { QString label; if(hasFrontMatter()) { if(number < m_firstPage) { label = number < 4000 ? intToRoman(number) : defaultPageLabelFromNumber(-number); } else { label = defaultPageLabelFromNumber(number - m_firstPage + 1); } } else if(number >= 1 && number <= m_pages.count()) { const QString& pageLabel = m_pages.at(number - 1)->label(); if(number != pageLabel.toInt()) { label = pageLabel; } } if(label.isEmpty()) { label = defaultPageLabelFromNumber(number); } return label; } int DocumentView::pageNumberFromLabel(const QString& label) const { if(hasFrontMatter()) { bool ok = false; int value = locale().toInt(label, &ok); if(ok) { if(value < 0) { value = -value; // front matter } else { value = value + m_firstPage - 1; // body matter } } else { value = romanToInt(label); } return value; } for(int index = 0; index < m_pages.count(); ++index) { if(m_pages.at(index)->label() == label) { return index + 1; } } return locale().toInt(label); } QString DocumentView::title() const { QString title; if(s_settings->mainWindow().documentTitleAsTabTitle()) { for(int row = 0, rowCount = m_propertiesModel->rowCount(); row < rowCount; ++row) { const QString key = m_propertiesModel->index(row, 0).data().toString(); const QString value = m_propertiesModel->index(row, 1).data().toString(); if(QLatin1String("Title") == key) { title = value; break; } } } if(title.isEmpty()) { title = m_fileInfo.completeBaseName(); } return title; } QStringList DocumentView::openFilter() { return PluginHandler::openFilter(); } QStringList DocumentView::saveFilter() const { return m_document->saveFilter(); } bool DocumentView::canSave() const { return m_document->canSave(); } void DocumentView::setContinuousMode(bool continuousMode) { if(m_continuousMode != continuousMode) { m_continuousMode = continuousMode; qreal left = 0.0, top = 0.0; saveLeftAndTop(left, top); adjustScrollBarPolicy(); prepareView(left, top); emit continuousModeChanged(m_continuousMode); s_settings->documentView().setContinuousMode(m_continuousMode); } } LayoutMode DocumentView::layoutMode() const { return m_layout->layoutMode(); } void DocumentView::setLayoutMode(LayoutMode layoutMode) { if(m_layout->layoutMode() != layoutMode && layoutMode >= 0 && layoutMode < NumberOfLayoutModes) { m_layout.reset(DocumentLayout::fromLayoutMode(layoutMode)); if(m_currentPage != m_layout->currentPage(m_currentPage)) { m_currentPage = m_layout->currentPage(m_currentPage); emit currentPageChanged(m_currentPage); } prepareScene(); prepareView(); emit layoutModeChanged(layoutMode); s_settings->documentView().setLayoutMode(layoutMode); } } void DocumentView::setRightToLeftMode(bool rightToLeftMode) { if(m_rightToLeftMode != rightToLeftMode) { m_rightToLeftMode = rightToLeftMode; prepareScene(); prepareView(); emit rightToLeftModeChanged(m_rightToLeftMode); s_settings->documentView().setRightToLeftMode(m_rightToLeftMode); } } void DocumentView::setScaleMode(ScaleMode scaleMode) { if(m_scaleMode != scaleMode && scaleMode >= 0 && scaleMode < NumberOfScaleModes) { m_scaleMode = scaleMode; qreal left = 0.0, top = 0.0; saveLeftAndTop(left, top); adjustScrollBarPolicy(); prepareScene(); prepareView(left, top); emit scaleModeChanged(m_scaleMode); s_settings->documentView().setScaleMode(m_scaleMode); } } void DocumentView::setScaleFactor(qreal scaleFactor) { if(!qFuzzyCompare(m_scaleFactor, scaleFactor) && scaleFactor >= s_settings->documentView().minimumScaleFactor() && scaleFactor <= s_settings->documentView().maximumScaleFactor()) { m_scaleFactor = scaleFactor; if(m_scaleMode == ScaleFactorMode) { qreal left = 0.0, top = 0.0; saveLeftAndTop(left, top); prepareScene(); prepareView(left, top); } emit scaleFactorChanged(m_scaleFactor); s_settings->documentView().setScaleFactor(m_scaleFactor); } } void DocumentView::setRotation(Rotation rotation) { if(m_rotation != rotation && rotation >= 0 && rotation < NumberOfRotations) { m_rotation = rotation; prepareScene(); prepareView(); emit rotationChanged(m_rotation); s_settings->documentView().setRotation(m_rotation); } } void DocumentView::setRenderFlags(qpdfview::RenderFlags renderFlags) { if(m_renderFlags != renderFlags) { const qpdfview::RenderFlags changedFlags = m_renderFlags ^ renderFlags; m_renderFlags = renderFlags; qreal left = 0.0, top = 0.0; saveLeftAndTop(left, top); prepareScene(); prepareView(left, top); prepareThumbnailsScene(); if(changedFlags.testFlag(InvertColors)) { prepareBackground(); emit invertColorsChanged(invertColors()); s_settings->documentView().setInvertColors(invertColors()); } if(changedFlags.testFlag(ConvertToGrayscale)) { emit convertToGrayscaleChanged(convertToGrayscale()); s_settings->documentView().setConvertToGrayscale(convertToGrayscale()); } if(changedFlags.testFlag(TrimMargins)) { emit trimMarginsChanged(trimMargins()); s_settings->documentView().setTrimMargins(trimMargins()); } if(changedFlags.testFlag(DarkenWithPaperColor) || changedFlags.testFlag(LightenWithPaperColor)) { emit compositionModeChanged(compositionMode()); s_settings->documentView().setCompositionMode(compositionMode()); } emit renderFlagsChanged(m_renderFlags); } } void DocumentView::setRenderFlag(qpdfview::RenderFlag renderFlag, bool enabled) { if(enabled) { setRenderFlags(m_renderFlags | renderFlag); } else { setRenderFlags(m_renderFlags & ~renderFlag); } } CompositionMode DocumentView::compositionMode() const { if(m_renderFlags.testFlag(DarkenWithPaperColor)) { return DarkenWithPaperColorMode; } else if(m_renderFlags.testFlag(LightenWithPaperColor)) { return LightenWithPaperColorMode; } else { return DefaultCompositionMode; } } void DocumentView::setCompositionMode(CompositionMode compositionMode) { switch(compositionMode) { default: case DefaultCompositionMode: setRenderFlags((renderFlags() & ~DarkenWithPaperColor) & ~LightenWithPaperColor); break; case DarkenWithPaperColorMode: setRenderFlags((renderFlags() | DarkenWithPaperColor) & ~LightenWithPaperColor); break; case LightenWithPaperColorMode: setRenderFlags((renderFlags() & ~DarkenWithPaperColor) | LightenWithPaperColor); break; } } void DocumentView::setHighlightAll(bool highlightAll) { if(m_highlightAll != highlightAll) { m_highlightAll = highlightAll; if(m_highlightAll) { for(int index = 0; index < m_pages.count(); ++index) { const QList< QRectF >& results = s_searchModel->resultsOnPage(this, index + 1); m_pageItems.at(index)->setHighlights(results); m_thumbnailItems.at(index)->setHighlights(results); } } else { for(int index = 0; index < m_pages.count(); ++index) { m_pageItems.at(index)->setHighlights(QList< QRectF >()); m_thumbnailItems.at(index)->setHighlights(QList< QRectF >()); } } emit highlightAllChanged(m_highlightAll); s_settings->documentView().setHighlightAll(highlightAll); } } void DocumentView::setRubberBandMode(RubberBandMode rubberBandMode) { if(m_rubberBandMode != rubberBandMode && rubberBandMode >= 0 && rubberBandMode < NumberOfRubberBandModes) { m_rubberBandMode = rubberBandMode; foreach(PageItem* page, m_pageItems) { page->setRubberBandMode(m_rubberBandMode); } emit rubberBandModeChanged(m_rubberBandMode); } } void DocumentView::setThumbnailsViewportSize(QSize thumbnailsViewportSize) { if(m_thumbnailsViewportSize != thumbnailsViewportSize) { m_thumbnailsViewportSize = thumbnailsViewportSize; prepareThumbnailsScene(); } } void DocumentView::setThumbnailsOrientation(Qt::Orientation thumbnailsOrientation) { if(m_thumbnailsOrientation != thumbnailsOrientation) { m_thumbnailsOrientation = thumbnailsOrientation; prepareThumbnailsScene(); } } QSet< QByteArray > DocumentView::saveExpandedPaths() const { QSet< QByteArray > expandedPaths; ::saveExpandedPaths(m_outlineModel.data(), expandedPaths); return expandedPaths; } void DocumentView::restoreExpandedPaths(const QSet< QByteArray >& expandedPaths) { ::restoreExpandedPaths(m_outlineModel.data(), expandedPaths); } QAbstractItemModel* DocumentView::fontsModel() const { return m_document->fonts(); } bool DocumentView::searchWasCanceled() const { return m_searchTask->wasCanceled(); } int DocumentView::searchProgress() const { return m_searchTask->progress(); } QString DocumentView::searchText() const { return m_searchTask->text(); } bool DocumentView::searchMatchCase() const { return m_searchTask->matchCase(); } bool DocumentView::searchWholeWords() const { return m_searchTask->wholeWords(); } QPair< QString, QString > DocumentView::searchContext(int page, const QRectF& rect) const { if(page < 1 || page > m_pages.size() || rect.isEmpty()) { return qMakePair(QString(), QString()); } // Fetch at most half of a line as centered on the given rectangle as possible. const qreal pageWidth = m_pages.at(page - 1)->size().width(); const qreal width = qMax(rect.width(), pageWidth / qreal(2)); const qreal x = qBound(qreal(0), rect.x() + rect.width() / qreal(2) - width / qreal(2), pageWidth - width); const QRectF surroundingRect(x, rect.top(), width, rect.height()); const QString& matchedText = m_pages.at(page - 1)->cachedText(rect); const QString& surroundingText = m_pages.at(page - 1)->cachedText(surroundingRect); return qMakePair(matchedText, surroundingText); } bool DocumentView::hasSearchResults() { return s_searchModel->hasResults(this); } QString DocumentView::resolveFileName(QString fileName) const { if(QFileInfo(fileName).isRelative()) { fileName = m_fileInfo.dir().filePath(fileName); } return fileName; } QUrl DocumentView::resolveUrl(QUrl url) const { const QString path = url.path(); if(url.isRelative() && QFileInfo(path).isRelative()) { url.setPath(m_fileInfo.dir().filePath(path)); } return url; } DocumentView::SourceLink DocumentView::sourceLink(QPoint pos) { SourceLink sourceLink; #ifdef WITH_SYNCTEX if(const PageItem* page = dynamic_cast< PageItem* >(itemAt(pos))) { const int sourcePage = page->index() + 1; const QPointF sourcePos = page->sourcePos(page->mapFromScene(mapToScene(pos))); sourceLink = scanForSourceLink(m_fileInfo.absoluteFilePath(), sourcePage, sourcePos); } #else Q_UNUSED(pos); #endif // WITH_SYNCTEX return sourceLink; } void DocumentView::openInSourceEditor(const DocumentView::SourceLink& sourceLink) { if(!s_settings->documentView().sourceEditor().isEmpty()) { const QString absoluteFilePath = m_fileInfo.dir().absoluteFilePath(sourceLink.name); const QString sourceEditorCommand = s_settings->documentView().sourceEditor().arg(absoluteFilePath, QString::number(sourceLink.line), QString::number(sourceLink.column)); QProcess::startDetached(sourceEditorCommand); } else { QMessageBox::information(this, tr("Information"), tr("The source editor has not been set.")); } } void DocumentView::show() { QGraphicsView::show(); prepareView(); } bool DocumentView::open(const QString& filePath) { Model::Document* document = PluginHandler::instance()->loadDocument(filePath); if(document != 0) { QVector< Model::Page* > pages; if(!checkDocument(filePath, document, pages)) { delete document; qDeleteAll(pages); return false; } m_fileInfo.setFile(filePath); m_wasModified = false; m_currentPage = 1; m_past.clear(); m_future.clear(); prepareDocument(document, pages); loadDocumentDefaults(); adjustScrollBarPolicy(); prepareScene(); prepareView(); prepareThumbnailsScene(); emit documentChanged(); emit numberOfPagesChanged(m_pages.count()); emit currentPageChanged(m_currentPage); emit canJumpChanged(false, false); emit continuousModeChanged(m_continuousMode); emit layoutModeChanged(m_layout->layoutMode()); emit rightToLeftModeChanged(m_rightToLeftMode); } return document != 0; } bool DocumentView::refresh() { Model::Document* document = PluginHandler::instance()->loadDocument(m_fileInfo.filePath()); if(document != 0) { QVector< Model::Page* > pages; if(!checkDocument(m_fileInfo.filePath(), document, pages)) { delete document; qDeleteAll(pages); return false; } qreal left = 0.0, top = 0.0; saveLeftAndTop(left, top); m_wasModified = false; m_currentPage = qMin(m_currentPage, document->numberOfPages()); QSet< QByteArray > expandedPaths; ::saveExpandedPaths(m_outlineModel.data(), expandedPaths); prepareDocument(document, pages); ::restoreExpandedPaths(m_outlineModel.data(), expandedPaths); prepareScene(); prepareView(left, top); prepareThumbnailsScene(); emit documentChanged(); emit numberOfPagesChanged(m_pages.count()); emit currentPageChanged(m_currentPage); } return document != 0; } bool DocumentView::save(const QString& filePath, bool withChanges) { // Save document to temporary file... QTemporaryFile temporaryFile; adjustFileTemplateSuffix(temporaryFile, QFileInfo(filePath).suffix()); if(!temporaryFile.open()) { return false; } temporaryFile.close(); if(!m_document->save(temporaryFile.fileName(), withChanges)) { return false; } // Copy from temporary file to actual file... QFile file(filePath); if(!temporaryFile.open()) { return false; } if(!file.open(QIODevice::WriteOnly | QIODevice::Truncate)) { return false; } if(!copyFile(temporaryFile, file)) { return false; } if(withChanges) { m_wasModified = false; } return true; } bool DocumentView::print(QPrinter* printer, const PrintOptions& printOptions) { const int fromPage = printer->fromPage() != 0 ? printer->fromPage() : 1; const int toPage = printer->toPage() != 0 ? printer->toPage() : m_pages.count(); #ifdef WITH_CUPS if(m_document->canBePrintedUsingCUPS()) { return printUsingCUPS(printer, printOptions, fromPage, toPage); } #endif // WITH_CUPS return printUsingQt(printer, printOptions, fromPage, toPage); } void DocumentView::previousPage() { jumpToPage(m_layout->previousPage(m_currentPage)); } void DocumentView::nextPage() { jumpToPage(m_layout->nextPage(m_currentPage, m_pages.count())); } void DocumentView::firstPage() { jumpToPage(1); } void DocumentView::lastPage() { jumpToPage(m_pages.count()); } void DocumentView::jumpToPage(int page, bool trackChange, qreal newLeft, qreal newTop) { if(page >= 1 && page <= m_pages.count()) { qreal left = 0.0, top = 0.0; saveLeftAndTop(left, top); if(qIsNaN(newLeft)) { newLeft = qBound(qreal(0.0), left, qreal(1.0)); } if(qIsNaN(newTop)) { newTop = qBound(qreal(0.0), top, qreal(1.0)); } if(m_currentPage != m_layout->currentPage(page) || qAbs(left - newLeft) > 0.01 || qAbs(top - newTop) > 0.01) { if(trackChange) { m_past.append(Position(m_currentPage, left, top)); m_future.clear(); emit canJumpChanged(true, false); } m_currentPage = m_layout->currentPage(page); prepareView(newLeft, newTop, false, page); emit currentPageChanged(m_currentPage, trackChange); } } } bool DocumentView::canJumpBackward() const { return !m_past.isEmpty(); } void DocumentView::jumpBackward() { if(!m_past.isEmpty()) { qreal left = 0.0, top = 0.0; saveLeftAndTop(left, top); m_future.prepend(Position(m_currentPage, left, top)); const Position pos = m_past.takeLast(); jumpToPage(pos.page, false, pos.left, pos.top); emit canJumpChanged(!m_past.isEmpty(), !m_future.isEmpty()); } } bool DocumentView::canJumpForward() const { return !m_future.isEmpty(); } void DocumentView::jumpForward() { if(!m_future.isEmpty()) { qreal left = 0.0, top = 0.0; saveLeftAndTop(left, top); m_past.append(Position(m_currentPage, left, top)); const Position pos = m_future.takeFirst(); jumpToPage(pos.page, false, pos.left, pos.top); emit canJumpChanged(!m_past.isEmpty(), !m_future.isEmpty()); } } void DocumentView::temporaryHighlight(int page, const QRectF& highlight) { if(page >= 1 && page <= m_pages.count() && !highlight.isNull()) { prepareHighlight(page - 1, highlight); QTimer::singleShot(s_settings->documentView().highlightDuration(), this, SLOT(on_temporaryHighlight_timeout())); } } void DocumentView::startSearch(const QString& text, bool matchCase, bool wholeWords) { cancelSearch(); clearResults(); m_searchTask->start(m_pages, text, matchCase, wholeWords, m_currentPage, s_settings->documentView().parallelSearchExecution()); } void DocumentView::cancelSearch() { m_searchTask->cancel(); m_searchTask->wait(); } void DocumentView::clearResults() { s_searchModel->clearResults(this); m_currentResult = QModelIndex(); m_highlight->setVisible(false); foreach(PageItem* page, m_pageItems) { page->setHighlights(QList< QRectF >()); } foreach(ThumbnailItem* page, m_thumbnailItems) { page->setHighlights(QList< QRectF >()); } if(s_settings->documentView().limitThumbnailsToResults()) { prepareThumbnailsScene(); } } void DocumentView::findPrevious() { checkResult(); m_currentResult = s_searchModel->findResult(this, m_currentResult, m_currentPage, SearchModel::FindPrevious); applyResult(); } void DocumentView::findNext() { checkResult(); m_currentResult = s_searchModel->findResult(this, m_currentResult, m_currentPage, SearchModel::FindNext); applyResult(); } void DocumentView::findResult(const QModelIndex& index) { const int page = pageOfResult(index); const QRectF rect = rectOfResult(index); if(page >= 1 && page <= m_pages.count() && !rect.isEmpty()) { m_currentResult = index; applyResult(); } } void DocumentView::zoomIn() { if(scaleMode() != ScaleFactorMode) { const qreal currentScaleFactor = m_pageItems.at(m_currentPage - 1)->renderParam().scaleFactor(); setScaleFactor(qMin(currentScaleFactor * s_settings->documentView().zoomFactor(), s_settings->documentView().maximumScaleFactor())); setScaleMode(ScaleFactorMode); } else { setScaleFactor(qMin(m_scaleFactor * s_settings->documentView().zoomFactor(), s_settings->documentView().maximumScaleFactor())); } } void DocumentView::zoomOut() { if(scaleMode() != ScaleFactorMode) { const qreal currentScaleFactor = m_pageItems.at(m_currentPage - 1)->renderParam().scaleFactor(); setScaleFactor(qMax(currentScaleFactor / s_settings->documentView().zoomFactor(), s_settings->documentView().minimumScaleFactor())); setScaleMode(ScaleFactorMode); } else { setScaleFactor(qMax(m_scaleFactor / s_settings->documentView().zoomFactor(), s_settings->documentView().minimumScaleFactor())); } } void DocumentView::originalSize() { setScaleFactor(1.0); setScaleMode(ScaleFactorMode); } void DocumentView::rotateLeft() { switch(m_rotation) { default: case RotateBy0: setRotation(RotateBy270); break; case RotateBy90: setRotation(RotateBy0); break; case RotateBy180: setRotation(RotateBy90); break; case RotateBy270: setRotation(RotateBy180); break; } } void DocumentView::rotateRight() { switch(m_rotation) { default: case RotateBy0: setRotation(RotateBy90); break; case RotateBy90: setRotation(RotateBy180); break; case RotateBy180: setRotation(RotateBy270); break; case RotateBy270: setRotation(RotateBy0); break; } } void DocumentView::startPresentation() { const int screen = s_settings->presentationView().screen(); PresentationView* presentationView = new PresentationView(m_pages); presentationView->setGeometry(QApplication::desktop()->screenGeometry(screen)); presentationView->show(); presentationView->setAttribute(Qt::WA_DeleteOnClose); connect(this, SIGNAL(destroyed()), presentationView, SLOT(close())); connect(this, SIGNAL(documentChanged()), presentationView, SLOT(close())); presentationView->setRotation(rotation()); presentationView->setRenderFlags(renderFlags()); presentationView->jumpToPage(currentPage(), false); if(s_settings->presentationView().synchronize()) { connect(this, SIGNAL(currentPageChanged(int,bool)), presentationView, SLOT(jumpToPage(int,bool))); connect(presentationView, SIGNAL(currentPageChanged(int,bool)), this, SLOT(jumpToPage(int,bool))); } } void DocumentView::on_verticalScrollBar_valueChanged() { if(m_verticalScrollBarChangedBlocked || !m_continuousMode) { return; } int currentPage = -1; const QRectF visibleRect = mapToScene(viewport()->rect()).boundingRect(); for(int index = 0, count = m_pageItems.count(); index < count; ++index) { PageItem* page = m_pageItems.at((m_currentPage - 1 + index) % count); const int pageNumber = page->index() + 1; const QRectF pageRect = page->boundingRect().translated(page->pos()); if(!pageRect.intersects(visibleRect)) { page->cancelRender(); } else if(currentPage == -1 && m_layout->currentPage(pageNumber) == pageNumber && m_layout->isCurrentPage(visibleRect, pageRect)) { currentPage = pageNumber; } } if(currentPage != -1 && m_currentPage != currentPage) { m_currentPage = currentPage; emit currentPageChanged(m_currentPage); if(s_settings->documentView().highlightCurrentThumbnail()) { for(int index = 0; index < m_thumbnailItems.count(); ++index) { m_thumbnailItems.at(index)->setHighlighted(index == m_currentPage - 1); } } } } void DocumentView::on_autoRefresh_timeout() { if(m_fileInfo.exists()) { refresh(); } else { m_wasModified = true; emit documentModified(); } } void DocumentView::on_prefetch_timeout() { const QPair< int, int > prefetchRange = m_layout->prefetchRange(m_currentPage, m_pages.count()); const int maxCost = prefetchRange.second - prefetchRange.first + 1; int cost = 0; for(int index = m_currentPage - 1; index <= prefetchRange.second - 1; ++index) { cost += m_pageItems.at(index)->startRender(true); if(cost >= maxCost) { return; } } for(int index = m_currentPage - 1; index >= prefetchRange.first - 1; --index) { cost += m_pageItems.at(index)->startRender(true); if(cost >= maxCost) { return; } } } void DocumentView::on_temporaryHighlight_timeout() { m_highlight->setVisible(false); } void DocumentView::on_searchTask_progressChanged(int progress) { s_searchModel->updateProgress(this); emit searchProgressChanged(progress); } void DocumentView::on_searchTask_resultsReady(int index, const QList< QRectF >& results) { if(m_searchTask->wasCanceled()) { return; } s_searchModel->insertResults(this, index + 1, results); if(m_highlightAll) { m_pageItems.at(index)->setHighlights(results); m_thumbnailItems.at(index)->setHighlights(results); } if(s_settings->documentView().limitThumbnailsToResults()) { prepareThumbnailsScene(); } if(!results.isEmpty() && !m_currentResult.isValid()) { setFocus(); findNext(); } } void DocumentView::on_pages_cropRectChanged() { qreal left = 0.0, top = 0.0; saveLeftAndTop(left, top); prepareScene(); prepareView(left, top); } void DocumentView::on_thumbnails_cropRectChanged() { prepareThumbnailsScene(); } void DocumentView::on_pages_linkClicked(bool newTab, int page, qreal left, qreal top) { if(newTab) { emit linkClicked(page); } else { jumpToPage(page, true, left, top); } } void DocumentView::on_pages_linkClicked(bool newTab, const QString& fileName, int page) { emit linkClicked(newTab, resolveFileName(fileName), page); } void DocumentView::on_pages_linkClicked(const QString& url) { if(s_settings->documentView().openUrl()) { QDesktopServices::openUrl(resolveUrl(url)); } else { QMessageBox::information(this, tr("Information"), tr("Opening URL is disabled in the settings.")); } } void DocumentView::on_pages_rubberBandFinished() { setRubberBandMode(ModifiersMode); } void DocumentView::on_pages_zoomToSelection(int page, const QRectF& rect) { if(rect.isEmpty()) { return; } const qreal visibleWidth = m_layout->visibleWidth(viewport()->width()); const qreal visibleHeight = m_layout->visibleHeight(viewport()->height()); const QSizeF displayedSize = m_pageItems.at(page - 1)->displayedSize(); setScaleFactor(qMin(qMin(visibleWidth / displayedSize.width() / rect.width(), visibleHeight / displayedSize.height() / rect.height()), Defaults::DocumentView::maximumScaleFactor())); setScaleMode(ScaleFactorMode); jumpToPage(page, false, rect.left(), rect.top()); } void DocumentView::on_pages_openInSourceEditor(int page, QPointF pos) { #ifdef WITH_SYNCTEX if(const DocumentView::SourceLink sourceLink = scanForSourceLink(m_fileInfo.absoluteFilePath(), page, pos)) { openInSourceEditor(sourceLink); } else { QMessageBox::warning(this, tr("Warning"), tr("SyncTeX data for '%1' could not be found.").arg(m_fileInfo.absoluteFilePath())); } #else Q_UNUSED(page); Q_UNUSED(pos); #endif // WITH_SYNCTEX } void DocumentView::on_pages_wasModified() { m_wasModified = true; emit documentModified(); } void DocumentView::resizeEvent(QResizeEvent* event) { qreal left = 0.0, top = 0.0; saveLeftAndTop(left, top); QGraphicsView::resizeEvent(event); if(m_scaleMode != ScaleFactorMode) { prepareScene(); prepareView(left, top); } } void DocumentView::keyPressEvent(QKeyEvent* event) { foreach(const PageItem* page, m_pageItems) { if(page->showsAnnotationOverlay() || page->showsFormFieldOverlay()) { QGraphicsView::keyPressEvent(event); return; } } const QKeySequence keySequence(event->modifiers() + event->key()); int maskedKey = -1; bool maskedKeyActive = false; switch(event->key()) { case Qt::Key_PageUp: case Qt::Key_PageDown: case Qt::Key_Up: case Qt::Key_Down: case Qt::Key_Left: case Qt::Key_Right: maskedKeyActive = true; break; } if(s_shortcutHandler->matchesSkipBackward(keySequence)) { maskedKey = Qt::Key_PageUp; } else if(s_shortcutHandler->matchesSkipForward(keySequence)) { maskedKey = Qt::Key_PageDown; } else if(s_shortcutHandler->matchesMoveUp(keySequence)) { maskedKey = Qt::Key_Up; } else if(s_shortcutHandler->matchesMoveDown(keySequence)) { maskedKey = Qt::Key_Down; } else if(s_shortcutHandler->matchesMoveLeft(keySequence)) { maskedKey = Qt::Key_Left; } else if(s_shortcutHandler->matchesMoveRight(keySequence)) { maskedKey = Qt::Key_Right; } else if(maskedKeyActive) { event->ignore(); return; } if(maskedKey == -1) { QGraphicsView::keyPressEvent(event); } else { if(!m_continuousMode) { if(maskedKey == Qt::Key_PageUp && verticalScrollBar()->value() == verticalScrollBar()->minimum() && m_currentPage != 1) { previousPage(); verticalScrollBar()->setValue(verticalScrollBar()->maximum()); event->accept(); return; } else if(maskedKey == Qt::Key_PageDown && verticalScrollBar()->value() == verticalScrollBar()->maximum() && m_currentPage != m_layout->currentPage(m_pages.count())) { nextPage(); verticalScrollBar()->setValue(verticalScrollBar()->minimum()); event->accept(); return; } } if((maskedKey == Qt::Key_Up && verticalScrollBar()->minimum() == verticalScrollBar()->maximum()) || (maskedKey == Qt::Key_Left && !horizontalScrollBar()->isVisible())) { previousPage(); event->accept(); return; } else if((maskedKey == Qt::Key_Down && verticalScrollBar()->minimum() == verticalScrollBar()->maximum()) || (maskedKey == Qt::Key_Right && !horizontalScrollBar()->isVisible())) { nextPage(); event->accept(); return; } QKeyEvent keyEvent(event->type(), maskedKey, Qt::NoModifier, event->text(), event->isAutoRepeat(), event->count()); QGraphicsView::keyPressEvent(&keyEvent); } } void DocumentView::mousePressEvent(QMouseEvent* event) { if(event->button() == Qt::XButton1) { event->accept(); jumpBackward(); } else if(event->button() == Qt::XButton2) { event->accept(); jumpForward(); } QGraphicsView::mousePressEvent(event); } void DocumentView::wheelEvent(QWheelEvent* event) { const bool noModifiersActive = event->modifiers() == Qt::NoModifier; const bool zoomModifiersActive = modifiersAreActive(event, s_settings->documentView().zoomModifiers()); const bool rotateModifiersActive = modifiersAreActive(event, s_settings->documentView().rotateModifiers()); const bool scrollModifiersActive = modifiersAreActive(event, s_settings->documentView().scrollModifiers()); if(zoomModifiersActive) { if(event->delta() > 0) { zoomIn(); } else { zoomOut(); } event->accept(); return; } else if(rotateModifiersActive) { if(event->delta() > 0) { rotateLeft(); } else { rotateRight(); } event->accept(); return; } else if(scrollModifiersActive) { QWheelEvent wheelEvent(event->pos(), event->delta(), event->buttons(), Qt::AltModifier, Qt::Horizontal); QGraphicsView::wheelEvent(&wheelEvent); event->accept(); return; } else if(noModifiersActive && !m_continuousMode) { if(event->delta() > 0 && verticalScrollBar()->value() == verticalScrollBar()->minimum() && m_currentPage != 1) { previousPage(); verticalScrollBar()->setValue(verticalScrollBar()->maximum()); event->accept(); return; } else if(event->delta() < 0 && verticalScrollBar()->value() == verticalScrollBar()->maximum() && m_currentPage != m_layout->currentPage(m_pages.count())) { nextPage(); verticalScrollBar()->setValue(verticalScrollBar()->minimum()); event->accept(); return; } } QGraphicsView::wheelEvent(event); } void DocumentView::contextMenuEvent(QContextMenuEvent* event) { if(event->reason() == QContextMenuEvent::Mouse && modifiersUseMouseButton(s_settings, Qt::RightButton)) { event->accept(); return; } event->setAccepted(false); QGraphicsView::contextMenuEvent(event); if(!event->isAccepted()) { event->setAccepted(true); emit customContextMenuRequested(event->pos()); } } #ifdef WITH_CUPS bool DocumentView::printUsingCUPS(QPrinter* printer, const PrintOptions& printOptions, int fromPage, int toPage) { int num_dests = 0; cups_dest_t* dests = 0; int num_options = 0; cups_option_t* options = 0; cups_dest_t* dest = 0; int jobId = 0; num_dests = cupsGetDests(&dests); dest = cupsGetDest(printer->printerName().toUtf8(), 0, num_dests, dests); if(dest == 0) { qWarning() << cupsLastErrorString(); cupsFreeDests(num_dests, dests); return false; } for(int index = 0; index < dest->num_options; ++index) { num_options = cupsAddOption(dest->options[index].name, dest->options[index].value, num_options, &options); } const QStringList cupsOptions = printer->printEngine()->property(QPrintEngine::PrintEnginePropertyKey(0xfe00)).toStringList(); for(int index = 0; index < cupsOptions.count() - 1; index += 2) { num_options = cupsAddOption(cupsOptions.at(index).toUtf8(), cupsOptions.at(index + 1).toUtf8(), num_options, &options); } #if QT_VERSION >= QT_VERSION_CHECK(4,7,0) num_options = cupsAddOption("copies", QString::number(printer->copyCount()).toUtf8(), num_options, &options); #endif // QT_VERSION num_options = cupsAddOption("Collate", printer->collateCopies() ? "true" : "false", num_options, &options); switch(printer->pageOrder()) { case QPrinter::FirstPageFirst: num_options = cupsAddOption("outputorder", "normal", num_options, &options); break; case QPrinter::LastPageFirst: num_options = cupsAddOption("outputorder", "reverse", num_options, &options); break; } num_options = cupsAddOption("fit-to-page", printOptions.fitToPage ? "true" : "false", num_options, &options); switch(printer->orientation()) { case QPrinter::Portrait: num_options = cupsAddOption("landscape", "false", num_options, &options); break; case QPrinter::Landscape: num_options = cupsAddOption("landscape", "true", num_options, &options); break; } switch(printer->colorMode()) { case QPrinter::Color: num_options = addCMYKorRGBColorModel(dest, num_options, &options); num_options = cupsAddOption("Ink", "COLOR", num_options, &options); break; case QPrinter::GrayScale: num_options = cupsAddOption("ColorModel", "Gray", num_options, &options); num_options = cupsAddOption("Ink", "MONO", num_options, &options); break; } switch(printer->duplex()) { case QPrinter::DuplexNone: num_options = cupsAddOption("sides", "one-sided", num_options, &options); break; case QPrinter::DuplexAuto: break; case QPrinter::DuplexLongSide: num_options = cupsAddOption("sides", "two-sided-long-edge", num_options, &options); break; case QPrinter::DuplexShortSide: num_options = cupsAddOption("sides", "two-sided-short-edge", num_options, &options); break; } int numberUp = 1; #if QT_VERSION < QT_VERSION_CHECK(5,2,0) switch(printOptions.numberUp) { case PrintOptions::SinglePage: num_options = cupsAddOption("number-up", "1", num_options, &options); numberUp = 1; break; case PrintOptions::TwoPages: num_options = cupsAddOption("number-up", "2", num_options, &options); numberUp = 2; break; case PrintOptions::FourPages: num_options = cupsAddOption("number-up", "4", num_options, &options); numberUp = 4; break; case PrintOptions::SixPages: num_options = cupsAddOption("number-up", "6", num_options, &options); numberUp = 6; break; case PrintOptions::NinePages: num_options = cupsAddOption("number-up", "9", num_options, &options); numberUp = 9; break; case PrintOptions::SixteenPages: num_options = cupsAddOption("number-up", "16", num_options, &options); numberUp = 16; break; } switch(printOptions.numberUpLayout) { case PrintOptions::BottomTopLeftRight: num_options = cupsAddOption("number-up-layout", "btlr", num_options, &options); break; case PrintOptions::BottomTopRightLeft: num_options = cupsAddOption("number-up-layout", "btrl", num_options, &options); break; case PrintOptions::LeftRightBottomTop: num_options = cupsAddOption("number-up-layout", "lrbt", num_options, &options); break; case PrintOptions::LeftRightTopBottom: num_options = cupsAddOption("number-up-layout", "lrtb", num_options, &options); break; case PrintOptions::RightLeftBottomTop: num_options = cupsAddOption("number-up-layout", "rlbt", num_options, &options); break; case PrintOptions::RightLeftTopBottom: num_options = cupsAddOption("number-up-layout", "rltb", num_options, &options); break; case PrintOptions::TopBottomLeftRight: num_options = cupsAddOption("number-up-layout", "tblr", num_options, &options); break; case PrintOptions::TopBottomRightLeft: num_options = cupsAddOption("number-up-layout", "tbrl", num_options, &options); break; } switch(printOptions.pageSet) { case PrintOptions::AllPages: break; case PrintOptions::EvenPages: num_options = cupsAddOption("page-set", "even", num_options, &options); break; case PrintOptions::OddPages: num_options = cupsAddOption("page-set", "odd", num_options, &options); break; } #else { bool ok = false; int value = QString::fromUtf8(cupsGetOption("number-up", num_options, options)).toInt(&ok); numberUp = ok ? value : 1; } #endif // QT_VERSION fromPage = (fromPage - 1) / numberUp + 1; toPage = (toPage - 1) / numberUp + 1; if(cupsGetOption("page-ranges", num_options, options) == 0) { if(printOptions.pageRanges.isEmpty()) { num_options = cupsAddOption("page-ranges", QString("%1-%2").arg(fromPage).arg(toPage).toUtf8(), num_options, &options); } else { num_options = cupsAddOption("page-ranges", printOptions.pageRanges.toUtf8(), num_options, &options); } } QTemporaryFile temporaryFile; adjustFileTemplateSuffix(temporaryFile, m_fileInfo.suffix()); if(!temporaryFile.open()) { cupsFreeDests(num_dests, dests); cupsFreeOptions(num_options, options); return false; } temporaryFile.close(); if(!m_document->save(temporaryFile.fileName(), true)) { cupsFreeDests(num_dests, dests); cupsFreeOptions(num_options, options); return false; } jobId = cupsPrintFile(dest->name, QFile::encodeName(temporaryFile.fileName()), m_fileInfo.completeBaseName().toUtf8(), num_options, options); if(jobId < 1) { qWarning() << cupsLastErrorString(); } cupsFreeDests(num_dests, dests); cupsFreeOptions(num_options, options); return jobId >= 1; } #endif // WITH_CUPS bool DocumentView::printUsingQt(QPrinter* printer, const PrintOptions& printOptions, int fromPage, int toPage) { QScopedPointer< QProgressDialog > progressDialog(new QProgressDialog(this)); progressDialog->setLabelText(tr("Printing '%1'...").arg(m_fileInfo.completeBaseName())); progressDialog->setRange(fromPage - 1, toPage); QPainter painter; if(!painter.begin(printer)) { return false; } for(int index = fromPage - 1; index <= toPage - 1; ++index) { progressDialog->setValue(index); QApplication::processEvents(); painter.save(); const Model::Page* page = m_pages.at(index); if(printOptions.fitToPage) { const qreal pageWidth = printer->physicalDpiX() / 72.0 * page->size().width(); const qreal pageHeight = printer->physicalDpiY() / 72.0 * page->size().width(); const qreal scaleFactor = qMin(printer->width() / pageWidth, printer->height() / pageHeight); painter.setTransform(QTransform::fromScale(scaleFactor, scaleFactor)); } else { const qreal scaleFactorX = static_cast< qreal >(printer->logicalDpiX()) / static_cast< qreal >(printer->physicalDpiX()); const qreal scaleFactorY = static_cast< qreal >(printer->logicalDpiY()) / static_cast< qreal >(printer->physicalDpiY()); painter.setTransform(QTransform::fromScale(scaleFactorX, scaleFactorY)); } painter.drawImage(QPointF(), page->render(printer->physicalDpiX(), printer->physicalDpiY())); painter.restore(); if(index < toPage - 1) { printer->newPage(); } QApplication::processEvents(); if(progressDialog->wasCanceled()) { printer->abort(); return false; } } return true; } void DocumentView::saveLeftAndTop(qreal& left, qreal& top) const { const PageItem* page = m_pageItems.at(m_currentPage - 1); const QRectF boundingRect = page->uncroppedBoundingRect().translated(page->pos()); const QPointF topLeft = mapToScene(viewport()->rect().topLeft()); left = (topLeft.x() - boundingRect.x()) / boundingRect.width(); top = (topLeft.y() - boundingRect.y()) / boundingRect.height(); } bool DocumentView::checkDocument(const QString& filePath, Model::Document* document, QVector< Model::Page* >& pages) { if(document->isLocked()) { QString password = QInputDialog::getText(this, tr("Unlock %1").arg(QFileInfo(filePath).completeBaseName()), tr("Password:"), QLineEdit::Password); if(document->unlock(password)) { return false; } } const int numberOfPages = document->numberOfPages(); if(numberOfPages == 0) { qWarning() << "No pages were found in document at" << filePath; return false; } pages.reserve(numberOfPages); for(int index = 0; index < numberOfPages; ++index) { Model::Page* page = document->page(index); if(page == 0) { qWarning() << "No page" << index << "was found in document at" << filePath; return false; } pages.append(page); } return true; } void DocumentView::loadDocumentDefaults() { if(m_document->wantsContinuousMode()) { m_continuousMode = true; } if(m_document->wantsSinglePageMode()) { m_layout.reset(new SinglePageLayout); } else if(m_document->wantsTwoPagesMode()) { m_layout.reset(new TwoPagesLayout); } else if(m_document->wantsTwoPagesWithCoverPageMode()) { m_layout.reset(new TwoPagesWithCoverPageLayout); } if(m_document->wantsRightToLeftMode()) { m_rightToLeftMode = true; } } void DocumentView::adjustScrollBarPolicy() { switch(m_scaleMode) { default: case ScaleFactorMode: setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded); setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded); break; case FitToPageWidthMode: setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded); break; case FitToPageSizeMode: setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); setVerticalScrollBarPolicy(m_continuousMode ? Qt::ScrollBarAsNeeded : Qt::ScrollBarAlwaysOff); break; } } void DocumentView::prepareDocument(Model::Document* document, const QVector< Model::Page* >& pages) { m_prefetchTimer->blockSignals(true); m_prefetchTimer->stop(); cancelSearch(); clearResults(); qDeleteAll(m_pageItems); qDeleteAll(m_thumbnailItems); qDeleteAll(m_pages); m_pages = pages; delete m_document; m_document = document; if(!m_autoRefreshWatcher->files().isEmpty()) { m_autoRefreshWatcher->removePaths(m_autoRefreshWatcher->files()); } if(s_settings->documentView().autoRefresh()) { m_autoRefreshWatcher->addPath(m_fileInfo.filePath()); } m_document->setPaperColor(s_settings->pageItem().paperColor()); preparePages(); prepareThumbnails(); prepareBackground(); const Model::Outline outline = m_document->outline(); if(!outline.empty()) { m_outlineModel.reset(new OutlineModel(outline, this)); } else { m_outlineModel.reset(new FallbackOutlineModel(this)); } Model::Properties properties = m_document->properties(); addFileProperties(properties, m_fileInfo); m_propertiesModel.reset(new PropertiesModel(properties, this)); if(s_settings->documentView().prefetch()) { m_prefetchTimer->blockSignals(false); m_prefetchTimer->start(); } } void DocumentView::preparePages() { m_pageItems.clear(); m_pageItems.reserve(m_pages.count()); for(int index = 0; index < m_pages.count(); ++index) { PageItem* page = new PageItem(m_pages.at(index), index); page->setRubberBandMode(m_rubberBandMode); scene()->addItem(page); m_pageItems.append(page); connect(page, SIGNAL(cropRectChanged()), SLOT(on_pages_cropRectChanged())); connect(page, SIGNAL(linkClicked(bool,int,qreal,qreal)), SLOT(on_pages_linkClicked(bool,int,qreal,qreal))); connect(page, SIGNAL(linkClicked(bool,QString,int)), SLOT(on_pages_linkClicked(bool,QString,int))); connect(page, SIGNAL(linkClicked(QString)), SLOT(on_pages_linkClicked(QString))); connect(page, SIGNAL(rubberBandFinished()), SLOT(on_pages_rubberBandFinished())); connect(page, SIGNAL(zoomToSelection(int,QRectF)), SLOT(on_pages_zoomToSelection(int,QRectF))); connect(page, SIGNAL(openInSourceEditor(int,QPointF)), SLOT(on_pages_openInSourceEditor(int,QPointF))); connect(page, SIGNAL(wasModified()), SLOT(on_pages_wasModified())); } } void DocumentView::prepareThumbnails() { m_thumbnailItems.clear(); m_thumbnailItems.reserve(m_pages.count()); for(int index = 0; index < m_pages.count(); ++index) { ThumbnailItem* page = new ThumbnailItem(m_pages.at(index), pageLabelFromNumber(index + 1), index); m_thumbnailsScene->addItem(page); m_thumbnailItems.append(page); connect(page, SIGNAL(cropRectChanged()), SLOT(on_thumbnails_cropRectChanged())); connect(page, SIGNAL(linkClicked(bool,int,qreal,qreal)), SLOT(on_pages_linkClicked(bool,int,qreal,qreal))); } } void DocumentView::prepareBackground() { QColor backgroundColor; if(s_settings->pageItem().decoratePages()) { backgroundColor = s_settings->pageItem().backgroundColor(); } else { backgroundColor = s_settings->pageItem().paperColor(); if(invertColors()) { backgroundColor.setRgb(~backgroundColor.rgb()); } } scene()->setBackgroundBrush(QBrush(backgroundColor)); m_thumbnailsScene->setBackgroundBrush(QBrush(backgroundColor)); } void DocumentView::prepareScene() { // prepare render parameters and adjust scale factor RenderParam renderParam(logicalDpiX(), logicalDpiY(), 1.0, scaleFactor(), rotation(), renderFlags()); #if QT_VERSION >= QT_VERSION_CHECK(5,1,0) if(s_settings->pageItem().useDevicePixelRatio()) { #if QT_VERSION >= QT_VERSION_CHECK(5,6,0) renderParam.setDevicePixelRatio(devicePixelRatioF()); #else renderParam.setDevicePixelRatio(devicePixelRatio()); #endif // QT_VERSION } #endif // QT_VERSION const qreal visibleWidth = m_layout->visibleWidth(viewport()->width()); const qreal visibleHeight = m_layout->visibleHeight(viewport()->height()); foreach(PageItem* page, m_pageItems) { const QSizeF displayedSize = page->displayedSize(renderParam); if(m_scaleMode == FitToPageWidthMode) { adjustScaleFactor(renderParam, visibleWidth / displayedSize.width()); } else if(m_scaleMode == FitToPageSizeMode) { adjustScaleFactor(renderParam, qMin(visibleWidth / displayedSize.width(), visibleHeight / displayedSize.height())); } page->setRenderParam(renderParam); } // prepare layout qreal left = 0.0; qreal right = 0.0; qreal height = s_settings->documentView().pageSpacing(); m_layout->prepareLayout(m_pageItems, m_rightToLeftMode, left, right, height); scene()->setSceneRect(left, 0.0, right - left, height); } void DocumentView::prepareView(qreal newLeft, qreal newTop, bool forceScroll, int scrollToPage) { const QRectF sceneRect = scene()->sceneRect(); qreal top = sceneRect.top(); qreal height = sceneRect.height(); int horizontalValue = 0; int verticalValue = 0; scrollToPage = scrollToPage != 0 ? scrollToPage : m_currentPage; const int highlightIsOnPage = m_currentResult.isValid() ? pageOfResult(m_currentResult) : 0; const bool highlightCurrentThumbnail = s_settings->documentView().highlightCurrentThumbnail(); for(int index = 0; index < m_pageItems.count(); ++index) { PageItem* page = m_pageItems.at(index); if(m_continuousMode) { page->setVisible(true); } else { if(m_layout->leftIndex(index) == m_currentPage - 1) { page->setVisible(true); const QRectF boundingRect = page->boundingRect().translated(page->pos()); top = boundingRect.top() - s_settings->documentView().pageSpacing(); height = boundingRect.height() + 2.0 * s_settings->documentView().pageSpacing(); } else { page->setVisible(false); page->cancelRender(); } } if(index == scrollToPage - 1) { const QRectF boundingRect = page->uncroppedBoundingRect().translated(page->pos()); horizontalValue = qFloor(boundingRect.left() + newLeft * boundingRect.width()); verticalValue = qFloor(boundingRect.top() + newTop * boundingRect.height()); } if(index == highlightIsOnPage - 1) { m_highlight->setPos(page->pos()); m_highlight->setTransform(page->transform()); page->stackBefore(m_highlight); } m_thumbnailItems.at(index)->setHighlighted(highlightCurrentThumbnail && (index == m_currentPage - 1)); } setSceneRect(sceneRect.left(), top, sceneRect.width(), height); if(!forceScroll && s_settings->documentView().minimalScrolling()) { setValueIfNotVisible(horizontalScrollBar(), horizontalValue); setValueIfNotVisible(verticalScrollBar(), verticalValue); } else { horizontalScrollBar()->setValue(horizontalValue); verticalScrollBar()->setValue(verticalValue); } viewport()->update(); } void DocumentView::prepareThumbnailsScene() { // prepare render parameters and adjust scale factor RenderParam renderParam(logicalDpiX(), logicalDpiY(), 1.0, scaleFactor(), rotation(), renderFlags()); #if QT_VERSION >= QT_VERSION_CHECK(5,1,0) if(s_settings->pageItem().useDevicePixelRatio()) { #if QT_VERSION >= QT_VERSION_CHECK(5,6,0) renderParam.setDevicePixelRatio(devicePixelRatioF()); #else renderParam.setDevicePixelRatio(devicePixelRatio()); #endif // QT_VERSION } #endif // QT_VERSION const qreal thumbnailSize = s_settings->documentView().thumbnailSize(); const qreal thumbnailSpacing = s_settings->documentView().thumbnailSpacing(); qreal visibleWidth = Defaults::DocumentView::thumbnailSize(); qreal visibleHeight = Defaults::DocumentView::thumbnailSize(); if(!m_thumbnailsViewportSize.isNull()) { visibleWidth = m_thumbnailsViewportSize.width() - 3.0 * thumbnailSpacing; visibleHeight = m_thumbnailsViewportSize.height() - 3.0 * thumbnailSpacing; } foreach(ThumbnailItem* page, m_thumbnailItems) { const QSizeF displayedSize = page->displayedSize(renderParam); if(thumbnailSize != 0.0) { adjustScaleFactor(renderParam, qMin(thumbnailSize / displayedSize.width(), thumbnailSize / displayedSize.height())); } else { if(m_thumbnailsOrientation == Qt::Vertical) { adjustScaleFactor(renderParam, visibleWidth / displayedSize.width()); } else { adjustScaleFactor(renderParam, (visibleHeight - page->textHeight()) / displayedSize.height()); } } page->setRenderParam(renderParam); } // prepare layout qreal left = 0.0; qreal right = m_thumbnailsOrientation == Qt::Vertical ? 0.0 : thumbnailSpacing; qreal top = 0.0; qreal bottom = m_thumbnailsOrientation == Qt::Vertical ? thumbnailSpacing : 0.0; const bool limitThumbnailsToResults = s_settings->documentView().limitThumbnailsToResults(); for(int index = 0; index < m_thumbnailItems.count(); ++index) { ThumbnailItem* page = m_thumbnailItems.at(index); // prepare visibility if(limitThumbnailsToResults && s_searchModel->hasResults(this) && !s_searchModel->hasResultsOnPage(this, index + 1)) { page->setVisible(false); page->cancelRender(); continue; } page->setVisible(true); // prepare position const QRectF boundingRect = page->boundingRect(); if(m_thumbnailsOrientation == Qt::Vertical) { page->setPos(-boundingRect.left() - 0.5 * boundingRect.width(), bottom - boundingRect.top()); left = qMin(left, -0.5f * boundingRect.width() - thumbnailSpacing); right = qMax(right, 0.5f * boundingRect.width() + thumbnailSpacing); bottom += boundingRect.height() + thumbnailSpacing; } else { page->setPos(right - boundingRect.left(), -boundingRect.top() - 0.5 * boundingRect.height()); top = qMin(top, -0.5f * boundingRect.height() - thumbnailSpacing); bottom = qMax(bottom, 0.5f * boundingRect.height() + thumbnailSpacing); right += boundingRect.width() + thumbnailSpacing; } } m_thumbnailsScene->setSceneRect(left, top, right - left, bottom - top); } void DocumentView::prepareHighlight(int index, const QRectF& rect) { PageItem* page = m_pageItems.at(index); m_highlight->setPos(page->pos()); m_highlight->setTransform(page->transform()); m_highlight->setRect(rect.normalized()); m_highlight->setBrush(QBrush(s_settings->pageItem().highlightColor())); page->stackBefore(m_highlight); m_highlight->setVisible(true); { VerticalScrollBarChangedBlocker verticalScrollBarChangedBlocker(this); centerOn(m_highlight); } viewport()->update(); } void DocumentView::checkResult() { if(m_currentResult.isValid() && m_layout->currentPage(pageOfResult(m_currentResult)) != m_currentPage) { m_currentResult = QModelIndex(); } } void DocumentView::applyResult() { if(m_currentResult.isValid()) { const int page = pageOfResult(m_currentResult); const QRectF rect = rectOfResult(m_currentResult); jumpToPage(page); prepareHighlight(page - 1, rect); } else { m_highlight->setVisible(false); } } } // qpdfview qpdfview-0.4.18/sources/documentview.h0000644000000000000000000002530713516127411016134 0ustar 00000000000000/* Copyright 2014 S. Razi Alavizadeh Copyright 2012-2014, 2018 Adam Reichold Copyright 2014 Dorian Scholz Copyright 2018 Egor Zenkov This file is part of qpdfview. qpdfview is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. qpdfview is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with qpdfview. If not, see . */ #ifndef DOCUMENTVIEW_H #define DOCUMENTVIEW_H #include #include #include #include class QDomNode; class QFileSystemWatcher; class QPrinter; class QStandardItemModel; #include "renderparam.h" #include "printoptions.h" namespace qpdfview { namespace Model { class Annotation; class Page; class Document; } class Settings; class PageItem; class ThumbnailItem; class SearchModel; class SearchTask; class PresentationView; class ShortcutHandler; struct DocumentLayout; class DocumentView : public QGraphicsView { Q_OBJECT public: explicit DocumentView(QWidget* parent = 0); ~DocumentView(); const QFileInfo& fileInfo() const { return m_fileInfo; } bool wasModified() const { return m_wasModified; } int numberOfPages() const { return m_pages.count(); } int currentPage() const { return m_currentPage; } bool hasFrontMatter() const { return m_firstPage > 1; } int firstPage() const { return m_firstPage; } void setFirstPage(int firstPage); QString defaultPageLabelFromNumber(int number) const; QString pageLabelFromNumber(int number) const; int pageNumberFromLabel(const QString& label) const; QString title() const; static QStringList openFilter(); QStringList saveFilter() const; bool canSave() const; bool continuousMode() const { return m_continuousMode; } void setContinuousMode(bool continuousMode); LayoutMode layoutMode() const; void setLayoutMode(LayoutMode layoutMode); bool rightToLeftMode() const { return m_rightToLeftMode; } void setRightToLeftMode(bool rightToLeftMode); ScaleMode scaleMode() const { return m_scaleMode; } void setScaleMode(ScaleMode scaleMode); qreal scaleFactor() const { return m_scaleFactor; } void setScaleFactor(qreal scaleFactor); Rotation rotation() const { return m_rotation; } void setRotation(Rotation rotation); qpdfview::RenderFlags renderFlags() const { return m_renderFlags; } void setRenderFlags(qpdfview::RenderFlags renderFlags); void setRenderFlag(qpdfview::RenderFlag renderFlag, bool enabled = true); bool invertColors() const { return m_renderFlags.testFlag(InvertColors); } void setInvertColors(bool invertColors) { setRenderFlag(InvertColors, invertColors); } bool convertToGrayscale() const { return m_renderFlags.testFlag(ConvertToGrayscale); } void setConvertToGrayscale(bool convertToGrayscale) { setRenderFlag(ConvertToGrayscale, convertToGrayscale); } bool trimMargins() const { return m_renderFlags.testFlag(TrimMargins); } void setTrimMargins(bool trimMargins) { setRenderFlag(TrimMargins, trimMargins); } CompositionMode compositionMode() const; void setCompositionMode(CompositionMode compositionMode); bool highlightAll() const { return m_highlightAll; } void setHighlightAll(bool highlightAll); RubberBandMode rubberBandMode() const { return m_rubberBandMode; } void setRubberBandMode(RubberBandMode rubberBandMode); QSize thumbnailsViewportSize() const { return m_thumbnailsViewportSize; } void setThumbnailsViewportSize(QSize thumbnailsViewportSize); Qt::Orientation thumbnailsOrientation() const { return m_thumbnailsOrientation; } void setThumbnailsOrientation(Qt::Orientation thumbnailsOrientation); const QVector< ThumbnailItem* >& thumbnailItems() const { return m_thumbnailItems; } QGraphicsScene* thumbnailsScene() const { return m_thumbnailsScene; } QAbstractItemModel* outlineModel() const { return m_outlineModel.data(); } QAbstractItemModel* propertiesModel() const { return m_propertiesModel.data(); } QSet< QByteArray > saveExpandedPaths() const; void restoreExpandedPaths(const QSet< QByteArray >& expandedPaths); QAbstractItemModel* fontsModel() const; bool searchWasCanceled() const; int searchProgress() const; QString searchText() const; bool searchMatchCase() const; bool searchWholeWords() const; QPair< QString, QString > searchContext(int page, const QRectF& rect) const; bool hasSearchResults(); QString resolveFileName(QString fileName) const; QUrl resolveUrl(QUrl url) const; struct SourceLink { QString name; int line; int column; operator bool() const { return !name.isNull(); } }; SourceLink sourceLink(QPoint pos); void openInSourceEditor(const SourceLink& sourceLink); signals: void documentChanged(); void documentModified(); void numberOfPagesChanged(int numberOfPages); void currentPageChanged(int currentPage, bool trackChange = false); void canJumpChanged(bool backward, bool forward); void continuousModeChanged(bool continuousMode); void layoutModeChanged(LayoutMode layoutMode); void rightToLeftModeChanged(bool rightToLeftMode); void scaleModeChanged(ScaleMode scaleMode); void scaleFactorChanged(qreal scaleFactor); void rotationChanged(Rotation rotation); void linkClicked(int page); void linkClicked(bool newTab, const QString& filePath, int page); void renderFlagsChanged(qpdfview::RenderFlags renderFlags); void invertColorsChanged(bool invertColors); void convertToGrayscaleChanged(bool convertToGrayscale); void trimMarginsChanged(bool trimMargins); void compositionModeChanged(CompositionMode compositionMode); void highlightAllChanged(bool highlightAll); void rubberBandModeChanged(RubberBandMode rubberBandMode); void searchFinished(); void searchProgressChanged(int progress); public slots: void show(); bool open(const QString& filePath); bool refresh(); bool save(const QString& filePath, bool withChanges); bool print(QPrinter* printer, const PrintOptions& printOptions = PrintOptions()); void previousPage(); void nextPage(); void firstPage(); void lastPage(); void jumpToPage(int page, bool trackChange = true, qreal newLeft = qQNaN(), qreal newTop = qQNaN()); bool canJumpBackward() const; void jumpBackward(); bool canJumpForward() const; void jumpForward(); void temporaryHighlight(int page, const QRectF& highlight); void startSearch(const QString& text, bool matchCase, bool wholeWords); void cancelSearch(); void clearResults(); void findPrevious(); void findNext(); void findResult(const QModelIndex& index); void zoomIn(); void zoomOut(); void originalSize(); void rotateLeft(); void rotateRight(); void startPresentation(); protected slots: void on_verticalScrollBar_valueChanged(); void on_autoRefresh_timeout(); void on_prefetch_timeout(); void on_temporaryHighlight_timeout(); void on_searchTask_progressChanged(int progress); void on_searchTask_resultsReady(int index, const QList< QRectF >& results); void on_pages_cropRectChanged(); void on_thumbnails_cropRectChanged(); void on_pages_linkClicked(bool newTab, int page, qreal left, qreal top); void on_pages_linkClicked(bool newTab, const QString& fileName, int page); void on_pages_linkClicked(const QString& url); void on_pages_rubberBandFinished(); void on_pages_zoomToSelection(int page, const QRectF& rect); void on_pages_openInSourceEditor(int page, QPointF pos); void on_pages_wasModified(); protected: void resizeEvent(QResizeEvent* event); void keyPressEvent(QKeyEvent* event); void mousePressEvent(QMouseEvent* event); void wheelEvent(QWheelEvent* event); void contextMenuEvent(QContextMenuEvent* event); private: Q_DISABLE_COPY(DocumentView) static Settings* s_settings; static ShortcutHandler* s_shortcutHandler; QFileSystemWatcher* m_autoRefreshWatcher; QTimer* m_autoRefreshTimer; QTimer* m_prefetchTimer; Model::Document* m_document; QVector< Model::Page* > m_pages; QFileInfo m_fileInfo; bool m_wasModified; int m_currentPage; int m_firstPage; #ifdef WITH_CUPS bool printUsingCUPS(QPrinter* printer, const PrintOptions& printOptions, int fromPage, int toPage); #endif // WITH_CUPS bool printUsingQt(QPrinter* printer, const PrintOptions& printOptions, int fromPage, int toPage); struct Position { int page; qreal left; qreal top; Position(int page, qreal left, qreal top) : page(page), left(left), top(top) {} }; QList< Position > m_past; QList< Position > m_future; void saveLeftAndTop(qreal& left, qreal& top) const; QScopedPointer< DocumentLayout > m_layout; bool m_continuousMode; bool m_rightToLeftMode; ScaleMode m_scaleMode; qreal m_scaleFactor; Rotation m_rotation; qpdfview::RenderFlags m_renderFlags; bool m_highlightAll; RubberBandMode m_rubberBandMode; QVector< PageItem* > m_pageItems; QVector< ThumbnailItem* > m_thumbnailItems; QGraphicsRectItem* m_highlight; QSize m_thumbnailsViewportSize; Qt::Orientation m_thumbnailsOrientation; QGraphicsScene* m_thumbnailsScene; QScopedPointer< QAbstractItemModel > m_outlineModel; QScopedPointer< QAbstractItemModel > m_propertiesModel; bool checkDocument(const QString& filePath, Model::Document* document, QVector< Model::Page* >& pages); void loadDocumentDefaults(); void adjustScrollBarPolicy(); bool m_verticalScrollBarChangedBlocked; class VerticalScrollBarChangedBlocker; void prepareDocument(Model::Document* document, const QVector< Model::Page* >& pages); void preparePages(); void prepareThumbnails(); void prepareBackground(); void prepareScene(); void prepareView(qreal newLeft = 0.0, qreal newTop = 0.0, bool forceScroll = true, int scrollToPage = 0); void prepareThumbnailsScene(); void prepareHighlight(int index, const QRectF& highlight); // search static SearchModel* s_searchModel; QPersistentModelIndex m_currentResult; SearchTask* m_searchTask; void checkResult(); void applyResult(); }; } // qpdfview Q_DECLARE_METATYPE(qpdfview::DocumentView::SourceLink) #endif // DOCUMENTVIEW_H qpdfview-0.4.18/sources/fitzmodel.cpp0000644000000000000000000002540013516127411015745 0ustar 00000000000000/* Copyright 2018 S. Razi Alavizadeh Copyright 2015 Martin Banky Copyright 2014-2015, 2018 Adam Reichold This file is part of qpdfview. qpdfview is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. qpdfview is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with qpdfview. If not, see . */ #include "fitzmodel.h" #include #include extern "C" { #include #include #include #include #include #include #include typedef struct pdf_document_s pdf_document; pdf_document* pdf_specifics(fz_context*, fz_document*); } namespace { using namespace qpdfview; using namespace qpdfview::Model; QString removeFilePrefix(const char* uri) { QString url = QString::fromUtf8(uri); if(url.startsWith("file://", Qt::CaseInsensitive)) { url = url.mid(7); } return url; } Outline loadOutline(fz_outline* item) { Outline outline; for(; item; item = item->next) { outline.push_back(Section()); Section& section = outline.back(); section.title = QString::fromUtf8(item->title); if(item->page != -1) { section.link.page = item->page + 1; } else if (item->uri != 0) { section.link.urlOrFileName = removeFilePrefix(item->uri); } if(fz_outline* childItem = item->down) { section.children = loadOutline(childItem); } } return outline; } } // anonymous namespace qpdfview { namespace Model { FitzPage::FitzPage(const FitzDocument* parent, fz_page* page) : m_parent(parent), m_page(page) { } FitzPage::~FitzPage() { fz_drop_page(m_parent->m_context, m_page); } QSizeF FitzPage::size() const { QMutexLocker mutexLocker(&m_parent->m_mutex); fz_rect rect; fz_bound_page(m_parent->m_context, m_page, &rect); return QSizeF(rect.x1 - rect.x0, rect.y1 - rect.y0); } QImage FitzPage::render(qreal horizontalResolution, qreal verticalResolution, Rotation rotation, QRect boundingRect) const { QMutexLocker mutexLocker(&m_parent->m_mutex); fz_matrix matrix; fz_scale(&matrix, horizontalResolution / 72.0f, verticalResolution / 72.0f); switch(rotation) { default: case RotateBy0: fz_pre_rotate(&matrix, 0.0); break; case RotateBy90: fz_pre_rotate(&matrix, 90.0); break; case RotateBy180: fz_pre_rotate(&matrix, 180.0); break; case RotateBy270: fz_pre_rotate(&matrix, 270.0); break; } fz_rect rect; fz_bound_page(m_parent->m_context, m_page, &rect); fz_transform_rect(&rect, &matrix); fz_irect irect; fz_round_rect(&irect, &rect); fz_context* context = fz_clone_context(m_parent->m_context); fz_display_list* display_list = fz_new_display_list(context, &rect); fz_device* device = fz_new_list_device(context, display_list); fz_run_page(m_parent->m_context, m_page, device, &matrix, 0); fz_close_device(m_parent->m_context, device); fz_drop_device(m_parent->m_context, device); mutexLocker.unlock(); fz_matrix tileMatrix; fz_translate(&tileMatrix, -rect.x0, -rect.y0); fz_rect tileRect = fz_infinite_rect; int tileWidth = irect.x1 - irect.x0; int tileHeight = irect.y1 - irect.y0; if(!boundingRect.isNull()) { fz_pre_translate(&tileMatrix, -boundingRect.x(), -boundingRect.y()); tileRect.x0 = boundingRect.x(); tileRect.y0 = boundingRect.y(); tileRect.x1 = boundingRect.right(); tileRect.y1 = boundingRect.bottom(); tileWidth = boundingRect.width(); tileHeight = boundingRect.height(); } QImage image(tileWidth, tileHeight, QImage::Format_RGB32); image.fill(m_parent->m_paperColor); fz_pixmap* pixmap = fz_new_pixmap_with_data(context, fz_device_bgr(context), image.width(), image.height(), 0, 1, image.bytesPerLine(), image.bits()); device = fz_new_draw_device(context, &tileMatrix, pixmap); fz_run_display_list(context, display_list, device, &fz_identity, &tileRect, 0); fz_close_device(context, device); fz_drop_device(context, device); fz_drop_pixmap(context, pixmap); fz_drop_display_list(context, display_list); fz_drop_context(context); return image; } QList< Link* > FitzPage::links() const { QMutexLocker mutexLocker(&m_parent->m_mutex); QList< Link* > links; fz_rect rect; fz_bound_page(m_parent->m_context, m_page, &rect); const qreal width = qAbs(rect.x1 - rect.x0); const qreal height = qAbs(rect.y1 - rect.y0); fz_link* first_link = fz_load_links(m_parent->m_context, m_page); for(fz_link* link = first_link; link != 0; link = link->next) { const QRectF boundary = QRectF(link->rect.x0 / width, link->rect.y0 / height, (link->rect.x1 - link->rect.x0) / width, (link->rect.y1 - link->rect.y0) / height).normalized(); if (link->uri != 0) { if (fz_is_external_link(m_parent->m_context, link->uri) == 0) { float left; float top; const int page = fz_resolve_link(m_parent->m_context, m_parent->m_document, link->uri, &left, &top); if (page != -1) { links.append(new Link(boundary, page + 1, left / width, top / height)); } } else { links.append(new Link(boundary, removeFilePrefix(link->uri))); } } } fz_drop_link(m_parent->m_context, first_link); return links; } QString FitzPage::text(const QRectF &rect) const { QMutexLocker mutexLocker(&m_parent->m_mutex); fz_rect mediaBox; mediaBox.x0 = rect.x(); mediaBox.y0 = rect.y(); mediaBox.x1 = rect.right(); mediaBox.y1 = rect.bottom(); fz_stext_page* textPage = fz_new_stext_page(m_parent->m_context, &mediaBox); fz_device* device = fz_new_stext_device(m_parent->m_context, textPage, 0); fz_run_page(m_parent->m_context, m_page, device, &fz_identity, 0); fz_close_device(m_parent->m_context, device); fz_drop_device(m_parent->m_context, device); fz_point topLeft; topLeft.x = rect.x(); topLeft.y = rect.y(); fz_point bottomRight; bottomRight.x = rect.right(); bottomRight.y = rect.bottom(); char* selection = fz_copy_selection(m_parent->m_context, textPage, topLeft, bottomRight, 0); QString text = QString::fromUtf8(selection); ::free(selection); fz_drop_stext_page(m_parent->m_context, textPage); return text; } QList FitzPage::search(const QString& text, bool matchCase, bool wholeWords) const { Q_UNUSED(matchCase); Q_UNUSED(wholeWords); QMutexLocker mutexLocker(&m_parent->m_mutex); fz_rect rect; fz_bound_page(m_parent->m_context, m_page, &rect); fz_stext_page* textPage = fz_new_stext_page(m_parent->m_context, &rect); fz_device* device = fz_new_stext_device(m_parent->m_context, textPage, 0); fz_run_page(m_parent->m_context, m_page, device, &fz_identity, 0); fz_close_device(m_parent->m_context, device); fz_drop_device(m_parent->m_context, device); const QByteArray needle = text.toUtf8(); QVector< fz_rect > hits(32); int numberOfHits = fz_search_stext_page(m_parent->m_context, textPage, needle.constData(), hits.data(), hits.size()); while(numberOfHits == hits.size()) { hits.resize(2 * hits.size()); numberOfHits = fz_search_stext_page(m_parent->m_context, textPage, needle.constData(), hits.data(), hits.size()); } hits.resize(numberOfHits); fz_drop_stext_page(m_parent->m_context, textPage); QList< QRectF > results; results.reserve(hits.size()); foreach(fz_rect rect, hits) { results.append(QRectF(rect.x0, rect.y0, rect.x1 - rect.x0, rect.y1 - rect.y0)); } return results; } FitzDocument::FitzDocument(fz_context* context, fz_document* document) : m_mutex(), m_context(context), m_document(document), m_paperColor(Qt::white) { } FitzDocument::~FitzDocument() { fz_drop_document(m_context, m_document); fz_drop_context(m_context); } int FitzDocument::numberOfPages() const { QMutexLocker mutexLocker(&m_mutex); return fz_count_pages(m_context, m_document); } Page* FitzDocument::page(int index) const { QMutexLocker mutexLocker(&m_mutex); if(fz_page* page = fz_load_page(m_context, m_document, index)) { return new FitzPage(this, page); } return 0; } bool FitzDocument::canBePrintedUsingCUPS() const { QMutexLocker mutexLocker(&m_mutex); return pdf_specifics(m_context, m_document) != 0; } void FitzDocument::setPaperColor(const QColor& paperColor) { m_paperColor = paperColor; } Outline FitzDocument::outline() const { Outline outline; QMutexLocker mutexLocker(&m_mutex); if(fz_outline* rootItem = fz_load_outline(m_context, m_document)) { outline = loadOutline(rootItem); fz_drop_outline(m_context, rootItem); } return outline; } } // Model FitzPlugin::FitzPlugin(QObject* parent) : QObject(parent) { setObjectName("FitzPlugin"); m_locks_context.user = this; m_locks_context.lock = FitzPlugin::lock; m_locks_context.unlock = FitzPlugin::unlock; m_context = fz_new_context(0, &m_locks_context, FZ_STORE_DEFAULT); fz_register_document_handlers(m_context); } FitzPlugin::~FitzPlugin() { fz_drop_context(m_context); } Model::Document* FitzPlugin::loadDocument(const QString& filePath) const { fz_context* context = fz_clone_context(m_context); if(context == 0) { return 0; } #ifdef _MSC_VER fz_document* document = fz_open_document(context, filePath.toUtf8()); #else fz_document* document = fz_open_document(context, QFile::encodeName(filePath)); #endif // _MSC_VER if(document == 0) { fz_drop_context(context); return 0; } return new Model::FitzDocument(context, document); } void FitzPlugin::lock(void* user, int lock) { static_cast< FitzPlugin* >(user)->m_mutex[lock].lock(); } void FitzPlugin::unlock(void* user, int lock) { static_cast< FitzPlugin* >(user)->m_mutex[lock].unlock(); } } // qpdfview #if QT_VERSION < QT_VERSION_CHECK(5,0,0) Q_EXPORT_PLUGIN2(qpdfview_fitz, qpdfview::FitzPlugin) #endif // QT_VERSION qpdfview-0.4.18/sources/fitzmodel.h0000644000000000000000000000540313516127411015413 0ustar 00000000000000/* Copyright 2018 S. Razi Alavizadeh Copyright 2014, 2018 Adam Reichold This file is part of qpdfview. qpdfview is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. qpdfview is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with qpdfview. If not, see . */ #ifndef FITZMODEL_H #define FITZMODEL_H #include extern "C" { #include typedef struct fz_page_s fz_page; typedef struct fz_document_s fz_document; } #include "model.h" namespace qpdfview { class FitzPlugin; namespace Model { class FitzPage : public Page { friend class FitzDocument; public: ~FitzPage(); QSizeF size() const; QImage render(qreal horizontalResolution, qreal verticalResolution, Rotation rotation, QRect boundingRect) const; QList< Link* > links() const; QString text(const QRectF& rect) const; QList< QRectF > search(const QString& text, bool matchCase, bool wholeWords) const; private: Q_DISABLE_COPY(FitzPage) FitzPage(const class FitzDocument* parent, fz_page* page); const class FitzDocument* m_parent; fz_page* m_page; }; class FitzDocument : public Document { friend class FitzPage; friend class qpdfview::FitzPlugin; public: ~FitzDocument(); int numberOfPages() const; Page* page(int index) const; bool canBePrintedUsingCUPS() const; void setPaperColor(const QColor& paperColor); Outline outline() const; private: Q_DISABLE_COPY(FitzDocument) FitzDocument(fz_context* context, fz_document* document); mutable QMutex m_mutex; fz_context* m_context; fz_document* m_document; QColor m_paperColor; }; } class FitzPlugin : public QObject, Plugin { Q_OBJECT Q_INTERFACES(qpdfview::Plugin) #if QT_VERSION >= QT_VERSION_CHECK(5,0,0) Q_PLUGIN_METADATA(IID "local.qpdfview.Plugin") #endif // QT_VERSION public: FitzPlugin(QObject* parent = 0); ~FitzPlugin(); Model::Document* loadDocument(const QString& filePath) const; private: QMutex m_mutex[FZ_LOCK_MAX]; fz_locks_context m_locks_context; fz_context* m_context; static void lock(void* user, int lock); static void unlock(void* user, int lock); }; } // qpdfview #endif // FITZMODEL_H qpdfview-0.4.18/sources/fontsdialog.cpp0000644000000000000000000000440113516127411016257 0ustar 00000000000000/* Copyright 2013 Adam Reichold This file is part of qpdfview. qpdfview is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. qpdfview is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with qpdfview. If not, see . */ #include "fontsdialog.h" #include #include #include #include #include #include "settings.h" namespace qpdfview { FontsDialog::FontsDialog(QAbstractItemModel* model, QWidget* parent) : QDialog(parent) { setWindowTitle(tr("Fonts") + QLatin1String(" - qpdfview")); m_tableView = new QTableView(this); m_tableView->setModel(model); m_tableView->setAlternatingRowColors(true); m_tableView->setEditTriggers(QAbstractItemView::NoEditTriggers); m_tableView->setHorizontalScrollMode(QAbstractItemView::ScrollPerPixel); #if QT_VERSION >= QT_VERSION_CHECK(5,0,0) m_tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents); m_tableView->verticalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents); #else m_tableView->horizontalHeader()->setResizeMode(QHeaderView::ResizeToContents); m_tableView->verticalHeader()->setResizeMode(QHeaderView::ResizeToContents); #endif // QT_VERSION m_tableView->verticalHeader()->setVisible(false); m_dialogButtonBox = new QDialogButtonBox(QDialogButtonBox::Ok, Qt::Horizontal, this); connect(m_dialogButtonBox, SIGNAL(accepted()), SLOT(accept())); connect(m_dialogButtonBox, SIGNAL(rejected()), SLOT(reject())); setLayout(new QVBoxLayout(this)); layout()->addWidget(m_tableView); layout()->addWidget(m_dialogButtonBox); resize(Settings::instance()->mainWindow().fontsDialogSize(sizeHint())); } FontsDialog::~FontsDialog() { Settings::instance()->mainWindow().setFontsDialogSize(size()); } } // qpdfview qpdfview-0.4.18/sources/fontsdialog.h0000644000000000000000000000215113516127411015724 0ustar 00000000000000/* Copyright 2013 Adam Reichold This file is part of qpdfview. qpdfview is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. qpdfview is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with qpdfview. If not, see . */ #ifndef FONTSDIALOG_H #define FONTSDIALOG_H #include class QAbstractItemModel; class QDialogButtonBox; class QTableView; namespace qpdfview { class FontsDialog : public QDialog { Q_OBJECT public: FontsDialog(QAbstractItemModel* model, QWidget* parent = 0); ~FontsDialog(); private: Q_DISABLE_COPY(FontsDialog) QTableView* m_tableView; QDialogButtonBox* m_dialogButtonBox; }; } // qpdfview #endif // FONTSDIALOG_H qpdfview-0.4.18/sources/formfieldwidgets.cpp0000644000000000000000000001742013516127411017311 0ustar 00000000000000/* Copyright 2012-2013 Adam Reichold This file is part of qpdfview. qpdfview is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. qpdfview is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with qpdfview. If not, see . */ #include "formfieldwidgets.h" #include #include #include #ifndef HAS_POPPLER_24 #define LOCK_FORM_FIELD QMutexLocker mutexLocker(m_mutex); #else #define LOCK_FORM_FIELD #endif // HAS_POPPLER_24 namespace { bool hideOnEscape(QWidget* widget, QKeyEvent* event) { if(event->key() == Qt::Key_Escape) { widget->hide(); event->accept(); return true; } return false; } } // anonymous namespace qpdfview { NormalTextFieldWidget::NormalTextFieldWidget(QMutex* mutex, Poppler::FormFieldText* formField, QWidget* parent) : QLineEdit(parent), m_mutex(mutex), m_formField(formField) { LOCK_FORM_FIELD setText(m_formField->text()); setMaxLength(m_formField->maximumLength()); setAlignment(m_formField->textAlignment()); setEchoMode(m_formField->isPassword() ? QLineEdit::Password : QLineEdit::Normal); connect(this, SIGNAL(textChanged(QString)), SLOT(on_textChanged(QString))); connect(this, SIGNAL(textChanged(QString)), SIGNAL(wasModified())); connect(this, SIGNAL(returnPressed()), SLOT(hide())); } void NormalTextFieldWidget::keyPressEvent(QKeyEvent* event) { if(!hideOnEscape(this, event)) { QLineEdit::keyPressEvent(event); } } void NormalTextFieldWidget::on_textChanged(const QString& text) { LOCK_FORM_FIELD m_formField->setText(text); } MultilineTextFieldWidget::MultilineTextFieldWidget(QMutex* mutex, Poppler::FormFieldText* formField, QWidget* parent) : QPlainTextEdit(parent), m_mutex(mutex), m_formField(formField) { LOCK_FORM_FIELD setPlainText(m_formField->text()); connect(this, SIGNAL(textChanged()), SLOT(on_textChanged())); connect(this, SIGNAL(textChanged()), SIGNAL(wasModified())); moveCursor(QTextCursor::End); } void MultilineTextFieldWidget::keyPressEvent(QKeyEvent* event) { if(!hideOnEscape(this, event)) { QPlainTextEdit::keyPressEvent(event); } } void MultilineTextFieldWidget::on_textChanged() { LOCK_FORM_FIELD m_formField->setText(toPlainText()); } ComboBoxChoiceFieldWidget::ComboBoxChoiceFieldWidget(QMutex* mutex, Poppler::FormFieldChoice* formField, QWidget* parent) : QComboBox(parent), m_mutex(mutex), m_formField(formField) { LOCK_FORM_FIELD addItems(m_formField->choices()); if(!m_formField->currentChoices().isEmpty()) { setCurrentIndex(m_formField->currentChoices().at(0)); } connect(this, SIGNAL(currentIndexChanged(int)), SLOT(on_currentIndexChanged(int))); connect(this, SIGNAL(currentIndexChanged(int)), SIGNAL(wasModified())); #ifdef HAS_POPPLER_22 if(m_formField->isEditable()) { setEditable(true); setInsertPolicy(QComboBox::NoInsert); lineEdit()->setText(m_formField->editChoice()); connect(lineEdit(), SIGNAL(textChanged(QString)), SLOT(on_currentTextChanged(QString))); connect(lineEdit(), SIGNAL(textChanged(QString)), SIGNAL(wasModified())); connect(lineEdit(), SIGNAL(returnPressed()), SLOT(hide())); } else { connect(this, SIGNAL(activated(int)), SLOT(hide())); } #else connect(this, SIGNAL(activated(int)), SLOT(hide())); #endif // HAS_POPPLER_22 } void ComboBoxChoiceFieldWidget::keyPressEvent(QKeyEvent* event) { if(!hideOnEscape(this, event)) { QComboBox::keyPressEvent(event); } } void ComboBoxChoiceFieldWidget::showPopup() { QComboBox::showPopup(); graphicsProxyWidget()->setZValue(1.0); } void ComboBoxChoiceFieldWidget::hidePopup() { QComboBox::hidePopup(); graphicsProxyWidget()->setZValue(0.0); } void ComboBoxChoiceFieldWidget::on_currentIndexChanged(int index) { LOCK_FORM_FIELD m_formField->setCurrentChoices(QList< int >() << index); } void ComboBoxChoiceFieldWidget::on_currentTextChanged(const QString& text) { LOCK_FORM_FIELD #ifdef HAS_POPPLER_22 m_formField->setEditChoice(text); #endif // HAS_POPPLER_22 } ListBoxChoiceFieldWidget::ListBoxChoiceFieldWidget(QMutex* mutex, Poppler::FormFieldChoice* formField, QWidget* parent) : QListWidget(parent), m_mutex(mutex), m_formField(formField) { LOCK_FORM_FIELD addItems(m_formField->choices()); setSelectionMode(m_formField->multiSelect() ? QAbstractItemView::MultiSelection : QAbstractItemView::SingleSelection); foreach(int index, m_formField->currentChoices()) { if(index >= 0 && index < count()) { item(index)->setSelected(true); } } connect(this, SIGNAL(itemSelectionChanged()), SLOT(on_itemSelectionChanged())); connect(this, SIGNAL(itemSelectionChanged()), SIGNAL(wasModified())); } void ListBoxChoiceFieldWidget::keyPressEvent(QKeyEvent* event) { if(!hideOnEscape(this, event)) { QListWidget::keyPressEvent(event); } } void ListBoxChoiceFieldWidget::on_itemSelectionChanged() { LOCK_FORM_FIELD QList< int > currentChoices; for(int index = 0; index < count(); ++index) { if(item(index)->isSelected()) { currentChoices.append(index); } } m_formField->setCurrentChoices(currentChoices); } CheckBoxChoiceFieldWidget::CheckBoxChoiceFieldWidget(QMutex* mutex, Poppler::FormFieldButton* formField, QWidget* parent) : QCheckBox(parent), m_mutex(mutex), m_formField(formField) { LOCK_FORM_FIELD setChecked(m_formField->state()); connect(this, SIGNAL(toggled(bool)), SLOT(on_toggled(bool))); connect(this, SIGNAL(toggled(bool)), SIGNAL(wasModified())); } void CheckBoxChoiceFieldWidget::keyPressEvent(QKeyEvent* event) { if(!hideOnEscape(this, event)) { QCheckBox::keyPressEvent(event); } } void CheckBoxChoiceFieldWidget::on_toggled(bool checked) { LOCK_FORM_FIELD m_formField->setState(checked); } RadioChoiceFieldWidget::Siblings RadioChoiceFieldWidget::s_siblings; RadioChoiceFieldWidget::RadioChoiceFieldWidget(QMutex* mutex, Poppler::FormFieldButton* formField, QWidget* parent) : QRadioButton(parent), m_mutex(mutex), m_formField(formField) { LOCK_FORM_FIELD s_siblings.insert(qMakePair(m_mutex, m_formField->id()), this); setAutoExclusive(false); setChecked(m_formField->state()); connect(this, SIGNAL(toggled(bool)), SLOT(on_toggled(bool))); connect(this, SIGNAL(toggled(bool)), SIGNAL(wasModified())); } RadioChoiceFieldWidget::~RadioChoiceFieldWidget() { LOCK_FORM_FIELD s_siblings.remove(qMakePair(m_mutex, m_formField->id())); } void RadioChoiceFieldWidget::keyPressEvent(QKeyEvent* event) { if(!hideOnEscape(this, event)) { QRadioButton::keyPressEvent(event); } } void RadioChoiceFieldWidget::on_toggled(bool checked) { LOCK_FORM_FIELD m_formField->setState(checked); if(checked) { const QList< int > siblings = m_formField->siblings(); #ifndef HAS_POPPLER_24 mutexLocker.unlock(); #endif // HAS_POPPLER_24 foreach(int id, siblings) { const QPair< QMutex*, int > key = qMakePair(m_mutex, id); if(s_siblings.contains(key)) { s_siblings.value(key)->setChecked(false); } } } } } // qpdfview qpdfview-0.4.18/sources/formfieldwidgets.h0000644000000000000000000000761113516127411016757 0ustar 00000000000000/* Copyright 2012-2013 Adam Reichold This file is part of qpdfview. qpdfview is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. qpdfview is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with qpdfview. If not, see . */ #ifndef FORMFIELDWIDGETS_H #define FORMFIELDWIDGETS_H #include #include #include #include #include #include class QMutex; namespace Poppler { class FormField; class FormFieldText; class FormFieldChoice; class FormFieldButton; } namespace qpdfview { class NormalTextFieldWidget : public QLineEdit { Q_OBJECT public: NormalTextFieldWidget(QMutex* mutex, Poppler::FormFieldText* formField, QWidget* parent = 0); signals: void wasModified(); protected: void keyPressEvent(QKeyEvent* event); protected slots: void on_textChanged(const QString& text); private: Q_DISABLE_COPY(NormalTextFieldWidget) QMutex* m_mutex; Poppler::FormFieldText* m_formField; }; class MultilineTextFieldWidget : public QPlainTextEdit { Q_OBJECT public: MultilineTextFieldWidget(QMutex* mutex, Poppler::FormFieldText* formField, QWidget* parent = 0); signals: void wasModified(); protected: void keyPressEvent(QKeyEvent* event); protected slots: void on_textChanged(); private: Q_DISABLE_COPY(MultilineTextFieldWidget) QMutex* m_mutex; Poppler::FormFieldText* m_formField; }; class ComboBoxChoiceFieldWidget : public QComboBox { Q_OBJECT public: ComboBoxChoiceFieldWidget(QMutex* mutex, Poppler::FormFieldChoice* formField, QWidget* parent = 0); signals: void wasModified(); protected: void keyPressEvent(QKeyEvent* event); void showPopup(); void hidePopup(); protected slots: void on_currentIndexChanged(int index); void on_currentTextChanged(const QString& text); private: Q_DISABLE_COPY(ComboBoxChoiceFieldWidget) QMutex* m_mutex; Poppler::FormFieldChoice* m_formField; }; class ListBoxChoiceFieldWidget : public QListWidget { Q_OBJECT public: ListBoxChoiceFieldWidget(QMutex* mutex, Poppler::FormFieldChoice* formField, QWidget* parent = 0); signals: void wasModified(); protected: void keyPressEvent(QKeyEvent* event); protected slots: void on_itemSelectionChanged(); private: Q_DISABLE_COPY(ListBoxChoiceFieldWidget) QMutex* m_mutex; Poppler::FormFieldChoice* m_formField; }; class CheckBoxChoiceFieldWidget : public QCheckBox { Q_OBJECT public: CheckBoxChoiceFieldWidget(QMutex* mutex, Poppler::FormFieldButton* formField, QWidget* parent = 0); signals: void wasModified(); protected: void keyPressEvent(QKeyEvent* event); protected slots: void on_toggled(bool checked); protected slots: private: Q_DISABLE_COPY(CheckBoxChoiceFieldWidget) QMutex* m_mutex; Poppler::FormFieldButton* m_formField; }; class RadioChoiceFieldWidget : public QRadioButton { Q_OBJECT public: RadioChoiceFieldWidget(QMutex* mutex, Poppler::FormFieldButton* formField, QWidget* parent = 0); ~RadioChoiceFieldWidget(); signals: void wasModified(); protected: void keyPressEvent(QKeyEvent* event); protected slots: void on_toggled(bool checked); private: Q_DISABLE_COPY(RadioChoiceFieldWidget) typedef QMap< QPair< QMutex*, int >, RadioChoiceFieldWidget* > Siblings; static Siblings s_siblings; QMutex* m_mutex; Poppler::FormFieldButton* m_formField; }; } // qpdfview #endif // FORMFIELDWIDGETS_H qpdfview-0.4.18/sources/global.h0000644000000000000000000000305713516127411014661 0ustar 00000000000000/* Copyright 2013, 2015 Adam Reichold Copyright 2013 Alexander Volkov This file is part of qpdfview. qpdfview is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. qpdfview is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with qpdfview. If not, see . */ #ifndef GLOBAL_H #define GLOBAL_H #include #include namespace qpdfview { enum Rotation { RotateBy0 = 0, RotateBy90 = 1, RotateBy180 = 2, RotateBy270 = 3, NumberOfRotations = 4 }; enum RubberBandMode { ModifiersMode = 0, CopyToClipboardMode = 1, AddAnnotationMode = 2, ZoomToSelectionMode = 3, NumberOfRubberBandModes = 4 }; enum LayoutMode { SinglePageMode = 0, TwoPagesMode = 1, TwoPagesWithCoverPageMode = 2, MultiplePagesMode = 3, NumberOfLayoutModes = 4 }; enum ScaleMode { ScaleFactorMode = 0, FitToPageWidthMode = 1, FitToPageSizeMode = 2, NumberOfScaleModes = 3 }; enum CompositionMode { DefaultCompositionMode = 0, DarkenWithPaperColorMode = 1, LightenWithPaperColorMode = 2, NumberOfCompositionModes = 3 }; } // qpdfview #endif // GLOBAL_H qpdfview-0.4.18/sources/helpdialog.cpp0000644000000000000000000001026713516127411016065 0ustar 00000000000000/* Copyright 2018 Marshall Banana Copyright 2013 Benjamin Eltzner Copyright 2013, 2018 Adam Reichold This file is part of qpdfview. qpdfview is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. qpdfview is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with qpdfview. If not, see . */ #include "helpdialog.h" #include #include #include #include #include #include #include #include "settings.h" namespace qpdfview { HelpDialog::HelpDialog(QWidget* parent) : QDialog(parent) { setWindowTitle(tr("Help") + QLatin1String(" - qpdfview")); m_textBrowser = new QTextBrowser(this); m_textBrowser->setTextInteractionFlags(Qt::TextBrowserInteraction | Qt::TextSelectableByKeyboard); m_textBrowser->setSearchPaths(QStringList() << QDir(QApplication::applicationDirPath()).filePath("data") << DATA_INSTALL_PATH << ":/"); //: Please replace by file name of localized help if available, e.g. "help_fr.html". m_textBrowser->setSource(QUrl::fromLocalFile(tr("help.html"))); if(m_textBrowser->document()->isEmpty()) { m_textBrowser->setSource(QUrl::fromLocalFile("help.html")); } m_dialogButtonBox = new QDialogButtonBox(QDialogButtonBox::Close, Qt::Horizontal, this); connect(m_dialogButtonBox, SIGNAL(accepted()), SLOT(accept())); connect(m_dialogButtonBox, SIGNAL(rejected()), SLOT(reject())); m_searchLineEdit = new QLineEdit(this); connect(m_searchLineEdit, SIGNAL(returnPressed()), SLOT(on_findNext_triggered())); connect(m_searchLineEdit, SIGNAL(textEdited(QString)), SLOT(on_search_textEdited())); m_findPreviousButton = m_dialogButtonBox->addButton(tr("Find previous"), QDialogButtonBox::ActionRole); m_findPreviousButton->setShortcut(QKeySequence::FindPrevious); connect(m_findPreviousButton, SIGNAL(clicked()), SLOT(on_findPrevious_triggered())); m_findNextButton = m_dialogButtonBox->addButton(tr("Find next"), QDialogButtonBox::ActionRole); m_findNextButton->setShortcut(QKeySequence::FindNext); connect(m_findNextButton, SIGNAL(clicked()), SLOT(on_findNext_triggered())); // Default buttons would interfere with search funtionality... foreach(QAbstractButton* abstractButton, m_dialogButtonBox->buttons()) { QPushButton* pushButton = qobject_cast< QPushButton* >(abstractButton); if(pushButton != 0) { pushButton->setAutoDefault(false); pushButton->setDefault(false); } } setLayout(new QVBoxLayout(this)); layout()->addWidget(m_textBrowser); layout()->addWidget(m_searchLineEdit); layout()->addWidget(m_dialogButtonBox); resize(Settings::instance()->mainWindow().contentsDialogSize(sizeHint())); m_searchLineEdit->setFocus(); } HelpDialog::~HelpDialog() { Settings::instance()->mainWindow().setContentsDialogSize(size()); } void HelpDialog::on_findPrevious_triggered() { if(!m_searchLineEdit->text().isEmpty() && m_textBrowser->find(m_searchLineEdit->text(), QTextDocument::FindBackward)) { m_textBrowser->setFocus(); m_searchLineEdit->setStyleSheet(QLatin1String("background-color: #80ff80")); } else { m_searchLineEdit->setStyleSheet(QLatin1String("background-color: #ff8080")); } } void HelpDialog::on_findNext_triggered() { if(!m_searchLineEdit->text().isEmpty() && m_textBrowser->find(m_searchLineEdit->text())) { m_textBrowser->setFocus(); m_searchLineEdit->setStyleSheet(QLatin1String("background-color: #80ff80")); } else { m_searchLineEdit->setStyleSheet(QLatin1String("background-color: #ff8080")); } } void HelpDialog::on_search_textEdited() { m_searchLineEdit->setStyleSheet(QString()); } } // qpdfview qpdfview-0.4.18/sources/helpdialog.h0000644000000000000000000000252413516127411015527 0ustar 00000000000000/* Copyright 2013 Benjamin Eltzner Copyright 2013 Adam Reichold This file is part of qpdfview. qpdfview is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. qpdfview is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with qpdfview. If not, see . */ #ifndef HELPDIALOG_H #define HELPDIALOG_H #include class QDialogButtonBox; class QTextBrowser; class QLineEdit; namespace qpdfview { class HelpDialog : public QDialog { Q_OBJECT public: explicit HelpDialog(QWidget* parent = 0); ~HelpDialog(); protected slots: void on_findPrevious_triggered(); void on_findNext_triggered(); void on_search_textEdited(); private: Q_DISABLE_COPY(HelpDialog) QTextBrowser* m_textBrowser; QDialogButtonBox* m_dialogButtonBox; QLineEdit* m_searchLineEdit; QPushButton* m_findPreviousButton; QPushButton* m_findNextButton; }; } // qpdfview #endif // HELPDIALOG_H qpdfview-0.4.18/sources/imagemodel.cpp0000644000000000000000000001147613516127411016063 0ustar 00000000000000/* Copyright 2015 Adam Reichold This file is part of qpdfview. qpdfview is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. qpdfview is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with qpdfview. If not, see . */ #include "imagemodel.h" #include #include namespace { using namespace qpdfview; using namespace qpdfview::Model; inline qreal dotsPerInchX(const QImage& image) { return 0.0254 * image.dotsPerMeterX(); } inline qreal dotsPerInchY(const QImage& image) { return 0.0254 * image.dotsPerMeterY(); } } // anonymous namespace qpdfview { namespace Model { ImagePage::ImagePage(const QImage& image) : m_image(image) { } QSizeF ImagePage::size() const { return QSizeF(m_image.width() * 72.0 / dotsPerInchX(m_image), m_image.height() * 72.0 / dotsPerInchY(m_image)); } QImage ImagePage::render(qreal horizontalResolution, qreal verticalResolution, Rotation rotation, QRect boundingRect) const { QTransform transform; transform.scale(horizontalResolution / dotsPerInchX(m_image), verticalResolution / dotsPerInchY(m_image)); switch(rotation) { default: case RotateBy0: break; case RotateBy90: transform.rotate(90.0); break; case RotateBy180: transform.rotate(180.0); break; case RotateBy270: transform.rotate(270.0); break; } QImage image = m_image.transformed(transform, Qt::SmoothTransformation); if(!boundingRect.isNull()) { image = image.copy(boundingRect); } return image; } ImageDocument::ImageDocument(const QImage& image) : m_image(image) { } int ImageDocument::numberOfPages() const { return 1; } Page* ImageDocument::page(int index) const { return index == 0 ? new ImagePage(m_image) : 0; } QStringList ImageDocument::saveFilter() const { QStringList formats; foreach(const QByteArray& format, QImageWriter::supportedImageFormats()) { const QString name = QString::fromLocal8Bit(format); formats.append(QLatin1String("*.") + name); } return QStringList() << tr("Image (%1)").arg(formats.join(QLatin1String(" "))); } bool ImageDocument::canSave() const { return true; } bool ImageDocument::save(const QString& filePath, bool withChanges) const { Q_UNUSED(withChanges); QImageWriter writer(filePath); if(!writer.write(m_image)) { qWarning() << writer.errorString(); return false; } return true; } Properties ImageDocument::properties() const { Properties properties; properties.push_back(qMakePair(tr("Size"), QString("%1 px x %2 px").arg(m_image.width()).arg(m_image.height()))); properties.push_back(qMakePair(tr("Resolution"), QString("%1 dpi x %2 dpi").arg(dotsPerInchX(m_image), 0, 'f', 1).arg(dotsPerInchY(m_image), 0, 'f', 1))); properties.push_back(qMakePair(tr("Depth"), QString("%1 bits").arg(m_image.depth()))); switch(m_image.format()) { default: break; case QImage::Format_Mono: case QImage::Format_MonoLSB: properties.push_back(qMakePair(tr("Format"), tr("Monochrome"))); break; case QImage::Format_Indexed8: properties.push_back(qMakePair(tr("Format"), tr("Indexed"))); break; case QImage::Format_RGB32: properties.push_back(qMakePair(tr("Format"), tr("32 bits RGB"))); break; case QImage::Format_ARGB32: properties.push_back(qMakePair(tr("Format"), tr("32 bits ARGB"))); break; case QImage::Format_RGB16: case QImage::Format_RGB555: case QImage::Format_RGB444: properties.push_back(qMakePair(tr("Format"), tr("16 bits RGB"))); break; case QImage::Format_RGB666: case QImage::Format_RGB888: properties.push_back(qMakePair(tr("Format"), tr("24 bits RGB"))); break; } foreach(const QString& key, m_image.textKeys()) { properties.push_back(qMakePair(key, m_image.text(key))); } return properties; } } // Model ImagePlugin::ImagePlugin(QObject* parent) : QObject(parent) { setObjectName("ImagePlugin"); } Model::Document* ImagePlugin::loadDocument(const QString& filePath) const { QImage image(filePath); return !image.isNull() ? new Model::ImageDocument(image) : 0; } } // qpdfview #if QT_VERSION < QT_VERSION_CHECK(5,0,0) Q_EXPORT_PLUGIN2(qpdfview_image, qpdfview::ImagePlugin) #endif // QT_VERSION qpdfview-0.4.18/sources/imagemodel.h0000644000000000000000000000413513516127411015522 0ustar 00000000000000/* Copyright 2015 Adam Reichold This file is part of qpdfview. qpdfview is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. qpdfview is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with qpdfview. If not, see . */ #ifndef IMAGEMODEL_H #define IMAGEMODEL_H #include #include "model.h" namespace qpdfview { class ImagePlugin; namespace Model { class ImagePage : public Page { friend class ImageDocument; public: QSizeF size() const; QImage render(qreal horizontalResolution, qreal verticalResolution, Rotation rotation, QRect boundingRect) const; private: Q_DISABLE_COPY(ImagePage) ImagePage(const QImage& image); QImage m_image; }; class ImageDocument : public Document { Q_DECLARE_TR_FUNCTIONS(Model::ImageDocument) friend class qpdfview::ImagePlugin; public: int numberOfPages() const; Page* page(int index) const; QStringList saveFilter() const; bool canSave() const; bool save(const QString& filePath, bool withChanges) const; Properties properties() const; private: Q_DISABLE_COPY(ImageDocument) ImageDocument(const QImage& image); QImage m_image; }; } class ImagePlugin : public QObject, Plugin { Q_OBJECT Q_INTERFACES(qpdfview::Plugin) #if QT_VERSION >= QT_VERSION_CHECK(5,0,0) Q_PLUGIN_METADATA(IID "local.qpdfview.Plugin") #endif // QT_VERSION public: ImagePlugin(QObject* parent = 0); Model::Document* loadDocument(const QString& filePath) const; private: Q_DISABLE_COPY(ImagePlugin) }; } // qpdfview #endif // IMAGEMODEL_H qpdfview-0.4.18/sources/main.cpp0000644000000000000000000003360013516127411014675 0ustar 00000000000000/* Copyright 2018 Marshall Banana Copyright 2012-2013, 2018 Adam Reichold Copyright 2014 Dorian Scholz Copyright 2012 Michał Trybus Copyright 2013 Chris Young This file is part of qpdfview. qpdfview is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. qpdfview is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with qpdfview. If not, see . */ #include #include #include #include #include #include #include #include #include #ifdef WITH_DBUS #include #include #endif // WITH_DBUS #ifdef WITH_SYNCTEX #include #ifndef HAS_SYNCTEX_2 typedef synctex_scanner_t synctex_scanner_p; typedef synctex_node_t synctex_node_p; #define synctex_scanner_next_result(scanner) synctex_next_result(scanner) #define synctex_display_query(scanner, file, line, column, page) synctex_display_query(scanner, file, line, column) #endif // HAS_SYNCTEX_2 #endif // WITH_SYNCTEX #include "documentview.h" #include "database.h" #include "mainwindow.h" #ifdef WITH_SIGNALS #include "signalhandler.h" #endif // WITH_SIGNALS #ifdef __amigaos4__ #include #include const char* __attribute__((used)) stack_cookie = "\0$STACK:500000\0"; #endif // __amigaos4__ namespace { using namespace qpdfview; struct File { QString filePath; int page; QString sourceName; int sourceLine; int sourceColumn; QRectF enclosingBox; File() : filePath(), page(-1), sourceName(), sourceLine(-1), sourceColumn(-1), enclosingBox() {} }; enum ExitStatus { ExitOk = 0, ExitUnknownArgument = 1, ExitIllegalArgument = 2, ExitInconsistentArguments = 3, ExitDBusError = 4 }; bool unique = false; bool quiet = false; QString instanceName; QString searchText; QList< File > files; MainWindow* mainWindow = 0; bool loadTranslator(QTranslator* const translator, const QString& fileName, const QString& path) { #if QT_VERSION >= QT_VERSION_CHECK(4,8,0) const bool ok = translator->load(QLocale::system(), fileName, "_", path); #else const bool ok = translator->load(fileName + "_" + QLocale::system().name(), path); #endif // QT_VERSION if(ok) { qApp->installTranslator(translator); } return ok; } void loadTranslators() { QTranslator* toolkitTranslator = new QTranslator(qApp); loadTranslator(toolkitTranslator, "qt", QLibraryInfo::location(QLibraryInfo::TranslationsPath)); QTranslator* applicationTranslator = new QTranslator(qApp); if(loadTranslator(applicationTranslator, "qpdfview", QDir(QApplication::applicationDirPath()).filePath("data"))) {} else if(loadTranslator(applicationTranslator, "qpdfview", DATA_INSTALL_PATH)) {} else if(loadTranslator(applicationTranslator, "qpdfview", ":/")) {} } void parseCommandLineArguments() { bool instanceNameIsNext = false; bool searchTextIsNext = false; bool noMoreOptions = false; QRegExp fileAndPageRegExp("(.+)#(\\d+)"); QRegExp fileAndSourceRegExp("(.+)#src:(.+):(\\d+):(\\d+)"); QRegExp instanceNameRegExp("[A-Za-z_]+[A-Za-z0-9_]*"); QStringList arguments = QApplication::arguments(); if(!arguments.isEmpty()) { arguments.removeFirst(); } foreach(const QString& argument, arguments) { if(instanceNameIsNext) { if(argument.isEmpty()) { qCritical() << QObject::tr("An empty instance name is not allowed."); exit(ExitIllegalArgument); } instanceNameIsNext = false; instanceName = argument; } else if(searchTextIsNext) { if(argument.isEmpty()) { qCritical() << QObject::tr("An empty search text is not allowed."); exit(ExitIllegalArgument); } searchTextIsNext = false; searchText = argument; } else if(!noMoreOptions && argument.startsWith("--")) { if(argument == QLatin1String("--unique")) { unique = true; } else if(argument == QLatin1String("--quiet")) { quiet = true; } else if(argument == QLatin1String("--instance")) { instanceNameIsNext = true; } else if(argument == QLatin1String("--search")) { searchTextIsNext = true; } else if(argument == QLatin1String("--choose-instance")) { bool ok = false; const QString chosenInstanceName = QInputDialog::getItem(0, MainWindow::tr("Choose instance"), MainWindow::tr("Instance:"), Database::instance()->knownInstanceNames(), 0, true, &ok); if(ok) { instanceName = chosenInstanceName; } } else if(argument == QLatin1String("--help")) { std::cout << "Usage: qpdfview [options] [--] [file[#page]] [file[#src:name:line:column]] ..." << std::endl << std::endl << "Available options:" << std::endl << " --help Show this information" << std::endl << " --quiet Suppress warning messages when opening files" << std::endl << " --search text Search for text in the current tab" << std::endl << " --unique Open files as tabs in unique window" << std::endl << " --unique --instance name Open files as tabs in named instance" << std::endl << " --unique --choose-instance Open files as tabs after choosing an instance name" << std::endl << std::endl << "Please report bugs at \"https://launchpad.net/qpdfview\"." << std::endl; exit(ExitOk); } else if(argument == QLatin1String("--")) { noMoreOptions = true; } else { qCritical() << QObject::tr("Unknown command-line option '%1'.").arg(argument); exit(ExitUnknownArgument); } } else { File file; if(fileAndPageRegExp.exactMatch(argument)) { file.filePath = fileAndPageRegExp.cap(1); file.page = fileAndPageRegExp.cap(2).toInt(); } else if(fileAndSourceRegExp.exactMatch(argument)) { file.filePath = fileAndSourceRegExp.cap(1); file.sourceName = fileAndSourceRegExp.cap(2); file.sourceLine = fileAndSourceRegExp.cap(3).toInt(); file.sourceColumn = fileAndSourceRegExp.cap(4).toInt(); } else { file.filePath = argument; } files.append(file); } } if(instanceNameIsNext) { qCritical() << QObject::tr("Using '--instance' requires an instance name."); exit(ExitInconsistentArguments); } if(!unique && !instanceName.isEmpty()) { qCritical() << QObject::tr("Using '--instance' is not allowed without using '--unique'."); exit(ExitInconsistentArguments); } if(!instanceName.isEmpty() && !instanceNameRegExp.exactMatch(instanceName)) { qCritical() << QObject::tr("An instance name must only contain the characters \"[A-Z][a-z][0-9]_\" and must not begin with a digit."); exit(ExitIllegalArgument); } if(searchTextIsNext) { qCritical() << QObject::tr("Using '--search' requires a search text."); exit(ExitInconsistentArguments); } } void parseWorkbenchExtendedSelection(int argc, char** argv) { #ifdef __amigaos4__ if(argc == 0) { const int pathLength = 1024; const QScopedArrayPointer< char > filePath(new char[pathLength]); const struct WBStartup* wbStartup = reinterpret_cast< struct WBStartup* >(argv); for(int index = 1; index < wbStartup->sm_NumArgs; ++index) { const struct WBArg* wbArg = wbStartup->sm_ArgList + index; if((wbArg->wa_Lock) && (*wbArg->wa_Name)) { IDOS->DevNameFromLock(wbArg->wa_Lock, filePath.data(), pathLength, DN_FULLPATH); IDOS->AddPart(filePath.data(), wbArg->wa_Name, pathLength); File file; file.filePath = filePath.data(); files.append(file); } } } #else Q_UNUSED(argc); Q_UNUSED(argv); #endif // __amigaos4__ } void resolveSourceReferences() { #ifdef WITH_SYNCTEX for(int index = 0; index < files.count(); ++index) { File& file = files[index]; if(!file.sourceName.isNull()) { if(synctex_scanner_p scanner = synctex_scanner_new_with_output_file(file.filePath.toLocal8Bit(), 0, 1)) { if(synctex_display_query(scanner, file.sourceName.toLocal8Bit(), file.sourceLine, file.sourceColumn, -1) > 0) { for(synctex_node_p node = synctex_scanner_next_result(scanner); node != 0; node = synctex_scanner_next_result(scanner)) { int page = synctex_node_page(node); QRectF enclosingBox(synctex_node_box_visible_h(node), synctex_node_box_visible_v(node), synctex_node_box_visible_width(node), synctex_node_box_visible_height(node)); if(file.page != page) { file.page = page; file.enclosingBox = enclosingBox; } else { file.enclosingBox = file.enclosingBox.united(enclosingBox); } } } synctex_scanner_free(scanner); } else { qWarning() << DocumentView::tr("SyncTeX data for '%1' could not be found.").arg(file.filePath); } } } #endif // WITH_SYNCTEX } void activateUniqueInstance() { qApp->setObjectName(instanceName); #ifdef WITH_DBUS if(unique) { QScopedPointer< QDBusInterface > interface(MainWindowAdaptor::createInterface()); if(interface->isValid()) { interface->call("raiseAndActivate"); foreach(const File& file, files) { QDBusReply< bool > reply = interface->call("jumpToPageOrOpenInNewTab", QFileInfo(file.filePath).absoluteFilePath(), file.page, true, file.enclosingBox, quiet); if(!reply.isValid()) { qCritical() << QDBusConnection::sessionBus().lastError().message(); exit(ExitDBusError); } } if(!files.isEmpty()) { interface->call("saveDatabase"); } if(!searchText.isEmpty()) { interface->call("startSearch", searchText); } exit(ExitOk); } else { mainWindow = new MainWindow(); if(MainWindowAdaptor::createAdaptor(mainWindow) == 0) { qCritical() << QDBusConnection::sessionBus().lastError().message(); delete mainWindow; exit(ExitDBusError); } } } else { mainWindow = new MainWindow(); } #else mainWindow = new MainWindow(); #endif // WITH_DBUS } void prepareSignalHandler() { #ifdef WITH_SIGNALS if(SignalHandler::prepareSignals()) { SignalHandler* signalHandler = new SignalHandler(mainWindow); QObject::connect(signalHandler, SIGNAL(sigIntReceived()), mainWindow, SLOT(close())); QObject::connect(signalHandler, SIGNAL(sigTermReceived()), mainWindow, SLOT(close())); } else { qWarning() << QObject::tr("Could not prepare signal handler."); } #endif // WITH_SIGNALS } } // anonymous int main(int argc, char** argv) { qRegisterMetaType< QList< QRectF > >("QList"); qRegisterMetaType< Rotation >("Rotation"); qRegisterMetaType< RenderParam >("RenderParam"); parseWorkbenchExtendedSelection(argc, argv); QApplication application(argc, argv); QApplication::setOrganizationDomain("local.qpdfview"); QApplication::setOrganizationName("qpdfview"); QApplication::setApplicationName("qpdfview"); QApplication::setApplicationVersion(APPLICATION_VERSION); QApplication::setWindowIcon(QIcon(":icons/qpdfview")); #if QT_VERSION >= QT_VERSION_CHECK(5,0,0) QApplication::setAttribute(Qt::AA_UseHighDpiPixmaps); #endif // QT_VERSION loadTranslators(); parseCommandLineArguments(); resolveSourceReferences(); activateUniqueInstance(); prepareSignalHandler(); mainWindow->show(); mainWindow->setAttribute(Qt::WA_DeleteOnClose); foreach(const File& file, files) { mainWindow->jumpToPageOrOpenInNewTab(file.filePath, file.page, true, file.enclosingBox, quiet); } if(!files.isEmpty()) { mainWindow->saveDatabase(); } if(!searchText.isEmpty()) { mainWindow->startSearch(searchText); } return application.exec(); } qpdfview-0.4.18/sources/mainwindow.cpp0000644000000000000000000036232213516127411016133 0ustar 00000000000000/* Copyright 2014-2015, 2018 S. Razi Alavizadeh Copyright 2018 Marshall Banana Copyright 2012-2018 Adam Reichold Copyright 2018 Pavel Sanda Copyright 2014 Dorian Scholz Copyright 2018 Martin Spacek Copyright 2012 Michał Trybus Copyright 2012 Alexander Volkov This file is part of qpdfview. qpdfview is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. qpdfview is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with qpdfview. If not, see . */ #include "mainwindow.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #if QT_VERSION >= QT_VERSION_CHECK(5,0,0) #include #endif // QT_VERSION #ifdef WITH_DBUS #include #include #endif // WITH_DBUS #include "model.h" #include "settings.h" #include "shortcuthandler.h" #include "thumbnailitem.h" #include "searchmodel.h" #include "searchitemdelegate.h" #include "documentview.h" #include "miscellaneous.h" #include "printdialog.h" #include "settingsdialog.h" #include "fontsdialog.h" #include "helpdialog.h" #include "recentlyusedmenu.h" #include "recentlyclosedmenu.h" #include "bookmarkmodel.h" #include "bookmarkmenu.h" #include "bookmarkdialog.h" #include "database.h" namespace qpdfview { namespace { QModelIndex synchronizeOutlineView(int currentPage, const QAbstractItemModel* model, const QModelIndex& parent) { for(int row = 0, rowCount = model->rowCount(parent); row < rowCount; ++row) { const QModelIndex index = model->index(row, 0, parent); bool ok = false; const int page = model->data(index, Model::Document::PageRole).toInt(&ok); if(ok && page == currentPage) { return index; } } for(int row = 0, rowCount = model->rowCount(parent); row < rowCount; ++row) { const QModelIndex index = model->index(row, 0, parent); const QModelIndex match = synchronizeOutlineView(currentPage, model, index); if(match.isValid()) { return match; } } return QModelIndex(); } inline void setToolButtonMenu(QToolBar* toolBar, QAction* action, QMenu* menu) { if(QToolButton* toolButton = qobject_cast< QToolButton* >(toolBar->widgetForAction(action))) { toolButton->setMenu(menu); } } inline void setSectionResizeMode(QHeaderView* header, QHeaderView::ResizeMode mode) { if(header->count() > 0) { #if QT_VERSION >= QT_VERSION_CHECK(5,0,0) header->setSectionResizeMode(mode); #else header->setResizeMode(mode); #endif // QT_VERSION } } inline void setSectionResizeMode(QHeaderView* header, int index, QHeaderView::ResizeMode mode) { if(header->count() > index) { #if QT_VERSION >= QT_VERSION_CHECK(5,0,0) header->setSectionResizeMode(index, mode); #else header->setResizeMode(index, mode); #endif // QT_VERSION } } inline QAction* createTemporaryAction(QObject* parent, const QString& text, const QString& objectName) { QAction* action = new QAction(text, parent); action->setObjectName(objectName); return action; } void addWidgetActions(QWidget* widget, const QStringList& actionNames, const QList< QAction* >& actions) { foreach(const QString& actionName, actionNames) { if(actionName == QLatin1String("separator")) { QAction* separator = new QAction(widget); separator->setSeparator(true); widget->addAction(separator); continue; } foreach(QAction* action, actions) { if(actionName == action->objectName()) { widget->addAction(action); break; } } } } class SignalBlocker { public: SignalBlocker(QObject* object) : m_object(object) { m_object->blockSignals(true); } ~SignalBlocker() { m_object->blockSignals(false); } private: Q_DISABLE_COPY(SignalBlocker) QObject* m_object; }; DocumentView* findCurrentTab(QObject* const object) { if(DocumentView* const tab = qobject_cast< DocumentView* >(object)) { return tab; } if(Splitter* const splitter = qobject_cast< Splitter* >(object)) { return findCurrentTab(splitter->currentWidget()); } return 0; } QVector< DocumentView* > findAllTabs(QObject* const object) { QVector< DocumentView* > tabs; if(DocumentView* const tab = qobject_cast< DocumentView* >(object)) { tabs.append(tab); } if(Splitter* const splitter = qobject_cast< Splitter* >(object)) { for(int index = 0, count = splitter->count(); index < count; ++index) { tabs += findAllTabs(splitter->widget(index)); } } return tabs; } } // anonymous class MainWindow::CurrentTabChangeBlocker { Q_DISABLE_COPY(CurrentTabChangeBlocker) private: MainWindow* const that; public: CurrentTabChangeBlocker(MainWindow* const that) : that(that) { that->m_currentTabChangedBlocked = true; } ~CurrentTabChangeBlocker() { that->m_currentTabChangedBlocked = false; that->on_tabWidget_currentChanged(); } }; class MainWindow::RestoreTab : public Database::RestoreTab { private: MainWindow* const that; public: RestoreTab(MainWindow* that) : that(that) {} DocumentView* operator()(const QString& absoluteFilePath) const { if(that->openInNewTab(absoluteFilePath, -1, QRectF(), true)) { return that->currentTab(); } else { return 0; } } }; class MainWindow::TextValueMapper : public MappingSpinBox::TextValueMapper { private: MainWindow* const that; public: TextValueMapper(MainWindow* that) : that(that) {} QString textFromValue(int val, bool& ok) const { const DocumentView* currentTab = that->currentTab(); if(currentTab == 0 || !(currentTab->hasFrontMatter() || that->s_settings->mainWindow().usePageLabel())) { ok = false; return QString(); } ok = true; return currentTab->pageLabelFromNumber(val); } int valueFromText(const QString& text, bool& ok) const { const DocumentView* currentTab = that->currentTab(); if(currentTab == 0 || !(currentTab->hasFrontMatter() || that->s_settings->mainWindow().usePageLabel())) { ok = false; return 0; } const QString& prefix = that->m_currentPageSpinBox->prefix(); const QString& suffix = that->m_currentPageSpinBox->suffix(); int from = 0; int size = text.size(); if(!prefix.isEmpty() && text.startsWith(prefix)) { from += prefix.size(); size -= from; } if(!suffix.isEmpty() && text.endsWith(suffix)) { size -= suffix.size(); } const QString& trimmedText = text.mid(from, size).trimmed(); ok = true; return currentTab->pageNumberFromLabel(trimmedText); } }; Settings* MainWindow::s_settings = 0; Database* MainWindow::s_database = 0; ShortcutHandler* MainWindow::s_shortcutHandler = 0; SearchModel* MainWindow::s_searchModel = 0; MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent), m_outlineView(0), m_thumbnailsView(0) { if(s_settings == 0) { s_settings = Settings::instance(); } if(s_shortcutHandler == 0) { s_shortcutHandler = ShortcutHandler::instance(); } if(s_searchModel == 0) { s_searchModel = SearchModel::instance(); } prepareStyle(); setAcceptDrops(true); createWidgets(); createActions(); createToolBars(); createDocks(); createMenus(); restoreGeometry(s_settings->mainWindow().geometry()); restoreState(s_settings->mainWindow().state()); prepareDatabase(); } QSize MainWindow::sizeHint() const { return QSize(600, 800); } QMenu* MainWindow::createPopupMenu() { QMenu* menu = new QMenu(); menu->addAction(m_fileToolBar->toggleViewAction()); menu->addAction(m_editToolBar->toggleViewAction()); menu->addAction(m_viewToolBar->toggleViewAction()); menu->addSeparator(); menu->addAction(m_outlineDock->toggleViewAction()); menu->addAction(m_propertiesDock->toggleViewAction()); menu->addAction(m_thumbnailsDock->toggleViewAction()); menu->addAction(m_bookmarksDock->toggleViewAction()); if(s_settings->mainWindow().extendedSearchDock()) { menu->addAction(m_searchDock->toggleViewAction()); } return menu; } void MainWindow::show() { QMainWindow::show(); if(s_settings->mainWindow().restoreTabs()) { s_database->restoreTabs(RestoreTab(this)); const int currentTabIndex = s_settings->mainWindow().currentTabIndex(); if(currentTabIndex != -1) { m_tabWidget->setCurrentIndex(currentTabIndex); } } if(s_settings->mainWindow().restoreBookmarks()) { s_database->restoreBookmarks(); } on_tabWidget_currentChanged(); } bool MainWindow::open(const QString& filePath, int page, const QRectF& highlight, bool quiet) { if(DocumentView* const tab = currentTab()) { if(!saveModifications(tab)) { return false; } if(tab->open(filePath)) { s_settings->mainWindow().setOpenPath(tab->fileInfo().absolutePath()); m_recentlyUsedMenu->addOpenAction(tab->fileInfo()); m_tabWidget->setCurrentTabText(tab->title()); m_tabWidget->setCurrentTabToolTip(tab->fileInfo().absoluteFilePath()); restorePerFileSettings(tab); scheduleSaveTabs(); tab->jumpToPage(page, false); tab->setFocus(); if(!highlight.isNull()) { tab->temporaryHighlight(page, highlight); } return true; } else { if(!quiet) { QMessageBox::warning(this, tr("Warning"), tr("Could not open '%1'.").arg(filePath)); } } } return false; } bool MainWindow::openInNewTab(const QString& filePath, int page, const QRectF& highlight, bool quiet) { DocumentView* const newTab = new DocumentView(this); if(newTab->open(filePath)) { s_settings->mainWindow().setOpenPath(newTab->fileInfo().absolutePath()); m_recentlyUsedMenu->addOpenAction(newTab->fileInfo()); addTab(newTab); addTabAction(newTab); connectTab(newTab); newTab->show(); restorePerFileSettings(newTab); scheduleSaveTabs(); newTab->jumpToPage(page, false); newTab->setFocus(); if(!highlight.isNull()) { newTab->temporaryHighlight(page, highlight); } return true; } else { delete newTab; if(!quiet) { QMessageBox::warning(this, tr("Warning"), tr("Could not open '%1'.").arg(filePath)); } } return false; } bool MainWindow::jumpToPageOrOpenInNewTab(const QString& filePath, int page, bool refreshBeforeJump, const QRectF& highlight, bool quiet) { const QFileInfo fileInfo(filePath); for(int index = 0, count = m_tabWidget->count(); index < count; ++index) { foreach(DocumentView* tab, allTabs(index)) { if(tab->fileInfo() == fileInfo) { m_tabWidget->setCurrentIndex(index); if(refreshBeforeJump) { if(!tab->refresh()) { return false; } } tab->jumpToPage(page); tab->setFocus(); if(!highlight.isNull()) { tab->temporaryHighlight(page, highlight); } return true; } } } return openInNewTab(filePath, page, highlight, quiet); } void MainWindow::startSearch(const QString& text) { if(DocumentView* const tab = currentTab()) { m_searchDock->setVisible(true); m_searchLineEdit->setText(text); m_searchLineEdit->startSearch(); tab->setFocus(); } } void MainWindow::saveDatabase() { QTimer::singleShot(0, this, SLOT(on_saveDatabase_timeout())); } void MainWindow::on_tabWidget_currentChanged() { if(m_currentTabChangedBlocked) { return; } DocumentView* const tab = currentTab(); const bool hasCurrent = tab != 0; m_refreshAction->setEnabled(hasCurrent); m_printAction->setEnabled(hasCurrent); m_previousPageAction->setEnabled(hasCurrent); m_nextPageAction->setEnabled(hasCurrent); m_firstPageAction->setEnabled(hasCurrent); m_lastPageAction->setEnabled(hasCurrent); m_setFirstPageAction->setEnabled(hasCurrent); m_jumpToPageAction->setEnabled(hasCurrent); m_searchAction->setEnabled(hasCurrent); m_copyToClipboardModeAction->setEnabled(hasCurrent); m_addAnnotationModeAction->setEnabled(hasCurrent); m_continuousModeAction->setEnabled(hasCurrent); m_twoPagesModeAction->setEnabled(hasCurrent); m_twoPagesWithCoverPageModeAction->setEnabled(hasCurrent); m_multiplePagesModeAction->setEnabled(hasCurrent); m_rightToLeftModeAction->setEnabled(hasCurrent); m_zoomInAction->setEnabled(hasCurrent); m_zoomOutAction->setEnabled(hasCurrent); m_originalSizeAction->setEnabled(hasCurrent); m_fitToPageWidthModeAction->setEnabled(hasCurrent); m_fitToPageSizeModeAction->setEnabled(hasCurrent); m_rotateLeftAction->setEnabled(hasCurrent); m_rotateRightAction->setEnabled(hasCurrent); m_invertColorsAction->setEnabled(hasCurrent); m_convertToGrayscaleAction->setEnabled(hasCurrent); m_trimMarginsAction->setEnabled(hasCurrent); m_compositionModeMenu->setEnabled(hasCurrent); m_darkenWithPaperColorAction->setEnabled(hasCurrent); m_lightenWithPaperColorAction->setEnabled(hasCurrent); m_fontsAction->setEnabled(hasCurrent); m_presentationAction->setEnabled(hasCurrent); m_previousTabAction->setEnabled(hasCurrent); m_nextTabAction->setEnabled(hasCurrent); m_closeTabAction->setEnabled(hasCurrent); m_closeAllTabsAction->setEnabled(hasCurrent); m_closeAllTabsButCurrentTabAction->setEnabled(hasCurrent); m_previousBookmarkAction->setEnabled(hasCurrent); m_nextBookmarkAction->setEnabled(hasCurrent); m_addBookmarkAction->setEnabled(hasCurrent); m_removeBookmarkAction->setEnabled(hasCurrent); m_currentPageSpinBox->setEnabled(hasCurrent); m_scaleFactorComboBox->setEnabled(hasCurrent); m_searchLineEdit->setEnabled(hasCurrent); m_matchCaseCheckBox->setEnabled(hasCurrent); m_wholeWordsCheckBox->setEnabled(hasCurrent); m_highlightAllCheckBox->setEnabled(hasCurrent); m_openCopyInNewTabAction->setEnabled(hasCurrent); m_openCopyInNewWindowAction->setEnabled(hasCurrent); m_openContainingFolderAction->setEnabled(hasCurrent); m_moveToInstanceAction->setEnabled(hasCurrent); m_splitViewHorizontallyAction->setEnabled(hasCurrent); m_splitViewVerticallyAction->setEnabled(hasCurrent); m_closeCurrentViewAction->setEnabled(hasCurrent); m_searchDock->toggleViewAction()->setEnabled(hasCurrent); if(hasCurrent) { const bool canSave = tab->canSave(); m_saveAction->setEnabled(canSave); m_saveAsAction->setEnabled(canSave); m_saveCopyAction->setEnabled(canSave); if(m_searchDock->isVisible()) { m_searchLineEdit->stopTimer(); m_searchLineEdit->setProgress(tab->searchProgress()); if(tab->hasSearchResults()) { m_searchLineEdit->setText(tab->searchText()); m_matchCaseCheckBox->setChecked(tab->searchMatchCase()); m_wholeWordsCheckBox->setChecked(tab->searchWholeWords()); } } m_bookmarksView->setModel(bookmarkModelForCurrentTab()); on_thumbnails_dockLocationChanged(dockWidgetArea(m_thumbnailsDock)); m_thumbnailsView->setScene(tab->thumbnailsScene()); tab->setThumbnailsViewportSize(m_thumbnailsView->viewport()->size()); on_currentTab_documentChanged(); on_currentTab_numberOfPagesChaned(tab->numberOfPages()); on_currentTab_currentPageChanged(tab->currentPage()); on_currentTab_canJumpChanged(tab->canJumpBackward(), tab->canJumpForward()); on_currentTab_continuousModeChanged(tab->continuousMode()); on_currentTab_layoutModeChanged(tab->layoutMode()); on_currentTab_rightToLeftModeChanged(tab->rightToLeftMode()); on_currentTab_scaleModeChanged(tab->scaleMode()); on_currentTab_scaleFactorChanged(tab->scaleFactor()); on_currentTab_invertColorsChanged(tab->invertColors()); on_currentTab_convertToGrayscaleChanged(tab->convertToGrayscale()); on_currentTab_trimMarginsChanged(tab->trimMargins()); on_currentTab_compositionModeChanged(tab->compositionMode()); on_currentTab_highlightAllChanged(tab->highlightAll()); on_currentTab_rubberBandModeChanged(tab->rubberBandMode()); } else { m_saveAction->setEnabled(false); m_saveAsAction->setEnabled(false); m_saveCopyAction->setEnabled(false); if(m_searchDock->isVisible()) { m_searchLineEdit->stopTimer(); m_searchLineEdit->setProgress(0); m_searchDock->setVisible(false); } m_outlineView->setModel(0); m_propertiesView->setModel(0); m_bookmarksView->setModel(0); m_thumbnailsView->setScene(0); setWindowTitleForCurrentTab(); setCurrentPageSuffixForCurrentTab(); m_currentPageSpinBox->setValue(1); m_scaleFactorComboBox->setCurrentIndex(4); m_jumpBackwardAction->setEnabled(false); m_jumpForwardAction->setEnabled(false); m_copyToClipboardModeAction->setChecked(false); m_addAnnotationModeAction->setChecked(false); m_continuousModeAction->setChecked(false); m_twoPagesModeAction->setChecked(false); m_twoPagesWithCoverPageModeAction->setChecked(false); m_multiplePagesModeAction->setChecked(false); m_fitToPageSizeModeAction->setChecked(false); m_fitToPageWidthModeAction->setChecked(false); m_invertColorsAction->setChecked(false); m_convertToGrayscaleAction->setChecked(false); m_trimMarginsAction->setChecked(false); m_darkenWithPaperColorAction->setChecked(false); m_lightenWithPaperColorAction->setChecked(false); } } void MainWindow::on_tabWidget_tabCloseRequested(int index) { on_closeTabs_triggered(allTabs(index)); } void MainWindow::on_tabWidget_tabDragRequested(int index) { QMimeData* mimeData = new QMimeData(); mimeData->setUrls(QList< QUrl >() << QUrl::fromLocalFile(currentTab(index)->fileInfo().absoluteFilePath())); QDrag* drag = new QDrag(this); drag->setMimeData(mimeData); drag->exec(); } void MainWindow::on_tabWidget_tabContextMenuRequested(QPoint globalPos, int index) { QMenu menu; // We block their signals since we need to handle them using the selected instead of the current tab. SignalBlocker openCopyInNewTabSignalBlocker(m_openCopyInNewTabAction); SignalBlocker openCopyInNewWindowSignalBlocker(m_openCopyInNewWindowAction); SignalBlocker openContainingFolderSignalBlocker(m_openContainingFolderAction); SignalBlocker moveToInstanceSignalBlocker(m_moveToInstanceAction); SignalBlocker splitViewHorizontallySignalBlocker(m_splitViewHorizontallyAction); SignalBlocker splitViewVerticallySignalBlocker(m_splitViewVerticallyAction); SignalBlocker closeCurrentViewSignalBlocker(m_closeCurrentViewAction); QAction* copyFilePathAction = createTemporaryAction(&menu, tr("Copy file path"), QLatin1String("copyFilePath")); QAction* selectFilePathAction = createTemporaryAction(&menu, tr("Select file path"), QLatin1String("selectFilePath")); QAction* closeAllTabsAction = createTemporaryAction(&menu, tr("Close all tabs"), QLatin1String("closeAllTabs")); QAction* closeAllTabsButThisOneAction = createTemporaryAction(&menu, tr("Close all tabs but this one"), QLatin1String("closeAllTabsButThisOne")); QAction* closeAllTabsToTheLeftAction = createTemporaryAction(&menu, tr("Close all tabs to the left"), QLatin1String("closeAllTabsToTheLeft")); QAction* closeAllTabsToTheRightAction = createTemporaryAction(&menu, tr("Close all tabs to the right"), QLatin1String("closeAllTabsToTheRight")); selectFilePathAction->setVisible(QApplication::clipboard()->supportsSelection()); QList< QAction* > actions; actions << m_openCopyInNewTabAction << m_openCopyInNewWindowAction << m_openContainingFolderAction << m_moveToInstanceAction << m_splitViewHorizontallyAction << m_splitViewVerticallyAction << m_closeCurrentViewAction << copyFilePathAction << selectFilePathAction << closeAllTabsAction << closeAllTabsButThisOneAction << closeAllTabsToTheLeftAction << closeAllTabsToTheRightAction; addWidgetActions(&menu, s_settings->mainWindow().tabContextMenu(), actions); const QAction* action = menu.exec(globalPos); DocumentView* const tab = currentTab(index); if(action == m_openCopyInNewTabAction) { on_openCopyInNewTab_triggered(tab); } else if(action == m_openCopyInNewWindowAction) { on_openCopyInNewWindow_triggered(tab); } else if(action == m_openContainingFolderAction) { on_openContainingFolder_triggered(tab); } else if(action == m_moveToInstanceAction) { on_moveToInstance_triggered(tab); } else if(action == m_splitViewHorizontallyAction) { on_splitView_split_triggered(Qt::Horizontal, index); } else if(action == m_splitViewVerticallyAction) { on_splitView_split_triggered(Qt::Vertical, index); } else if(action == m_closeCurrentViewAction) { on_splitView_closeCurrent_triggered(index); } else if(action == copyFilePathAction) { QApplication::clipboard()->setText(tab->fileInfo().absoluteFilePath()); } else if(action == selectFilePathAction) { QApplication::clipboard()->setText(tab->fileInfo().absoluteFilePath(), QClipboard::Selection); } else if(action == closeAllTabsAction) { on_closeAllTabs_triggered(); } else if(action == closeAllTabsButThisOneAction) { on_closeAllTabsButThisOne_triggered(index); } else if(action == closeAllTabsToTheLeftAction) { on_closeAllTabsToTheLeft_triggered(index); } else if(action == closeAllTabsToTheRightAction) { on_closeAllTabsToTheRight_triggered(index); } } #define ONLY_IF_SENDER_IS_CURRENT_TAB if(!senderIsCurrentTab()) { return; } void MainWindow::on_currentTab_documentChanged() { DocumentView* const senderTab = findCurrentTab(sender()); for(int index = 0, count = m_tabWidget->count(); index < count; ++index) { if(senderTab == currentTab(index)) { m_tabWidget->setTabText(index, senderTab->title()); m_tabWidget->setTabToolTip(index, senderTab->fileInfo().absoluteFilePath()); break; } } foreach(QAction* tabAction, m_tabsMenu->actions()) { if(senderTab == tabAction->parent()) { tabAction->setText(senderTab->title()); break; } } ONLY_IF_SENDER_IS_CURRENT_TAB m_outlineView->setModel(currentTab()->outlineModel()); m_propertiesView->setModel(currentTab()->propertiesModel()); m_outlineView->restoreExpansion(); setWindowTitleForCurrentTab(); setWindowModified(currentTab()->wasModified()); } void MainWindow::on_currentTab_documentModified() { ONLY_IF_SENDER_IS_CURRENT_TAB setWindowModified(true); } void MainWindow::on_currentTab_numberOfPagesChaned(int numberOfPages) { ONLY_IF_SENDER_IS_CURRENT_TAB m_currentPageSpinBox->setRange(1, numberOfPages); setWindowTitleForCurrentTab(); setCurrentPageSuffixForCurrentTab(); } void MainWindow::on_currentTab_currentPageChanged(int currentPage) { scheduleSaveTabs(); scheduleSavePerFileSettings(); ONLY_IF_SENDER_IS_CURRENT_TAB m_currentPageSpinBox->setValue(currentPage); if(s_settings->mainWindow().synchronizeOutlineView() && m_outlineView->model() != 0) { const QModelIndex match = synchronizeOutlineView(currentPage, m_outlineView->model(), QModelIndex()); if(match.isValid()) { m_outlineView->collapseAll(); m_outlineView->expandAbove(match); m_outlineView->setCurrentIndex(match); } } m_thumbnailsView->ensureVisible(currentTab()->thumbnailItems().at(currentPage - 1)); setWindowTitleForCurrentTab(); setCurrentPageSuffixForCurrentTab(); } void MainWindow::on_currentTab_canJumpChanged(bool backward, bool forward) { ONLY_IF_SENDER_IS_CURRENT_TAB m_jumpBackwardAction->setEnabled(backward); m_jumpForwardAction->setEnabled(forward); } void MainWindow::on_currentTab_continuousModeChanged(bool continuousMode) { scheduleSaveTabs(); scheduleSavePerFileSettings(); ONLY_IF_SENDER_IS_CURRENT_TAB m_continuousModeAction->setChecked(continuousMode); } void MainWindow::on_currentTab_layoutModeChanged(LayoutMode layoutMode) { scheduleSaveTabs(); scheduleSavePerFileSettings(); ONLY_IF_SENDER_IS_CURRENT_TAB m_twoPagesModeAction->setChecked(layoutMode == TwoPagesMode); m_twoPagesWithCoverPageModeAction->setChecked(layoutMode == TwoPagesWithCoverPageMode); m_multiplePagesModeAction->setChecked(layoutMode == MultiplePagesMode); } void MainWindow::on_currentTab_rightToLeftModeChanged(bool rightToLeftMode) { scheduleSaveTabs(); scheduleSavePerFileSettings(); ONLY_IF_SENDER_IS_CURRENT_TAB m_rightToLeftModeAction->setChecked(rightToLeftMode); } void MainWindow::on_currentTab_scaleModeChanged(ScaleMode scaleMode) { scheduleSaveTabs(); scheduleSavePerFileSettings(); ONLY_IF_SENDER_IS_CURRENT_TAB switch(scaleMode) { default: case ScaleFactorMode: m_fitToPageWidthModeAction->setChecked(false); m_fitToPageSizeModeAction->setChecked(false); on_currentTab_scaleFactorChanged(currentTab()->scaleFactor()); break; case FitToPageWidthMode: m_fitToPageWidthModeAction->setChecked(true); m_fitToPageSizeModeAction->setChecked(false); m_scaleFactorComboBox->setCurrentIndex(0); m_zoomInAction->setEnabled(true); m_zoomOutAction->setEnabled(true); break; case FitToPageSizeMode: m_fitToPageWidthModeAction->setChecked(false); m_fitToPageSizeModeAction->setChecked(true); m_scaleFactorComboBox->setCurrentIndex(1); m_zoomInAction->setEnabled(true); m_zoomOutAction->setEnabled(true); break; } } void MainWindow::on_currentTab_scaleFactorChanged(qreal scaleFactor) { scheduleSaveTabs(); scheduleSavePerFileSettings(); ONLY_IF_SENDER_IS_CURRENT_TAB if(currentTab()->scaleMode() == ScaleFactorMode) { m_scaleFactorComboBox->setCurrentIndex(m_scaleFactorComboBox->findData(scaleFactor)); m_scaleFactorComboBox->lineEdit()->setText(QString("%1 %").arg(qRound(scaleFactor * 100.0))); m_zoomInAction->setDisabled(qFuzzyCompare(scaleFactor, s_settings->documentView().maximumScaleFactor())); m_zoomOutAction->setDisabled(qFuzzyCompare(scaleFactor, s_settings->documentView().minimumScaleFactor())); } } void MainWindow::on_currentTab_rotationChanged(Rotation rotation) { Q_UNUSED(rotation); scheduleSaveTabs(); scheduleSavePerFileSettings(); } void MainWindow::on_currentTab_linkClicked(int page) { openInNewTab(currentTab()->fileInfo().filePath(), page); } void MainWindow::on_currentTab_linkClicked(bool newTab, const QString& filePath, int page) { if(newTab) { openInNewTab(filePath, page); } else { jumpToPageOrOpenInNewTab(filePath, page, true); } } void MainWindow::on_currentTab_renderFlagsChanged(qpdfview::RenderFlags renderFlags) { Q_UNUSED(renderFlags); scheduleSaveTabs(); scheduleSavePerFileSettings(); } void MainWindow::on_currentTab_invertColorsChanged(bool invertColors) { ONLY_IF_SENDER_IS_CURRENT_TAB m_invertColorsAction->setChecked(invertColors); } void MainWindow::on_currentTab_convertToGrayscaleChanged(bool convertToGrayscale) { ONLY_IF_SENDER_IS_CURRENT_TAB m_convertToGrayscaleAction->setChecked(convertToGrayscale); } void MainWindow::on_currentTab_trimMarginsChanged(bool trimMargins) { ONLY_IF_SENDER_IS_CURRENT_TAB m_trimMarginsAction->setChecked(trimMargins); } void MainWindow::on_currentTab_compositionModeChanged(CompositionMode compositionMode) { ONLY_IF_SENDER_IS_CURRENT_TAB switch(compositionMode) { default: case DefaultCompositionMode: m_darkenWithPaperColorAction->setChecked(false); m_lightenWithPaperColorAction->setChecked(false); break; case DarkenWithPaperColorMode: m_darkenWithPaperColorAction->setChecked(true); m_lightenWithPaperColorAction->setChecked(false); break; case LightenWithPaperColorMode: m_darkenWithPaperColorAction->setChecked(false); m_lightenWithPaperColorAction->setChecked(true); break; } } void MainWindow::on_currentTab_highlightAllChanged(bool highlightAll) { ONLY_IF_SENDER_IS_CURRENT_TAB m_highlightAllCheckBox->setChecked(highlightAll); } void MainWindow::on_currentTab_rubberBandModeChanged(RubberBandMode rubberBandMode) { ONLY_IF_SENDER_IS_CURRENT_TAB m_copyToClipboardModeAction->setChecked(rubberBandMode == CopyToClipboardMode); m_addAnnotationModeAction->setChecked(rubberBandMode == AddAnnotationMode); } void MainWindow::on_currentTab_searchFinished() { ONLY_IF_SENDER_IS_CURRENT_TAB m_searchLineEdit->setProgress(0); } void MainWindow::on_currentTab_searchProgressChanged(int progress) { ONLY_IF_SENDER_IS_CURRENT_TAB m_searchLineEdit->setProgress(progress); } void MainWindow::on_currentTab_customContextMenuRequested(QPoint pos) { ONLY_IF_SENDER_IS_CURRENT_TAB QMenu menu; QAction* sourceLinkAction = sourceLinkActionForCurrentTab(&menu, pos); QList< QAction* > actions; actions << m_openCopyInNewTabAction << m_openCopyInNewWindowAction << m_openContainingFolderAction << m_moveToInstanceAction << m_splitViewHorizontallyAction << m_splitViewVerticallyAction << m_closeCurrentViewAction << m_previousPageAction << m_nextPageAction << m_firstPageAction << m_lastPageAction << m_jumpToPageAction << m_jumpBackwardAction << m_jumpForwardAction << m_setFirstPageAction; if(m_searchDock->isVisible()) { actions << m_findPreviousAction << m_findNextAction << m_cancelSearchAction; } menu.addAction(sourceLinkAction); menu.addSeparator(); addWidgetActions(&menu, s_settings->mainWindow().documentContextMenu(), actions); const QAction* action = menu.exec(currentTab()->mapToGlobal(pos)); if(action == sourceLinkAction) { currentTab()->openInSourceEditor(sourceLinkAction->data().value< DocumentView::SourceLink >()); } } void MainWindow::on_splitView_splitHorizontally_triggered() { on_splitView_split_triggered(Qt::Horizontal, m_tabWidget->currentIndex()); } void MainWindow::on_splitView_splitVertically_triggered() { on_splitView_split_triggered(Qt::Vertical, m_tabWidget->currentIndex()); } void MainWindow::on_splitView_split_triggered(Qt::Orientation orientation, int index) { const QString path = s_settings->mainWindow().openPath(); const QString filePath = QFileDialog::getOpenFileName(this, tr("Open"), path, DocumentView::openFilter().join(";;")); if(filePath.isEmpty()) { return; } DocumentView* const newTab = new DocumentView(this); if(!newTab->open(filePath)) { delete newTab; return; } Splitter* splitter = new Splitter(orientation, this); connect(splitter, SIGNAL(currentWidgetChanged(QWidget*)), this, SLOT(on_splitView_currentWidgetChanged(QWidget*))); QWidget* const tab = m_tabWidget->widget(index); const QString tabText = m_tabWidget->tabText(index); const QString tabToolTip = m_tabWidget->tabToolTip(index); m_tabWidget->removeTab(index); splitter->addWidget(tab); splitter->addWidget(newTab); m_tabWidget->insertTab(index, splitter, tabText); m_tabWidget->setTabToolTip(index, tabToolTip); addTabAction(newTab); connectTab(newTab); m_tabWidget->setCurrentIndex(index); tab->setFocus(); splitter->setUniformSizes(); tab->show(); newTab->show(); if(s_settings->mainWindow().synchronizeSplitViews()) { DocumentView* const oldTab = findCurrentTab(tab); connect(oldTab, SIGNAL(currentPageChanged(int,bool)), newTab, SLOT(jumpToPage(int,bool))); connect(oldTab->horizontalScrollBar(), SIGNAL(valueChanged(int)), newTab->horizontalScrollBar(), SLOT(setValue(int))); connect(oldTab->verticalScrollBar(), SIGNAL(valueChanged(int)), newTab->verticalScrollBar(), SLOT(setValue(int))); } } void MainWindow::on_splitView_closeCurrent_triggered() { on_splitView_closeCurrent_triggered(m_tabWidget->currentIndex()); } void MainWindow::on_splitView_closeCurrent_triggered(int index) { DocumentView* const tab = currentTab(index); if(saveModifications(tab)) { closeTab(tab); } } void MainWindow::on_splitView_currentWidgetChanged(QWidget* currentWidget) { for(QWidget* parentWidget = currentWidget->parentWidget(); parentWidget != 0; parentWidget = parentWidget->parentWidget()) { if(parentWidget == m_tabWidget->currentWidget()) { on_tabWidget_currentChanged(); return; } } } #undef ONLY_IF_SENDER_IS_CURRENT_TAB void MainWindow::on_currentPage_editingFinished() { if(m_tabWidget->hasCurrent()) { currentTab()->jumpToPage(m_currentPageSpinBox->value()); } } void MainWindow::on_currentPage_returnPressed() { currentTab()->setFocus(); } void MainWindow::on_scaleFactor_activated(int index) { if(index == 0) { currentTab()->setScaleMode(FitToPageWidthMode); } else if(index == 1) { currentTab()->setScaleMode(FitToPageSizeMode); } else { bool ok = false; const qreal scaleFactor = m_scaleFactorComboBox->itemData(index).toReal(&ok); if(ok) { currentTab()->setScaleFactor(scaleFactor); currentTab()->setScaleMode(ScaleFactorMode); } } currentTab()->setFocus(); } void MainWindow::on_scaleFactor_editingFinished() { if(m_tabWidget->hasCurrent()) { bool ok = false; qreal scaleFactor = m_scaleFactorComboBox->lineEdit()->text().toInt(&ok) / 100.0; scaleFactor = qMax(scaleFactor, s_settings->documentView().minimumScaleFactor()); scaleFactor = qMin(scaleFactor, s_settings->documentView().maximumScaleFactor()); if(ok) { currentTab()->setScaleFactor(scaleFactor); currentTab()->setScaleMode(ScaleFactorMode); } on_currentTab_scaleFactorChanged(currentTab()->scaleFactor()); on_currentTab_scaleModeChanged(currentTab()->scaleMode()); } } void MainWindow::on_scaleFactor_returnPressed() { currentTab()->setFocus(); } void MainWindow::on_open_triggered() { if(m_tabWidget->hasCurrent()) { const QString path = s_settings->mainWindow().openPath(); const QString filePath = QFileDialog::getOpenFileName(this, tr("Open"), path, DocumentView::openFilter().join(";;")); if(!filePath.isEmpty()) { open(filePath); } } else { on_openInNewTab_triggered(); } } void MainWindow::on_openInNewTab_triggered() { const QString path = s_settings->mainWindow().openPath(); const QStringList filePaths = QFileDialog::getOpenFileNames(this, tr("Open in new tab"), path, DocumentView::openFilter().join(";;")); if(!filePaths.isEmpty()) { CurrentTabChangeBlocker currentTabChangeBlocker(this); foreach(const QString& filePath, filePaths) { openInNewTab(filePath); } } } void MainWindow::on_openCopyInNewTab_triggered() { on_openCopyInNewTab_triggered(currentTab()); } void MainWindow::on_openCopyInNewTab_triggered(const DocumentView* tab) { openInNewTab(tab->fileInfo().filePath(), tab->currentPage()); } void MainWindow::on_openCopyInNewWindow_triggered() { on_openCopyInNewWindow_triggered(currentTab()); } void MainWindow::on_openCopyInNewWindow_triggered(const DocumentView* tab) { openInNewWindow(tab->fileInfo().absoluteFilePath(), tab->currentPage()); } void MainWindow::on_openContainingFolder_triggered() { on_openContainingFolder_triggered(currentTab()); } void MainWindow::on_openContainingFolder_triggered(const DocumentView* tab) { QDesktopServices::openUrl(QUrl::fromLocalFile(tab->fileInfo().absolutePath())); } void MainWindow::on_moveToInstance_triggered() { on_moveToInstance_triggered(currentTab()); } void MainWindow::on_moveToInstance_triggered(DocumentView* tab) { #ifdef WITH_DBUS bool ok = false; const QString instanceName = QInputDialog::getItem(this, tr("Choose instance"), tr("Instance:"), s_database->knownInstanceNames(), 0, true, &ok); if(!ok || instanceName == qApp->objectName()) { return; } if(!saveModifications(tab)) { return; } QScopedPointer< QDBusInterface > interface(MainWindowAdaptor::createInterface(instanceName)); if(!interface->isValid()) { QMessageBox::warning(this, tr("Move to instance"), tr("Failed to access instance '%1'.").arg(instanceName)); qCritical() << QDBusConnection::sessionBus().lastError().message(); return; } interface->call("raiseAndActivate"); QDBusReply< bool > reply = interface->call("jumpToPageOrOpenInNewTab", tab->fileInfo().absoluteFilePath(), tab->currentPage(), true, QRectF(), false); if(!reply.isValid() || !reply.value()) { QMessageBox::warning(this, tr("Move to instance"), tr("Failed to access instance '%1'.").arg(instanceName)); qCritical() << QDBusConnection::sessionBus().lastError().message(); return; } interface->call("saveDatabase"); closeTab(tab); #else Q_UNUSED(tab); QMessageBox::information(this, tr("Information"), tr("Instance-to-instance communication requires D-Bus support.")); #endif // WITH_DBUS } void MainWindow::on_refresh_triggered() { DocumentView* const tab = currentTab(); if(saveModifications(tab) && !tab->refresh()) { QMessageBox::warning(this, tr("Warning"), tr("Could not refresh '%1'.").arg(currentTab()->fileInfo().filePath())); } } void MainWindow::on_save_triggered() { DocumentView* const tab = currentTab(); const QString filePath = tab->fileInfo().filePath(); if(!tab->save(filePath, true)) { QMessageBox::warning(this, tr("Warning"), tr("Could not save as '%1'.").arg(filePath)); return; } if(!tab->refresh()) { QMessageBox::warning(this, tr("Warning"), tr("Could not refresh '%1'.").arg(filePath)); } } void MainWindow::on_saveAs_triggered() { DocumentView* const tab = currentTab(); const QString filePath = QFileDialog::getSaveFileName(this, tr("Save as"), tab->fileInfo().filePath(), tab->saveFilter().join(";;")); if(filePath.isEmpty()) { return; } if(!tab->save(filePath, true)) { QMessageBox::warning(this, tr("Warning"), tr("Could not save as '%1'.").arg(filePath)); return; } open(filePath, tab->currentPage()); } void MainWindow::on_saveCopy_triggered() { const QDir dir = QDir(s_settings->mainWindow().savePath()); const QString filePath = QFileDialog::getSaveFileName(this, tr("Save copy"), dir.filePath(currentTab()->fileInfo().fileName()), currentTab()->saveFilter().join(";;")); if(!filePath.isEmpty()) { if(currentTab()->save(filePath, false)) { s_settings->mainWindow().setSavePath(QFileInfo(filePath).absolutePath()); } else { QMessageBox::warning(this, tr("Warning"), tr("Could not save copy at '%1'.").arg(filePath)); } } } void MainWindow::on_print_triggered() { QScopedPointer< QPrinter > printer(PrintDialog::createPrinter()); QScopedPointer< PrintDialog > printDialog(new PrintDialog(printer.data(), this)); printer->setDocName(currentTab()->fileInfo().completeBaseName()); printer->setFullPage(true); printDialog->setMinMax(1, currentTab()->numberOfPages()); printDialog->setOption(QPrintDialog::PrintToFile, false); #if QT_VERSION >= QT_VERSION_CHECK(4,7,0) printDialog->setOption(QPrintDialog::PrintCurrentPage, true); #endif // QT_VERSION if(printDialog->exec() != QDialog::Accepted) { return; } #if QT_VERSION >= QT_VERSION_CHECK(4,7,0) if(printDialog->printRange() == QPrintDialog::CurrentPage) { printer->setFromTo(currentTab()->currentPage(), currentTab()->currentPage()); } #endif // QT_VERSION if(!currentTab()->print(printer.data(), printDialog->printOptions())) { QMessageBox::warning(this, tr("Warning"), tr("Could not print '%1'.").arg(currentTab()->fileInfo().filePath())); } } void MainWindow::on_recentlyUsed_openTriggered(const QString& filePath) { if(!jumpToPageOrOpenInNewTab(filePath, -1, true)) { m_recentlyUsedMenu->removeOpenAction(filePath); } } void MainWindow::on_previousPage_triggered() { currentTab()->previousPage(); } void MainWindow::on_nextPage_triggered() { currentTab()->nextPage(); } void MainWindow::on_firstPage_triggered() { currentTab()->firstPage(); } void MainWindow::on_lastPage_triggered() { currentTab()->lastPage(); } void MainWindow::on_setFirstPage_triggered() { bool ok = false; const int pageNumber = getMappedNumber(new TextValueMapper(this), this, tr("Set first page"), tr("Select the first page of the body matter:"), currentTab()->currentPage(), 1, currentTab()->numberOfPages(), &ok); if(ok) { currentTab()->setFirstPage(pageNumber); } } void MainWindow::on_jumpToPage_triggered() { bool ok = false; const int pageNumber = getMappedNumber(new TextValueMapper(this), this, tr("Jump to page"), tr("Page:"), currentTab()->currentPage(), 1, currentTab()->numberOfPages(), &ok); if(ok) { currentTab()->jumpToPage(pageNumber); } } void MainWindow::on_jumpBackward_triggered() { currentTab()->jumpBackward(); } void MainWindow::on_jumpForward_triggered() { currentTab()->jumpForward(); } void MainWindow::on_search_triggered() { m_searchDock->setVisible(true); m_searchDock->raise(); m_searchLineEdit->selectAll(); m_searchLineEdit->setFocus(); } void MainWindow::on_findPrevious_triggered() { if(!m_searchLineEdit->text().isEmpty()) { currentTab()->findPrevious(); } } void MainWindow::on_findNext_triggered() { if(!m_searchLineEdit->text().isEmpty()) { currentTab()->findNext(); } } void MainWindow::on_cancelSearch_triggered() { m_searchLineEdit->stopTimer(); m_searchLineEdit->setProgress(0); foreach(DocumentView* tab, allTabs()) { tab->cancelSearch(); } if(!s_settings->mainWindow().extendedSearchDock()) { m_searchDock->setVisible(false); } } void MainWindow::on_copyToClipboardMode_triggered(bool checked) { currentTab()->setRubberBandMode(checked ? CopyToClipboardMode : ModifiersMode); } void MainWindow::on_addAnnotationMode_triggered(bool checked) { currentTab()->setRubberBandMode(checked ? AddAnnotationMode : ModifiersMode); } void MainWindow::on_settings_triggered() { QScopedPointer< SettingsDialog > settingsDialog(new SettingsDialog(this)); if(settingsDialog->exec() != QDialog::Accepted) { return; } s_settings->sync(); m_tabWidget->setTabPosition(static_cast< QTabWidget::TabPosition >(s_settings->mainWindow().tabPosition())); m_tabWidget->setTabBarPolicy(static_cast< TabWidget::TabBarPolicy >(s_settings->mainWindow().tabVisibility())); m_tabWidget->setSpreadTabs(s_settings->mainWindow().spreadTabs()); m_tabsMenu->setSearchable(s_settings->mainWindow().searchableMenus()); m_bookmarksMenu->setSearchable(s_settings->mainWindow().searchableMenus()); foreach(DocumentView* tab, allTabs()) { if(saveModifications(tab) && !tab->refresh()) { QMessageBox::warning(this, tr("Warning"), tr("Could not refresh '%1'.").arg(currentTab()->fileInfo().filePath())); } } } void MainWindow::on_continuousMode_triggered(bool checked) { currentTab()->setContinuousMode(checked); } void MainWindow::on_twoPagesMode_triggered(bool checked) { currentTab()->setLayoutMode(checked ? TwoPagesMode : SinglePageMode); } void MainWindow::on_twoPagesWithCoverPageMode_triggered(bool checked) { currentTab()->setLayoutMode(checked ? TwoPagesWithCoverPageMode : SinglePageMode); } void MainWindow::on_multiplePagesMode_triggered(bool checked) { currentTab()->setLayoutMode(checked ? MultiplePagesMode : SinglePageMode); } void MainWindow::on_rightToLeftMode_triggered(bool checked) { currentTab()->setRightToLeftMode(checked); } void MainWindow::on_zoomIn_triggered() { currentTab()->zoomIn(); } void MainWindow::on_zoomOut_triggered() { currentTab()->zoomOut(); } void MainWindow::on_originalSize_triggered() { currentTab()->originalSize(); } void MainWindow::on_fitToPageWidthMode_triggered(bool checked) { currentTab()->setScaleMode(checked ? FitToPageWidthMode : ScaleFactorMode); } void MainWindow::on_fitToPageSizeMode_triggered(bool checked) { currentTab()->setScaleMode(checked ? FitToPageSizeMode : ScaleFactorMode); } void MainWindow::on_rotateLeft_triggered() { currentTab()->rotateLeft(); } void MainWindow::on_rotateRight_triggered() { currentTab()->rotateRight(); } void MainWindow::on_invertColors_triggered(bool checked) { currentTab()->setInvertColors(checked); } void MainWindow::on_convertToGrayscale_triggered(bool checked) { currentTab()->setConvertToGrayscale(checked); } void MainWindow::on_trimMargins_triggered(bool checked) { currentTab()->setTrimMargins(checked); } void MainWindow::on_darkenWithPaperColor_triggered(bool checked) { currentTab()->setCompositionMode(checked ? DarkenWithPaperColorMode : DefaultCompositionMode); } void MainWindow::on_lightenWithPaperColor_triggered(bool checked) { currentTab()->setCompositionMode(checked ? LightenWithPaperColorMode : DefaultCompositionMode); } void MainWindow::on_fonts_triggered() { QScopedPointer< QAbstractItemModel > fontsModel(currentTab()->fontsModel()); QScopedPointer< FontsDialog > dialog(new FontsDialog(fontsModel.data(), this)); dialog->exec(); } void MainWindow::on_fullscreen_triggered(bool checked) { if(checked) { m_fullscreenAction->setData(saveGeometry()); showFullScreen(); } else { restoreGeometry(m_fullscreenAction->data().toByteArray()); showNormal(); restoreGeometry(m_fullscreenAction->data().toByteArray()); } if(s_settings->mainWindow().toggleToolAndMenuBarsWithFullscreen()) { m_toggleToolBarsAction->trigger(); m_toggleMenuBarAction->trigger(); } } void MainWindow::on_presentation_triggered() { currentTab()->startPresentation(); } void MainWindow::on_previousTab_triggered() { m_tabWidget->previousTab(); } void MainWindow::on_nextTab_triggered() { m_tabWidget->nextTab(); } void MainWindow::on_closeTab_triggered() { on_closeTabs_triggered(allTabs(m_tabWidget->currentIndex())); } void MainWindow::on_closeAllTabs_triggered() { on_closeTabs_triggered(allTabs()); } void MainWindow::on_closeAllTabsButCurrentTab_triggered() { on_closeAllTabsButThisOne_triggered(m_tabWidget->currentIndex()); } void MainWindow::on_closeAllTabsButThisOne_triggered(int thisIndex) { QVector< DocumentView* > tabs; for(int index = 0, count = m_tabWidget->count(); index < count; ++index) { if(index != thisIndex) { tabs += allTabs(index); } } on_closeTabs_triggered(tabs); } void MainWindow::on_closeAllTabsToTheLeft_triggered(int ofIndex) { QVector< DocumentView* > tabs; for(int index = 0; index < ofIndex; ++index) { tabs += allTabs(index); } on_closeTabs_triggered(tabs); } void MainWindow::on_closeAllTabsToTheRight_triggered(int ofIndex) { QVector< DocumentView* > tabs; for(int index = ofIndex + 1, count = m_tabWidget->count(); index < count; ++index) { tabs += allTabs(index); } on_closeTabs_triggered(tabs); } void MainWindow::on_closeTabs_triggered(const QVector< DocumentView* >& tabs) { CurrentTabChangeBlocker currentTabChangeBlocker(this); foreach(DocumentView* tab, tabs) { if(saveModifications(tab)) { closeTab(tab); } } } void MainWindow::on_restoreMostRecentlyClosedTab_triggered() { m_recentlyClosedMenu->triggerLastTabAction(); } void MainWindow::on_recentlyClosed_tabActionTriggered(QAction* tabAction) { DocumentView* tab = static_cast< DocumentView* >(tabAction->parent()); tab->setParent(m_tabWidget); tab->setVisible(true); addTab(tab); m_tabsMenu->addAction(tabAction); } void MainWindow::on_tabAction_triggered() { DocumentView* const senderTab = static_cast< DocumentView* >(sender()->parent()); for(int index = 0, count = m_tabWidget->count(); index < count; ++index) { if(allTabs(index).contains(senderTab)) { m_tabWidget->setCurrentIndex(index); senderTab->setFocus(); break; } } } void MainWindow::on_tabShortcut_activated() { for(int index = 0; index < 9; ++index) { if(sender() == m_tabShortcuts[index]) { m_tabWidget->setCurrentIndex(index); break; } } } void MainWindow::on_previousBookmark_triggered() { if(const BookmarkModel* model = bookmarkModelForCurrentTab()) { QList< int > pages; for(int row = 0, rowCount = model->rowCount(); row < rowCount; ++row) { pages.append(model->index(row).data(BookmarkModel::PageRole).toInt()); } if(!pages.isEmpty()) { qSort(pages); QList< int >::const_iterator lowerBound = --qLowerBound(pages, currentTab()->currentPage()); if(lowerBound >= pages.constBegin()) { currentTab()->jumpToPage(*lowerBound); } else { currentTab()->jumpToPage(pages.last()); } } } } void MainWindow::on_nextBookmark_triggered() { if(const BookmarkModel* model = bookmarkModelForCurrentTab()) { QList< int > pages; for(int row = 0, rowCount = model->rowCount(); row < rowCount; ++row) { pages.append(model->index(row).data(BookmarkModel::PageRole).toInt()); } if(!pages.isEmpty()) { qSort(pages); QList< int >::const_iterator upperBound = qUpperBound(pages, currentTab()->currentPage()); if(upperBound < pages.constEnd()) { currentTab()->jumpToPage(*upperBound); } else { currentTab()->jumpToPage(pages.first()); } } } } void MainWindow::on_addBookmark_triggered() { const QString& currentPageLabel = s_settings->mainWindow().usePageLabel() || currentTab()->hasFrontMatter() ? currentTab()->pageLabelFromNumber(currentTab()->currentPage()) : currentTab()->defaultPageLabelFromNumber(currentTab()->currentPage()); BookmarkItem bookmark(currentTab()->currentPage(), tr("Jump to page %1").arg(currentPageLabel)); BookmarkModel* model = bookmarkModelForCurrentTab(false); if(model != 0) { model->findBookmark(bookmark); } QScopedPointer< BookmarkDialog > dialog(new BookmarkDialog(bookmark, this)); if(dialog->exec() == QDialog::Accepted) { if(model == 0) { model = bookmarkModelForCurrentTab(true); m_bookmarksView->setModel(model); } model->addBookmark(bookmark); m_bookmarksMenuIsDirty = true; scheduleSaveBookmarks(); } } void MainWindow::on_removeBookmark_triggered() { BookmarkModel* model = bookmarkModelForCurrentTab(); if(model != 0) { model->removeBookmark(BookmarkItem(currentTab()->currentPage())); if(model->isEmpty()) { m_bookmarksView->setModel(0); BookmarkModel::removePath(currentTab()->fileInfo().absoluteFilePath()); } m_bookmarksMenuIsDirty = true; scheduleSaveBookmarks(); } } void MainWindow::on_removeAllBookmarks_triggered() { m_bookmarksView->setModel(0); BookmarkModel::removeAllPaths(); m_bookmarksMenuIsDirty = true; scheduleSaveBookmarks(); } void MainWindow::on_bookmarksMenu_aboutToShow() { if(!m_bookmarksMenuIsDirty) { return; } m_bookmarksMenuIsDirty = false; m_bookmarksMenu->clear(); m_bookmarksMenu->addActions(QList< QAction* >() << m_previousBookmarkAction << m_nextBookmarkAction); m_bookmarksMenu->addSeparator(); m_bookmarksMenu->addActions(QList< QAction* >() << m_addBookmarkAction << m_removeBookmarkAction << m_removeAllBookmarksAction); m_bookmarksMenu->addSeparator(); foreach(const QString& absoluteFilePath, BookmarkModel::paths()) { const BookmarkModel* model = BookmarkModel::fromPath(absoluteFilePath); BookmarkMenu* menu = new BookmarkMenu(QFileInfo(absoluteFilePath), m_bookmarksMenu); for(int row = 0, rowCount = model->rowCount(); row < rowCount; ++row) { const QModelIndex index = model->index(row); menu->addJumpToPageAction(index.data(BookmarkModel::PageRole).toInt(), index.data(BookmarkModel::LabelRole).toString()); } connect(menu, SIGNAL(openTriggered(QString)), SLOT(on_bookmark_openTriggered(QString))); connect(menu, SIGNAL(openInNewTabTriggered(QString)), SLOT(on_bookmark_openInNewTabTriggered(QString))); connect(menu, SIGNAL(jumpToPageTriggered(QString,int)), SLOT(on_bookmark_jumpToPageTriggered(QString,int))); connect(menu, SIGNAL(removeBookmarkTriggered(QString)), SLOT(on_bookmark_removeBookmarkTriggered(QString))); m_bookmarksMenu->addMenu(menu); } } void MainWindow::on_bookmark_openTriggered(const QString& absoluteFilePath) { if(m_tabWidget->hasCurrent()) { open(absoluteFilePath); } else { openInNewTab(absoluteFilePath); } } void MainWindow::on_bookmark_openInNewTabTriggered(const QString& absoluteFilePath) { openInNewTab(absoluteFilePath); } void MainWindow::on_bookmark_jumpToPageTriggered(const QString& absoluteFilePath, int page) { jumpToPageOrOpenInNewTab(absoluteFilePath, page); } void MainWindow::on_bookmark_removeBookmarkTriggered(const QString& absoluteFilePath) { BookmarkModel* model = BookmarkModel::fromPath(absoluteFilePath); if(model == m_bookmarksView->model()) { m_bookmarksView->setModel(0); } BookmarkModel::removePath(absoluteFilePath); m_bookmarksMenuIsDirty = true; scheduleSaveBookmarks(); } void MainWindow::on_contents_triggered() { if(m_helpDialog.isNull()) { m_helpDialog = new HelpDialog(); m_helpDialog->show(); m_helpDialog->setAttribute(Qt::WA_DeleteOnClose); connect(this, SIGNAL(destroyed()), m_helpDialog, SLOT(close())); } m_helpDialog->raise(); m_helpDialog->activateWindow(); } void MainWindow::on_about_triggered() { QMessageBox::about(this, tr("About qpdfview"), (tr("

qpdfview %1

qpdfview is a tabbed document viewer using Qt.

" "

This version includes:" "

    ").arg(APPLICATION_VERSION) #ifdef WITH_PDF + tr("
  • PDF support using Poppler %1
  • ").arg(POPPLER_VERSION) #endif // WITH_PDF #ifdef WITH_PS + tr("
  • PS support using libspectre %1
  • ").arg(LIBSPECTRE_VERSION) #endif // WITH_PS #ifdef WITH_DJVU + tr("
  • DjVu support using DjVuLibre %1
  • ").arg(DJVULIBRE_VERSION) #endif // WITH_DJVU #ifdef WITH_FITZ + tr("
  • PDF support using Fitz %1
  • ").arg(FITZ_VERSION) #endif // WITH_FITZ #ifdef WITH_CUPS + tr("
  • Printing support using CUPS %1
  • ").arg(CUPS_VERSION) #endif // WITH_CUPS + tr("
" "

See launchpad.net/qpdfview for more information.

" "

© %1 The qpdfview developers

").arg("2012-2018"))); } void MainWindow::on_focusCurrentPage_activated() { m_currentPageSpinBox->setFocus(); m_currentPageSpinBox->selectAll(); } void MainWindow::on_focusScaleFactor_activated() { m_scaleFactorComboBox->setFocus(); m_scaleFactorComboBox->lineEdit()->selectAll(); } void MainWindow::on_toggleToolBars_triggered(bool checked) { if(checked) { m_tabWidget->setTabBarPolicy(static_cast< TabWidget::TabBarPolicy >(m_tabBarHadPolicy)); m_fileToolBar->setVisible(m_fileToolBarWasVisible); m_editToolBar->setVisible(m_editToolBarWasVisible); m_viewToolBar->setVisible(m_viewToolBarWasVisible); } else { m_tabBarHadPolicy = static_cast< int >(m_tabWidget->tabBarPolicy()); m_fileToolBarWasVisible = m_fileToolBar->isVisible(); m_editToolBarWasVisible = m_editToolBar->isVisible(); m_viewToolBarWasVisible = m_viewToolBar->isVisible(); m_tabWidget->setTabBarPolicy(TabWidget::TabBarAlwaysOff); m_fileToolBar->setVisible(false); m_editToolBar->setVisible(false); m_viewToolBar->setVisible(false); } } void MainWindow::on_toggleMenuBar_triggered(bool checked) { menuBar()->setVisible(checked); } void MainWindow::on_searchInitiated(const QString& text, bool modified) { if(text.isEmpty()) { return; } const bool forAllTabs = s_settings->mainWindow().extendedSearchDock() ? !modified : modified; const bool matchCase = m_matchCaseCheckBox->isChecked(); const bool wholeWords = m_wholeWordsCheckBox->isChecked(); if(forAllTabs) { foreach(DocumentView* tab, allTabs()) { tab->startSearch(text, matchCase, wholeWords); } } else { DocumentView* const tab = currentTab(); if(tab->searchText() != text || tab->searchWasCanceled()) { tab->startSearch(text, matchCase, wholeWords); } else { tab->findNext(); } } } void MainWindow::on_highlightAll_clicked(bool checked) { currentTab()->setHighlightAll(checked); } void MainWindow::on_dock_dockLocationChanged(Qt::DockWidgetArea area) { QDockWidget* dock = qobject_cast< QDockWidget* >(sender()); if(dock == 0) { return; } QDockWidget::DockWidgetFeatures features = dock->features(); if(area == Qt::TopDockWidgetArea || area == Qt::BottomDockWidgetArea) { features |= QDockWidget::DockWidgetVerticalTitleBar; } else { features &= ~QDockWidget::DockWidgetVerticalTitleBar; } dock->setFeatures(features); } void MainWindow::on_outline_sectionCountChanged() { setSectionResizeMode(m_outlineView->header(), 0, QHeaderView::Stretch); setSectionResizeMode(m_outlineView->header(), 1, QHeaderView::ResizeToContents); m_outlineView->header()->setMinimumSectionSize(0); m_outlineView->header()->setStretchLastSection(false); m_outlineView->header()->setVisible(false); } void MainWindow::on_outline_clicked(const QModelIndex& index) { bool ok = false; const int page = index.data(Model::Document::PageRole).toInt(&ok); if(!ok) { return; } const qreal left = index.data(Model::Document::LeftRole).toReal(); const qreal top = index.data(Model::Document::TopRole).toReal(); const QString fileName = index.data(Model::Document::FileNameRole).toString(); if(fileName.isEmpty()) { currentTab()->jumpToPage(page, true, left, top); } else { jumpToPageOrOpenInNewTab(currentTab()->resolveFileName(fileName), page, true); } } void MainWindow::on_properties_sectionCountChanged() { setSectionResizeMode(m_propertiesView->horizontalHeader(), 0, QHeaderView::Stretch); setSectionResizeMode(m_propertiesView->horizontalHeader(), 1, QHeaderView::Stretch); m_propertiesView->horizontalHeader()->setVisible(false); setSectionResizeMode(m_propertiesView->verticalHeader(), QHeaderView::ResizeToContents); m_propertiesView->verticalHeader()->setVisible(false); } void MainWindow::on_thumbnails_dockLocationChanged(Qt::DockWidgetArea area) { foreach(DocumentView* tab, allTabs()) { tab->setThumbnailsOrientation(area == Qt::TopDockWidgetArea || area == Qt::BottomDockWidgetArea ? Qt::Horizontal : Qt::Vertical); } } void MainWindow::on_thumbnails_verticalScrollBar_valueChanged(int value) { Q_UNUSED(value); if(m_thumbnailsView->scene() != 0) { const QRectF visibleRect = m_thumbnailsView->mapToScene(m_thumbnailsView->viewport()->rect()).boundingRect(); foreach(ThumbnailItem* page, currentTab()->thumbnailItems()) { if(!page->boundingRect().translated(page->pos()).intersects(visibleRect)) { page->cancelRender(); } } } } void MainWindow::on_bookmarks_sectionCountChanged() { setSectionResizeMode(m_bookmarksView->horizontalHeader(), 0, QHeaderView::Stretch); setSectionResizeMode(m_bookmarksView->horizontalHeader(), 1, QHeaderView::ResizeToContents); m_bookmarksView->horizontalHeader()->setMinimumSectionSize(0); m_bookmarksView->horizontalHeader()->setStretchLastSection(false); m_bookmarksView->horizontalHeader()->setVisible(false); setSectionResizeMode(m_bookmarksView->verticalHeader(), QHeaderView::ResizeToContents); m_bookmarksView->verticalHeader()->setVisible(false); } void MainWindow::on_bookmarks_clicked(const QModelIndex& index) { bool ok = false; const int page = index.data(BookmarkModel::PageRole).toInt(&ok); if(ok) { currentTab()->jumpToPage(page); } } void MainWindow::on_bookmarks_contextMenuRequested(QPoint pos) { QMenu menu; menu.addActions(QList< QAction* >() << m_previousBookmarkAction << m_nextBookmarkAction); menu.addSeparator(); menu.addAction(m_addBookmarkAction); QAction* removeBookmarkAction = menu.addAction(tr("&Remove bookmark")); QAction* editBookmarkAction = menu.addAction(tr("&Edit bookmark")); const QModelIndex index = m_bookmarksView->indexAt(pos); removeBookmarkAction->setVisible(index.isValid()); editBookmarkAction->setVisible(index.isValid()); const QAction* action = menu.exec(m_bookmarksView->mapToGlobal(pos)); if(action == removeBookmarkAction) { BookmarkModel* model = qobject_cast< BookmarkModel* >(m_bookmarksView->model()); if(model != 0) { model->removeBookmark(BookmarkItem(index.data(BookmarkModel::PageRole).toInt())); if(model->isEmpty()) { m_bookmarksView->setModel(0); BookmarkModel::removePath(currentTab()->fileInfo().absoluteFilePath()); } m_bookmarksMenuIsDirty = true; scheduleSaveBookmarks(); } } else if(action == editBookmarkAction) { BookmarkModel* model = qobject_cast< BookmarkModel* >(m_bookmarksView->model()); if(model != 0) { BookmarkItem bookmark(index.data(BookmarkModel::PageRole).toInt()); model->findBookmark(bookmark); QScopedPointer< BookmarkDialog > dialog(new BookmarkDialog(bookmark, this)); if(dialog->exec() == QDialog::Accepted) { model->addBookmark(bookmark); m_bookmarksMenuIsDirty = true; scheduleSaveBookmarks(); } } } } void MainWindow::on_search_sectionCountChanged() { setSectionResizeMode(m_searchView->header(), 0, QHeaderView::Stretch); setSectionResizeMode(m_searchView->header(), 1, QHeaderView::ResizeToContents); m_searchView->header()->setMinimumSectionSize(0); m_searchView->header()->setStretchLastSection(false); m_searchView->header()->setVisible(false); } void MainWindow::on_search_dockLocationChanged(Qt::DockWidgetArea area) { delete m_searchWidget->layout(); QGridLayout* searchLayout = new QGridLayout(m_searchWidget); if(area == Qt::TopDockWidgetArea || area == Qt::BottomDockWidgetArea) { searchLayout->setRowStretch(2, 1); searchLayout->setColumnStretch(3, 1); searchLayout->addWidget(m_searchLineEdit, 0, 0, 1, 7); searchLayout->addWidget(m_matchCaseCheckBox, 1, 0); searchLayout->addWidget(m_wholeWordsCheckBox, 1, 1); searchLayout->addWidget(m_highlightAllCheckBox, 1, 2); searchLayout->addWidget(m_findPreviousButton, 1, 4, Qt::AlignRight); searchLayout->addWidget(m_findNextButton, 1, 5, Qt::AlignRight); searchLayout->addWidget(m_cancelSearchButton, 1, 6, Qt::AlignRight); if(s_settings->mainWindow().extendedSearchDock()) { searchLayout->addWidget(m_searchView, 2, 0, 1, 7); } } else { searchLayout->setRowStretch(4, 1); searchLayout->setColumnStretch(1, 1); searchLayout->addWidget(m_searchLineEdit, 0, 0, 1, 5); searchLayout->addWidget(m_matchCaseCheckBox, 1, 0); searchLayout->addWidget(m_wholeWordsCheckBox, 2, 0); searchLayout->addWidget(m_highlightAllCheckBox, 3, 0); searchLayout->addWidget(m_findPreviousButton, 1, 2, 3, 1, Qt::AlignTop); searchLayout->addWidget(m_findNextButton, 1, 3, 3, 1, Qt::AlignTop); searchLayout->addWidget(m_cancelSearchButton, 1, 4, 3, 1, Qt::AlignTop); if(s_settings->mainWindow().extendedSearchDock()) { searchLayout->addWidget(m_searchView, 4, 0, 1, 5); } } } void MainWindow::on_search_visibilityChanged(bool visible) { if(!visible) { m_searchLineEdit->stopTimer(); m_searchLineEdit->setProgress(0); foreach(DocumentView* tab, allTabs()) { tab->cancelSearch(); tab->clearResults(); } if(DocumentView* tab = currentTab()) { tab->setFocus(); } } } void MainWindow::on_search_clicked(const QModelIndex& clickedIndex) { DocumentView* const clickedTab = SearchModel::instance()->viewForIndex(clickedIndex); for(int index = 0, count = m_tabWidget->count(); index < count; ++index) { foreach(DocumentView* tab, allTabs(index)) { if(tab == clickedTab) { m_tabWidget->setCurrentIndex(index); tab->setFocus(); clickedTab->findResult(clickedIndex); return; } } } } void MainWindow::on_search_rowsInserted(const QModelIndex& parent, int first, int last) { if(parent.isValid()) { return; } for(int row = first; row <= last; ++row) { const QModelIndex index = s_searchModel->index(row, 0, parent); if(!m_searchView->isExpanded(index) && s_searchModel->viewForIndex(index) == currentTab()) { m_searchView->expand(index); } } } void MainWindow::on_saveDatabase_timeout() { if(s_settings->mainWindow().restoreTabs()) { s_database->saveTabs(allTabs()); s_settings->mainWindow().setCurrentTabIndex(m_tabWidget->currentIndex()); } if(s_settings->mainWindow().restoreBookmarks()) { s_database->saveBookmarks(); } if(s_settings->mainWindow().restorePerFileSettings()) { foreach(DocumentView* tab, allTabs()) { s_database->savePerFileSettings(tab); } } } bool MainWindow::eventFilter(QObject* target, QEvent* event) { // This event filter is used to override any keyboard shortcuts if the outline widget has the focus. if(target == m_outlineView && event->type() == QEvent::ShortcutOverride) { QKeyEvent* keyEvent = static_cast< QKeyEvent* >(event); const bool modifiers = keyEvent->modifiers().testFlag(Qt::ControlModifier) || keyEvent->modifiers().testFlag(Qt::ShiftModifier); const bool keys = keyEvent->key() == Qt::Key_Right || keyEvent->key() == Qt::Key_Left || keyEvent->key() == Qt::Key_Up || keyEvent->key() == Qt::Key_Down; if(modifiers && keys) { keyEvent->accept(); return true; } } // This event filter is used to fit the thumbnails into the thumbnails view if this is enabled in the settings. else if(target == m_thumbnailsView && (event->type() == QEvent::Resize || event->type() == QEvent::Show)) { if(DocumentView* tab = currentTab()) { tab->setThumbnailsViewportSize(m_thumbnailsView->viewport()->size()); } } return QMainWindow::eventFilter(target, event); } void MainWindow::closeEvent(QCloseEvent* event) { m_searchDock->setVisible(false); for(int index = 0, count = m_tabWidget->count(); index < count; ++index) { foreach(DocumentView* tab, allTabs(index)) { if(!saveModifications(tab)) { m_tabWidget->setCurrentIndex(index); tab->setFocus(); event->setAccepted(false); return; } } } if(s_settings->mainWindow().restoreTabs()) { s_database->saveTabs(allTabs()); s_settings->mainWindow().setCurrentTabIndex(m_tabWidget->currentIndex()); } else { s_database->clearTabs(); } if(s_settings->mainWindow().restoreBookmarks()) { s_database->saveBookmarks(); } else { s_database->clearBookmarks(); } s_settings->mainWindow().setRecentlyUsed(s_settings->mainWindow().trackRecentlyUsed() ? m_recentlyUsedMenu->filePaths() : QStringList()); s_settings->documentView().setMatchCase(m_matchCaseCheckBox->isChecked()); s_settings->documentView().setWholeWords(m_wholeWordsCheckBox->isChecked()); s_settings->mainWindow().setGeometry(m_fullscreenAction->isChecked() ? m_fullscreenAction->data().toByteArray() : saveGeometry()); s_settings->mainWindow().setState(saveState()); QMainWindow::closeEvent(event); } void MainWindow::dragEnterEvent(QDragEnterEvent* event) { if(event->mimeData()->hasUrls()) { event->acceptProposedAction(); } } void MainWindow::dropEvent(QDropEvent* event) { if(event->mimeData()->hasUrls()) { event->acceptProposedAction(); CurrentTabChangeBlocker currentTabChangeBlocker(this); foreach(const QUrl& url, event->mimeData()->urls()) { #if QT_VERSION >= QT_VERSION_CHECK(4,8,0) if(url.isLocalFile()) #else if(url.scheme() == "file") #endif // QT_VERSION { openInNewTab(url.toLocalFile()); } } } } void MainWindow::prepareStyle() { if(s_settings->mainWindow().hasIconTheme()) { QIcon::setThemeName(s_settings->mainWindow().iconTheme()); } if(s_settings->mainWindow().hasStyleSheet()) { qApp->setStyleSheet(s_settings->mainWindow().styleSheet()); } ProxyStyle* style = new ProxyStyle(); style->setScrollableMenus(s_settings->mainWindow().scrollableMenus()); qApp->setStyle(style); } inline DocumentView* MainWindow::currentTab() const { return findCurrentTab(m_tabWidget->currentWidget()); } inline DocumentView* MainWindow::currentTab(int index) const { return findCurrentTab(m_tabWidget->widget(index)); } inline QVector< DocumentView* > MainWindow::allTabs(int index) const { return findAllTabs(m_tabWidget->widget(index)); } QVector< DocumentView* > MainWindow::allTabs() const { QVector< DocumentView* > tabs; for(int index = 0, count = m_tabWidget->count(); index < count; ++index) { tabs += allTabs(index); } return tabs; } bool MainWindow::senderIsCurrentTab() const { return sender() == currentTab() || qobject_cast< DocumentView* >(sender()) == 0; } void MainWindow::addTab(DocumentView* tab) { m_tabWidget->addTab(tab, s_settings->mainWindow().newTabNextToCurrentTab(), tab->title(), tab->fileInfo().absoluteFilePath()); } void MainWindow::addTabAction(DocumentView* tab) { QAction* tabAction = new QAction(tab->title(), tab); tabAction->setToolTip(tab->fileInfo().absoluteFilePath()); tabAction->setData(true); // Flag action for search-as-you-type connect(tabAction, SIGNAL(triggered()), SLOT(on_tabAction_triggered())); m_tabsMenu->addAction(tabAction); } void MainWindow::connectTab(DocumentView* tab) { connect(tab, SIGNAL(documentChanged()), SLOT(on_currentTab_documentChanged())); connect(tab, SIGNAL(documentModified()), SLOT(on_currentTab_documentModified())); connect(tab, SIGNAL(numberOfPagesChanged(int)), SLOT(on_currentTab_numberOfPagesChaned(int))); connect(tab, SIGNAL(currentPageChanged(int)), SLOT(on_currentTab_currentPageChanged(int))); connect(tab, SIGNAL(canJumpChanged(bool,bool)), SLOT(on_currentTab_canJumpChanged(bool,bool))); connect(tab, SIGNAL(continuousModeChanged(bool)), SLOT(on_currentTab_continuousModeChanged(bool))); connect(tab, SIGNAL(layoutModeChanged(LayoutMode)), SLOT(on_currentTab_layoutModeChanged(LayoutMode))); connect(tab, SIGNAL(rightToLeftModeChanged(bool)), SLOT(on_currentTab_rightToLeftModeChanged(bool))); connect(tab, SIGNAL(scaleModeChanged(ScaleMode)), SLOT(on_currentTab_scaleModeChanged(ScaleMode))); connect(tab, SIGNAL(scaleFactorChanged(qreal)), SLOT(on_currentTab_scaleFactorChanged(qreal))); connect(tab, SIGNAL(rotationChanged(Rotation)), SLOT(on_currentTab_rotationChanged(Rotation))); connect(tab, SIGNAL(linkClicked(int)), SLOT(on_currentTab_linkClicked(int))); connect(tab, SIGNAL(linkClicked(bool,QString,int)), SLOT(on_currentTab_linkClicked(bool,QString,int))); connect(tab, SIGNAL(renderFlagsChanged(qpdfview::RenderFlags)), SLOT(on_currentTab_renderFlagsChanged(qpdfview::RenderFlags))); connect(tab, SIGNAL(invertColorsChanged(bool)), SLOT(on_currentTab_invertColorsChanged(bool))); connect(tab, SIGNAL(convertToGrayscaleChanged(bool)), SLOT(on_currentTab_convertToGrayscaleChanged(bool))); connect(tab, SIGNAL(trimMarginsChanged(bool)), SLOT(on_currentTab_trimMarginsChanged(bool))); connect(tab, SIGNAL(compositionModeChanged(CompositionMode)), SLOT(on_currentTab_compositionModeChanged(CompositionMode))); connect(tab, SIGNAL(highlightAllChanged(bool)), SLOT(on_currentTab_highlightAllChanged(bool))); connect(tab, SIGNAL(rubberBandModeChanged(RubberBandMode)), SLOT(on_currentTab_rubberBandModeChanged(RubberBandMode))); connect(tab, SIGNAL(searchFinished()), SLOT(on_currentTab_searchFinished())); connect(tab, SIGNAL(searchProgressChanged(int)), SLOT(on_currentTab_searchProgressChanged(int))); connect(tab, SIGNAL(customContextMenuRequested(QPoint)), SLOT(on_currentTab_customContextMenuRequested(QPoint))); } void MainWindow::restorePerFileSettings(DocumentView* tab) { s_database->restorePerFileSettings(tab); if(m_outlineView->model() == tab->outlineModel()) { m_outlineView->restoreExpansion(); } } bool MainWindow::saveModifications(DocumentView* tab) { s_database->savePerFileSettings(tab); scheduleSaveTabs(); if(tab->wasModified()) { const int button = QMessageBox::warning(this, tr("Warning"), tr("The document '%1' has been modified. Do you want to save your changes?").arg(tab->fileInfo().filePath()), QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel, QMessageBox::Save); if(button == QMessageBox::Save) { if(tab->save(tab->fileInfo().filePath(), true)) { return true; } else { QMessageBox::warning(this, tr("Warning"), tr("Could not save as '%1'.").arg(tab->fileInfo().filePath())); } } else if(button == QMessageBox::Discard) { return true; } return false; } return true; } void MainWindow::closeTab(DocumentView* tab) { const int tabIndex = m_tabWidget->indexOf(tab); if(s_settings->mainWindow().keepRecentlyClosed() && tabIndex != -1) { foreach(QAction* tabAction, m_tabsMenu->actions()) { if(tabAction->parent() == tab) { m_tabsMenu->removeAction(tabAction); m_tabWidget->removeTab(tabIndex); tab->setParent(this); tab->setVisible(false); tab->clearResults(); m_recentlyClosedMenu->addTabAction(tabAction); break; } } } else { Splitter* const splitter = qobject_cast< Splitter* >(tab->parentWidget()); delete tab; if(splitter != 0) { if(splitter->count() > 0) { splitter->widget(0)->setFocus(); } else { delete splitter; } } if(s_settings->mainWindow().exitAfterLastTab() && m_tabWidget->count() == 0) { close(); } } } void MainWindow::setWindowTitleForCurrentTab() { QString tabText; QString instanceText; if(DocumentView* tab = currentTab()) { QString currentPage; if(s_settings->mainWindow().currentPageInWindowTitle()) { currentPage = QString(" (%1 / %2)").arg(tab->currentPage()).arg(tab->numberOfPages()); } tabText = m_tabWidget->currentTabText() + currentPage + QLatin1String("[*] - "); } const QString instanceName = qApp->objectName(); if(s_settings->mainWindow().instanceNameInWindowTitle() && !instanceName.isEmpty()) { instanceText = QLatin1String(" (") + instanceName + QLatin1String(")"); } setWindowTitle(tabText + QLatin1String("qpdfview") + instanceText); } void MainWindow::setCurrentPageSuffixForCurrentTab() { QString suffix; if(DocumentView* tab = currentTab()) { const int currentPage = tab->currentPage(); const int numberOfPages = tab->numberOfPages(); const QString& defaultPageLabel = tab->defaultPageLabelFromNumber(currentPage); const QString& pageLabel = tab->pageLabelFromNumber(currentPage); const QString& lastDefaultPageLabel = tab->defaultPageLabelFromNumber(numberOfPages); if((s_settings->mainWindow().usePageLabel() || tab->hasFrontMatter()) && defaultPageLabel != pageLabel) { suffix = QString(" (%1 / %2)").arg(defaultPageLabel, lastDefaultPageLabel); } else { suffix = QString(" / %1").arg(lastDefaultPageLabel); } } else { suffix = QLatin1String(" / 1"); } m_currentPageSpinBox->setSuffix(suffix); } BookmarkModel* MainWindow::bookmarkModelForCurrentTab(bool create) { return BookmarkModel::fromPath(currentTab()->fileInfo().absoluteFilePath(), create); } QAction* MainWindow::sourceLinkActionForCurrentTab(QObject* parent, QPoint pos) { QAction* action = createTemporaryAction(parent, QString(), QLatin1String("openSourceLink")); if(const DocumentView::SourceLink sourceLink = currentTab()->sourceLink(pos)) { const QString fileName = QFileInfo(sourceLink.name).fileName(); action->setText(tr("Edit '%1' at %2,%3...").arg(fileName).arg(sourceLink.line).arg(sourceLink.column)); action->setData(QVariant::fromValue(sourceLink)); } else { action->setVisible(false); } return action; } void MainWindow::prepareDatabase() { if(s_database == 0) { s_database = Database::instance(); } m_saveDatabaseTimer = new QTimer(this); m_saveDatabaseTimer->setSingleShot(true); connect(m_saveDatabaseTimer, SIGNAL(timeout()), SLOT(on_saveDatabase_timeout())); } void MainWindow::scheduleSaveDatabase() { const int interval = s_settings->mainWindow().saveDatabaseInterval(); if(!m_saveDatabaseTimer->isActive() && interval >= 0) { m_saveDatabaseTimer->start(interval); } } void MainWindow::scheduleSaveTabs() { if(s_settings->mainWindow().restoreTabs()) { scheduleSaveDatabase(); } } void MainWindow::scheduleSaveBookmarks() { if(s_settings->mainWindow().restoreBookmarks()) { scheduleSaveDatabase(); } } void MainWindow::scheduleSavePerFileSettings() { if(s_settings->mainWindow().restorePerFileSettings()) { scheduleSaveDatabase(); } } void MainWindow::createWidgets() { m_tabWidget = new TabWidget(this); m_tabWidget->setDocumentMode(true); m_tabWidget->setMovable(true); m_tabWidget->setTabsClosable(true); m_tabWidget->setElideMode(Qt::ElideRight); m_tabWidget->setTabPosition(static_cast< QTabWidget::TabPosition >(s_settings->mainWindow().tabPosition())); m_tabWidget->setTabBarPolicy(static_cast< TabWidget::TabBarPolicy >(s_settings->mainWindow().tabVisibility())); m_tabWidget->setSpreadTabs(s_settings->mainWindow().spreadTabs()); setCentralWidget(m_tabWidget); m_currentTabChangedBlocked = false; connect(m_tabWidget, SIGNAL(currentChanged(int)), SLOT(on_tabWidget_currentChanged())); connect(m_tabWidget, SIGNAL(tabCloseRequested(int)), SLOT(on_tabWidget_tabCloseRequested(int))); connect(m_tabWidget, SIGNAL(tabDragRequested(int)), SLOT(on_tabWidget_tabDragRequested(int))); connect(m_tabWidget, SIGNAL(tabContextMenuRequested(QPoint,int)), SLOT(on_tabWidget_tabContextMenuRequested(QPoint,int))); // current page m_currentPageSpinBox = new MappingSpinBox(new TextValueMapper(this), this); m_currentPageSpinBox->setAlignment(Qt::AlignCenter); m_currentPageSpinBox->setButtonSymbols(QAbstractSpinBox::NoButtons); m_currentPageSpinBox->setKeyboardTracking(false); connect(m_currentPageSpinBox, SIGNAL(editingFinished()), SLOT(on_currentPage_editingFinished())); connect(m_currentPageSpinBox, SIGNAL(returnPressed()), SLOT(on_currentPage_returnPressed())); m_currentPageAction = new QWidgetAction(this); m_currentPageAction->setObjectName(QLatin1String("currentPage")); m_currentPageAction->setDefaultWidget(m_currentPageSpinBox); // scale factor m_scaleFactorComboBox = new ComboBox(this); m_scaleFactorComboBox->setEditable(true); m_scaleFactorComboBox->setInsertPolicy(QComboBox::NoInsert); m_scaleFactorComboBox->addItem(tr("Page width")); m_scaleFactorComboBox->addItem(tr("Page size")); m_scaleFactorComboBox->addItem("50 %", 0.5); m_scaleFactorComboBox->addItem("75 %", 0.75); m_scaleFactorComboBox->addItem("100 %", 1.0); m_scaleFactorComboBox->addItem("125 %", 1.25); m_scaleFactorComboBox->addItem("150 %", 1.5); m_scaleFactorComboBox->addItem("200 %", 2.0); m_scaleFactorComboBox->addItem("300 %", 3.0); m_scaleFactorComboBox->addItem("400 %", 4.0); m_scaleFactorComboBox->addItem("500 %", 5.0); connect(m_scaleFactorComboBox, SIGNAL(activated(int)), SLOT(on_scaleFactor_activated(int))); connect(m_scaleFactorComboBox->lineEdit(), SIGNAL(editingFinished()), SLOT(on_scaleFactor_editingFinished())); connect(m_scaleFactorComboBox->lineEdit(), SIGNAL(returnPressed()), SLOT(on_scaleFactor_returnPressed())); m_scaleFactorAction = new QWidgetAction(this); m_scaleFactorAction->setObjectName(QLatin1String("scaleFactor")); m_scaleFactorAction->setDefaultWidget(m_scaleFactorComboBox); // search m_searchLineEdit = new SearchLineEdit(this); m_matchCaseCheckBox = new QCheckBox(tr("Match &case"), this); m_wholeWordsCheckBox = new QCheckBox(tr("Whole &words"), this); m_highlightAllCheckBox = new QCheckBox(tr("Highlight &all"), this); connect(m_searchLineEdit, SIGNAL(searchInitiated(QString,bool)), SLOT(on_searchInitiated(QString,bool))); connect(m_matchCaseCheckBox, SIGNAL(clicked()), m_searchLineEdit, SLOT(startTimer())); connect(m_wholeWordsCheckBox, SIGNAL(clicked()), m_searchLineEdit, SLOT(startTimer())); connect(m_highlightAllCheckBox, SIGNAL(clicked(bool)), SLOT(on_highlightAll_clicked(bool))); m_matchCaseCheckBox->setChecked(s_settings->documentView().matchCase()); m_wholeWordsCheckBox->setChecked(s_settings->documentView().wholeWords()); } QAction* MainWindow::createAction(const QString& text, const QString& objectName, const QIcon& icon, const QList< QKeySequence >& shortcuts, const char* member, bool checkable, bool checked) { QAction* action = new QAction(text, this); action->setObjectName(objectName); action->setIcon(icon); action->setShortcuts(shortcuts); if(!objectName.isEmpty()) { s_shortcutHandler->registerAction(action); } if(checkable) { action->setCheckable(true); action->setChecked(checked); connect(action, SIGNAL(triggered(bool)), member); } else { action->setIconVisibleInMenu(true); connect(action, SIGNAL(triggered()), member); } addAction(action); return action; } inline QAction* MainWindow::createAction(const QString& text, const QString& objectName, const QIcon& icon, const QKeySequence& shortcut, const char* member, bool checkable, bool checked) { return createAction(text, objectName, icon, QList< QKeySequence >() << shortcut, member, checkable, checked); } inline QAction* MainWindow::createAction(const QString& text, const QString& objectName, const QString& iconName, const QList< QKeySequence >& shortcuts, const char* member, bool checkable, bool checked) { return createAction(text, objectName, loadIconWithFallback(iconName), shortcuts, member, checkable, checked); } inline QAction* MainWindow::createAction(const QString& text, const QString& objectName, const QString& iconName, const QKeySequence& shortcut, const char* member, bool checkable, bool checked) { return createAction(text, objectName, iconName, QList< QKeySequence >() << shortcut, member, checkable, checked); } void MainWindow::createActions() { // file m_openAction = createAction(tr("&Open..."), QLatin1String("open"), QLatin1String("document-open"), QKeySequence::Open, SLOT(on_open_triggered())); m_openInNewTabAction = createAction(tr("Open in new &tab..."), QLatin1String("openInNewTab"), QLatin1String("tab-new"), QKeySequence::AddTab, SLOT(on_openInNewTab_triggered())); m_refreshAction = createAction(tr("&Refresh"), QLatin1String("refresh"), QLatin1String("view-refresh"), QKeySequence::Refresh, SLOT(on_refresh_triggered())); m_saveAction = createAction(tr("&Save"), QLatin1String("save"), QLatin1String("document-save"), QKeySequence::Save, SLOT(on_save_triggered())); m_saveAsAction = createAction(tr("Save &as..."), QLatin1String("saveAs"), QLatin1String("document-save-as"), QKeySequence::SaveAs, SLOT(on_saveAs_triggered())); m_saveCopyAction = createAction(tr("Save ©..."), QLatin1String("saveCopy"), QIcon(), QKeySequence(), SLOT(on_saveCopy_triggered())); m_printAction = createAction(tr("&Print..."), QLatin1String("print"), QLatin1String("document-print"), QKeySequence::Print, SLOT(on_print_triggered())); m_exitAction = createAction(tr("E&xit"), QLatin1String("exit"), QIcon::fromTheme("application-exit"), QKeySequence::Quit, SLOT(close())); // edit m_previousPageAction = createAction(tr("&Previous page"), QLatin1String("previousPage"), QLatin1String("go-previous"), QKeySequence(Qt::Key_Backspace), SLOT(on_previousPage_triggered())); m_nextPageAction = createAction(tr("&Next page"), QLatin1String("nextPage"), QLatin1String("go-next"), QKeySequence(Qt::Key_Space), SLOT(on_nextPage_triggered())); const QList< QKeySequence > firstPageShortcuts = QList< QKeySequence >() << QKeySequence(Qt::Key_Home) << QKeySequence(Qt::KeypadModifier + Qt::Key_Home) << QKeySequence(Qt::ControlModifier + Qt::Key_Home) << QKeySequence(Qt::ControlModifier + Qt::KeypadModifier + Qt::Key_Home); m_firstPageAction = createAction(tr("&First page"), QLatin1String("firstPage"), QLatin1String("go-first"), firstPageShortcuts, SLOT(on_firstPage_triggered())); const QList< QKeySequence > lastPageShortcuts = QList< QKeySequence >() << QKeySequence(Qt::Key_End) << QKeySequence(Qt::KeypadModifier + Qt::Key_End) << QKeySequence(Qt::ControlModifier + Qt::Key_End) << QKeySequence(Qt::ControlModifier + Qt::KeypadModifier + Qt::Key_End); m_lastPageAction = createAction(tr("&Last page"), QLatin1String("lastPage"), QLatin1String("go-last"), lastPageShortcuts, SLOT(on_lastPage_triggered())); m_setFirstPageAction = createAction(tr("&Set first page..."), QLatin1String("setFirstPage"), QIcon(), QKeySequence(), SLOT(on_setFirstPage_triggered())); m_jumpToPageAction = createAction(tr("&Jump to page..."), QLatin1String("jumpToPage"), QLatin1String("go-jump"), QKeySequence(Qt::CTRL + Qt::Key_J), SLOT(on_jumpToPage_triggered())); m_jumpBackwardAction = createAction(tr("Jump &backward"), QLatin1String("jumpBackward"), QLatin1String("media-seek-backward"), QKeySequence(Qt::CTRL + Qt::Key_Return), SLOT(on_jumpBackward_triggered())); m_jumpForwardAction = createAction(tr("Jump for&ward"), QLatin1String("jumpForward"), QLatin1String("media-seek-forward"), QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_Return), SLOT(on_jumpForward_triggered())); m_searchAction = createAction(tr("&Search..."), QLatin1String("search"), QLatin1String("edit-find"), QKeySequence::Find, SLOT(on_search_triggered())); m_findPreviousAction = createAction(tr("Find previous"), QLatin1String("findPrevious"), QLatin1String("go-up"), QKeySequence::FindPrevious, SLOT(on_findPrevious_triggered())); m_findNextAction = createAction(tr("Find next"), QLatin1String("findNext"), QLatin1String("go-down"), QKeySequence::FindNext, SLOT(on_findNext_triggered())); m_cancelSearchAction = createAction(tr("Cancel search"), QLatin1String("cancelSearch"), QLatin1String("process-stop"), QKeySequence(Qt::Key_Escape), SLOT(on_cancelSearch_triggered())); m_copyToClipboardModeAction = createAction(tr("&Copy to clipboard"), QLatin1String("copyToClipboardMode"), QLatin1String("edit-copy"), QKeySequence(Qt::CTRL + Qt::Key_C), SLOT(on_copyToClipboardMode_triggered(bool)), true); m_addAnnotationModeAction = createAction(tr("&Add annotation"), QLatin1String("addAnnotationMode"), QLatin1String("mail-attachment"), QKeySequence(Qt::CTRL + Qt::Key_A), SLOT(on_addAnnotationMode_triggered(bool)), true); m_settingsAction = createAction(tr("Settings..."), QString(), QIcon(), QKeySequence(), SLOT(on_settings_triggered())); // view m_continuousModeAction = createAction(tr("&Continuous"), QLatin1String("continuousMode"), QIcon(QLatin1String(":icons/continuous")), QKeySequence(Qt::CTRL + Qt::Key_7), SLOT(on_continuousMode_triggered(bool)), true); m_twoPagesModeAction = createAction(tr("&Two pages"), QLatin1String("twoPagesMode"), QIcon(QLatin1String(":icons/two-pages")), QKeySequence(Qt::CTRL + Qt::Key_6), SLOT(on_twoPagesMode_triggered(bool)), true); m_twoPagesWithCoverPageModeAction = createAction(tr("Two pages &with cover page"), QLatin1String("twoPagesWithCoverPageMode"), QIcon(QLatin1String(":icons/two-pages-with-cover-page")), QKeySequence(Qt::CTRL + Qt::Key_5), SLOT(on_twoPagesWithCoverPageMode_triggered(bool)), true); m_multiplePagesModeAction = createAction(tr("&Multiple pages"), QLatin1String("multiplePagesMode"), QIcon(QLatin1String(":icons/multiple-pages")), QKeySequence(Qt::CTRL + Qt::Key_4), SLOT(on_multiplePagesMode_triggered(bool)), true); m_rightToLeftModeAction = createAction(tr("Right to left"), QLatin1String("rightToLeftMode"), QIcon(QLatin1String(":icons/right-to-left")), QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_R), SLOT(on_rightToLeftMode_triggered(bool)), true); m_zoomInAction = createAction(tr("Zoom &in"), QLatin1String("zoomIn"), QLatin1String("zoom-in"), QKeySequence(Qt::CTRL + Qt::Key_Up), SLOT(on_zoomIn_triggered())); m_zoomOutAction = createAction(tr("Zoom &out"), QLatin1String("zoomOut"), QLatin1String("zoom-out"), QKeySequence(Qt::CTRL + Qt::Key_Down), SLOT(on_zoomOut_triggered())); m_originalSizeAction = createAction(tr("Original &size"), QLatin1String("originalSize"), QLatin1String("zoom-original"), QKeySequence(Qt::CTRL + Qt::Key_0), SLOT(on_originalSize_triggered())); m_fitToPageWidthModeAction = createAction(tr("Fit to page width"), QLatin1String("fitToPageWidthMode"), QIcon(QLatin1String(":icons/fit-to-page-width")), QKeySequence(Qt::CTRL + Qt::Key_9), SLOT(on_fitToPageWidthMode_triggered(bool)), true); m_fitToPageSizeModeAction = createAction(tr("Fit to page size"), QLatin1String("fitToPageSizeMode"), QIcon(QLatin1String(":icons/fit-to-page-size")), QKeySequence(Qt::CTRL + Qt::Key_8), SLOT(on_fitToPageSizeMode_triggered(bool)), true); m_rotateLeftAction = createAction(tr("Rotate &left"), QLatin1String("rotateLeft"), QLatin1String("object-rotate-left"), QKeySequence(Qt::CTRL + Qt::Key_Left), SLOT(on_rotateLeft_triggered())); m_rotateRightAction = createAction(tr("Rotate &right"), QLatin1String("rotateRight"), QLatin1String("object-rotate-right"), QKeySequence(Qt::CTRL + Qt::Key_Right), SLOT(on_rotateRight_triggered())); m_invertColorsAction = createAction(tr("Invert colors"), QLatin1String("invertColors"), QIcon(), QKeySequence(Qt::CTRL + Qt::Key_I), SLOT(on_invertColors_triggered(bool)), true); m_convertToGrayscaleAction = createAction(tr("Convert to grayscale"), QLatin1String("convertToGrayscale"), QIcon(), QKeySequence(Qt::CTRL + Qt::Key_U), SLOT(on_convertToGrayscale_triggered(bool)), true); m_trimMarginsAction = createAction(tr("Trim margins"), QLatin1String("trimMargins"), QIcon(), QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_U), SLOT(on_trimMargins_triggered(bool)), true); m_darkenWithPaperColorAction = createAction(tr("Darken with paper color"), QLatin1String("darkenWithPaperColor"), QIcon(), QKeySequence(), SLOT(on_darkenWithPaperColor_triggered(bool)), true); m_lightenWithPaperColorAction = createAction(tr("Lighten with paper color"), QLatin1String("lightenWithPaperColor"), QIcon(), QKeySequence(), SLOT(on_lightenWithPaperColor_triggered(bool)), true); m_fontsAction = createAction(tr("Fonts..."), QString(), QIcon(), QKeySequence(), SLOT(on_fonts_triggered())); m_fullscreenAction = createAction(tr("&Fullscreen"), QLatin1String("fullscreen"), QLatin1String("view-fullscreen"), QKeySequence(Qt::Key_F11), SLOT(on_fullscreen_triggered(bool)), true); m_presentationAction = createAction(tr("&Presentation..."), QLatin1String("presentation"), QLatin1String("x-office-presentation"), QKeySequence(Qt::Key_F12), SLOT(on_presentation_triggered())); // tabs m_previousTabAction = createAction(tr("&Previous tab"), QLatin1String("previousTab"), QIcon(), QKeySequence::PreviousChild, SLOT(on_previousTab_triggered())); m_nextTabAction = createAction(tr("&Next tab"), QLatin1String("nextTab"), QIcon(), QKeySequence::NextChild, SLOT(on_nextTab_triggered())); m_closeTabAction = createAction(tr("&Close tab"), QLatin1String("closeTab"), QIcon::fromTheme("window-close"), QKeySequence(Qt::CTRL + Qt::Key_W), SLOT(on_closeTab_triggered())); m_closeAllTabsAction = createAction(tr("Close &all tabs"), QLatin1String("closeAllTabs"), QIcon(), QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_W), SLOT(on_closeAllTabs_triggered())); m_closeAllTabsButCurrentTabAction = createAction(tr("Close all tabs &but current tab"), QLatin1String("closeAllTabsButCurrent"), QIcon(), QKeySequence(Qt::CTRL + Qt::ALT + Qt::Key_W), SLOT(on_closeAllTabsButCurrentTab_triggered())); m_restoreMostRecentlyClosedTabAction = createAction(tr("Restore &most recently closed tab"), QLatin1String("restoreMostRecentlyClosedTab"), QIcon(), QKeySequence(Qt::ALT + Qt::SHIFT + Qt::Key_W), SLOT(on_restoreMostRecentlyClosedTab_triggered())); // tab shortcuts for(int index = 0; index < 9; ++index) { m_tabShortcuts[index] = new QShortcut(QKeySequence(Qt::ALT + Qt::Key_1 + index), this, SLOT(on_tabShortcut_activated())); } // bookmarks m_previousBookmarkAction = createAction(tr("&Previous bookmark"), QLatin1String("previousBookmarkAction"), QIcon(), QKeySequence(Qt::CTRL + Qt::Key_PageUp), SLOT(on_previousBookmark_triggered())); m_nextBookmarkAction = createAction(tr("&Next bookmark"), QLatin1String("nextBookmarkAction"), QIcon(), QKeySequence(Qt::CTRL + Qt::Key_PageDown), SLOT(on_nextBookmark_triggered())); m_addBookmarkAction = createAction(tr("&Add bookmark"), QLatin1String("addBookmark"), QIcon(), QKeySequence(Qt::CTRL + Qt::Key_B), SLOT(on_addBookmark_triggered())); m_removeBookmarkAction = createAction(tr("&Remove bookmark"), QLatin1String("removeBookmark"), QIcon(), QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_B), SLOT(on_removeBookmark_triggered())); m_removeAllBookmarksAction = createAction(tr("Remove all bookmarks"), QLatin1String("removeAllBookmark"), QIcon(), QKeySequence(Qt::CTRL + Qt::ALT + Qt::Key_B), SLOT(on_removeAllBookmarks_triggered())); // help m_contentsAction = createAction(tr("&Contents"), QLatin1String("contents"), QIcon::fromTheme("help-contents"), QKeySequence::HelpContents, SLOT(on_contents_triggered())); m_aboutAction = createAction(tr("&About"), QString(), QIcon::fromTheme("help-about"), QKeySequence(), SLOT(on_about_triggered())); // context m_openCopyInNewTabAction = createAction(tr("Open © in new tab"), QLatin1String("openCopyInNewTab"), QLatin1String("tab-new"), QKeySequence(), SLOT(on_openCopyInNewTab_triggered())); m_openCopyInNewWindowAction = createAction(tr("Open copy in new &window"), QLatin1String("openCopyInNewWindow"), QLatin1String("window-new"), QKeySequence(), SLOT(on_openCopyInNewWindow_triggered())); m_openContainingFolderAction = createAction(tr("Open containing &folder"), QLatin1String("openContainingFolder"), QLatin1String("folder"), QKeySequence(), SLOT(on_openContainingFolder_triggered())); m_moveToInstanceAction = createAction(tr("Move to &instance..."), QLatin1String("moveToInstance"), QIcon(), QKeySequence(), SLOT(on_moveToInstance_triggered())); m_splitViewHorizontallyAction = createAction(tr("Split view horizontally..."), QLatin1String("splitViewHorizontally"), QIcon(), QKeySequence(), SLOT(on_splitView_splitHorizontally_triggered())); m_splitViewVerticallyAction = createAction(tr("Split view vertically..."), QLatin1String("splitViewVertically"), QIcon(), QKeySequence(), SLOT(on_splitView_splitVertically_triggered())); m_closeCurrentViewAction = createAction(tr("Close current view"), QLatin1String("closeCurrentView"), QIcon(), QKeySequence(), SLOT(on_splitView_closeCurrent_triggered())); // tool bars and menu bar m_toggleToolBarsAction = createAction(tr("Toggle tool bars"), QLatin1String("toggleToolBars"), QIcon(), QKeySequence(Qt::SHIFT + Qt::ALT + Qt::Key_T), SLOT(on_toggleToolBars_triggered(bool)), true, true); m_toggleMenuBarAction = createAction(tr("Toggle menu bar"), QLatin1String("toggleMenuBar"), QIcon(), QKeySequence(Qt::SHIFT + Qt::ALT + Qt::Key_M), SLOT(on_toggleMenuBar_triggered(bool)), true, true); // progress and error icons s_settings->pageItem().setProgressIcon(loadIconWithFallback(QLatin1String("image-loading"))); s_settings->pageItem().setErrorIcon(loadIconWithFallback(QLatin1String("image-missing"))); } QToolBar* MainWindow::createToolBar(const QString& text, const QString& objectName, const QStringList& actionNames, const QList< QAction* >& actions) { QToolBar* toolBar = addToolBar(text); toolBar->setObjectName(objectName); addWidgetActions(toolBar, actionNames, actions); toolBar->toggleViewAction()->setObjectName(objectName + QLatin1String("ToggleView")); s_shortcutHandler->registerAction(toolBar->toggleViewAction()); return toolBar; } void MainWindow::createToolBars() { m_fileToolBar = createToolBar(tr("&File"), QLatin1String("fileToolBar"), s_settings->mainWindow().fileToolBar(), QList< QAction* >() << m_openAction << m_openInNewTabAction << m_openContainingFolderAction << m_refreshAction << m_saveAction << m_saveAsAction << m_printAction); m_editToolBar = createToolBar(tr("&Edit"), QLatin1String("editToolBar"), s_settings->mainWindow().editToolBar(), QList< QAction* >() << m_currentPageAction << m_previousPageAction << m_nextPageAction << m_firstPageAction << m_lastPageAction << m_jumpToPageAction << m_searchAction << m_jumpBackwardAction << m_jumpForwardAction << m_copyToClipboardModeAction << m_addAnnotationModeAction); m_viewToolBar = createToolBar(tr("&View"), QLatin1String("viewToolBar"), s_settings->mainWindow().viewToolBar(), QList< QAction* >() << m_scaleFactorAction << m_continuousModeAction << m_twoPagesModeAction << m_twoPagesWithCoverPageModeAction << m_multiplePagesModeAction << m_rightToLeftModeAction << m_zoomInAction << m_zoomOutAction << m_originalSizeAction << m_fitToPageWidthModeAction << m_fitToPageSizeModeAction << m_rotateLeftAction << m_rotateRightAction << m_fullscreenAction << m_presentationAction); m_focusCurrentPageShortcut = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_K), this, SLOT(on_focusCurrentPage_activated())); m_focusScaleFactorShortcut = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_L), this, SLOT(on_focusScaleFactor_activated())); } QDockWidget* MainWindow::createDock(const QString& text, const QString& objectName, const QKeySequence& toggleViewShortcut) { QDockWidget* dock = new QDockWidget(text, this); dock->setObjectName(objectName); dock->setFeatures(QDockWidget::DockWidgetClosable | QDockWidget::DockWidgetFloatable | QDockWidget::DockWidgetMovable); #ifdef Q_OS_WIN dock->setWindowTitle(dock->windowTitle().remove(QLatin1Char('&'))); #endif // Q_OS_WIN addDockWidget(Qt::LeftDockWidgetArea, dock); connect(dock, SIGNAL(dockLocationChanged(Qt::DockWidgetArea)), SLOT(on_dock_dockLocationChanged(Qt::DockWidgetArea))); dock->toggleViewAction()->setObjectName(objectName + QLatin1String("ToggleView")); dock->toggleViewAction()->setShortcut(toggleViewShortcut); s_shortcutHandler->registerAction(dock->toggleViewAction()); dock->hide(); return dock; } void MainWindow::createSearchDock() { m_searchDock = new QDockWidget(tr("&Search"), this); m_searchDock->setObjectName(QLatin1String("searchDock")); m_searchDock->setFeatures(QDockWidget::DockWidgetFloatable | QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetVerticalTitleBar); #ifdef Q_OS_WIN m_searchDock->setWindowTitle(m_searchDock->windowTitle().remove(QLatin1Char('&'))); #endif // Q_OS_WIN addDockWidget(Qt::BottomDockWidgetArea, m_searchDock); connect(m_searchDock, SIGNAL(dockLocationChanged(Qt::DockWidgetArea)), SLOT(on_dock_dockLocationChanged(Qt::DockWidgetArea))); connect(m_searchDock, SIGNAL(dockLocationChanged(Qt::DockWidgetArea)), SLOT(on_search_dockLocationChanged(Qt::DockWidgetArea))); connect(m_searchDock, SIGNAL(visibilityChanged(bool)), SLOT(on_search_visibilityChanged(bool))); m_searchWidget = new QWidget(this); m_searchDock->setWidget(m_searchWidget); m_findPreviousButton = new QToolButton(m_searchWidget); m_findPreviousButton->setAutoRaise(true); m_findPreviousButton->setDefaultAction(m_findPreviousAction); m_findNextButton = new QToolButton(m_searchWidget); m_findNextButton->setAutoRaise(true); m_findNextButton->setDefaultAction(m_findNextAction); m_cancelSearchButton = new QToolButton(m_searchWidget); m_cancelSearchButton->setAutoRaise(true); m_cancelSearchButton->setDefaultAction(m_cancelSearchAction); connect(m_searchDock, SIGNAL(visibilityChanged(bool)), m_findPreviousAction, SLOT(setEnabled(bool))); connect(m_searchDock, SIGNAL(visibilityChanged(bool)), m_findNextAction, SLOT(setEnabled(bool))); connect(m_searchDock, SIGNAL(visibilityChanged(bool)), m_cancelSearchAction, SLOT(setEnabled(bool))); m_searchDock->setVisible(false); m_findPreviousAction->setEnabled(false); m_findNextAction->setEnabled(false); m_cancelSearchAction->setEnabled(false); if(s_settings->mainWindow().extendedSearchDock()) { m_searchDock->setFeatures(m_searchDock->features() | QDockWidget::DockWidgetClosable); m_searchDock->toggleViewAction()->setObjectName(QLatin1String("searchDockToggleView")); m_searchDock->toggleViewAction()->setShortcut(QKeySequence(Qt::Key_F10)); s_shortcutHandler->registerAction(m_searchDock->toggleViewAction()); m_searchView = new QTreeView(m_searchWidget); m_searchView->setAlternatingRowColors(true); m_searchView->setUniformRowHeights(true); m_searchView->setEditTriggers(QAbstractItemView::NoEditTriggers); m_searchView->setVerticalScrollMode(QAbstractItemView::ScrollPerPixel); m_searchView->setSelectionMode(QAbstractItemView::SingleSelection); m_searchView->setSelectionBehavior(QAbstractItemView::SelectRows); m_searchView->setItemDelegate(new SearchItemDelegate(m_searchView)); connect(m_searchView->header(), SIGNAL(sectionCountChanged(int,int)), SLOT(on_search_sectionCountChanged())); connect(m_searchView, SIGNAL(clicked(QModelIndex)), SLOT(on_search_clicked(QModelIndex))); connect(m_searchView, SIGNAL(activated(QModelIndex)), SLOT(on_search_clicked(QModelIndex))); m_searchView->setModel(s_searchModel); connect(s_searchModel, SIGNAL(rowsInserted(QModelIndex,int,int)), SLOT(on_search_rowsInserted(QModelIndex,int,int))); } else { m_searchView = 0; } on_search_dockLocationChanged(Qt::BottomDockWidgetArea); } void MainWindow::createDocks() { // outline m_outlineDock = createDock(tr("&Outline"), QLatin1String("outlineDock"), QKeySequence(Qt::Key_F6)); m_outlineView = new TreeView(Model::Document::ExpansionRole, this); m_outlineView->setAlternatingRowColors(true); m_outlineView->setEditTriggers(QAbstractItemView::NoEditTriggers); m_outlineView->setVerticalScrollMode(QAbstractItemView::ScrollPerPixel); m_outlineView->setSelectionMode(QAbstractItemView::SingleSelection); m_outlineView->setSelectionBehavior(QAbstractItemView::SelectRows); m_outlineView->installEventFilter(this); connect(m_outlineView->header(), SIGNAL(sectionCountChanged(int,int)), SLOT(on_outline_sectionCountChanged())); connect(m_outlineView, SIGNAL(clicked(QModelIndex)), SLOT(on_outline_clicked(QModelIndex))); connect(m_outlineView, SIGNAL(activated(QModelIndex)), SLOT(on_outline_clicked(QModelIndex))); m_outlineDock->setWidget(m_outlineView); // properties m_propertiesDock = createDock(tr("&Properties"), QLatin1String("propertiesDock"), QKeySequence(Qt::Key_F7)); m_propertiesView = new QTableView(this); m_propertiesView->setAlternatingRowColors(true); m_propertiesView->setTabKeyNavigation(false); m_propertiesView->setEditTriggers(QAbstractItemView::NoEditTriggers); m_propertiesView->setVerticalScrollMode(QAbstractItemView::ScrollPerPixel); connect(m_propertiesView->horizontalHeader(), SIGNAL(sectionCountChanged(int,int)), SLOT(on_properties_sectionCountChanged())); m_propertiesDock->setWidget(m_propertiesView); // thumbnails m_thumbnailsDock = createDock(tr("Thumb&nails"), QLatin1String("thumbnailsDock"), QKeySequence(Qt::Key_F8)); connect(m_thumbnailsDock, SIGNAL(dockLocationChanged(Qt::DockWidgetArea)), SLOT(on_thumbnails_dockLocationChanged(Qt::DockWidgetArea))); m_thumbnailsView = new QGraphicsView(this); m_thumbnailsView->installEventFilter(this); connect(m_thumbnailsView->verticalScrollBar(), SIGNAL(valueChanged(int)), SLOT(on_thumbnails_verticalScrollBar_valueChanged(int))); m_thumbnailsDock->setWidget(m_thumbnailsView); // bookmarks m_bookmarksDock = createDock(tr("Book&marks"), QLatin1String("bookmarksDock"), QKeySequence(Qt::Key_F9)); m_bookmarksView = new QTableView(this); m_bookmarksView->setShowGrid(false); m_bookmarksView->setAlternatingRowColors(true); m_bookmarksView->setEditTriggers(QAbstractItemView::NoEditTriggers); m_bookmarksView->setVerticalScrollMode(QAbstractItemView::ScrollPerPixel); m_bookmarksView->setSelectionMode(QAbstractItemView::SingleSelection); m_bookmarksView->setSelectionBehavior(QAbstractItemView::SelectRows); m_bookmarksView->setContextMenuPolicy(Qt::CustomContextMenu); connect(m_bookmarksView->horizontalHeader(), SIGNAL(sectionCountChanged(int,int)), SLOT(on_bookmarks_sectionCountChanged())); connect(m_bookmarksView, SIGNAL(clicked(QModelIndex)), SLOT(on_bookmarks_clicked(QModelIndex))); connect(m_bookmarksView, SIGNAL(activated(QModelIndex)), SLOT(on_bookmarks_clicked(QModelIndex))); connect(m_bookmarksView, SIGNAL(customContextMenuRequested(QPoint)), SLOT(on_bookmarks_contextMenuRequested(QPoint))); m_bookmarksDock->setWidget(m_bookmarksView); // search createSearchDock(); } void MainWindow::createMenus() { // file m_fileMenu = menuBar()->addMenu(tr("&File")); m_fileMenu->addActions(QList< QAction* >() << m_openAction << m_openInNewTabAction); m_recentlyUsedMenu = new RecentlyUsedMenu(s_settings->mainWindow().recentlyUsed(), s_settings->mainWindow().recentlyUsedCount(), this); connect(m_recentlyUsedMenu, SIGNAL(openTriggered(QString)), SLOT(on_recentlyUsed_openTriggered(QString))); if(s_settings->mainWindow().trackRecentlyUsed()) { m_fileMenu->addMenu(m_recentlyUsedMenu); setToolButtonMenu(m_fileToolBar, m_openAction, m_recentlyUsedMenu); setToolButtonMenu(m_fileToolBar, m_openInNewTabAction, m_recentlyUsedMenu); } m_fileMenu->addActions(QList< QAction* >() << m_refreshAction << m_saveAction << m_saveAsAction << m_saveCopyAction << m_printAction); m_fileMenu->addSeparator(); m_fileMenu->addAction(m_exitAction); // edit m_editMenu = menuBar()->addMenu(tr("&Edit")); m_editMenu->addActions(QList< QAction* >() << m_previousPageAction << m_nextPageAction << m_firstPageAction << m_lastPageAction << m_jumpToPageAction); m_editMenu->addSeparator(); m_editMenu->addActions(QList< QAction* >() << m_jumpBackwardAction << m_jumpForwardAction); m_editMenu->addSeparator(); m_editMenu->addActions(QList< QAction* >() << m_searchAction << m_findPreviousAction << m_findNextAction << m_cancelSearchAction); m_editMenu->addSeparator(); m_editMenu->addActions(QList< QAction* >() << m_copyToClipboardModeAction << m_addAnnotationModeAction); m_editMenu->addSeparator(); m_editMenu->addAction(m_settingsAction); // view m_viewMenu = menuBar()->addMenu(tr("&View")); m_viewMenu->addActions(QList< QAction* >() << m_continuousModeAction << m_twoPagesModeAction << m_twoPagesWithCoverPageModeAction << m_multiplePagesModeAction); m_viewMenu->addSeparator(); m_viewMenu->addAction(m_rightToLeftModeAction); m_viewMenu->addSeparator(); m_viewMenu->addActions(QList< QAction* >() << m_zoomInAction << m_zoomOutAction << m_originalSizeAction << m_fitToPageWidthModeAction << m_fitToPageSizeModeAction); m_viewMenu->addSeparator(); m_viewMenu->addActions(QList< QAction* >() << m_rotateLeftAction << m_rotateRightAction); m_viewMenu->addSeparator(); m_viewMenu->addActions(QList< QAction* >() << m_invertColorsAction << m_convertToGrayscaleAction << m_trimMarginsAction); m_compositionModeMenu = m_viewMenu->addMenu(tr("Composition")); m_compositionModeMenu->addAction(m_darkenWithPaperColorAction); m_compositionModeMenu->addAction(m_lightenWithPaperColorAction); m_viewMenu->addSeparator(); QMenu* toolBarsMenu = m_viewMenu->addMenu(tr("&Tool bars")); toolBarsMenu->addActions(QList< QAction* >() << m_fileToolBar->toggleViewAction() << m_editToolBar->toggleViewAction() << m_viewToolBar->toggleViewAction()); QMenu* docksMenu = m_viewMenu->addMenu(tr("&Docks")); docksMenu->addActions(QList< QAction* >() << m_outlineDock->toggleViewAction() << m_propertiesDock->toggleViewAction() << m_thumbnailsDock->toggleViewAction() << m_bookmarksDock->toggleViewAction()); if(s_settings->mainWindow().extendedSearchDock()) { docksMenu->addAction(m_searchDock->toggleViewAction()); } m_viewMenu->addAction(m_fontsAction); m_viewMenu->addSeparator(); m_viewMenu->addActions(QList< QAction* >() << m_fullscreenAction << m_presentationAction); // tabs m_tabsMenu = new SearchableMenu(tr("&Tabs"), this); menuBar()->addMenu(m_tabsMenu); m_tabsMenu->setSearchable(s_settings->mainWindow().searchableMenus()); m_tabsMenu->addActions(QList< QAction* >() << m_previousTabAction << m_nextTabAction); m_tabsMenu->addSeparator(); m_tabsMenu->addActions(QList< QAction* >() << m_closeTabAction << m_closeAllTabsAction << m_closeAllTabsButCurrentTabAction); m_recentlyClosedMenu = new RecentlyClosedMenu(s_settings->mainWindow().recentlyClosedCount(), this); connect(m_recentlyClosedMenu, SIGNAL(tabActionTriggered(QAction*)), SLOT(on_recentlyClosed_tabActionTriggered(QAction*))); if(s_settings->mainWindow().keepRecentlyClosed()) { m_tabsMenu->addMenu(m_recentlyClosedMenu); m_tabsMenu->addAction(m_restoreMostRecentlyClosedTabAction); } m_tabsMenu->addSeparator(); // bookmarks m_bookmarksMenu = new SearchableMenu(tr("&Bookmarks"), this); menuBar()->addMenu(m_bookmarksMenu); m_bookmarksMenu->setSearchable(s_settings->mainWindow().searchableMenus()); connect(m_bookmarksMenu, SIGNAL(aboutToShow()), this, SLOT(on_bookmarksMenu_aboutToShow())); m_bookmarksMenuIsDirty = true; // help m_helpMenu = menuBar()->addMenu(tr("&Help")); m_helpMenu->addActions(QList< QAction* >() << m_contentsAction << m_aboutAction); } #ifdef WITH_DBUS MainWindowAdaptor::MainWindowAdaptor(MainWindow* mainWindow) : QDBusAbstractAdaptor(mainWindow) { } QDBusInterface* MainWindowAdaptor::createInterface(const QString& instanceName) { return new QDBusInterface(serviceName(instanceName), QLatin1String("/MainWindow"), QLatin1String("local.qpdfview.MainWindow"), QDBusConnection::sessionBus()); } MainWindowAdaptor* MainWindowAdaptor::createAdaptor(MainWindow* mainWindow) { QScopedPointer< MainWindowAdaptor > adaptor(new MainWindowAdaptor(mainWindow)); if(!QDBusConnection::sessionBus().registerService(serviceName())) { return 0; } if(!QDBusConnection::sessionBus().registerObject(QLatin1String("/MainWindow"), mainWindow)) { return 0; } return adaptor.take(); } void MainWindowAdaptor::raiseAndActivate() { mainWindow()->raise(); mainWindow()->activateWindow(); } bool MainWindowAdaptor::open(const QString& absoluteFilePath, int page, const QRectF& highlight, bool quiet) { return mainWindow()->open(absoluteFilePath, page, highlight, quiet); } bool MainWindowAdaptor::openInNewTab(const QString& absoluteFilePath, int page, const QRectF& highlight, bool quiet) { return mainWindow()->openInNewTab(absoluteFilePath, page, highlight, quiet); } bool MainWindowAdaptor::jumpToPageOrOpenInNewTab(const QString& absoluteFilePath, int page, bool refreshBeforeJump, const QRectF& highlight, bool quiet) { return mainWindow()->jumpToPageOrOpenInNewTab(absoluteFilePath, page, refreshBeforeJump, highlight, quiet); } void MainWindowAdaptor::startSearch(const QString& text) { mainWindow()->startSearch(text); } void MainWindowAdaptor::saveDatabase() { mainWindow()->saveDatabase(); } int MainWindowAdaptor::currentPage() const { if(DocumentView* tab = mainWindow()->currentTab()) { return tab->currentPage(); } else { return -1; } } void MainWindowAdaptor::jumpToPage(int page) { if(DocumentView* tab = mainWindow()->currentTab()) { tab->jumpToPage(page); } } #define ONLY_IF_CURRENT_TAB if(mainWindow()->m_tabWidget->currentIndex() == -1) { return; } void MainWindowAdaptor::previousPage() { ONLY_IF_CURRENT_TAB mainWindow()->on_previousPage_triggered(); } void MainWindowAdaptor::nextPage() { ONLY_IF_CURRENT_TAB mainWindow()->on_nextPage_triggered(); } void MainWindowAdaptor::firstPage() { ONLY_IF_CURRENT_TAB mainWindow()->on_firstPage_triggered(); } void MainWindowAdaptor::lastPage() { ONLY_IF_CURRENT_TAB mainWindow()->on_lastPage_triggered(); } void MainWindowAdaptor::previousBookmark() { ONLY_IF_CURRENT_TAB mainWindow()->on_previousBookmark_triggered(); } void MainWindowAdaptor::nextBookmark() { ONLY_IF_CURRENT_TAB mainWindow()->on_nextBookmark_triggered(); } bool MainWindowAdaptor::jumpToBookmark(const QString& label) { if(mainWindow()->m_tabWidget->currentIndex() == -1) { return false; } const BookmarkModel* model = mainWindow()->bookmarkModelForCurrentTab(); if(model != 0) { for(int row = 0, rowCount = model->rowCount(); row < rowCount; ++row) { const QModelIndex index = model->index(row); if(label == index.data(BookmarkModel::LabelRole).toString()) { mainWindow()->currentTab()->jumpToPage(index.data(BookmarkModel::PageRole).toInt()); return true; } } } return false; } void MainWindowAdaptor::continuousMode(bool checked) { ONLY_IF_CURRENT_TAB mainWindow()->on_continuousMode_triggered(checked); } void MainWindowAdaptor::twoPagesMode(bool checked) { ONLY_IF_CURRENT_TAB mainWindow()->on_twoPagesMode_triggered(checked); } void MainWindowAdaptor::twoPagesWithCoverPageMode(bool checked) { ONLY_IF_CURRENT_TAB mainWindow()->on_twoPagesWithCoverPageMode_triggered(checked); } void MainWindowAdaptor::multiplePagesMode(bool checked) { ONLY_IF_CURRENT_TAB mainWindow()->on_multiplePagesMode_triggered(checked); } void MainWindowAdaptor::fitToPageWidthMode(bool checked) { ONLY_IF_CURRENT_TAB mainWindow()->on_fitToPageWidthMode_triggered(checked); } void MainWindowAdaptor::fitToPageSizeMode(bool checked) { ONLY_IF_CURRENT_TAB mainWindow()->on_fitToPageSizeMode_triggered(checked); } void MainWindowAdaptor::invertColors(bool checked) { ONLY_IF_CURRENT_TAB mainWindow()->on_invertColors_triggered(checked); } void MainWindowAdaptor::convertToGrayscale(bool checked) { ONLY_IF_CURRENT_TAB mainWindow()->on_convertToGrayscale_triggered(checked); } void MainWindowAdaptor::trimMargins(bool checked) { ONLY_IF_CURRENT_TAB mainWindow()->on_trimMargins_triggered(checked); } void MainWindowAdaptor::fullscreen(bool checked) { if(mainWindow()->m_fullscreenAction->isChecked() != checked) { mainWindow()->m_fullscreenAction->trigger(); } } void MainWindowAdaptor::presentation() { ONLY_IF_CURRENT_TAB mainWindow()->on_presentation_triggered(); } void MainWindowAdaptor::closeTab() { ONLY_IF_CURRENT_TAB mainWindow()->on_closeTab_triggered(); } void MainWindowAdaptor::closeAllTabs() { mainWindow()->on_closeAllTabs_triggered(); } void MainWindowAdaptor::closeAllTabsButCurrentTab() { mainWindow()->on_closeAllTabsButCurrentTab_triggered(); } bool MainWindowAdaptor::closeTab(const QString& absoluteFilePath) { if(mainWindow()->m_tabWidget->currentIndex() == -1) { return false; } const QFileInfo fileInfo(absoluteFilePath); foreach(DocumentView* tab, mainWindow()->allTabs()) { if(tab->fileInfo() == fileInfo) { if(mainWindow()->saveModifications(tab)) { mainWindow()->closeTab(tab); } return true; } } return false; } #undef ONLY_IF_CURRENT_TAB inline MainWindow* MainWindowAdaptor::mainWindow() const { return qobject_cast< MainWindow* >(parent()); } QString MainWindowAdaptor::serviceName(QString instanceName) { QString serviceName = QApplication::organizationDomain(); if(instanceName.isNull()) { instanceName = qApp->objectName(); } if(!instanceName.isEmpty()) { serviceName.append('.'); serviceName.append(instanceName); } return serviceName; } # endif // WITH_DBUS } // qpdfview qpdfview-0.4.18/sources/mainwindow.h0000644000000000000000000004265013516127411015577 0ustar 00000000000000/* Copyright 2014 S. Razi Alavizadeh Copyright 2012-2018 Adam Reichold Copyright 2018 Pavel Sanda Copyright 2012 Michał Trybus Copyright 2012 Alexander Volkov This file is part of qpdfview. qpdfview is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. qpdfview is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with qpdfview. If not, see . */ #ifndef MAINWINDOW_H #define MAINWINDOW_H #include #include #ifdef WITH_DBUS #include class QDBusInterface; #endif // WITH_DBUS class QCheckBox; class QDateTime; class QGraphicsView; class QFileInfo; class QModelIndex; class QShortcut; class QTableView; class QToolButton; class QTreeView; class QWidgetAction; #include "renderparam.h" namespace qpdfview { class Settings; class DocumentView; class TabWidget; class TreeView; class ComboBox; class MappingSpinBox; class SearchLineEdit; class SearchableMenu; class RecentlyUsedMenu; class RecentlyClosedMenu; class BookmarkModel; class Database; class ShortcutHandler; class SearchModel; class HelpDialog; class MainWindow : public QMainWindow { Q_OBJECT friend class MainWindowAdaptor; public: explicit MainWindow(QWidget* parent = 0); QSize sizeHint() const; QMenu* createPopupMenu(); public slots: void show(); bool open(const QString& filePath, int page = -1, const QRectF& highlight = QRectF(), bool quiet = false); bool openInNewTab(const QString& filePath, int page = -1, const QRectF& highlight = QRectF(), bool quiet = false); bool jumpToPageOrOpenInNewTab(const QString& filePath, int page = -1, bool refreshBeforeJump = false, const QRectF& highlight = QRectF(), bool quiet = false); void startSearch(const QString& text); void saveDatabase(); protected slots: void on_tabWidget_currentChanged(); void on_tabWidget_tabCloseRequested(int index); void on_tabWidget_tabDragRequested(int index); void on_tabWidget_tabContextMenuRequested(QPoint globalPos, int index); void on_currentTab_documentChanged(); void on_currentTab_documentModified(); void on_currentTab_numberOfPagesChaned(int numberOfPages); void on_currentTab_currentPageChanged(int currentPage); void on_currentTab_canJumpChanged(bool backward, bool forward); void on_currentTab_continuousModeChanged(bool continuousMode); void on_currentTab_layoutModeChanged(LayoutMode layoutMode); void on_currentTab_rightToLeftModeChanged(bool rightToLeftMode); void on_currentTab_scaleModeChanged(ScaleMode scaleMode); void on_currentTab_scaleFactorChanged(qreal scaleFactor); void on_currentTab_rotationChanged(Rotation rotation); void on_currentTab_linkClicked(int page); void on_currentTab_linkClicked(bool newTab, const QString& filePath, int page); void on_currentTab_renderFlagsChanged(qpdfview::RenderFlags renderFlags); void on_currentTab_invertColorsChanged(bool invertColors); void on_currentTab_convertToGrayscaleChanged(bool convertToGrayscale); void on_currentTab_trimMarginsChanged(bool trimMargins); void on_currentTab_compositionModeChanged(CompositionMode compositionMode); void on_currentTab_highlightAllChanged(bool highlightAll); void on_currentTab_rubberBandModeChanged(RubberBandMode rubberBandMode); void on_currentTab_searchFinished(); void on_currentTab_searchProgressChanged(int progress); void on_currentTab_customContextMenuRequested(QPoint pos); void on_splitView_splitHorizontally_triggered(); void on_splitView_splitVertically_triggered(); void on_splitView_split_triggered(Qt::Orientation orientation, int index); void on_splitView_closeCurrent_triggered(); void on_splitView_closeCurrent_triggered(int index); void on_splitView_currentWidgetChanged(QWidget* currentWidget); void on_currentPage_editingFinished(); void on_currentPage_returnPressed(); void on_scaleFactor_activated(int index); void on_scaleFactor_editingFinished(); void on_scaleFactor_returnPressed(); void on_open_triggered(); void on_openInNewTab_triggered(); void on_openCopyInNewTab_triggered(); void on_openCopyInNewTab_triggered(const DocumentView* tab); void on_openCopyInNewWindow_triggered(); void on_openCopyInNewWindow_triggered(const DocumentView* tab); void on_openContainingFolder_triggered(); void on_openContainingFolder_triggered(const DocumentView* tab); void on_moveToInstance_triggered(); void on_moveToInstance_triggered(DocumentView* tab); void on_refresh_triggered(); void on_save_triggered(); void on_saveAs_triggered(); void on_saveCopy_triggered(); void on_print_triggered(); void on_recentlyUsed_openTriggered(const QString& filePath); void on_previousPage_triggered(); void on_nextPage_triggered(); void on_firstPage_triggered(); void on_lastPage_triggered(); void on_setFirstPage_triggered(); void on_jumpToPage_triggered(); void on_jumpBackward_triggered(); void on_jumpForward_triggered(); void on_search_triggered(); void on_findPrevious_triggered(); void on_findNext_triggered(); void on_cancelSearch_triggered(); void on_copyToClipboardMode_triggered(bool checked); void on_addAnnotationMode_triggered(bool checked); void on_settings_triggered(); void on_continuousMode_triggered(bool checked); void on_twoPagesMode_triggered(bool checked); void on_twoPagesWithCoverPageMode_triggered(bool checked); void on_multiplePagesMode_triggered(bool checked); void on_rightToLeftMode_triggered(bool checked); void on_zoomIn_triggered(); void on_zoomOut_triggered(); void on_originalSize_triggered(); void on_fitToPageWidthMode_triggered(bool checked); void on_fitToPageSizeMode_triggered(bool checked); void on_rotateLeft_triggered(); void on_rotateRight_triggered(); void on_invertColors_triggered(bool checked); void on_convertToGrayscale_triggered(bool checked); void on_trimMargins_triggered(bool checked); void on_darkenWithPaperColor_triggered(bool checked); void on_lightenWithPaperColor_triggered(bool checked); void on_fonts_triggered(); void on_fullscreen_triggered(bool checked); void on_presentation_triggered(); void on_previousTab_triggered(); void on_nextTab_triggered(); void on_closeTab_triggered(); void on_closeAllTabs_triggered(); void on_closeAllTabsButCurrentTab_triggered(); void on_closeAllTabsButThisOne_triggered(int thisIndex); void on_closeAllTabsToTheLeft_triggered(int ofIndex); void on_closeAllTabsToTheRight_triggered(int ofIndex); void on_closeTabs_triggered(const QVector< DocumentView* >& tabs); void on_restoreMostRecentlyClosedTab_triggered(); void on_recentlyClosed_tabActionTriggered(QAction* tabAction); void on_tabAction_triggered(); void on_tabShortcut_activated(); void on_previousBookmark_triggered(); void on_nextBookmark_triggered(); void on_addBookmark_triggered(); void on_removeBookmark_triggered(); void on_removeAllBookmarks_triggered(); void on_bookmarksMenu_aboutToShow(); void on_bookmark_openTriggered(const QString& absoluteFilePath); void on_bookmark_openInNewTabTriggered(const QString& absoluteFilePath); void on_bookmark_jumpToPageTriggered(const QString& absoluteFilePath, int page); void on_bookmark_removeBookmarkTriggered(const QString& absoluteFilePath); void on_contents_triggered(); void on_about_triggered(); void on_focusCurrentPage_activated(); void on_focusScaleFactor_activated(); void on_toggleToolBars_triggered(bool checked); void on_toggleMenuBar_triggered(bool checked); void on_searchInitiated(const QString& text, bool modified); void on_highlightAll_clicked(bool checked); void on_dock_dockLocationChanged(Qt::DockWidgetArea area); void on_outline_sectionCountChanged(); void on_outline_clicked(const QModelIndex& index); void on_properties_sectionCountChanged(); void on_thumbnails_dockLocationChanged(Qt::DockWidgetArea area); void on_thumbnails_verticalScrollBar_valueChanged(int value); void on_bookmarks_sectionCountChanged(); void on_bookmarks_clicked(const QModelIndex& index); void on_bookmarks_contextMenuRequested(QPoint pos); void on_search_sectionCountChanged(); void on_search_dockLocationChanged(Qt::DockWidgetArea area); void on_search_visibilityChanged(bool visible); void on_search_clicked(const QModelIndex& index); void on_search_rowsInserted(const QModelIndex& parent, int first, int last); void on_saveDatabase_timeout(); protected: bool eventFilter(QObject* target, QEvent* event); void closeEvent(QCloseEvent* event); void dragEnterEvent(QDragEnterEvent* event); void dropEvent(QDropEvent* event); private: Q_DISABLE_COPY(MainWindow) static Settings* s_settings; static Database* s_database; static ShortcutHandler* s_shortcutHandler; static SearchModel* s_searchModel; void prepareStyle(); TabWidget* m_tabWidget; DocumentView* currentTab() const; DocumentView* currentTab(int index) const; QVector< DocumentView* > allTabs(int index) const; QVector< DocumentView* > allTabs() const; bool senderIsCurrentTab() const; bool m_currentTabChangedBlocked; class CurrentTabChangeBlocker; void addTab(DocumentView* tab); void addTabAction(DocumentView* tab); void connectTab(DocumentView* tab); void restorePerFileSettings(DocumentView* tab); bool saveModifications(DocumentView* tab); void closeTab(DocumentView* tab); void setWindowTitleForCurrentTab(); void setCurrentPageSuffixForCurrentTab(); BookmarkModel* bookmarkModelForCurrentTab(bool create = false); QAction* sourceLinkActionForCurrentTab(QObject* parent, QPoint pos); class RestoreTab; QTimer* m_saveDatabaseTimer; void prepareDatabase(); void scheduleSaveDatabase(); void scheduleSaveTabs(); void scheduleSaveBookmarks(); void scheduleSavePerFileSettings(); class TextValueMapper; MappingSpinBox* m_currentPageSpinBox; QWidgetAction* m_currentPageAction; ComboBox* m_scaleFactorComboBox; QWidgetAction* m_scaleFactorAction; SearchLineEdit* m_searchLineEdit; QCheckBox* m_matchCaseCheckBox; QCheckBox* m_wholeWordsCheckBox; QCheckBox* m_highlightAllCheckBox; QToolButton* m_findPreviousButton; QToolButton* m_findNextButton; QToolButton* m_cancelSearchButton; void createWidgets(); QAction* m_openAction; QAction* m_openInNewTabAction; QAction* m_refreshAction; QAction* m_saveAction; QAction* m_saveAsAction; QAction* m_saveCopyAction; QAction* m_printAction; QAction* m_exitAction; QAction* m_previousPageAction; QAction* m_nextPageAction; QAction* m_firstPageAction; QAction* m_lastPageAction; QAction* m_setFirstPageAction; QAction* m_jumpToPageAction; QAction* m_jumpBackwardAction; QAction* m_jumpForwardAction; QAction* m_searchAction; QAction* m_findPreviousAction; QAction* m_findNextAction; QAction* m_cancelSearchAction; QAction* m_copyToClipboardModeAction; QAction* m_addAnnotationModeAction; QAction* m_settingsAction; QAction* m_continuousModeAction; QAction* m_twoPagesModeAction; QAction* m_twoPagesWithCoverPageModeAction; QAction* m_multiplePagesModeAction; QAction* m_rightToLeftModeAction; QAction* m_zoomInAction; QAction* m_zoomOutAction; QAction* m_originalSizeAction; QAction* m_fitToPageWidthModeAction; QAction* m_fitToPageSizeModeAction; QAction* m_rotateLeftAction; QAction* m_rotateRightAction; QAction* m_invertColorsAction; QAction* m_convertToGrayscaleAction; QAction* m_trimMarginsAction; QAction* m_darkenWithPaperColorAction; QAction* m_lightenWithPaperColorAction; QAction* m_fontsAction; QAction* m_fullscreenAction; QAction* m_presentationAction; QAction* m_previousTabAction; QAction* m_nextTabAction; QAction* m_closeTabAction; QAction* m_closeAllTabsAction; QAction* m_closeAllTabsButCurrentTabAction; QAction* m_restoreMostRecentlyClosedTabAction; QShortcut* m_tabShortcuts[9]; QAction* m_previousBookmarkAction; QAction* m_nextBookmarkAction; QAction* m_addBookmarkAction; QAction* m_removeBookmarkAction; QAction* m_removeAllBookmarksAction; QAction* m_contentsAction; QAction* m_aboutAction; QAction* m_openCopyInNewTabAction; QAction* m_openCopyInNewWindowAction; QAction* m_openContainingFolderAction; QAction* m_moveToInstanceAction; QAction* m_splitViewHorizontallyAction; QAction* m_splitViewVerticallyAction; QAction* m_closeCurrentViewAction; QAction* createAction(const QString& text, const QString& objectName, const QIcon& icon, const QList< QKeySequence >& shortcuts, const char* member, bool checkable = false, bool checked = false); QAction* createAction(const QString& text, const QString& objectName, const QIcon& icon, const QKeySequence& shortcut, const char* member, bool checkable = false, bool checked = false); QAction* createAction(const QString& text, const QString& objectName, const QString& iconName, const QList< QKeySequence >& shortcuts, const char* member, bool checkable = false, bool checked = false); QAction* createAction(const QString& text, const QString& objectName, const QString& iconName, const QKeySequence& shortcut, const char* member, bool checkable = false, bool checked = false); void createActions(); QToolBar* m_fileToolBar; QToolBar* m_editToolBar; QToolBar* m_viewToolBar; QShortcut* m_focusCurrentPageShortcut; QShortcut* m_focusScaleFactorShortcut; QToolBar* createToolBar(const QString& text, const QString& objectName, const QStringList& actionNames, const QList< QAction* >& actions); void createToolBars(); QDockWidget* m_outlineDock; TreeView* m_outlineView; QDockWidget* m_propertiesDock; QTableView* m_propertiesView; QDockWidget* m_thumbnailsDock; QGraphicsView* m_thumbnailsView; QDockWidget* m_bookmarksDock; QTableView* m_bookmarksView; QDockWidget* m_searchDock; QTreeView* m_searchView; QWidget* m_searchWidget; QDockWidget* createDock(const QString& text, const QString& objectName, const QKeySequence& toggleViewShortcut); void createSearchDock(); void createDocks(); QMenu* m_fileMenu; RecentlyUsedMenu* m_recentlyUsedMenu; QMenu* m_editMenu; QMenu* m_viewMenu; QMenu* m_compositionModeMenu; SearchableMenu* m_tabsMenu; RecentlyClosedMenu* m_recentlyClosedMenu; SearchableMenu* m_bookmarksMenu; QMenu* m_helpMenu; bool m_bookmarksMenuIsDirty; void createMenus(); int m_tabBarHadPolicy; bool m_fileToolBarWasVisible; bool m_editToolBarWasVisible; bool m_viewToolBarWasVisible; QAction* m_toggleToolBarsAction; QAction* m_toggleMenuBarAction; QPointer< HelpDialog > m_helpDialog; }; #ifdef WITH_DBUS class MainWindowAdaptor : public QDBusAbstractAdaptor { Q_OBJECT Q_CLASSINFO("D-Bus Interface", "local.qpdfview.MainWindow") explicit MainWindowAdaptor(MainWindow* mainWindow); public: static QDBusInterface* createInterface(const QString& instanceName = QString()); static MainWindowAdaptor* createAdaptor(MainWindow* mainWindow); public slots: Q_NOREPLY void raiseAndActivate(); bool open(const QString& absoluteFilePath, int page = -1, const QRectF& highlight = QRectF(), bool quiet = false); bool openInNewTab(const QString& absoluteFilePath, int page = -1, const QRectF& highlight = QRectF(), bool quiet = false); bool jumpToPageOrOpenInNewTab(const QString& absoluteFilePath, int page = -1, bool refreshBeforeJump = false, const QRectF& highlight = QRectF(), bool quiet = false); Q_NOREPLY void startSearch(const QString& text); Q_NOREPLY void saveDatabase(); int currentPage() const; Q_NOREPLY void jumpToPage(int page); Q_NOREPLY void previousPage(); Q_NOREPLY void nextPage(); Q_NOREPLY void firstPage(); Q_NOREPLY void lastPage(); Q_NOREPLY void previousBookmark(); Q_NOREPLY void nextBookmark(); bool jumpToBookmark(const QString& label); Q_NOREPLY void continuousMode(bool checked); Q_NOREPLY void twoPagesMode(bool checked); Q_NOREPLY void twoPagesWithCoverPageMode(bool checked); Q_NOREPLY void multiplePagesMode(bool checked); Q_NOREPLY void fitToPageWidthMode(bool checked); Q_NOREPLY void fitToPageSizeMode(bool checked); Q_NOREPLY void invertColors(bool checked); Q_NOREPLY void convertToGrayscale(bool checked); Q_NOREPLY void trimMargins(bool checked); Q_NOREPLY void fullscreen(bool checked); Q_NOREPLY void presentation(); Q_NOREPLY void closeTab(); Q_NOREPLY void closeAllTabs(); Q_NOREPLY void closeAllTabsButCurrentTab(); bool closeTab(const QString& absoluteFilePath); private: MainWindow* mainWindow() const; static QString serviceName(QString instanceName = QString()); }; #endif // WITH_DBUS } // qpdfview #endif // MAINWINDOW_H qpdfview-0.4.18/sources/miscellaneous.cpp0000644000000000000000000005365213516127411016625 0ustar 00000000000000/* Copyright 2014 S. Razi Alavizadeh Copyright 2012-2018 Adam Reichold Copyright 2018 Pavel Sanda Copyright 2014 Dorian Scholz This file is part of qpdfview. qpdfview is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. qpdfview is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with qpdfview. If not, see . */ #include "miscellaneous.h" #include #include #include #include #include #include #include #include #include #include #include #include #include "searchmodel.h" namespace qpdfview { namespace { inline bool isPrintable(const QString& string) { foreach(const QChar& character, string) { if(!character.isPrint()) { return false; } } return true; } inline QModelIndex firstIndex(const QModelIndexList& indexes) { return !indexes.isEmpty() ? indexes.first() : QModelIndex(); } } // anonymous GraphicsCompositionModeEffect::GraphicsCompositionModeEffect(QPainter::CompositionMode compositionMode, QObject* parent) : QGraphicsEffect(parent), m_compositionMode(compositionMode) { } void GraphicsCompositionModeEffect::draw(QPainter* painter) { painter->save(); painter->setCompositionMode(m_compositionMode); drawSource(painter); painter->restore(); } ProxyStyle::ProxyStyle() : QProxyStyle(), m_scrollableMenus(false) { } bool ProxyStyle::scrollableMenus() const { return m_scrollableMenus; } void ProxyStyle::setScrollableMenus(bool scrollableMenus) { m_scrollableMenus = scrollableMenus; } int ProxyStyle::styleHint(StyleHint hint, const QStyleOption* option, const QWidget* widget, QStyleHintReturn* returnData) const { if(m_scrollableMenus && hint == QStyle::SH_Menu_Scrollable) { return 1; } return QProxyStyle::styleHint(hint, option, widget, returnData); } ToolTipMenu::ToolTipMenu(QWidget* parent) : QMenu(parent) { } ToolTipMenu::ToolTipMenu(const QString& title, QWidget* parent) : QMenu(title, parent) { } bool ToolTipMenu::event(QEvent* event) { const QAction* const action = activeAction(); if(event->type() == QEvent::ToolTip && action != 0 && !action->data().isNull()) { QToolTip::showText(static_cast< QHelpEvent* >(event)->globalPos(), action->toolTip()); } else { QToolTip::hideText(); } return QMenu::event(event); } SearchableMenu::SearchableMenu(const QString& title, QWidget* parent) : ToolTipMenu(title, parent), m_searchable(false), m_text() { } bool SearchableMenu::isSearchable() const { return m_searchable; } void SearchableMenu::setSearchable(bool searchable) { m_searchable = searchable; } void SearchableMenu::hideEvent(QHideEvent* event) { QMenu::hideEvent(event); if(m_searchable && !event->spontaneous()) { m_text = QString(); foreach(QAction* action, actions()) { action->setVisible(true); } } } void SearchableMenu::keyPressEvent(QKeyEvent* event) { if(!m_searchable) { QMenu::keyPressEvent(event); return; } const QString text = event->text(); if(!text.isEmpty() && isPrintable(text)) { m_text.append(text); } else if(event->key() == Qt::Key_Backspace || event->key() == Qt::Key_Delete) { m_text.chop(1); } else { QMenu::keyPressEvent(event); return; } QAction* firstVisibleAction = 0; foreach(QAction* action, actions()) { if(action->data().isNull()) // Modify only flagged actions { continue; } const bool visible = action->text().contains(m_text, Qt::CaseInsensitive); action->setVisible(visible); if(visible && firstVisibleAction == 0) { firstVisibleAction = action; } } setActiveAction(firstVisibleAction); QToolTip::showText(mapToGlobal(rect().topLeft()), tr("Search for '%1'...").arg(m_text), this); } TabBar::TabBar(QWidget* parent) : QTabBar(parent), m_dragIndex(-1) { } QSize TabBar::tabSizeHint(int index) const { QSize size = QTabBar::tabSizeHint(index); const TabWidget* tabWidget = qobject_cast< TabWidget* >(parentWidget()); if(tabWidget != 0 && tabWidget->spreadTabs()) { switch(tabWidget->tabPosition()) { default: case QTabWidget::North: case QTabWidget::South: size.setWidth(qMax(width() / count(), size.width())); break; case QTabWidget::East: case QTabWidget::West: size.setHeight(qMax(height() / count(), size.height())); break; } } return size; } void TabBar::mousePressEvent(QMouseEvent* event) { if(event->button() == Qt::MidButton) { const int index = tabAt(event->pos()); if(index != -1) { emit tabCloseRequested(index); event->accept(); return; } } else if(event->modifiers() == Qt::ShiftModifier && event->button() == Qt::LeftButton) { const int index = tabAt(event->pos()); if(index != -1) { m_dragIndex = index; m_dragPos = event->pos(); event->accept(); return; } } QTabBar::mousePressEvent(event); } void TabBar::mouseMoveEvent(QMouseEvent* event) { QTabBar::mouseMoveEvent(event); if(m_dragIndex != -1) { if((event->pos() - m_dragPos).manhattanLength() >= QApplication::startDragDistance()) { emit tabDragRequested(m_dragIndex); m_dragIndex = -1; } } } void TabBar::mouseReleaseEvent(QMouseEvent* event) { QTabBar::mouseReleaseEvent(event); m_dragIndex = -1; } TabWidget::TabWidget(QWidget* parent) : QTabWidget(parent), m_tabBarPolicy(TabBarAsNeeded), m_spreadTabs(false) { TabBar* tabBar = new TabBar(this); tabBar->setContextMenuPolicy(Qt::CustomContextMenu); connect(tabBar, SIGNAL(tabDragRequested(int)), SIGNAL(tabDragRequested(int))); connect(tabBar, SIGNAL(customContextMenuRequested(QPoint)), SLOT(on_tabBar_customContextMenuRequested(QPoint))); setTabBar(tabBar); } int TabWidget::addTab(QWidget* const widget, const bool nextToCurrent, const QString& label, const QString& toolTip) { const int index = nextToCurrent ? insertTab(currentIndex() + 1, widget, label) : QTabWidget::addTab(widget, label); setTabToolTip(index, toolTip); setCurrentIndex(index); return index; } TabWidget::TabBarPolicy TabWidget::tabBarPolicy() const { return m_tabBarPolicy; } void TabWidget::setTabBarPolicy(TabWidget::TabBarPolicy tabBarPolicy) { m_tabBarPolicy = tabBarPolicy; switch(m_tabBarPolicy) { case TabBarAsNeeded: tabBar()->setVisible(count() > 1); break; case TabBarAlwaysOn: tabBar()->setVisible(true); break; case TabBarAlwaysOff: tabBar()->setVisible(false); break; } } bool TabWidget::spreadTabs() const { return m_spreadTabs; } void TabWidget::setSpreadTabs(bool spreadTabs) { if(m_spreadTabs != spreadTabs) { m_spreadTabs = spreadTabs; QResizeEvent resizeEvent(tabBar()->size(), tabBar()->size()); QApplication::sendEvent(tabBar(), &resizeEvent); } } void TabWidget::previousTab() { int index = currentIndex() - 1; if(index < 0) { index = count() - 1; } setCurrentIndex(index); } void TabWidget::nextTab() { int index = currentIndex() + 1; if(index >= count()) { index = 0; } setCurrentIndex(index); } void TabWidget::on_tabBar_customContextMenuRequested(QPoint pos) { const int index = tabBar()->tabAt(pos); if(index != -1) { emit tabContextMenuRequested(tabBar()->mapToGlobal(pos), tabBar()->tabAt(pos)); } } void TabWidget::tabInserted(int index) { QTabWidget::tabInserted(index); if(m_tabBarPolicy == TabBarAsNeeded) { tabBar()->setVisible(count() > 1); } } void TabWidget::tabRemoved(int index) { QTabWidget::tabRemoved(index); if(m_tabBarPolicy == TabBarAsNeeded) { tabBar()->setVisible(count() > 1); } } TreeView::TreeView(int expansionRole, QWidget* parent) : QTreeView(parent), m_expansionRole(expansionRole) { connect(this, SIGNAL(expanded(QModelIndex)), SLOT(on_expanded(QModelIndex))); connect(this, SIGNAL(collapsed(QModelIndex)), SLOT(on_collapsed(QModelIndex))); } void TreeView::expandAbove(const QModelIndex& child) { for(QModelIndex index = child.parent(); index.isValid(); index = index.parent()) { expand(index); } } void TreeView::expandAll(const QModelIndex& index) { if(index.isValid()) { if(!isExpanded(index)) { expand(index); } for(int row = 0, rowCount = model()->rowCount(index); row < rowCount; ++row) { expandAll(index.child(row, 0)); } } else { QTreeView::expandAll(); } } void TreeView::collapseAll(const QModelIndex& index) { if(index.isValid()) { if(isExpanded(index)) { collapse(index); } for(int row = 0, rowCount = model()->rowCount(index); row < rowCount; ++row) { collapseAll(index.child(row, 0)); } } else { QTreeView::collapseAll(); } } int TreeView::expandedDepth(const QModelIndex& index) { if(index.isValid()) { if(!isExpanded(index) || !model()->hasChildren(index)) { return 0; } int depth = 0; for(int row = 0, rowCount = model()->rowCount(index); row < rowCount; ++row) { depth = qMax(depth, expandedDepth(index.child(row, 0))); } return 1 + depth; } else { int depth = 0; for(int row = 0, rowCount = model()->rowCount(); row < rowCount; ++row) { depth = qMax(depth, expandedDepth(model()->index(row, 0))); } return depth; } } void TreeView::expandToDepth(const QModelIndex& index, int depth) { if(index.isValid()) { if(depth > 0) { if(!isExpanded(index)) { expand(index); } } if(depth > 1) { for(int row = 0, rowCount = model()->rowCount(index); row < rowCount; ++row) { expandToDepth(index.child(row, 0), depth - 1); } } } else { for(int row = 0, rowCount = model()->rowCount(); row < rowCount; ++row) { expandToDepth(model()->index(row, 0), depth); } } } void TreeView::collapseFromDepth(const QModelIndex& index, int depth) { if(index.isValid()) { if(depth <= 0) { if(isExpanded(index)) { collapse(index); } } for(int row = 0, rowCount = model()->rowCount(index); row < rowCount; ++row) { collapseFromDepth(index.child(row, 0), depth - 1); } } else { for(int row = 0, rowCount = model()->rowCount(); row < rowCount; ++row) { collapseFromDepth(model()->index(row, 0), depth); } } } void TreeView::restoreExpansion(const QModelIndex& index) { if(index.isValid()) { const bool expanded = index.data(m_expansionRole).toBool(); if(isExpanded(index) != expanded) { setExpanded(index, expanded); } } for(int row = 0, rowCount = model()->rowCount(index); row < rowCount; ++row) { restoreExpansion(model()->index(row, 0, index)); } } void TreeView::keyPressEvent(QKeyEvent* event) { const bool verticalKeys = event->key() == Qt::Key_Up || event->key() == Qt::Key_Down; const bool horizontalKeys = event->key() == Qt::Key_Left || event->key() == Qt::Key_Right; const QModelIndex selection = firstIndex(selectedIndexes()); // If Shift is pressed, the view is scrolled up or down. if(event->modifiers().testFlag(Qt::ShiftModifier) && verticalKeys) { QScrollBar* scrollBar = verticalScrollBar(); if(event->key() == Qt::Key_Up && scrollBar->value() > scrollBar->minimum()) { scrollBar->triggerAction(QAbstractSlider::SliderSingleStepSub); event->accept(); return; } else if(event->key() == Qt::Key_Down && scrollBar->value() < scrollBar->maximum()) { scrollBar->triggerAction(QAbstractSlider::SliderSingleStepAdd); event->accept(); return; } } // If Control is pressed, all children of the selected item are expanded or collapsed. if(event->modifiers().testFlag(Qt::ControlModifier) && horizontalKeys) { if(event->key() == Qt::Key_Left) { collapseAll(selection); } else if(event->key() == Qt::Key_Right) { expandAll(selection); } event->accept(); return; } // If Shift is pressed, one level of children of the selected item are expanded or collapsed. if(event->modifiers().testFlag(Qt::ShiftModifier) && horizontalKeys) { const int depth = expandedDepth(selection); if(event->key() == Qt::Key_Left) { collapseFromDepth(selection, depth - 1); } else if(event->key() == Qt::Key_Right) { expandToDepth(selection, depth + 1); } event->accept(); return; } QTreeView::keyPressEvent(event); } void TreeView::wheelEvent(QWheelEvent* event) { const QModelIndex selection = firstIndex(selectedIndexes()); // If Control is pressed, expand or collapse the selected entry. if(event->modifiers().testFlag(Qt::ControlModifier) && selection.isValid()) { if(event->delta() > 0) { collapse(selection); } else { expand(selection); } // Fall through when Shift is also pressed. if(!event->modifiers().testFlag(Qt::ShiftModifier)) { event->accept(); return; } } // If Shift is pressed, move the selected entry up and down. if(event->modifiers().testFlag(Qt::ShiftModifier) && selection.isValid()) { QModelIndex sibling; if(event->delta() > 0) { sibling = indexAbove(selection); } else { sibling = indexBelow(selection); } if(sibling.isValid()) { setCurrentIndex(sibling); } event->accept(); return; } QTreeView::wheelEvent(event); } void TreeView::contextMenuEvent(QContextMenuEvent* event) { QTreeView::contextMenuEvent(event); if(!event->isAccepted()) { QMenu menu; const QAction* expandAllAction = menu.addAction(tr("&Expand all")); const QAction* collapseAllAction = menu.addAction(tr("&Collapse all")); const QAction* action = menu.exec(event->globalPos()); if(action == expandAllAction) { expandAll(indexAt(event->pos())); } else if(action == collapseAllAction) { collapseAll(indexAt(event->pos())); } } } void TreeView::on_expanded(const QModelIndex& index) { model()->setData(index, true, m_expansionRole); } void TreeView::on_collapsed(const QModelIndex& index) { model()->setData(index, false, m_expansionRole); } LineEdit::LineEdit(QWidget* parent) : QLineEdit(parent) { } void LineEdit::mousePressEvent(QMouseEvent* event) { QLineEdit::mousePressEvent(event); selectAll(); } ComboBox::ComboBox(QWidget* parent) : QComboBox(parent) { setLineEdit(new LineEdit(this)); } SpinBox::SpinBox(QWidget* parent) : QSpinBox(parent) { setLineEdit(new LineEdit(this)); } void SpinBox::keyPressEvent(QKeyEvent* event) { QSpinBox::keyPressEvent(event); if(event->key() == Qt::Key_Return || event->key() == Qt::Key_Enter) { emit returnPressed(); } } MappingSpinBox::MappingSpinBox(TextValueMapper* mapper, QWidget* parent) : SpinBox(parent), m_mapper(mapper) { } QString MappingSpinBox::textFromValue(int val) const { bool ok = false; QString text = m_mapper->textFromValue(val, ok); if(!ok) { text = SpinBox::textFromValue(val); } return text; } int MappingSpinBox::valueFromText(const QString& text) const { bool ok = false; int value = m_mapper->valueFromText(text, ok); if(!ok) { value = SpinBox::valueFromText(text); } return value; } QValidator::State MappingSpinBox::validate(QString& input, int& pos) const { Q_UNUSED(input); Q_UNUSED(pos); return QValidator::Acceptable; } int getMappedNumber(MappingSpinBox::TextValueMapper* mapper, QWidget* parent, const QString& title, const QString& caption, int value, int min, int max, bool* ok, Qt::WindowFlags flags) { QDialog* dialog = new QDialog(parent, flags | Qt::MSWindowsFixedSizeDialogHint); dialog->setWindowTitle(title); QLabel* label = new QLabel(dialog); label->setText(caption); MappingSpinBox* mappingSpinBox = new MappingSpinBox(mapper, dialog); mappingSpinBox->setRange(min, max); mappingSpinBox->setValue(value); mappingSpinBox->selectAll(); QDialogButtonBox* dialogButtonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, Qt::Horizontal, dialog); QObject::connect(dialogButtonBox, SIGNAL(accepted()), dialog, SLOT(accept())); QObject::connect(dialogButtonBox, SIGNAL(rejected()), dialog, SLOT(reject())); dialog->setLayout(new QVBoxLayout(dialog)); dialog->layout()->addWidget(label); dialog->layout()->addWidget(mappingSpinBox); dialog->layout()->addWidget(dialogButtonBox); dialog->setFocusProxy(mappingSpinBox); const int dialogResult = dialog->exec(); const int number = mappingSpinBox->value(); delete dialog; if(ok) { *ok = dialogResult == QDialog::Accepted; } return number; } ProgressLineEdit::ProgressLineEdit(QWidget* parent) : QLineEdit(parent), m_progress(0) { } int ProgressLineEdit::progress() const { return m_progress; } void ProgressLineEdit::setProgress(int progress) { if(m_progress != progress && progress >= 0 && progress <= 100) { m_progress = progress; update(); } } void ProgressLineEdit::paintEvent(QPaintEvent* event) { QLineEdit::paintEvent(event); QPainter painter(this); QRect highlightedRect = rect(); highlightedRect.setWidth(m_progress * highlightedRect.width() / 100); painter.setCompositionMode(QPainter::CompositionMode_Multiply); painter.fillRect(highlightedRect, palette().highlight()); } void ProgressLineEdit::keyPressEvent(QKeyEvent* event) { QLineEdit::keyPressEvent(event); if(event->key() == Qt::Key_Return || event->key() == Qt::Key_Enter) { emit returnPressed(event->modifiers()); } } SearchLineEdit::SearchLineEdit(QWidget* parent) : ProgressLineEdit(parent) { m_timer = new QTimer(this); m_timer->setInterval(2000); m_timer->setSingleShot(true); connect(this, SIGNAL(textEdited(QString)), m_timer, SLOT(start())); connect(this, SIGNAL(returnPressed(Qt::KeyboardModifiers)), SLOT(on_returnPressed(Qt::KeyboardModifiers))); connect(m_timer, SIGNAL(timeout()), SLOT(on_timeout())); } void SearchLineEdit::startSearch() { QTimer::singleShot(0, this, SLOT(on_timeout())); } void SearchLineEdit::startTimer() { m_timer->start(); } void SearchLineEdit::stopTimer() { m_timer->stop(); } void SearchLineEdit::on_timeout() { emit searchInitiated(text()); } void SearchLineEdit::on_returnPressed(Qt::KeyboardModifiers modifiers) { stopTimer(); emit searchInitiated(text(), modifiers == Qt::ShiftModifier); } Splitter::Splitter(Qt::Orientation orientation, QWidget* parent) : QSplitter(orientation, parent), m_currentIndex(0) { connect(qApp, SIGNAL(focusChanged(QWidget*,QWidget*)), this, SLOT(on_focusChanged(QWidget*,QWidget*))); } QWidget* Splitter::currentWidget() const { return widget(m_currentIndex); } void Splitter::setCurrentWidget(QWidget* const currentWidget) { for(int index = 0, count = this->count(); index < count; ++index) { QWidget* const widget = this->widget(index); if(currentWidget == widget) { if(m_currentIndex != index) { m_currentIndex = index; emit currentWidgetChanged(currentWidget); } return; } } } void Splitter::setUniformSizes() { int size; switch(orientation()) { default: case Qt::Horizontal: size = width(); break; case Qt::Vertical: size = height(); break; } QList< int > sizes; for(int index = 0, count = this->count(); index < count; ++index) { sizes.append(size / count); } setSizes(sizes); } void Splitter::on_focusChanged(QWidget* /* old */, QWidget* now) { for(QWidget* currentWidget = now; currentWidget != 0; currentWidget = currentWidget->parentWidget()) { if(currentWidget->parentWidget() == this) { setCurrentWidget(currentWidget); return; } } } void openInNewWindow(const QString& filePath, int page) { QProcess::startDetached( QApplication::applicationFilePath(), QStringList() << QString("%2#%1").arg(page).arg(filePath) ); } } // qpdfview qpdfview-0.4.18/sources/miscellaneous.h0000644000000000000000000002020613516127411016257 0ustar 00000000000000/* Copyright 2014 S. Razi Alavizadeh Copyright 2012-2018 Adam Reichold Copyright 2018 Pavel Sanda Copyright 2014 Dorian Scholz This file is part of qpdfview. qpdfview is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. qpdfview is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with qpdfview. If not, see . */ #ifndef MISCELLANEOUS_H #define MISCELLANEOUS_H #include #include #include #include #include #include #include #include #include class QTextLayout; namespace qpdfview { // graphics composition mode effect class GraphicsCompositionModeEffect : public QGraphicsEffect { Q_OBJECT public: GraphicsCompositionModeEffect(QPainter::CompositionMode compositionMode, QObject* parent = 0); protected: void draw(QPainter* painter); private: QPainter::CompositionMode m_compositionMode; }; // proxy style class ProxyStyle : public QProxyStyle { Q_OBJECT public: ProxyStyle(); bool scrollableMenus() const; void setScrollableMenus(bool scrollableMenus); int styleHint(StyleHint hint, const QStyleOption* option, const QWidget* widget, QStyleHintReturn* returnData) const; private: Q_DISABLE_COPY(ProxyStyle) bool m_scrollableMenus; }; // tool tip menu class ToolTipMenu : public QMenu { Q_OBJECT public: explicit ToolTipMenu(QWidget* parent = 0); ToolTipMenu(const QString& title, QWidget* parent = 0); protected: bool event(QEvent* event); }; // searchable menu class SearchableMenu : public ToolTipMenu { Q_OBJECT public: SearchableMenu(const QString& title, QWidget* parent = 0); bool isSearchable() const; void setSearchable(bool searchable); protected: void hideEvent(QHideEvent* event); void keyPressEvent(QKeyEvent* event); private: bool m_searchable; QString m_text; }; // tab bar class TabBar : public QTabBar { Q_OBJECT public: explicit TabBar(QWidget* parent = 0); signals: void tabDragRequested(int index); protected: QSize tabSizeHint(int index) const; void mousePressEvent(QMouseEvent* event); void mouseMoveEvent(QMouseEvent* event); void mouseReleaseEvent(QMouseEvent* event); private: Q_DISABLE_COPY(TabBar) int m_dragIndex; QPoint m_dragPos; }; // tab widget class TabWidget : public QTabWidget { Q_OBJECT public: explicit TabWidget(QWidget* parent = 0); bool hasCurrent() const { return currentIndex() != -1; } QString currentTabText() const { return tabText(currentIndex()); } void setCurrentTabText(const QString& text) { setTabText(currentIndex(), text); } QString currentTabToolTip() const { return tabToolTip(currentIndex()); } void setCurrentTabToolTip(const QString& toolTip) { setTabToolTip(currentIndex(), toolTip); } int addTab(QWidget* const widget, const bool nextToCurrent, const QString& label, const QString& toolTip); enum TabBarPolicy { TabBarAsNeeded = 0, TabBarAlwaysOn = 1, TabBarAlwaysOff = 2 }; TabBarPolicy tabBarPolicy() const; void setTabBarPolicy(TabBarPolicy tabBarPolicy); bool spreadTabs() const; void setSpreadTabs(bool spreadTabs); public slots: void previousTab(); void nextTab(); signals: void tabDragRequested(int index); void tabContextMenuRequested(QPoint globalPos, int index); protected slots: void on_tabBar_customContextMenuRequested(QPoint pos); protected: void tabInserted(int index); void tabRemoved(int index); private: Q_DISABLE_COPY(TabWidget) TabBarPolicy m_tabBarPolicy; bool m_spreadTabs; }; // tree view class TreeView : public QTreeView { Q_OBJECT public: explicit TreeView(int expansionRole, QWidget* parent = 0); public slots: void expandAbove(const QModelIndex& child); void expandAll(const QModelIndex& index = QModelIndex()); void collapseAll(const QModelIndex& index = QModelIndex()); int expandedDepth(const QModelIndex& index); void expandToDepth(const QModelIndex& index, int depth); void collapseFromDepth(const QModelIndex& index, int depth); void restoreExpansion(const QModelIndex& index = QModelIndex()); protected: void keyPressEvent(QKeyEvent* event); void wheelEvent(QWheelEvent* event); void contextMenuEvent(QContextMenuEvent* event); protected slots: void on_expanded(const QModelIndex& index); void on_collapsed(const QModelIndex& index); private: Q_DISABLE_COPY(TreeView) int m_expansionRole; }; // line edit class LineEdit : public QLineEdit { Q_OBJECT public: explicit LineEdit(QWidget* parent = 0); protected: void mousePressEvent(QMouseEvent* event); private: Q_DISABLE_COPY(LineEdit) }; // combo box class ComboBox : public QComboBox { Q_OBJECT public: explicit ComboBox(QWidget* parent = 0); private: Q_DISABLE_COPY(ComboBox) }; // spin box class SpinBox : public QSpinBox { Q_OBJECT public: explicit SpinBox(QWidget* parent = 0); signals: void returnPressed(); protected: void keyPressEvent(QKeyEvent* event); private: Q_DISABLE_COPY(SpinBox) }; // mapping spin box class MappingSpinBox : public SpinBox { Q_OBJECT public: struct TextValueMapper { virtual ~TextValueMapper() {} virtual QString textFromValue(int val, bool& ok) const = 0; virtual int valueFromText(const QString& text, bool& ok) const = 0; }; MappingSpinBox(TextValueMapper* mapper, QWidget* parent = 0); protected: QString textFromValue(int val) const; int valueFromText(const QString& text) const; QValidator::State validate(QString& input, int& pos) const; private: Q_DISABLE_COPY(MappingSpinBox) QScopedPointer< TextValueMapper > m_mapper; }; int getMappedNumber(MappingSpinBox::TextValueMapper* mapper, QWidget* parent, const QString& title, const QString& caption, int value = 0, int min = -2147483647, int max = 2147483647, bool* ok = 0, Qt::WindowFlags flags = 0); // progress line edit class ProgressLineEdit : public QLineEdit { Q_OBJECT public: explicit ProgressLineEdit(QWidget* parent = 0); int progress() const; void setProgress(int progress); signals: void returnPressed(Qt::KeyboardModifiers modifiers); protected: void paintEvent(QPaintEvent* event); void keyPressEvent(QKeyEvent* event); private: Q_DISABLE_COPY(ProgressLineEdit) int m_progress; }; // search line edit class SearchLineEdit : public ProgressLineEdit { Q_OBJECT public: explicit SearchLineEdit(QWidget* parent = 0); public slots: void startSearch(); void startTimer(); void stopTimer(); signals: void searchInitiated(const QString& text, bool modified = false); protected slots: void on_timeout(); void on_returnPressed(Qt::KeyboardModifiers modifiers); private: Q_DISABLE_COPY(SearchLineEdit) QTimer* m_timer; }; // splitter class Splitter : public QSplitter { Q_OBJECT public: explicit Splitter(Qt::Orientation orientation, QWidget* parent = 0); QWidget* currentWidget() const; void setCurrentWidget(QWidget* const currentWidget); void setUniformSizes(); signals: void currentWidgetChanged(QWidget* currentWidget); protected slots: void on_focusChanged(QWidget* old, QWidget* now); private: Q_DISABLE_COPY(Splitter) int m_currentIndex; }; // fallback icons inline QIcon loadIconWithFallback(const QString& name) { QIcon icon = QIcon::fromTheme(name); if(icon.isNull()) { icon = QIcon(QLatin1String(":icons/") + name); } return icon; } void openInNewWindow(const QString& filePath, int page); } // qpdfview #endif // MISCELLANEOUS_H qpdfview-0.4.18/sources/model.h0000644000000000000000000001474313516127411014525 0ustar 00000000000000/* Copyright 2014 S. Razi Alavizadeh Copyright 2013-2014 Adam Reichold This file is part of qpdfview. qpdfview is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. qpdfview is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with qpdfview. If not, see . */ #ifndef DOCUMENTMODEL_H #define DOCUMENTMODEL_H #include #include #include #include class QAbstractItemModel; class QColor; class QImage; class QPrinter; class QSizeF; #include "global.h" namespace qpdfview { namespace Model { struct Link { QPainterPath boundary; int page; qreal left; qreal top; QString urlOrFileName; Link() : boundary(), page(-1), left(qQNaN()), top(qQNaN()), urlOrFileName() {} Link(const QPainterPath& boundary, int page, qreal left = qQNaN(), qreal top = qQNaN()) : boundary(boundary), page(page), left(left), top(top), urlOrFileName() {} Link(const QRectF& boundingRect, int page, qreal left = qQNaN(), qreal top = qQNaN()) : boundary(), page(page), left(left), top(top), urlOrFileName() { boundary.addRect(boundingRect); } Link(const QPainterPath& boundary, const QString& url) : boundary(boundary), page(-1), left(qQNaN()), top(qQNaN()), urlOrFileName(url) {} Link(const QRectF& boundingRect, const QString& url) : boundary(), page(-1), left(qQNaN()), top(qQNaN()), urlOrFileName(url) { boundary.addRect(boundingRect); } Link(const QPainterPath& boundary, const QString& fileName, int page) : boundary(boundary), page(page), left(qQNaN()), top(qQNaN()), urlOrFileName(fileName) {} Link(const QRectF& boundingRect, const QString& fileName, int page) : boundary(), page(page), left(qQNaN()), top(qQNaN()), urlOrFileName(fileName) { boundary.addRect(boundingRect); } }; struct Section; typedef QVector< Section > Outline; struct Section { QString title; Link link; Outline children; }; typedef QVector< QPair< QString, QString > > Properties; class Annotation : public QObject { Q_OBJECT public: Annotation(QObject* parent = 0) : QObject(parent) {} virtual ~Annotation() {} virtual QRectF boundary() const = 0; virtual QString contents() const = 0; virtual QWidget* createWidget() = 0; signals: void wasModified(); }; class FormField : public QObject { Q_OBJECT public: FormField(QObject* parent = 0) : QObject(parent) {} virtual ~FormField() {} virtual QRectF boundary() const = 0; virtual QString name() const = 0; virtual QWidget* createWidget() = 0; signals: void wasModified(); }; class Page { public: virtual ~Page() {} virtual QSizeF size() const = 0; virtual QImage render(qreal horizontalResolution = 72.0, qreal verticalResolution = 72.0, Rotation rotation = RotateBy0, QRect boundingRect = QRect()) const = 0; virtual QString label() const { return QString(); } virtual QList< Link* > links() const { return QList< Link* >(); } virtual QString text(const QRectF& rect) const { Q_UNUSED(rect); return QString(); } virtual QString cachedText(const QRectF& rect) const { return text(rect); } virtual QList< QRectF > search(const QString& text, bool matchCase, bool wholeWords) const { Q_UNUSED(text); Q_UNUSED(matchCase); Q_UNUSED(wholeWords); return QList< QRectF >(); } virtual QList< Annotation* > annotations() const { return QList< Annotation* >(); } virtual bool canAddAndRemoveAnnotations() const { return false; } virtual Annotation* addTextAnnotation(const QRectF& boundary, const QColor& color) { Q_UNUSED(boundary); Q_UNUSED(color); return 0; } virtual Annotation* addHighlightAnnotation(const QRectF& boundary, const QColor& color) { Q_UNUSED(boundary); Q_UNUSED(color); return 0; } virtual void removeAnnotation(Annotation* annotation) { Q_UNUSED(annotation); } virtual QList< FormField* > formFields() const { return QList< FormField* >(); } }; class Document { public: virtual ~Document() {} virtual int numberOfPages() const = 0; virtual Page* page(int index) const = 0; virtual bool isLocked() const { return false; } virtual bool unlock(const QString& password) { Q_UNUSED(password); return false; } virtual QStringList saveFilter() const { return QStringList(); } virtual bool canSave() const { return false; } virtual bool save(const QString& filePath, bool withChanges) const { Q_UNUSED(filePath); Q_UNUSED(withChanges); return false; } virtual bool canBePrintedUsingCUPS() const { return false; } virtual void setPaperColor(const QColor& paperColor) { Q_UNUSED(paperColor); } enum { PageRole = Qt::UserRole + 1, LeftRole, TopRole, FileNameRole, ExpansionRole }; virtual Outline outline() const { return Outline(); } virtual Properties properties() const { return Properties(); } virtual QAbstractItemModel* fonts() const { return 0; } virtual bool wantsContinuousMode() const { return false; } virtual bool wantsSinglePageMode() const { return false; } virtual bool wantsTwoPagesMode() const { return false; } virtual bool wantsTwoPagesWithCoverPageMode() const { return false; } virtual bool wantsRightToLeftMode() const { return false; } }; } class SettingsWidget : public QWidget { Q_OBJECT public: explicit SettingsWidget(QWidget* parent = 0) : QWidget(parent) {} virtual void accept() = 0; virtual void reset() = 0; }; class Plugin { public: virtual ~Plugin() {} virtual Model::Document* loadDocument(const QString& filePath) const = 0; virtual SettingsWidget* createSettingsWidget(QWidget* parent = 0) const { Q_UNUSED(parent); return 0; } }; } // qpdfview Q_DECLARE_INTERFACE(qpdfview::Plugin, "local.qpdfview.Plugin") #endif // DOCUMENTMODEL_H qpdfview-0.4.18/sources/pageitem.cpp0000644000000000000000000010511613516127411015546 0ustar 00000000000000/* Copyright 2012-2015 Adam Reichold This file is part of qpdfview. qpdfview is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. qpdfview is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with qpdfview. If not, see . */ #include "pageitem.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "settings.h" #include "model.h" #include "tileitem.h" namespace qpdfview { namespace { const int largeTilesThreshold = 8; const int veryLargeTilesThreshold = 16; const qreal proxyPadding = 2.0; inline bool modifiersAreActive(const QGraphicsSceneMouseEvent* event, Qt::KeyboardModifiers modifiers) { if(modifiers == Qt::NoModifier) { return false; } return event->modifiers() == modifiers || (event->buttons() & modifiers) != 0; } inline bool modifiersUseMouseButton(Settings* settings, Qt::MouseButton mouseButton) { return ((settings->pageItem().copyToClipboardModifiers() | settings->pageItem().addAnnotationModifiers()) & mouseButton) != 0; } } // anonymous Settings* PageItem::s_settings = 0; PageItem::PageItem(Model::Page* page, int index, PaintMode paintMode, QGraphicsItem* parent) : QGraphicsObject(parent), m_page(page), m_size(page->size()), m_cropRect(), m_index(index), m_paintMode(paintMode), m_highlights(), m_loadInteractiveElements(0), m_links(), m_annotations(), m_formFields(), m_rubberBandMode(ModifiersMode), m_rubberBand(), m_annotationOverlay(), m_formFieldOverlay(), m_renderParam(), m_transform(), m_normalizedTransform(), m_boundingRect(), m_tileItems() { if(s_settings == 0) { s_settings = Settings::instance(); } setAcceptHoverEvents(true); setFlag(QGraphicsItem::ItemUsesExtendedStyleOption, useTiling()); if(!useTiling()) { m_tileItems.resize(1); m_tileItems.squeeze(); m_tileItems.replace(0, new TileItem(this)); } prepareGeometry(); } PageItem::~PageItem() { if(m_loadInteractiveElements != 0) { m_loadInteractiveElements->waitForFinished(); delete m_loadInteractiveElements; m_loadInteractiveElements = 0; } hideAnnotationOverlay(false); hideFormFieldOverlay(false); TileItem::dropCachedPixmaps(this); qDeleteAll(m_links); qDeleteAll(m_annotations); qDeleteAll(m_formFields); qDeleteAll(m_tileItems); } QRectF PageItem::boundingRect() const { if(m_cropRect.isNull()) { return m_boundingRect; } QRectF boundingRect; boundingRect.setLeft(m_boundingRect.left() + m_cropRect.left() * m_boundingRect.width()); boundingRect.setTop(m_boundingRect.top() + m_cropRect.top() * m_boundingRect.height()); boundingRect.setWidth(m_cropRect.width() * m_boundingRect.width()); boundingRect.setHeight(m_cropRect.height() * m_boundingRect.height()); return boundingRect; } void PageItem::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget*) { paintPage(painter, option->exposedRect); paintLinks(painter); paintFormFields(painter); paintHighlights(painter); paintRubberBand(painter); } QSizeF PageItem::displayedSize(const RenderParam& renderParam) const { const bool rotationChanged = m_renderParam.rotation() != renderParam.rotation(); const bool flagsChanged = m_renderParam.flags() != renderParam.flags(); const bool useCropRect = !m_cropRect.isNull() && !rotationChanged && !flagsChanged; const qreal cropWidth = useCropRect ? m_cropRect.width() : 1.0; const qreal cropHeight = useCropRect ? m_cropRect.height() : 1.0; switch(renderParam.rotation()) { default: case RotateBy0: case RotateBy180: return QSizeF(renderParam.resolutionX() / 72.0 * cropWidth * m_size.width(), renderParam.resolutionY() / 72.0 * cropHeight * m_size.height()); case RotateBy90: case RotateBy270: return QSizeF(renderParam.resolutionX() / 72.0 * cropHeight * m_size.height(), renderParam.resolutionY() / 72.0 * cropWidth * m_size.width()); } } void PageItem::setHighlights(const QList< QRectF >& highlights) { m_highlights = highlights; update(); } void PageItem::setRubberBandMode(RubberBandMode rubberBandMode) { if(m_rubberBandMode != rubberBandMode && rubberBandMode >= 0 && rubberBandMode < NumberOfRubberBandModes) { m_rubberBandMode = rubberBandMode; if(m_rubberBandMode == ModifiersMode) { unsetCursor(); } else { setCursor(Qt::CrossCursor); } } } void PageItem::setRenderParam(const RenderParam& renderParam) { if(m_renderParam != renderParam) { const bool resolutionChanged = m_renderParam.resolutionX() != renderParam.resolutionX() || m_renderParam.resolutionY() != renderParam.resolutionY() || !qFuzzyCompare(m_renderParam.devicePixelRatio(), renderParam.devicePixelRatio()) || !qFuzzyCompare(m_renderParam.scaleFactor(), renderParam.scaleFactor()); const bool rotationChanged = m_renderParam.rotation() != renderParam.rotation(); const RenderFlags changedFlags = m_renderParam.flags() ^ renderParam.flags(); refresh(!rotationChanged && changedFlags == 0); m_renderParam = renderParam; if(resolutionChanged || rotationChanged) { prepareGeometryChange(); prepareGeometry(); } if(changedFlags.testFlag(TrimMargins)) { setFlag(QGraphicsItem::ItemClipsToShape, m_renderParam.trimMargins()); } } } void PageItem::refresh(bool keepObsoletePixmaps, bool dropCachedPixmaps) { if(!useTiling()) { m_tileItems.first()->refresh(keepObsoletePixmaps); } else { foreach(TileItem* tile, m_tileItems) { tile->refresh(keepObsoletePixmaps); } } if(!keepObsoletePixmaps) { prepareGeometryChange(); m_cropRect = QRectF(); } if(dropCachedPixmaps) { TileItem::dropCachedPixmaps(this); } update(); } int PageItem::startRender(bool prefetch) { int cost = 0; if(!useTiling()) { cost += m_tileItems.first()->startRender(prefetch); } else { foreach(TileItem* tile, m_tileItems) { cost += tile->startRender(prefetch); } } return cost; } void PageItem::cancelRender() { if(!useTiling()) { m_tileItems.first()->cancelRender(); } else { foreach(TileItem* tile, m_exposedTileItems) { tile->cancelRender(); } m_exposedTileItems.clear(); } } void PageItem::showAnnotationOverlay(Model::Annotation* selectedAnnotation) { if(s_settings->pageItem().annotationOverlay()) { showOverlay(m_annotationOverlay, SLOT(hideAnnotationOverlay()), m_annotations, selectedAnnotation); } else { hideAnnotationOverlay(false); addProxy(m_annotationOverlay, SLOT(hideAnnotationOverlay()), selectedAnnotation); m_annotationOverlay.value(selectedAnnotation)->widget()->setFocus(); } } void PageItem::hideAnnotationOverlay(bool deleteLater) { hideOverlay(m_annotationOverlay, deleteLater); } void PageItem::updateAnnotationOverlay() { updateOverlay(m_annotationOverlay); } void PageItem::showFormFieldOverlay(Model::FormField* selectedFormField) { if(s_settings->pageItem().formFieldOverlay()) { showOverlay(m_formFieldOverlay, SLOT(hideFormFieldOverlay()), m_formFields, selectedFormField); } else { hideFormFieldOverlay(false); addProxy(m_formFieldOverlay, SLOT(hideFormFieldOverlay()), selectedFormField); m_formFieldOverlay.value(selectedFormField)->widget()->setFocus(); } } void PageItem::updateFormFieldOverlay() { updateOverlay(m_formFieldOverlay); } void PageItem::hideFormFieldOverlay(bool deleteLater) { hideOverlay(m_formFieldOverlay, deleteLater); } void PageItem::hoverEnterEvent(QGraphicsSceneHoverEvent*) { } void PageItem::hoverMoveEvent(QGraphicsSceneHoverEvent* event) { if(m_rubberBandMode == ModifiersMode && event->modifiers() == Qt::NoModifier) { // links foreach(const Model::Link* link, m_links) { if(m_normalizedTransform.map(link->boundary).contains(event->pos())) { if(link->page != -1 && (link->urlOrFileName.isNull() || !presentationMode())) { setCursor(Qt::PointingHandCursor); if(link->urlOrFileName.isNull()) { QToolTip::showText(event->screenPos(), tr("Go to page %1.").arg(link->page)); } else { QToolTip::showText(event->screenPos(), tr("Go to page %1 of file '%2'.").arg(link->page).arg(link->urlOrFileName)); } return; } else if(!link->urlOrFileName.isNull() && !presentationMode()) { setCursor(Qt::PointingHandCursor); QToolTip::showText(event->screenPos(), tr("Open '%1'.").arg(link->urlOrFileName)); return; } } } if(presentationMode()) { unsetCursor(); QToolTip::hideText(); return; } // annotations foreach(const Model::Annotation* annotation, m_annotations) { if(m_normalizedTransform.mapRect(annotation->boundary()).contains(event->pos())) { setCursor(Qt::PointingHandCursor); QToolTip::showText(event->screenPos(), annotation->contents()); return; } } // form fields foreach(const Model::FormField* formField, m_formFields) { if(m_normalizedTransform.mapRect(formField->boundary()).contains(event->pos())) { setCursor(Qt::PointingHandCursor); QToolTip::showText(event->screenPos(), tr("Edit form field '%1'.").arg(formField->name())); return; } } unsetCursor(); QToolTip::hideText(); } } void PageItem::hoverLeaveEvent(QGraphicsSceneHoverEvent*) { } void PageItem::mousePressEvent(QGraphicsSceneMouseEvent* event) { const bool leftButtonActive = event->button() == Qt::LeftButton; const bool middleButtonActive = event->button() == Qt::MidButton; const bool anyButtonActive = leftButtonActive || middleButtonActive; const bool noModifiersActive = event->modifiers() == Qt::NoModifier; const bool copyToClipboardModifiersActive = modifiersAreActive(event, s_settings->pageItem().copyToClipboardModifiers()); const bool addAnnotationModifiersActive = modifiersAreActive(event, s_settings->pageItem().addAnnotationModifiers()); const bool zoomToSelectionModifiersActive = modifiersAreActive(event, s_settings->pageItem().zoomToSelectionModifiers()); const bool rubberBandModifiersActive = copyToClipboardModifiersActive || addAnnotationModifiersActive || zoomToSelectionModifiersActive; const bool openInSourceEditorModifiersActive = modifiersAreActive(event, s_settings->pageItem().openInSourceEditorModifiers()); // rubber band if(rubberBandModifiersActive && leftButtonActive && !presentationMode()) { if(m_rubberBandMode == ModifiersMode) { setCursor(Qt::CrossCursor); if(copyToClipboardModifiersActive) { m_rubberBandMode = CopyToClipboardMode; } else if(addAnnotationModifiersActive) { m_rubberBandMode = AddAnnotationMode; } else if(zoomToSelectionModifiersActive) { m_rubberBandMode = ZoomToSelectionMode; } } } if(m_rubberBandMode != ModifiersMode) { m_rubberBand = QRectF(event->pos(), QSizeF()); emit rubberBandStarted(); update(); event->accept(); return; } if(openInSourceEditorModifiersActive && leftButtonActive && !presentationMode()) { emit openInSourceEditor(m_index + 1, sourcePos(event->pos())); event->accept(); return; } if(noModifiersActive && anyButtonActive) { // links foreach(const Model::Link* link, m_links) { if(m_normalizedTransform.map(link->boundary).contains(event->pos())) { unsetCursor(); if(link->page != -1 && (link->urlOrFileName.isNull() || !presentationMode())) { if(link->urlOrFileName.isNull()) { emit linkClicked(middleButtonActive, link->page, link->left, link->top); } else { emit linkClicked(middleButtonActive, link->urlOrFileName, link->page); } event->accept(); return; } else if(!link->urlOrFileName.isNull() && !presentationMode()) { emit linkClicked(link->urlOrFileName); event->accept(); return; } } } } if(noModifiersActive && leftButtonActive && !presentationMode()) { // annotations foreach(Model::Annotation* annotation, m_annotations) { if(m_normalizedTransform.mapRect(annotation->boundary()).contains(event->pos())) { unsetCursor(); showAnnotationOverlay(annotation); event->accept(); return; } } hideAnnotationOverlay(); // form fields foreach(Model::FormField* formField, m_formFields) { if(m_normalizedTransform.mapRect(formField->boundary()).contains(event->pos())) { unsetCursor(); showFormFieldOverlay(formField); event->accept(); return; } } hideFormFieldOverlay(); } event->ignore(); } void PageItem::mouseMoveEvent(QGraphicsSceneMouseEvent* event) { if(!m_rubberBand.isNull()) { if(m_boundingRect.contains(event->pos())) { m_rubberBand.setBottomRight(event->pos()); update(); event->accept(); return; } } event->ignore(); } void PageItem::mouseReleaseEvent(QGraphicsSceneMouseEvent* event) { if(!m_rubberBand.isNull()) { unsetCursor(); m_rubberBand = m_rubberBand.normalized(); if(m_rubberBandMode == CopyToClipboardMode) { copyToClipboard(event->screenPos()); } else if(m_rubberBandMode == AddAnnotationMode) { addAnnotation(event->screenPos()); } else if(m_rubberBandMode == ZoomToSelectionMode) { emit zoomToSelection(m_index + 1, m_normalizedTransform.inverted().mapRect(m_rubberBand)); } m_rubberBandMode = ModifiersMode; m_rubberBand = QRectF(); emit rubberBandFinished(); update(); event->accept(); return; } event->ignore(); } void PageItem::contextMenuEvent(QGraphicsSceneContextMenuEvent* event) { if(event->reason() == QGraphicsSceneContextMenuEvent::Mouse && modifiersUseMouseButton(s_settings, Qt::RightButton)) { event->accept(); return; } if(presentationMode()) { event->ignore(); return; } foreach(Model::Link* link, m_links) { if(m_normalizedTransform.map(link->boundary).contains(event->pos())) { unsetCursor(); showLinkContextMenu(link, event->screenPos()); event->accept(); return; } } foreach(Model::Annotation* annotation, m_annotations) { if(m_normalizedTransform.mapRect(annotation->boundary()).contains(event->pos())) { unsetCursor(); showAnnotationContextMenu(annotation, event->screenPos()); event->accept(); return; } } event->ignore(); } void PageItem::on_loadInteractiveElements_finished() { update(); } void PageItem::updateCropRect() { QRectF cropRect; if(!useTiling()) { cropRect = m_tileItems.first()->cropRect(); } else { foreach(TileItem* tile, m_tileItems) { const QRect& tileRect = tile->rect(); const QRectF& tileCropRect = tile->cropRect(); if(tileCropRect.isNull()) { cropRect = QRectF(); break; } const qreal left = (tileRect.left() + tileCropRect.left() * tileRect.width()) / m_boundingRect.width(); const qreal top = (tileRect.top() + tileCropRect.top() * tileRect.height()) / m_boundingRect.height(); const qreal width = tileCropRect.width() * tileRect.width() / m_boundingRect.width(); const qreal height = tileCropRect.height() * tileRect.height() / m_boundingRect.height(); cropRect = cropRect.united(QRectF(left, top, width, height)); } } if(m_cropRect.isNull() && !cropRect.isNull()) { prepareGeometryChange(); m_cropRect = cropRect; emit cropRectChanged(); } } inline bool PageItem::presentationMode() const { return m_paintMode == PresentationMode; } inline bool PageItem::thumbnailMode() const { return m_paintMode == ThumbnailMode; } bool PageItem::useTiling() const { return m_paintMode != ThumbnailMode && s_settings->pageItem().useTiling(); } void PageItem::startLoadInteractiveElements() { if(thumbnailMode() || m_loadInteractiveElements != 0) { return; } m_loadInteractiveElements = new QFutureWatcher< void >(this); connect(m_loadInteractiveElements, SIGNAL(finished()), SLOT(on_loadInteractiveElements_finished())); m_loadInteractiveElements->setFuture(QtConcurrent::run(this, &PageItem::loadInteractiveElements)); } void PageItem::loadInteractiveElements() { m_links = m_page->links(); if(presentationMode()) { return; } PageItem* const parent = this; QThread* const parentThread = parent->thread(); const QList< Model::Annotation* > annotations = m_page->annotations(); foreach(Model::Annotation* annotation, annotations) { annotation->moveToThread(parentThread); connect(annotation, SIGNAL(wasModified()), parent, SIGNAL(wasModified())); } m_annotations = annotations; const QList< Model::FormField* > formFields = m_page->formFields(); foreach(Model::FormField* formField, formFields) { formField->moveToThread(parentThread); connect(formField, SIGNAL(wasModified()), parent, SIGNAL(wasModified())); } m_formFields = formFields; } void PageItem::copyToClipboard(QPoint screenPos) { QMenu menu; QAction* copyTextAction = menu.addAction(tr("Copy &text")); QAction* selectTextAction = menu.addAction(tr("&Select text")); const QAction* copyImageAction = menu.addAction(tr("Copy &image")); const QAction* saveImageToFileAction = menu.addAction(tr("Save image to &file...")); const QString text = m_page->text(m_transform.inverted().mapRect(m_rubberBand)); copyTextAction->setVisible(!text.isEmpty()); selectTextAction->setVisible(!text.isEmpty() && QApplication::clipboard()->supportsSelection()); const QAction* action = menu.exec(screenPos); if(action == copyTextAction || action == selectTextAction) { if(action == copyTextAction) { QApplication::clipboard()->setText(text); } else { QApplication::clipboard()->setText(text, QClipboard::Selection); } } else if(action == copyImageAction || action == saveImageToFileAction) { const QRect rect = m_rubberBand.translated(-m_boundingRect.topLeft()).toRect(); const QImage image = m_page->render(m_renderParam.resolutionX() * m_renderParam.scaleFactor(), m_renderParam.resolutionY() * m_renderParam.scaleFactor(), m_renderParam.rotation(), rect); if(!image.isNull()) { if(action == copyImageAction) { QApplication::clipboard()->setImage(image); } else if(action == saveImageToFileAction) { const QString fileName = QFileDialog::getSaveFileName(0, tr("Save image to file"), QDir::homePath(), "Portable network graphics (*.png)"); if(!image.save(fileName, "PNG")) { QMessageBox::warning(0, tr("Warning"), tr("Could not save image to file '%1'.").arg(fileName)); } } } } } void PageItem::addAnnotation(QPoint screenPos) { if(m_page->canAddAndRemoveAnnotations()) { QMenu menu; const QAction* addTextAction = menu.addAction(tr("Add &text")); const QAction* addHighlightAction = menu.addAction(tr("Add &highlight")); const QAction* action = menu.exec(screenPos); if(action == addTextAction || action == addHighlightAction) { QRectF boundary = m_normalizedTransform.inverted().mapRect(m_rubberBand); Model::Annotation* annotation = 0; if(action == addTextAction) { boundary.setWidth(24.0 / m_size.width()); boundary.setHeight(24.0 / m_size.height()); annotation = m_page->addTextAnnotation(boundary, s_settings->pageItem().annotationColor()); } else if(action == addHighlightAction) { annotation = m_page->addHighlightAnnotation(boundary, s_settings->pageItem().annotationColor()); } m_annotations.append(annotation); connect(annotation, SIGNAL(wasModified()), SIGNAL(wasModified())); refresh(false, true); emit wasModified(); if(action == addTextAction) { showAnnotationOverlay(annotation); } } } } void PageItem::showLinkContextMenu(Model::Link* link, QPoint screenPos) { if(link->page == -1) { QMenu menu; const QAction* copyLinkAddressAction = menu.addAction(tr("&Copy link address")); QAction* selectLinkAddressAction = menu.addAction(tr("&Select link address")); selectLinkAddressAction->setVisible(QApplication::clipboard()->supportsSelection()); const QAction* action = menu.exec(screenPos); if(action == copyLinkAddressAction) { QApplication::clipboard()->setText(link->urlOrFileName); } else if(action == selectLinkAddressAction) { QApplication::clipboard()->setText(link->urlOrFileName, QClipboard::Selection); } } } void PageItem::showAnnotationContextMenu(Model::Annotation* annotation, QPoint screenPos) { if(m_page->canAddAndRemoveAnnotations()) { QMenu menu; const QAction* removeAnnotationAction = menu.addAction(tr("&Remove annotation")); const QAction* action = menu.exec(screenPos); if(action == removeAnnotationAction) { m_annotations.removeAll(annotation); m_page->removeAnnotation(annotation); annotation->deleteLater(); refresh(false, true); emit wasModified(); } } } template< typename Overlay, typename Element > void PageItem::showOverlay(Overlay& overlay, const char* hideOverlay, const QList< Element* >& elements, Element* selectedElement) { foreach(Element* element, elements) { if(!overlay.contains(element)) { addProxy(overlay, hideOverlay, element); } if(element == selectedElement) { overlay.value(element)->widget()->setFocus(); } } } template< typename Overlay, typename Element > void PageItem::addProxy(Overlay& overlay, const char* hideOverlay, Element* element) { QGraphicsProxyWidget* proxy = new QGraphicsProxyWidget(this); proxy->setWidget(element->createWidget()); #if QT_VERSION >= QT_VERSION_CHECK(4,7,0) proxy->setAutoFillBackground(true); #endif // QT_VERSION overlay.insert(element, proxy); setProxyGeometry(element, proxy); connect(proxy, SIGNAL(visibleChanged()), hideOverlay); } template< typename Overlay > void PageItem::hideOverlay(Overlay& overlay, bool deleteLater) { #if QT_VERSION >= QT_VERSION_CHECK(4,8,0) Overlay discardedOverlay; discardedOverlay.swap(overlay); #else Overlay discardedOverlay(overlay); overlay = Overlay(); #endif // QT_VERSION if(!discardedOverlay.isEmpty()) { for(typename Overlay::const_iterator i = discardedOverlay.constBegin(); i != discardedOverlay.constEnd(); ++i) { if(deleteLater) { i.value()->deleteLater(); } else { delete i.value(); } } refresh(false, true); } } template< typename Overlay > void PageItem::updateOverlay(const Overlay& overlay) const { for(typename Overlay::const_iterator i = overlay.constBegin(); i != overlay.constEnd(); ++i) { setProxyGeometry(i.key(), i.value()); } } void PageItem::setProxyGeometry(Model::Annotation* annotation, QGraphicsProxyWidget* proxy) const { const QPointF center = m_normalizedTransform.map(annotation->boundary().center()); qreal x = center.x() - 0.5 * proxy->preferredWidth(); qreal y = center.y() - 0.5 * proxy->preferredHeight(); qreal width = proxy->preferredWidth(); qreal height = proxy->preferredHeight(); x = qMax(x, m_boundingRect.left() + proxyPadding); y = qMax(y, m_boundingRect.top() + proxyPadding); width = qMin(width, m_boundingRect.right() - proxyPadding - x); height = qMin(height, m_boundingRect.bottom() - proxyPadding - y); proxy->setGeometry(QRectF(x, y, width, height)); } void PageItem::setProxyGeometry(Model::FormField* formField, QGraphicsProxyWidget* proxy) const { QRectF rect = m_normalizedTransform.mapRect(formField->boundary()); qreal x = rect.x(); qreal y = rect.y(); qreal width = rect.width(); qreal height = rect.height(); switch(m_renderParam.rotation()) { default: case RotateBy0: proxy->setRotation(0.0); break; case RotateBy90: x += width; qSwap(width, height); proxy->setRotation(90.0); break; case RotateBy180: x += width; y += height; proxy->setRotation(180.0); break; case RotateBy270: y += height; qSwap(width, height); proxy->setRotation(270.0); break; } width /= m_renderParam.scaleFactor(); height /= m_renderParam.scaleFactor(); proxy->setScale(m_renderParam.scaleFactor()); proxy->setGeometry(QRectF(x - proxyPadding, y - proxyPadding, width + proxyPadding, height + proxyPadding)); } void PageItem::prepareGeometry() { m_transform.reset(); m_transform.scale(m_renderParam.resolutionX() * m_renderParam.scaleFactor() / 72.0, m_renderParam.resolutionY() * m_renderParam.scaleFactor() / 72.0); switch(m_renderParam.rotation()) { default: case RotateBy0: break; case RotateBy90: m_transform.rotate(90.0); break; case RotateBy180: m_transform.rotate(180.0); break; case RotateBy270: m_transform.rotate(270.0); break; } m_normalizedTransform = m_transform; m_normalizedTransform.scale(m_size.width(), m_size.height()); m_boundingRect = m_transform.mapRect(QRectF(QPointF(), m_size)); m_boundingRect.setWidth(qRound(m_boundingRect.width())); m_boundingRect.setHeight(qRound(m_boundingRect.height())); prepareTiling(); updateAnnotationOverlay(); updateFormFieldOverlay(); } void PageItem::prepareTiling() { if(!useTiling()) { m_tileItems.first()->setRect(QRect(0, 0, m_boundingRect.width(), m_boundingRect.height())); return; } const qreal pageWidth = m_boundingRect.width(); const qreal pageHeight = m_boundingRect.height(); const qreal pageSize = qMax(pageWidth, pageHeight); int tileSize = s_settings->pageItem().tileSize(); if(tileSize * veryLargeTilesThreshold < pageSize) { tileSize *= 4; } else if(tileSize * largeTilesThreshold < pageSize) { tileSize *= 2; } int tileWidth = pageWidth < pageHeight ? tileSize * pageWidth / pageHeight : tileSize; int tileHeight = pageHeight < pageWidth ? tileSize * pageHeight / pageWidth : tileSize; const int columnCount = qCeil(pageWidth / tileWidth); const int rowCount = qCeil(pageHeight / tileHeight); tileWidth = qCeil(pageWidth / columnCount); tileHeight = qCeil(pageHeight / rowCount); const int newCount = columnCount * rowCount; const int oldCount = m_tileItems.count(); if(oldCount != newCount) { for(int index = newCount; index < oldCount; ++index) { m_tileItems.at(index)->deleteAfterRender(); } m_tileItems.resize(newCount); for(int index = oldCount; index < newCount; ++index) { m_tileItems.replace(index, new TileItem(this)); } foreach(TileItem* tile, m_tileItems) { tile->dropObsoletePixmap(); } } m_exposedTileItems.clear(); for(int column = 0; column < columnCount; ++column) { for(int row = 0; row < rowCount; ++row) { const int left = column > 0 ? column * tileWidth : 0.0; const int top = row > 0 ? row * tileHeight : 0.0; const int width = column < (columnCount - 1) ? tileWidth : pageWidth - left; const int height = row < (rowCount - 1) ? tileHeight : pageHeight - top; m_tileItems.at(column * rowCount + row)->setRect(QRect(left, top, width, height)); } } } inline void PageItem::paintPage(QPainter* painter, const QRectF& exposedRect) const { if(s_settings->pageItem().decoratePages() && !presentationMode()) { // background QColor paperColor = s_settings->pageItem().paperColor(); if(m_renderParam.invertColors()) { paperColor.setRgb(~paperColor.rgb()); } painter->fillRect(m_boundingRect, QBrush(paperColor)); } // tiles if(!useTiling()) { TileItem* tile = m_tileItems.first(); if(tile->paint(painter, m_boundingRect.topLeft())) { tile->dropPixmap(); } } else { const QRectF& translatedExposedRect = exposedRect.translated(-m_boundingRect.topLeft()); foreach(TileItem* tile, m_tileItems) { const bool intersects = translatedExposedRect.intersects(tile->rect()); const bool contains = m_exposedTileItems.contains(tile); if(intersects && !contains) { m_exposedTileItems.insert(tile); } else if(!intersects && contains) { m_exposedTileItems.remove(tile); tile->cancelRender(); } } bool allExposedPainted = true; foreach(TileItem* tile, m_exposedTileItems) { if(!tile->paint(painter, m_boundingRect.topLeft())) { allExposedPainted = false; } } if(allExposedPainted) { foreach(TileItem* tile, m_exposedTileItems) { tile->dropPixmap(); } } } if(s_settings->pageItem().decoratePages() && !presentationMode()) { // border painter->save(); painter->setClipping(false); painter->drawRect(m_renderParam.trimMargins() ? PageItem::boundingRect() : PageItem::uncroppedBoundingRect()); painter->restore(); } } inline void PageItem::paintLinks(QPainter* painter) const { if(s_settings->pageItem().decorateLinks() && !presentationMode() && !m_links.isEmpty()) { painter->save(); painter->setTransform(m_normalizedTransform, true); painter->setPen(QPen(Qt::red, 0.0)); foreach(const Model::Link* link, m_links) { painter->drawPath(link->boundary); } painter->restore(); } } inline void PageItem::paintFormFields(QPainter* painter) const { if(s_settings->pageItem().decorateFormFields() && !presentationMode() && !m_formFields.isEmpty()) { painter->save(); painter->setTransform(m_normalizedTransform, true); painter->setPen(QPen(Qt::blue, 0.0)); foreach(const Model::FormField* formField, m_formFields) { painter->drawRect(formField->boundary()); } painter->restore(); } } inline void PageItem::paintHighlights(QPainter* painter) const { if(!m_highlights.isEmpty()) { painter->save(); painter->setTransform(m_transform, true); painter->setPen(QPen(s_settings->pageItem().highlightColor(), 0.0)); painter->setBrush(QBrush(s_settings->pageItem().highlightColor())); painter->setCompositionMode(QPainter::CompositionMode_Multiply); foreach(const QRectF highlight, m_highlights) { painter->drawRect(highlight.normalized()); } painter->restore(); } } inline void PageItem::paintRubberBand(QPainter* painter) const { if(!m_rubberBand.isNull()) { painter->save(); painter->setPen(QPen(Qt::white, 0.0, Qt::DashLine)); painter->setCompositionMode(QPainter::CompositionMode_Difference); painter->drawRect(m_rubberBand); painter->restore(); } } } // qpdfview qpdfview-0.4.18/sources/pageitem.h0000644000000000000000000001467013516127411015217 0ustar 00000000000000/* Copyright 2012-2014 Adam Reichold This file is part of qpdfview. qpdfview is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. qpdfview is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with qpdfview. If not, see . */ #ifndef PAGEITEM_H #define PAGEITEM_H #include #include #include #include #include class QGraphicsProxyWidget; #include "renderparam.h" namespace qpdfview { namespace Model { struct Link; class Annotation; class FormField; class Page; } class Settings; class RenderTask; class TileItem; class PageItem : public QGraphicsObject { Q_OBJECT friend class TileItem; public: enum PaintMode { DefaultMode, PresentationMode, ThumbnailMode }; PageItem(Model::Page* page, int index, PaintMode paintMode = DefaultMode, QGraphicsItem* parent = 0); ~PageItem(); const QRectF& uncroppedBoundingRect() const { return m_boundingRect; } QRectF boundingRect() const; void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget*); int index() const { return m_index; } const QSizeF& size() const { return m_size; } QSizeF displayedSize() const { return displayedSize(renderParam()); } QSizeF displayedSize(const RenderParam& renderParam) const; const QList< QRectF >& highlights() const { return m_highlights; } void setHighlights(const QList< QRectF >& highlights); RubberBandMode rubberBandMode() const { return m_rubberBandMode; } void setRubberBandMode(RubberBandMode rubberBandMode); bool showsAnnotationOverlay() const { return !m_annotationOverlay.isEmpty(); } bool showsFormFieldOverlay() const { return !m_formFieldOverlay.isEmpty(); } const RenderParam& renderParam() const { return m_renderParam; } void setRenderParam(const RenderParam& renderParam); const QTransform& transform() const { return m_transform; } const QTransform& normalizedTransform() const { return m_normalizedTransform; } QPointF sourcePos(QPointF point) const { return m_transform.inverted().map(point); } QPointF normalizedSourcePos(QPointF point) const { return m_normalizedTransform.inverted().map(point); } signals: void cropRectChanged(); void linkClicked(bool newTab, int page, qreal left = qQNaN(), qreal top = qQNaN()); void linkClicked(bool newTab, const QString& fileName, int page); void linkClicked(const QString& url); void rubberBandStarted(); void rubberBandFinished(); void zoomToSelection(int page, const QRectF& rect); void openInSourceEditor(int page, QPointF pos); void wasModified(); public slots: void refresh(bool keepObsoletePixmaps = false, bool dropCachedPixmaps = false); int startRender(bool prefetch = false); void cancelRender(); protected slots: void showAnnotationOverlay(Model::Annotation* selectedAnnotation); void hideAnnotationOverlay(bool deleteLater = true); void updateAnnotationOverlay(); void showFormFieldOverlay(Model::FormField* selectedFormField); void hideFormFieldOverlay(bool deleteLater = true); void updateFormFieldOverlay(); protected: void hoverEnterEvent(QGraphicsSceneHoverEvent*); void hoverMoveEvent(QGraphicsSceneHoverEvent* event); void hoverLeaveEvent(QGraphicsSceneHoverEvent*); void mousePressEvent(QGraphicsSceneMouseEvent* event); void mouseMoveEvent(QGraphicsSceneMouseEvent* event); void mouseReleaseEvent(QGraphicsSceneMouseEvent* event); void contextMenuEvent(QGraphicsSceneContextMenuEvent* event); private slots: void on_loadInteractiveElements_finished(); private: Q_DISABLE_COPY(PageItem) static Settings* s_settings; Model::Page* m_page; QSizeF m_size; QRectF m_cropRect; void updateCropRect(); int m_index; PaintMode m_paintMode; bool presentationMode() const; bool thumbnailMode() const; bool useTiling() const; QList< QRectF > m_highlights; // interactive elements QFutureWatcher< void >* m_loadInteractiveElements; void startLoadInteractiveElements(); void loadInteractiveElements(); QList< Model::Link* > m_links; QList< Model::Annotation* > m_annotations; QList< Model::FormField* > m_formFields; RubberBandMode m_rubberBandMode; QRectF m_rubberBand; void copyToClipboard(QPoint screenPos); void addAnnotation(QPoint screenPos); void showLinkContextMenu(Model::Link* link, QPoint screenPos); void showAnnotationContextMenu(Model::Annotation* annotation, QPoint screenPos); // overlay typedef QMap< Model::Annotation*, QGraphicsProxyWidget* > AnnotationOverlay; AnnotationOverlay m_annotationOverlay; typedef QMap< Model::FormField*, QGraphicsProxyWidget* > FormFieldOverlay; FormFieldOverlay m_formFieldOverlay; template< typename Overlay, typename Element > void showOverlay(Overlay& overlay, const char* hideOverlay, const QList< Element* >& elements, Element* selectedElement); template< typename Overlay, typename Element > void addProxy(Overlay& overlay, const char* hideOverlay, Element* element); template< typename Overlay > void hideOverlay(Overlay& overlay, bool deleteLater); template< typename Overlay > void updateOverlay(const Overlay& overlay) const; void setProxyGeometry(Model::Annotation* annotation, QGraphicsProxyWidget* proxy) const; void setProxyGeometry(Model::FormField* formField, QGraphicsProxyWidget* proxy) const; // geometry RenderParam m_renderParam; QTransform m_transform; QTransform m_normalizedTransform; QRectF m_boundingRect; void prepareGeometry(); QVector< TileItem* > m_tileItems; mutable QSet< TileItem* > m_exposedTileItems; void prepareTiling(); // paint void paintPage(QPainter* painter, const QRectF& exposedRect) const; void paintLinks(QPainter* painter) const; void paintFormFields(QPainter* painter) const; void paintHighlights(QPainter* painter) const; void paintRubberBand(QPainter* painter) const; }; } // qpdfview #endif // PAGEITEM_H qpdfview-0.4.18/sources/pdfmodel.cpp0000644000000000000000000010044213516127411015542 0ustar 00000000000000/* Copyright 2014 S. Razi Alavizadeh Copyright 2018 Marshall Banana Copyright 2013-2014, 2018 Adam Reichold This file is part of qpdfview. qpdfview is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. qpdfview is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with qpdfview. If not, see . */ #include "pdfmodel.h" #include #include #include #include #if QT_VERSION >= QT_VERSION_CHECK(5,0,0) #include #else #include #endif // QT_VERSION #include #include "annotationwidgets.h" #include "formfieldwidgets.h" #ifndef HAS_POPPLER_24 #define LOCK_ANNOTATION QMutexLocker mutexLocker(m_mutex); #define LOCK_FORM_FIELD QMutexLocker mutexLocker(m_mutex); #define LOCK_PAGE QMutexLocker mutexLocker(m_mutex); #define LOCK_DOCUMENT QMutexLocker mutexLocker(&m_mutex); #else #define LOCK_ANNOTATION #define LOCK_FORM_FIELD #define LOCK_PAGE #define LOCK_DOCUMENT #endif // HAS_POPPLER_24 namespace { using namespace qpdfview; using namespace qpdfview::Model; Outline loadOutline(const QDomNode& parent, Poppler::Document* document) { Outline outline; const QDomNodeList nodes = parent.childNodes(); outline.reserve(nodes.size()); for(int index = 0, count = nodes.size(); index < count; ++index) { const QDomNode node = nodes.at(index); const QDomElement element = node.toElement(); outline.push_back(Section()); Section& section = outline.back(); section.title = element.tagName(); QScopedPointer< Poppler::LinkDestination > destination; if(element.hasAttribute("Destination")) { destination.reset(new Poppler::LinkDestination(element.attribute("Destination"))); } else if(element.hasAttribute("DestinationName")) { destination.reset(document->linkDestination(element.attribute("DestinationName"))); } if(destination) { int page = destination->pageNumber(); qreal left = qQNaN(); qreal top = qQNaN(); page = page >= 1 ? page : 1; page = page <= document->numPages() ? page : document->numPages(); if(destination->isChangeLeft()) { left = destination->left(); left = left >= 0.0 ? left : 0.0; left = left <= 1.0 ? left : 1.0; } if(destination->isChangeTop()) { top = destination->top(); top = top >= 0.0 ? top : 0.0; top = top <= 1.0 ? top : 1.0; } Link& link = section.link; link.page = page; link.left = left; link.top = top; const QString fileName = element.attribute("ExternalFileName"); if(!fileName.isEmpty()) { link.urlOrFileName = fileName; } } if(node.hasChildNodes()) { section.children = loadOutline(node, document); } } return outline; } class FontsModel : public QAbstractTableModel { public: FontsModel(const QList< Poppler::FontInfo >& fonts) : m_fonts(fonts) { } int columnCount(const QModelIndex&) const { return 5; } int rowCount(const QModelIndex& parent) const { if(parent.isValid()) { return 0; } return m_fonts.size(); } QVariant headerData(int section, Qt::Orientation orientation, int role) const { if(orientation != Qt::Horizontal || role != Qt::DisplayRole) { return QVariant(); } switch(section) { case 0: return PdfDocument::tr("Name"); case 1: return PdfDocument::tr("Type"); case 2: return PdfDocument::tr("Embedded"); case 3: return PdfDocument::tr("Subset"); case 4: return PdfDocument::tr("File"); default: return QVariant(); } } QVariant data(const QModelIndex& index, int role) const { if(!index.isValid() || role != Qt::DisplayRole) { return QVariant(); } const Poppler::FontInfo& font = m_fonts[index.row()]; switch (index.column()) { case 0: return font.name(); case 1: return font.typeName(); case 2: return font.isEmbedded() ? PdfDocument::tr("Yes") : PdfDocument::tr("No"); case 3: return font.isSubset() ? PdfDocument::tr("Yes") : PdfDocument::tr("No"); case 4: return font.file(); default: return QVariant(); } } private: const QList< Poppler::FontInfo > m_fonts; }; inline void restoreRenderHint(Poppler::Document* document, const Poppler::Document::RenderHints hints, const Poppler::Document::RenderHint hint) { document->setRenderHint(hint, hints.testFlag(hint)); } typedef QSharedPointer< Poppler::TextBox > TextBox; typedef QList< TextBox > TextBoxList; class TextCache { public: TextCache() : m_mutex(), m_cache(1 << 12) {} bool object(const PdfPage* page, TextBoxList& textBoxes) const { QMutexLocker mutexLocker(&m_mutex); if(TextBoxList* const object = m_cache.object(page)) { textBoxes = *object; return true; } return false; } void insert(const PdfPage* page, const TextBoxList& textBoxes) { QMutexLocker mutexLocker(&m_mutex); m_cache.insert(page, new TextBoxList(textBoxes), textBoxes.count()); } void remove(const PdfPage* page) { QMutexLocker mutexLocker(&m_mutex); m_cache.remove(page); } private: mutable QMutex m_mutex; QCache< const PdfPage*, TextBoxList > m_cache; }; Q_GLOBAL_STATIC(TextCache, textCache) namespace Defaults { const bool antialiasing = true; const bool textAntialiasing = true; #ifdef HAS_POPPLER_18 const int textHinting = 0; #else const bool textHinting = false; #endif // HAS_POPPLER_18 #ifdef HAS_POPPLER_35 const bool ignorePaperColor = false; #endif // HAS_POPPLER_35 #ifdef HAS_POPPLER_22 const bool overprintPreview = false; #endif // HAS_POPPLER_22 #ifdef HAS_POPPLER_24 const int thinLineMode = 0; #endif // HAS_POPPLER_24 const int backend = 0; } // Defaults } // anonymous namespace qpdfview { namespace Model { PdfAnnotation::PdfAnnotation(QMutex* mutex, Poppler::Annotation* annotation) : Annotation(), m_mutex(mutex), m_annotation(annotation) { } PdfAnnotation::~PdfAnnotation() { delete m_annotation; } QRectF PdfAnnotation::boundary() const { LOCK_ANNOTATION return m_annotation->boundary().normalized(); } QString PdfAnnotation::contents() const { LOCK_ANNOTATION return m_annotation->contents(); } QWidget* PdfAnnotation::createWidget() { QWidget* widget = 0; if(m_annotation->subType() == Poppler::Annotation::AText || m_annotation->subType() == Poppler::Annotation::AHighlight) { widget = new AnnotationWidget(m_mutex, m_annotation); connect(widget, SIGNAL(wasModified()), SIGNAL(wasModified())); } else if(m_annotation->subType() == Poppler::Annotation::AFileAttachment) { widget = new FileAttachmentAnnotationWidget(m_mutex, static_cast< Poppler::FileAttachmentAnnotation* >(m_annotation)); } connect(this, SIGNAL(destroyed()), widget, SLOT(deleteLater())); return widget; } PdfFormField::PdfFormField(QMutex* mutex, Poppler::FormField* formField) : FormField(), m_mutex(mutex), m_formField(formField) { } PdfFormField::~PdfFormField() { delete m_formField; } QRectF PdfFormField::boundary() const { LOCK_FORM_FIELD return m_formField->rect().normalized(); } QString PdfFormField::name() const { LOCK_FORM_FIELD return m_formField->name(); } QWidget* PdfFormField::createWidget() { QWidget* widget = 0; if(m_formField->type() == Poppler::FormField::FormText) { Poppler::FormFieldText* formFieldText = static_cast< Poppler::FormFieldText* >(m_formField); if(formFieldText->textType() == Poppler::FormFieldText::Normal) { widget = new NormalTextFieldWidget(m_mutex, formFieldText); } else if(formFieldText->textType() == Poppler::FormFieldText::Multiline) { widget = new MultilineTextFieldWidget(m_mutex, formFieldText); } } else if(m_formField->type() == Poppler::FormField::FormChoice) { Poppler::FormFieldChoice* formFieldChoice = static_cast< Poppler::FormFieldChoice* >(m_formField); if(formFieldChoice->choiceType() == Poppler::FormFieldChoice::ComboBox) { widget = new ComboBoxChoiceFieldWidget(m_mutex, formFieldChoice); } else if(formFieldChoice->choiceType() == Poppler::FormFieldChoice::ListBox) { widget = new ListBoxChoiceFieldWidget(m_mutex, formFieldChoice); } } else if(m_formField->type() == Poppler::FormField::FormButton) { Poppler::FormFieldButton* formFieldButton = static_cast< Poppler::FormFieldButton* >(m_formField); if(formFieldButton->buttonType() == Poppler::FormFieldButton::CheckBox) { widget = new CheckBoxChoiceFieldWidget(m_mutex, formFieldButton); } else if(formFieldButton->buttonType() == Poppler::FormFieldButton::Radio) { widget = new RadioChoiceFieldWidget(m_mutex, formFieldButton); } } connect(widget, SIGNAL(wasModified()), SIGNAL(wasModified())); return widget; } PdfPage::PdfPage(QMutex* mutex, Poppler::Page* page) : m_mutex(mutex), m_page(page) { } PdfPage::~PdfPage() { textCache()->remove(this); delete m_page; } QSizeF PdfPage::size() const { LOCK_PAGE return m_page->pageSizeF(); } QImage PdfPage::render(qreal horizontalResolution, qreal verticalResolution, Rotation rotation, QRect boundingRect) const { LOCK_PAGE Poppler::Page::Rotation rotate; switch(rotation) { default: case RotateBy0: rotate = Poppler::Page::Rotate0; break; case RotateBy90: rotate = Poppler::Page::Rotate90; break; case RotateBy180: rotate = Poppler::Page::Rotate180; break; case RotateBy270: rotate = Poppler::Page::Rotate270; break; } int x = -1; int y = -1; int w = -1; int h = -1; if(!boundingRect.isNull()) { x = boundingRect.x(); y = boundingRect.y(); w = boundingRect.width(); h = boundingRect.height(); } return m_page->renderToImage(horizontalResolution, verticalResolution, x, y, w, h, rotate); } QString PdfPage::label() const { LOCK_PAGE return m_page->label(); } QList< Link* > PdfPage::links() const { LOCK_PAGE QList< Link* > links; foreach(const Poppler::Link* link, m_page->links()) { const QRectF boundary = link->linkArea().normalized(); if(link->linkType() == Poppler::Link::Goto) { const Poppler::LinkGoto* linkGoto = static_cast< const Poppler::LinkGoto* >(link); int page = linkGoto->destination().pageNumber(); qreal left = qQNaN(); qreal top = qQNaN(); page = page >= 1 ? page : 1; if(linkGoto->destination().isChangeLeft()) { left = linkGoto->destination().left(); left = left >= 0.0 ? left : 0.0; left = left <= 1.0 ? left : 1.0; } if(linkGoto->destination().isChangeTop()) { top = linkGoto->destination().top(); top = top >= 0.0 ? top : 0.0; top = top <= 1.0 ? top : 1.0; } if(linkGoto->isExternal()) { links.append(new Link(boundary, linkGoto->fileName(), page)); } else { links.append(new Link(boundary, page, left, top)); } } else if(link->linkType() == Poppler::Link::Browse) { const Poppler::LinkBrowse* linkBrowse = static_cast< const Poppler::LinkBrowse* >(link); const QString url = linkBrowse->url(); links.append(new Link(boundary, url)); } else if(link->linkType() == Poppler::Link::Execute) { const Poppler::LinkExecute* linkExecute = static_cast< const Poppler::LinkExecute* >(link); const QString url = linkExecute->fileName(); links.append(new Link(boundary, url)); } delete link; } return links; } QString PdfPage::text(const QRectF& rect) const { LOCK_PAGE return m_page->text(rect).simplified(); } QString PdfPage::cachedText(const QRectF& rect) const { TextBoxList textBoxes; if(!textCache()->object(this, textBoxes)) { { LOCK_PAGE foreach(Poppler::TextBox* textBox, m_page->textList()) { textBoxes.append(TextBox(textBox)); } } textCache()->insert(this, textBoxes); } QString text; foreach(const TextBox& textBox, textBoxes) { if(!rect.intersects(textBox->boundingBox())) { continue; } const QString& characters = textBox->text(); for(int index = 0; index < characters.length(); ++index) { if(rect.intersects(textBox->charBoundingBox(index))) { text.append(characters.at(index)); } } if(textBox->hasSpaceAfter()) { text.append(QLatin1Char(' ')); } } return text.simplified(); } QList< QRectF > PdfPage::search(const QString& text, bool matchCase, bool wholeWords) const { LOCK_PAGE QList< QRectF > results; #ifdef HAS_POPPLER_31 const Poppler::Page::SearchFlags flags((matchCase ? 0 : Poppler::Page::IgnoreCase) | (wholeWords ? Poppler::Page::WholeWords : 0)); results = m_page->search(text, flags); #else Q_UNUSED(wholeWords); const Poppler::Page::SearchMode mode = matchCase ? Poppler::Page::CaseSensitive : Poppler::Page::CaseInsensitive; #if defined(HAS_POPPLER_22) results = m_page->search(text, mode); #elif defined(HAS_POPPLER_14) double left = 0.0, top = 0.0, right = 0.0, bottom = 0.0; while(m_page->search(text, left, top, right, bottom, Poppler::Page::NextResult, mode)) { results.append(QRectF(left, top, right - left, bottom - top)); } #else QRectF rect; while(m_page->search(text, rect, Poppler::Page::NextResult, mode)) { results.append(rect); } #endif // HAS_POPPLER_22 HAS_POPPLER_14 #endif // HAS_POPPLER_31 return results; } QList< Annotation* > PdfPage::annotations() const { LOCK_PAGE QList< Annotation* > annotations; foreach(Poppler::Annotation* annotation, m_page->annotations()) { if(annotation->subType() == Poppler::Annotation::AText || annotation->subType() == Poppler::Annotation::AHighlight || annotation->subType() == Poppler::Annotation::AFileAttachment) { annotations.append(new PdfAnnotation(m_mutex, annotation)); continue; } delete annotation; } return annotations; } bool PdfPage::canAddAndRemoveAnnotations() const { #ifdef HAS_POPPLER_20 return true; #else QMessageBox::information(0, tr("Information"), tr("Version 0.20.1 or higher of the Poppler library is required to add or remove annotations.")); return false; #endif // HAS_POPPLER_20 } Annotation* PdfPage::addTextAnnotation(const QRectF& boundary, const QColor& color) { LOCK_PAGE #ifdef HAS_POPPLER_20 Poppler::Annotation::Style style; style.setColor(color); Poppler::Annotation::Popup popup; popup.setFlags(Poppler::Annotation::Hidden | Poppler::Annotation::ToggleHidingOnMouse); Poppler::Annotation* annotation = new Poppler::TextAnnotation(Poppler::TextAnnotation::Linked); annotation->setBoundary(boundary); annotation->setStyle(style); annotation->setPopup(popup); m_page->addAnnotation(annotation); return new PdfAnnotation(m_mutex, annotation); #else Q_UNUSED(boundary); Q_UNUSED(color); return 0; #endif // HAS_POPPLER_20 } Annotation* PdfPage::addHighlightAnnotation(const QRectF& boundary, const QColor& color) { LOCK_PAGE #ifdef HAS_POPPLER_20 Poppler::Annotation::Style style; style.setColor(color); Poppler::Annotation::Popup popup; popup.setFlags(Poppler::Annotation::Hidden | Poppler::Annotation::ToggleHidingOnMouse); Poppler::HighlightAnnotation* annotation = new Poppler::HighlightAnnotation(); Poppler::HighlightAnnotation::Quad quad; quad.points[0] = boundary.topLeft(); quad.points[1] = boundary.topRight(); quad.points[2] = boundary.bottomRight(); quad.points[3] = boundary.bottomLeft(); annotation->setHighlightQuads(QList< Poppler::HighlightAnnotation::Quad >() << quad); annotation->setBoundary(boundary); annotation->setStyle(style); annotation->setPopup(popup); m_page->addAnnotation(annotation); return new PdfAnnotation(m_mutex, annotation); #else Q_UNUSED(boundary); Q_UNUSED(color); return 0; #endif // HAS_POPPLER_20 } void PdfPage::removeAnnotation(Annotation* annotation) { LOCK_PAGE #ifdef HAS_POPPLER_20 PdfAnnotation* pdfAnnotation = static_cast< PdfAnnotation* >(annotation); m_page->removeAnnotation(pdfAnnotation->m_annotation); pdfAnnotation->m_annotation = 0; #else Q_UNUSED(annotation); #endif // HAS_POPPLER_20 } QList< FormField* > PdfPage::formFields() const { LOCK_PAGE QList< FormField* > formFields; foreach(Poppler::FormField* formField, m_page->formFields()) { if(!formField->isVisible() || formField->isReadOnly()) { delete formField; continue; } if(formField->type() == Poppler::FormField::FormText) { Poppler::FormFieldText* formFieldText = static_cast< Poppler::FormFieldText* >(formField); if(formFieldText->textType() == Poppler::FormFieldText::Normal || formFieldText->textType() == Poppler::FormFieldText::Multiline) { formFields.append(new PdfFormField(m_mutex, formField)); continue; } } else if(formField->type() == Poppler::FormField::FormChoice) { Poppler::FormFieldChoice* formFieldChoice = static_cast< Poppler::FormFieldChoice* >(formField); if(formFieldChoice->choiceType() == Poppler::FormFieldChoice::ListBox || formFieldChoice->choiceType() == Poppler::FormFieldChoice::ComboBox) { formFields.append(new PdfFormField(m_mutex, formField)); continue; } } else if(formField->type() == Poppler::FormField::FormButton) { Poppler::FormFieldButton* formFieldButton = static_cast< Poppler::FormFieldButton* >(formField); if(formFieldButton->buttonType() == Poppler::FormFieldButton::CheckBox || formFieldButton->buttonType() == Poppler::FormFieldButton::Radio) { formFields.append(new PdfFormField(m_mutex, formField)); continue; } } delete formField; } return formFields; } PdfDocument::PdfDocument(Poppler::Document* document) : m_mutex(), m_document(document) { } PdfDocument::~PdfDocument() { delete m_document; } int PdfDocument::numberOfPages() const { LOCK_DOCUMENT return m_document->numPages(); } Page* PdfDocument::page(int index) const { LOCK_DOCUMENT if(Poppler::Page* page = m_document->page(index)) { return new PdfPage(&m_mutex, page); } return 0; } bool PdfDocument::isLocked() const { LOCK_DOCUMENT return m_document->isLocked(); } bool PdfDocument::unlock(const QString& password) { LOCK_DOCUMENT // Poppler drops render hints and backend after unlocking so we need to restore them. const Poppler::Document::RenderHints hints = m_document->renderHints(); const Poppler::Document::RenderBackend backend = m_document->renderBackend(); const bool ok = m_document->unlock(password.toLatin1(), password.toLatin1()); restoreRenderHint(m_document, hints, Poppler::Document::Antialiasing); restoreRenderHint(m_document, hints, Poppler::Document::TextAntialiasing); #ifdef HAS_POPPLER_14 restoreRenderHint(m_document, hints, Poppler::Document::TextHinting); #endif // HAS_POPPLER_14 #ifdef HAS_POPPLER_18 restoreRenderHint(m_document, hints, Poppler::Document::TextSlightHinting); #endif // HAS_POPPLER_18 #ifdef HAS_POPPLER_35 restoreRenderHint(m_document, hints, Poppler::Document::IgnorePaperColor); #endif // HAS_POPPLER_35 #ifdef HAS_POPPLER_22 restoreRenderHint(m_document, hints, Poppler::Document::OverprintPreview); #endif // HAS_POPPLER_22 #ifdef HAS_POPPLER_24 restoreRenderHint(m_document, hints, Poppler::Document::ThinLineSolid); restoreRenderHint(m_document, hints, Poppler::Document::ThinLineShape); #endif // HAS_POPPLER_24 m_document->setRenderBackend(backend); return ok; } QStringList PdfDocument::saveFilter() const { return QStringList() << "Portable document format (*.pdf)"; } bool PdfDocument::canSave() const { return true; } bool PdfDocument::save(const QString& filePath, bool withChanges) const { LOCK_DOCUMENT QScopedPointer< Poppler::PDFConverter > pdfConverter(m_document->pdfConverter()); pdfConverter->setOutputFileName(filePath); Poppler::PDFConverter::PDFOptions options = pdfConverter->pdfOptions(); if(withChanges) { options |= Poppler::PDFConverter::WithChanges; } pdfConverter->setPDFOptions(options); return pdfConverter->convert(); } bool PdfDocument::canBePrintedUsingCUPS() const { return true; } void PdfDocument::setPaperColor(const QColor& paperColor) { LOCK_DOCUMENT m_document->setPaperColor(paperColor); } Outline PdfDocument::outline() const { Outline outline; LOCK_DOCUMENT QScopedPointer< QDomDocument > toc(m_document->toc()); if(toc) { outline = loadOutline(*toc, m_document); } return outline; } Properties PdfDocument::properties() const { Properties properties; LOCK_DOCUMENT foreach(const QString& key, m_document->infoKeys()) { QString value = m_document->info(key); if(value.startsWith("D:")) { value = m_document->date(key).toString(); } properties.push_back(qMakePair(key, value)); } int pdfMajorVersion = 1; int pdfMinorVersion = 0; m_document->getPdfVersion(&pdfMajorVersion, &pdfMinorVersion); properties.push_back(qMakePair(tr("PDF version"), QString("%1.%2").arg(pdfMajorVersion).arg(pdfMinorVersion))); properties.push_back(qMakePair(tr("Encrypted"), m_document->isEncrypted() ? tr("Yes") : tr("No"))); properties.push_back(qMakePair(tr("Linearized"), m_document->isLinearized() ? tr("Yes") : tr("No"))); return properties; } QAbstractItemModel* PdfDocument::fonts() const { LOCK_DOCUMENT return new FontsModel(m_document->fonts()); } bool PdfDocument::wantsContinuousMode() const { LOCK_DOCUMENT const Poppler::Document::PageLayout pageLayout = m_document->pageLayout(); return pageLayout == Poppler::Document::OneColumn || pageLayout == Poppler::Document::TwoColumnLeft || pageLayout == Poppler::Document::TwoColumnRight; } bool PdfDocument::wantsSinglePageMode() const { LOCK_DOCUMENT const Poppler::Document::PageLayout pageLayout = m_document->pageLayout(); return pageLayout == Poppler::Document::SinglePage || pageLayout == Poppler::Document::OneColumn; } bool PdfDocument::wantsTwoPagesMode() const { LOCK_DOCUMENT const Poppler::Document::PageLayout pageLayout = m_document->pageLayout(); return pageLayout == Poppler::Document::TwoPageLeft || pageLayout == Poppler::Document::TwoColumnLeft; } bool PdfDocument::wantsTwoPagesWithCoverPageMode() const { LOCK_DOCUMENT const Poppler::Document::PageLayout pageLayout = m_document->pageLayout(); return pageLayout == Poppler::Document::TwoPageRight || pageLayout == Poppler::Document::TwoColumnRight; } bool PdfDocument::wantsRightToLeftMode() const { #ifdef HAS_POPPLER_26 return m_document->textDirection() == Qt::RightToLeft; #else return false; #endif // HAS_POPPLER_26 } } // Model PdfSettingsWidget::PdfSettingsWidget(QSettings* settings, QWidget* parent) : SettingsWidget(parent), m_settings(settings) { m_layout = new QFormLayout(this); // antialiasing m_antialiasingCheckBox = new QCheckBox(this); m_antialiasingCheckBox->setChecked(m_settings->value("antialiasing", Defaults::antialiasing).toBool()); m_layout->addRow(tr("Antialiasing:"), m_antialiasingCheckBox); // text antialising m_textAntialiasingCheckBox = new QCheckBox(this); m_textAntialiasingCheckBox->setChecked(m_settings->value("textAntialiasing", Defaults::textAntialiasing).toBool()); m_layout->addRow(tr("Text antialiasing:"), m_textAntialiasingCheckBox); // text hinting #ifdef HAS_POPPLER_18 m_textHintingComboBox = new QComboBox(this); m_textHintingComboBox->addItem(tr("None")); m_textHintingComboBox->addItem(tr("Full")); m_textHintingComboBox->addItem(tr("Reduced")); m_textHintingComboBox->setCurrentIndex(m_settings->value("textHinting", Defaults::textHinting).toInt()); m_layout->addRow(tr("Text hinting:"), m_textHintingComboBox); #else m_textHintingCheckBox = new QCheckBox(this); m_textHintingCheckBox->setChecked(m_settings->value("textHinting", Defaults::textHinting).toBool()); m_layout->addRow(tr("Text hinting:"), m_textHintingCheckBox); #endif // HAS_POPPLER_18 #ifdef HAS_POPPLER_35 m_ignorePaperColorCheckBox = new QCheckBox(this); m_ignorePaperColorCheckBox->setChecked(m_settings->value("ignorePaperColor", Defaults::ignorePaperColor).toBool()); m_layout->addRow(tr("Ignore paper color:"), m_ignorePaperColorCheckBox); #endif // HAS_POPPLER_35 #ifdef HAS_POPPLER_22 // overprint preview m_overprintPreviewCheckBox = new QCheckBox(this); m_overprintPreviewCheckBox->setChecked(m_settings->value("overprintPreview", Defaults::overprintPreview).toBool()); m_layout->addRow(tr("Overprint preview:"), m_overprintPreviewCheckBox); #endif // HAS_POPPLER_22 #ifdef HAS_POPPLER_24 m_thinLineModeComboBox = new QComboBox(this); m_thinLineModeComboBox->addItem(tr("None")); m_thinLineModeComboBox->addItem(tr("Solid")); m_thinLineModeComboBox->addItem(tr("Shaped")); m_thinLineModeComboBox->setCurrentIndex(m_settings->value("thinLineMode", Defaults::thinLineMode).toInt()); m_layout->addRow(tr("Thin line mode:"), m_thinLineModeComboBox); #endif // HAS_POPPLER_24 m_backendComboBox = new QComboBox(this); m_backendComboBox->addItem(tr("Splash")); m_backendComboBox->addItem(tr("Arthur")); m_backendComboBox->setCurrentIndex(m_settings->value("backend", Defaults::backend).toInt()); m_layout->addRow(tr("Backend:"), m_backendComboBox); } void PdfSettingsWidget::accept() { m_settings->setValue("antialiasing", m_antialiasingCheckBox->isChecked()); m_settings->setValue("textAntialiasing", m_textAntialiasingCheckBox->isChecked()); #ifdef HAS_POPPLER_18 m_settings->setValue("textHinting", m_textHintingComboBox->currentIndex()); #else m_settings->setValue("textHinting", m_textHintingCheckBox->isChecked()); #endif // HAS_POPPLER_18 #ifdef HAS_POPPLER_35 m_settings->setValue("ignorePaperColor", m_ignorePaperColorCheckBox->isChecked()); #endif // HAS_POPPLER_35 #ifdef HAS_POPPLER_22 m_settings->setValue("overprintPreview", m_overprintPreviewCheckBox->isChecked()); #endif // HAS_POPPLER_22 #ifdef HAS_POPPLER_24 m_settings->setValue("thinLineMode", m_thinLineModeComboBox->currentIndex()); #endif // HAS_POPPLER_24 m_settings->setValue("backend", m_backendComboBox->currentIndex()); } void PdfSettingsWidget::reset() { m_antialiasingCheckBox->setChecked(Defaults::antialiasing); m_textAntialiasingCheckBox->setChecked(Defaults::textAntialiasing); #ifdef HAS_POPPLER_18 m_textHintingComboBox->setCurrentIndex(Defaults::textHinting); #else m_textHintingCheckBox->setChecked(Defaults::textHinting); #endif // HAS_POPPLER_18 #ifdef HAS_POPPLER_35 m_ignorePaperColorCheckBox->setChecked(Defaults::ignorePaperColor); #endif // HAS_POPPLER_35 #ifdef HAS_POPPLER_22 m_overprintPreviewCheckBox->setChecked(Defaults::overprintPreview); #endif // HAS_POPPLER_22 #ifdef HAS_POPPLER_24 m_thinLineModeComboBox->setCurrentIndex(Defaults::thinLineMode); #endif // HAS_POPPLER_24 m_backendComboBox->setCurrentIndex(Defaults::backend); } PdfPlugin::PdfPlugin(QObject* parent) : QObject(parent) { setObjectName("PdfPlugin"); m_settings = new QSettings("qpdfview", "pdf-plugin", this); } Model::Document* PdfPlugin::loadDocument(const QString& filePath) const { if(Poppler::Document* document = Poppler::Document::load(filePath)) { document->setRenderHint(Poppler::Document::Antialiasing, m_settings->value("antialiasing", Defaults::antialiasing).toBool()); document->setRenderHint(Poppler::Document::TextAntialiasing, m_settings->value("textAntialiasing", Defaults::textAntialiasing).toBool()); #if defined(HAS_POPPLER_18) switch(m_settings->value("textHinting", Defaults::textHinting).toInt()) { default: case 0: document->setRenderHint(Poppler::Document::TextHinting, false); break; case 1: document->setRenderHint(Poppler::Document::TextHinting, true); document->setRenderHint(Poppler::Document::TextSlightHinting, false); break; case 2: document->setRenderHint(Poppler::Document::TextHinting, true); document->setRenderHint(Poppler::Document::TextSlightHinting, true); break; } #elif defined(HAS_POPPLER_14) document->setRenderHint(Poppler::Document::TextHinting, m_settings->value("textHinting", Defaults::textHinting).toBool()); #endif // HAS_POPPLER_18 HAS_POPPLER_14 #ifdef HAS_POPPLER_35 document->setRenderHint(Poppler::Document::IgnorePaperColor, m_settings->value("ignorePaperColor", Defaults::ignorePaperColor).toBool()); #endif // HAS_POPPLER_35 #ifdef HAS_POPPLER_22 document->setRenderHint(Poppler::Document::OverprintPreview, m_settings->value("overprintPreview", Defaults::overprintPreview).toBool()); #endif // HAS_POPPLER_22 #ifdef HAS_POPPLER_24 switch(m_settings->value("thinLineMode", Defaults::thinLineMode).toInt()) { default: case 0: document->setRenderHint(Poppler::Document::ThinLineSolid, false); document->setRenderHint(Poppler::Document::ThinLineShape, false); break; case 1: document->setRenderHint(Poppler::Document::ThinLineSolid, true); document->setRenderHint(Poppler::Document::ThinLineShape, false); break; case 2: document->setRenderHint(Poppler::Document::ThinLineSolid, false); document->setRenderHint(Poppler::Document::ThinLineShape, true); break; } #endif // HAS_POPPLER_24 switch(m_settings->value("backend", Defaults::backend).toInt()) { default: case 0: document->setRenderBackend(Poppler::Document::SplashBackend); break; case 1: document->setRenderBackend(Poppler::Document::ArthurBackend); break; } return new Model::PdfDocument(document); } return 0; } SettingsWidget* PdfPlugin::createSettingsWidget(QWidget* parent) const { return new PdfSettingsWidget(m_settings, parent); } } // qpdfview #if QT_VERSION < QT_VERSION_CHECK(5,0,0) Q_EXPORT_PLUGIN2(qpdfview_pdf, qpdfview::PdfPlugin) #endif // QT_VERSION qpdfview-0.4.18/sources/pdfmodel.h0000644000000000000000000001253013516127411015207 0ustar 00000000000000/* Copyright 2014 S. Razi Alavizadeh Copyright 2013-2014 Adam Reichold This file is part of qpdfview. qpdfview is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. qpdfview is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with qpdfview. If not, see . */ #ifndef PDFMODEL_H #define PDFMODEL_H #include #include #include class QCheckBox; class QComboBox; class QFormLayout; class QSettings; namespace Poppler { class Annotation; class Document; class FormField; class Page; } #include "model.h" namespace qpdfview { class PdfPlugin; namespace Model { class PdfAnnotation : public Annotation { Q_OBJECT friend class PdfPage; public: ~PdfAnnotation(); QRectF boundary() const; QString contents() const; QWidget* createWidget(); private: Q_DISABLE_COPY(PdfAnnotation) PdfAnnotation(QMutex* mutex, Poppler::Annotation* annotation); mutable QMutex* m_mutex; Poppler::Annotation* m_annotation; }; class PdfFormField : public FormField { Q_OBJECT friend class PdfPage; public: ~PdfFormField(); QRectF boundary() const; QString name() const; QWidget* createWidget(); private: Q_DISABLE_COPY(PdfFormField) PdfFormField(QMutex* mutex, Poppler::FormField* formField); mutable QMutex* m_mutex; Poppler::FormField* m_formField; }; class PdfPage : public Page { Q_DECLARE_TR_FUNCTIONS(Model::PdfPage) friend class PdfDocument; public: ~PdfPage(); QSizeF size() const; QImage render(qreal horizontalResolution, qreal verticalResolution, Rotation rotation, QRect boundingRect) const; QString label() const; QList< Link* > links() const; QString text(const QRectF& rect) const; QString cachedText(const QRectF& rect) const; QList< QRectF > search(const QString& text, bool matchCase, bool wholeWords) const; QList< Annotation* > annotations() const; bool canAddAndRemoveAnnotations() const; Annotation* addTextAnnotation(const QRectF& boundary, const QColor& color); Annotation* addHighlightAnnotation(const QRectF& boundary, const QColor& color); void removeAnnotation(Annotation* annotation); QList< FormField* > formFields() const; private: Q_DISABLE_COPY(PdfPage) PdfPage(QMutex* mutex, Poppler::Page* page); mutable QMutex* m_mutex; Poppler::Page* m_page; }; class PdfDocument : public Document { Q_DECLARE_TR_FUNCTIONS(Model::PdfDocument) friend class qpdfview::PdfPlugin; public: ~PdfDocument(); int numberOfPages() const; Page* page(int index) const; bool isLocked() const; bool unlock(const QString& password); QStringList saveFilter() const; bool canSave() const; bool save(const QString& filePath, bool withChanges) const; bool canBePrintedUsingCUPS() const; void setPaperColor(const QColor& paperColor); Outline outline() const; Properties properties() const; QAbstractItemModel* fonts() const; bool wantsContinuousMode() const; bool wantsSinglePageMode() const; bool wantsTwoPagesMode() const; bool wantsTwoPagesWithCoverPageMode() const; bool wantsRightToLeftMode() const; private: Q_DISABLE_COPY(PdfDocument) PdfDocument(Poppler::Document* document); mutable QMutex m_mutex; Poppler::Document* m_document; }; } class PdfSettingsWidget : public SettingsWidget { Q_OBJECT public: PdfSettingsWidget(QSettings* settings, QWidget* parent = 0); void accept(); void reset(); private: Q_DISABLE_COPY(PdfSettingsWidget) QSettings* m_settings; QFormLayout* m_layout; QCheckBox* m_antialiasingCheckBox; QCheckBox* m_textAntialiasingCheckBox; #ifdef HAS_POPPLER_18 QComboBox* m_textHintingComboBox; #else QCheckBox* m_textHintingCheckBox; #endif // HAS_POPPLER_18 #ifdef HAS_POPPLER_35 QCheckBox* m_ignorePaperColorCheckBox; #endif // HAS_POPPLER_35 #ifdef HAS_POPPLER_22 QCheckBox* m_overprintPreviewCheckBox; #endif // HAS_POPPLER_22 #ifdef HAS_POPPLER_24 QComboBox* m_thinLineModeComboBox; #endif // HAS_POPPLER_24 QComboBox* m_backendComboBox; }; class PdfPlugin : public QObject, Plugin { Q_OBJECT Q_INTERFACES(qpdfview::Plugin) #if QT_VERSION >= QT_VERSION_CHECK(5,0,0) Q_PLUGIN_METADATA(IID "local.qpdfview.Plugin") #endif // QT_VERSION public: PdfPlugin(QObject* parent = 0); Model::Document* loadDocument(const QString& filePath) const; SettingsWidget* createSettingsWidget(QWidget* parent) const; private: Q_DISABLE_COPY(PdfPlugin) QSettings* m_settings; }; } // qpdfview #endif // PDFMODEL_H qpdfview-0.4.18/sources/pluginhandler.cpp0000644000000000000000000003773413516127411016621 0ustar 00000000000000/* Copyright 2018 S. Razi Alavizadeh Copyright 2012-2013, 2015-2018 Adam Reichold This file is part of qpdfview. qpdfview is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. qpdfview is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with qpdfview. If not, see . */ #include "pluginhandler.h" #include #include #include #include #include #include #include #include #include #if QT_VERSION >= QT_VERSION_CHECK(5,0,0) #include #endif // QT_VERSION #ifdef WITH_MAGIC #include #endif // WITH_MAGIC #include "model.h" namespace { using namespace qpdfview; Plugin* loadStaticPlugin(const QString& objectName) { foreach(QObject* object, QPluginLoader::staticInstances()) { if(object->objectName() == objectName) { if(Plugin* plugin = qobject_cast< Plugin* >(object)) { return plugin; } } } qCritical() << "Could not load static plug-in:" << objectName; return 0; } Plugin* loadPlugin(const QString& fileName) { QPluginLoader pluginLoader; #ifdef PLUGIN_RESOLVE_ALL pluginLoader.setLoadHints(QLibrary::ResolveAllSymbolsHint); #endif // PLUGIN_RESOLVE_ALL const QString localFileName = QDir(QApplication::applicationDirPath()).absoluteFilePath(fileName); pluginLoader.setFileName(localFileName); if(!pluginLoader.load()) { const QString localErrorString = pluginLoader.errorString(); const QString globalFileName = QDir(PLUGIN_INSTALL_PATH).absoluteFilePath(fileName); pluginLoader.setFileName(globalFileName); if(!pluginLoader.load()) { const QString globalErrorString = pluginLoader.errorString(); qCritical() << "Could not load local plug-in:" << localFileName; qCritical() << localErrorString; qCritical() << "Could not load global plug-in:" << globalFileName; qCritical() << globalErrorString; return 0; } } Plugin* plugin = qobject_cast< Plugin* >(pluginLoader.instance()); if(plugin == 0) { qCritical() << "Could not instantiate plug-in:" << pluginLoader.fileName(); qCritical() << pluginLoader.errorString(); } return plugin; } QStringList supportedImageFormats() { QStringList formats; foreach(const QByteArray& format, QImageReader::supportedImageFormats()) { const QString name = QString::fromLocal8Bit(format); formats.append(QLatin1String("*.") + name.toLower()); formats.append(QLatin1String("*.") + name.toUpper()); } return formats; } struct MimeTypeMapping { const char* mimeType; PluginHandler::FileType fileType; const char* suffix; const char* alternativeSuffix; }; const MimeTypeMapping mimeTypeMappings[] = { { "application/pdf", PluginHandler::PDF, "pdf", 0 }, { "application/postscript", PluginHandler::PS, "ps", "eps" }, { "image/vnd.djvu", PluginHandler::DjVu, "djvu", "djv" }, { "application/x-gzip", PluginHandler::GZip, "gz", 0 }, { "application/x-bzip2", PluginHandler::BZip2, "bz2", 0 }, { "application/x-xz", PluginHandler::XZ, "xz", 0 }, { "application/epub+zip", PluginHandler::EPUB, "epub", 0 }, { "application/x-fictionbook+xml", PluginHandler::FB2, "fb2", 0 }, { "application/x-zip-compressed-fb2", PluginHandler::FB2, "fb2", 0 }, { "application/zip", PluginHandler::ZIP, "zip", 0 } }; const MimeTypeMapping* const endOfMimeTypeMappings = mimeTypeMappings + sizeof(mimeTypeMappings) / sizeof(mimeTypeMappings[0]); void matchArchiveAndImageType(const QString& filePath, PluginHandler::FileType& fileType) { if(fileType == PluginHandler::ZIP) { const QString suffix = QFileInfo(filePath).suffix().toLower(); if (suffix == "cbz") { fileType = PluginHandler::CBZ; } else if (suffix == "xps" || suffix == "oxps") { fileType = PluginHandler::XPS; } else { fileType = PluginHandler::Unknown; } } if(fileType == PluginHandler::Unknown && !QImageReader::imageFormat(filePath).isEmpty()) { fileType = PluginHandler::Image; } } PluginHandler::FileType matchFileType(const QString& filePath) { PluginHandler::FileType fileType = PluginHandler::Unknown; #if QT_VERSION >= QT_VERSION_CHECK(5,0,0) const QMimeType mimeType = QMimeDatabase().mimeTypeForFile(filePath, QMimeDatabase::MatchContent); for(const MimeTypeMapping* mapping = mimeTypeMappings; mapping != endOfMimeTypeMappings; ++mapping) { if(mimeType.inherits(mapping->mimeType)) { fileType = mapping->fileType; break; } } matchArchiveAndImageType(filePath, fileType); if(fileType == PluginHandler::Unknown) { qDebug() << "Unknown MIME type:" << mimeType.name(); } #else #ifdef WITH_MAGIC magic_t cookie = magic_open(MAGIC_MIME_TYPE | MAGIC_SYMLINK); if(magic_load(cookie, 0) == 0) { const char* const mimeType = magic_file(cookie, QFile::encodeName(filePath)); for(const MimeTypeMapping* mapping = mimeTypeMappings; mapping != endOfMimeTypeMappings; ++mapping) { if(qstrcmp(mimeType, mapping->mimeType) == 0) { fileType = mapping->fileType; break; } } matchArchiveAndImageType(filePath, fileType); if(fileType == PluginHandler::Unknown) { qDebug() << "Unknown MIME type:" << mimeType; } } magic_close(cookie); #else const QString suffix = QFileInfo(filePath).suffix().toLower(); for(const MimeTypeMapping* mapping = mimeTypeMappings; mapping != endOfMimeTypeMappings; ++mapping) { if(suffix == mapping->suffix || (mapping->alternativeSuffix != 0 && suffix == mapping->alternativeSuffix)) { fileType = mapping->fileType; break; } } matchArchiveAndImageType(filePath, fileType); if(fileType == PluginHandler::Unknown) { qDebug() << "Unkown file suffix:" << suffix; } #endif // WITH_MAGIC #endif // QT_VERSION return fileType; } int execute(QProcess& process, const QString& program, const QStringList& arguments = QStringList()) { process.start(program, arguments, QIODevice::NotOpen); if(!process.waitForStarted()) { return -1; } if(!process.waitForFinished()) { return -2; } return process.exitCode(); } QStringList supportedCompressedFormats() { QStringList formats; QProcess process; process.setStandardInputFile("/dev/null"); process.setStandardOutputFile("/dev/null"); if(execute(process, "gzip") >= 0) { formats.append("*.gz *.GZ"); } if(execute(process, "bzip2") >= 0) { formats.append("*.bz2 *.BZ2"); } if(execute(process, "xz") >= 0) { formats.append("*.xz *.XZ"); } return formats; } QString decompressToTemporaryFile(const QString& filePath, const PluginHandler::FileType fileType) { const char* command; switch(fileType) { case PluginHandler::GZip: command = "gzip"; break; case PluginHandler::BZip2: command = "bzip2"; break; case PluginHandler::XZ: command = "xz"; break; default: return QString(); } QTemporaryFile file; file.setAutoRemove(false); if(!file.open()) { return QString(); } file.close(); QProcess process; process.setStandardInputFile("/dev/null"); process.setStandardOutputFile(file.fileName()); if(execute(process, command, QStringList() << "-dck" << filePath) != 0) { return QString(); } return file.fileName(); } } // anonymous namespace qpdfview { PluginHandler* PluginHandler::s_instance = 0; PluginHandler* PluginHandler::instance() { if(s_instance == 0) { s_instance = new PluginHandler(qApp); } return s_instance; } PluginHandler::~PluginHandler() { s_instance = 0; } QLatin1String PluginHandler::fileTypeName(PluginHandler::FileType fileType) { switch(fileType) { default: case PluginHandler::Unknown: return QLatin1String("Unknown"); case PluginHandler::PDF: return QLatin1String("PDF"); case PluginHandler::PS: return QLatin1String("PS"); case PluginHandler::DjVu: return QLatin1String("DjVu"); case PluginHandler::Image: return QLatin1String("Image"); case PluginHandler::EPUB: return QLatin1String("EPUB"); case PluginHandler::XPS: return QLatin1String("XPS"); case PluginHandler::FB2: return QLatin1String("FictionBook2"); case PluginHandler::CBZ: return QLatin1String("CBZ"); case PluginHandler::GZip: case PluginHandler::BZip2: case PluginHandler::XZ: case PluginHandler::ZIP: return QLatin1String("Compressed"); } } QStringList PluginHandler::openFilter() { QStringList openFilter; QStringList supportedFormats; #if defined(WITH_PDF) || defined(WITH_FITZ) openFilter.append(QLatin1String("Portable document format (*.pdf *.PDF)")); supportedFormats.append(QLatin1String("*.pdf *.PDF")); #endif // WITH_PDF // WITH_FITZ #if defined(WITH_FITZ) openFilter.append(QLatin1String("EPUB (*.epub *.EPUB)")); supportedFormats.append(QLatin1String("*.epub *.EPUB")); openFilter.append(QLatin1String("XPS (*.xps *.XPS *.oxps *.OXPS)")); supportedFormats.append(QLatin1String("*.xps *.XPS *.oxps *.OXPS")); openFilter.append(QLatin1String("FictionBook 2 (*.fb2 *.FB2)")); supportedFormats.append(QLatin1String("*.fb2 *.FB2")); openFilter.append(QLatin1String("CBZ (*.cbz *.CBZ)")); supportedFormats.append(QLatin1String("*.cbz *.CBZ")); #endif // WITH_FITZ #ifdef WITH_PS openFilter.append(QLatin1String("PostScript (*.ps *.PS)")); openFilter.append(QLatin1String("Encapsulated PostScript (*.eps *.EPS)")); supportedFormats.append(QLatin1String("*.ps *.PS *.eps *.EPS")); #endif // WITH_PS #ifdef WITH_DJVU openFilter.append(QLatin1String("DjVu (*.djvu *.DJVU *.djv *.DJV)")); supportedFormats.append(QLatin1String("*.djvu *.DJVU *.djv *.DJV")); #endif // WITH_DJVU #ifdef WITH_IMAGE static QStringList imageFormats; if(imageFormats.isEmpty()) { imageFormats = supportedImageFormats(); } if(!imageFormats.isEmpty()) { openFilter.append(tr("Image (%1)").arg(imageFormats.join(QLatin1String(" ")))); supportedFormats.append(imageFormats); } #endif // WITH_IMAGE static QStringList compressedFormats; if(compressedFormats.isEmpty()) { compressedFormats = supportedCompressedFormats(); } if(!compressedFormats.isEmpty()) { openFilter.append(tr("Compressed (%1)").arg(compressedFormats.join(QLatin1String(" ")))); supportedFormats.append(compressedFormats); } openFilter.prepend(tr("Supported formats (%1)").arg(supportedFormats.join(QLatin1String(" ")))); return openFilter; } Model::Document* PluginHandler::loadDocument(const QString& filePath) { FileType fileType = matchFileType(filePath); QString adjustedFilePath = filePath; if(fileType == GZip || fileType == BZip2 || fileType == XZ) { adjustedFilePath = decompressToTemporaryFile(filePath, fileType); if(adjustedFilePath.isEmpty()) { qWarning() << tr("Could not decompress '%1'!").arg(filePath); return 0; } fileType = matchFileType(adjustedFilePath); } if(fileType == Unknown) { qWarning() << tr("Could not match file type of '%1'!").arg(filePath); return 0; } if(!loadPlugin(fileType)) { QMessageBox::critical(0, tr("Critical"), tr("Could not load plug-in for file type '%1'!").arg(fileTypeName(fileType))); return 0; } return m_plugins.value(fileType)->loadDocument(adjustedFilePath); } SettingsWidget* PluginHandler::createSettingsWidget(FileType fileType, QWidget* parent) { return loadPlugin(fileType) ? m_plugins.value(fileType)->createSettingsWidget(parent) : 0; } PluginHandler::PluginHandler(QObject* parent) : QObject(parent), m_plugins() { #ifdef WITH_IMAGE #ifdef STATIC_IMAGE_PLUGIN m_objectNames.insertMulti(Image, QLatin1String("ImagePlugin")); #else m_fileNames.insertMulti(Image, QLatin1String(IMAGE_PLUGIN_NAME)); #endif // STATIC_IMAGE_PLUGIN #endif // WITH_IMAGE #ifdef WITH_FITZ #ifdef STATIC_FITZ_PLUGIN m_objectNames.insertMulti(PDF, QLatin1String("FitzPlugin")); m_objectNames.insertMulti(EPUB, QLatin1String("FitzPlugin")); m_objectNames.insertMulti(XPS, QLatin1String("FitzPlugin")); m_objectNames.insertMulti(FB2, QLatin1String("FitzPlugin")); m_objectNames.insertMulti(CBZ, QLatin1String("FitzPlugin")); #else m_fileNames.insertMulti(PDF, QLatin1String(FITZ_PLUGIN_NAME)); m_fileNames.insertMulti(EPUB, QLatin1String(FITZ_PLUGIN_NAME)); m_fileNames.insertMulti(XPS, QLatin1String(FITZ_PLUGIN_NAME)); m_fileNames.insertMulti(FB2, QLatin1String(FITZ_PLUGIN_NAME)); m_fileNames.insertMulti(CBZ, QLatin1String(FITZ_PLUGIN_NAME)); #endif // STATIC_FITZ_PLUGIN #endif // WITH_FITZ #ifdef WITH_PDF #ifdef STATIC_PDF_PLUGIN m_objectNames.insertMulti(PDF, QLatin1String("PdfPlugin")); #else m_fileNames.insertMulti(PDF, QLatin1String(PDF_PLUGIN_NAME)); #endif // STATIC_PDF_PLUGIN #endif // WITH_PDF #ifdef WITH_PS #ifdef STATIC_PS_PLUGIN m_objectNames.insertMulti(PS, QLatin1String("PsPlugin")); #else m_fileNames.insertMulti(PS, QLatin1String(PS_PLUGIN_NAME)); #endif // STATIC_PS_PLUGIN #endif // WITH_PS #ifdef WITH_DJVU #ifdef STATIC_DJVU_PLUGIN m_objectNames.insertMulti(DjVu, QLatin1String("DjVuPlugin")); #else m_fileNames.insertMulti(DjVu, QLatin1String(DJVU_PLUGIN_NAME)); #endif // STATIC_DJVU_PLUGIN #endif // WITH_DJVU } bool PluginHandler::loadPlugin(FileType fileType) { if(m_plugins.contains(fileType)) { return true; } foreach(const QString& objectName, m_objectNames.values(fileType)) { if(Plugin* plugin = ::loadStaticPlugin(objectName)) { m_plugins.insert(fileType, plugin); return true; } } foreach(const QString& fileName, m_fileNames.values(fileType)) { if(Plugin* plugin = ::loadPlugin(fileName)) { m_plugins.insert(fileType, plugin); return true; } } return false; } } // qpdfview #ifdef STATIC_IMAGE_PLUGIN #if QT_VERSION < QT_VERSION_CHECK(5,0,0) Q_IMPORT_PLUGIN(qpdfview_image) #else Q_IMPORT_PLUGIN(ImagePlugin) #endif // QT_VERSION #endif // STATIC_IMAGE_PLUGIN #ifdef STATIC_FITZ_PLUGIN #if QT_VERSION < QT_VERSION_CHECK(5,0,0) Q_IMPORT_PLUGIN(qpdfview_fitz) #else Q_IMPORT_PLUGIN(FitzPlugin) #endif // QT_VERSION #endif // STATIC_FITZ_PLUGIN #ifdef STATIC_PDF_PLUGIN #if QT_VERSION < QT_VERSION_CHECK(5,0,0) Q_IMPORT_PLUGIN(qpdfview_pdf) #else Q_IMPORT_PLUGIN(PdfPlugin) #endif // QT_VERSION #endif // STATIC_PDF_PLUGIN #ifdef STATIC_PS_PLUGIN #if QT_VERSION < QT_VERSION_CHECK(5,0,0) Q_IMPORT_PLUGIN(qpdfview_ps) #else Q_IMPORT_PLUGIN(PsPlugin) #endif // QT_VERSION #endif // STATIC_PS_PLUGIN #ifdef STATIC_DJVU_PLUGIN #if QT_VERSION < QT_VERSION_CHECK(5,0,0) Q_IMPORT_PLUGIN(qpdfview_djvu) #else Q_IMPORT_PLUGIN(DjVuPlugin) #endif // QT_VERSION #endif // STATIC_DJVU_PLUGIN qpdfview-0.4.18/sources/pluginhandler.h0000644000000000000000000000350413516127411016252 0ustar 00000000000000/* Copyright 2018 S. Razi Alavizadeh Copyright 2012-2013, 2017, 2018 Adam Reichold This file is part of qpdfview. qpdfview is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. qpdfview is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with qpdfview. If not, see . */ #ifndef PLUGINHANDLER_H #define PLUGINHANDLER_H #include #include class QString; class QWidget; namespace qpdfview { namespace Model { class Document; } class SettingsWidget; class Plugin; class PluginHandler : public QObject { Q_OBJECT public: static PluginHandler* instance(); ~PluginHandler(); enum FileType { Unknown = 0, PDF, PS, DjVu, Image, GZip, BZip2, XZ, ZIP, EPUB, XPS, FB2, CBZ }; static QLatin1String fileTypeName(FileType fileType); static QStringList openFilter(); Model::Document* loadDocument(const QString& filePath); SettingsWidget* createSettingsWidget(FileType fileType, QWidget* parent = 0); private: Q_DISABLE_COPY(PluginHandler) static PluginHandler* s_instance; PluginHandler(QObject* parent = 0); QMap< FileType, Plugin* > m_plugins; QMultiMap< FileType, QString > m_objectNames; QMultiMap< FileType, QString > m_fileNames; bool loadPlugin(FileType fileType); }; } // qpdfview #endif // PLUGINHANDLER_H qpdfview-0.4.18/sources/presentationview.cpp0000644000000000000000000003412513516127411017362 0ustar 00000000000000/* Copyright 2012-2013 Adam Reichold This file is part of qpdfview. qpdfview is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. qpdfview is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with qpdfview. If not, see . */ #include "presentationview.h" #include #include #include #include "settings.h" #include "model.h" #include "pageitem.h" #include "documentview.h" namespace { using namespace qpdfview; inline void adjustScaleFactor(RenderParam& renderParam, qreal scaleFactor) { if(!qFuzzyCompare(renderParam.scaleFactor(), scaleFactor)) { renderParam.setScaleFactor(scaleFactor); } } } // anonymous namespace qpdfview { Settings* PresentationView::s_settings = 0; PresentationView::PresentationView(const QVector< Model::Page* >& pages, QWidget* parent) : QGraphicsView(parent), m_prefetchTimer(0), m_pages(pages), m_currentPage(1), m_past(), m_future(), m_scaleMode(FitToPageSizeMode), m_scaleFactor(1.0), m_rotation(RotateBy0), m_renderFlags(0), m_pageItems() { if(s_settings == 0) { s_settings = Settings::instance(); } setWindowFlags(windowFlags() | Qt::FramelessWindowHint); setWindowState(windowState() | Qt::WindowFullScreen); setFrameShape(QFrame::NoFrame); setAcceptDrops(false); setDragMode(QGraphicsView::ScrollHandDrag); setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); setScene(new QGraphicsScene(this)); preparePages(); prepareBackground(); // prefetch m_prefetchTimer = new QTimer(this); m_prefetchTimer->setInterval(250); m_prefetchTimer->setSingleShot(true); connect(this, SIGNAL(currentPageChanged(int)), m_prefetchTimer, SLOT(start())); connect(this, SIGNAL(scaleModeChanged(ScaleMode)), m_prefetchTimer, SLOT(start())); connect(this, SIGNAL(scaleFactorChanged(qreal)), m_prefetchTimer, SLOT(start())); connect(this, SIGNAL(rotationChanged(Rotation)), m_prefetchTimer, SLOT(start())); connect(this, SIGNAL(renderFlagsChanged(qpdfview::RenderFlags)), m_prefetchTimer, SLOT(start())); connect(m_prefetchTimer, SIGNAL(timeout()), SLOT(on_prefetch_timeout())); if(s_settings->documentView().prefetch()) { m_prefetchTimer->blockSignals(false); m_prefetchTimer->start(); } else { m_prefetchTimer->blockSignals(true); m_prefetchTimer->stop(); } prepareScene(); prepareView(); } PresentationView::~PresentationView() { qDeleteAll(m_pageItems); } void PresentationView::setScaleMode(ScaleMode scaleMode) { if(m_scaleMode != scaleMode && scaleMode >= 0 && scaleMode < NumberOfScaleModes) { m_scaleMode = scaleMode; prepareScene(); prepareView(); emit scaleModeChanged(m_scaleMode); } } void PresentationView::setScaleFactor(qreal scaleFactor) { if(!qFuzzyCompare(m_scaleFactor, scaleFactor) && scaleFactor >= s_settings->documentView().minimumScaleFactor() && scaleFactor <= s_settings->documentView().maximumScaleFactor()) { m_scaleFactor = scaleFactor; if(m_scaleMode == ScaleFactorMode) { prepareScene(); prepareView(); } emit scaleFactorChanged(m_scaleFactor); } } void PresentationView::setRotation(Rotation rotation) { if(m_rotation != rotation) { m_rotation = rotation; prepareScene(); prepareView(); emit rotationChanged(m_rotation); } } void PresentationView::setRenderFlags(qpdfview::RenderFlags renderFlags) { if(m_renderFlags != renderFlags) { const qpdfview::RenderFlags changedFlags = m_renderFlags ^ renderFlags; m_renderFlags = renderFlags; prepareScene(); prepareView(); if(changedFlags.testFlag(InvertColors)) { prepareBackground(); } emit renderFlagsChanged(m_renderFlags); } } void PresentationView::show() { QWidget::show(); prepareView(); } void PresentationView::previousPage() { jumpToPage(m_currentPage - 1); } void PresentationView::nextPage() { jumpToPage(m_currentPage + 1); } void PresentationView::firstPage() { jumpToPage(1); } void PresentationView::lastPage() { jumpToPage(m_pages.count()); } void PresentationView::jumpToPage(int page, bool trackChange) { if(m_currentPage != page && page >= 1 && page <= m_pages.count()) { if(trackChange) { m_past.append(m_currentPage); } m_currentPage = page; prepareView(); emit currentPageChanged(m_currentPage, trackChange); } } void PresentationView::jumpBackward() { if(!m_past.isEmpty()) { m_future.prepend(m_currentPage); jumpToPage(m_past.takeLast(), false); } } void PresentationView::jumpForward() { if(!m_future.isEmpty()) { m_past.append(m_currentPage); jumpToPage(m_future.takeFirst(), false); } } void PresentationView::zoomIn() { if(scaleMode() != ScaleFactorMode) { const qreal currentScaleFactor = m_pageItems.at(m_currentPage - 1)->renderParam().scaleFactor(); setScaleFactor(qMin(currentScaleFactor * s_settings->documentView().zoomFactor(), s_settings->documentView().maximumScaleFactor())); setScaleMode(ScaleFactorMode); } else { setScaleFactor(qMin(m_scaleFactor * s_settings->documentView().zoomFactor(), s_settings->documentView().maximumScaleFactor())); } } void PresentationView::zoomOut() { if(scaleMode() != ScaleFactorMode) { const qreal currentScaleFactor = m_pageItems.at(m_currentPage - 1)->renderParam().scaleFactor(); setScaleFactor(qMax(currentScaleFactor / s_settings->documentView().zoomFactor(), s_settings->documentView().minimumScaleFactor())); setScaleMode(ScaleFactorMode); } else { setScaleFactor(qMax(m_scaleFactor / s_settings->documentView().zoomFactor(), s_settings->documentView().minimumScaleFactor())); } } void PresentationView::originalSize() { setScaleFactor(1.0); setScaleMode(ScaleFactorMode); } void PresentationView::rotateLeft() { switch(m_rotation) { default: case RotateBy0: setRotation(RotateBy270); break; case RotateBy90: setRotation(RotateBy0); break; case RotateBy180: setRotation(RotateBy90); break; case RotateBy270: setRotation(RotateBy180); break; } } void PresentationView::rotateRight() { switch(m_rotation) { default: case RotateBy0: setRotation(RotateBy90); break; case RotateBy90: setRotation(RotateBy180); break; case RotateBy180: setRotation(RotateBy270); break; case RotateBy270: setRotation(RotateBy0); break; } } void PresentationView::on_prefetch_timeout() { int fromPage = m_currentPage, toPage = m_currentPage; fromPage -= s_settings->documentView().prefetchDistance() / 2; toPage += s_settings->documentView().prefetchDistance(); fromPage = qMax(fromPage, 1); toPage = qMin(toPage, m_pages.count()); const int maxCost = toPage - fromPage + 1; int cost = 0; for(int index = m_currentPage - 1; index <= toPage - 1; ++index) { cost += m_pageItems.at(index)->startRender(true); if(cost >= maxCost) { return; } } for(int index = m_currentPage - 1; index >= fromPage - 1; --index) { cost += m_pageItems.at(index)->startRender(true); if(cost >= maxCost) { return; } } } void PresentationView::on_pages_cropRectChanged() { prepareScene(); prepareView(); } void PresentationView::on_pages_linkClicked(bool newTab, int page, qreal left, qreal top) { Q_UNUSED(newTab); Q_UNUSED(left); Q_UNUSED(top); page = qMax(page, 1); page = qMin(page, m_pages.count()); jumpToPage(page, true); } void PresentationView::resizeEvent(QResizeEvent* event) { QGraphicsView::resizeEvent(event); prepareScene(); prepareView(); } void PresentationView::keyPressEvent(QKeyEvent* event) { switch(event->modifiers() + event->key()) { case Qt::Key_PageUp: case Qt::Key_Up: case Qt::Key_Left: case Qt::Key_Backspace: previousPage(); event->accept(); return; case Qt::Key_PageDown: case Qt::Key_Down: case Qt::Key_Right: case Qt::Key_Space: nextPage(); event->accept(); return; case Qt::Key_Home: firstPage(); event->accept(); return; case Qt::Key_End: lastPage(); event->accept(); return; case Qt::CTRL + Qt::Key_Return: jumpBackward(); event->accept(); return; case Qt::CTRL + Qt::SHIFT + Qt::Key_Return: jumpForward(); event->accept(); return; case Qt::CTRL + Qt::Key_0: originalSize(); event->accept(); return; case Qt::CTRL + Qt::Key_9: setScaleMode(FitToPageWidthMode); event->accept(); return; case Qt::CTRL + Qt::Key_8: setScaleMode(FitToPageSizeMode); event->accept(); return; case Qt::CTRL + Qt::Key_Up: zoomIn(); event->accept(); return; case Qt::CTRL + Qt::Key_Down: zoomOut(); event->accept(); return; case Qt::CTRL + Qt::Key_Left: rotateLeft(); event->accept(); return; case Qt::CTRL + Qt::Key_Right: rotateRight(); event->accept(); return; case Qt::CTRL + Qt::Key_I: setRenderFlags(renderFlags() ^ InvertColors); event->accept(); return; case Qt::CTRL + Qt::Key_U: setRenderFlags(renderFlags() ^ ConvertToGrayscale); event->accept(); return; case Qt::CTRL + Qt::SHIFT + Qt::Key_U: setRenderFlags(renderFlags() ^ TrimMargins); event->accept(); return; case Qt::Key_F12: case Qt::Key_Escape: close(); event->accept(); return; } QWidget::keyPressEvent(event); } void PresentationView::wheelEvent(QWheelEvent* event) { if(event->modifiers() == s_settings->documentView().zoomModifiers()) { if(event->delta() > 0) { zoomIn(); } else { zoomOut(); } event->accept(); return; } else if(event->modifiers() == s_settings->documentView().rotateModifiers()) { if(event->delta() > 0) { rotateLeft(); } else { rotateRight(); } event->accept(); return; } else if(event->modifiers() == Qt::NoModifier) { if(event->delta() > 0 && m_currentPage != 1) { previousPage(); event->accept(); return; } else if(event->delta() < 0 && m_currentPage != m_pages.count()) { nextPage(); event->accept(); return; } } QGraphicsView::wheelEvent(event); } void PresentationView::preparePages() { for(int index = 0; index < m_pages.count(); ++index) { PageItem* page = new PageItem(m_pages.at(index), index, PageItem::PresentationMode); scene()->addItem(page); m_pageItems.append(page); connect(page, SIGNAL(cropRectChanged()), SLOT(on_pages_cropRectChanged())); connect(page, SIGNAL(linkClicked(bool,int,qreal,qreal)), SLOT(on_pages_linkClicked(bool,int,qreal,qreal))); } } void PresentationView::prepareBackground() { QColor backgroundColor = s_settings->presentationView().backgroundColor(); if(!backgroundColor.isValid()) { backgroundColor = s_settings->pageItem().paperColor(); } if(m_renderFlags.testFlag(InvertColors)) { backgroundColor.setRgb(~backgroundColor.rgb()); } scene()->setBackgroundBrush(QBrush(backgroundColor)); } void PresentationView::prepareScene() { RenderParam renderParam(logicalDpiX(), logicalDpiY(), 1.0, scaleFactor(), rotation(), renderFlags()); #if QT_VERSION >= QT_VERSION_CHECK(5,1,0) if(s_settings->pageItem().useDevicePixelRatio()) { #if QT_VERSION >= QT_VERSION_CHECK(5,6,0) renderParam.setDevicePixelRatio(devicePixelRatioF()); #else renderParam.setDevicePixelRatio(devicePixelRatio()); #endif // QT_VERSION } #endif // QT_VERSION const qreal visibleWidth = viewport()->width(); const qreal visibleHeight = viewport()->height(); foreach(PageItem* page, m_pageItems) { const QSizeF displayedSize = page->displayedSize(renderParam); if(m_scaleMode == FitToPageWidthMode) { adjustScaleFactor(renderParam, visibleWidth / displayedSize.width()); } else if(m_scaleMode == FitToPageSizeMode) { adjustScaleFactor(renderParam, qMin(visibleWidth / displayedSize.width(), visibleHeight / displayedSize.height())); } page->setRenderParam(renderParam); } } void PresentationView::prepareView() { for(int index = 0; index < m_pageItems.count(); ++index) { PageItem* page = m_pageItems.at(index); if(index == m_currentPage - 1) { page->setVisible(true); setSceneRect(page->boundingRect().translated(page->pos())); } else { page->setVisible(false); page->cancelRender(); } } viewport()->update(); } } // qpdfview qpdfview-0.4.18/sources/presentationview.h0000644000000000000000000000600213516127411017020 0ustar 00000000000000/* Copyright 2012-2013 Adam Reichold This file is part of qpdfview. qpdfview is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. qpdfview is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with qpdfview. If not, see . */ #ifndef PRESENTATIONVIEW_H #define PRESENTATIONVIEW_H #include #include "renderparam.h" namespace qpdfview { namespace Model { class Page; } class Settings; class PageItem; class PresentationView : public QGraphicsView { Q_OBJECT public: PresentationView(const QVector< Model::Page* >& pages, QWidget* parent = 0); ~PresentationView(); int numberOfPages() const { return m_pages.count(); } int currentPage() const { return m_currentPage; } ScaleMode scaleMode() const { return m_scaleMode; } void setScaleMode(ScaleMode scaleMode); qreal scaleFactor() const { return m_scaleFactor; } void setScaleFactor(qreal scaleFactor); Rotation rotation() const { return m_rotation; } void setRotation(Rotation rotation); qpdfview::RenderFlags renderFlags() const { return m_renderFlags; } void setRenderFlags(qpdfview::RenderFlags renderFlags); signals: void currentPageChanged(int currentPage, bool trackChange = false); void scaleModeChanged(ScaleMode scaleMode); void scaleFactorChanged(qreal scaleFactor); void rotationChanged(Rotation rotation); void renderFlagsChanged(qpdfview::RenderFlags renderFlags); public slots: void show(); void previousPage(); void nextPage(); void firstPage(); void lastPage(); void jumpToPage(int page, bool trackChange = true); void jumpBackward(); void jumpForward(); void zoomIn(); void zoomOut(); void originalSize(); void rotateLeft(); void rotateRight(); protected slots: void on_prefetch_timeout(); void on_pages_cropRectChanged(); void on_pages_linkClicked(bool newTab, int page, qreal left, qreal top); protected: void resizeEvent(QResizeEvent* event); void keyPressEvent(QKeyEvent* event); void wheelEvent(QWheelEvent* event); private: Q_DISABLE_COPY(PresentationView) static Settings* s_settings; QTimer* m_prefetchTimer; QVector< Model::Page* > m_pages; int m_currentPage; QList< int > m_past; QList< int > m_future; ScaleMode m_scaleMode; qreal m_scaleFactor; Rotation m_rotation; qpdfview::RenderFlags m_renderFlags; QVector< PageItem* > m_pageItems; void preparePages(); void prepareBackground(); void prepareScene(); void prepareView(); }; } // qpdfview #endif // PRESENTATIONVIEW_H qpdfview-0.4.18/sources/printdialog.cpp0000644000000000000000000001521113516127411016263 0ustar 00000000000000/* Copyright 2012-2013 Adam Reichold This file is part of qpdfview. qpdfview is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. qpdfview is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with qpdfview. If not, see . */ #include "printdialog.h" #include #include #include #include #include "settings.h" namespace qpdfview { Settings* PrintDialog::s_settings = 0; QPrinter* PrintDialog::createPrinter() { QPrinter* printer = new QPrinter(); const Settings::PrintDialog& settings = Settings::instance()->printDialog(); printer->setCollateCopies(settings.collateCopies()); printer->setPageOrder(settings.pageOrder()); printer->setOrientation(settings.orientation()); printer->setColorMode(settings.colorMode()); printer->setDuplex(settings.duplex()); return printer; } PrintDialog::PrintDialog(QPrinter* printer, QWidget* parent) : QPrintDialog(printer, parent) { if(s_settings == 0) { s_settings = Settings::instance(); } // print options m_printOptionsWidget = new QWidget(this); m_printOptionsLayout = new QFormLayout(m_printOptionsWidget); m_fitToPageCheckBox = new QCheckBox(this); m_fitToPageCheckBox->setChecked(s_settings->printDialog().fitToPage()); m_printOptionsLayout->addRow(tr("Fit to page:"), m_fitToPageCheckBox); #if QT_VERSION < QT_VERSION_CHECK(5,11,0) m_pageRangesLineEdit = new QLineEdit(this); m_printOptionsLayout->addRow(tr("Page ranges:"), m_pageRangesLineEdit); #endif // QT_VERSION #if QT_VERSION < QT_VERSION_CHECK(5,2,0) m_pageSetComboBox = new QComboBox(this); m_pageSetComboBox->addItem(tr("All pages"), static_cast< uint >(PrintOptions::AllPages)); m_pageSetComboBox->addItem(tr("Even pages"), static_cast< uint >(PrintOptions::EvenPages)); m_pageSetComboBox->addItem(tr("Odd pages"), static_cast< uint >(PrintOptions::OddPages)); m_pageSetComboBox->setCurrentIndex(m_pageSetComboBox->findData(static_cast< uint >(s_settings->printDialog().pageSet()))); m_printOptionsLayout->addRow(tr("Page set:"), m_pageSetComboBox); m_numberUpComboBox = new QComboBox(this); m_numberUpComboBox->addItem(tr("Single page"), static_cast< uint >(PrintOptions::SinglePage)); m_numberUpComboBox->addItem(tr("Two pages"), static_cast< uint >(PrintOptions::TwoPages)); m_numberUpComboBox->addItem(tr("Four pages"), static_cast< uint >(PrintOptions::FourPages)); m_numberUpComboBox->addItem(tr("Six pages"), static_cast< uint >(PrintOptions::SixPages)); m_numberUpComboBox->addItem(tr("Nine pages"), static_cast< uint >(PrintOptions::NinePages)); m_numberUpComboBox->addItem(tr("Sixteen pages"), static_cast< uint >(PrintOptions::SixteenPages)); m_numberUpComboBox->setCurrentIndex(m_numberUpComboBox->findData(static_cast< uint >(s_settings->printDialog().numberUp()))); m_printOptionsLayout->addRow(tr("Number-up:"), m_numberUpComboBox); m_numberUpLayoutComboBox = new QComboBox(this); m_numberUpLayoutComboBox->addItem(tr("Bottom to top and left to right"), static_cast< uint >(PrintOptions::BottomTopLeftRight)); m_numberUpLayoutComboBox->addItem(tr("Bottom to top and right to left"), static_cast< uint >(PrintOptions::BottomTopRightLeft)); m_numberUpLayoutComboBox->addItem(tr("Left to right and bottom to top"), static_cast< uint >(PrintOptions::LeftRightBottomTop)); m_numberUpLayoutComboBox->addItem(tr("Left to right and top to bottom"), static_cast< uint >(PrintOptions::LeftRightTopBottom)); m_numberUpLayoutComboBox->addItem(tr("Right to left and bottom to top"), static_cast< uint >(PrintOptions::RightLeftBottomTop)); m_numberUpLayoutComboBox->addItem(tr("Right to left and top to bottom"), static_cast< uint >(PrintOptions::RightLeftTopBottom)); m_numberUpLayoutComboBox->addItem(tr("Top to bottom and left to right"), static_cast< uint >(PrintOptions::TopBottomLeftRight)); m_numberUpLayoutComboBox->addItem(tr("Top to bottom and right to left"), static_cast< uint >(PrintOptions::TopBottomRightLeft)); m_numberUpLayoutComboBox->setCurrentIndex(m_numberUpLayoutComboBox->findData(static_cast< uint >(s_settings->printDialog().numberUpLayout()))); m_printOptionsLayout->addRow(tr("Number-up layout:"), m_numberUpLayoutComboBox); #endif // QT_VERSION m_printOptionsWidget->setWindowTitle(tr("Extended options")); setOptionTabs(QList< QWidget* >() << m_printOptionsWidget); } PrintOptions PrintDialog::printOptions() const { PrintOptions printOptions; printOptions.fitToPage = m_fitToPageCheckBox->isChecked(); #if QT_VERSION < QT_VERSION_CHECK(5,11,0) printOptions.pageRanges = m_pageRangesLineEdit->text(); #endif // QT_VERSION #if QT_VERSION < QT_VERSION_CHECK(5,2,0) printOptions.pageSet = static_cast< PrintOptions::PageSet >(m_pageSetComboBox->itemData(m_pageSetComboBox->currentIndex()).toUInt()); printOptions.numberUp = static_cast< PrintOptions::NumberUp >(m_numberUpComboBox->itemData(m_numberUpComboBox->currentIndex()).toUInt()); printOptions.numberUpLayout = static_cast< PrintOptions::NumberUpLayout >(m_numberUpLayoutComboBox->itemData(m_numberUpLayoutComboBox->currentIndex()).toUInt()); #endif // QT_VERSION return printOptions; } void PrintDialog::accept() { QPrintDialog::accept(); s_settings->printDialog().setCollateCopies(printer()->collateCopies()); s_settings->printDialog().setPageOrder(printer()->pageOrder()); s_settings->printDialog().setOrientation(printer()->orientation()); s_settings->printDialog().setColorMode(printer()->colorMode()); s_settings->printDialog().setDuplex(printer()->duplex()); s_settings->printDialog().setFitToPage(m_fitToPageCheckBox->isChecked()); #if QT_VERSION < QT_VERSION_CHECK(5,2,0) s_settings->printDialog().setPageSet(static_cast< PrintOptions::PageSet >(m_pageSetComboBox->itemData(m_pageSetComboBox->currentIndex()).toUInt())); s_settings->printDialog().setNumberUp(static_cast< PrintOptions::NumberUp >(m_numberUpComboBox->itemData(m_numberUpComboBox->currentIndex()).toUInt())); s_settings->printDialog().setNumberUpLayout(static_cast< PrintOptions::NumberUpLayout >(m_numberUpLayoutComboBox->itemData(m_numberUpLayoutComboBox->currentIndex()).toUInt())); #endif // QT_VERSION } } // qpdfview qpdfview-0.4.18/sources/printdialog.h0000644000000000000000000000314613516127411015734 0ustar 00000000000000/* Copyright 2012-2013 Adam Reichold This file is part of qpdfview. qpdfview is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. qpdfview is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with qpdfview. If not, see . */ #ifndef PRINTDIALOG_H #define PRINTDIALOG_H #include class QCheckBox; class QComboBox; class QFormLayout; class QLineEdit; class QPrinter; namespace qpdfview { struct PrintOptions; class Settings; class PrintDialog : public QPrintDialog { Q_OBJECT public: static QPrinter* createPrinter(); PrintDialog(QPrinter* printer, QWidget* parent = 0); PrintOptions printOptions() const; public slots: void accept(); private: Q_DISABLE_COPY(PrintDialog) static Settings* s_settings; QWidget* m_printOptionsWidget; QFormLayout* m_printOptionsLayout; QCheckBox* m_fitToPageCheckBox; #if QT_VERSION < QT_VERSION_CHECK(5,11,0) QLineEdit* m_pageRangesLineEdit; #endif // QT_VERSION #if QT_VERSION < QT_VERSION_CHECK(5,2,0) QComboBox* m_pageSetComboBox; QComboBox* m_numberUpComboBox; QComboBox* m_numberUpLayoutComboBox; #endif // QT_VERSION }; } // qpdfview #endif // PRINTDIALOG_H qpdfview-0.4.18/sources/printoptions.h0000644000000000000000000000337313516127411016172 0ustar 00000000000000/* Copyright 2013 Adam Reichold Copyright 2013 Alexander Volkov This file is part of qpdfview. qpdfview is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. qpdfview is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with qpdfview. If not, see . */ #ifndef PRINTOPTIONS_H #define PRINTOPTIONS_H namespace qpdfview { struct PrintOptions { bool fitToPage; QString pageRanges; #if QT_VERSION < QT_VERSION_CHECK(5,2,0) enum PageSet { AllPages = 0, EvenPages = 1, OddPages = 2 }; PageSet pageSet; enum NumberUp { SinglePage = 0, TwoPages = 1, FourPages = 2, SixPages = 3, NinePages = 4, SixteenPages = 5 }; NumberUp numberUp; enum NumberUpLayout { BottomTopLeftRight = 0, BottomTopRightLeft = 1, LeftRightBottomTop = 2, LeftRightTopBottom = 3, RightLeftBottomTop = 4, RightLeftTopBottom = 5, TopBottomLeftRight = 6, TopBottomRightLeft = 7 }; NumberUpLayout numberUpLayout; PrintOptions() : fitToPage(false), pageRanges(), pageSet(AllPages), numberUp(SinglePage), numberUpLayout(LeftRightTopBottom) {} #else PrintOptions() : fitToPage(false), pageRanges() {} #endif // QT_VERSION }; } // qpdfview #endif // PRINTOPTIONS_H qpdfview-0.4.18/sources/psmodel.cpp0000644000000000000000000002023013516127411015407 0ustar 00000000000000/* Copyright 2013 Alexander Volkov Copyright 2013 Adam Reichold This file is part of qpdfview. qpdfview is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. qpdfview is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with qpdfview. If not, see . */ #include "psmodel.h" #include #include #include #include #include #include namespace { using namespace qpdfview; using namespace qpdfview::Model; namespace Defaults { const int graphicsAntialiasBits = 4; const int textAntialiasBits = 2; } // Defaults } // anonymous namespace qpdfview { namespace Model { PsPage::PsPage(QMutex* mutex, SpectrePage* page, SpectreRenderContext* renderContext) : m_mutex(mutex), m_page(page), m_renderContext(renderContext) { } PsPage::~PsPage() { spectre_page_free(m_page); m_page = 0; } QSizeF PsPage::size() const { QMutexLocker mutexLocker(m_mutex); int w; int h; spectre_page_get_size(m_page, &w, &h); return QSizeF(w, h); } QImage PsPage::render(qreal horizontalResolution, qreal verticalResolution, Rotation rotation, QRect boundingRect) const { QMutexLocker mutexLocker(m_mutex); double xscale; double yscale; switch(rotation) { default: case RotateBy0: case RotateBy180: xscale = horizontalResolution / 72.0; yscale = verticalResolution / 72.0; break; case RotateBy90: case RotateBy270: xscale = verticalResolution / 72.0; yscale = horizontalResolution / 72.0; break; } spectre_render_context_set_scale(m_renderContext, xscale, yscale); switch(rotation) { default: case RotateBy0: spectre_render_context_set_rotation(m_renderContext, 0); break; case RotateBy90: spectre_render_context_set_rotation(m_renderContext, 90); break; case RotateBy180: spectre_render_context_set_rotation(m_renderContext, 180); break; case RotateBy270: spectre_render_context_set_rotation(m_renderContext, 270); break; } int w; int h; spectre_page_get_size(m_page, &w, &h); w = qRound(w * xscale); h = qRound(h * yscale); if(rotation == RotateBy90 || rotation == RotateBy270) { qSwap(w, h); } unsigned char* pageData = 0; int rowLength = 0; spectre_page_render(m_page, m_renderContext, &pageData, &rowLength); if (spectre_page_status(m_page) != SPECTRE_STATUS_SUCCESS) { free(pageData); pageData = 0; return QImage(); } QImage auxiliaryImage(pageData, rowLength / 4, h, QImage::Format_RGB32); QImage image(boundingRect.isNull() ? auxiliaryImage.copy(0, 0, w, h) : auxiliaryImage.copy(boundingRect)); free(pageData); pageData = 0; return image; } PsDocument::PsDocument(SpectreDocument* document, SpectreRenderContext* renderContext) : m_mutex(), m_document(document), m_renderContext(renderContext) { } PsDocument::~PsDocument() { spectre_render_context_free(m_renderContext); m_renderContext = 0; spectre_document_free(m_document); m_document = 0; } int PsDocument::numberOfPages() const { QMutexLocker mutexLocker(&m_mutex); return spectre_document_get_n_pages(m_document); } Page* PsDocument::page(int index) const { QMutexLocker mutexLocker(&m_mutex); if(SpectrePage* page = spectre_document_get_page(m_document, index)) { return new PsPage(&m_mutex, page, m_renderContext); } return 0; } QStringList PsDocument::saveFilter() const { QMutexLocker mutexLocker(&m_mutex); if(spectre_document_is_eps(m_document)) { return QStringList() << QLatin1String("Encapsulated PostScript (*.eps)"); } else { return QStringList() << QLatin1String("PostScript (*.ps)"); } } bool PsDocument::canSave() const { return true; } bool PsDocument::save(const QString& filePath, bool withChanges) const { Q_UNUSED(withChanges) QMutexLocker mutexLocker(&m_mutex); spectre_document_save(m_document, QFile::encodeName(filePath)); return spectre_document_status(m_document) == SPECTRE_STATUS_SUCCESS; } bool PsDocument::canBePrintedUsingCUPS() const { return true; } Properties PsDocument::properties() const { Properties properties; QMutexLocker mutexLocker(&m_mutex); const QString title = QString::fromLocal8Bit(spectre_document_get_title(m_document)); const QString createdFor = QString::fromLocal8Bit(spectre_document_get_for(m_document)); const QString creator = QString::fromLocal8Bit(spectre_document_get_creator(m_document)); const QString creationDate = QString::fromLocal8Bit(spectre_document_get_creation_date(m_document)); const QString format = QString::fromLocal8Bit(spectre_document_get_format(m_document)); const QString languageLevel = QString::number(spectre_document_get_language_level(m_document)); properties.push_back(qMakePair(tr("Title"), title)); properties.push_back(qMakePair(tr("Created for"), createdFor)); properties.push_back(qMakePair(tr("Creator"), creator)); properties.push_back(qMakePair(tr("Creation date"), creationDate)); properties.push_back(qMakePair(tr("Format"), format)); properties.push_back(qMakePair(tr("Language level"), languageLevel)); return properties; } } // Model PsSettingsWidget::PsSettingsWidget(QSettings* settings, QWidget* parent) : SettingsWidget(parent), m_settings(settings) { m_layout = new QFormLayout(this); // graphics antialias bits m_graphicsAntialiasBitsSpinBox = new QSpinBox(this); m_graphicsAntialiasBitsSpinBox->setRange(1, 4); m_graphicsAntialiasBitsSpinBox->setValue(m_settings->value("graphicsAntialiasBits", Defaults::graphicsAntialiasBits).toInt()); m_layout->addRow(tr("Graphics antialias bits:"), m_graphicsAntialiasBitsSpinBox); // text antialias bits m_textAntialiasBitsSpinBox = new QSpinBox(this); m_textAntialiasBitsSpinBox->setRange(1, 2); m_textAntialiasBitsSpinBox->setValue(m_settings->value("textAntialiasBits", Defaults::textAntialiasBits).toInt()); m_layout->addRow(tr("Text antialias bits:"), m_textAntialiasBitsSpinBox); } void PsSettingsWidget::accept() { m_settings->setValue("graphicsAntialiasBits", m_graphicsAntialiasBitsSpinBox->value()); m_settings->setValue("textAntialiasBits", m_textAntialiasBitsSpinBox->value()); } void PsSettingsWidget::reset() { m_graphicsAntialiasBitsSpinBox->setValue(Defaults::graphicsAntialiasBits); m_textAntialiasBitsSpinBox->setValue(Defaults::textAntialiasBits); } PsPlugin::PsPlugin(QObject* parent) : QObject(parent) { setObjectName("PsPlugin"); m_settings = new QSettings("qpdfview", "ps-plugin", this); } Model::Document* PsPlugin::loadDocument(const QString& filePath) const { SpectreDocument* document = spectre_document_new(); spectre_document_load(document, QFile::encodeName(filePath)); if (spectre_document_status(document) != SPECTRE_STATUS_SUCCESS) { spectre_document_free(document); return 0; } SpectreRenderContext* renderContext = spectre_render_context_new(); spectre_render_context_set_antialias_bits(renderContext, m_settings->value("graphicsAntialiasBits", Defaults::graphicsAntialiasBits).toInt(), m_settings->value("textAntialiasBits", Defaults::textAntialiasBits).toInt()); return new Model::PsDocument(document, renderContext); } SettingsWidget* PsPlugin::createSettingsWidget(QWidget* parent) const { return new PsSettingsWidget(m_settings, parent); } } // qpdfview #if QT_VERSION < QT_VERSION_CHECK(5,0,0) Q_EXPORT_PLUGIN2(qpdfview_ps, qpdfview::PsPlugin) #endif // QT_VERSION qpdfview-0.4.18/sources/psmodel.h0000644000000000000000000000602513516127411015062 0ustar 00000000000000/* Copyright 2013 Alexander Volkov Copyright 2013 Adam Reichold This file is part of qpdfview. qpdfview is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. qpdfview is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with qpdfview. If not, see . */ #ifndef PSMODEL_H #define PSMODEL_H #include #include class QFormLayout; class QSettings; class QSpinBox; struct SpectrePage; struct SpectreDocument; struct SpectreRenderContext; #include "model.h" namespace qpdfview { class PsPlugin; namespace Model { class PsPage : public Page { friend class PsDocument; public: ~PsPage(); QSizeF size() const; QImage render(qreal horizontalResolution, qreal verticalResolution, Rotation rotation, QRect boundingRect) const; private: Q_DISABLE_COPY(PsPage) PsPage(QMutex* mutex, SpectrePage* page, SpectreRenderContext* renderContext); mutable QMutex* m_mutex; SpectrePage* m_page; SpectreRenderContext* m_renderContext; }; class PsDocument : public Document { Q_DECLARE_TR_FUNCTIONS(Model::PsDocument) friend class qpdfview::PsPlugin; public: ~PsDocument(); int numberOfPages() const; Page* page(int index) const; QStringList saveFilter() const; bool canSave() const; bool save(const QString& filePath, bool withChanges) const; bool canBePrintedUsingCUPS() const; Properties properties() const; private: Q_DISABLE_COPY(PsDocument) PsDocument(SpectreDocument* document, SpectreRenderContext* renderContext); mutable QMutex m_mutex; SpectreDocument* m_document; SpectreRenderContext* m_renderContext; }; } class PsSettingsWidget : public SettingsWidget { Q_OBJECT public: PsSettingsWidget(QSettings* settings, QWidget* parent = 0); void accept(); void reset(); private: Q_DISABLE_COPY(PsSettingsWidget) QSettings* m_settings; QFormLayout* m_layout; QSpinBox* m_graphicsAntialiasBitsSpinBox; QSpinBox* m_textAntialiasBitsSpinBox; }; class PsPlugin : public QObject, Plugin { Q_OBJECT Q_INTERFACES(qpdfview::Plugin) #if QT_VERSION >= QT_VERSION_CHECK(5,0,0) Q_PLUGIN_METADATA(IID "local.qpdfview.Plugin") #endif // QT_VERSION public: PsPlugin(QObject* parent = 0); Model::Document* loadDocument(const QString& filePath) const; SettingsWidget* createSettingsWidget(QWidget* parent) const; private: Q_DISABLE_COPY(PsPlugin) QSettings* m_settings; }; } // qpdfview #endif // PSMODEL_H qpdfview-0.4.18/sources/recentlyclosedmenu.cpp0000644000000000000000000000460413516127411017657 0ustar 00000000000000/* Copyright 2013 Adam Reichold This file is part of qpdfview. qpdfview is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. qpdfview is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with qpdfview. If not, see . */ #include "recentlyclosedmenu.h" #include "documentview.h" namespace qpdfview { RecentlyClosedMenu::RecentlyClosedMenu(int count, QWidget* parent) : ToolTipMenu(parent), m_count(count) { menuAction()->setText(tr("&Recently closed")); m_tabActionGroup = new QActionGroup(this); connect(m_tabActionGroup, SIGNAL(triggered(QAction*)), SLOT(on_tabAction_triggered(QAction*))); m_separatorAction = addSeparator(); m_clearListAction = addAction(tr("&Clear list")); connect(m_clearListAction, SIGNAL(triggered()), SLOT(on_clearList_triggered())); } void RecentlyClosedMenu::addTabAction(QAction* tabAction) { if(m_tabActionGroup->actions().count() >= m_count) { QAction* first = m_tabActionGroup->actions().at(0); removeAction(first); m_tabActionGroup->removeAction(first); first->parent()->deleteLater(); } insertAction(actions().at(0), tabAction); m_tabActionGroup->addAction(tabAction); } void RecentlyClosedMenu::triggerFirstTabAction() { const QList< QAction* >& actions = m_tabActionGroup->actions(); if(!actions.isEmpty()) { on_tabAction_triggered(actions.first()); } } void RecentlyClosedMenu::triggerLastTabAction() { const QList< QAction* >& actions = m_tabActionGroup->actions(); if(!actions.isEmpty()) { on_tabAction_triggered(actions.last()); } } void RecentlyClosedMenu::on_tabAction_triggered(QAction* tabAction) { removeAction(tabAction); m_tabActionGroup->removeAction(tabAction); emit tabActionTriggered(tabAction); } void RecentlyClosedMenu::on_clearList_triggered() { foreach(QAction* action, m_tabActionGroup->actions()) { action->parent()->deleteLater(); } } } // qpdfview qpdfview-0.4.18/sources/recentlyclosedmenu.h0000644000000000000000000000262113516127411017321 0ustar 00000000000000/* Copyright 2013 Adam Reichold This file is part of qpdfview. qpdfview is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. qpdfview is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with qpdfview. If not, see . */ #ifndef RECENTLYCLOSEDMENU_H #define RECENTLYCLOSEDMENU_H #include "miscellaneous.h" namespace qpdfview { class RecentlyClosedMenu : public ToolTipMenu { Q_OBJECT public: explicit RecentlyClosedMenu(int count, QWidget *parent = 0); void addTabAction(QAction* tabAction); signals: void tabActionTriggered(QAction* tabAction); public slots: void triggerFirstTabAction(); void triggerLastTabAction(); protected slots: void on_tabAction_triggered(QAction* tabAction); void on_clearList_triggered(); private: Q_DISABLE_COPY(RecentlyClosedMenu) int m_count; QActionGroup* m_tabActionGroup; QAction* m_separatorAction; QAction* m_clearListAction; }; } // qpdfview #endif // RECENTLYCLOSEDMENU_H qpdfview-0.4.18/sources/recentlyusedmenu.cpp0000644000000000000000000000623313516127411017346 0ustar 00000000000000/* Copyright 2012-2014 Adam Reichold This file is part of qpdfview. qpdfview is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. qpdfview is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with qpdfview. If not, see . */ #include "recentlyusedmenu.h" #include namespace qpdfview { RecentlyUsedMenu::RecentlyUsedMenu(const QStringList& absoluteFilePaths, int count, QWidget* parent) : ToolTipMenu(parent), m_count(count) { menuAction()->setText(tr("Recently &used")); menuAction()->setIcon(QIcon::fromTheme("document-open-recent")); menuAction()->setIconVisibleInMenu(true); m_openActionGroup = new QActionGroup(this); connect(m_openActionGroup, SIGNAL(triggered(QAction*)), SLOT(on_open_triggered(QAction*))); m_separatorAction = addSeparator(); m_clearListAction = addAction(tr("&Clear list")); connect(m_clearListAction, SIGNAL(triggered()), SLOT(on_clearList_triggered())); foreach(const QString& absoluteFilePath, absoluteFilePaths) { addOpenAction(QFileInfo(absoluteFilePath)); } } void RecentlyUsedMenu::addOpenAction(const QFileInfo& fileInfo) { foreach(QAction* action, m_openActionGroup->actions()) { if(action->data().toString() == fileInfo.absoluteFilePath()) { removeAction(action); m_openActionGroup->removeAction(action); insertAction(actions().at(0), action); m_openActionGroup->addAction(action); return; } } if(m_openActionGroup->actions().count() >= m_count) { QAction* first = m_openActionGroup->actions().at(0); removeAction(first); m_openActionGroup->removeAction(first); delete first; } QAction* action = new QAction(fileInfo.completeBaseName(), this); action->setToolTip(fileInfo.absoluteFilePath()); action->setData(fileInfo.absoluteFilePath()); insertAction(actions().at(0), action); m_openActionGroup->addAction(action); } void RecentlyUsedMenu::removeOpenAction(const QString& filePath) { const QFileInfo fileInfo(filePath); foreach(QAction* action, m_openActionGroup->actions()) { if(action->data().toString() == fileInfo.absoluteFilePath()) { delete action; break; } } } QStringList RecentlyUsedMenu::filePaths() const { QStringList filePaths; foreach(const QAction* action, m_openActionGroup->actions()) { filePaths.append(action->data().toString()); } return filePaths; } void RecentlyUsedMenu::on_open_triggered(QAction* action) { emit openTriggered(action->data().toString()); } void RecentlyUsedMenu::on_clearList_triggered() { qDeleteAll(m_openActionGroup->actions()); } } // qpdfview qpdfview-0.4.18/sources/recentlyusedmenu.h0000644000000000000000000000270113516127411017007 0ustar 00000000000000/* Copyright 2012-2013 Adam Reichold This file is part of qpdfview. qpdfview is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. qpdfview is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with qpdfview. If not, see . */ #ifndef RECENTLYUSEDMENU_H #define RECENTLYUSEDMENU_H #include "miscellaneous.h" class QFileInfo; namespace qpdfview { class RecentlyUsedMenu : public ToolTipMenu { Q_OBJECT public: explicit RecentlyUsedMenu(const QStringList& filePaths, int count, QWidget* parent = 0); void addOpenAction(const QFileInfo& fileInfo); void removeOpenAction(const QString& filePath); QStringList filePaths() const; signals: void openTriggered(const QString& filePath); protected slots: void on_open_triggered(QAction* action); void on_clearList_triggered(); private: Q_DISABLE_COPY(RecentlyUsedMenu) int m_count; QActionGroup* m_openActionGroup; QAction* m_separatorAction; QAction* m_clearListAction; }; } // qpdfview #endif // RECENTLYUSEDMENU_H qpdfview-0.4.18/sources/renderparam.h0000644000000000000000000001107313516127411015716 0ustar 00000000000000/* Copyright 2015 Adam Reichold This file is part of qpdfview. qpdfview is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. qpdfview is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with qpdfview. If not, see . */ #ifndef RENDERPARAM_H #define RENDERPARAM_H #include #include "global.h" namespace qpdfview { enum RenderFlag { InvertColors = 1 << 0, ConvertToGrayscale = 1 << 1, TrimMargins = 1 << 2, DarkenWithPaperColor = 1 << 3, LightenWithPaperColor = 1 << 4 }; Q_DECLARE_FLAGS(RenderFlags, RenderFlag) class RenderParam { public: RenderParam(int resolutionX = 72, int resolutionY = 72, qreal devicePixelRatio = 1.0, qreal scaleFactor = 1.0, Rotation rotation = RotateBy0, RenderFlags flags = 0) : d(new SharedData) { d->resolutionX = resolutionX; d->resolutionY = resolutionY; d->devicePixelRatio = devicePixelRatio; d->scaleFactor = scaleFactor; d->rotation = rotation; d->flags = flags; } int resolutionX() const { return d->resolutionX; } int resolutionY() const { return d->resolutionY; } void setResolution(int resolutionX, int resolutionY) { d->resolutionX = resolutionX; d->resolutionY = resolutionY; } qreal devicePixelRatio() const { return d->devicePixelRatio; } void setDevicePixelRatio(qreal devicePixelRatio) { d->devicePixelRatio = devicePixelRatio; } qreal scaleFactor() const { return d->scaleFactor; } void setScaleFactor(qreal scaleFactor) { d->scaleFactor = scaleFactor; } Rotation rotation() const { return d->rotation; } void setRotation(Rotation rotation) { d->rotation = rotation; } RenderFlags flags() const { return d->flags; } void setFlags(RenderFlags flags) { d->flags = flags; } void setFlag(RenderFlag flag, bool enabled = true) { if(enabled) { d->flags |= flag; } else { d->flags &= ~flag; } } bool invertColors() const { return d->flags.testFlag(InvertColors); } void setInvertColors(bool invertColors) { setFlag(InvertColors, invertColors); } bool convertToGrayscale() const { return d->flags.testFlag(ConvertToGrayscale); } void setConvertToGrayscale(bool convertToGrayscale) { setFlag(ConvertToGrayscale, convertToGrayscale); } bool trimMargins() const { return d->flags.testFlag(TrimMargins); } void setTrimMargins(bool trimMargins) { setFlag(TrimMargins, trimMargins); } bool darkenWithPaperColor() const { return d->flags.testFlag(DarkenWithPaperColor); } void setDarkenWithPaperColor(bool darkenWithPaperColor) { setFlag(DarkenWithPaperColor, darkenWithPaperColor); } bool lightenWithPaperColor() const { return d->flags.testFlag(LightenWithPaperColor); } void setLightenWithPaperColor(bool lightenWithPaperColor) { setFlag(LightenWithPaperColor, lightenWithPaperColor); } bool operator==(const RenderParam& other) const { if(d == other.d) { return true; } else { return d->resolutionX == other.d->resolutionX && d->resolutionY == other.d->resolutionY && qFuzzyCompare(d->devicePixelRatio, other.d->devicePixelRatio) && qFuzzyCompare(d->scaleFactor, other.d->scaleFactor) && d->rotation == other.d->rotation && d->flags == other.d->flags; } } bool operator!=(const RenderParam& other) const { return !operator==(other); } private: struct SharedData : public QSharedData { int resolutionX; int resolutionY; qreal devicePixelRatio; qreal scaleFactor; Rotation rotation; RenderFlags flags; }; QSharedDataPointer< SharedData > d; }; inline QDataStream& operator<<(QDataStream& stream, const RenderParam& that) { stream << that.resolutionX() << that.resolutionY() << that.devicePixelRatio() << that.scaleFactor() << that.rotation() << that.flags(); return stream; } } // qpdfview #endif // RENDERPARAM_H qpdfview-0.4.18/sources/rendertask.cpp0000644000000000000000000003027513516127411016120 0ustar 00000000000000/* Copyright 2013-2015 Adam Reichold This file is part of qpdfview. qpdfview is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. qpdfview is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with qpdfview. If not, see . */ #include "rendertask.h" #include #include #include #include #include "model.h" #include "settings.h" namespace qpdfview { namespace { void registerEventType(QEvent::Type& registeredType) { if(registeredType == QEvent::None) { registeredType = QEvent::Type(QEvent::registerEventType()); } } qreal scaledResolutionX(const RenderParam& renderParam) { return renderParam.devicePixelRatio() * renderParam.resolutionX() * renderParam.scaleFactor(); } qreal scaledResolutionY(const RenderParam& renderParam) { return renderParam.devicePixelRatio() * renderParam.resolutionY() * renderParam.scaleFactor(); } const QRgb alphaMask = 0xffu << 24; bool columnHasPaperColor(int x, QRgb paperColor, const QImage& image) { const int height = image.height(); for(int y = 0; y < height; ++y) { const QRgb color = image.pixel(x, y); if(qAlpha(color) != 0 && paperColor != (color | alphaMask)) { return false; } } return true; } bool rowHasPaperColor(int y, QRgb paperColor, const QImage& image) { const int width = image.width(); for(int x = 0; x < width; ++x) { const QRgb color = image.pixel(x, y); if(qAlpha(color) != 0 && paperColor != (color | alphaMask)) { return false; } } return true; } QRectF trimMargins(QRgb paperColor, const QImage& image) { if(image.isNull()) { return QRectF(0.0, 0.0, 1.0, 1.0); } const int width = image.width(); const int height = image.height(); int left; for(left = 0; left < width; ++left) { if(!columnHasPaperColor(left, paperColor, image)) { break; } } left = qMin(left, width / 3); int right; for(right = width - 1; right >= left; --right) { if(!columnHasPaperColor(right, paperColor, image)) { break; } } right = qMax(right, 2 * width / 3); int top; for(top = 0; top < height; ++top) { if(!rowHasPaperColor(top, paperColor, image)) { break; } } top = qMin(top, height / 3); int bottom; for(bottom = height - 1; bottom >= top; --bottom) { if(!rowHasPaperColor(bottom, paperColor, image)) { break; } } bottom = qMax(bottom, 2 * height / 3); left = qMax(left - width / 100, 0); top = qMax(top - height / 100, 0); right = qMin(right + width / 100, width); bottom = qMin(bottom + height / 100, height); return QRectF(static_cast< qreal >(left) / width, static_cast< qreal >(top) / height, static_cast< qreal >(right - left) / width, static_cast< qreal >(bottom - top) / height); } void convertToGrayscale(QImage& image) { QRgb* const begin = reinterpret_cast< QRgb* >(image.bits()); QRgb* const end = reinterpret_cast< QRgb* >(image.bits() + image.byteCount()); for(QRgb* pointer = begin; pointer != end; ++pointer) { const int gray = qGray(*pointer); const int alpha = qAlpha(*pointer); *pointer = qRgba(gray, gray, gray, alpha); } } void composeWithColor(QPainter::CompositionMode mode, const QColor& color, QImage& image) { QPainter painter(&image); painter.setCompositionMode(mode); painter.fillRect(image.rect(), color); } } // anonymous RenderTaskParent::~RenderTaskParent() { } struct RenderTaskFinishedEvent : public QEvent { static QEvent::Type registeredType; RenderTaskFinishedEvent(RenderTaskParent* const parent, const RenderParam& renderParam, const QRect& rect, const bool prefetch, const QImage& image, const QRectF& cropRect) : QEvent(registeredType) , parent(parent) , renderParam(renderParam) , rect(rect) , prefetch(prefetch) , image(image) , cropRect(cropRect) { } ~RenderTaskFinishedEvent(); void dispatch() const { parent->on_finished(renderParam, rect, prefetch, image, cropRect); } RenderTaskParent* const parent; const RenderParam renderParam; const QRect rect; const bool prefetch; const QImage image; const QRectF cropRect; }; QEvent::Type RenderTaskFinishedEvent::registeredType = QEvent::None; RenderTaskFinishedEvent::~RenderTaskFinishedEvent() { } struct RenderTaskCanceledEvent : public QEvent { static QEvent::Type registeredType; RenderTaskCanceledEvent(RenderTaskParent* parent) : QEvent(registeredType) , parent(parent) { } ~RenderTaskCanceledEvent(); void dispatch() const { parent->on_canceled(); } RenderTaskParent* const parent; }; QEvent::Type RenderTaskCanceledEvent::registeredType = QEvent::None; RenderTaskCanceledEvent::~RenderTaskCanceledEvent() { } struct DeleteParentLaterEvent : public QEvent { static QEvent::Type registeredType; DeleteParentLaterEvent(RenderTaskParent* const parent) : QEvent(registeredType) , parent(parent) { } ~DeleteParentLaterEvent(); void dispatch() const { delete parent; } RenderTaskParent* const parent; }; QEvent::Type DeleteParentLaterEvent::registeredType = QEvent::None; DeleteParentLaterEvent::~DeleteParentLaterEvent() { } namespace { class DispatchChain { public: DispatchChain(const QEvent* const event, const QSet< RenderTaskParent* >& activeParents) : m_event(event), m_activeParents(activeParents) { } template< typename Event > DispatchChain& dispatch() { if(m_event != 0 && m_event->type() == Event::registeredType) { const Event* const event = static_cast< const Event* >(m_event); m_event = 0; if(m_activeParents.contains(event->parent)) { event->dispatch(); } } return *this; } bool wasDispatched() const { return m_event == 0; } private: const QEvent* m_event; const QSet< RenderTaskParent* >& m_activeParents; }; } // anonymous RenderTaskDispatcher::RenderTaskDispatcher(QObject* parent) : QObject(parent) { registerEventType(DeleteParentLaterEvent::registeredType); registerEventType(RenderTaskFinishedEvent::registeredType); registerEventType(RenderTaskCanceledEvent::registeredType); } void RenderTaskDispatcher::finished(RenderTaskParent* parent, const RenderParam& renderParam, const QRect& rect, bool prefetch, const QImage& image, const QRectF& cropRect) { RenderTaskFinishedEvent* const event = new RenderTaskFinishedEvent(parent, renderParam, rect, prefetch, image, cropRect); QApplication::postEvent(this, event, Qt::HighEventPriority); } void RenderTaskDispatcher::canceled(RenderTaskParent* parent) { QApplication::postEvent(this, new RenderTaskCanceledEvent(parent), Qt::HighEventPriority); } void RenderTaskDispatcher::deleteParentLater(RenderTaskParent* parent) { QApplication::postEvent(this, new DeleteParentLaterEvent(parent), Qt::LowEventPriority); } bool RenderTaskDispatcher::event(QEvent* event) { DispatchChain chain(event, m_activeParents); chain.dispatch< RenderTaskFinishedEvent >() .dispatch< RenderTaskCanceledEvent >() .dispatch< DeleteParentLaterEvent >(); return chain.wasDispatched() || QObject::event(event); } void RenderTaskDispatcher::addActiveParent(RenderTaskParent* parent) { m_activeParents.insert(parent); } void RenderTaskDispatcher::removeActiveParent(RenderTaskParent* parent) { m_activeParents.remove(parent); } RenderTaskDispatcher* RenderTask::s_dispatcher = 0; Settings* RenderTask::s_settings = 0; const RenderParam RenderTask::s_defaultRenderParam; RenderTask::RenderTask(Model::Page* page, RenderTaskParent* parent) : QRunnable(), m_parent(parent), m_isRunning(false), m_wasCanceled(NotCanceled), m_page(page), m_renderParam(s_defaultRenderParam), m_rect(), m_prefetch(false) { if(s_settings == 0) { s_settings = Settings::instance(); } if(s_dispatcher == 0) { s_dispatcher = new RenderTaskDispatcher(qApp); } setAutoDelete(false); s_dispatcher->addActiveParent(m_parent); } RenderTask::~RenderTask() { s_dispatcher->removeActiveParent(m_parent); } void RenderTask::wait() { QMutexLocker mutexLocker(&m_mutex); while(m_isRunning) { m_waitCondition.wait(&m_mutex); } } bool RenderTask::isRunning() const { QMutexLocker mutexLocker(&m_mutex); return m_isRunning; } void RenderTask::run() { #define CANCELLATION_POINT if(testCancellation()) { finish(true); return; } CANCELLATION_POINT QImage image; QRectF cropRect; #if QT_VERSION >= QT_VERSION_CHECK(5,1,0) const qreal devicePixelRatio = m_renderParam.devicePixelRatio(); const QRect rect = qFuzzyCompare(1.0, devicePixelRatio) ? m_rect : QTransform().scale(devicePixelRatio, devicePixelRatio).mapRect(m_rect); #else const QRect& rect = m_rect; #endif // QT_VERSION image = m_page->render(scaledResolutionX(m_renderParam), scaledResolutionY(m_renderParam), m_renderParam.rotation(), rect); #if QT_VERSION >= QT_VERSION_CHECK(5,1,0) image.setDevicePixelRatio(devicePixelRatio); #endif // QT_VERSION if(m_renderParam.darkenWithPaperColor()) { CANCELLATION_POINT composeWithColor(QPainter::CompositionMode_Darken, s_settings->pageItem().paperColor(), image); } else if(m_renderParam.lightenWithPaperColor()) { CANCELLATION_POINT composeWithColor(QPainter::CompositionMode_Lighten, s_settings->pageItem().paperColor(), image); } if(m_renderParam.trimMargins()) { CANCELLATION_POINT cropRect = trimMargins(s_settings->pageItem().paperColor().rgb() | alphaMask, image); } if(m_renderParam.convertToGrayscale()) { CANCELLATION_POINT convertToGrayscale(image); } if(m_renderParam.invertColors()) { CANCELLATION_POINT image.invertPixels(); } CANCELLATION_POINT s_dispatcher->finished(m_parent, m_renderParam, m_rect, m_prefetch, image, cropRect); finish(false); #undef CANCELLATION_POINT } void RenderTask::start(const RenderParam& renderParam, const QRect& rect, bool prefetch) { m_renderParam = renderParam; m_rect = rect; m_prefetch = prefetch; m_mutex.lock(); m_isRunning = true; m_mutex.unlock(); resetCancellation(); QThreadPool::globalInstance()->start(this, prefetch ? 1 : 2); } void RenderTask::deleteParentLater() { s_dispatcher->deleteParentLater(m_parent); } void RenderTask::finish(bool canceled) { m_renderParam = s_defaultRenderParam; if(canceled) { s_dispatcher->canceled(m_parent); } m_mutex.lock(); m_isRunning = false; m_mutex.unlock(); m_waitCondition.wakeAll(); } } // qpdfview qpdfview-0.4.18/sources/rendertask.h0000644000000000000000000001075413516127411015565 0ustar 00000000000000/* Copyright 2013-2015 Adam Reichold This file is part of qpdfview. qpdfview is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. qpdfview is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with qpdfview. If not, see . */ #ifndef RENDERTASK_H #define RENDERTASK_H #include #include #include #include #include #include "renderparam.h" namespace qpdfview { namespace Model { class Page; } class Settings; class RenderTaskParent { friend struct RenderTaskFinishedEvent; friend struct RenderTaskCanceledEvent; friend struct DeleteParentLaterEvent; public: virtual ~RenderTaskParent(); private: virtual void on_finished(const RenderParam& renderParam, const QRect& rect, bool prefetch, const QImage& image, const QRectF& cropRect) = 0; virtual void on_canceled() = 0; }; class RenderTaskDispatcher : public QObject { Q_OBJECT friend class RenderTask; private: Q_DISABLE_COPY(RenderTaskDispatcher) RenderTaskDispatcher(QObject* parent = 0); void finished(RenderTaskParent* parent, const RenderParam& renderParam, const QRect& rect, bool prefetch, const QImage& image, const QRectF& cropRect); void canceled(RenderTaskParent* parent); void deleteParentLater(RenderTaskParent* parent); public: bool event(QEvent* event); private: QSet< RenderTaskParent* > m_activeParents; void addActiveParent(RenderTaskParent* parent); void removeActiveParent(RenderTaskParent* parent); }; class RenderTask : public QRunnable { public: explicit RenderTask(Model::Page* page, RenderTaskParent* parent = 0); ~RenderTask(); void wait(); bool isRunning() const; bool wasCanceled() const { return loadCancellation() != NotCanceled; } bool wasCanceledNormally() const { return loadCancellation() == CanceledNormally; } bool wasCanceledForcibly() const { return loadCancellation() == CanceledForcibly; } void run(); void start(const RenderParam& renderParam, const QRect& rect, bool prefetch); void cancel(bool force = false) { setCancellation(force); } void deleteParentLater(); private: Q_DISABLE_COPY(RenderTask) static Settings* s_settings; static RenderTaskDispatcher* s_dispatcher; RenderTaskParent* m_parent; mutable QMutex m_mutex; QWaitCondition m_waitCondition; bool m_isRunning; QAtomicInt m_wasCanceled; enum { NotCanceled = 0, CanceledNormally = 1, CanceledForcibly = 2 }; void setCancellation(bool force); void resetCancellation(); bool testCancellation(); int loadCancellation() const; void finish(bool canceled); Model::Page* m_page; static const RenderParam s_defaultRenderParam; RenderParam m_renderParam; QRect m_rect; bool m_prefetch; }; #if QT_VERSION > QT_VERSION_CHECK(5,0,0) inline void RenderTask::setCancellation(bool force) { m_wasCanceled.storeRelease(force ? CanceledForcibly : CanceledNormally); } inline void RenderTask::resetCancellation() { m_wasCanceled.storeRelease(NotCanceled); } inline bool RenderTask::testCancellation() { return m_prefetch ? m_wasCanceled.load() == CanceledForcibly : m_wasCanceled.load() != NotCanceled; } inline int RenderTask::loadCancellation() const { return m_wasCanceled.load(); } #else inline void RenderTask::setCancellation(bool force) { m_wasCanceled.fetchAndStoreRelease(force ? CanceledForcibly : CanceledNormally); } inline void RenderTask::resetCancellation() { m_wasCanceled.fetchAndStoreRelease(NotCanceled); } inline bool RenderTask::testCancellation() { return m_prefetch ? m_wasCanceled.testAndSetRelaxed(CanceledForcibly, CanceledForcibly) : !m_wasCanceled.testAndSetRelaxed(NotCanceled, NotCanceled); } inline int RenderTask::loadCancellation() const { return m_wasCanceled; } #endif // QT_VERSION } // qpdfview #endif // RENDERTASK_H qpdfview-0.4.18/sources/searchitemdelegate.cpp0000644000000000000000000001023313516127411017565 0ustar 00000000000000/* Copyright 2018 S. Razi Alavizadeh Copyright 2015 Adam Reichold This file is part of qpdfview. qpdfview is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. qpdfview is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with qpdfview. If not, see . */ #include "searchitemdelegate.h" #include #include #include #include #include "searchmodel.h" namespace qpdfview { SearchItemDelegate::SearchItemDelegate(QObject* parent) : QStyledItemDelegate(parent) { } void SearchItemDelegate::paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const { QStyledItemDelegate::paint(painter, option, index); if(index.column() != 0) { return; } const int progress = index.data(SearchModel::ProgressRole).toInt(); if(progress != 0) { paintProgress(painter, option, progress); return; } const QString matchedText = index.data(SearchModel::MatchedTextRole).toString(); const QString surroundingText = index.data(SearchModel::SurroundingTextRole).toString(); if(!matchedText.isEmpty() && !surroundingText.isEmpty()) { paintText(painter, option, matchedText, surroundingText); return; } } void SearchItemDelegate::paintProgress(QPainter* painter, const QStyleOptionViewItem& option, int progress) const { QRect highlightedRect = option.rect; highlightedRect.setWidth(progress * highlightedRect.width() / 100); painter->save(); painter->setCompositionMode(QPainter::CompositionMode_Multiply); painter->fillRect(highlightedRect, option.palette.highlight()); painter->restore(); } void SearchItemDelegate::paintText(QPainter* painter, const QStyleOptionViewItem& option, const QString& matchedText, const QString& surroundingText) const { const int textMargin = QApplication::style()->pixelMetric(QStyle::PM_FocusFrameHMargin) + 1; const QRect textRect = option.rect.adjusted(textMargin, 0, -textMargin, 0); const QString elidedText = option.fontMetrics.elidedText(surroundingText, option.textElideMode, textRect.width()); QTextOption textOption; textOption.setWrapMode(QTextOption::NoWrap); textOption.setTextDirection(elidedText.isRightToLeft() ? Qt::RightToLeft : Qt::LeftToRight); textOption.setAlignment(QStyle::visualAlignment(textOption.textDirection(), option.displayAlignment)); QTextLayout textLayout; textLayout.setTextOption(textOption); textLayout.setText(elidedText); textLayout.setFont(option.font); QFont font = textLayout.font(); font.setWeight(QFont::Light); textLayout.setFont(font); QList< QTextLayout::FormatRange > additionalFormats; for(int index = 0; (index = surroundingText.indexOf(matchedText, index)) != -1; index += matchedText.length()) { QTextLayout::FormatRange formatRange; formatRange.start = index; formatRange.length = matchedText.length(); formatRange.format.setFontWeight(QFont::Bold); additionalFormats.append(formatRange); } textLayout.setAdditionalFormats(additionalFormats); textLayout.beginLayout(); QTextLine textLine = textLayout.createLine(); if(!textLine.isValid()) { return; } textLine.setLineWidth(textRect.width()); textLayout.endLayout(); const QSize layoutSize(textRect.width(), qFloor(textLine.height())); const QRect layoutRect = QStyle::alignedRect(option.direction, option.displayAlignment, layoutSize, textRect); painter->save(); painter->setClipping(true); painter->setClipRect(layoutRect); textLine.draw(painter, layoutRect.topLeft()); painter->restore(); } } // qpdfview qpdfview-0.4.18/sources/searchitemdelegate.h0000644000000000000000000000252313516127411017235 0ustar 00000000000000/* Copyright 2015 Adam Reichold This file is part of qpdfview. qpdfview is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. qpdfview is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with qpdfview. If not, see . */ #ifndef SEARCHITEMDELEGATE_H #define SEARCHITEMDELEGATE_H #include namespace qpdfview { class SearchItemDelegate : public QStyledItemDelegate { Q_OBJECT public: explicit SearchItemDelegate(QObject* parent = 0); void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const; private: void paintProgress(QPainter* painter, const QStyleOptionViewItem& option, int progress) const; void paintText(QPainter* painter, const QStyleOptionViewItem& option, const QString& matchedText, const QString& surroundingText) const; }; } // qpdfview #endif // SEARCHITEMDELEGATE_H qpdfview-0.4.18/sources/searchmodel.cpp0000644000000000000000000003120013516127411016231 0ustar 00000000000000/* Copyright 2014 S. Razi Alavizadeh Copyright 2014-2015 Adam Reichold This file is part of qpdfview. qpdfview is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. qpdfview is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with qpdfview. If not, see . */ #include "searchmodel.h" #include #include #include "documentview.h" static inline bool operator<(int page, const QPair< int, QRectF >& result) { return page < result.first; } static inline bool operator<(const QPair< int, QRectF >& result, int page) { return result.first < page; } namespace qpdfview { SearchModel* SearchModel::s_instance = 0; SearchModel* SearchModel::instance() { if(s_instance == 0) { s_instance = new SearchModel(qApp); } return s_instance; } SearchModel::~SearchModel() { foreach(TextWatcher* watcher, m_textWatchers) { watcher->waitForFinished(); watcher->deleteLater(); } qDeleteAll(m_results); s_instance = 0; } QModelIndex SearchModel::index(int row, int column, const QModelIndex& parent) const { if(hasIndex(row, column, parent)) { if(!parent.isValid()) { return createIndex(row, column); } else { DocumentView* view = m_views.value(parent.row(), 0); return createIndex(row, column, view); } } return QModelIndex(); } QModelIndex SearchModel::parent(const QModelIndex& child) const { if(child.internalPointer() != 0) { DocumentView* view = static_cast< DocumentView* >(child.internalPointer()); return findView(view); } return QModelIndex(); } int SearchModel::rowCount(const QModelIndex& parent) const { if(!parent.isValid()) { return m_views.count(); } else if(parent.internalPointer() == 0) { DocumentView* view = m_views.value(parent.row(), 0); const Results* results = m_results.value(view, 0); if(results != 0) { return results->count(); } } return 0; } int SearchModel::columnCount(const QModelIndex&) const { return 2; } QVariant SearchModel::data(const QModelIndex& index, int role) const { if(!index.isValid()) { return QVariant(); } if(index.internalPointer() == 0) { DocumentView* view = m_views.value(index.row(), 0); const Results* results = m_results.value(view, 0); if(results == 0) { return QVariant(); } switch(role) { default: return QVariant(); case CountRole: return results->count(); case ProgressRole: return view->searchProgress(); case Qt::DisplayRole: switch(index.column()) { case 0: return view->title(); case 1: return results->count(); } case Qt::ToolTipRole: return tr("%1 occurrences").arg(results->count()); } } else { DocumentView* view = static_cast< DocumentView* >(index.internalPointer()); const Results* results = m_results.value(view, 0); if(results == 0 || index.row() >= results->count()) { return QVariant(); } const Result& result = results->at(index.row()); switch(role) { default: return QVariant(); case PageRole: return result.first; case RectRole: return result.second; case TextRole: return view->searchText(); case MatchCaseRole: return view->searchMatchCase(); case WholeWordsRole: return view->searchWholeWords(); case MatchedTextRole: return fetchMatchedText(view, result); case SurroundingTextRole: return fetchSurroundingText(view, result); case Qt::DisplayRole: switch(index.column()) { case 0: return QVariant(); case 1: return result.first; } case Qt::ToolTipRole: return tr("%1 occurrences on page %2").arg(numberOfResultsOnPage(view, result.first)).arg(result.first); } } return QVariant(); } DocumentView* SearchModel::viewForIndex(const QModelIndex& index) const { if(index.internalPointer() == 0) { return m_views.value(index.row(), 0); } else { return static_cast< DocumentView* >(index.internalPointer()); } } bool SearchModel::hasResults(DocumentView* view) const { const Results* results = m_results.value(view, 0); return results != 0 && !results->isEmpty(); } bool SearchModel::hasResultsOnPage(DocumentView* view, int page) const { const Results* results = m_results.value(view, 0); return results != 0 && qBinaryFind(results->begin(), results->end(), page) != results->end(); } int SearchModel::numberOfResultsOnPage(DocumentView* view, int page) const { const Results* results = m_results.value(view, 0); if(results == 0) { return 0; } const Results::const_iterator pageBegin = qLowerBound(results->constBegin(), results->constEnd(), page); const Results::const_iterator pageEnd = qUpperBound(pageBegin, results->constEnd(), page); return pageEnd - pageBegin; } QList< QRectF > SearchModel::resultsOnPage(DocumentView* view, int page) const { QList< QRectF > resultsOnPage; const Results* results = m_results.value(view, 0); if(results != 0) { const Results::const_iterator pageBegin = qLowerBound(results->constBegin(), results->constEnd(), page); const Results::const_iterator pageEnd = qUpperBound(pageBegin, results->constEnd(), page); for(Results::const_iterator iterator = pageBegin; iterator != pageEnd; ++iterator) { resultsOnPage.append(iterator->second); } } return resultsOnPage; } QPersistentModelIndex SearchModel::findResult(DocumentView* view, const QPersistentModelIndex& currentResult, int currentPage, FindDirection direction) const { const Results* results = m_results.value(view, 0); if(results == 0 || results->isEmpty()) { return QPersistentModelIndex(); } const int rows = results->count(); int row; if(currentResult.isValid()) { switch(direction) { default: case FindNext: row = (currentResult.row() + 1) % rows; break; case FindPrevious: row = (currentResult.row() + rows - 1) % rows; break; } } else { switch(direction) { default: case FindNext: { Results::const_iterator lowerBound = qLowerBound(results->constBegin(), results->constEnd(), currentPage); row = (lowerBound - results->constBegin()) % rows; break; } case FindPrevious: { Results::const_iterator upperBound = qUpperBound(results->constBegin(), results->constEnd(), currentPage); row = ((upperBound - results->constBegin()) + rows - 1) % rows; break; } } } return createIndex(row, 0, view); } void SearchModel::insertResults(DocumentView* view, int page, const QList< QRectF >& resultsOnPage) { if(resultsOnPage.isEmpty()) { return; } const QModelIndex parent = findOrInsertView(view); Results* results = m_results.value(view); Results::iterator at = qLowerBound(results->begin(), results->end(), page); const int row = at - results->begin(); beginInsertRows(parent, row, row + resultsOnPage.size() - 1); for(int index = resultsOnPage.size() - 1; index >= 0; --index) { at = results->insert(at, qMakePair(page, resultsOnPage.at(index))); } endInsertRows(); } void SearchModel::clearResults(DocumentView* view) { typedef QHash< TextCacheKey, TextWatcher* >::iterator WatcherIterator; for(WatcherIterator iterator = m_textWatchers.begin(); iterator != m_textWatchers.end(); ++iterator) { const TextCacheKey& key = iterator.key(); if(key.first == view) { TextWatcher* const watcher = iterator.value(); watcher->cancel(); watcher->waitForFinished(); watcher->deleteLater(); iterator = m_textWatchers.erase(iterator); continue; } } foreach(const TextCacheKey& key, m_textCache.keys()) { if(key.first == view) { m_textCache.remove(key); } } const QVector< DocumentView* >::iterator at = qBinaryFind(m_views.begin(), m_views.end(), view); const int row = at - m_views.begin(); if(at == m_views.end()) { return; } beginRemoveRows(QModelIndex(), row, row); m_views.erase(at); delete m_results.take(view); endRemoveRows(); } void SearchModel::updateProgress(DocumentView* view) { QModelIndex index = findView(view); if(index.isValid()) { emit dataChanged(index, index); } } void SearchModel::on_fetchSurroundingText_finished() { TextWatcher* watcher = dynamic_cast< TextWatcher* >(sender()); if(watcher == 0 || watcher->isCanceled()) { return; } const TextJob job = watcher->result(); m_textWatchers.remove(job.key); watcher->deleteLater(); DocumentView* view = job.key.first; const Results* results = m_results.value(view, 0); if(results == 0) { return; } const int cost = job.object->first.length() + job.object->second.length(); m_textCache.insert(job.key, job.object, cost); emit dataChanged(createIndex(0, 0, view), createIndex(results->count() - 1, 0, view)); } SearchModel::SearchModel(QObject* parent) : QAbstractItemModel(parent), m_views(), m_results(), m_textCache(1 << 16), m_textWatchers() { } QModelIndex SearchModel::findView(DocumentView *view) const { const QVector< DocumentView* >::const_iterator at = qBinaryFind(m_views.constBegin(), m_views.constEnd(), view); const int row = at - m_views.constBegin(); if(at == m_views.constEnd()) { return QModelIndex(); } return createIndex(row, 0); } QModelIndex SearchModel::findOrInsertView(DocumentView* view) { const QVector< DocumentView* >::iterator at = qLowerBound(m_views.begin(), m_views.end(), view); const int row = at - m_views.begin(); if(at == m_views.end() || *at != view) { beginInsertRows(QModelIndex(), row, row); m_views.insert(at, view); m_results.insert(view, new Results); endInsertRows(); } return createIndex(row, 0); } QString SearchModel::fetchMatchedText(DocumentView* view, const SearchModel::Result& result) const { const TextCacheObject* object = fetchText(view, result); return object != 0 ? object->first : QString(); } QString SearchModel::fetchSurroundingText(DocumentView* view, const Result& result) const { const TextCacheObject* object = fetchText(view, result); return object != 0 ? object->second : QString(); } const SearchModel::TextCacheObject* SearchModel::fetchText(DocumentView* view, const SearchModel::Result& result) const { const TextCacheKey key = textCacheKey(view, result); if(const TextCacheObject* object = m_textCache.object(key)) { return object; } if(m_textWatchers.size() < 20 && !m_textWatchers.contains(key)) { TextWatcher* watcher = new TextWatcher(); m_textWatchers.insert(key, watcher); connect(watcher, SIGNAL(finished()), SLOT(on_fetchSurroundingText_finished())); watcher->setFuture(QtConcurrent::run(textJob, key, result)); } return 0; } inline SearchModel::TextCacheKey SearchModel::textCacheKey(DocumentView* view, const Result& result) { QByteArray key; QDataStream(&key, QIODevice::WriteOnly) << result.first << result.second; return qMakePair(view, key); } SearchModel::TextJob SearchModel::textJob(const TextCacheKey& key, const Result& result) { const QPair< QString, QString >& text = key.first->searchContext(result.first, result.second); return TextJob(key, new TextCacheObject(text)); } } // qpdfview qpdfview-0.4.18/sources/searchmodel.h0000644000000000000000000000730113516127411015703 0ustar 00000000000000/* Copyright 2014 S. Razi Alavizadeh Copyright 2014 Adam Reichold This file is part of qpdfview. qpdfview is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. qpdfview is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with qpdfview. If not, see . */ #ifndef SEARCHMODEL_H #define SEARCHMODEL_H #include #include #include #include namespace qpdfview { class DocumentView; class SearchModel : public QAbstractItemModel { Q_OBJECT public: static SearchModel* instance(); ~SearchModel(); QModelIndex index(int row, int column, const QModelIndex& parent = QModelIndex()) const; QModelIndex parent(const QModelIndex& child) const; int rowCount(const QModelIndex& parent = QModelIndex()) const; int columnCount(const QModelIndex& parent = QModelIndex()) const; enum { CountRole = Qt::UserRole + 1, ProgressRole, PageRole, RectRole, TextRole, MatchCaseRole, WholeWordsRole, MatchedTextRole, SurroundingTextRole }; QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const; DocumentView* viewForIndex(const QModelIndex& index) const; bool hasResults(DocumentView* view) const; bool hasResultsOnPage(DocumentView* view, int page) const; int numberOfResultsOnPage(DocumentView* view, int page) const; QList< QRectF > resultsOnPage(DocumentView* view, int page) const; enum FindDirection { FindNext, FindPrevious }; QPersistentModelIndex findResult(DocumentView* view, const QPersistentModelIndex& currentResult, int currentPage, FindDirection direction) const; void insertResults(DocumentView* view, int page, const QList< QRectF >& resultsOnPage); void clearResults(DocumentView* view); void updateProgress(DocumentView* view); protected slots: void on_fetchSurroundingText_finished(); private: Q_DISABLE_COPY(SearchModel) static SearchModel* s_instance; SearchModel(QObject* parent = 0); QVector< DocumentView* > m_views; QModelIndex findView(DocumentView* view) const; QModelIndex findOrInsertView(DocumentView* view); typedef QPair< int, QRectF > Result; typedef QList< Result > Results; QHash< DocumentView*, Results* > m_results; typedef QPair< DocumentView*, QByteArray > TextCacheKey; typedef QPair< QString, QString > TextCacheObject; struct TextJob { TextCacheKey key; TextCacheObject* object; TextJob() : key(), object(0) {} TextJob(const TextCacheKey& key, TextCacheObject* object) : key(key), object(object) {} }; typedef QFutureWatcher< TextJob > TextWatcher; mutable QCache< TextCacheKey, TextCacheObject > m_textCache; mutable QHash< TextCacheKey, TextWatcher* > m_textWatchers; QString fetchMatchedText(DocumentView* view, const Result& result) const; QString fetchSurroundingText(DocumentView* view, const Result& result) const; const TextCacheObject* fetchText(DocumentView* view, const Result& result) const; static TextCacheKey textCacheKey(DocumentView* view, const Result& result); static TextJob textJob(const TextCacheKey& key, const Result& result); }; } // qpdfview #endif // SEARCHMODEL_H qpdfview-0.4.18/sources/searchtask.cpp0000644000000000000000000000664313516127411016110 0ustar 00000000000000/* Copyright 2012-2015 Adam Reichold This file is part of qpdfview. qpdfview is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. qpdfview is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with qpdfview. If not, see . */ #include "searchtask.h" #include "model.h" #include namespace qpdfview { namespace { struct Search { Search(const QString& text, const bool matchCase, const bool wholeWords) : text(text), matchCase(matchCase), wholeWords(wholeWords) { } const QString& text; const bool matchCase; const bool wholeWords; typedef QList< QRectF > result_type; result_type operator()(const Model::Page* const page) const { return page->search(text, matchCase, wholeWords); } }; struct FutureWrapper { FutureWrapper(const QVector< const Model::Page* >& pages, const Search& search) : pages(pages), search(search) { } const QVector< const Model::Page* >& pages; const Search& search; void cancel() { } Search::result_type resultAt(int index) { return search(pages.at(index)); } }; } SearchTask::SearchTask(QObject* parent) : QThread(parent), m_wasCanceled(NotCanceled), m_progress(0), m_pages(), m_text(), m_matchCase(false), m_wholeWords(false), m_beginAtPage(1), m_parallelExecution(false) { } void SearchTask::run() { QVector< const Model::Page* > pages; pages.reserve(m_pages.count()); for(int index = 0, count = m_pages.count(); index < count; ++index) { const int shiftedIndex = (index + m_beginAtPage - 1) % count; pages.append(m_pages.at(shiftedIndex)); } const Search search(m_text, m_matchCase, m_wholeWords); if(m_parallelExecution) { processResults(QtConcurrent::mapped(pages, search)); } else { processResults(FutureWrapper(pages, search)); } } void SearchTask::start(const QVector< Model::Page* >& pages, const QString& text, bool matchCase, bool wholeWords, int beginAtPage, bool parallelExecution) { m_pages = pages; m_text = text; m_matchCase = matchCase; m_wholeWords = wholeWords; m_beginAtPage = beginAtPage; m_parallelExecution = parallelExecution; resetCancellation(); releaseProgress(0); QThread::start(); } template< typename Future > void SearchTask::processResults(Future future) { for(int index = 0, count = m_pages.count(); index < count; ++index) { if(testCancellation()) { future.cancel(); break; } const int shiftedIndex = (index + m_beginAtPage - 1) % count; const QList< QRectF > results = future.resultAt(index); emit resultsReady(shiftedIndex, results); const int progress = 100 * (index + 1) / m_pages.count(); releaseProgress(progress); emit progressChanged(progress); } releaseProgress(0); } } // qpdfview qpdfview-0.4.18/sources/searchtask.h0000644000000000000000000000707113516127411015551 0ustar 00000000000000/* Copyright 2012-2015 Adam Reichold This file is part of qpdfview. qpdfview is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. qpdfview is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with qpdfview. If not, see . */ #ifndef SEARCHTASK_H #define SEARCHTASK_H #include #include #include namespace qpdfview { namespace Model { class Page; } class SearchTask : public QThread { Q_OBJECT public: explicit SearchTask(QObject* parent = 0); bool wasCanceled() const { return loadCancellation() != NotCanceled; } int progress() const { return acquireProgress(); } const QString& text() const { return m_text; } bool matchCase() const { return m_matchCase; } bool wholeWords() const { return m_wholeWords; } void run(); signals: void progressChanged(int progress); void resultsReady(int index, const QList< QRectF >& results); public slots: void start(const QVector< Model::Page* >& pages, const QString& text, bool matchCase, bool wholeWords, int beginAtPage = 1, bool parallelExecution = false); void cancel() { setCancellation(); } private: Q_DISABLE_COPY(SearchTask) QAtomicInt m_wasCanceled; mutable QAtomicInt m_progress; enum { NotCanceled = 0, Canceled = 1 }; void setCancellation(); void resetCancellation(); bool testCancellation(); int loadCancellation() const; void releaseProgress(int value); int acquireProgress() const; int loadProgress() const; template< typename Future > void processResults(Future future); QVector< Model::Page* > m_pages; QString m_text; bool m_matchCase; bool m_wholeWords; int m_beginAtPage; bool m_parallelExecution; }; #if QT_VERSION > QT_VERSION_CHECK(5,0,0) inline void SearchTask::setCancellation() { m_wasCanceled.storeRelease(Canceled); } inline void SearchTask::resetCancellation() { m_wasCanceled.storeRelease(NotCanceled); } inline bool SearchTask::testCancellation() { return m_wasCanceled.load() != NotCanceled; } inline int SearchTask::loadCancellation() const { return m_wasCanceled.load(); } inline void SearchTask::releaseProgress(int value) { m_progress.storeRelease(value); } inline int SearchTask::acquireProgress() const { return m_progress.loadAcquire(); } inline int SearchTask::loadProgress() const { return m_progress.load(); } #else inline void SearchTask::setCancellation() { m_wasCanceled.fetchAndStoreRelease(Canceled); } inline void SearchTask::resetCancellation() { m_wasCanceled.fetchAndStoreRelease(NotCanceled); } inline bool SearchTask::testCancellation() { return !m_wasCanceled.testAndSetRelaxed(NotCanceled, NotCanceled); } inline int SearchTask::loadCancellation() const { return m_wasCanceled; } inline void SearchTask::releaseProgress(int value) { m_progress.fetchAndStoreRelease(value); } inline int SearchTask::acquireProgress() const { return m_progress.fetchAndAddAcquire(0); } inline int SearchTask::loadProgress() const { return m_progress; } #endif // QT_VERSION } // qpdfview #endif // SEARCHTHREAD_H qpdfview-0.4.18/sources/settings.cpp0000644000000000000000000011426113516127411015614 0ustar 00000000000000/* Copyright 2015 S. Razi Alavizadeh Copyright 2012-2015 Adam Reichold Copyright 2012 Alexander Volkov This file is part of qpdfview. qpdfview is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. qpdfview is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with qpdfview. If not, see . */ #include "settings.h" #include #include #include #include #if QT_VERSION >= QT_VERSION_CHECK(5,0,0) #include #else #include #endif // QT_VERSION namespace { inline QStringList trimmed(const QStringList& list) { QStringList trimmedList; foreach(const QString& item, list) { trimmedList.append(item.trimmed()); } return trimmedList; } inline int toInt(const QString& text, int defaultValue) { bool ok = false; const int value = text.toInt(&ok); return ok ? value : defaultValue; } int dataSize(const QSettings* settings, const QString& key, int defaultValue) { QString text = settings->value(key, QString("%1K").arg(defaultValue)).toString().trimmed(); if(text.endsWith('M')) { text.chop(1); return toInt(text, defaultValue / 1024) * 1024; } else if(text.endsWith('K')) { text.chop(1); return toInt(text, defaultValue); } else { return toInt(text, defaultValue * 1024) / 1024; } } void setDataSize(QSettings* settings, const QString& key, int value) { settings->setValue(key, QString("%1K").arg(value)); } } // anonymous namespace qpdfview { Settings* Settings::s_instance = 0; Settings* Settings::instance() { if(s_instance == 0) { s_instance = new Settings(qApp); s_instance->sync(); } return s_instance; } Settings::~Settings() { s_instance = 0; } // page item void Settings::PageItem::sync() { m_cacheSize = dataSize(m_settings, "pageItem/cacheSize", Defaults::PageItem::cacheSize()); m_useTiling = m_settings->value("pageItem/useTiling", Defaults::PageItem::useTiling()).toBool(); m_tileSize = m_settings->value("pageItem/tileSize", Defaults::PageItem::tileSize()).toInt(); m_keepObsoletePixmaps = m_settings->value("pageItem/keepObsoletePixmaps", Defaults::PageItem::keepObsoletePixmaps()).toBool(); m_useDevicePixelRatio = m_settings->value("pageItem/useDevicePixelRatio", Defaults::PageItem::useDevicePixelRatio()).toBool(); m_decoratePages = m_settings->value("pageItem/decoratePages", Defaults::PageItem::decoratePages()).toBool(); m_decorateLinks = m_settings->value("pageItem/decorateLinks", Defaults::PageItem::decorateLinks()).toBool(); m_decorateFormFields = m_settings->value("pageItem/decorateFormFields", Defaults::PageItem::decorateFormFields()).toBool(); m_backgroundColor = m_settings->value("pageItem/backgroundColor", Defaults::PageItem::backgroundColor()).value< QColor >(); m_paperColor = m_settings->value("pageItem/paperColor", Defaults::PageItem::paperColor()).value< QColor >(); m_highlightColor = m_settings->value("pageItem/highlightColor", Defaults::PageItem::highlightColor()).value< QColor >(); } void Settings::PageItem::setCacheSize(int cacheSize) { if(cacheSize >= 0) { m_cacheSize = cacheSize; setDataSize(m_settings, "pageItem/cacheSize", cacheSize); } } void Settings::PageItem::setUseTiling(bool useTiling) { m_useTiling = useTiling; m_settings->setValue("pageItem/useTiling", useTiling); } void Settings::PageItem::setKeepObsoletePixmaps(bool keepObsoletePixmaps) { m_keepObsoletePixmaps = keepObsoletePixmaps; m_settings->setValue("pageItem/keepObsoletePixmaps", keepObsoletePixmaps); } void Settings::PageItem::setUseDevicePixelRatio(bool useDevicePixelRatio) { m_useDevicePixelRatio = useDevicePixelRatio; m_settings->setValue("pageItem/useDevicePixelRatio", useDevicePixelRatio); } void Settings::PageItem::setDecoratePages(bool decoratePages) { m_decoratePages = decoratePages; m_settings->setValue("pageItem/decoratePages", decoratePages); } void Settings::PageItem::setDecorateLinks(bool decorateLinks) { m_decorateLinks = decorateLinks; m_settings->setValue("pageItem/decorateLinks", decorateLinks); } void Settings::PageItem::setDecorateFormFields(bool decorateFormFields) { m_decorateFormFields = decorateFormFields; m_settings->setValue("pageItem/decorateFormFields", decorateFormFields); } void Settings::PageItem::setBackgroundColor(const QColor& backgroundColor) { m_backgroundColor = backgroundColor; m_settings->setValue("pageItem/backgroundColor", backgroundColor); } void Settings::PageItem::setPaperColor(const QColor& paperColor) { m_paperColor = paperColor; m_settings->setValue("pageItem/paperColor", paperColor); } void Settings::PageItem::setHighlightColor(const QColor& highlightColor) { m_highlightColor = highlightColor; m_settings->setValue("pageItem/highlightColor", highlightColor); } QColor Settings::PageItem::annotationColor() const { return m_settings->value("pageItem/annotationColor", Defaults::PageItem::annotationColor()).value< QColor >(); } void Settings::PageItem::setAnnotationColor(const QColor& annotationColor) { m_settings->setValue("pageItem/annotationColor", annotationColor); } Qt::KeyboardModifiers Settings::PageItem::copyToClipboardModifiers() const { return static_cast< Qt::KeyboardModifiers >(m_settings->value("pageItem/copyToClipboardModifiers", static_cast< int >(Defaults::PageItem::copyToClipboardModifiers())).toInt()); } void Settings::PageItem::setCopyToClipboardModifiers(Qt::KeyboardModifiers modifiers) { m_settings->setValue("pageItem/copyToClipboardModifiers", static_cast< int >(modifiers)); } Qt::KeyboardModifiers Settings::PageItem::addAnnotationModifiers() const { return static_cast< Qt::KeyboardModifiers >(m_settings->value("pageItem/addAnnotationModifiers", static_cast< int >(Defaults::PageItem::addAnnotationModifiers())).toInt()); } void Settings::PageItem::setAddAnnotationModifiers(Qt::KeyboardModifiers modifiers) { m_settings->setValue("pageItem/addAnnotationModifiers", static_cast< int >(modifiers)); } Qt::KeyboardModifiers Settings::PageItem::zoomToSelectionModifiers() const { return static_cast< Qt::KeyboardModifiers>(m_settings->value("pageItem/zoomToSelectionModifiers", static_cast< int >(Defaults::PageItem::zoomToSelectionModifiers())).toInt()); } void Settings::PageItem::setZoomToSelectionModifiers(Qt::KeyboardModifiers modifiers) { m_settings->setValue("pageItem/zoomToSelectionModifiers", static_cast< int >(modifiers)); } Qt::KeyboardModifiers Settings::PageItem::openInSourceEditorModifiers() const { return static_cast< Qt::KeyboardModifiers >(m_settings->value("pageItem/openInSourceEditorModifiers", static_cast< int >(Defaults::PageItem::openInSourceEditorModifiers())).toInt()); } void Settings::PageItem::setOpenInSourceEditorModifiers(Qt::KeyboardModifiers modifiers) { m_settings->setValue("pageItem/openInSourceEditorModifiers", static_cast< int >(modifiers)); } bool Settings::PageItem::annotationOverlay() const { return m_settings->value("pageItem/annotationOverlay", Defaults::PageItem::annotationOverlay()).toBool(); } void Settings::PageItem::setAnnotationOverlay(bool overlay) { m_settings->setValue("pageItem/annotationOverlay", overlay); } bool Settings::PageItem::formFieldOverlay() const { return m_settings->value("pageItem/formFieldOverlay", Defaults::PageItem::formFieldOverlay()).toBool(); } void Settings::PageItem::setFormFieldOverlay(bool overlay) { m_settings->setValue("pageItem/formFieldOverlay", overlay); } Settings::PageItem::PageItem(QSettings* settings) : m_settings(settings), m_cacheSize(Defaults::PageItem::cacheSize()), m_progressIcon(), m_errorIcon(), m_keepObsoletePixmaps(Defaults::PageItem::keepObsoletePixmaps()), m_useDevicePixelRatio(false), m_decoratePages(Defaults::PageItem::decoratePages()), m_decorateLinks(Defaults::PageItem::decorateLinks()), m_decorateFormFields(Defaults::PageItem::decorateFormFields()), m_backgroundColor(Defaults::PageItem::backgroundColor()), m_paperColor(Defaults::PageItem::paperColor()), m_highlightColor(Defaults::PageItem::highlightColor()) { } // presentation view bool Settings::PresentationView::synchronize() const { return m_settings->value("presentationView/synchronize", Defaults::PresentationView::synchronize()).toBool(); } void Settings::PresentationView::setSynchronize(bool synchronize) { m_settings->setValue("presentationView/synchronize", synchronize); } int Settings::PresentationView::screen() const { int screen = m_settings->value("presentationView/screen", Defaults::PresentationView::screen()).toInt(); if(screen < -1 || screen >= QApplication::desktop()->screenCount()) { screen = -1; } return screen; } void Settings::PresentationView::setScreen(int screen) { m_settings->setValue("presentationView/screen", screen); } QColor Settings::PresentationView::backgroundColor() const { return m_settings->value("presentationView/backgroundColor", Defaults::PresentationView::backgroundColor()).value< QColor >(); } void Settings::PresentationView::setBackgroundColor(const QColor& backgroundColor) { m_settings->setValue("presentationView/backgroundColor", backgroundColor); } Settings::PresentationView::PresentationView(QSettings* settings) : m_settings(settings) { } // document view void Settings::DocumentView::sync() { m_prefetch = m_settings->value("documentView/prefetch", Defaults::DocumentView::prefetch()).toBool(); m_prefetchDistance = m_settings->value("documentView/prefetchDistance", Defaults::DocumentView::prefetchDistance()).toInt(); m_pagesPerRow = m_settings->value("documentView/pagesPerRow", Defaults::DocumentView::pagesPerRow()).toInt(); m_minimalScrolling = m_settings->value("documentView/minimalScrolling", Defaults::DocumentView::minimalScrolling()).toBool(); m_highlightCurrentThumbnail = m_settings->value("documentView/highlightCurrentThumbnail", Defaults::DocumentView::highlightCurrentThumbnail()).toBool(); m_limitThumbnailsToResults = m_settings->value("documentView/limitThumbnailsToResults", Defaults::DocumentView::limitThumbnailsToResults()).toBool(); m_pageSpacing = m_settings->value("documentView/pageSpacing", Defaults::DocumentView::pageSpacing()).toReal(); m_thumbnailSpacing = m_settings->value("documentView/thumbnailSpacing", Defaults::DocumentView::thumbnailSpacing()).toReal(); m_thumbnailSize = m_settings->value("documentView/thumbnailSize", Defaults::DocumentView::thumbnailSize()).toReal(); } bool Settings::DocumentView::openUrl() const { return m_settings->value("documentView/openUrl", Defaults::DocumentView::openUrl()).toBool(); } void Settings::DocumentView::setOpenUrl(bool openUrl) { m_settings->setValue("documentView/openUrl", openUrl); } bool Settings::DocumentView::autoRefresh() const { return m_settings->value("documentView/autoRefresh", Defaults::DocumentView::autoRefresh()).toBool(); } void Settings::DocumentView::setAutoRefresh(bool autoRefresh) { m_settings->setValue("documentView/autoRefresh", autoRefresh); } int Settings::DocumentView::autoRefreshTimeout() const { return m_settings->value("documentView/autoRefreshTimeout", Defaults::DocumentView::autoRefreshTimeout()).toInt(); } void Settings::DocumentView::setPrefetch(bool prefetch) { m_prefetch = prefetch; m_settings->setValue("documentView/prefetch", prefetch); } void Settings::DocumentView::setPrefetchDistance(int prefetchDistance) { if(prefetchDistance > 0) { m_prefetchDistance = prefetchDistance; m_settings->setValue("documentView/prefetchDistance", prefetchDistance); } } int Settings::DocumentView::prefetchTimeout() const { return m_settings->value("documentView/prefetchTimeout", Defaults::DocumentView::prefetchTimeout()).toInt(); } void Settings::DocumentView::setPagesPerRow(int pagesPerRow) { if(pagesPerRow > 0) { m_pagesPerRow = pagesPerRow; m_settings->setValue("documentView/pagesPerRow", pagesPerRow); } } void Settings::DocumentView::setMinimalScrolling(bool minimalScrolling) { m_minimalScrolling = minimalScrolling; m_settings->setValue("documentView/minimalScrolling", minimalScrolling); } void Settings::DocumentView::setHighlightCurrentThumbnail(bool highlightCurrentThumbnail) { m_highlightCurrentThumbnail = highlightCurrentThumbnail; m_settings->setValue("documentView/highlightCurrentThumbnail", highlightCurrentThumbnail); } void Settings::DocumentView::setLimitThumbnailsToResults(bool limitThumbnailsToResults) { m_limitThumbnailsToResults = limitThumbnailsToResults; m_settings->setValue("documentView/limitThumbnailsToResults", limitThumbnailsToResults); } qreal Settings::DocumentView::minimumScaleFactor() const { return m_settings->value("documentView/minimumScaleFactor", Defaults::DocumentView::minimumScaleFactor()).toReal(); } qreal Settings::DocumentView::maximumScaleFactor() const { return m_settings->value("documentView/maximumScaleFactor", Defaults::DocumentView::maximumScaleFactor()).toReal(); } qreal Settings::DocumentView::zoomFactor() const { return m_settings->value("documentView/zoomFactor", Defaults::DocumentView::zoomFactor()).toReal(); } void Settings::DocumentView::setZoomFactor(qreal zoomFactor) { m_settings->setValue("documentView/zoomFactor", zoomFactor); } void Settings::DocumentView::setPageSpacing(qreal pageSpacing) { if(pageSpacing >= 0.0) { m_pageSpacing = pageSpacing; m_settings->setValue("documentView/pageSpacing", pageSpacing); } } void Settings::DocumentView::setThumbnailSpacing(qreal thumbnailSpacing) { if(thumbnailSpacing >= 0.0) { m_thumbnailSpacing = thumbnailSpacing; m_settings->setValue("documentView/thumbnailSpacing", thumbnailSpacing); } } void Settings::DocumentView::setThumbnailSize(qreal thumbnailSize) { if(thumbnailSize >= 0.0) { m_thumbnailSize = thumbnailSize; m_settings->setValue("documentView/thumbnailSize", thumbnailSize); } } bool Settings::DocumentView::matchCase() const { return m_settings->value("documentView/matchCase", Defaults::DocumentView::matchCase()).toBool(); } void Settings::DocumentView::setMatchCase(bool matchCase) { m_settings->setValue("documentView/matchCase", matchCase); } bool Settings::DocumentView::wholeWords() const { return m_settings->value("documentView/wholeWords", Defaults::DocumentView::wholeWords()).toBool(); } void Settings::DocumentView::setWholeWords(bool wholeWords) { m_settings->setValue("documentView/wholeWords", wholeWords); } bool Settings::DocumentView::parallelSearchExecution() const { return m_settings->value("documentView/parallelSearchExecution", Defaults::DocumentView::parallelSearchExecution()).toBool(); } void Settings::DocumentView::setParallelSearchExecution(bool parallelSearchExecution) { m_settings->setValue("documentView/parallelSearchExecution", parallelSearchExecution); } int Settings::DocumentView::highlightDuration() const { return m_settings->value("documentView/highlightDuration", Defaults::DocumentView::highlightDuration()).toInt(); } void Settings::DocumentView::setHighlightDuration(int highlightDuration) { if(highlightDuration >= 0) { m_settings->setValue("documentView/highlightDuration", highlightDuration); } } QString Settings::DocumentView::sourceEditor() const { return m_settings->value("documentView/sourceEditor", Defaults::DocumentView::sourceEditor()).toString(); } void Settings::DocumentView::setSourceEditor(const QString& sourceEditor) { m_settings->setValue("documentView/sourceEditor", sourceEditor); } Qt::KeyboardModifiers Settings::DocumentView::zoomModifiers() const { return static_cast< Qt::KeyboardModifiers >(m_settings->value("documentView/zoomModifiers", static_cast< int >(Defaults::DocumentView::zoomModifiers())).toInt()); } void Settings::DocumentView::setZoomModifiers(Qt::KeyboardModifiers zoomModifiers) { m_settings->setValue("documentView/zoomModifiers", static_cast< int >(zoomModifiers)); } Qt::KeyboardModifiers Settings::DocumentView::rotateModifiers() const { return static_cast< Qt::KeyboardModifiers >(m_settings->value("documentView/rotateModifiers", static_cast< int >(Defaults::DocumentView::rotateModifiers())).toInt()); } void Settings::DocumentView::setRotateModifiers(Qt::KeyboardModifiers rotateModifiers) { m_settings->setValue("documentView/rotateModifiers", static_cast< int >(rotateModifiers)); } Qt::KeyboardModifiers Settings::DocumentView::scrollModifiers() const { return static_cast< Qt::KeyboardModifiers >(m_settings->value("documentView/scrollModifiers", static_cast< int >(Defaults::DocumentView::scrollModifiers())).toInt()); } void Settings::DocumentView::setScrollModifiers(Qt::KeyboardModifiers scrollModifiers) { m_settings->setValue("documentView/scrollModifiers", static_cast< int >(scrollModifiers)); } // per-tab settings bool Settings::DocumentView::continuousMode() const { return m_settings->value("documentView/continuousMode", Defaults::DocumentView::continuousMode()).toBool(); } void Settings::DocumentView::setContinuousMode(bool continuousMode) { m_settings->setValue("documentView/continuousMode", continuousMode); } LayoutMode Settings::DocumentView::layoutMode() const { return static_cast< LayoutMode >(m_settings->value("documentView/layoutMode", static_cast< uint >(Defaults::DocumentView::layoutMode())).toUInt()); } void Settings::DocumentView::setLayoutMode(LayoutMode layoutMode) { m_settings->setValue("documentView/layoutMode", static_cast< uint >(layoutMode)); } bool Settings::DocumentView::rightToLeftMode() const { return m_settings->value("documentView/rightToLeftMode", Defaults::DocumentView::rightToLeftMode()).toBool(); } void Settings::DocumentView::setRightToLeftMode(bool rightToLeftMode) { m_settings->setValue("documentView/rightToLeftMode", rightToLeftMode); } ScaleMode Settings::DocumentView::scaleMode() const { return static_cast< ScaleMode >(m_settings->value("documentView/scaleMode", static_cast< uint >(Defaults::DocumentView::scaleMode())).toUInt()); } void Settings::DocumentView::setScaleMode(ScaleMode scaleMode) { m_settings->setValue("documentView/scaleMode", static_cast< uint >(scaleMode)); } qreal Settings::DocumentView::scaleFactor() const { return m_settings->value("documentView/scaleFactor", Defaults::DocumentView::scaleFactor()).toReal(); } void Settings::DocumentView::setScaleFactor(qreal scaleFactor) { m_settings->setValue("documentView/scaleFactor", scaleFactor); } Rotation Settings::DocumentView::rotation() const { return static_cast< Rotation >(m_settings->value("documentView/rotation", static_cast< uint >(Defaults::DocumentView::rotation())).toUInt()); } void Settings::DocumentView::setRotation(Rotation rotation) { m_settings->setValue("documentView/rotation", static_cast< uint >(rotation)); } bool Settings::DocumentView::invertColors() const { return m_settings->value("documentView/invertColors", Defaults::DocumentView::invertColors()).toBool(); } void Settings::DocumentView::setInvertColors(bool invertColors) { m_settings->setValue("documentView/invertColors", invertColors); } bool Settings::DocumentView::convertToGrayscale() const { return m_settings->value("documentView/convertToGrayscale", Defaults::DocumentView::convertToGrayscale()).toBool(); } void Settings::DocumentView::setConvertToGrayscale(bool convertToGrayscale) { m_settings->setValue("documentView/convertToGrayscale", convertToGrayscale); } bool Settings::DocumentView::trimMargins() const { return m_settings->value("documentView/trimMargins", Defaults::DocumentView::trimMargins()).toBool(); } void Settings::DocumentView::setTrimMargins(bool trimMargins) { m_settings->setValue("documentView/trimMargins", trimMargins); } CompositionMode Settings::DocumentView::compositionMode() const { return static_cast< CompositionMode >(m_settings->value("documentView/compositionMode", static_cast< uint >(Defaults::DocumentView::compositionMode())).toInt()); } void Settings::DocumentView::setCompositionMode(CompositionMode compositionMode) { m_settings->setValue("documentView/compositionMode", static_cast< uint >(compositionMode)); } bool Settings::DocumentView::highlightAll() const { return m_settings->value("documentView/highlightAll", Defaults::DocumentView::highlightAll()).toBool(); } void Settings::DocumentView::setHighlightAll(bool highlightAll) { m_settings->setValue("documentView/highlightAll", highlightAll); } Settings::DocumentView::DocumentView(QSettings *settings) : m_settings(settings), m_prefetch(Defaults::DocumentView::prefetch()), m_prefetchDistance(Defaults::DocumentView::prefetchDistance()), m_pagesPerRow(Defaults::DocumentView::pagesPerRow()), m_highlightCurrentThumbnail(Defaults::DocumentView::highlightCurrentThumbnail()), m_limitThumbnailsToResults(Defaults::DocumentView::limitThumbnailsToResults()), m_pageSpacing(Defaults::DocumentView::pageSpacing()), m_thumbnailSpacing(Defaults::DocumentView::thumbnailSpacing()), m_thumbnailSize(Defaults::DocumentView::thumbnailSize()) { } // main window bool Settings::MainWindow::trackRecentlyUsed() const { return m_settings->value("mainWindow/trackRecentlyUsed", Defaults::MainWindow::trackRecentlyUsed()).toBool(); } void Settings::MainWindow::setTrackRecentlyUsed(bool trackRecentlyUsed) { m_settings->setValue("mainWindow/trackRecentlyUsed", trackRecentlyUsed); } int Settings::MainWindow::recentlyUsedCount() const { return m_settings->value("mainWindow/recentlyUsedCount", Defaults::MainWindow::recentlyUsedCount()).toInt(); } void Settings::MainWindow::setRecentlyUsedCount(int recentlyUsedCount) { m_settings->setValue("mainWindow/recentlyUsedCount", recentlyUsedCount); } QStringList Settings::MainWindow::recentlyUsed() const { return m_settings->value("mainWindow/recentlyUsed").toStringList(); } void Settings::MainWindow::setRecentlyUsed(const QStringList& recentlyUsed) { m_settings->setValue("mainWindow/recentlyUsed", recentlyUsed); } bool Settings::MainWindow::keepRecentlyClosed() const { return m_settings->value("mainWindow/keepRecentlyClosed", Defaults::MainWindow::keepRecentlyClosed()).toBool(); } void Settings::MainWindow::setKeepRecentlyClosed(bool keepRecentlyClosed) { m_settings->setValue("mainWindow/keepRecentlyClosed", keepRecentlyClosed); } int Settings::MainWindow::recentlyClosedCount() const { return m_settings->value("mainWindow/recentlyClosedCount", Defaults::MainWindow::recentlyClosedCount()).toInt(); } void Settings::MainWindow::setRecentlyClosedCount(int recentlyClosedCount) { m_settings->setValue("mainWindow/recentlyClosedCount", recentlyClosedCount); } bool Settings::MainWindow::restoreTabs() const { return m_settings->value("mainWindow/restoreTabs", Defaults::MainWindow::restoreTabs()).toBool(); } void Settings::MainWindow::setRestoreTabs(bool restoreTabs) { m_settings->setValue("mainWindow/restoreTabs", restoreTabs); } bool Settings::MainWindow::restoreBookmarks() const { return m_settings->value("mainWindow/restoreBookmarks", Defaults::MainWindow::restoreBookmarks()).toBool(); } void Settings::MainWindow::setRestoreBookmarks(bool restoreBookmarks) { m_settings->setValue("mainWindow/restoreBookmarks", restoreBookmarks); } bool Settings::MainWindow::restorePerFileSettings() const { return m_settings->value("mainWindow/restorePerFileSettings", Defaults::MainWindow::restorePerFileSettings()).toBool(); } void Settings::MainWindow::setRestorePerFileSettings(bool restorePerFileSettings) { m_settings->setValue("mainWindow/restorePerFileSettings", restorePerFileSettings); } int Settings::MainWindow::perFileSettingsLimit() const { return m_settings->value("mainWindow/perFileSettingsLimit", Defaults::MainWindow::perFileSettingsLimit()).toInt(); } int Settings::MainWindow::saveDatabaseInterval() const { return m_settings->value("mainWindow/saveDatabaseInterval", Defaults::MainWindow::saveDatabaseInterval()).toInt(); } void Settings::MainWindow::setSaveDatabaseInterval(int saveDatabaseInterval) { m_settings->setValue("mainWindow/saveDatabaseInterval", saveDatabaseInterval); } int Settings::MainWindow::currentTabIndex() const { return m_settings->value("mainWindow/currentTabIndex", -1).toInt(); } void Settings::MainWindow::setCurrentTabIndex(int currentTabIndex) { m_settings->setValue("mainWindow/currentTabIndex", currentTabIndex); } int Settings::MainWindow::tabPosition() const { return m_settings->value("mainWindow/tabPosition", Defaults::MainWindow::tabPosition()).toInt(); } void Settings::MainWindow::setTabPosition(int tabPosition) { if(tabPosition >= 0 && tabPosition < 4) { m_settings->setValue("mainWindow/tabPosition", tabPosition); } } int Settings::MainWindow::tabVisibility() const { return m_settings->value("mainWindow/tabVisibility", Defaults::MainWindow::tabVisibility()).toInt(); } void Settings::MainWindow::setTabVisibility(int tabVisibility) { if(tabVisibility >= 0 && tabVisibility < 3) { m_settings->setValue("mainWindow/tabVisibility", tabVisibility); } } bool Settings::MainWindow::spreadTabs() const { return m_settings->value("mainWindow/spreadTabs", Defaults::MainWindow::spreadTabs()).toBool(); } void Settings::MainWindow::setSpreadTabs(bool spreadTabs) { m_settings->setValue("mainWindow/spreadTabs", spreadTabs); } bool Settings::MainWindow::newTabNextToCurrentTab() const { return m_settings->value("mainWindow/newTabNextToCurrentTab", Defaults::MainWindow::newTabNextToCurrentTab()).toBool(); } void Settings::MainWindow::setNewTabNextToCurrentTab(bool newTabNextToCurrentTab) { m_settings->setValue("mainWindow/newTabNextToCurrentTab", newTabNextToCurrentTab); } bool Settings::MainWindow::exitAfterLastTab() const { return m_settings->value("mainWindow/exitAfterLastTab", Defaults::MainWindow::exitAfterLastTab()).toBool(); } void Settings::MainWindow::setExitAfterLastTab(bool exitAfterLastTab) { m_settings->setValue("mainWindow/exitAfterLastTab", exitAfterLastTab); } bool Settings::MainWindow::documentTitleAsTabTitle() const { return m_settings->value("mainWindow/documentAsTabTitle", Defaults::MainWindow::documentTitleAsTabTitle()).toBool(); } void Settings::MainWindow::setDocumentTitleAsTabTitle(bool documentTitleAsTabTitle) { m_settings->setValue("mainWindow/documentAsTabTitle", documentTitleAsTabTitle); } bool Settings::MainWindow::currentPageInWindowTitle() const { return m_settings->value("mainWindow/currentPageInWindowTitle", Defaults::MainWindow::currentPageInWindowTitle()).toBool(); } void Settings::MainWindow::setCurrentPageInWindowTitle(bool currentPageInTabText) { m_settings->setValue("mainWindow/currentPageInWindowTitle", currentPageInTabText); } bool Settings::MainWindow::instanceNameInWindowTitle() const { return m_settings->value("mainWindow/instanceNameInWindowTitle", Defaults::MainWindow::instanceNameInWindowTitle()).toBool(); } void Settings::MainWindow::setInstanceNameInWindowTitle(bool instanceNameInWindowTitle) { m_settings->setValue("mainWindow/instanceNameInWindowTitle", instanceNameInWindowTitle); } bool Settings::MainWindow::extendedSearchDock() const { return m_settings->value("mainWindow/extendedSearchDock", Defaults::MainWindow::extendedSearchDock()).toBool(); } void Settings::MainWindow::setExtendedSearchDock(bool extendedSearchDock) { m_settings->setValue("mainWindow/extendedSearchDock", extendedSearchDock); } bool Settings::MainWindow::usePageLabel() const { return m_settings->value("mainWindow/usePageLabel", Defaults::MainWindow::usePageLabel()).toBool(); } void Settings::MainWindow::setUsePageLabel(bool usePageLabel) { m_settings->setValue("mainWindow/usePageLabel", usePageLabel); } bool Settings::MainWindow::synchronizeOutlineView() const { return m_settings->value("mainWindow/synchronizeOutlineView", Defaults::MainWindow::synchronizeOutlineView()).toBool(); } void Settings::MainWindow::setSynchronizeOutlineView(bool synchronizeOutlineView) { m_settings->setValue("mainWindow/synchronizeOutlineView", synchronizeOutlineView); } bool Settings::MainWindow::synchronizeSplitViews() const { return m_settings->value("mainWindow/synchronizeSplitViews", Defaults::MainWindow::synchronizeSplitViews()).toBool(); } void Settings::MainWindow::setSynchronizeSplitViews(bool synchronizeSplitViews) { m_settings->setValue("mainWindow/synchronizeSplitViews", synchronizeSplitViews); } QStringList Settings::MainWindow::fileToolBar() const { return m_settings->value("mainWindow/fileToolBar", Defaults::MainWindow::fileToolBar()).toStringList(); } void Settings::MainWindow::setFileToolBar(const QStringList& fileToolBar) { m_settings->setValue("mainWindow/fileToolBar", trimmed(fileToolBar)); } QStringList Settings::MainWindow::editToolBar() const { return m_settings->value("mainWindow/editToolBar", Defaults::MainWindow::editToolBar()).toStringList(); } void Settings::MainWindow::setEditToolBar(const QStringList& editToolBar) { m_settings->setValue("mainWindow/editToolBar", trimmed(editToolBar)); } QStringList Settings::MainWindow::viewToolBar() const { return m_settings->value("mainWindow/viewToolBar", Defaults::MainWindow::viewToolBar()).toStringList(); } void Settings::MainWindow::setViewToolBar(const QStringList& viewToolBar) { m_settings->setValue("mainWindow/viewToolBar", trimmed(viewToolBar)); } QStringList Settings::MainWindow::documentContextMenu() const { return m_settings->value("mainWindow/documentContextMenu", Defaults::MainWindow::documentContextMenu()).toStringList(); } void Settings::MainWindow::setDocumentContextMenu(const QStringList& documentContextMenu) { m_settings->setValue("mainWindow/documentContextMenu", trimmed(documentContextMenu)); } QStringList Settings::MainWindow::tabContextMenu() const { return m_settings->value("mainWindow/tabContextMenu", Defaults::MainWindow::tabContexntMenu()).toStringList(); } void Settings::MainWindow::setTabContextMenu(const QStringList& tabContextMenu) { m_settings->setValue("mainWindow/tabContextMenu", trimmed(tabContextMenu)); } bool Settings::MainWindow::scrollableMenus() const { return m_settings->value("mainWindow/scrollableMenus", Defaults::MainWindow::scrollableMenus()).toBool(); } void Settings::MainWindow::setScrollableMenus(bool scrollableMenus) { m_settings->setValue("mainWindow/scrollableMenus", scrollableMenus); } bool Settings::MainWindow::searchableMenus() const { return m_settings->value("mainWindow/searchableMenus", Defaults::MainWindow::searchableMenus()).toBool(); } void Settings::MainWindow::setSearchableMenus(bool searchableMenus) { m_settings->setValue("mainWindow/searchableMenus", searchableMenus); } bool Settings::MainWindow::toggleToolAndMenuBarsWithFullscreen() const { return m_settings->value("mainWindow/toggleToolAndMenuBarsWithFullscreen", Defaults::MainWindow::toggleToolAndMenuBarsWithFullscreen()).toBool(); } void Settings::MainWindow::setToggleToolAndMenuBarsWithFullscreen(bool toggleToolAndMenuBarsWithFullscreen) const { m_settings->setValue("mainWindow/toggleToolAndMenuBarsWithFullscreen", toggleToolAndMenuBarsWithFullscreen); } bool Settings::MainWindow::hasIconTheme() const { return m_settings->contains("mainWindow/iconTheme"); } QString Settings::MainWindow::iconTheme() const { return m_settings->value("mainWindow/iconTheme").toString(); } bool Settings::MainWindow::hasStyleSheet() const { return m_settings->contains("mainWindow/styleSheet"); } QString Settings::MainWindow::styleSheet() const { return m_settings->value("mainWindow/styleSheet").toString(); } QByteArray Settings::MainWindow::geometry() const { return m_settings->value("mainWindow/geometry").toByteArray(); } void Settings::MainWindow::setGeometry(const QByteArray& geometry) { m_settings->setValue("mainWindow/geometry", geometry); } QByteArray Settings::MainWindow::state() const { return m_settings->value("mainWindow/state").toByteArray(); } void Settings::MainWindow::setState(const QByteArray& state) { m_settings->setValue("mainWindow/state", state); } QString Settings::MainWindow::openPath() const { return m_settings->value("mainWindow/openPath", Defaults::MainWindow::path()).toString(); } void Settings::MainWindow::setOpenPath(const QString& openPath) { m_settings->setValue("mainWindow/openPath", openPath); } QString Settings::MainWindow::savePath() const { return m_settings->value("mainWindow/savePath", Defaults::MainWindow::path()).toString(); } void Settings::MainWindow::setSavePath(const QString& savePath) { m_settings->setValue("mainWindow/savePath", savePath); } QSize Settings::MainWindow::settingsDialogSize(QSize sizeHint) const { return m_settings->value("mainWindow/settingsDialogSize", sizeHint).toSize(); } void Settings::MainWindow::setSettingsDialogSize(QSize settingsDialogSize) { m_settings->setValue("mainWindow/settingsDialogSize", settingsDialogSize); } QSize Settings::MainWindow::fontsDialogSize(QSize sizeHint) const { return m_settings->value("mainWindow/fontsDialogSize", sizeHint).toSize(); } void Settings::MainWindow::setFontsDialogSize(QSize fontsDialogSize) { m_settings->setValue("mainWindow/fontsDialogSize", fontsDialogSize); } QSize Settings::MainWindow::contentsDialogSize(QSize sizeHint) const { return m_settings->value("mainWindow/contentsDialogSize", sizeHint).toSize(); } void Settings::MainWindow::setContentsDialogSize(QSize contentsDialogSize) { m_settings->setValue("mainWindow/contentsDialogSize", contentsDialogSize); } Settings::MainWindow::MainWindow(QSettings* settings) : m_settings(settings) { } // print dialog Settings::PrintDialog::PrintDialog(QSettings* settings) : m_settings(settings) { } bool Settings::PrintDialog::collateCopies() const { return m_settings->value("printDialog/collateCopies", Defaults::PrintDialog::collateCopies()).toBool(); } void Settings::PrintDialog::setCollateCopies(bool collateCopies) { m_settings->setValue("printDialog/collateCopies", collateCopies); } QPrinter::PageOrder Settings::PrintDialog::pageOrder() const { return static_cast< QPrinter::PageOrder >(m_settings->value("printDialog/pageOrder", static_cast< int >(Defaults::PrintDialog::pageOrder())).toInt()); } void Settings::PrintDialog::setPageOrder(QPrinter::PageOrder pageOrder) { m_settings->setValue("printDialog/pageOrder", static_cast< int >(pageOrder)); } QPrinter::Orientation Settings::PrintDialog::orientation() const { return static_cast< QPrinter::Orientation >(m_settings->value("printDialog/orientation", static_cast< int >(Defaults::PrintDialog::orientation())).toInt()); } void Settings::PrintDialog::setOrientation(QPrinter::Orientation orientation) { m_settings->setValue("printDialog/orientation", static_cast< int >(orientation)); } QPrinter::ColorMode Settings::PrintDialog::colorMode() const { return static_cast< QPrinter::ColorMode >(m_settings->value("printDialog/colorMode", static_cast< int >(Defaults::PrintDialog::colorMode())).toInt()); } void Settings::PrintDialog::setColorMode(QPrinter::ColorMode colorMode) { m_settings->setValue("printDialog/colorMode", static_cast< int >(colorMode)); } QPrinter::DuplexMode Settings::PrintDialog::duplex() const { return static_cast< QPrinter::DuplexMode >(m_settings->value("printDialog/duplex", static_cast< int >(Defaults::PrintDialog::duplex())).toInt()); } void Settings::PrintDialog::setDuplex(QPrinter::DuplexMode duplex) { m_settings->setValue("printDialog/duplex", static_cast< int >(duplex)); } bool Settings::PrintDialog::fitToPage() const { return m_settings->value("printDialog/fitToPage", Defaults::PrintDialog::fitToPage()).toBool(); } void Settings::PrintDialog::setFitToPage(bool fitToPage) { m_settings->setValue("printDialog/fitToPage", fitToPage); } #if QT_VERSION < QT_VERSION_CHECK(5,2,0) PrintOptions::PageSet Settings::PrintDialog::pageSet() const { return static_cast< PrintOptions::PageSet >(m_settings->value("printDialog/pageSet", static_cast< uint >(Defaults::PrintDialog::pageSet())).toUInt()); } void Settings::PrintDialog::setPageSet(PrintOptions::PageSet pageSet) { m_settings->setValue("printDialog/pageSet", static_cast< uint >(pageSet)); } PrintOptions::NumberUp Settings::PrintDialog::numberUp() const { return static_cast< PrintOptions::NumberUp >(m_settings->value("printDialog/numberUp", static_cast< uint >(Defaults::PrintDialog::numberUp())).toUInt()); } void Settings::PrintDialog::setNumberUp(PrintOptions::NumberUp numberUp) { m_settings->setValue("printDialog/numberUp", static_cast< uint >(numberUp)); } PrintOptions::NumberUpLayout Settings::PrintDialog::numberUpLayout() const { return static_cast< PrintOptions::NumberUpLayout >(m_settings->value("printDialog/numberUpLayout", static_cast< uint >(Defaults::PrintDialog::numberUpLayout())).toUInt()); } void Settings::PrintDialog::setNumberUpLayout(PrintOptions::NumberUpLayout numberUpLayout) { m_settings->setValue("printDialog/numberUpLayout", static_cast< uint >(numberUpLayout)); } #endif // QT_VERSION void Settings::sync() { m_settings->sync(); m_pageItem.sync(); m_documentView.sync(); } Settings::Settings(QObject* parent) : QObject(parent), m_settings(new QSettings("qpdfview", "qpdfview", this)), m_pageItem(m_settings), m_presentationView(m_settings), m_documentView(m_settings), m_mainWindow(m_settings), m_printDialog(m_settings) { } // defaults bool Defaults::DocumentView::rightToLeftMode() { #if QT_VERSION >= QT_VERSION_CHECK(4,7,0) return QLocale::system().textDirection() == Qt::RightToLeft; #else return false; #endif // QT_VERSION } QString Defaults::MainWindow::path() { #if QT_VERSION >= QT_VERSION_CHECK(5,0,0) return QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation); #else return QDesktopServices::storageLocation(QDesktopServices::DocumentsLocation); #endif // QT_VERSION } } // qpdfview qpdfview-0.4.18/sources/settings.h0000644000000000000000000005227713516127411015271 0ustar 00000000000000/* Copyright 2015 S. Razi Alavizadeh Copyright 2012-2015, 2018 Adam Reichold Copyright 2012 Alexander Volkov This file is part of qpdfview. qpdfview is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. qpdfview is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with qpdfview. If not, see . */ #ifndef SETTINGS_H #define SETTINGS_H #include #include #include #include #include class QSettings; #include "global.h" #include "printoptions.h" namespace qpdfview { class Settings : public QObject { Q_OBJECT public: static Settings* instance(); ~Settings(); // page item class PageItem { public: void sync(); int cacheSize() const { return m_cacheSize; } void setCacheSize(int cacheSize); bool useTiling() const { return m_useTiling; } void setUseTiling(bool useTiling); int tileSize() const { return m_tileSize; } const QIcon& progressIcon() const { return m_progressIcon; } void setProgressIcon(const QIcon& progressIcon) { m_progressIcon = progressIcon; } const QIcon& errorIcon() const { return m_errorIcon; } void setErrorIcon(const QIcon& errorIcon) { m_errorIcon = errorIcon; } bool keepObsoletePixmaps() const { return m_keepObsoletePixmaps; } void setKeepObsoletePixmaps(bool keepObsoletePixmaps); bool useDevicePixelRatio() const { return m_useDevicePixelRatio; } void setUseDevicePixelRatio(bool useDevicePixelRatio); bool decoratePages() const { return m_decoratePages; } void setDecoratePages(bool decoratePages); bool decorateLinks() const { return m_decorateLinks; } void setDecorateLinks(bool decorateLinks); bool decorateFormFields() const { return m_decorateFormFields; } void setDecorateFormFields(bool decorateFormFields); const QColor& backgroundColor() const { return m_backgroundColor; } void setBackgroundColor(const QColor& backgroundColor); const QColor& paperColor() const { return m_paperColor; } void setPaperColor(const QColor& paperColor); const QColor& highlightColor() const { return m_highlightColor; } void setHighlightColor(const QColor& highlightColor); QColor annotationColor() const; void setAnnotationColor(const QColor& annotationColor); Qt::KeyboardModifiers copyToClipboardModifiers() const; void setCopyToClipboardModifiers(Qt::KeyboardModifiers modifiers); Qt::KeyboardModifiers addAnnotationModifiers() const; void setAddAnnotationModifiers(Qt::KeyboardModifiers modifiers); Qt::KeyboardModifiers zoomToSelectionModifiers() const; void setZoomToSelectionModifiers(Qt::KeyboardModifiers modifiers); Qt::KeyboardModifiers openInSourceEditorModifiers() const; void setOpenInSourceEditorModifiers(Qt::KeyboardModifiers modifiers); bool annotationOverlay() const; void setAnnotationOverlay(bool overlay); bool formFieldOverlay() const; void setFormFieldOverlay(bool overlay); private: PageItem(QSettings* settings); friend class Settings; QSettings* m_settings; int m_cacheSize; bool m_useTiling; int m_tileSize; QIcon m_progressIcon; QIcon m_errorIcon; bool m_keepObsoletePixmaps; bool m_useDevicePixelRatio; bool m_decoratePages; bool m_decorateLinks; bool m_decorateFormFields; QColor m_backgroundColor; QColor m_paperColor; QColor m_highlightColor; }; // presentation view class PresentationView { public: bool synchronize() const; void setSynchronize(bool synchronize); int screen() const; void setScreen(int screen); QColor backgroundColor() const; void setBackgroundColor(const QColor& backgroundColor); private: PresentationView(QSettings* settings); friend class Settings; QSettings* m_settings; }; // document view class DocumentView { public: void sync(); bool openUrl() const; void setOpenUrl(bool openUrl); bool autoRefresh() const; void setAutoRefresh(bool autoRefresh); int autoRefreshTimeout() const; bool prefetch() const { return m_prefetch; } void setPrefetch(bool prefetch); int prefetchDistance() const { return m_prefetchDistance; } void setPrefetchDistance(int prefetchDistance); int prefetchTimeout() const; int pagesPerRow() const { return m_pagesPerRow; } void setPagesPerRow(int pagesPerRow); bool minimalScrolling() const { return m_minimalScrolling; } void setMinimalScrolling(bool minimalScrolling); bool highlightCurrentThumbnail() const { return m_highlightCurrentThumbnail; } void setHighlightCurrentThumbnail(bool highlightCurrentThumbnail); bool limitThumbnailsToResults() const { return m_limitThumbnailsToResults; } void setLimitThumbnailsToResults(bool limitThumbnailsToResults); qreal minimumScaleFactor() const; qreal maximumScaleFactor() const; qreal zoomFactor() const; void setZoomFactor(qreal zoomFactor); qreal pageSpacing() const { return m_pageSpacing; } void setPageSpacing(qreal pageSpacing); qreal thumbnailSpacing() const { return m_thumbnailSpacing; } void setThumbnailSpacing(qreal thumbnailSpacing); qreal thumbnailSize() const { return m_thumbnailSize; } void setThumbnailSize(qreal thumbnailSize); bool matchCase() const; void setMatchCase(bool matchCase); bool wholeWords() const; void setWholeWords(bool wholeWords); bool parallelSearchExecution() const; void setParallelSearchExecution(bool parallelSearchExecution); int highlightDuration() const; void setHighlightDuration(int highlightDuration); QString sourceEditor() const; void setSourceEditor(const QString& sourceEditor); Qt::KeyboardModifiers zoomModifiers() const; void setZoomModifiers(Qt::KeyboardModifiers zoomModifiers); Qt::KeyboardModifiers rotateModifiers() const; void setRotateModifiers(Qt::KeyboardModifiers rotateModifiers); Qt::KeyboardModifiers scrollModifiers() const; void setScrollModifiers(Qt::KeyboardModifiers scrollModifiers); // per-tab settings bool continuousMode() const; void setContinuousMode(bool continuousMode); LayoutMode layoutMode() const; void setLayoutMode(LayoutMode layoutMode); bool rightToLeftMode() const; void setRightToLeftMode(bool rightToLeftMode); ScaleMode scaleMode() const; void setScaleMode(ScaleMode scaleMode); qreal scaleFactor() const; void setScaleFactor(qreal scaleFactor); Rotation rotation() const; void setRotation(Rotation rotation); bool invertColors() const; void setInvertColors(bool invertColors); bool convertToGrayscale() const; void setConvertToGrayscale(bool convertToGrayscale); bool trimMargins() const; void setTrimMargins(bool trimMargins); CompositionMode compositionMode() const; void setCompositionMode(CompositionMode compositionMode); bool highlightAll() const; void setHighlightAll(bool highlightAll); private: DocumentView(QSettings* settings); friend class Settings; QSettings* m_settings; bool m_prefetch; int m_prefetchDistance; int m_pagesPerRow; bool m_minimalScrolling; bool m_highlightCurrentThumbnail; bool m_limitThumbnailsToResults; qreal m_pageSpacing; qreal m_thumbnailSpacing; qreal m_thumbnailSize; }; // main window class MainWindow { public: bool trackRecentlyUsed() const; void setTrackRecentlyUsed(bool trackRecentlyUsed); int recentlyUsedCount() const; void setRecentlyUsedCount(int recentlyUsedCount); QStringList recentlyUsed() const; void setRecentlyUsed(const QStringList& recentlyUsed); bool keepRecentlyClosed() const; void setKeepRecentlyClosed(bool keepRecentlyClosed); int recentlyClosedCount() const; void setRecentlyClosedCount(int recentlyClosedCount); bool restoreTabs() const; void setRestoreTabs(bool restoreTabs); bool restoreBookmarks() const; void setRestoreBookmarks(bool restoreBookmarks); bool restorePerFileSettings() const; void setRestorePerFileSettings(bool restorePerFileSettings); int perFileSettingsLimit() const; int saveDatabaseInterval() const; void setSaveDatabaseInterval(int saveDatabaseInterval); int currentTabIndex() const; void setCurrentTabIndex(int currentTabIndex); int tabPosition() const; void setTabPosition(int tabPosition); int tabVisibility() const; void setTabVisibility(int tabVisibility); bool spreadTabs() const; void setSpreadTabs(bool spreadTabs); bool newTabNextToCurrentTab() const; void setNewTabNextToCurrentTab(bool newTabNextToCurrentTab); bool exitAfterLastTab() const; void setExitAfterLastTab(bool exitAfterLastTab); bool documentTitleAsTabTitle() const; void setDocumentTitleAsTabTitle(bool documentTitleAsTabTitle); bool currentPageInWindowTitle() const; void setCurrentPageInWindowTitle(bool currentPageInWindowTitle); bool instanceNameInWindowTitle() const; void setInstanceNameInWindowTitle(bool instanceNameInWindowTitle); bool extendedSearchDock() const; void setExtendedSearchDock(bool extendedSearchDock); bool usePageLabel() const; void setUsePageLabel(bool usePageLabel); bool synchronizeOutlineView() const; void setSynchronizeOutlineView(bool synchronizeOutlineView); bool synchronizeSplitViews() const; void setSynchronizeSplitViews(bool synchronizeSplitViews); QStringList fileToolBar() const; void setFileToolBar(const QStringList& fileToolBar); QStringList editToolBar() const; void setEditToolBar(const QStringList& editToolBar); QStringList viewToolBar() const; void setViewToolBar(const QStringList& viewToolBar); QStringList documentContextMenu() const; void setDocumentContextMenu(const QStringList& documentContextMenu); QStringList tabContextMenu() const; void setTabContextMenu(const QStringList& tabContextMenu); bool scrollableMenus() const; void setScrollableMenus(bool scrollableMenus); bool searchableMenus() const; void setSearchableMenus(bool searchableMenus); bool toggleToolAndMenuBarsWithFullscreen() const; void setToggleToolAndMenuBarsWithFullscreen(bool toggleToolAndMenuBarsWithFullscreen) const; bool hasIconTheme() const; QString iconTheme() const; bool hasStyleSheet() const; QString styleSheet() const; QByteArray geometry() const; void setGeometry(const QByteArray& geometry); QByteArray state() const; void setState(const QByteArray& state); QString openPath() const; void setOpenPath(const QString& openPath); QString savePath() const; void setSavePath(const QString& savePath); QSize settingsDialogSize(QSize sizeHint) const; void setSettingsDialogSize(QSize settingsDialogSize); QSize fontsDialogSize(QSize sizeHint) const; void setFontsDialogSize(QSize fontsDialogSize); QSize contentsDialogSize(QSize sizeHint) const; void setContentsDialogSize(QSize contentsDialogSize); private: MainWindow(QSettings* settings); friend class Settings; QSettings* m_settings; }; // print dialog class PrintDialog { public: bool collateCopies() const; void setCollateCopies(bool collateCopies); QPrinter::PageOrder pageOrder() const; void setPageOrder(QPrinter::PageOrder pageOrder); QPrinter::Orientation orientation() const; void setOrientation(QPrinter::Orientation orientation); QPrinter::ColorMode colorMode() const; void setColorMode(QPrinter::ColorMode colorMode); QPrinter::DuplexMode duplex() const; void setDuplex(QPrinter::DuplexMode duplex); bool fitToPage() const; void setFitToPage(bool fitToPage); #if QT_VERSION < QT_VERSION_CHECK(5,2,0) PrintOptions::PageSet pageSet() const; void setPageSet(PrintOptions::PageSet pageSet); PrintOptions::NumberUp numberUp() const; void setNumberUp(PrintOptions::NumberUp numberUp); PrintOptions::NumberUpLayout numberUpLayout() const; void setNumberUpLayout(PrintOptions::NumberUpLayout numberUpLayout); #endif // QT_VERSION private: PrintDialog(QSettings* settings); friend class Settings; QSettings* m_settings; }; void sync(); PageItem& pageItem() { return m_pageItem; } PresentationView& presentationView() { return m_presentationView; } DocumentView& documentView() { return m_documentView; } MainWindow& mainWindow() { return m_mainWindow; } PrintDialog& printDialog() { return m_printDialog; } private: Q_DISABLE_COPY(Settings) static Settings* s_instance; Settings(QObject* parent = 0); QSettings* m_settings; PageItem m_pageItem; PresentationView m_presentationView; DocumentView m_documentView; MainWindow m_mainWindow; PrintDialog m_printDialog; }; // defaults class Defaults { public: class PageItem { public: static int cacheSize() { return 32 * 1024; } static bool useTiling() { return false; } static int tileSize() { return 1024; } static bool keepObsoletePixmaps() { return false; } static bool useDevicePixelRatio() { return false; } static bool decoratePages() { return true; } static bool decorateLinks() { return true; } static bool decorateFormFields() { return true; } static QColor backgroundColor() { return Qt::darkGray; } static QColor paperColor() { return Qt::white; } static QColor highlightColor() { return Qt::yellow; } static QColor annotationColor() { return Qt::yellow; } static Qt::KeyboardModifiers copyToClipboardModifiers() { return Qt::ShiftModifier; } static Qt::KeyboardModifiers addAnnotationModifiers() { return Qt::ControlModifier; } static Qt::KeyboardModifiers zoomToSelectionModifiers() { return Qt::ShiftModifier | Qt::ControlModifier; } static Qt::KeyboardModifiers openInSourceEditorModifiers() { return Qt::NoModifier; } static bool annotationOverlay() { return false; } static bool formFieldOverlay() { return true; } private: PageItem() {} }; class PresentationView { public: static bool synchronize() { return false; } static int screen() { return -1; } static QColor backgroundColor() { return QColor(); } private: PresentationView() {} }; class DocumentView { public: static bool openUrl() { return false; } static bool autoRefresh() { return false; } static int autoRefreshTimeout() { return 750; } static bool prefetch() { return false; } static int prefetchDistance() { return 1; } static int prefetchTimeout() { return 250; } static int pagesPerRow() { return 3; } static bool minimalScrolling() { return false; } static bool highlightCurrentThumbnail() { return false; } static bool limitThumbnailsToResults() { return false; } static qreal minimumScaleFactor() { return 0.1; } static qreal maximumScaleFactor() { return 50.0; } static qreal zoomFactor() { return 1.1; } static qreal pageSpacing() { return 5.0; } static qreal thumbnailSpacing() { return 3.0; } static qreal thumbnailSize() { return 150.0; } static CompositionMode compositionMode() { return DefaultCompositionMode; } static bool matchCase() { return false; } static bool wholeWords() { return false; } static bool parallelSearchExecution() { return false; } static int highlightDuration() { return 5 * 1000; } static QString sourceEditor() { return QString(); } static Qt::KeyboardModifiers zoomModifiers() { return Qt::ControlModifier; } static Qt::KeyboardModifiers rotateModifiers() { return Qt::ShiftModifier; } static Qt::KeyboardModifiers scrollModifiers() { return Qt::AltModifier; } // per-tab defaults static bool continuousMode() { return false; } static LayoutMode layoutMode() { return SinglePageMode; } static bool rightToLeftMode(); static ScaleMode scaleMode() { return ScaleFactorMode; } static qreal scaleFactor() { return 1.0; } static Rotation rotation() { return RotateBy0; } static bool invertColors() { return false; } static bool convertToGrayscale() { return false; } static bool trimMargins() { return false; } static bool highlightAll() { return false; } private: DocumentView() {} }; class MainWindow { public: static bool trackRecentlyUsed() { return false; } static int recentlyUsedCount() { return 10; } static bool keepRecentlyClosed() { return false; } static int recentlyClosedCount() { return 5; } static bool restoreTabs() { return false; } static bool restoreBookmarks() { return false; } static bool restorePerFileSettings() { return false; } static int perFileSettingsLimit() { return 1000; } static int saveDatabaseInterval() { return 5 * 60 * 1000; } static int tabPosition() { return 0; } static int tabVisibility() { return 0; } static bool spreadTabs() { return false; } static bool newTabNextToCurrentTab() { return true; } static bool exitAfterLastTab() { return false; } static bool documentTitleAsTabTitle() { return true; } static bool currentPageInWindowTitle() { return false; } static bool instanceNameInWindowTitle() { return false; } static bool extendedSearchDock() { return false; } static bool usePageLabel() { return true; } static bool synchronizeOutlineView() { return false; } static bool synchronizeSplitViews() { return true; } static QStringList fileToolBar() { return QStringList() << "openInNewTab" << "refresh"; } static QStringList editToolBar() { return QStringList() << "currentPage" << "previousPage" << "nextPage"; } static QStringList viewToolBar() { return QStringList() << "scaleFactor" << "zoomIn" << "zoomOut"; } static QStringList documentContextMenu() { return QStringList() << "previousPage" << "nextPage" << "firstPage" << "lastPage" << "separator" << "jumpToPage" << "jumpBackward" << "jumpForward" << "separator" << "setFirstPage" << "separator" << "findPrevious" << "findNext" << "cancelSearch"; } static QStringList tabContexntMenu() { return QStringList() << "openCopyInNewTab" << "openCopyInNewWindow" << "openContainingFolder" << "separator" << "splitViewHorizontally" << "splitViewVertically" << "closeCurrentView" << "separator" << "closeAllTabs" << "closeAllTabsButThisOne" << "closeAllTabsToTheLeft" << "closeAllTabsToTheRight"; } static bool scrollableMenus() { return false; } static bool searchableMenus() { return false; } static bool toggleToolAndMenuBarsWithFullscreen() { return false; } static QString path(); private: MainWindow() {} }; class PrintDialog { public: static bool collateCopies() { return false; } static QPrinter::PageOrder pageOrder() { return QPrinter::FirstPageFirst; } static QPrinter::Orientation orientation() { return QPrinter::Portrait; } static QPrinter::ColorMode colorMode() { return QPrinter::Color; } static QPrinter::DuplexMode duplex() { return QPrinter::DuplexNone; } static bool fitToPage() { return false; } #if QT_VERSION < QT_VERSION_CHECK(5,2,0) static PrintOptions::PageSet pageSet() { return PrintOptions::AllPages; } static PrintOptions::NumberUp numberUp() { return PrintOptions::SinglePage; } static PrintOptions::NumberUpLayout numberUpLayout() { return PrintOptions::LeftRightTopBottom; } #endif // QT_VERSION private: PrintDialog() {} }; private: Defaults() {} }; } // qpdfview #endif // SETTINGS_H qpdfview-0.4.18/sources/settingsdialog.cpp0000644000000000000000000011640313516127411016774 0ustar 00000000000000/* Copyright 2015 S. Razi Alavizadeh Copyright 2012-2015 Adam Reichold Copyright 2012 Alexander Volkov This file is part of qpdfview. qpdfview is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. qpdfview is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with qpdfview. If not, see . */ #include "settingsdialog.h" #include #include #include #include #include #include #include #include #include #include #include "settings.h" #include "model.h" #include "pluginhandler.h" #include "shortcuthandler.h" #include "documentview.h" #include "miscellaneous.h" namespace { using namespace qpdfview; void addSettingsWidget(QTabWidget* tabWidget, SettingsWidget*& settingsWidget, PluginHandler::FileType fileType) { settingsWidget = PluginHandler::instance()->createSettingsWidget(fileType, tabWidget); if(settingsWidget != 0) { tabWidget->addTab(settingsWidget, PluginHandler::fileTypeName(fileType)); } } void setCurrentIndexFromData(QComboBox* comboBox, int data) { comboBox->setCurrentIndex(comboBox->findData(data)); } int dataFromCurrentIndex(const QComboBox* comboBox) { return comboBox->itemData(comboBox->currentIndex()).toInt(); } void setCurrentTextToColorName(QComboBox* comboBox, const QColor& color) { comboBox->lineEdit()->setText(color.isValid() ? color.name() : QString()); } QColor validColorFromCurrentText(const QComboBox* comboBox, const QColor& defaultColor) { const QColor color(comboBox->currentText()); return color.isValid() ? color : defaultColor; } void setCurrentIndexFromKeyboardModifiers(QComboBox* comboBox, Qt::KeyboardModifiers modifiers) { comboBox->setCurrentIndex(comboBox->findData(static_cast< int >(modifiers))); } Qt::KeyboardModifier keyboardModifierFromCurrentIndex(const QComboBox* comboBox) { return static_cast< Qt::KeyboardModifier >(comboBox->itemData(comboBox->currentIndex()).toInt()); } } // anonymous namespace qpdfview { Settings* SettingsDialog::s_settings = 0; SettingsDialog::SettingsDialog(QWidget* parent) : QDialog(parent) { if(s_settings == 0) { s_settings = Settings::instance(); } setWindowTitle(tr("Settings") + QLatin1String(" - qpdfview")); m_graphicsTabWidget = new QTabWidget(this); m_graphicsTabWidget->addTab(new QWidget(this), tr("General")); addSettingsWidget(m_graphicsTabWidget, m_pdfSettingsWidget, PluginHandler::PDF); addSettingsWidget(m_graphicsTabWidget, m_psSettingsWidget, PluginHandler::PS); addSettingsWidget(m_graphicsTabWidget, m_djvuSettingsWidget, PluginHandler::DjVu); m_graphicsLayout = new QFormLayout(m_graphicsTabWidget->widget(0)); m_shortcutsTableView = new QTableView(this); m_shortcutsTableView->setModel(ShortcutHandler::instance()); connect(this, SIGNAL(accepted()), ShortcutHandler::instance(), SLOT(submit())); connect(this, SIGNAL(rejected()), ShortcutHandler::instance(), SLOT(revert())); m_shortcutsTableView->setFrameShape(QFrame::NoFrame); m_shortcutsTableView->setAlternatingRowColors(true); #if QT_VERSION >= QT_VERSION_CHECK(5,0,0) m_shortcutsTableView->horizontalHeader()->setSectionResizeMode(0, QHeaderView::ResizeToContents); m_shortcutsTableView->horizontalHeader()->setSectionResizeMode(1, QHeaderView::Stretch); #else m_shortcutsTableView->horizontalHeader()->setResizeMode(0, QHeaderView::ResizeToContents); m_shortcutsTableView->horizontalHeader()->setResizeMode(1, QHeaderView::Stretch); #endif // QT_VERSION m_shortcutsTableView->verticalHeader()->setVisible(false); m_tabWidget = new QTabWidget(this); m_tabWidget->addTab(new QWidget(this), tr("&Behavior")); m_tabWidget->addTab(m_graphicsTabWidget, tr("&Graphics")); m_tabWidget->addTab(new QWidget(this), tr("&Interface")); m_tabWidget->addTab(m_shortcutsTableView, tr("&Shortcuts")); m_tabWidget->addTab(new QWidget(this), tr("&Modifiers")); m_dialogButtonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, Qt::Horizontal, this); connect(m_dialogButtonBox, SIGNAL(accepted()), SLOT(accept())); connect(m_dialogButtonBox, SIGNAL(rejected()), SLOT(reject())); m_defaultsButton = m_dialogButtonBox->addButton(tr("Defaults"), QDialogButtonBox::ResetRole); connect(m_defaultsButton, SIGNAL(clicked()), SLOT(reset())); m_defaultsOnCurrentTabButton = m_dialogButtonBox->addButton(tr("Defaults on current tab"), QDialogButtonBox::ResetRole); connect(m_defaultsOnCurrentTabButton, SIGNAL(clicked()), SLOT(resetCurrentTab())); m_behaviorLayout = new QFormLayout(m_tabWidget->widget(0)); m_interfaceLayout = new QFormLayout(m_tabWidget->widget(2)); m_wheelModifiersGroupBox = new QGroupBox(tr("Mouse wheel modifiers")); m_wheelModifiersLayout = new QFormLayout(m_wheelModifiersGroupBox); m_buttonModifiersGroupBox = new QGroupBox(tr("Mouse button modifiers")); m_buttonModifiersLayout = new QFormLayout(m_buttonModifiersGroupBox); QWidget* modifiersTab = m_tabWidget->widget(4); QVBoxLayout* modifiersLayout = new QVBoxLayout(modifiersTab); modifiersTab->setLayout(modifiersLayout); modifiersLayout->addWidget(m_wheelModifiersGroupBox); modifiersLayout->addWidget(m_buttonModifiersGroupBox); modifiersLayout->addStretch(); QVBoxLayout* layout = new QVBoxLayout(this); setLayout(layout); layout->addWidget(m_tabWidget); layout->addWidget(m_dialogButtonBox); resize(s_settings->mainWindow().settingsDialogSize(sizeHint())); createBehaviorTab(); createGraphicsTab(); createInterfaceTab(); createModifiersTab(); } SettingsDialog::~SettingsDialog() { s_settings->mainWindow().setSettingsDialogSize(size()); } void SettingsDialog::accept() { QDialog::accept(); acceptBehaivorTab(); acceptGraphicsTab(); acceptInterfaceTab(); acceptModifiersTab(); } void SettingsDialog::reset() { resetBehaviorTab(); resetGraphicsTab(); resetInterfaceTab(); ShortcutHandler::instance()->reset(); resetModifiersTab(); } void SettingsDialog::resetCurrentTab() { switch(m_tabWidget->currentIndex()) { default: reset(); break; case 0: resetBehaviorTab(); break; case 1: resetGraphicsTab(); break; case 2: resetInterfaceTab(); break; case 3: ShortcutHandler::instance()->reset(); break; case 4: resetModifiersTab(); break; } } void SettingsDialog::createBehaviorTab() { m_openUrlCheckBox = addCheckBox(m_behaviorLayout, tr("Open URL:"), QString(), s_settings->documentView().openUrl()); m_autoRefreshCheckBox = addCheckBox(m_behaviorLayout, tr("Auto-refresh:"), QString(), s_settings->documentView().autoRefresh()); m_trackRecentlyUsedCheckBox = addCheckBox(m_behaviorLayout, tr("Track recently used:"), tr("Effective after restart."), s_settings->mainWindow().trackRecentlyUsed()); m_keepRecentlyClosedCheckBox = addCheckBox(m_behaviorLayout, tr("Keep recently closed:"), tr("Effective after restart."), s_settings->mainWindow().keepRecentlyClosed()); m_restoreTabsCheckBox = addCheckBox(m_behaviorLayout, tr("Restore tabs:"), QString(), s_settings->mainWindow().restoreTabs()); m_restoreBookmarksCheckBox = addCheckBox(m_behaviorLayout, tr("Restore bookmarks:"), QString(), s_settings->mainWindow().restoreBookmarks()); m_restorePerFileSettingsCheckBox = addCheckBox(m_behaviorLayout, tr("Restore per-file settings:"), QString(), s_settings->mainWindow().restorePerFileSettings()); m_saveDatabaseInterval = addSpinBox(m_behaviorLayout, tr("Save database interval:"), QString(), tr(" min"), tr("Never"), -1, 60, 1, s_settings->mainWindow().saveDatabaseInterval() / 1000 / 60); #ifndef WITH_SQL m_restoreTabsCheckBox->setEnabled(false); m_restoreBookmarksCheckBox->setEnabled(false); m_restorePerFileSettingsCheckBox->setEnabled(false); m_saveDatabaseInterval->setEnabled(false); #endif // WITH_SQL m_synchronizePresentationCheckBox = addCheckBox(m_behaviorLayout, tr("Synchronize presentation:"), QString(), s_settings->presentationView().synchronize()); m_presentationScreenSpinBox = addSpinBox(m_behaviorLayout, tr("Presentation screen:"), QString(), QString(), tr("Default"), -1, QApplication::desktop()->screenCount() - 1, 1, s_settings->presentationView().screen()); m_synchronizeOutlineViewCheckBox = addCheckBox(m_behaviorLayout, tr("Synchronize outline view:"), QString(), s_settings->mainWindow().synchronizeOutlineView()); m_synchronizeSplitViewsCheckBox = addCheckBox(m_behaviorLayout, tr("Synchronize split views:"), QString(), s_settings->mainWindow().synchronizeSplitViews()); m_minimalScrollingCheckBox = addCheckBox(m_behaviorLayout, tr("Minimal scrolling:"), QString(), s_settings->documentView().minimalScrolling()); m_zoomFactorSpinBox = addDoubleSpinBox(m_behaviorLayout, tr("Zoom factor:"), QString(), QString(), QString(), 1.0, 2.0, 0.05, s_settings->documentView().zoomFactor()); m_parallelSearchExecutionCheckBox = addCheckBox(m_behaviorLayout, tr("Parallel search execution:"), QString(), s_settings->documentView().parallelSearchExecution()); m_highlightDurationSpinBox = addSpinBox(m_behaviorLayout, tr("Highlight duration:"), QString(), tr(" ms"), tr("None"), 0, 60000, 500, s_settings->documentView().highlightDuration()); m_highlightColorComboBox = addColorComboBox(m_behaviorLayout, tr("Highlight color:"), QString(), s_settings->pageItem().highlightColor()); m_annotationColorComboBox = addColorComboBox(m_behaviorLayout, tr("Annotation color:"), QString(), s_settings->pageItem().annotationColor()); m_sourceEditorLineEdit = addLineEdit(m_behaviorLayout, tr("Source editor:"), tr("'%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number."), s_settings->documentView().sourceEditor()); } void SettingsDialog::acceptBehaivorTab() { s_settings->documentView().setOpenUrl(m_openUrlCheckBox->isChecked()); s_settings->documentView().setAutoRefresh(m_autoRefreshCheckBox->isChecked()); s_settings->mainWindow().setTrackRecentlyUsed(m_trackRecentlyUsedCheckBox->isChecked()); s_settings->mainWindow().setKeepRecentlyClosed(m_keepRecentlyClosedCheckBox->isChecked()); s_settings->mainWindow().setRestoreTabs(m_restoreTabsCheckBox->isChecked()); s_settings->mainWindow().setRestoreBookmarks(m_restoreBookmarksCheckBox->isChecked()); s_settings->mainWindow().setRestorePerFileSettings(m_restorePerFileSettingsCheckBox->isChecked()); s_settings->mainWindow().setSaveDatabaseInterval(m_saveDatabaseInterval->value() * 60 * 1000); s_settings->presentationView().setSynchronize(m_synchronizePresentationCheckBox->isChecked()); s_settings->presentationView().setScreen(m_presentationScreenSpinBox->value()); s_settings->mainWindow().setSynchronizeOutlineView(m_synchronizeOutlineViewCheckBox->isChecked()); s_settings->mainWindow().setSynchronizeSplitViews(m_synchronizeSplitViewsCheckBox->isChecked()); s_settings->documentView().setMinimalScrolling(m_minimalScrollingCheckBox->isChecked()); s_settings->documentView().setZoomFactor(m_zoomFactorSpinBox->value()); s_settings->documentView().setParallelSearchExecution(m_parallelSearchExecutionCheckBox->isChecked()); s_settings->documentView().setHighlightDuration(m_highlightDurationSpinBox->value()); s_settings->pageItem().setHighlightColor(validColorFromCurrentText(m_highlightColorComboBox, Defaults::PageItem::highlightColor())); s_settings->pageItem().setAnnotationColor(validColorFromCurrentText(m_annotationColorComboBox, Defaults::PageItem::annotationColor())); s_settings->documentView().setSourceEditor(m_sourceEditorLineEdit->text()); } void SettingsDialog::resetBehaviorTab() { m_openUrlCheckBox->setChecked(Defaults::DocumentView::openUrl()); m_autoRefreshCheckBox->setChecked(Defaults::DocumentView::autoRefresh()); m_trackRecentlyUsedCheckBox->setChecked(Defaults::MainWindow::trackRecentlyUsed()); m_keepRecentlyClosedCheckBox->setChecked(Defaults::MainWindow::keepRecentlyClosed()); m_restoreTabsCheckBox->setChecked(Defaults::MainWindow::restoreTabs()); m_restoreBookmarksCheckBox->setChecked(Defaults::MainWindow::restoreBookmarks()); m_restorePerFileSettingsCheckBox->setChecked(Defaults::MainWindow::restorePerFileSettings()); m_saveDatabaseInterval->setValue(Defaults::MainWindow::saveDatabaseInterval()); m_synchronizePresentationCheckBox->setChecked(Defaults::PresentationView::synchronize()); m_presentationScreenSpinBox->setValue(Defaults::PresentationView::screen()); m_synchronizeOutlineViewCheckBox->setChecked(Defaults::MainWindow::synchronizeOutlineView()); m_synchronizeSplitViewsCheckBox->setChecked(Defaults::MainWindow::synchronizeSplitViews()); m_minimalScrollingCheckBox->setChecked(Defaults::DocumentView::minimalScrolling()); m_zoomFactorSpinBox->setValue(Defaults::DocumentView::zoomFactor()); m_parallelSearchExecutionCheckBox->setChecked(Defaults::DocumentView::parallelSearchExecution()); m_highlightDurationSpinBox->setValue(Defaults::DocumentView::highlightDuration()); setCurrentTextToColorName(m_highlightColorComboBox, Defaults::PageItem::highlightColor()); setCurrentTextToColorName(m_annotationColorComboBox, Defaults::PageItem::annotationColor()); m_sourceEditorLineEdit->clear(); } void SettingsDialog::createGraphicsTab() { m_useTilingCheckBox = addCheckBox(m_graphicsLayout, tr("Use tiling:"), QString(), s_settings->pageItem().useTiling()); m_keepObsoletePixmapsCheckBox = addCheckBox(m_graphicsLayout, tr("Keep obsolete pixmaps:"), QString(), s_settings->pageItem().keepObsoletePixmaps()); m_useDevicePixelRatioCheckBox = addCheckBox(m_graphicsLayout, tr("Use device pixel ratio:"), QString(), s_settings->pageItem().useDevicePixelRatio()); #if QT_VERSION < QT_VERSION_CHECK(5,1,0) m_useDevicePixelRatioCheckBox->setEnabled(false); #endif // QT_VERSION m_decoratePagesCheckBox = addCheckBox(m_graphicsLayout, tr("Decorate pages:"), QString(), s_settings->pageItem().decoratePages()); m_decorateLinksCheckBox = addCheckBox(m_graphicsLayout, tr("Decorate links:"), QString(), s_settings->pageItem().decorateLinks()); m_decorateFormFieldsCheckBox = addCheckBox(m_graphicsLayout, tr("Decorate form fields:"), QString(), s_settings->pageItem().decorateFormFields()); m_backgroundColorComboBox = addColorComboBox(m_graphicsLayout, tr("Background color:"), QString(), s_settings->pageItem().backgroundColor()); m_paperColorComboBox = addColorComboBox(m_graphicsLayout, tr("Paper color:"), QString(), s_settings->pageItem().paperColor()); m_presentationBackgroundColorComboBox = addColorComboBox(m_graphicsLayout, tr("Presentation background color:"), QString(), s_settings->presentationView().backgroundColor()); m_pagesPerRowSpinBox = addSpinBox(m_graphicsLayout, tr("Pages per row:"), QString(), QString(), QString(), 1, 10, 1, s_settings->documentView().pagesPerRow()); m_pageSpacingSpinBox = addDoubleSpinBox(m_graphicsLayout, tr("Page spacing:"), QString(), tr(" px"), QString(), 0.0, 25.0, 0.25, s_settings->documentView().pageSpacing()); m_thumbnailSpacingSpinBox = addDoubleSpinBox(m_graphicsLayout, tr("Thumbnail spacing:"), QString(), tr(" px"), QString(), 0.0, 25.0, 0.25, s_settings->documentView().thumbnailSpacing()); m_thumbnailSizeSpinBox = addDoubleSpinBox(m_graphicsLayout, tr("Thumbnail size:"), QString(), tr(" px"), tr("Fit to viewport"), 0.0, 1800.0, 25.0, s_settings->documentView().thumbnailSize()); m_cacheSizeComboBox = addDataSizeComboBox(m_graphicsLayout, tr("Cache size:"), QString(), s_settings->pageItem().cacheSize()); m_prefetchCheckBox = addCheckBox(m_graphicsLayout, tr("Prefetch:"), QString(), s_settings->documentView().prefetch()); m_prefetchDistanceSpinBox = addSpinBox(m_graphicsLayout, tr("Prefetch distance:"), QString(), QString(), QString(), 1, 10, 1, s_settings->documentView().prefetchDistance()); } void SettingsDialog::acceptGraphicsTab() { s_settings->pageItem().setUseTiling(m_useTilingCheckBox->isChecked()); s_settings->pageItem().setKeepObsoletePixmaps(m_keepObsoletePixmapsCheckBox->isChecked()); s_settings->pageItem().setUseDevicePixelRatio(m_useDevicePixelRatioCheckBox->isChecked()); s_settings->pageItem().setDecoratePages(m_decoratePagesCheckBox->isChecked()); s_settings->pageItem().setDecorateLinks(m_decorateLinksCheckBox->isChecked()); s_settings->pageItem().setDecorateFormFields(m_decorateFormFieldsCheckBox->isChecked()); s_settings->pageItem().setBackgroundColor(validColorFromCurrentText(m_backgroundColorComboBox, Defaults::PageItem::backgroundColor())); s_settings->pageItem().setPaperColor(validColorFromCurrentText(m_paperColorComboBox, Defaults::PageItem::paperColor())); s_settings->presentationView().setBackgroundColor(validColorFromCurrentText(m_presentationBackgroundColorComboBox, Defaults::PresentationView::backgroundColor())); s_settings->documentView().setPagesPerRow(m_pagesPerRowSpinBox->value()); s_settings->documentView().setPageSpacing(m_pageSpacingSpinBox->value()); s_settings->documentView().setThumbnailSpacing(m_thumbnailSpacingSpinBox->value()); s_settings->documentView().setThumbnailSize(m_thumbnailSizeSpinBox->value()); s_settings->pageItem().setCacheSize(dataFromCurrentIndex(m_cacheSizeComboBox)); s_settings->documentView().setPrefetch(m_prefetchCheckBox->isChecked()); s_settings->documentView().setPrefetchDistance(m_prefetchDistanceSpinBox->value()); if(m_pdfSettingsWidget != 0) { m_pdfSettingsWidget->accept(); } if(m_psSettingsWidget != 0) { m_psSettingsWidget->accept(); } if(m_djvuSettingsWidget != 0) { m_djvuSettingsWidget->accept(); } } void SettingsDialog::resetGraphicsTab() { m_useTilingCheckBox->setChecked(Defaults::PageItem::useTiling()); m_keepObsoletePixmapsCheckBox->setChecked(Defaults::PageItem::keepObsoletePixmaps()); m_useDevicePixelRatioCheckBox->setChecked(Defaults::PageItem::useDevicePixelRatio()); m_decoratePagesCheckBox->setChecked(Defaults::PageItem::decoratePages()); m_decorateLinksCheckBox->setChecked(Defaults::PageItem::decorateLinks()); m_decorateFormFieldsCheckBox->setChecked(Defaults::PageItem::decorateFormFields()); setCurrentTextToColorName(m_backgroundColorComboBox, Defaults::PageItem::backgroundColor()); setCurrentTextToColorName(m_paperColorComboBox, Defaults::PageItem::paperColor()); setCurrentTextToColorName(m_presentationBackgroundColorComboBox, Defaults::PresentationView::backgroundColor()); m_pagesPerRowSpinBox->setValue(Defaults::DocumentView::pagesPerRow()); m_pageSpacingSpinBox->setValue(Defaults::DocumentView::pageSpacing()); m_thumbnailSpacingSpinBox->setValue(Defaults::DocumentView::thumbnailSpacing()); m_thumbnailSizeSpinBox->setValue(Defaults::DocumentView::thumbnailSize()); setCurrentIndexFromData(m_cacheSizeComboBox, Defaults::PageItem::cacheSize()); m_prefetchCheckBox->setChecked(Defaults::DocumentView::prefetch()); m_prefetchDistanceSpinBox->setValue(Defaults::DocumentView::prefetchDistance()); if(m_pdfSettingsWidget != 0) { m_pdfSettingsWidget->reset(); } if(m_psSettingsWidget != 0) { m_psSettingsWidget->reset(); } if(m_djvuSettingsWidget != 0) { m_djvuSettingsWidget->reset(); } } void SettingsDialog::createInterfaceTab() { m_extendedSearchDock = addCheckBox(m_interfaceLayout, tr("Extended search dock:"), tr("Effective after restart."), s_settings->mainWindow().extendedSearchDock()); m_annotationOverlayCheckBox = addCheckBox(m_interfaceLayout, tr("Annotation overlay:"), QString(), s_settings->pageItem().annotationOverlay()); m_formFieldOverlayCheckBox = addCheckBox(m_interfaceLayout, tr("Form field overlay:"), QString(), s_settings->pageItem().formFieldOverlay()); m_tabPositionComboBox = addComboBox(m_interfaceLayout, tr("Tab position:"), QString(), QStringList() << tr("Top") << tr("Bottom") << tr("Left") << tr("Right"), QList< int >() << QTabWidget::North << QTabWidget::South << QTabWidget::West << QTabWidget::East, s_settings->mainWindow().tabPosition()); m_tabVisibilityComboBox = addComboBox(m_interfaceLayout, tr("Tab visibility:"), QString(), QStringList() << tr("As needed") << tr("Always") << tr("Never"), QList< int >() << TabWidget::TabBarAsNeeded << TabWidget::TabBarAlwaysOn << TabWidget::TabBarAlwaysOff, s_settings->mainWindow().tabVisibility()); m_spreadTabsCheckBox = addCheckBox(m_interfaceLayout, tr("Spread tabs:"), QString(), s_settings->mainWindow().spreadTabs()); m_newTabNextToCurrentTabCheckBox = addCheckBox(m_interfaceLayout, tr("New tab next to current tab:"), QString(), s_settings->mainWindow().newTabNextToCurrentTab()); m_exitAfterLastTabCheckBox = addCheckBox(m_interfaceLayout, tr("Exit after last tab:"), QString(), s_settings->mainWindow().exitAfterLastTab()); m_recentlyUsedCountSpinBox = addSpinBox(m_interfaceLayout, tr("Recently used count:"), tr("Effective after restart."), QString(), QString(), 1, 50, 1, s_settings->mainWindow().recentlyUsedCount()); m_recentlyClosedCountSpinBox = addSpinBox(m_interfaceLayout, tr("Recently closed count:"), tr("Effective after restart."), QString(), QString(), 1, 25, 1, s_settings->mainWindow().recentlyClosedCount()); m_fileToolBarLineEdit = addLineEdit(m_interfaceLayout, tr("File tool bar:"), tr("Effective after restart."), s_settings->mainWindow().fileToolBar().join(",")); m_editToolBarLineEdit = addLineEdit(m_interfaceLayout, tr("Edit tool bar:"), tr("Effective after restart."), s_settings->mainWindow().editToolBar().join(",")); m_viewToolBarLineEdit = addLineEdit(m_interfaceLayout, tr("View tool bar:"), tr("Effective after restart."), s_settings->mainWindow().viewToolBar().join(",")); m_documentContextMenuLineEdit = addLineEdit(m_interfaceLayout, tr("Document context menu:"), QString(), s_settings->mainWindow().documentContextMenu().join(",")); m_tabContextMenuLineEdit = addLineEdit(m_interfaceLayout, tr("Tab context menu:"), QString(), s_settings->mainWindow().tabContextMenu().join(",")); m_scrollableMenusCheckBox = addCheckBox(m_interfaceLayout, tr("Scrollable menus:"), tr("Effective after restart."), s_settings->mainWindow().scrollableMenus()); m_searchableMenusCheckBox = addCheckBox(m_interfaceLayout, tr("Searchable menus:"), QString(), s_settings->mainWindow().searchableMenus()); m_toggleToolAndMenuBarsWithFullscreenCheckBox = addCheckBox(m_interfaceLayout, tr("Toggle tool and menu bars with fullscreen:"), QString(), s_settings->mainWindow().toggleToolAndMenuBarsWithFullscreen()); m_usePageLabelCheckBox = addCheckBox(m_interfaceLayout, tr("Use page label:"), QString(), s_settings->mainWindow().usePageLabel()); m_documentTitleAsTabTitleCheckBox = addCheckBox(m_interfaceLayout, tr("Document title as tab title:"), QString(), s_settings->mainWindow().documentTitleAsTabTitle()); m_currentPageInWindowTitleCheckBox = addCheckBox(m_interfaceLayout, tr("Current page in window title:"), QString(), s_settings->mainWindow().currentPageInWindowTitle()); m_instanceNameInWindowTitleCheckBox = addCheckBox(m_interfaceLayout, tr("Instance name in window title:"), QString(), s_settings->mainWindow().instanceNameInWindowTitle()); m_highlightCurrentThumbnailCheckBox = addCheckBox(m_interfaceLayout, tr("Highlight current thumbnail:"), QString(), s_settings->documentView().highlightCurrentThumbnail()); m_limitThumbnailsToResultsCheckBox = addCheckBox(m_interfaceLayout, tr("Limit thumbnails to results:"), QString(), s_settings->documentView().limitThumbnailsToResults()); } void SettingsDialog::acceptInterfaceTab() { s_settings->mainWindow().setExtendedSearchDock(m_extendedSearchDock->isChecked()); s_settings->pageItem().setAnnotationOverlay(m_annotationOverlayCheckBox->isChecked()); s_settings->pageItem().setFormFieldOverlay(m_formFieldOverlayCheckBox); s_settings->mainWindow().setTabPosition(dataFromCurrentIndex(m_tabPositionComboBox)); s_settings->mainWindow().setTabVisibility(dataFromCurrentIndex(m_tabVisibilityComboBox)); s_settings->mainWindow().setSpreadTabs(m_spreadTabsCheckBox->isChecked()); s_settings->mainWindow().setNewTabNextToCurrentTab(m_newTabNextToCurrentTabCheckBox->isChecked()); s_settings->mainWindow().setExitAfterLastTab(m_exitAfterLastTabCheckBox->isChecked()); s_settings->mainWindow().setRecentlyUsedCount(m_recentlyUsedCountSpinBox->value()); s_settings->mainWindow().setRecentlyClosedCount(m_recentlyClosedCountSpinBox->value()); s_settings->mainWindow().setFileToolBar(m_fileToolBarLineEdit->text().split(",", QString::SkipEmptyParts)); s_settings->mainWindow().setEditToolBar(m_editToolBarLineEdit->text().split(",", QString::SkipEmptyParts)); s_settings->mainWindow().setViewToolBar(m_viewToolBarLineEdit->text().split(",", QString::SkipEmptyParts)); s_settings->mainWindow().setDocumentContextMenu(m_documentContextMenuLineEdit->text().split(",", QString::SkipEmptyParts)); s_settings->mainWindow().setTabContextMenu(m_tabContextMenuLineEdit->text().split(",", QString::SkipEmptyParts)); s_settings->mainWindow().setScrollableMenus(m_scrollableMenusCheckBox->isChecked()); s_settings->mainWindow().setSearchableMenus(m_searchableMenusCheckBox->isChecked()); s_settings->mainWindow().setToggleToolAndMenuBarsWithFullscreen(m_toggleToolAndMenuBarsWithFullscreenCheckBox->isChecked()); s_settings->mainWindow().setUsePageLabel(m_usePageLabelCheckBox->isChecked()); s_settings->mainWindow().setDocumentTitleAsTabTitle(m_documentTitleAsTabTitleCheckBox->isChecked()); s_settings->mainWindow().setCurrentPageInWindowTitle(m_currentPageInWindowTitleCheckBox->isChecked()); s_settings->mainWindow().setInstanceNameInWindowTitle(m_instanceNameInWindowTitleCheckBox->isChecked()); s_settings->documentView().setHighlightCurrentThumbnail(m_highlightCurrentThumbnailCheckBox->isChecked()); s_settings->documentView().setLimitThumbnailsToResults(m_limitThumbnailsToResultsCheckBox->isChecked()); } void SettingsDialog::resetInterfaceTab() { m_extendedSearchDock->setChecked(Defaults::MainWindow::extendedSearchDock()); m_annotationOverlayCheckBox->setChecked(Defaults::PageItem::annotationOverlay()); m_formFieldOverlayCheckBox->setChecked(Defaults::PageItem::formFieldOverlay()); setCurrentIndexFromData(m_tabPositionComboBox, Defaults::MainWindow::tabPosition()); setCurrentIndexFromData(m_tabVisibilityComboBox, Defaults::MainWindow::tabVisibility()); m_spreadTabsCheckBox->setChecked(Defaults::MainWindow::spreadTabs()); m_newTabNextToCurrentTabCheckBox->setChecked(Defaults::MainWindow::newTabNextToCurrentTab()); m_exitAfterLastTabCheckBox->setChecked(Defaults::MainWindow::exitAfterLastTab()); m_recentlyUsedCountSpinBox->setValue(Defaults::MainWindow::recentlyUsedCount()); m_recentlyClosedCountSpinBox->setValue(Defaults::MainWindow::recentlyClosedCount()); m_fileToolBarLineEdit->setText(Defaults::MainWindow::fileToolBar().join(",")); m_editToolBarLineEdit->setText(Defaults::MainWindow::editToolBar().join(",")); m_viewToolBarLineEdit->setText(Defaults::MainWindow::viewToolBar().join(",")); m_documentContextMenuLineEdit->setText(Defaults::MainWindow::documentContextMenu().join(",")); m_tabContextMenuLineEdit->setText(Defaults::MainWindow::tabContexntMenu().join(",")); m_scrollableMenusCheckBox->setChecked(Defaults::MainWindow::scrollableMenus()); m_searchableMenusCheckBox->setChecked(Defaults::MainWindow::searchableMenus()); m_toggleToolAndMenuBarsWithFullscreenCheckBox->setChecked(Defaults::MainWindow::toggleToolAndMenuBarsWithFullscreen()); m_usePageLabelCheckBox->setChecked(Defaults::MainWindow::usePageLabel()); m_documentTitleAsTabTitleCheckBox->setChecked(Defaults::MainWindow::documentTitleAsTabTitle()); m_currentPageInWindowTitleCheckBox->setChecked(Defaults::MainWindow::currentPageInWindowTitle()); m_instanceNameInWindowTitleCheckBox->setChecked(Defaults::MainWindow::instanceNameInWindowTitle()); m_highlightCurrentThumbnailCheckBox->setChecked(Defaults::DocumentView::highlightCurrentThumbnail()); m_limitThumbnailsToResultsCheckBox->setChecked(Defaults::DocumentView::limitThumbnailsToResults()); } void SettingsDialog::createModifiersTab() { m_zoomModifiersComboBox = addModifiersComboBox(m_wheelModifiersLayout, tr("Zoom:"), QString(), s_settings->documentView().zoomModifiers()); m_rotateModifiersComboBox = addModifiersComboBox(m_wheelModifiersLayout, tr("Rotate:"), QString(), s_settings->documentView().rotateModifiers()); m_scrollModifiersComboBox = addModifiersComboBox(m_wheelModifiersLayout, tr("Scroll:"), QString(), s_settings->documentView().scrollModifiers()); m_copyToClipboardModifiersComboBox = addModifiersComboBox(m_buttonModifiersLayout, tr("Copy to clipboard:"), QString(), s_settings->pageItem().copyToClipboardModifiers()); m_addAnnotationModifiersComboBox = addModifiersComboBox(m_buttonModifiersLayout, tr("Add annotation:"), QString(), s_settings->pageItem().addAnnotationModifiers()); m_zoomToSelectionModifiersComboBox = addModifiersComboBox(m_buttonModifiersLayout, tr("Zoom to selection:"), QString(), s_settings->pageItem().zoomToSelectionModifiers()); m_openInSourceEditorModifiersComboBox = addModifiersComboBox(m_buttonModifiersLayout, tr("Open in source editor:"), QString(), s_settings->pageItem().openInSourceEditorModifiers()); #ifndef WITH_SYNCTEX m_openInSourceEditorModifiersComboBox->setEnabled(false); #endif // WITH_SYNCTEX } void SettingsDialog::acceptModifiersTab() { s_settings->documentView().setZoomModifiers(keyboardModifierFromCurrentIndex(m_zoomModifiersComboBox)); s_settings->documentView().setRotateModifiers(keyboardModifierFromCurrentIndex(m_rotateModifiersComboBox)); s_settings->documentView().setScrollModifiers(keyboardModifierFromCurrentIndex(m_scrollModifiersComboBox)); s_settings->pageItem().setCopyToClipboardModifiers(keyboardModifierFromCurrentIndex(m_copyToClipboardModifiersComboBox)); s_settings->pageItem().setAddAnnotationModifiers(keyboardModifierFromCurrentIndex(m_addAnnotationModifiersComboBox)); s_settings->pageItem().setZoomToSelectionModifiers(keyboardModifierFromCurrentIndex(m_zoomToSelectionModifiersComboBox)); s_settings->pageItem().setOpenInSourceEditorModifiers(keyboardModifierFromCurrentIndex(m_openInSourceEditorModifiersComboBox)); } void SettingsDialog::resetModifiersTab() { setCurrentIndexFromKeyboardModifiers(m_zoomModifiersComboBox, Defaults::DocumentView::zoomModifiers()); setCurrentIndexFromKeyboardModifiers(m_rotateModifiersComboBox, Defaults::DocumentView::rotateModifiers()); setCurrentIndexFromKeyboardModifiers(m_scrollModifiersComboBox, Defaults::DocumentView::scrollModifiers()); setCurrentIndexFromKeyboardModifiers(m_copyToClipboardModifiersComboBox, Defaults::PageItem::copyToClipboardModifiers()); setCurrentIndexFromKeyboardModifiers(m_addAnnotationModifiersComboBox, Defaults::PageItem::addAnnotationModifiers()); setCurrentIndexFromKeyboardModifiers(m_zoomToSelectionModifiersComboBox, Defaults::PageItem::zoomToSelectionModifiers()); setCurrentIndexFromKeyboardModifiers(m_openInSourceEditorModifiersComboBox, Defaults::PageItem::openInSourceEditorModifiers()); } QCheckBox* SettingsDialog::addCheckBox(QFormLayout* layout, const QString& label, const QString& toolTip, bool checked) { QCheckBox* checkBox = new QCheckBox(this); checkBox->setChecked(checked); checkBox->setToolTip(toolTip); layout->addRow(label, checkBox); return checkBox; } QLineEdit* SettingsDialog::addLineEdit(QFormLayout* layout, const QString& label, const QString& toolTip, const QString& text) { QLineEdit* lineEdit = new QLineEdit(this); lineEdit->setText(text); lineEdit->setToolTip(toolTip); layout->addRow(label, lineEdit); return lineEdit; } QSpinBox* SettingsDialog::addSpinBox(QFormLayout* layout, const QString& label, const QString& toolTip, const QString& suffix, const QString& special, int min, int max, int step, int val) { QSpinBox* spinBox = new QSpinBox(this); spinBox->setRange(min, max); spinBox->setSingleStep(step); spinBox->setValue(val); spinBox->setSuffix(suffix); spinBox->setSpecialValueText(special); spinBox->setToolTip(toolTip); layout->addRow(label, spinBox); return spinBox; } QDoubleSpinBox* SettingsDialog::addDoubleSpinBox(QFormLayout* layout, const QString& label, const QString& toolTip, const QString& suffix, const QString& special, double min, double max, double step, double val) { QDoubleSpinBox* spinBox = new QDoubleSpinBox(this); spinBox->setRange(min, max); spinBox->setSingleStep(step); spinBox->setValue(val); spinBox->setSuffix(suffix); spinBox->setSpecialValueText(special); spinBox->setToolTip(toolTip); layout->addRow(label, spinBox); return spinBox; } QComboBox* SettingsDialog::addComboBox(QFormLayout* layout, const QString& label, const QString& toolTip, const QStringList& text, const QList< int >& data, int value) { QComboBox* comboBox = new QComboBox(this); for(int index = 0, count = text.count(); index < count; ++index) { comboBox->addItem(text.at(index), data.at(index)); } setCurrentIndexFromData(comboBox, value); comboBox->setToolTip(toolTip); layout->addRow(label, comboBox); return comboBox; } QComboBox* SettingsDialog::addDataSizeComboBox(QFormLayout* layout, const QString& label, const QString& toolTip, int initialDataSize) { QComboBox* comboBox = new QComboBox(this); for(int dataSize = 8; dataSize <= 8192; dataSize *= 2) { comboBox->addItem(tr("%1 MB").arg(dataSize), dataSize * 1024); } int currentIndex = comboBox->findData(initialDataSize); if(currentIndex == -1) { currentIndex = comboBox->count(); comboBox->addItem(tr("%1 MB").arg(initialDataSize / 1024), initialDataSize); } comboBox->setCurrentIndex(currentIndex); comboBox->setToolTip(toolTip); layout->addRow(label, comboBox); return comboBox; } QComboBox* SettingsDialog::addColorComboBox(QFormLayout* layout, const QString& label, const QString& toolTip, const QColor& color) { QComboBox* comboBox = new QComboBox(this); comboBox->setEditable(true); comboBox->setInsertPolicy(QComboBox::NoInsert); comboBox->addItems(QColor::colorNames()); setCurrentTextToColorName(comboBox, color); comboBox->setToolTip(toolTip); layout->addRow(label, comboBox); return comboBox; } QComboBox* SettingsDialog::addModifiersComboBox(QFormLayout* layout, const QString& label, const QString& toolTip, Qt::KeyboardModifiers modifiers) { QComboBox* comboBox = new QComboBox(this); comboBox->addItem(QShortcut::tr("Shift"), static_cast< int >(Qt::ShiftModifier)); comboBox->addItem(QShortcut::tr("Ctrl"), static_cast< int >(Qt::ControlModifier)); comboBox->addItem(QShortcut::tr("Alt"), static_cast< int >(Qt::AltModifier)); comboBox->addItem(QShortcut::tr("Shift and Ctrl"), static_cast< int >(Qt::ShiftModifier | Qt::ControlModifier)); comboBox->addItem(QShortcut::tr("Shift and Alt"), static_cast< int >(Qt::ShiftModifier | Qt::AltModifier)); comboBox->addItem(QShortcut::tr("Ctrl and Alt"), static_cast< int >(Qt::ControlModifier | Qt::AltModifier)); comboBox->addItem(QShortcut::tr("Right mouse button"), static_cast< int >(Qt::RightButton)); comboBox->addItem(QShortcut::tr("Middle mouse button"), static_cast< int >(Qt::MidButton)); comboBox->addItem(QShortcut::tr("None"), static_cast< int >(Qt::NoModifier)); setCurrentIndexFromKeyboardModifiers(comboBox, modifiers); comboBox->setToolTip(toolTip); layout->addRow(label, comboBox); return comboBox; } } // qpdfview qpdfview-0.4.18/sources/settingsdialog.h0000644000000000000000000001457513516127411016450 0ustar 00000000000000/* Copyright 2015 S. Razi Alavizadeh Copyright 2012-2015 Adam Reichold Copyright 2012 Alexander Volkov This file is part of qpdfview. qpdfview is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. qpdfview is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with qpdfview. If not, see . */ #ifndef SETTINGSDIALOG_H #define SETTINGSDIALOG_H #include class QCheckBox; class QComboBox; class QDialogButtonBox; class QDoubleSpinBox; class QFormLayout; class QGroupBox; class QLineEdit; class QSpinBox; class QTableView; class QTabWidget; namespace qpdfview { class Settings; class SettingsWidget; class SettingsDialog : public QDialog { Q_OBJECT public: SettingsDialog(QWidget* parent = 0); ~SettingsDialog(); public slots: void accept(); void reset(); void resetCurrentTab(); private: Q_DISABLE_COPY(SettingsDialog) static Settings* s_settings; QTabWidget* m_graphicsTabWidget; QFormLayout* m_graphicsLayout; SettingsWidget* m_pdfSettingsWidget; SettingsWidget* m_psSettingsWidget; SettingsWidget* m_djvuSettingsWidget; QTableView* m_shortcutsTableView; QTabWidget* m_tabWidget; QDialogButtonBox* m_dialogButtonBox; QPushButton* m_defaultsButton; QPushButton* m_defaultsOnCurrentTabButton; QFormLayout* m_behaviorLayout; QFormLayout* m_interfaceLayout; QGroupBox* m_wheelModifiersGroupBox; QFormLayout* m_wheelModifiersLayout; QGroupBox* m_buttonModifiersGroupBox; QFormLayout* m_buttonModifiersLayout; // behavior QCheckBox* m_openUrlCheckBox; QCheckBox* m_autoRefreshCheckBox; QCheckBox* m_trackRecentlyUsedCheckBox; QCheckBox* m_keepRecentlyClosedCheckBox; QCheckBox* m_restoreTabsCheckBox; QCheckBox* m_restoreBookmarksCheckBox; QCheckBox* m_restorePerFileSettingsCheckBox; QSpinBox* m_saveDatabaseInterval; QCheckBox* m_synchronizePresentationCheckBox; QSpinBox* m_presentationScreenSpinBox; QCheckBox* m_synchronizeOutlineViewCheckBox; QCheckBox* m_synchronizeSplitViewsCheckBox; QCheckBox* m_minimalScrollingCheckBox; QDoubleSpinBox* m_zoomFactorSpinBox; QCheckBox* m_parallelSearchExecutionCheckBox; QSpinBox* m_highlightDurationSpinBox; QComboBox* m_highlightColorComboBox; QComboBox* m_annotationColorComboBox; QLineEdit* m_sourceEditorLineEdit; void createBehaviorTab(); void acceptBehaivorTab(); void resetBehaviorTab(); // graphics QCheckBox* m_useTilingCheckBox; QCheckBox* m_keepObsoletePixmapsCheckBox; QCheckBox* m_useDevicePixelRatioCheckBox; QCheckBox* m_decoratePagesCheckBox; QCheckBox* m_decorateLinksCheckBox; QCheckBox* m_decorateFormFieldsCheckBox; QComboBox* m_backgroundColorComboBox; QComboBox* m_paperColorComboBox; QComboBox* m_presentationBackgroundColorComboBox; QSpinBox* m_pagesPerRowSpinBox; QDoubleSpinBox* m_pageSpacingSpinBox; QDoubleSpinBox* m_thumbnailSpacingSpinBox; QDoubleSpinBox* m_thumbnailSizeSpinBox; QComboBox* m_cacheSizeComboBox; QCheckBox* m_prefetchCheckBox; QSpinBox* m_prefetchDistanceSpinBox; void createGraphicsTab(); void acceptGraphicsTab(); void resetGraphicsTab(); // interface QCheckBox* m_extendedSearchDock; QCheckBox* m_annotationOverlayCheckBox; QCheckBox* m_formFieldOverlayCheckBox; QComboBox* m_tabPositionComboBox; QComboBox* m_tabVisibilityComboBox; QCheckBox* m_spreadTabsCheckBox; QCheckBox* m_newTabNextToCurrentTabCheckBox; QCheckBox* m_exitAfterLastTabCheckBox; QSpinBox* m_recentlyUsedCountSpinBox; QSpinBox* m_recentlyClosedCountSpinBox; QLineEdit* m_fileToolBarLineEdit; QLineEdit* m_editToolBarLineEdit; QLineEdit* m_viewToolBarLineEdit; QLineEdit* m_documentContextMenuLineEdit; QLineEdit* m_tabContextMenuLineEdit; QCheckBox* m_scrollableMenusCheckBox; QCheckBox* m_searchableMenusCheckBox; QCheckBox* m_toggleToolAndMenuBarsWithFullscreenCheckBox; QCheckBox* m_usePageLabelCheckBox; QCheckBox* m_documentTitleAsTabTitleCheckBox; QCheckBox* m_currentPageInWindowTitleCheckBox; QCheckBox* m_instanceNameInWindowTitleCheckBox; QCheckBox* m_highlightCurrentThumbnailCheckBox; QCheckBox* m_limitThumbnailsToResultsCheckBox; void createInterfaceTab(); void acceptInterfaceTab(); void resetInterfaceTab(); // modifiers QComboBox* m_zoomModifiersComboBox; QComboBox* m_rotateModifiersComboBox; QComboBox* m_scrollModifiersComboBox; QComboBox* m_copyToClipboardModifiersComboBox; QComboBox* m_addAnnotationModifiersComboBox; QComboBox* m_zoomToSelectionModifiersComboBox; QComboBox* m_openInSourceEditorModifiersComboBox; void createModifiersTab(); void acceptModifiersTab(); void resetModifiersTab(); // helper methods QCheckBox* addCheckBox(QFormLayout* layout, const QString& label, const QString& toolTip, bool checked); QLineEdit* addLineEdit(QFormLayout* layout, const QString& label, const QString& toolTip, const QString& text); QSpinBox* addSpinBox(QFormLayout* layout, const QString& label, const QString& toolTip, const QString& suffix, const QString& special, int min, int max, int step, int val); QDoubleSpinBox* addDoubleSpinBox(QFormLayout* layout, const QString& label, const QString& toolTip, const QString& suffix, const QString& special, double min, double max, double step, double val); QComboBox* addComboBox(QFormLayout* layout, const QString& label, const QString& toolTip, const QStringList& text, const QList< int >& data, int value); QComboBox* addDataSizeComboBox(QFormLayout* layout, const QString& label, const QString& toolTip, int initialDataSize); QComboBox* addColorComboBox(QFormLayout* layout, const QString& label, const QString& toolTip, const QColor& color); QComboBox* addModifiersComboBox(QFormLayout* layout, const QString& label, const QString& toolTip, Qt::KeyboardModifiers modifiers); }; } // qpdfview #endif // SETTINGSDIALOG_H qpdfview-0.4.18/sources/shortcuthandler.cpp0000644000000000000000000001763413516127411017173 0ustar 00000000000000/* Copyright 2013, 2016 Adam Reichold This file is part of qpdfview. qpdfview is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. qpdfview is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with qpdfview. If not, see . */ #include "shortcuthandler.h" #include #include #include "documentview.h" namespace { QList< QKeySequence > toShortcuts(const QStringList& stringList) { QList< QKeySequence > shortcuts; foreach(const QString& string, stringList) { QKeySequence shortcut(string.trimmed()); if(!shortcut.isEmpty()) { shortcuts.append(shortcut); } } return shortcuts; } QStringList toStringList(const QList< QKeySequence >& shortcuts, QKeySequence::SequenceFormat format = QKeySequence::PortableText) { QStringList stringList; foreach(const QKeySequence& shortcut, shortcuts) { stringList.append(shortcut.toString(format)); } return stringList; } inline bool matches(const QKeySequence& keySequence, const QList< QKeySequence >& shortcuts) { foreach(const QKeySequence& shortcut, shortcuts) { if(keySequence.matches(shortcut) == QKeySequence::ExactMatch) { return true; } } return false; } } // anonymous namespace qpdfview { ShortcutHandler* ShortcutHandler::s_instance = 0; ShortcutHandler* ShortcutHandler::instance() { if(s_instance == 0) { s_instance = new ShortcutHandler(qApp); } return s_instance; } ShortcutHandler::~ShortcutHandler() { s_instance = 0; } void ShortcutHandler::registerAction(QAction* action) { Q_ASSERT(!action->objectName().isEmpty()); const QList< QKeySequence > defaultShortcuts = action->shortcuts(); const QList< QKeySequence > shortcuts = toShortcuts(m_settings->value(action->objectName(), toStringList(defaultShortcuts)).toStringList()); action->setShortcuts(shortcuts); m_actions.append(action); m_shortcuts.insert(action, shortcuts); m_defaultShortcuts.insert(action, defaultShortcuts); } int ShortcutHandler::columnCount(const QModelIndex& parent) const { Q_UNUSED(parent); return 2; } int ShortcutHandler::rowCount(const QModelIndex& parent) const { Q_UNUSED(parent); return m_actions.count(); } Qt::ItemFlags ShortcutHandler::flags(const QModelIndex& index) const { switch(index.column()) { case 0: return Qt::ItemIsEnabled; case 1: return Qt::ItemIsEnabled | Qt::ItemIsEditable; } return Qt::NoItemFlags; } QVariant ShortcutHandler::headerData(int section, Qt::Orientation orientation, int role) const { Q_UNUSED(orientation); if(role == Qt::DisplayRole) { switch(section) { case 0: return tr("Action"); case 1: return tr("Key sequence"); } } return QVariant(); } QVariant ShortcutHandler::data(const QModelIndex& index, int role) const { if((role == Qt::DisplayRole || role == Qt::EditRole) && index.row() >= 0 && index.row() < m_actions.count()) { QAction* action = m_actions.at(index.row()); switch(index.column()) { case 0: return action->text().remove(QLatin1Char('&')); case 1: return toStringList(m_shortcuts.value(action), QKeySequence::NativeText).join(";"); } } return QVariant(); } bool ShortcutHandler::setData(const QModelIndex& index, const QVariant& value, int role) { if(role == Qt::EditRole && index.column() == 1 && index.row() >= 0 && index.row() < m_actions.count()) { QList< QKeySequence > shortcuts = toShortcuts(value.toString().split(";", QString::SkipEmptyParts)); if(!shortcuts.isEmpty() || value.toString().isEmpty()) { m_shortcuts.insert(m_actions.at(index.row()), shortcuts); emit dataChanged(index, index); return true; } } return false; } bool ShortcutHandler::matchesSkipBackward(const QKeySequence& keySequence) const { return matches(keySequence, m_skipBackwardAction->shortcuts()); } bool ShortcutHandler::matchesSkipForward(const QKeySequence& keySequence) const { return matches(keySequence, m_skipForwardAction->shortcuts()); } bool ShortcutHandler::matchesMoveUp(const QKeySequence& keySequence) const { return matches(keySequence, m_moveUpAction->shortcuts()); } bool ShortcutHandler::matchesMoveDown(const QKeySequence& keySequence) const { return matches(keySequence, m_moveDownAction->shortcuts()); } bool ShortcutHandler::matchesMoveLeft(const QKeySequence& keySequence) const { return matches(keySequence, m_moveLeftAction->shortcuts()); } bool ShortcutHandler::matchesMoveRight(const QKeySequence& keySequence) const { return matches(keySequence, m_moveRightAction->shortcuts()); } bool ShortcutHandler::submit() { for(Shortcuts::iterator iterator = m_shortcuts.begin(); iterator != m_shortcuts.end(); ++iterator) { iterator.key()->setShortcuts(iterator.value()); } foreach(const QAction* action, m_actions) { m_settings->setValue(action->objectName(), toStringList(action->shortcuts())); } return true; } void ShortcutHandler::revert() { for(Shortcuts::iterator iterator = m_shortcuts.begin(); iterator != m_shortcuts.end(); ++iterator) { iterator.value() = iterator.key()->shortcuts(); } } void ShortcutHandler::reset() { for(Shortcuts::iterator iterator = m_defaultShortcuts.begin(); iterator != m_defaultShortcuts.end(); ++iterator) { m_shortcuts.insert(iterator.key(), iterator.value()); } emit dataChanged(createIndex(0, 1), createIndex(m_actions.count(), 1)); } ShortcutHandler::ShortcutHandler(QObject* parent) : QAbstractTableModel(parent), m_settings(new QSettings("qpdfview", "shortcuts", this)), m_actions(), m_shortcuts(), m_defaultShortcuts() { m_skipBackwardAction = createAction( tr("Skip backward"), QLatin1String("skipBackward"), QList< QKeySequence >() << QKeySequence(Qt::Key_PageUp) << QKeySequence(Qt::KeypadModifier + Qt::Key_PageUp)); m_skipForwardAction = createAction( tr("Skip forward"), QLatin1String("skipForward"), QList< QKeySequence >() << QKeySequence(Qt::Key_PageDown) << QKeySequence(Qt::KeypadModifier + Qt::Key_PageDown)); m_moveUpAction = createAction( tr("Move up"), QLatin1String("moveUp"), QList< QKeySequence >() << QKeySequence(Qt::Key_Up) << QKeySequence(Qt::KeypadModifier + Qt::Key_Up)); m_moveDownAction = createAction( tr("Move down"), QLatin1String("moveDown"), QList< QKeySequence >() << QKeySequence(Qt::Key_Down) << QKeySequence(Qt::KeypadModifier + Qt::Key_Down)); m_moveLeftAction = createAction( tr("Move left"), QLatin1String("moveLeft"), QList< QKeySequence >() << QKeySequence(Qt::Key_Left) << QKeySequence(Qt::KeypadModifier + Qt::Key_Left)); m_moveRightAction = createAction( tr("Move right"), QLatin1String("moveRight"), QList< QKeySequence >() << QKeySequence(Qt::Key_Right) << QKeySequence(Qt::KeypadModifier + Qt::Key_Right)); } QAction* ShortcutHandler::createAction(const QString& text, const QString& objectName, const QList& shortcuts) { QAction* action = new QAction(text, this); action->setObjectName(objectName); action->setShortcuts(shortcuts); registerAction(action); return action; } } // qpdfview qpdfview-0.4.18/sources/shortcuthandler.h0000644000000000000000000000477713516127411016644 0ustar 00000000000000/* Copyright 2013, 2016 Adam Reichold This file is part of qpdfview. qpdfview is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. qpdfview is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with qpdfview. If not, see . */ #ifndef SHORTCUTHANDLER_H #define SHORTCUTHANDLER_H #include #include #include class QSettings; namespace qpdfview { class ShortcutHandler : public QAbstractTableModel { Q_OBJECT public: static ShortcutHandler* instance(); ~ShortcutHandler(); void registerAction(QAction* action); int columnCount(const QModelIndex& parent) const; int rowCount(const QModelIndex& parent) const; Qt::ItemFlags flags(const QModelIndex& index) const; QVariant headerData(int section, Qt::Orientation orientation, int role) const; QVariant data(const QModelIndex& index, int role) const; bool setData(const QModelIndex& index, const QVariant& value, int role); bool matchesSkipBackward(const QKeySequence& keySequence) const; bool matchesSkipForward(const QKeySequence& keySequence) const; bool matchesMoveUp(const QKeySequence& keySequence) const; bool matchesMoveDown(const QKeySequence& keySequence) const; bool matchesMoveLeft(const QKeySequence& keySequence) const; bool matchesMoveRight(const QKeySequence& keySequence) const; public slots: bool submit(); void revert(); void reset(); private: Q_DISABLE_COPY(ShortcutHandler) static ShortcutHandler* s_instance; ShortcutHandler(QObject* parent = 0); QSettings* m_settings; QList< QAction* > m_actions; typedef QHash< QAction*, QList< QKeySequence > > Shortcuts; Shortcuts m_shortcuts; Shortcuts m_defaultShortcuts; QAction* m_skipBackwardAction; QAction* m_skipForwardAction; QAction* m_moveUpAction; QAction* m_moveDownAction; QAction* m_moveLeftAction; QAction* m_moveRightAction; QAction* createAction(const QString& text, const QString& objectName, const QList< QKeySequence >& shortcuts); }; } // qpdfview #endif // SHORTCUTHANDLER_H qpdfview-0.4.18/sources/signalhandler.cpp0000644000000000000000000000427613516127411016573 0ustar 00000000000000/* Copyright 2013, 2015 Adam Reichold This file is part of qpdfview. qpdfview is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. qpdfview is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with qpdfview. If not, see . */ #include "signalhandler.h" #include #include #include #include namespace qpdfview { int SignalHandler::s_sockets[2]; bool SignalHandler::prepareSignals() { if(socketpair(AF_UNIX, SOCK_STREAM, 0, s_sockets) != 0) { return false; } struct sigaction sigAction; sigAction.sa_handler = SignalHandler::handleSignals; sigemptyset(&sigAction.sa_mask); sigAction.sa_flags = SA_RESTART; if(sigaction(SIGINT, &sigAction, 0) != 0) { close(s_sockets[0]); close(s_sockets[1]); return false; } if(sigaction(SIGTERM, &sigAction, 0) != 0) { close(s_sockets[0]); close(s_sockets[1]); return false; } return true; } SignalHandler::SignalHandler(QObject* parent) : QObject(parent), m_socketNotifier(0) { m_socketNotifier = new QSocketNotifier(s_sockets[1], QSocketNotifier::Read, this); connect(m_socketNotifier, SIGNAL(activated(int)), SLOT(on_socketNotifier_activated())); } void SignalHandler::on_socketNotifier_activated() { m_socketNotifier->setEnabled(false); int sigNumber = 0; Q_UNUSED(read(s_sockets[1], &sigNumber, sizeof(int))); switch(sigNumber) { case SIGINT: emit sigIntReceived(); break; case SIGTERM: emit sigTermReceived(); break; } m_socketNotifier->setEnabled(true); } void SignalHandler::handleSignals(int sigNumber) { Q_UNUSED(write(s_sockets[0], &sigNumber, sizeof(int))); } } // qpdfview qpdfview-0.4.18/sources/signalhandler.h0000644000000000000000000000235313516127411016232 0ustar 00000000000000/* Copyright 2013 Adam Reichold This file is part of qpdfview. qpdfview is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. qpdfview is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with qpdfview. If not, see . */ #ifndef SIGNALHANDLER_H #define SIGNALHANDLER_H #include class QSocketNotifier; namespace qpdfview { class SignalHandler : public QObject { Q_OBJECT public: static bool prepareSignals(); explicit SignalHandler(QObject* parent = 0); signals: void sigIntReceived(); void sigTermReceived(); private slots: void on_socketNotifier_activated(); private: Q_DISABLE_COPY(SignalHandler) static int s_sockets[2]; static void handleSignals(int sigNumber); QSocketNotifier* m_socketNotifier; }; } // qpdfview #endif // SIGNALHANDLER_H qpdfview-0.4.18/sources/thumbnailitem.cpp0000644000000000000000000001106513516127411016614 0ustar 00000000000000/* Copyright 2014 Adam Reichold This file is part of qpdfview. qpdfview is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. qpdfview is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with qpdfview. If not, see . */ #include "thumbnailitem.h" #include #include #include #include namespace qpdfview { ThumbnailItem::ThumbnailItem(Model::Page* page, const QString& text, int index, QGraphicsItem* parent) : PageItem(page, index, PageItem::ThumbnailMode, parent), m_text(text), m_isHighlighted(false) { setAcceptHoverEvents(false); prepareToolTip(); } QRectF ThumbnailItem::boundingRect() const { return PageItem::boundingRect().adjusted(0.0, 0.0, 0.0, textHeight()); } void ThumbnailItem::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) { const QRectF boundingRect = PageItem::boundingRect(); painter->save(); painter->setClipping(true); painter->setClipRect(boundingRect); PageItem::paint(painter, option, widget); painter->restore(); #if QT_VERSION >= QT_VERSION_CHECK(4,7,0) const QSizeF textSize = m_text.size(); QPointF pos = boundingRect.bottomLeft(); pos.rx() += 0.5 * (boundingRect.width() - textSize.width()); pos.ry() += 0.5 * textSize.height(); painter->drawStaticText(pos, m_text); #else const QFontMetrics fontMetrics = QFontMetrics(QFont()); QPointF pos = boundingRect.bottomLeft(); pos.rx() += 0.5 * (boundingRect.width() - fontMetrics.width(m_text)); pos.ry() += fontMetrics.height(); painter->drawText(pos, m_text); #endif // QT_VERSION if(m_isHighlighted) { painter->save(); painter->setCompositionMode(QPainter::CompositionMode_Multiply); painter->fillRect(boundingRect, widget->palette().highlight()); painter->restore(); } } qreal ThumbnailItem::textHeight() const { #if QT_VERSION >= QT_VERSION_CHECK(4,7,0) return 2.0 * m_text.size().height(); #else return 2.0 * QFontMetrics(QFont()).height(); #endif // QT_VERSION } void ThumbnailItem::setHighlighted(bool highlighted) { if(m_isHighlighted != highlighted) { m_isHighlighted = highlighted; update(); } } void ThumbnailItem::mousePressEvent(QGraphicsSceneMouseEvent* event) { if(event->modifiers() == Qt::NoModifier && (event->button() == Qt::LeftButton || event->button() == Qt::MidButton)) { emit linkClicked(event->button() == Qt::MidButton, index() + 1); event->accept(); return; } event->ignore(); } void ThumbnailItem::mouseDoubleClickEvent(QGraphicsSceneMouseEvent*) { } void ThumbnailItem::mouseMoveEvent(QGraphicsSceneMouseEvent*) { } void ThumbnailItem::mouseReleaseEvent(QGraphicsSceneMouseEvent*) { } void ThumbnailItem::contextMenuEvent(QGraphicsSceneContextMenuEvent*) { } void ThumbnailItem::prepareToolTip() { const qreal width = size().width() / 72.0 * 25.4; const qreal height = size().height() / 72.0 * 25.4; const qreal longEdge = qMax(width, height); const qreal shortEdge = qMin(width, height); QString paperSize; if(qAbs(longEdge - 279.4) <= 1.0 && qAbs(shortEdge - 215.9) <= 1.0) { paperSize = QLatin1String(" (Letter)"); } else { qreal longEdgeA = 1189.0; qreal shortEdgeA = 841.0; qreal longEdgeB = 1414.0; qreal shortEdgeB = 1000.0; for(int size = 0; size <= 10; ++size) { if(qAbs(longEdge - longEdgeA) <= 1.0 && qAbs(shortEdge - shortEdgeA) <= 1.0) { paperSize = QString(" (A%1)").arg(size); break; } else if(qAbs(longEdge - longEdgeB) <= 1.0 && qAbs(shortEdge - shortEdgeB) <= 1.0) { paperSize = QString(" (B%1)").arg(size); break; } longEdgeA = shortEdgeA; shortEdgeA /= qSqrt(2.0); longEdgeB = shortEdgeB; shortEdgeB /= qSqrt(2.0); } } setToolTip(QString("%1 mm x %2 mm%3").arg(width, 0, 'f', 1).arg(height, 0, 'f', 1).arg(paperSize)); } } // qpdfview qpdfview-0.4.18/sources/thumbnailitem.h0000644000000000000000000000421013516127411016253 0ustar 00000000000000/* Copyright 2014 Adam Reichold This file is part of qpdfview. qpdfview is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. qpdfview is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with qpdfview. If not, see . */ #ifndef THUMBNAILITEM_H #define THUMBNAILITEM_H #include #if QT_VERSION >= QT_VERSION_CHECK(4,7,0) #include #endif // QT_VERSION #include "pageitem.h" namespace qpdfview { namespace Model { class Page; } class ThumbnailItem : public PageItem { Q_OBJECT public: ThumbnailItem(Model::Page* page, const QString& text, int index, QGraphicsItem* parent = 0); QRectF boundingRect() const; void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget); #if QT_VERSION >= QT_VERSION_CHECK(4,7,0) QString text() const { return m_text.text(); } void setText(const QString& text) { m_text.setText(text); } #else const QString& text() const { return m_text; } void setText(const QString& text) { m_text = text; } #endif // QT_VERSION qreal textHeight() const; bool isHighlighted() const { return m_isHighlighted; } void setHighlighted(bool highlighted); protected: void mousePressEvent(QGraphicsSceneMouseEvent* event); void mouseDoubleClickEvent(QGraphicsSceneMouseEvent*); void mouseMoveEvent(QGraphicsSceneMouseEvent*); void mouseReleaseEvent(QGraphicsSceneMouseEvent*); void contextMenuEvent(QGraphicsSceneContextMenuEvent*); private: Q_DISABLE_COPY(ThumbnailItem) #if QT_VERSION >= QT_VERSION_CHECK(4,7,0) QStaticText m_text; #else QString m_text; #endif // QT_VERSION bool m_isHighlighted; void prepareToolTip(); }; } // qpdfview #endif // THUMBNAILITEM_H qpdfview-0.4.18/sources/tileitem.cpp0000644000000000000000000001376513516127411015577 0ustar 00000000000000/* Copyright 2012-2014 Adam Reichold This file is part of qpdfview. qpdfview is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. qpdfview is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with qpdfview. If not, see . */ #include "tileitem.h" #include #include "settings.h" #include "pageitem.h" namespace qpdfview { namespace { inline int cacheCost(const QPixmap& pixmap) { return qMax(1, pixmap.width() * pixmap.height() * pixmap.depth() / 8 / 1024); } } // anonymous Settings* TileItem::s_settings = 0; QCache< TileItem::CacheKey, TileItem::CacheObject > TileItem::s_cache; TileItem::TileItem(PageItem* page) : RenderTaskParent(), m_page(page), m_rect(), m_cropRect(), m_pixmapError(false), m_pixmap(), m_obsoletePixmap(), m_deleteAfterRender(false), m_renderTask(m_page->m_page, this) { if(s_settings == 0) { s_settings = Settings::instance(); } s_cache.setMaxCost(s_settings->pageItem().cacheSize()); } TileItem::~TileItem() { m_renderTask.cancel(true); m_renderTask.wait(); } void TileItem::setCropRect(const QRectF& cropRect) { if(!m_page->m_renderParam.trimMargins()) { return; } if(m_cropRect.isNull() && !cropRect.isNull()) { m_cropRect = cropRect; m_page->updateCropRect(); } } void TileItem::dropCachedPixmaps(PageItem* page) { foreach(const CacheKey& key, s_cache.keys()) { if(key.first == page) { s_cache.remove(key); } } } bool TileItem::paint(QPainter* painter, QPointF topLeft) { const QPixmap& pixmap = takePixmap(); if(!pixmap.isNull()) { // pixmap painter->drawPixmap(m_rect.topLeft() + topLeft, pixmap); return true; } else if(!m_obsoletePixmap.isNull()) { // obsolete pixmap painter->drawPixmap(QRectF(m_rect).translated(topLeft), m_obsoletePixmap, QRectF()); return false; } else { const qreal iconExtent = qMin(0.1 * m_rect.width(), 0.1 * m_rect.height()); const QRect iconRect(topLeft.x() + m_rect.left() + 0.01 * m_rect.width(), topLeft.y() + m_rect.top() + 0.01 * m_rect.height(), iconExtent, iconExtent); if(!m_pixmapError) { // progress icon s_settings->pageItem().progressIcon().paint(painter, iconRect); return false; } else { // error icon s_settings->pageItem().errorIcon().paint(painter, iconRect); return true; } } } void TileItem::refresh(bool keepObsoletePixmaps) { if(keepObsoletePixmaps && s_settings->pageItem().keepObsoletePixmaps()) { if(const CacheObject* object = s_cache.object(cacheKey())) { m_obsoletePixmap = object->first; } } else { m_obsoletePixmap = QPixmap(); } if(!keepObsoletePixmaps) { m_cropRect = QRectF(); } m_renderTask.cancel(true); m_pixmapError = false; m_pixmap = QPixmap(); } int TileItem::startRender(bool prefetch) { m_page->startLoadInteractiveElements(); if(m_pixmapError || m_renderTask.isRunning() || (prefetch && s_cache.contains(cacheKey()))) { return 0; } m_renderTask.start(m_page->m_renderParam, m_rect, prefetch); return 1; } void TileItem::cancelRender() { m_renderTask.cancel(); m_pixmap = QPixmap(); m_obsoletePixmap = QPixmap(); } void TileItem::deleteAfterRender() { if(!m_renderTask.isRunning()) { m_renderTask.deleteParentLater(); } else { m_renderTask.cancel(true); m_deleteAfterRender = true; } } void TileItem::on_finished(const RenderParam& renderParam, const QRect& rect, bool prefetch, const QImage& image, const QRectF& cropRect) { if(m_page->m_renderParam != renderParam || m_rect != rect) { on_finishedOrCanceled(); return; } m_obsoletePixmap = QPixmap(); if(image.isNull()) { m_pixmapError = true; on_finishedOrCanceled(); return; } if(prefetch && !m_renderTask.wasCanceledForcibly()) { const QPixmap pixmap = QPixmap::fromImage(image); s_cache.insert(cacheKey(), new CacheObject(pixmap, cropRect), cacheCost(pixmap)); setCropRect(cropRect); } else if(!m_renderTask.wasCanceled()) { m_pixmap = QPixmap::fromImage(image); setCropRect(cropRect); } on_finishedOrCanceled(); } void TileItem::on_canceled() { on_finishedOrCanceled(); } void TileItem::on_finishedOrCanceled() { if(m_deleteAfterRender) { m_renderTask.deleteParentLater(); } else if(!m_page->useTiling() || m_page->m_exposedTileItems.contains(this)) { m_page->update(); } } inline TileItem::CacheKey TileItem::cacheKey() const { QByteArray key; QDataStream stream(&key, QIODevice::WriteOnly); stream << m_page->m_renderParam << m_rect; return qMakePair(m_page, key); } QPixmap TileItem::takePixmap() { const CacheKey key = cacheKey(); if(const CacheObject* object = s_cache.object(key)) { m_obsoletePixmap = QPixmap(); setCropRect(object->second); return object->first; } QPixmap pixmap; if(!m_pixmap.isNull()) { s_cache.insert(key, new CacheObject(m_pixmap, m_cropRect), cacheCost(m_pixmap)); pixmap = m_pixmap; } else { startRender(); } return pixmap; } } // qpdfview qpdfview-0.4.18/sources/tileitem.h0000644000000000000000000000444313516127411015235 0ustar 00000000000000/* Copyright 2014 Adam Reichold This file is part of qpdfview. qpdfview is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. qpdfview is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with qpdfview. If not, see . */ #ifndef TILEITEM_H #define TILEITEM_H #include #include #include #include "rendertask.h" namespace qpdfview { class PageItem; class TileItem : public RenderTaskParent { public: TileItem(PageItem* page); ~TileItem(); const QRect& rect() const { return m_rect; } void setRect(QRect rect) { m_rect = rect; } const QRectF& cropRect() const { return m_cropRect; } void resetCropRect() { m_cropRect = QRectF(); } void setCropRect(const QRectF& cropRect); void dropPixmap() { m_pixmap = QPixmap(); } void dropObsoletePixmap() { m_obsoletePixmap = QPixmap(); } static void dropCachedPixmaps(PageItem* page); bool paint(QPainter* painter, QPointF topLeft); public: void refresh(bool keepObsoletePixmaps = false); int startRender(bool prefetch = false); void cancelRender(); void deleteAfterRender(); private: void on_finished(const RenderParam& renderParam, const QRect& rect, bool prefetch, const QImage& image, const QRectF& cropRect); void on_canceled(); void on_finishedOrCanceled(); private: Q_DISABLE_COPY(TileItem) static Settings* s_settings; typedef QPair< PageItem*, QByteArray > CacheKey; typedef QPair< QPixmap, QRectF > CacheObject; static QCache< CacheKey, CacheObject > s_cache; CacheKey cacheKey() const; PageItem* m_page; QRect m_rect; QRectF m_cropRect; bool m_pixmapError; QPixmap m_pixmap; QPixmap m_obsoletePixmap; QPixmap takePixmap(); bool m_deleteAfterRender; RenderTask m_renderTask; }; } // qpdfview #endif // PAGEITEM_H qpdfview-0.4.18/synctex/synctex_parser.c0000644000000000000000000050312613516127411016501 0ustar 00000000000000/* Copyright (c) 2008, 2009, 2010 , 2011 jerome DOT laurens AT u-bourgogne DOT fr This file is part of the SyncTeX package. Latest Revision: Tue Jun 14 08:23:30 UTC 2011 Version: 1.18 See synctex_parser_readme.txt for more details License: -------- Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE Except as contained in this notice, the name of the copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from the copyright holder. Acknowledgments: ---------------- The author received useful remarks from the pdfTeX developers, especially Hahn The Thanh, and significant help from XeTeX developer Jonathan Kew Nota Bene: ---------- If you include or use a significant part of the synctex package into a software, I would appreciate to be listed as contributor and see "SyncTeX" highlighted. Version 1 Thu Jun 19 09:39:21 UTC 2008 */ /* We assume that high level application like pdf viewers will want * to embed this code as is. We assume that they also have locale.h and setlocale. * For other tools such as TeXLive tools, you must define SYNCTEX_USE_LOCAL_HEADER, * when building. You also have to create and customize synctex_parser_local.h to fit your system. * In particular, the HAVE_LOCALE_H and HAVE_SETLOCALE macros should be properly defined. * With this design, you should not need to edit this file. */ # if defined(SYNCTEX_USE_LOCAL_HEADER) # include "synctex_parser_local.h" # else # define HAVE_LOCALE_H 1 # define HAVE_SETLOCALE 1 # if defined(_MSC_VER) # define SYNCTEX_INLINE __inline # else # define SYNCTEX_INLINE inline # endif # endif #include #include #include #include #include #if defined(HAVE_LOCALE_H) #include #endif /* The data is organized in a graph with multiple entries. * The root object is a scanner, it is created with the contents on a synctex file. * Each leaf of the tree is a synctex_node_t object. * There are 3 subtrees, two of them sharing the same leaves. * The first tree is the list of input records, where input file names are associated with tags. * The second tree is the box tree as given by TeX when shipping pages out. * First level objects are sheets, containing boxes, glues, kerns... * The third tree allows to browse leaves according to tag and line. */ #include "synctex_parser.h" #include "synctex_parser_utils.h" /* These are the possible extensions of the synctex file */ const char * synctex_suffix = ".synctex"; const char * synctex_suffix_gz = ".gz"; /* each synctex node has a class */ typedef struct __synctex_class_t _synctex_class_t; typedef _synctex_class_t * synctex_class_t; /* synctex_node_t is a pointer to a node * _synctex_node is the target of the synctex_node_t pointer * It is a pseudo object oriented program. * class is a pointer to the class object the node belongs to. * implementation is meant to contain the private data of the node * basically, there are 2 kinds of information: navigation information and * synctex information. Both will depend on the type of the node, * thus different nodes will have different private data. * There is no inheritancy overhead. */ typedef union _synctex_info_t { int INT; char * PTR; } synctex_info_t; # if defined(SYNCTEX_USE_CHARINDEX) # define SYNCTEX_DECLARE_CHARINDEX synctex_charindex_t char_index; # define SYNCTEX_CHARINDEX(NODE) (NODE->char_index) # define SYNCTEX_PRINT_CHARINDEX printf("#%i\n",SYNCTEX_CHARINDEX(node)) # define SYNCTEX_DECLARE_CHAR_OFFSET synctex_charindex_t charindex_offset # define SYNCTEX_IMPLEMENT_CHARINDEX(NODE,CORRECTION) NODE->char_index = (synctex_charindex_t)(scanner->charindex_offset+SYNCTEX_CUR-SYNCTEX_START+(CORRECTION)); # else # define SYNCTEX_DECLARE_CHARINDEX # define SYNCTEX_CHARINDEX(NODE) 0 # define SYNCTEX_PRINT_CHARINDEX printf("\n") # define SYNCTEX_DECLARE_CHAR_OFFSET synctex_charindex_t charindex_offset # define SYNCTEX_IMPLEMENT_CHARINDEX(NODE,CORRECTION) # endif struct _synctex_node { SYNCTEX_DECLARE_CHARINDEX synctex_class_t class; synctex_info_t * implementation; }; /* Each node of the tree, except the scanner itself belongs to a class. * The class object is just a struct declaring the owning scanner * This is a pointer to the scanner as root of the tree. * The type is used to identify the kind of node. * The class declares pointers to a creator and a destructor method. * The log and display fields are used to log and display the node. * display will also display the child, sibling and parent sibling. * parent, child and sibling are used to navigate the tree, * from TeX box hierarchy point of view. * The friend field points to a method which allows to navigate from friend to friend. * A friend is a node with very close tag and line numbers. * Finally, the info field point to a method giving the private node info offset. */ typedef synctex_node_t *(*_synctex_node_getter_t)(synctex_node_t); typedef synctex_info_t *(*_synctex_info_getter_t)(synctex_node_t); struct __synctex_class_t { synctex_scanner_t scanner; int type; synctex_node_t (*new)(synctex_scanner_t scanner); void (*free)(synctex_node_t); void (*log)(synctex_node_t); void (*display)(synctex_node_t); _synctex_node_getter_t parent; _synctex_node_getter_t child; _synctex_node_getter_t sibling; _synctex_node_getter_t friend; _synctex_node_getter_t next_hbox; _synctex_info_getter_t info; }; # ifdef SYNCTEX_NOTHING # pragma mark - # pragma mark Abstract OBJECTS and METHODS # endif /* These macros are shortcuts * This macro checks if a message can be sent. */ # define SYNCTEX_CAN_PERFORM(NODE,SELECTOR)\ (NULL!=((((NODE)->class))->SELECTOR)) /* This macro is some kind of objc_msg_send. * It takes care of sending the proper message if possible. */ # define SYNCTEX_MSG_SEND(NODE,SELECTOR) if (NODE && SYNCTEX_CAN_PERFORM(NODE,SELECTOR)) {\ (*((((NODE)->class))->SELECTOR))(NODE);\ } /* read only safe getter */ # define SYNCTEX_GET(NODE,SELECTOR)((NODE && SYNCTEX_CAN_PERFORM(NODE,SELECTOR))?SYNCTEX_GETTER(NODE,SELECTOR)[0]:(NULL)) /* read/write getter */ # define SYNCTEX_GETTER(NODE,SELECTOR)\ ((synctex_node_t *)((*((((NODE)->class))->SELECTOR))(NODE))) # define SYNCTEX_FREE(NODE) SYNCTEX_MSG_SEND(NODE,free); /* Parent getter and setter */ # define SYNCTEX_PARENT(NODE) SYNCTEX_GET(NODE,parent) # define SYNCTEX_SET_PARENT(NODE,NEW_PARENT) if (NODE && NEW_PARENT && SYNCTEX_CAN_PERFORM(NODE,parent)){\ SYNCTEX_GETTER(NODE,parent)[0]=NEW_PARENT;\ } /* Child getter and setter */ # define SYNCTEX_CHILD(NODE) SYNCTEX_GET(NODE,child) # define SYNCTEX_SET_CHILD(NODE,NEW_CHILD) if (NODE && NEW_CHILD){\ SYNCTEX_GETTER(NODE,child)[0]=NEW_CHILD;\ SYNCTEX_GETTER(NEW_CHILD,parent)[0]=NODE;\ } /* Sibling getter and setter */ # define SYNCTEX_SIBLING(NODE) SYNCTEX_GET(NODE,sibling) # define SYNCTEX_SET_SIBLING(NODE,NEW_SIBLING) if (NODE && NEW_SIBLING) {\ SYNCTEX_GETTER(NODE,sibling)[0]=NEW_SIBLING;\ if (SYNCTEX_CAN_PERFORM(NEW_SIBLING,parent) && SYNCTEX_CAN_PERFORM(NODE,parent)) {\ SYNCTEX_GETTER(NEW_SIBLING,parent)[0]=SYNCTEX_GETTER(NODE,parent)[0];\ }\ } /* Friend getter and setter. A friend is a kern, math, glue or void box node which tag and line numbers are similar. * This is a first filter on the nodes that avoids testing all of them. * Friends are used mainly in forward synchronization aka from source to output. */ # define SYNCTEX_FRIEND(NODE) SYNCTEX_GET(NODE,friend) # define SYNCTEX_SET_FRIEND(NODE,NEW_FRIEND) if (NODE && NEW_FRIEND){\ SYNCTEX_GETTER(NODE,friend)[0]=NEW_FRIEND;\ } /* Next box getter and setter. The box tree can be traversed from one horizontal box to the other. * Navigation starts with the deeper boxes. */ # define SYNCTEX_NEXT_hbox(NODE) SYNCTEX_GET(NODE,next_hbox) # define SYNCTEX_SET_NEXT_hbox(NODE,NEXT_HBOX) if (NODE && NEXT_HBOX){\ SYNCTEX_GETTER(NODE,next_hbox)[0]=NEXT_HBOX;\ } /* A node is meant to own its child and sibling. * It is not owned by its parent, unless it is its first child. * This destructor is for all nodes with children. */ static void _synctex_free_node(synctex_node_t node) { if (node) { (*((node->class)->sibling))(node); SYNCTEX_FREE(SYNCTEX_SIBLING(node)); SYNCTEX_FREE(SYNCTEX_CHILD(node)); free(node); } return; } /* A node is meant to own its child and sibling. * It is not owned by its parent, unless it is its first child. * This destructor is for nodes with no child. * The first sheet is onwned by the scanner. */ static void _synctex_free_leaf(synctex_node_t node) { if (node) { SYNCTEX_FREE(SYNCTEX_SIBLING(node)); free(node); } return; } # ifdef __SYNCTEX_WORK__ # include "/usr/include/zlib.h" # else # include # endif /* The synctex scanner is the root object. * Is is initialized with the contents of a text file or a gzipped file. * The buffer_? are first used to parse the text. */ struct __synctex_scanner_t { gzFile file; /* The (possibly compressed) file */ SYNCTEX_DECLARE_CHAR_OFFSET; char * buffer_cur; /* current location in the buffer */ char * buffer_start; /* start of the buffer */ char * buffer_end; /* end of the buffer */ char * output_fmt; /* dvi or pdf, not yet used */ char * output; /* the output name used to create the scanner */ char * synctex; /* the .synctex or .synctex.gz name used to create the scanner */ int version; /* 1, not yet used */ struct { unsigned has_parsed:1; /* Whether the scanner has parsed its underlying synctex file. */ unsigned reserved:sizeof(unsigned)-1; /* alignment */ } flags; int pre_magnification; /* magnification from the synctex preamble */ int pre_unit; /* unit from the synctex preamble */ int pre_x_offset; /* X offste from the synctex preamble */ int pre_y_offset; /* Y offset from the synctex preamble */ int count; /* Number of records, from the synctex postamble */ float unit; /* real unit, from synctex preamble or post scriptum */ float x_offset; /* X offset, from synctex preamble or post scriptum */ float y_offset; /* Y Offset, from synctex preamble or post scriptum */ synctex_node_t sheet; /* The first sheet node, its siblings are the other sheet nodes */ synctex_node_t input; /* The first input node, its siblings are the other input nodes */ int number_of_lists; /* The number of friend lists */ synctex_node_t * lists_of_friends;/* The friend lists */ _synctex_class_t class[synctex_node_number_of_types]; /* The classes of the nodes of the scanner */ }; /* SYNCTEX_CUR, SYNCTEX_START and SYNCTEX_END are convenient shortcuts */ # define SYNCTEX_CUR (scanner->buffer_cur) # define SYNCTEX_START (scanner->buffer_start) # define SYNCTEX_END (scanner->buffer_end) # ifdef SYNCTEX_NOTHING # pragma mark - # pragma mark OBJECTS, their creators and destructors. # endif /* Here, we define the indices for the different informations. * They are used to declare the size of the implementation. * For example, if one object uses SYNCTEX_HORIZ_IDX is its size, * then its info will contain a tag, line, column, horiz but no width nor height nor depth */ /* The sheet is a first level node. * It has no parent (the parent is the scanner itself) * Its sibling points to another sheet. * Its child points to its first child, in general a box. * A sheet node contains only one synctex information: the page. * This is the 1 based page index as given by TeX. */ /* The next macros are used to access the node info * SYNCTEX_INFO(node) points to the first synctex integer or pointer data of node * SYNCTEX_INFO(node)[index] is the information at index * for example, the page of a sheet is stored in SYNCTEX_INFO(sheet)[SYNCTEX_PAGE_IDX] */ # define SYNCTEX_INFO(NODE) ((*((((NODE)->class))->info))(NODE)) # define SYNCTEX_PAGE_IDX 0 # define SYNCTEX_PAGE(NODE) SYNCTEX_INFO(NODE)[SYNCTEX_PAGE_IDX].INT /* This macro defines implementation offsets * It is only used for pointer values */ # define SYNCTEX_MAKE_GET(SYNCTEX_GETTER,OFFSET)\ static synctex_node_t * SYNCTEX_GETTER (synctex_node_t node) {\ return node?(synctex_node_t *)((&((node)->implementation))+OFFSET):NULL;\ } SYNCTEX_MAKE_GET(_synctex_implementation_0,0) SYNCTEX_MAKE_GET(_synctex_implementation_1,1) SYNCTEX_MAKE_GET(_synctex_implementation_2,2) SYNCTEX_MAKE_GET(_synctex_implementation_3,3) SYNCTEX_MAKE_GET(_synctex_implementation_4,4) SYNCTEX_MAKE_GET(_synctex_implementation_5,5) typedef struct { SYNCTEX_DECLARE_CHARINDEX synctex_class_t class; synctex_info_t implementation[3+SYNCTEX_PAGE_IDX+1];/* child, sibling, next box, * SYNCTEX_PAGE_IDX */ } synctex_node_sheet_t; /* sheet node creator */ #define DEFINE_synctex_new_NODE(NAME)\ static synctex_node_t _synctex_new_##NAME(synctex_scanner_t scanner) {\ if (scanner) {\ synctex_node_t node = _synctex_malloc(sizeof(synctex_node_##NAME##_t));\ if (node) {\ SYNCTEX_IMPLEMENT_CHARINDEX(node,0);\ ++SYNCTEX_CUR;\ node->class = scanner->class+synctex_node_type_##NAME;\ }\ return node;\ }\ return NULL;\ } DEFINE_synctex_new_NODE(sheet) static void _synctex_display_sheet(synctex_node_t node); static void _synctex_log_sheet(synctex_node_t node); static _synctex_class_t synctex_class_sheet = { NULL, /* No scanner yet */ synctex_node_type_sheet, /* Node type */ &_synctex_new_sheet, /* creator */ &_synctex_free_node, /* destructor */ &_synctex_log_sheet, /* log */ &_synctex_display_sheet, /* display */ NULL, /* No parent */ &_synctex_implementation_0, /* child */ &_synctex_implementation_1, /* sibling */ NULL, /* No friend */ &_synctex_implementation_2, /* Next hbox */ (_synctex_info_getter_t)&_synctex_implementation_3 /* info */ }; /* A box node contains navigation and synctex information * There are different kind of boxes. * Only horizontal boxes are treated differently because of their visible size. */ # define SYNCTEX_TAG_IDX 0 # define SYNCTEX_LINE_IDX (SYNCTEX_TAG_IDX+1) # define SYNCTEX_COLUMN_IDX (SYNCTEX_LINE_IDX+1) # define SYNCTEX_HORIZ_IDX (SYNCTEX_COLUMN_IDX+1) # define SYNCTEX_VERT_IDX (SYNCTEX_HORIZ_IDX+1) # define SYNCTEX_WIDTH_IDX (SYNCTEX_VERT_IDX+1) # define SYNCTEX_HEIGHT_IDX (SYNCTEX_WIDTH_IDX+1) # define SYNCTEX_DEPTH_IDX (SYNCTEX_HEIGHT_IDX+1) /* the corresponding info accessors */ # define SYNCTEX_TAG(NODE) SYNCTEX_INFO(NODE)[SYNCTEX_TAG_IDX].INT # define SYNCTEX_LINE(NODE) SYNCTEX_INFO(NODE)[SYNCTEX_LINE_IDX].INT # define SYNCTEX_COLUMN(NODE) SYNCTEX_INFO(NODE)[SYNCTEX_COLUMN_IDX].INT # define SYNCTEX_HORIZ(NODE) SYNCTEX_INFO(NODE)[SYNCTEX_HORIZ_IDX].INT # define SYNCTEX_VERT(NODE) SYNCTEX_INFO(NODE)[SYNCTEX_VERT_IDX].INT # define SYNCTEX_WIDTH(NODE) SYNCTEX_INFO(NODE)[SYNCTEX_WIDTH_IDX].INT # define SYNCTEX_HEIGHT(NODE) SYNCTEX_INFO(NODE)[SYNCTEX_HEIGHT_IDX].INT # define SYNCTEX_DEPTH(NODE) SYNCTEX_INFO(NODE)[SYNCTEX_DEPTH_IDX].INT # define SYNCTEX_ABS_WIDTH(NODE) ((SYNCTEX_WIDTH(NODE)>0?SYNCTEX_WIDTH(NODE):-SYNCTEX_WIDTH(NODE))) # define SYNCTEX_ABS_HEIGHT(NODE) ((SYNCTEX_HEIGHT(NODE)>0?SYNCTEX_HEIGHT(NODE):-SYNCTEX_HEIGHT(NODE))) # define SYNCTEX_ABS_DEPTH(NODE) ((SYNCTEX_DEPTH(NODE)>0?SYNCTEX_DEPTH(NODE):-SYNCTEX_DEPTH(NODE))) typedef struct { SYNCTEX_DECLARE_CHARINDEX synctex_class_t class; synctex_info_t implementation[5+SYNCTEX_DEPTH_IDX+1]; /* parent,child,sibling,friend,next box, * SYNCTEX_TAG,SYNCTEX_LINE,SYNCTEX_COLUMN, * SYNCTEX_HORIZ,SYNCTEX_VERT,SYNCTEX_WIDTH,SYNCTEX_HEIGHT,SYNCTEX_DEPTH */ } synctex_node_vbox_t; /* vertical box node creator */ DEFINE_synctex_new_NODE(vbox) static void _synctex_log_vbox(synctex_node_t node); static void _synctex_display_vbox(synctex_node_t node); /* These are static class objects, each scanner will make a copy of them and setup the scanner field. */ static _synctex_class_t synctex_class_vbox = { NULL, /* No scanner yet */ synctex_node_type_vbox, /* Node type */ &_synctex_new_vbox, /* creator */ &_synctex_free_node, /* destructor */ &_synctex_log_vbox, /* log */ &_synctex_display_vbox, /* display */ &_synctex_implementation_0, /* parent */ &_synctex_implementation_1, /* child */ &_synctex_implementation_2, /* sibling */ &_synctex_implementation_3, /* friend */ &_synctex_implementation_4, /* next hbox */ (_synctex_info_getter_t)&_synctex_implementation_5 }; /* Horizontal boxes must contain visible size, because 0 width does not mean emptiness. * They also contain an average of the line numbers of the containing nodes. */ # define SYNCTEX_MEAN_LINE_IDX (SYNCTEX_DEPTH_IDX+1) # define SYNCTEX_NODE_WEIGHT_IDX (SYNCTEX_MEAN_LINE_IDX+1) # define SYNCTEX_HORIZ_V_IDX (SYNCTEX_NODE_WEIGHT_IDX+1) # define SYNCTEX_VERT_V_IDX (SYNCTEX_HORIZ_V_IDX+1) # define SYNCTEX_WIDTH_V_IDX (SYNCTEX_VERT_V_IDX+1) # define SYNCTEX_HEIGHT_V_IDX (SYNCTEX_WIDTH_V_IDX+1) # define SYNCTEX_DEPTH_V_IDX (SYNCTEX_HEIGHT_V_IDX+1) /* the corresponding info accessors */ # define SYNCTEX_MEAN_LINE(NODE) SYNCTEX_INFO(NODE)[SYNCTEX_MEAN_LINE_IDX].INT # define SYNCTEX_NODE_WEIGHT(NODE) SYNCTEX_INFO(NODE)[SYNCTEX_NODE_WEIGHT_IDX].INT # define SYNCTEX_HORIZ_V(NODE) SYNCTEX_INFO(NODE)[SYNCTEX_HORIZ_V_IDX].INT # define SYNCTEX_VERT_V(NODE) SYNCTEX_INFO(NODE)[SYNCTEX_VERT_V_IDX].INT # define SYNCTEX_WIDTH_V(NODE) SYNCTEX_INFO(NODE)[SYNCTEX_WIDTH_V_IDX].INT # define SYNCTEX_HEIGHT_V(NODE) SYNCTEX_INFO(NODE)[SYNCTEX_HEIGHT_V_IDX].INT # define SYNCTEX_DEPTH_V(NODE) SYNCTEX_INFO(NODE)[SYNCTEX_DEPTH_V_IDX].INT # define SYNCTEX_ABS_WIDTH_V(NODE) ((SYNCTEX_WIDTH_V(NODE)>0?SYNCTEX_WIDTH_V(NODE):-SYNCTEX_WIDTH_V(NODE))) # define SYNCTEX_ABS_HEIGHT_V(NODE) ((SYNCTEX_HEIGHT_V(NODE)>0?SYNCTEX_HEIGHT_V(NODE):-SYNCTEX_HEIGHT_V(NODE))) # define SYNCTEX_ABS_DEPTH_V(NODE) ((SYNCTEX_DEPTH_V(NODE)>0?SYNCTEX_DEPTH_V(NODE):-SYNCTEX_DEPTH_V(NODE))) typedef struct { SYNCTEX_DECLARE_CHARINDEX synctex_class_t class; synctex_info_t implementation[5+SYNCTEX_DEPTH_V_IDX+1]; /*parent,child,sibling,friend,next box, * SYNCTEX_TAG,SYNCTEX_LINE,SYNCTEX_COLUMN, * SYNCTEX_HORIZ,SYNCTEX_VERT,SYNCTEX_WIDTH,SYNCTEX_HEIGHT,SYNCTEX_DEPTH, * SYNCTEX_MEAN_LINE,SYNCTEX_NODE_WEIGHT, * SYNCTEX_HORIZ_V,SYNCTEX_VERT_V,SYNCTEX_WIDTH_V,SYNCTEX_HEIGHT_V,SYNCTEX_DEPTH_V*/ } synctex_node_hbox_t; /* horizontal box node creator */ DEFINE_synctex_new_NODE(hbox) static void _synctex_display_hbox(synctex_node_t node); static void _synctex_log_hbox(synctex_node_t node); static _synctex_class_t synctex_class_hbox = { NULL, /* No scanner yet */ synctex_node_type_hbox, /* Node type */ &_synctex_new_hbox, /* creator */ &_synctex_free_node, /* destructor */ &_synctex_log_hbox, /* log */ &_synctex_display_hbox, /* display */ &_synctex_implementation_0, /* parent */ &_synctex_implementation_1, /* child */ &_synctex_implementation_2, /* sibling */ &_synctex_implementation_3, /* friend */ &_synctex_implementation_4, /* next hbox */ (_synctex_info_getter_t)&_synctex_implementation_5 }; /* This void box node implementation is either horizontal or vertical * It does not contain a child field. */ typedef struct { SYNCTEX_DECLARE_CHARINDEX synctex_class_t class; synctex_info_t implementation[3+SYNCTEX_DEPTH_IDX+1]; /* parent,sibling,friend, * SYNCTEX_TAG,SYNCTEX_LINE,SYNCTEX_COLUMN, * SYNCTEX_HORIZ,SYNCTEX_VERT,SYNCTEX_WIDTH,SYNCTEX_HEIGHT,SYNCTEX_DEPTH*/ } synctex_node_void_vbox_t; /* vertical void box node creator */ DEFINE_synctex_new_NODE(void_vbox) static void _synctex_log_void_box(synctex_node_t node); static void _synctex_display_void_vbox(synctex_node_t node); static _synctex_class_t synctex_class_void_vbox = { NULL, /* No scanner yet */ synctex_node_type_void_vbox,/* Node type */ &_synctex_new_void_vbox, /* creator */ &_synctex_free_node, /* destructor */ &_synctex_log_void_box, /* log */ &_synctex_display_void_vbox,/* display */ &_synctex_implementation_0, /* parent */ NULL, /* No child */ &_synctex_implementation_1, /* sibling */ &_synctex_implementation_2, /* friend */ NULL, /* No next hbox */ (_synctex_info_getter_t)&_synctex_implementation_3 }; typedef synctex_node_void_vbox_t synctex_node_void_hbox_t; /* horizontal void box node creator */ DEFINE_synctex_new_NODE(void_hbox) static void _synctex_display_void_hbox(synctex_node_t node); static _synctex_class_t synctex_class_void_hbox = { NULL, /* No scanner yet */ synctex_node_type_void_hbox,/* Node type */ &_synctex_new_void_hbox, /* creator */ &_synctex_free_node, /* destructor */ &_synctex_log_void_box, /* log */ &_synctex_display_void_hbox,/* display */ &_synctex_implementation_0, /* parent */ NULL, /* No child */ &_synctex_implementation_1, /* sibling */ &_synctex_implementation_2, /* friend */ NULL, /* No next hbox */ (_synctex_info_getter_t)&_synctex_implementation_3 }; /* The medium nodes correspond to kern, glue, penalty and math nodes. * In LuaTeX, the size of the nodes may have changed. */ typedef struct { SYNCTEX_DECLARE_CHARINDEX synctex_class_t class; synctex_info_t implementation[3+SYNCTEX_WIDTH_IDX+1]; /* parent,sibling,friend, * SYNCTEX_TAG,SYNCTEX_LINE,SYNCTEX_COLUMN, * SYNCTEX_HORIZ,SYNCTEX_VERT,SYNCTEX_WIDTH */ } synctex_node_medium_t; #define SYNCTEX_IS_BOX(NODE)\ ((NODE->class->type == synctex_node_type_vbox)\ || (NODE->class->type == synctex_node_type_void_vbox)\ || (NODE->class->type == synctex_node_type_hbox)\ || (NODE->class->type == synctex_node_type_void_hbox)) #define SYNCTEX_HAS_CHILDREN(NODE) (NODE && SYNCTEX_CHILD(NODE)) static void _synctex_log_medium_node(synctex_node_t node); typedef synctex_node_medium_t synctex_node_math_t; /* math node creator */ DEFINE_synctex_new_NODE(math) static void _synctex_display_math(synctex_node_t node); static _synctex_class_t synctex_class_math = { NULL, /* No scanner yet */ synctex_node_type_math, /* Node type */ &_synctex_new_math, /* creator */ &_synctex_free_leaf, /* destructor */ &_synctex_log_medium_node, /* log */ &_synctex_display_math, /* display */ &_synctex_implementation_0, /* parent */ NULL, /* No child */ &_synctex_implementation_1, /* sibling */ &_synctex_implementation_2, /* friend */ NULL, /* No next hbox */ (_synctex_info_getter_t)&_synctex_implementation_3 }; typedef synctex_node_medium_t synctex_node_kern_t; /* kern node creator */ DEFINE_synctex_new_NODE(kern) static void _synctex_display_kern(synctex_node_t node); static _synctex_class_t synctex_class_kern = { NULL, /* No scanner yet */ synctex_node_type_kern, /* Node type */ &_synctex_new_kern, /* creator */ &_synctex_free_leaf, /* destructor */ &_synctex_log_medium_node, /* log */ &_synctex_display_kern, /* display */ &_synctex_implementation_0, /* parent */ NULL, /* No child */ &_synctex_implementation_1, /* sibling */ &_synctex_implementation_2, /* friend */ NULL, /* No next hbox */ (_synctex_info_getter_t)&_synctex_implementation_3 }; /* The small nodes correspond to glue and boundary nodes. */ typedef struct { SYNCTEX_DECLARE_CHARINDEX synctex_class_t class; synctex_info_t implementation[3+SYNCTEX_VERT_IDX+1]; /* parent,sibling,friend, * SYNCTEX_TAG,SYNCTEX_LINE,SYNCTEX_COLUMN, * SYNCTEX_HORIZ,SYNCTEX_VERT */ } synctex_node_small_t; static void _synctex_log_small_node(synctex_node_t node); /* glue node creator */ typedef synctex_node_small_t synctex_node_glue_t; DEFINE_synctex_new_NODE(glue) static void _synctex_display_glue(synctex_node_t node); static _synctex_class_t synctex_class_glue = { NULL, /* No scanner yet */ synctex_node_type_glue, /* Node type */ &_synctex_new_glue, /* creator */ &_synctex_free_leaf, /* destructor */ &_synctex_log_medium_node, /* log */ &_synctex_display_glue, /* display */ &_synctex_implementation_0, /* parent */ NULL, /* No child */ &_synctex_implementation_1, /* sibling */ &_synctex_implementation_2, /* friend */ NULL, /* No next hbox */ (_synctex_info_getter_t)&_synctex_implementation_3 }; /* boundary node creator */ typedef synctex_node_small_t synctex_node_boundary_t; DEFINE_synctex_new_NODE(boundary) static void _synctex_display_boundary(synctex_node_t node); static _synctex_class_t synctex_class_boundary = { NULL, /* No scanner yet */ synctex_node_type_boundary, /* Node type */ &_synctex_new_boundary, /* creator */ &_synctex_free_leaf, /* destructor */ &_synctex_log_small_node, /* log */ &_synctex_display_boundary, /* display */ &_synctex_implementation_0, /* parent */ NULL, /* No child */ &_synctex_implementation_1, /* sibling */ &_synctex_implementation_2, /* friend */ NULL, /* No next hbox */ (_synctex_info_getter_t)&_synctex_implementation_3 }; # define SYNCTEX_NAME_IDX (SYNCTEX_TAG_IDX+1) # define SYNCTEX_NAME(NODE) SYNCTEX_INFO(NODE)[SYNCTEX_NAME_IDX].PTR /* Input nodes only know about their sibling, which is another input node. * The synctex information is the SYNCTEX_TAG and SYNCTEX_NAME*/ typedef struct { SYNCTEX_DECLARE_CHARINDEX synctex_class_t class; synctex_info_t implementation[1+SYNCTEX_NAME_IDX+1]; /* sibling, * SYNCTEX_TAG,SYNCTEX_NAME */ } synctex_input_t; # define SYNCTEX_INPUT_MARK "Input:" static synctex_node_t _synctex_new_input(synctex_scanner_t scanner) { if (scanner) { synctex_node_t node = _synctex_malloc(sizeof(synctex_input_t)); if (node) { SYNCTEX_IMPLEMENT_CHARINDEX(node,strlen(SYNCTEX_INPUT_MARK)); node->class = scanner->class+synctex_node_type_input; } return node; } return NULL; } static void _synctex_free_input(synctex_node_t node){ if (node) { SYNCTEX_FREE(SYNCTEX_SIBLING(node)); free(SYNCTEX_NAME(node)); free(node); } } static void _synctex_display_input(synctex_node_t node); static void _synctex_log_input(synctex_node_t node); static _synctex_class_t synctex_class_input = { NULL, /* No scanner yet */ synctex_node_type_input, /* Node type */ &_synctex_new_input, /* creator */ &_synctex_free_input, /* destructor */ &_synctex_log_input, /* log */ &_synctex_display_input, /* display */ NULL, /* No parent */ NULL, /* No child */ &_synctex_implementation_0, /* sibling */ NULL, /* No friend */ NULL, /* No next hbox */ (_synctex_info_getter_t)&_synctex_implementation_1 }; # ifdef SYNCTEX_NOTHING # pragma mark - # pragma mark Navigation # endif synctex_node_t synctex_node_parent(synctex_node_t node) { return SYNCTEX_PARENT(node); } synctex_node_t synctex_node_sheet(synctex_node_t node) { while(node && node->class->type != synctex_node_type_sheet) { node = SYNCTEX_PARENT(node); } /* exit the while loop either when node is NULL or node is a sheet */ return node; } synctex_node_t synctex_node_child(synctex_node_t node) { return SYNCTEX_CHILD(node); } synctex_node_t synctex_node_sibling(synctex_node_t node) { return SYNCTEX_SIBLING(node); } synctex_node_t synctex_node_next(synctex_node_t node) { if (SYNCTEX_CHILD(node)) { return SYNCTEX_CHILD(node); } sibling: if (SYNCTEX_SIBLING(node)) { return SYNCTEX_SIBLING(node); } if ((node = SYNCTEX_PARENT(node))) { if (node->class->type == synctex_node_type_sheet) {/* EXC_BAD_ACCESS? */ return NULL; } goto sibling; } return NULL; } # ifdef SYNCTEX_NOTHING # pragma mark - # pragma mark CLASS # endif /* Public node accessor: the type */ synctex_node_type_t synctex_node_type(synctex_node_t node) { if (node) { return (((node)->class))->type; } return synctex_node_type_error; } /* Public node accessor: the human readable type */ const char * synctex_node_isa(synctex_node_t node) { static const char * isa[synctex_node_number_of_types] = {"Not a node","input","sheet","vbox","void vbox","hbox","void hbox","kern","glue","math","boundary"}; return isa[synctex_node_type(node)]; } # ifdef SYNCTEX_NOTHING # pragma mark - # pragma mark SYNCTEX_LOG # endif # define SYNCTEX_LOG(NODE) SYNCTEX_MSG_SEND(NODE,log) /* Public node logger */ void synctex_node_log(synctex_node_t node) { SYNCTEX_LOG(node); } static void _synctex_log_input(synctex_node_t node) { if (node) { printf("%s:%i,%s",synctex_node_isa(node),SYNCTEX_TAG(node),SYNCTEX_NAME(node)); printf(" SYNCTEX_SIBLING:%p",(void *)SYNCTEX_SIBLING(node)); } } static void _synctex_log_sheet(synctex_node_t node) { if (node) { printf("%s:%i",synctex_node_isa(node),SYNCTEX_PAGE(node)); SYNCTEX_PRINT_CHARINDEX; printf("SELF:%p",(void *)node); printf(" SYNCTEX_PARENT:%p",(void *)SYNCTEX_PARENT(node)); printf(" SYNCTEX_CHILD:%p",(void *)SYNCTEX_CHILD(node)); printf(" SYNCTEX_SIBLING:%p",(void *)SYNCTEX_SIBLING(node)); printf(" SYNCTEX_FRIEND:%p",(void *)SYNCTEX_FRIEND(node)); printf(" SYNCTEX_NEXT_hbox:%p\n",(void *)SYNCTEX_NEXT_hbox(node)); } } static void _synctex_log_small_node(synctex_node_t node) { if (node) { printf("%s:%i,%i:%i,%i", synctex_node_isa(node), SYNCTEX_TAG(node), SYNCTEX_LINE(node), SYNCTEX_HORIZ(node), SYNCTEX_VERT(node)); SYNCTEX_PRINT_CHARINDEX; printf("SELF:%p",(void *)node); printf(" SYNCTEX_PARENT:%p",(void *)SYNCTEX_PARENT(node)); printf(" SYNCTEX_CHILD:%p",(void *)SYNCTEX_CHILD(node)); printf(" SYNCTEX_SIBLING:%p",(void *)SYNCTEX_SIBLING(node)); printf(" SYNCTEX_FRIEND:%p\n",(void *)SYNCTEX_FRIEND(node)); } } static void _synctex_log_medium_node(synctex_node_t node) { if (node) { printf("%s:%i,%i:%i,%i:%i", synctex_node_isa(node), SYNCTEX_TAG(node), SYNCTEX_LINE(node), SYNCTEX_HORIZ(node), SYNCTEX_VERT(node), SYNCTEX_WIDTH(node)); SYNCTEX_PRINT_CHARINDEX; printf("SELF:%p",(void *)node); printf(" SYNCTEX_PARENT:%p",(void *)SYNCTEX_PARENT(node)); printf(" SYNCTEX_CHILD:%p",(void *)SYNCTEX_CHILD(node)); printf(" SYNCTEX_SIBLING:%p",(void *)SYNCTEX_SIBLING(node)); printf(" SYNCTEX_FRIEND:%p\n",(void *)SYNCTEX_FRIEND(node)); } } static void _synctex_log_void_box(synctex_node_t node) { if (node) { printf("%s",synctex_node_isa(node)); printf(":%i",SYNCTEX_TAG(node)); printf(",%i",SYNCTEX_LINE(node)); printf(",%i",0); printf(":%i",SYNCTEX_HORIZ(node)); printf(",%i",SYNCTEX_VERT(node)); printf(":%i",SYNCTEX_WIDTH(node)); printf(",%i",SYNCTEX_HEIGHT(node)); printf(",%i",SYNCTEX_DEPTH(node)); SYNCTEX_PRINT_CHARINDEX; printf("SELF:%p",(void *)node); printf(" SYNCTEX_PARENT:%p",(void *)SYNCTEX_PARENT(node)); printf(" SYNCTEX_CHILD:%p",(void *)SYNCTEX_CHILD(node)); printf(" SYNCTEX_SIBLING:%p",(void *)SYNCTEX_SIBLING(node)); printf(" SYNCTEX_FRIEND:%p\n",(void *)SYNCTEX_FRIEND(node)); } } static void _synctex_log_vbox(synctex_node_t node) { if (node) { printf("%s",synctex_node_isa(node)); printf(":%i",SYNCTEX_TAG(node)); printf(",%i",SYNCTEX_LINE(node)); printf(",%i",0); printf(":%i",SYNCTEX_HORIZ(node)); printf(",%i",SYNCTEX_VERT(node)); printf(":%i",SYNCTEX_WIDTH(node)); printf(",%i",SYNCTEX_HEIGHT(node)); printf(",%i",SYNCTEX_DEPTH(node)); SYNCTEX_PRINT_CHARINDEX; printf("SELF:%p",(void *)node); printf(" SYNCTEX_PARENT:%p",(void *)SYNCTEX_PARENT(node)); printf(" SYNCTEX_CHILD:%p",(void *)SYNCTEX_CHILD(node)); printf(" SYNCTEX_SIBLING:%p",(void *)SYNCTEX_SIBLING(node)); printf(" SYNCTEX_FRIEND:%p",(void *)SYNCTEX_FRIEND(node)); printf(" SYNCTEX_NEXT_hbox:%p\n",(void *)SYNCTEX_NEXT_hbox(node)); } } static void _synctex_log_hbox(synctex_node_t node) { if (node) { printf("%s",synctex_node_isa(node)); printf(":%i",SYNCTEX_TAG(node)); printf(",%i~%i*%i",SYNCTEX_LINE(node),SYNCTEX_MEAN_LINE(node),SYNCTEX_NODE_WEIGHT(node)); printf(",%i",0); printf(":%i",SYNCTEX_HORIZ(node)); printf(",%i",SYNCTEX_VERT(node)); printf(":%i",SYNCTEX_WIDTH(node)); printf(",%i",SYNCTEX_HEIGHT(node)); printf(",%i",SYNCTEX_DEPTH(node)); printf("/%i",SYNCTEX_HORIZ_V(node)); printf(",%i",SYNCTEX_VERT_V(node)); printf(":%i",SYNCTEX_WIDTH_V(node)); printf(",%i",SYNCTEX_HEIGHT_V(node)); printf(",%i",SYNCTEX_DEPTH_V(node)); SYNCTEX_PRINT_CHARINDEX; printf("SELF:%p",(void *)node); printf(" SYNCTEX_PARENT:%p",(void *)SYNCTEX_PARENT(node)); printf(" SYNCTEX_CHILD:%p",(void *)SYNCTEX_CHILD(node)); printf(" SYNCTEX_SIBLING:%p",(void *)SYNCTEX_SIBLING(node)); printf(" SYNCTEX_FRIEND:%p",(void *)SYNCTEX_FRIEND(node)); printf(" SYNCTEX_NEXT_hbox:%p\n",(void *)SYNCTEX_NEXT_hbox(node)); } } # define SYNCTEX_DISPLAY(NODE) SYNCTEX_MSG_SEND(NODE,display) void synctex_node_display(synctex_node_t node) { SYNCTEX_DISPLAY(node); } static void _synctex_display_input(synctex_node_t node) { if (node) { printf("....Input:%i:%s", SYNCTEX_TAG(node), SYNCTEX_NAME(node)); SYNCTEX_PRINT_CHARINDEX; SYNCTEX_DISPLAY(SYNCTEX_SIBLING(node)); } } static void _synctex_display_sheet(synctex_node_t node) { if (node) { printf("....{%i",SYNCTEX_PAGE(node)); SYNCTEX_PRINT_CHARINDEX; SYNCTEX_DISPLAY(SYNCTEX_CHILD(node)); printf("....}\n"); SYNCTEX_DISPLAY(SYNCTEX_SIBLING(node)); } } static void _synctex_display_vbox(synctex_node_t node) { if (node) { printf("....[%i,%i:%i,%i:%i,%i,%i", SYNCTEX_TAG(node), SYNCTEX_LINE(node), SYNCTEX_HORIZ(node), SYNCTEX_VERT(node), SYNCTEX_WIDTH(node), SYNCTEX_HEIGHT(node), SYNCTEX_DEPTH(node)); SYNCTEX_PRINT_CHARINDEX; SYNCTEX_DISPLAY(SYNCTEX_CHILD(node)); printf("....]\n"); SYNCTEX_DISPLAY(SYNCTEX_SIBLING(node)); } } static void _synctex_display_hbox(synctex_node_t node) { if (node) { printf("....(%i,%i~%i*%i:%i,%i:%i,%i,%i", SYNCTEX_TAG(node), SYNCTEX_LINE(node), SYNCTEX_MEAN_LINE(node), SYNCTEX_NODE_WEIGHT(node), SYNCTEX_HORIZ(node), SYNCTEX_VERT(node), SYNCTEX_WIDTH(node), SYNCTEX_HEIGHT(node), SYNCTEX_DEPTH(node)); SYNCTEX_PRINT_CHARINDEX; SYNCTEX_DISPLAY(SYNCTEX_CHILD(node)); printf("....)\n"); SYNCTEX_DISPLAY(SYNCTEX_SIBLING(node)); } } static void _synctex_display_void_vbox(synctex_node_t node) { if (node) { printf("....v%i,%i;%i,%i:%i,%i,%i", SYNCTEX_TAG(node), SYNCTEX_LINE(node), SYNCTEX_HORIZ(node), SYNCTEX_VERT(node), SYNCTEX_WIDTH(node), SYNCTEX_HEIGHT(node), SYNCTEX_DEPTH(node)); SYNCTEX_PRINT_CHARINDEX; SYNCTEX_DISPLAY(SYNCTEX_SIBLING(node)); } } static void _synctex_display_void_hbox(synctex_node_t node) { if (node) { printf("....h%i,%i:%i,%i:%i,%i,%i", SYNCTEX_TAG(node), SYNCTEX_LINE(node), SYNCTEX_HORIZ(node), SYNCTEX_VERT(node), SYNCTEX_WIDTH(node), SYNCTEX_HEIGHT(node), SYNCTEX_DEPTH(node)); SYNCTEX_PRINT_CHARINDEX; SYNCTEX_DISPLAY(SYNCTEX_SIBLING(node)); } } static void _synctex_display_glue(synctex_node_t node) { if (node) { printf("....glue:%i,%i:%i,%i", SYNCTEX_TAG(node), SYNCTEX_LINE(node), SYNCTEX_HORIZ(node), SYNCTEX_VERT(node)); SYNCTEX_PRINT_CHARINDEX; SYNCTEX_DISPLAY(SYNCTEX_SIBLING(node)); } } static void _synctex_display_math(synctex_node_t node) { if (node) { printf("....math:%i,%i:%i,%i", SYNCTEX_TAG(node), SYNCTEX_LINE(node), SYNCTEX_HORIZ(node), SYNCTEX_VERT(node)); SYNCTEX_PRINT_CHARINDEX; SYNCTEX_DISPLAY(SYNCTEX_SIBLING(node)); } } static void _synctex_display_kern(synctex_node_t node) { if (node) { printf("....kern:%i,%i:%i,%i:%i", SYNCTEX_TAG(node), SYNCTEX_LINE(node), SYNCTEX_HORIZ(node), SYNCTEX_VERT(node), SYNCTEX_WIDTH(node)); SYNCTEX_PRINT_CHARINDEX; SYNCTEX_DISPLAY(SYNCTEX_SIBLING(node)); } } static void _synctex_display_boundary(synctex_node_t node) { if (node) { printf("....boundary:%i,%i:%i,%i", SYNCTEX_TAG(node), SYNCTEX_LINE(node), SYNCTEX_HORIZ(node), SYNCTEX_VERT(node)); SYNCTEX_PRINT_CHARINDEX; SYNCTEX_DISPLAY(SYNCTEX_SIBLING(node)); } } # ifdef SYNCTEX_NOTHING # pragma mark - # pragma mark SCANNER # endif /* Here are gathered all the possible status that the next scanning functions will return. * All these functions return a status, and pass their result through pointers. * Negative values correspond to errors. * The management of the buffer is causing some significant overhead. * Every function that may access the buffer returns a status related to the buffer and file state. * status >= SYNCTEX_STATUS_OK means the function worked as expected * status < SYNCTEX_STATUS_OK means the function did not work as expected * status == SYNCTEX_STATUS_NOT_OK means the function did not work as expected but there is still some material to parse. * status == SYNCTEX_STATUS_EOF means the function did not work as expected and there is no more material. * statusfile) /* Actually, the minimum buffer size is driven by integer and float parsing. * 0.123456789e123 */ # define SYNCTEX_BUFFER_MIN_SIZE 16 # define SYNCTEX_BUFFER_SIZE 32768 # ifdef SYNCTEX_NOTHING # pragma mark - # pragma mark Prototypes # endif synctex_status_t _synctex_buffer_get_available_size(synctex_scanner_t scanner, size_t * size_ptr); synctex_status_t _synctex_next_line(synctex_scanner_t scanner); synctex_status_t _synctex_match_string(synctex_scanner_t scanner, const char * the_string); synctex_status_t _synctex_decode_int(synctex_scanner_t scanner, int* value_ref); synctex_status_t _synctex_decode_string(synctex_scanner_t scanner, char ** value_ref); synctex_status_t _synctex_scan_input(synctex_scanner_t scanner); synctex_status_t _synctex_scan_preamble(synctex_scanner_t scanner); synctex_status_t _synctex_scan_float_and_dimension(synctex_scanner_t scanner, float * value_ref); synctex_status_t _synctex_scan_post_scriptum(synctex_scanner_t scanner); synctex_status_t _synctex_scan_postamble(synctex_scanner_t scanner); synctex_status_t _synctex_setup_visible_box(synctex_node_t box); synctex_status_t _synctex_hbox_setup_visible(synctex_node_t node,int h, int v); synctex_status_t _synctex_scan_sheet(synctex_scanner_t scanner, synctex_node_t parent); synctex_status_t _synctex_scan_nested_sheet(synctex_scanner_t scanner); synctex_status_t _synctex_scan_content(synctex_scanner_t scanner); int synctex_scanner_pre_x_offset(synctex_scanner_t scanner); int synctex_scanner_pre_y_offset(synctex_scanner_t scanner); const char * synctex_scanner_get_output_fmt(synctex_scanner_t scanner); int _synctex_node_is_box(synctex_node_t node); /* Try to ensure that the buffer contains at least size bytes. * Passing a huge size argument means the whole buffer length. * Passing a null size argument means return the available buffer length, without reading the file. * In that case, the return status is always SYNCTEX_STATUS_OK unless the given scanner is NULL, * in which case, SYNCTEX_STATUS_BAD_ARGUMENT is returned. * The value returned in size_ptr is the number of bytes now available in the buffer. * This is a nonnegative integer, it may take the value 0. * It is the responsibility of the caller to test whether this size is conforming to its needs. * Negative values may return in case of error, actually * when there was an error reading the synctex file. */ synctex_status_t _synctex_buffer_get_available_size(synctex_scanner_t scanner, size_t * size_ptr) { size_t available = 0; if (NULL == scanner || NULL == size_ptr) { return SYNCTEX_STATUS_BAD_ARGUMENT; } # define size (* size_ptr) if (size>SYNCTEX_BUFFER_SIZE){ size = SYNCTEX_BUFFER_SIZE; } available = SYNCTEX_END - SYNCTEX_CUR; /* available is the number of unparsed chars in the buffer */ if (size<=available) { /* There are already sufficiently many characters in the buffer */ size = available; return SYNCTEX_STATUS_OK; } if (SYNCTEX_FILE) { /* Copy the remaining part of the buffer to the beginning, * then read the next part of the file */ int already_read = 0; # if defined(SYNCTEX_USE_CHARINDEX) scanner->charindex_offset += SYNCTEX_CUR - SYNCTEX_START; # endif if (available) { memmove(SYNCTEX_START, SYNCTEX_CUR, available); } SYNCTEX_CUR = SYNCTEX_START + available; /* the next character after the move, will change. */ /* Fill the buffer up to its end */ already_read = gzread(SYNCTEX_FILE,(void *)SYNCTEX_CUR,(int)(SYNCTEX_BUFFER_SIZE - available)); if (already_read>0) { /* We assume that 0already_read) { /* There is a possible error in reading the file */ int errnum = 0; const char * error_string = gzerror(SYNCTEX_FILE, &errnum); if (Z_ERRNO == errnum) { /* There is an error in zlib caused by the file system */ _synctex_error("gzread error from the file system (%i)",errno); return SYNCTEX_STATUS_ERROR; } else if (errnum) { _synctex_error("gzread error (%i:%i,%s)",already_read,errnum,error_string); return SYNCTEX_STATUS_ERROR; } } /* Nothing was read, we are at the end of the file. */ gzclose(SYNCTEX_FILE); SYNCTEX_FILE = NULL; SYNCTEX_END = SYNCTEX_CUR; SYNCTEX_CUR = SYNCTEX_START; * SYNCTEX_END = '\0';/* Terminate the string properly.*/ size = SYNCTEX_END - SYNCTEX_CUR; return SYNCTEX_STATUS_EOF; /* there might be a bit of text left */ } /* We cannot enlarge the buffer because the end of the file was reached. */ size = available; return SYNCTEX_STATUS_EOF; # undef size } /* Used when parsing the synctex file. * Advance to the next character starting a line. * Actually, only '\n' is recognized as end of line marker. * On normal completion, the returned value is the number of unparsed characters available in the buffer. * In general, it is a positive value, 0 meaning that the end of file was reached. * -1 is returned in case of error, actually because there was an error while feeding the buffer. * When the function returns with no error, SYNCTEX_CUR points to the first character of the next line, if any. * J. Laurens: Sat May 10 07:52:31 UTC 2008 */ synctex_status_t _synctex_next_line(synctex_scanner_t scanner) { synctex_status_t status = SYNCTEX_STATUS_OK; size_t available = 0; if (NULL == scanner) { return SYNCTEX_STATUS_BAD_ARGUMENT; } infinite_loop: while(SYNCTEX_CUR=remaining_len) { /* The buffer is sufficiently big to hold the expected number of characters. */ if (strncmp((char *)SYNCTEX_CUR,the_string,remaining_len)) { return SYNCTEX_STATUS_NOT_OK; } return_OK: /* Advance SYNCTEX_CUR to the next character after the_string. */ SYNCTEX_CUR += remaining_len; return SYNCTEX_STATUS_OK; } else if (strncmp((char *)SYNCTEX_CUR,the_string,available)) { /* No need to go further, this is not the expected string in the buffer. */ return SYNCTEX_STATUS_NOT_OK; } else if (SYNCTEX_FILE) { /* The buffer was too small to contain remaining_len characters. * We have to cut the string into pieces. */ z_off_t offset = 0L; /* the first part of the string is found, advance the_string to the next untested character. */ the_string += available; /* update the remaining length and the parsed length. */ remaining_len -= available; tested_len += available; SYNCTEX_CUR += available; /* We validate the tested characters. */ if (0 == remaining_len) { /* Nothing left to test, we have found the given string, we return the length. */ return tested_len; } /* We also have to record the current state of the file cursor because * if the_string does not match, all this should be a totally blank operation, * for which the file and buffer states should not be modified at all. * In fact, the states of the buffer before and after this function are in general different * but they are totally equivalent as long as the values of the buffer before SYNCTEX_CUR * can be safely discarded. */ offset = gztell(SYNCTEX_FILE); /* offset now corresponds to the first character of the file that was not buffered. */ available = SYNCTEX_CUR - SYNCTEX_START; /* available can be used as temporary placeholder. */ /* available now corresponds to the number of chars that where already buffered and * that match the head of the_string. If in fine the_string does not match, all these chars must be recovered * because the buffer contents is completely replaced by _synctex_buffer_get_available_size. * They were buffered from offset-len location in the file. */ offset -= available; more_characters: /* There is still some work to be done, so read another bunch of file. * This is the second call to _synctex_buffer_get_available_size, * which means that the actual contents of the buffer will be discarded. * We will definitely have to recover the previous state in case we do not find the expected string. */ available = remaining_len; status = _synctex_buffer_get_available_size(scanner,&available); if (statusptr) { SYNCTEX_CUR = end; if (value_ref) { * value_ref = result; } return SYNCTEX_STATUS_OK;/* Successfully scanned an int */ } return SYNCTEX_STATUS_NOT_OK;/* Could not scan an int */ } /* The purpose of this function is to read a string. * A string is an array of characters from the current parser location * and before the next '\n' character. * If a string was properly decoded, it is returned in value_ref and * the cursor points to the new line marker. * The returned string was alloced on the heap, the caller is the owner and * is responsible to free it in due time. * If no string is parsed, * value_ref is undefined. * The maximum length of a string that a scanner can decode is platform dependent, namely UINT_MAX. * If you just want to blindly parse the file up to the end of the current line, * use _synctex_next_line instead. * On return, the scanner cursor is unchanged if a string could not be scanned or * points to the terminating '\n' character otherwise. As a consequence, * _synctex_next_line is necessary after. * If either scanner or value_ref is NULL, it is considered as an error and * SYNCTEX_STATUS_BAD_ARGUMENT is returned. */ synctex_status_t _synctex_decode_string(synctex_scanner_t scanner, char ** value_ref) { char * end = NULL; size_t current_size = 0; size_t new_size = 0; size_t len = 0;/* The number of bytes to copy */ size_t available = 0; synctex_status_t status = 0; if (NULL == scanner || NULL == value_ref) { return SYNCTEX_STATUS_BAD_ARGUMENT; } /* The buffer must at least contain one character: the '\n' end of line marker */ if (SYNCTEX_CUR>=SYNCTEX_END) { available = 1; status = _synctex_buffer_get_available_size(scanner,&available); if (status < 0) { return status; } if (0 == available) { return SYNCTEX_STATUS_EOF; } } /* Now we are sure that there is at least one available character, either because * SYNCTEX_CUR was already < SYNCTEX_END, or because the buffer has been properly filled. */ /* end will point to the next unparsed '\n' character in the file, when mapped to the buffer. */ end = SYNCTEX_CUR; * value_ref = NULL;/* Initialize, it will be realloc'ed */ /* We scan all the characters up to the next '\n' */ next_character: if (endUINT_MAX-len-1) { /* But we have reached the limit: we do not have current_size+len+1>UINT_MAX. * We return the missing amount of memory. * This will never occur in practice. */ return UINT_MAX-len-1 - current_size; } new_size = current_size+len; /* We have current_size+len+1<=UINT_MAX * or equivalently new_sizeUINT_MAX-len-1) { /* We have reached the limit. */ _synctex_error("limit reached (missing %i).",current_size-(UINT_MAX-len-1)); return SYNCTEX_STATUS_ERROR; } new_size = current_size+len; if ((* value_ref = realloc(* value_ref,new_size+1)) != NULL) { if (memcpy((*value_ref)+current_size,SYNCTEX_CUR,len)) { (* value_ref)[new_size]='\0'; /* Terminate the string */ SYNCTEX_CUR = SYNCTEX_END;/* Advance the cursor to the end of the bufer */ return SYNCTEX_STATUS_OK; } free(* value_ref); * value_ref = NULL; _synctex_error("could not copy memory (2)."); return SYNCTEX_STATUS_ERROR; } /* Huge memory problem */ _synctex_error("could not allocate memory (2)."); return SYNCTEX_STATUS_ERROR; } } /* Used when parsing the synctex file. * Read an Input record. */ synctex_status_t _synctex_scan_input(synctex_scanner_t scanner) { synctex_status_t status = 0; size_t available = 0; synctex_node_t input = NULL; if (NULL == scanner) { return SYNCTEX_STATUS_BAD_ARGUMENT; } status = _synctex_match_string(scanner,SYNCTEX_INPUT_MARK); if (statusinput); scanner->input = input; # if SYNCTEX_VERBOSE synctex_node_log(input); # endif return _synctex_next_line(scanner);/* read the line termination character, if any */ /* Now, set up the path */ } typedef synctex_status_t (*synctex_decoder_t)(synctex_scanner_t,void *); synctex_status_t _synctex_scan_named(synctex_scanner_t scanner,const char * name,void * value_ref,synctex_decoder_t decoder); /* Used when parsing the synctex file. * Read one of the settings. * On normal completion, returns SYNCTEX_STATUS_OK. * On error, returns SYNCTEX_STATUS_ERROR. * Both arguments must not be NULL. * On return, the scanner points to the next character after the decoded object whatever it is. * It is the responsibility of the caller to prepare the scanner for the next line. */ synctex_status_t _synctex_scan_named(synctex_scanner_t scanner,const char * name,void * value_ref,synctex_decoder_t decoder) { synctex_status_t status = 0; if (NULL == scanner || NULL == name || NULL == value_ref || NULL == decoder) { return SYNCTEX_STATUS_BAD_ARGUMENT; } not_found: status = _synctex_match_string(scanner,name); if (statusversion),(synctex_decoder_t)&_synctex_decode_int); if (statusoutput_fmt),(synctex_decoder_t)&_synctex_decode_string); if (statuspre_magnification),(synctex_decoder_t)&_synctex_decode_int); if (statuspre_unit),(synctex_decoder_t)&_synctex_decode_int); if (statuspre_x_offset),(synctex_decoder_t)&_synctex_decode_int); if (statuspre_y_offset),(synctex_decoder_t)&_synctex_decode_int); if (status= SYNCTEX_STATUS_OK) { f *= 72.27f*65536; } else if (status= SYNCTEX_STATUS_OK) { f *= 72.27f*65536/2.54f; } else if (status<0) { goto report_unit_error; } else if ((status = _synctex_match_string(scanner,"mm")) >= SYNCTEX_STATUS_OK) { f *= 72.27f*65536/25.4f; } else if (status<0) { goto report_unit_error; } else if ((status = _synctex_match_string(scanner,"pt")) >= SYNCTEX_STATUS_OK) { f *= 65536.0f; } else if (status<0) { goto report_unit_error; } else if ((status = _synctex_match_string(scanner,"bp")) >= SYNCTEX_STATUS_OK) { f *= 72.27f/72*65536.0f; } else if (status<0) { goto report_unit_error; } else if ((status = _synctex_match_string(scanner,"pc")) >= SYNCTEX_STATUS_OK) { f *= 12.0*65536.0f; } else if (status<0) { goto report_unit_error; } else if ((status = _synctex_match_string(scanner,"sp")) >= SYNCTEX_STATUS_OK) { f *= 1.0f; } else if (status<0) { goto report_unit_error; } else if ((status = _synctex_match_string(scanner,"dd")) >= SYNCTEX_STATUS_OK) { f *= 1238.0f/1157*65536.0f; } else if (status<0) { goto report_unit_error; } else if ((status = _synctex_match_string(scanner,"cc")) >= SYNCTEX_STATUS_OK) { f *= 14856.0f/1157*65536; } else if (status<0) { goto report_unit_error; } else if ((status = _synctex_match_string(scanner,"nd")) >= SYNCTEX_STATUS_OK) { f *= 685.0f/642*65536; } else if (status<0) { goto report_unit_error; } else if ((status = _synctex_match_string(scanner,"nc")) >= SYNCTEX_STATUS_OK) { f *= 1370.0f/107*65536; } else if (status<0) { goto report_unit_error; } *value_ref = f; return SYNCTEX_STATUS_OK; } /* parse the post scriptum * SYNCTEX_STATUS_OK is returned on completion * a negative error is returned otherwise */ synctex_status_t _synctex_scan_post_scriptum(synctex_scanner_t scanner) { synctex_status_t status = 0; char * endptr = NULL; #ifdef HAVE_SETLOCALE char * loc = setlocale(LC_NUMERIC, NULL); #endif if (NULL == scanner) { return SYNCTEX_STATUS_BAD_ARGUMENT; } /* Scan the file until a post scriptum line is found */ post_scriptum_not_found: status = _synctex_match_string(scanner,"Post scriptum:"); if (statusunit = strtod(SYNCTEX_CUR,&endptr); #ifdef HAVE_SETLOCALE setlocale(LC_NUMERIC, loc); #endif if (endptr == SYNCTEX_CUR) { _synctex_error("bad magnification in the post scriptum, a float was expected."); return SYNCTEX_STATUS_ERROR; } if (scanner->unit<=0) { _synctex_error("bad magnification in the post scriptum, a positive float was expected."); return SYNCTEX_STATUS_ERROR; } SYNCTEX_CUR = endptr; goto next_line; } if (statusx_offset)); if (statusy_offset)); if (statuscount),(synctex_decoder_t)&_synctex_decode_int); if (status < SYNCTEX_STATUS_EOF) { return status; /* forward the error */ } else if (status < SYNCTEX_STATUS_OK) { /* No Count record found */ status = _synctex_next_line(scanner); /* Advance one more line */ if (statusclass->type) { case synctex_node_type_hbox: if (SYNCTEX_INFO(box) != NULL) { SYNCTEX_HORIZ_V(box) = SYNCTEX_HORIZ(box); SYNCTEX_VERT_V(box) = SYNCTEX_VERT(box); SYNCTEX_WIDTH_V(box) = SYNCTEX_WIDTH(box); SYNCTEX_HEIGHT_V(box) = SYNCTEX_HEIGHT(box); SYNCTEX_DEPTH_V(box) = SYNCTEX_DEPTH(box); return SYNCTEX_STATUS_OK; } return SYNCTEX_STATUS_ERROR; } } return SYNCTEX_STATUS_BAD_ARGUMENT; } /* This method is sent to an horizontal box to setup the visible size * Some box have 0 width but do contain text material. * With this method, one can enlarge the box to contain the given point (h,v). */ synctex_status_t _synctex_hbox_setup_visible(synctex_node_t node,int h, int v) { # ifdef __DARWIN_UNIX03 # pragma unused(v) # endif int itsBtm, itsTop; if (NULL == node || node->class->type != synctex_node_type_hbox) { return SYNCTEX_STATUS_BAD_ARGUMENT; } if (SYNCTEX_WIDTH_V(node)<0) { itsBtm = SYNCTEX_HORIZ_V(node); itsTop = SYNCTEX_HORIZ_V(node)-SYNCTEX_WIDTH_V(node); if (hitsTop) { SYNCTEX_WIDTH_V(node) = SYNCTEX_HORIZ_V(node) - h; } } else { itsBtm = SYNCTEX_HORIZ_V(node); itsTop = SYNCTEX_HORIZ_V(node)+SYNCTEX_WIDTH_V(node); if (hitsTop) { SYNCTEX_WIDTH_V(node) = h - SYNCTEX_HORIZ_V(node); } } return SYNCTEX_STATUS_OK; } /* Here are the control characters that strat each line of the synctex output file. * Their values define the meaning of the line. */ # define SYNCTEX_CHAR_BEGIN_SHEET '{' # define SYNCTEX_CHAR_END_SHEET '}' # define SYNCTEX_CHAR_BEGIN_VBOX '[' # define SYNCTEX_CHAR_END_VBOX ']' # define SYNCTEX_CHAR_BEGIN_HBOX '(' # define SYNCTEX_CHAR_END_HBOX ')' # define SYNCTEX_CHAR_ANCHOR '!' # define SYNCTEX_CHAR_VOID_VBOX 'v' # define SYNCTEX_CHAR_VOID_HBOX 'h' # define SYNCTEX_CHAR_KERN 'k' # define SYNCTEX_CHAR_GLUE 'g' # define SYNCTEX_CHAR_MATH '$' # define SYNCTEX_CHAR_BOUNDARY 'x' # define SYNCTEX_RETURN(STATUS) return STATUS; /* Used when parsing the synctex file. A '{' character has just been parsed. * The purpose is to gobble everything until the closing '}'. * Actually only one nesting depth has been observed when using the clip option * of \includegraphics option. Here we use arbitrary level of depth. */ synctex_status_t _synctex_scan_nested_sheet(synctex_scanner_t scanner) { unsigned int depth = 0; deeper: ++depth; if (_synctex_next_line(scanner)0) { goto scan_next_line; } else { SYNCTEX_RETURN(SYNCTEX_STATUS_OK); } } else if (*SYNCTEX_CUR == SYNCTEX_CHAR_BEGIN_SHEET) { ++SYNCTEX_CUR; goto deeper; } else if (_synctex_next_line(scanner)class->type != synctex_node_type_sheet || _synctex_next_line(scanner)0){ _synctex_error("Uncomplete sheet(0)"); SYNCTEX_RETURN(SYNCTEX_STATUS_ERROR); } goto prepare_loop; } /* The child loop means that we go down one level, when we just created a box node, * the next node created is a child of this box. */ child_loop: if (SYNCTEX_CURclass->type == synctex_node_type_vbox) { #define SYNCTEX_UPDATE_BOX_FRIEND(NODE)\ friend_index = ((SYNCTEX_INFO(NODE))[SYNCTEX_TAG_IDX].INT+(SYNCTEX_INFO(NODE))[SYNCTEX_LINE_IDX].INT)%(scanner->number_of_lists);\ SYNCTEX_SET_FRIEND(NODE,(scanner->lists_of_friends)[friend_index]);\ (scanner->lists_of_friends)[friend_index] = NODE; if (NULL == SYNCTEX_CHILD(parent)) { /* only void boxes are friends */ SYNCTEX_UPDATE_BOX_FRIEND(parent); } child = parent; parent = SYNCTEX_PARENT(child); } else { _synctex_error("Unexpected end of vbox, ignored."); } if (_synctex_next_line(scanner)class->type == synctex_node_type_hbox) { /* Update the mean line number */ synctex_node_t node = SYNCTEX_CHILD(parent); if (node) { unsigned int node_weight = 0; unsigned int cumulated_line_numbers = 0; do { if (synctex_node_type(node)==synctex_node_type_hbox) { if (SYNCTEX_NODE_WEIGHT(node)) { node_weight += SYNCTEX_NODE_WEIGHT(node); cumulated_line_numbers += SYNCTEX_MEAN_LINE(node)*SYNCTEX_NODE_WEIGHT(node); } else { ++node_weight; cumulated_line_numbers += SYNCTEX_MEAN_LINE(node); } } else { ++node_weight; cumulated_line_numbers += SYNCTEX_LINE(node); } } while ((node = SYNCTEX_SIBLING(node))); SYNCTEX_MEAN_LINE(parent)=(cumulated_line_numbers + node_weight/2)/node_weight; SYNCTEX_NODE_WEIGHT(parent)=node_weight; } else { SYNCTEX_MEAN_LINE(parent)=SYNCTEX_LINE(parent); SYNCTEX_NODE_WEIGHT(parent)=1; } if (NULL == child) { /* Only boxes with no children are friends, * boxes with children are indirectly friends through one of their contained nodes. */ SYNCTEX_UPDATE_BOX_FRIEND(parent); } /* setting the next horizontal box at the end ensures that a child is recorded before any of its ancestors. */ SYNCTEX_SET_NEXT_hbox(box,parent); box = parent; child = parent; parent = SYNCTEX_PARENT(child); } else { _synctex_error("Unexpected end of hbox, ignored."); } if (_synctex_next_line(scanner)number_of_lists);\ SYNCTEX_SET_FRIEND(NODE,(scanner->lists_of_friends)[friend_index]);\ (scanner->lists_of_friends)[friend_index] = NODE; SYNCTEX_UPDATE_FRIEND(child); # if SYNCTEX_VERBOSE synctex_node_log(child); # endif goto sibling_loop; } else { _synctex_error("Can't create vbox record."); SYNCTEX_RETURN(SYNCTEX_STATUS_ERROR); } } else if (*SYNCTEX_CUR == SYNCTEX_CHAR_VOID_HBOX) { if (NULL != (child = _synctex_new_void_hbox(scanner)) && NULL != (info = SYNCTEX_INFO(child))) { if (SYNCTEX_DECODE_FAILED(SYNCTEX_TAG_IDX) || SYNCTEX_DECODE_FAILED(SYNCTEX_LINE_IDX) || SYNCTEX_DECODE_FAILED(SYNCTEX_HORIZ_IDX) || SYNCTEX_DECODE_FAILED(SYNCTEX_VERT_IDX) || SYNCTEX_DECODE_FAILED(SYNCTEX_WIDTH_IDX) || SYNCTEX_DECODE_FAILED(SYNCTEX_HEIGHT_IDX) || SYNCTEX_DECODE_FAILED(SYNCTEX_DEPTH_IDX) || _synctex_next_line(scanner)0){ _synctex_error("Uncomplete sheet(0)"); SYNCTEX_RETURN(SYNCTEX_STATUS_ERROR); } else { goto child_loop; } } /* The vertical loop means that we are on the same level, for example when we just ended a box. * If a node is created now, it will be a sibling of the current node, sharing the same parent. */ sibling_loop: if (SYNCTEX_CUR0){ goto sibling_loop; } else { _synctex_error("Uncomplete sheet(2)"); SYNCTEX_RETURN(SYNCTEX_STATUS_ERROR); } } # undef SYNCTEX_DECODE_FAILED } # define SYNCTEX_APPEND_SHEET(SCANNER,SHEET) if (SCANNER->sheet) {\ synctex_node_t last_sheet = SCANNER->sheet;\ synctex_node_t next_sheet = NULL;\ while ((next_sheet = SYNCTEX_SIBLING(last_sheet))) {\ last_sheet = next_sheet;\ }\ SYNCTEX_SET_SIBLING(last_sheet,SHEET);\ } else {\ SCANNER->sheet = SHEET;\ } /* Used when parsing the synctex file */ synctex_status_t _synctex_scan_content(synctex_scanner_t scanner) { synctex_node_t sheet = NULL; synctex_status_t status = 0; if (NULL == scanner) { return SYNCTEX_STATUS_BAD_ARGUMENT; } /* set up the lists of friends */ if (NULL == scanner->lists_of_friends) { scanner->number_of_lists = 1024; scanner->lists_of_friends = (synctex_node_t *)_synctex_malloc(scanner->number_of_lists*sizeof(synctex_node_t)); if (NULL == scanner->lists_of_friends) { _synctex_error("malloc:2"); return SYNCTEX_STATUS_ERROR; } } /* Find where this section starts */ content_not_found: status = _synctex_match_string(scanner,"Content:"); if (status= SYNCTEX_STATUS_OK); goto next_sheet; } int _synctex_open(const char * output, const char * build_directory, char ** synctex_name_ref, gzFile * file_ref, synctex_bool_t add_quotes, synctex_io_mode_t * io_modeRef); /* Where the synctex scanner is created. */ synctex_scanner_t synctex_scanner_new_with_output_file(const char * output, const char * build_directory, int parse) { gzFile file = NULL; char * synctex = NULL; synctex_scanner_t scanner = NULL; synctex_io_mode_t io_mode = 0; /* Here we assume that int are smaller than void * */ if (sizeof(int)>sizeof(void*)) { _synctex_error("INTERNAL INCONSISTENCY: int's are unexpectedly bigger than pointers, bailing out."); return NULL; } /* We ensure that SYNCTEX_BUFFER_SIZE < UINT_MAX, I don't know if it makes sense... */ if (SYNCTEX_BUFFER_SIZE >= UINT_MAX) { _synctex_error("Internal inconsistency, bad SYNCTEX_BUFFER_SIZE (1)"); return NULL; } /* for integers: */ if (SYNCTEX_BUFFER_SIZE < SYNCTEX_BUFFER_MIN_SIZE) { _synctex_error("Internal inconsistency, bad SYNCTEX_BUFFER_SIZE (2)"); return NULL; } /* now open the synctex file */ if (_synctex_open(output,build_directory,&synctex,&file,synctex_ADD_QUOTES,&io_mode) || !file) { if (_synctex_open(output,build_directory,&synctex,&file,synctex_DONT_ADD_QUOTES,&io_mode) || !file) { return NULL; } } scanner = (synctex_scanner_t)_synctex_malloc(sizeof(_synctex_scanner_t)); if (NULL == scanner) { _synctex_error("malloc problem"); free(synctex); gzclose(file); return NULL; } /* make a private copy of output for the scanner */ if (NULL == (scanner->output = (char *)malloc(strlen(output)+1))){ _synctex_error("! synctex_scanner_new_with_output_file: Memory problem (2), scanner's output is not reliable."); } else if (scanner->output != strcpy(scanner->output,output)) { _synctex_error("! synctex_scanner_new_with_output_file: Copy problem, scanner's output is not reliable."); } scanner->synctex = synctex;/* Now the scanner owns synctex */ SYNCTEX_FILE = file; return parse? synctex_scanner_parse(scanner):scanner; } /* This functions opens the file at the "output" given location. * It manages the problem of quoted filenames that appear with pdftex and filenames containing the space character. * In TeXLive 2008, the synctex file created with pdftex did contain unexpected quotes. * This function will remove them if possible. * All the reference arguments will take a value on return. They must be non NULL. * 0 on success, non 0 on error. */ static int __synctex_open(const char * output, char ** synctex_name_ref, gzFile * file_ref, synctex_bool_t add_quotes, synctex_io_mode_t * io_mode_ref) { if (synctex_name_ref && file_ref && io_mode_ref) { /* 1 local variables that uses dynamic memory */ char * synctex_name = NULL; gzFile the_file = NULL; char * quoteless_synctex_name = NULL; size_t size = 0; synctex_io_mode_t io_mode = *io_mode_ref; const char * mode = _synctex_get_io_mode_name(io_mode); /* now create the synctex file name */ size = strlen(output)+strlen(synctex_suffix)+strlen(synctex_suffix_gz)+1; synctex_name = (char *)malloc(size); if (NULL == synctex_name) { _synctex_error("! __synctex_open: Memory problem (1)\n"); return 1; } /* we have reserved for synctex enough memory to copy output (including its 2 eventual quotes), both suffices, * including the terminating character. size is free now. */ if (synctex_name != strcpy(synctex_name,output)) { _synctex_error("! __synctex_open: Copy problem\n"); return_on_error: free(synctex_name); free(quoteless_synctex_name); return 2; } /* remove the last path extension if any */ _synctex_strip_last_path_extension(synctex_name); if (!strlen(synctex_name)) { goto return_on_error; } /* now insert quotes. */ if (add_quotes) { char * quoted = NULL; if (_synctex_copy_with_quoting_last_path_component(synctex_name,"ed,size) || (NULL == quoted)) { /* There was an error or quoting does not make sense: */ goto return_on_error; } quoteless_synctex_name = synctex_name; synctex_name = quoted; } /* Now add to synctex_name the first path extension. */ if (synctex_name != strcat(synctex_name,synctex_suffix)){ _synctex_error("! __synctex_open: Concatenation problem (can't add suffix '%s')\n",synctex_suffix); goto return_on_error; } /* Add to quoteless_synctex_name as well, if relevant. */ if (quoteless_synctex_name && (quoteless_synctex_name != strcat(quoteless_synctex_name,synctex_suffix))){ free(quoteless_synctex_name); quoteless_synctex_name = NULL; } if (NULL == (the_file = gzopen(synctex_name,mode))) { /* Could not open this file */ if (errno != ENOENT) { /* The file does exist, this is a lower level error, I can't do anything. */ _synctex_error("could not open %s, error %i\n",synctex_name,errno); goto return_on_error; } /* Apparently, there is no uncompressed synctex file. Try the compressed version */ if (synctex_name != strcat(synctex_name,synctex_suffix_gz)){ _synctex_error("! __synctex_open: Concatenation problem (can't add suffix '%s')\n",synctex_suffix_gz); goto return_on_error; } io_mode |= synctex_io_gz_mask; mode = _synctex_get_io_mode_name(io_mode); /* the file is a compressed and is a binary file, this caused errors on Windows */ /* Add the suffix to the quoteless_synctex_name as well. */ if (quoteless_synctex_name && (quoteless_synctex_name != strcat(quoteless_synctex_name,synctex_suffix_gz))){ free(quoteless_synctex_name); quoteless_synctex_name = NULL; } if (NULL == (the_file = gzopen(synctex_name,mode))) { /* Could not open this file */ if (errno != ENOENT) { /* The file does exist, this is a lower level error, I can't do anything. */ _synctex_error("Could not open %s, error %i\n",synctex_name,errno); } goto return_on_error; } } /* At this point, the file is properly open. * If we are in the add_quotes mode, we change the file name by removing the quotes. */ if (quoteless_synctex_name) { gzclose(the_file); if (rename(synctex_name,quoteless_synctex_name)) { _synctex_error("Could not rename %s to %s, error %i\n",synctex_name,quoteless_synctex_name,errno); /* We could not rename, reopen the file with the quoted name. */ if (NULL == (the_file = gzopen(synctex_name,mode))) { /* No luck, could not re open this file, something has happened meanwhile */ if (errno != ENOENT) { /* The file does not exist any more, it has certainly be removed somehow * this is a lower level error, I can't do anything. */ _synctex_error("Could not open again %s, error %i\n",synctex_name,errno); } goto return_on_error; } } else { /* The file has been successfully renamed */ if (NULL == (the_file = gzopen(quoteless_synctex_name,mode))) { /* Could not open this file */ if (errno != ENOENT) { /* The file does exist, this is a lower level error, I can't do anything. */ _synctex_error("Could not open renamed %s, error %i\n",quoteless_synctex_name,errno); } goto return_on_error; } /* The quote free file name should replace the old one:*/ free(synctex_name); synctex_name = quoteless_synctex_name; quoteless_synctex_name = NULL; } } /* The operation is successfull, return the arguments by value. */ * file_ref = the_file; * io_mode_ref = io_mode; * synctex_name_ref = synctex_name; return 0; } return 3; /* Bad parameter. */ } /* Opens the ouput file, taking into account the eventual build_directory. * 0 on success, non 0 on error. */ int _synctex_open(const char * output, const char * build_directory, char ** synctex_name_ref, gzFile * file_ref, synctex_bool_t add_quotes, synctex_io_mode_t * io_mode_ref) { # define synctex_name (*synctex_name_ref) # define the_file (*file_ref) int result = __synctex_open(output,synctex_name_ref,file_ref,add_quotes,io_mode_ref); if ((result || !*file_ref) && build_directory && strlen(build_directory)) { char * build_output; const char *lpc; size_t size; synctex_bool_t is_absolute; build_output = NULL; lpc = _synctex_last_path_component(output); size = strlen(build_directory)+strlen(lpc)+2; /* One for the '/' and one for the '\0'. */ is_absolute = _synctex_path_is_absolute(build_directory); if (!is_absolute) { size += strlen(output); } if ((build_output = (char *)malloc(size))) { if (is_absolute) { build_output[0] = '\0'; } else { if (build_output != strcpy(build_output,output)) { free(build_output); return -4; } build_output[lpc-output]='\0'; } if (build_output == strcat(build_output,build_directory)) { /* Append a path separator if necessary. */ if (!SYNCTEX_IS_PATH_SEPARATOR(build_output[strlen(build_directory)-1])) { if (build_output != strcat(build_output,"/")) { free(build_output); return -2; } } /* Append the last path component of the output. */ if (build_output != strcat(build_output,lpc)) { free(build_output); return -3; } result = __synctex_open(build_output,synctex_name_ref,file_ref,add_quotes,io_mode_ref); free(build_output); return result; } free(build_output); } return -1; } return result; # undef synctex_name # undef the_file } /* The scanner destructor */ void synctex_scanner_free(synctex_scanner_t scanner) { if (NULL == scanner) { return; } if (SYNCTEX_FILE) { gzclose(SYNCTEX_FILE); SYNCTEX_FILE = NULL; } SYNCTEX_FREE(scanner->sheet); SYNCTEX_FREE(scanner->input); free(SYNCTEX_START); free(scanner->output_fmt); free(scanner->output); free(scanner->synctex); free(scanner->lists_of_friends); free(scanner); } /* Where the synctex scanner parses the contents of the file. */ synctex_scanner_t synctex_scanner_parse(synctex_scanner_t scanner) { synctex_status_t status = 0; if (!scanner || scanner->flags.has_parsed) { return scanner; } scanner->flags.has_parsed=1; scanner->pre_magnification = 1000; scanner->pre_unit = 8192; scanner->pre_x_offset = scanner->pre_y_offset = 578; /* initialize the offset with a fake unprobable value, * If there is a post scriptum section, this value will be overriden by the real life value */ scanner->x_offset = scanner->y_offset = 6.027e23f; # define DEFINE_synctex_scanner_class(NAME)\ scanner->class[synctex_node_type_##NAME] = synctex_class_##NAME;\ (scanner->class[synctex_node_type_##NAME]).scanner = scanner DEFINE_synctex_scanner_class(sheet); DEFINE_synctex_scanner_class(input); DEFINE_synctex_scanner_class(hbox); DEFINE_synctex_scanner_class(void_hbox); DEFINE_synctex_scanner_class(vbox); DEFINE_synctex_scanner_class(void_vbox); DEFINE_synctex_scanner_class(kern); DEFINE_synctex_scanner_class(glue); DEFINE_synctex_scanner_class(math); DEFINE_synctex_scanner_class(boundary); SYNCTEX_START = (char *)malloc(SYNCTEX_BUFFER_SIZE+1); /* one more character for null termination */ if (NULL == SYNCTEX_START) { _synctex_error("malloc error"); synctex_scanner_free(scanner); return NULL; } SYNCTEX_END = SYNCTEX_START+SYNCTEX_BUFFER_SIZE; /* SYNCTEX_END always points to a null terminating character. * Maybe there is another null terminating character between SYNCTEX_CUR and SYNCTEX_END-1. * At least, we are sure that SYNCTEX_CUR points to a string covering a valid part of the memory. */ *SYNCTEX_END = '\0'; SYNCTEX_CUR = SYNCTEX_END; # if defined(SYNCTEX_USE_CHARINDEX) scanner->charindex_offset = -SYNCTEX_BUFFER_SIZE; # endif status = _synctex_scan_preamble(scanner); if (statuspre_unit)/65536 pt = (scanner->pre_unit)/65781.76 bp * 1 pt = 65536 sp */ if (scanner->pre_unit<=0) { scanner->pre_unit = 8192; } if (scanner->pre_magnification<=0) { scanner->pre_magnification = 1000; } if (scanner->unit <= 0) { /* no post magnification */ scanner->unit = scanner->pre_unit / 65781.76;/* 65781.76 or 65536.0*/ } else { /* post magnification */ scanner->unit *= scanner->pre_unit / 65781.76; } scanner->unit *= scanner->pre_magnification / 1000.0; if (scanner->x_offset > 6e23) { /* no post offset */ scanner->x_offset = scanner->pre_x_offset * (scanner->pre_unit / 65781.76); scanner->y_offset = scanner->pre_y_offset * (scanner->pre_unit / 65781.76); } else { /* post offset */ scanner->x_offset /= 65781.76f; scanner->y_offset /= 65781.76f; } return scanner; #undef SYNCTEX_FILE } /* Scanner accessors. */ int synctex_scanner_pre_x_offset(synctex_scanner_t scanner){ return scanner?scanner->pre_x_offset:0; } int synctex_scanner_pre_y_offset(synctex_scanner_t scanner){ return scanner?scanner->pre_y_offset:0; } int synctex_scanner_x_offset(synctex_scanner_t scanner){ return scanner?scanner->x_offset:0; } int synctex_scanner_y_offset(synctex_scanner_t scanner){ return scanner?scanner->y_offset:0; } float synctex_scanner_magnification(synctex_scanner_t scanner){ return scanner?scanner->unit:1; } void synctex_scanner_display(synctex_scanner_t scanner) { if (NULL == scanner) { return; } printf("The scanner:\noutput:%s\noutput_fmt:%s\nversion:%i\n",scanner->output,scanner->output_fmt,scanner->version); printf("pre_unit:%i\nx_offset:%i\ny_offset:%i\n",scanner->pre_unit,scanner->pre_x_offset,scanner->pre_y_offset); printf("count:%i\npost_magnification:%f\npost_x_offset:%f\npost_y_offset:%f\n", scanner->count,scanner->unit,scanner->x_offset,scanner->y_offset); printf("The input:\n"); SYNCTEX_DISPLAY(scanner->input); if (scanner->count<1000) { printf("The sheets:\n"); SYNCTEX_DISPLAY(scanner->sheet); printf("The friends:\n"); if (scanner->lists_of_friends) { int i = scanner->number_of_lists; synctex_node_t node; while(i--) { printf("Friend index:%i\n",i); node = (scanner->lists_of_friends)[i]; while(node) { printf("%s:%i,%i\n", synctex_node_isa(node), SYNCTEX_TAG(node), SYNCTEX_LINE(node) ); node = SYNCTEX_FRIEND(node); } } } } else { printf("SyncTeX Warning: Too many objects\n"); } } /* Public*/ const char * synctex_scanner_get_name(synctex_scanner_t scanner,int tag) { synctex_node_t input = NULL; if (NULL == scanner) { return NULL; } input = scanner->input; do { if (tag == SYNCTEX_TAG(input)) { return (SYNCTEX_NAME(input)); } } while((input = SYNCTEX_SIBLING(input)) != NULL); return NULL; } int _synctex_scanner_get_tag(synctex_scanner_t scanner,const char * name); int _synctex_scanner_get_tag(synctex_scanner_t scanner,const char * name) { synctex_node_t input = NULL; if (NULL == scanner) { return 0; } input = scanner->input; do { if (_synctex_is_equivalent_file_name(name,(SYNCTEX_NAME(input)))) { return SYNCTEX_TAG(input); } } while((input = SYNCTEX_SIBLING(input)) != NULL); // 2011 version name = _synctex_base_name(name); input = scanner->input; do { if (_synctex_is_equivalent_file_name(name,_synctex_base_name(SYNCTEX_NAME(input)))) { synctex_node_t other_input = input; while((other_input = SYNCTEX_SIBLING(other_input)) != NULL) { if (_synctex_is_equivalent_file_name(name,_synctex_base_name(SYNCTEX_NAME(other_input))) && (strlen(SYNCTEX_NAME(input))!=strlen(SYNCTEX_NAME(other_input)) || strncmp(SYNCTEX_NAME(other_input),SYNCTEX_NAME(input),strlen(SYNCTEX_NAME(input))))) { // There is a second possible candidate return 0; } } return SYNCTEX_TAG(input); } } while((input = SYNCTEX_SIBLING(input)) != NULL); return 0; } int synctex_scanner_get_tag(synctex_scanner_t scanner,const char * name) { size_t char_index = strlen(name); if ((scanner = synctex_scanner_parse(scanner)) && (0 < char_index)) { /* the name is not void */ char_index -= 1; if (!SYNCTEX_IS_PATH_SEPARATOR(name[char_index])) { /* the last character of name is not a path separator */ int result = _synctex_scanner_get_tag(scanner,name); if (result) { return result; } else { /* the given name was not the one known by TeX * try a name relative to the enclosing directory of the scanner->output file */ const char * relative = name; const char * ptr = scanner->output; while((strlen(relative) > 0) && (strlen(ptr) > 0) && (*relative == *ptr)) { relative += 1; ptr += 1; } /* Find the last path separator before relative */ while(relative > name) { if (SYNCTEX_IS_PATH_SEPARATOR(*(relative-1))) { break; } relative -= 1; } if ((relative > name) && (result = _synctex_scanner_get_tag(scanner,relative))) { return result; } if (SYNCTEX_IS_PATH_SEPARATOR(name[0])) { /* No tag found for the given absolute name, * Try each relative path starting from the shortest one */ while(0input:NULL; } const char * synctex_scanner_get_output_fmt(synctex_scanner_t scanner) { return NULL != scanner && scanner->output_fmt?scanner->output_fmt:""; } const char * synctex_scanner_get_output(synctex_scanner_t scanner) { return NULL != scanner && scanner->output?scanner->output:""; } const char * synctex_scanner_get_synctex(synctex_scanner_t scanner) { return NULL != scanner && scanner->synctex?scanner->synctex:""; } # ifdef SYNCTEX_NOTHING # pragma mark - # pragma mark Public node attributes # endif int synctex_node_h(synctex_node_t node){ if (!node) { return 0; } return SYNCTEX_HORIZ(node); } int synctex_node_v(synctex_node_t node){ if (!node) { return 0; } return SYNCTEX_VERT(node); } int synctex_node_width(synctex_node_t node){ if (!node) { return 0; } return SYNCTEX_WIDTH(node); } int synctex_node_box_h(synctex_node_t node){ if (!node) { return 0; } if (SYNCTEX_IS_BOX(node)) { result: return SYNCTEX_HORIZ(node); } if ((node = SYNCTEX_PARENT(node)) && (node->class->type != synctex_node_type_sheet)) { goto result; } return 0; } int synctex_node_box_v(synctex_node_t node){ if (!node) { return 0; } if (SYNCTEX_IS_BOX(node)) { result: return SYNCTEX_VERT(node); } if ((node = SYNCTEX_PARENT(node)) && (node->class->type != synctex_node_type_sheet)) { goto result; } return 0; } int synctex_node_box_width(synctex_node_t node){ if (!node) { return 0; } if (SYNCTEX_IS_BOX(node)) { result: return SYNCTEX_WIDTH(node); } if ((node = SYNCTEX_PARENT(node)) && (node->class->type != synctex_node_type_sheet)) { goto result; } return 0; } int synctex_node_box_height(synctex_node_t node){ if (!node) { return 0; } if (SYNCTEX_IS_BOX(node)) { result: return SYNCTEX_HEIGHT(node); } if ((node = SYNCTEX_PARENT(node)) && (node->class->type != synctex_node_type_sheet)) { goto result; } return 0; } int synctex_node_box_depth(synctex_node_t node){ if (!node) { return 0; } if (SYNCTEX_IS_BOX(node)) { result: return SYNCTEX_DEPTH(node); } if ((node = SYNCTEX_PARENT(node)) && (node->class->type != synctex_node_type_sheet)) { goto result; } return 0; } # ifdef SYNCTEX_NOTHING # pragma mark - # pragma mark Public node visible attributes # endif float synctex_node_visible_h(synctex_node_t node){ if (!node) { return 0; } return SYNCTEX_HORIZ(node)*node->class->scanner->unit+node->class->scanner->x_offset; } float synctex_node_visible_v(synctex_node_t node){ if (!node) { return 0; } return SYNCTEX_VERT(node)*node->class->scanner->unit+node->class->scanner->y_offset; } float synctex_node_visible_width(synctex_node_t node){ if (!node) { return 0; } return SYNCTEX_WIDTH(node)*node->class->scanner->unit; } float synctex_node_box_visible_h(synctex_node_t node){ if (!node) { return 0; } switch(node->class->type) { case synctex_node_type_vbox: case synctex_node_type_void_vbox: case synctex_node_type_void_hbox: return SYNCTEX_HORIZ(node)*node->class->scanner->unit+node->class->scanner->x_offset; case synctex_node_type_hbox: result: return SYNCTEX_HORIZ_V(node)*node->class->scanner->unit+node->class->scanner->x_offset; } if ((node = SYNCTEX_PARENT(node)) && (node->class->type != synctex_node_type_sheet)) { goto result; } return 0; } float synctex_node_box_visible_v(synctex_node_t node){ if (!node) { return 0; } switch(node->class->type) { case synctex_node_type_vbox: case synctex_node_type_void_vbox: case synctex_node_type_void_hbox: return SYNCTEX_VERT(node)*node->class->scanner->unit+node->class->scanner->y_offset; case synctex_node_type_hbox: result: return SYNCTEX_VERT_V(node)*node->class->scanner->unit+node->class->scanner->y_offset; } if ((node = SYNCTEX_PARENT(node)) && (node->class->type != synctex_node_type_sheet)) { goto result; } return 0; } float synctex_node_box_visible_width(synctex_node_t node){ if (!node) { return 0; } switch(node->class->type) { case synctex_node_type_vbox: case synctex_node_type_void_vbox: case synctex_node_type_void_hbox: return SYNCTEX_WIDTH(node)*node->class->scanner->unit; case synctex_node_type_hbox: result: return SYNCTEX_WIDTH_V(node)*node->class->scanner->unit; } if ((node = SYNCTEX_PARENT(node)) && (node->class->type != synctex_node_type_sheet)) { goto result; } return 0; } float synctex_node_box_visible_height(synctex_node_t node){ if (!node) { return 0; } switch(node->class->type) { case synctex_node_type_vbox: case synctex_node_type_void_vbox: case synctex_node_type_void_hbox: return SYNCTEX_HEIGHT(node)*node->class->scanner->unit; case synctex_node_type_hbox: result: return SYNCTEX_HEIGHT_V(node)*node->class->scanner->unit; } if ((node = SYNCTEX_PARENT(node)) && (node->class->type != synctex_node_type_sheet)) { goto result; } return 0; } float synctex_node_box_visible_depth(synctex_node_t node){ if (!node) { return 0; } switch(node->class->type) { case synctex_node_type_vbox: case synctex_node_type_void_vbox: case synctex_node_type_void_hbox: return SYNCTEX_DEPTH(node)*node->class->scanner->unit; case synctex_node_type_hbox: result: return SYNCTEX_DEPTH_V(node)*node->class->scanner->unit; } if ((node = SYNCTEX_PARENT(node)) && (node->class->type != synctex_node_type_sheet)) { goto result; } return 0; } # ifdef SYNCTEX_NOTHING # pragma mark - # pragma mark Other public node attributes # endif int synctex_node_page(synctex_node_t node){ synctex_node_t parent = NULL; if (!node) { return -1; } parent = SYNCTEX_PARENT(node); while(parent) { node = parent; parent = SYNCTEX_PARENT(node); } if (node->class->type == synctex_node_type_sheet) { return SYNCTEX_PAGE(node); } return -1; } synctex_charindex_t synctex_node_charindex(synctex_node_t node) { return node?SYNCTEX_CHARINDEX(node):0; } int synctex_node_tag(synctex_node_t node) { return node?SYNCTEX_TAG(node):-1; } int synctex_node_line(synctex_node_t node) { return node?SYNCTEX_LINE(node):-1; } int synctex_node_mean_line(synctex_node_t node) { return node?(node->class->type==synctex_node_type_hbox?SYNCTEX_MEAN_LINE(node):SYNCTEX_LINE(node)):-1; } int synctex_node_child_count(synctex_node_t node) { return node?(node->class->type==synctex_node_type_hbox?SYNCTEX_NODE_WEIGHT(node):0):-1; } int synctex_node_column(synctex_node_t node) { # ifdef __DARWIN_UNIX03 # pragma unused(node) # endif return -1; } # ifdef SYNCTEX_NOTHING # pragma mark - # pragma mark Sheet # endif synctex_node_t synctex_sheet(synctex_scanner_t scanner,int page) { if (scanner) { synctex_node_t sheet = scanner->sheet; while(sheet) { if (page == SYNCTEX_PAGE(sheet)) { return sheet; } sheet = SYNCTEX_SIBLING(sheet); } } return NULL; } synctex_node_t synctex_sheet_content(synctex_scanner_t scanner,int page) { if (scanner) { return SYNCTEX_CHILD(synctex_sheet(scanner,page)); } return NULL; } # ifdef SYNCTEX_NOTHING # pragma mark - # pragma mark Query # endif synctex_status_t synctex_display_query(synctex_scanner_t scanner,const char * name,int line,int column) { # ifdef __DARWIN_UNIX03 # pragma unused(column) # endif int tag = synctex_scanner_get_tag(scanner,name); size_t size = 0; int friend_index = 0; int max_line = 0; synctex_node_t node = NULL; if (tag == 0) { printf("SyncTeX Warning: No tag for %s\n",name); return -1; } free(SYNCTEX_START); SYNCTEX_CUR = SYNCTEX_END = SYNCTEX_START = NULL; max_line = line < INT_MAX-scanner->number_of_lists ? line+scanner->number_of_lists:INT_MAX; while(linenumber_of_lists); if ((node = (scanner->lists_of_friends)[friend_index])) { do { if ((synctex_node_type(node)>=synctex_node_type_boundary) && (tag == SYNCTEX_TAG(node)) && (line == SYNCTEX_LINE(node))) { if (SYNCTEX_CUR == SYNCTEX_END) { size += 16; SYNCTEX_END = realloc(SYNCTEX_START,size*sizeof(synctex_node_t *)); SYNCTEX_CUR += SYNCTEX_END - SYNCTEX_START; SYNCTEX_START = SYNCTEX_END; SYNCTEX_END = SYNCTEX_START + size*sizeof(synctex_node_t *); } *(synctex_node_t *)SYNCTEX_CUR = node; SYNCTEX_CUR += sizeof(synctex_node_t); } } while ((node = SYNCTEX_FRIEND(node))); if (SYNCTEX_START == NULL) { /* We did not find any matching boundary, retry with glue or kern */ node = (scanner->lists_of_friends)[friend_index];/* no need to test it again, already done */ do { if ((synctex_node_type(node)>=synctex_node_type_kern) && (tag == SYNCTEX_TAG(node)) && (line == SYNCTEX_LINE(node))) { if (SYNCTEX_CUR == SYNCTEX_END) { size += 16; SYNCTEX_END = realloc(SYNCTEX_START,size*sizeof(synctex_node_t *)); SYNCTEX_CUR += SYNCTEX_END - SYNCTEX_START; SYNCTEX_START = SYNCTEX_END; SYNCTEX_END = SYNCTEX_START + size*sizeof(synctex_node_t *); } *(synctex_node_t *)SYNCTEX_CUR = node; SYNCTEX_CUR += sizeof(synctex_node_t); } } while ((node = SYNCTEX_FRIEND(node))); if (SYNCTEX_START == NULL) { /* We did not find any matching glue or kern, retry with boxes */ node = (scanner->lists_of_friends)[friend_index];/* no need to test it again, already done */ do { if ((tag == SYNCTEX_TAG(node)) && (line == SYNCTEX_LINE(node))) { if (SYNCTEX_CUR == SYNCTEX_END) { size += 16; SYNCTEX_END = realloc(SYNCTEX_START,size*sizeof(synctex_node_t *)); SYNCTEX_CUR += SYNCTEX_END - SYNCTEX_START; SYNCTEX_START = SYNCTEX_END; SYNCTEX_END = SYNCTEX_START + size*sizeof(synctex_node_t *); } *(synctex_node_t *)SYNCTEX_CUR = node; SYNCTEX_CUR += sizeof(synctex_node_t); } } while((node = SYNCTEX_FRIEND(node))); } } SYNCTEX_END = SYNCTEX_CUR; /* Now reverse the order to have nodes in display order, and then keep just a few nodes. * Order first the best node. */ if ((SYNCTEX_START) && (SYNCTEX_END)) { unsigned int best_match = -1; unsigned int next_match = -1; unsigned int best_weight = 0; synctex_node_t * best_ref = NULL; synctex_node_t * start_ref = (synctex_node_t *)SYNCTEX_START; synctex_node_t * end_ref = (synctex_node_t *)SYNCTEX_END; --end_ref; while (start_ref < end_ref) { node = *start_ref; *start_ref = *end_ref; *end_ref = node; ++start_ref; --end_ref; } /* Now reorder the nodes to put first the one which fits best. * The idea is to walk along the list of nodes and pick up the first one * which line info is exactly the mean line of its parent, or at least very close. * Then we choose among all such node the one with the maximum number of child nodes. * Then we switch with the first node. */ best_ref = start_ref = (synctex_node_t *)SYNCTEX_START; node = *start_ref; best_match = abs(SYNCTEX_LINE(node)-SYNCTEX_MEAN_LINE(SYNCTEX_PARENT(node))); end_ref = (synctex_node_t *)SYNCTEX_END; while (++start_refbest_weight)) { best_match = next_match; best_ref = start_ref; best_weight = SYNCTEX_NODE_WEIGHT(parent); } } node = *best_ref; *best_ref = *(synctex_node_t *)SYNCTEX_START; *(synctex_node_t *)SYNCTEX_START = node; /* Basically, we keep the first node for each parent. * More precisely, we keep only nodes that are not children of * their predecessor's parent. */ start_ref = (synctex_node_t *)SYNCTEX_START; end_ref = (synctex_node_t *)SYNCTEX_START; next_end: end_ref += 1; /* we allways have start_ref<= end_ref*/ if (end_ref < (synctex_node_t *)SYNCTEX_END) { node = *end_ref; while ((node = SYNCTEX_PARENT(node))) { if (SYNCTEX_PARENT(*start_ref) == node) { goto next_end; } } start_ref += 1; *start_ref = *end_ref; goto next_end; } start_ref += 1; SYNCTEX_END = (char *)start_ref; SYNCTEX_CUR = NULL;// added on behalf of Jose Alliste return (SYNCTEX_END-SYNCTEX_START)/sizeof(synctex_node_t);// added on behalf Jan Sundermeyer } SYNCTEX_CUR = NULL; // return (SYNCTEX_END-SYNCTEX_START)/sizeof(synctex_node_t); removed on behalf Jan Sundermeyer } # if defined(__SYNCTEX_STRONG_DISPLAY_QUERY__) break; # else ++line; # endif } return 0; } synctex_node_t synctex_next_result(synctex_scanner_t scanner) { if (NULL == SYNCTEX_CUR) { SYNCTEX_CUR = SYNCTEX_START; } else { SYNCTEX_CUR+=sizeof(synctex_node_t); } if (SYNCTEX_CUR= scanner->unit) {/* scanner->unit must be >0 */ return 0; } /* Convert the given point to scanner integer coordinates */ hitPoint.h = (h-scanner->x_offset)/scanner->unit; hitPoint.v = (v-scanner->y_offset)/scanner->unit; /* We will store in the scanner's buffer the result of the query. */ free(SYNCTEX_START); SYNCTEX_START = SYNCTEX_END = SYNCTEX_CUR = NULL; /* Find the proper sheet */ sheet = scanner->sheet; while((sheet) && SYNCTEX_PAGE(sheet) != page) { sheet = SYNCTEX_SIBLING(sheet); } if (NULL == sheet) { return -1; } /* Now sheet points to the sheet node with proper page number */ /* Here is how we work: * At first we do not consider the visible box dimensions. This will cover the most frequent cases. * Then we try with the visible box dimensions. * We try to find a non void box containing the hit point. * We browse all the horizontal boxes until we find one containing the hit point. */ if ((node = SYNCTEX_NEXT_hbox(sheet))) { do { if (_synctex_point_in_box(hitPoint,node,synctex_YES)) { /* Maybe the hitPoint belongs to a contained vertical box. */ end: /* This trick is for catching overlapping boxes */ if ((other_node = SYNCTEX_NEXT_hbox(node))) { do { if (_synctex_point_in_box(hitPoint,other_node,synctex_YES)) { node = _synctex_smallest_container(other_node,node); } } while((other_node = SYNCTEX_NEXT_hbox(other_node))); } /* node is the smallest horizontal box that contains hitPoint. */ if ((bestContainer = _synctex_eq_deepest_container(hitPoint,node,synctex_YES))) { node = bestContainer; } _synctex_eq_get_closest_children_in_box(hitPoint,node,&bestNodes,&bestDistances,synctex_YES); if (bestNodes.right && bestNodes.left) { if ((SYNCTEX_TAG(bestNodes.right)!=SYNCTEX_TAG(bestNodes.left)) || (SYNCTEX_LINE(bestNodes.right)!=SYNCTEX_LINE(bestNodes.left)) || (SYNCTEX_COLUMN(bestNodes.right)!=SYNCTEX_COLUMN(bestNodes.left))) { if ((SYNCTEX_START = malloc(2*sizeof(synctex_node_t)))) { if (bestDistances.left>bestDistances.right) { ((synctex_node_t *)SYNCTEX_START)[0] = bestNodes.right; ((synctex_node_t *)SYNCTEX_START)[1] = bestNodes.left; } else { ((synctex_node_t *)SYNCTEX_START)[0] = bestNodes.left; ((synctex_node_t *)SYNCTEX_START)[1] = bestNodes.right; } SYNCTEX_END = SYNCTEX_START + 2*sizeof(synctex_node_t); SYNCTEX_CUR = NULL; return (SYNCTEX_END-SYNCTEX_START)/sizeof(synctex_node_t); } return SYNCTEX_STATUS_ERROR; } /* both nodes have the same input coordinates * We choose the one closest to the hit point */ if (bestDistances.left>bestDistances.right) { bestNodes.left = bestNodes.right; } bestNodes.right = NULL; } else if (bestNodes.right) { bestNodes.left = bestNodes.right; } else if (!bestNodes.left){ bestNodes.left = node; } if ((SYNCTEX_START = malloc(sizeof(synctex_node_t)))) { * (synctex_node_t *)SYNCTEX_START = bestNodes.left; SYNCTEX_END = SYNCTEX_START + sizeof(synctex_node_t); SYNCTEX_CUR = NULL; return (SYNCTEX_END-SYNCTEX_START)/sizeof(synctex_node_t); } return SYNCTEX_STATUS_ERROR; } } while ((node = SYNCTEX_NEXT_hbox(node))); /* All the horizontal boxes have been tested, * None of them contains the hit point. */ } /* We are not lucky */ if ((node = SYNCTEX_CHILD(sheet))) { goto end; } return 0; } # ifdef SYNCTEX_NOTHING # pragma mark - # pragma mark Utilities # endif /* Rougly speaking, this is: * node's h coordinate - hitPoint's h coordinate. * If node is to the right of the hit point, then this distance is positive, * if node is to the left of the hit point, this distance is negative.*/ int _synctex_point_h_distance(synctex_point_t hitPoint, synctex_node_t node, synctex_bool_t visible); int _synctex_point_h_distance(synctex_point_t hitPoint, synctex_node_t node, synctex_bool_t visible) { if (node) { int min,med,max; switch(node->class->type) { /* The distance between a point and a box is special. * It is not the euclidian distance, nor something similar. * We have to take into account the particular layout, * and the box hierarchy. * Given a box, there are 9 regions delimited by the lines of the edges of the box. * The origin being at the top left corner of the page, * we also give names to the vertices of the box. * * 1 | 2 | 3 * ---A---B---> * 4 | 5 | 6 * ---C---D---> * 7 | 8 | 9 * v v */ case synctex_node_type_hbox: /* getting the box bounds, taking into account negative width, height and depth. */ min = visible?SYNCTEX_HORIZ_V(node):SYNCTEX_HORIZ(node); max = min + (visible?SYNCTEX_ABS_WIDTH_V(node):SYNCTEX_ABS_WIDTH(node)); /* We allways have min <= max */ if (hitPoint.h 0 */ } else if (hitPoint.h>max) { return max - hitPoint.h; /* regions 3+6+9, result is < 0 */ } else { return 0; /* regions 2+5+8, inside the box, except for vertical coordinates */ } break; case synctex_node_type_vbox: case synctex_node_type_void_vbox: case synctex_node_type_void_hbox: /* getting the box bounds, taking into account negative width, height and depth. * For these boxes, no visible dimension available */ min = SYNCTEX_HORIZ(node); max = min + SYNCTEX_ABS_WIDTH(node); /* We allways have min <= max */ if (hitPoint.h 0 */ } else if (hitPoint.h>max) { return max - hitPoint.h; /* regions 3+6+9, result is < 0 */ } else { return 0; /* regions 2+5+8, inside the box, except for vertical coordinates */ } break; case synctex_node_type_kern: /* IMPORTANT NOTICE: the location of the kern is recorded AFTER the move. * The distance to the kern is very special, * in general, there is no text material in the kern, * this is why we compute the offset relative to the closest edge of the kern.*/ max = SYNCTEX_WIDTH(node); if (max<0) { min = SYNCTEX_HORIZ(node); max = min - max; } else { min = -max; max = SYNCTEX_HORIZ(node); min += max; } med = (min+max)/2; /* positive kern: '.' means text, '>' means kern offset * ............. * min>>>>med>>>>max * ............... * negative kern: '.' means text, '<' means kern offset * ............................ * min<<<max) { return max - hitPoint.h - 1; /* same kind of penalty */ } else if (hitPoint.h>med) { /* do things like if the node had 0 width and was placed at the max edge + 1*/ return max - hitPoint.h + 1; /* positive, the kern is to the right of the hitPoint */ } else { return min - hitPoint.h - 1; /* negative, the kern is to the left of the hitPoint */ } case synctex_node_type_glue: case synctex_node_type_math: return SYNCTEX_HORIZ(node) - hitPoint.h; } } return INT_MAX;/* We always assume that the node is faraway to the right*/ } /* Rougly speaking, this is: * node's v coordinate - hitPoint's v coordinate. * If node is at the top of the hit point, then this distance is positive, * if node is at the bottom of the hit point, this distance is negative.*/ int _synctex_point_v_distance(synctex_point_t hitPoint, synctex_node_t node,synctex_bool_t visible); int _synctex_point_v_distance(synctex_point_t hitPoint, synctex_node_t node,synctex_bool_t visible) { # ifdef __DARWIN_UNIX03 # pragma unused(visible) # endif if (node) { int min,max; switch(node->class->type) { /* The distance between a point and a box is special. * It is not the euclidian distance, nor something similar. * We have to take into account the particular layout, * and the box hierarchy. * Given a box, there are 9 regions delimited by the lines of the edges of the box. * The origin being at the top left corner of the page, * we also give names to the vertices of the box. * * 1 | 2 | 3 * ---A---B---> * 4 | 5 | 6 * ---C---D---> * 7 | 8 | 9 * v v */ case synctex_node_type_hbox: /* getting the box bounds, taking into account negative width, height and depth. */ min = SYNCTEX_VERT_V(node); max = min + SYNCTEX_ABS_DEPTH_V(node); min -= SYNCTEX_ABS_HEIGHT_V(node); /* We allways have min <= max */ if (hitPoint.v 0 */ } else if (hitPoint.v>max) { return max - hitPoint.v; /* regions 7+8+9, result is < 0 */ } else { return 0; /* regions 4.5.6, inside the box, except for horizontal coordinates */ } break; case synctex_node_type_vbox: case synctex_node_type_void_vbox: case synctex_node_type_void_hbox: /* getting the box bounds, taking into account negative width, height and depth. */ min = SYNCTEX_VERT(node); max = min + SYNCTEX_ABS_DEPTH(node); min -= SYNCTEX_ABS_HEIGHT(node); /* We allways have min <= max */ if (hitPoint.v 0 */ } else if (hitPoint.v>max) { return max - hitPoint.v; /* regions 7+8+9, result is < 0 */ } else { return 0; /* regions 4.5.6, inside the box, except for horizontal coordinates */ } break; case synctex_node_type_kern: case synctex_node_type_glue: case synctex_node_type_math: return SYNCTEX_VERT(node) - hitPoint.v; } } return INT_MAX;/* We always assume that the node is faraway to the top*/ } SYNCTEX_INLINE static synctex_node_t _synctex_smallest_container(synctex_node_t node, synctex_node_t other_node) { float height, other_height; if (SYNCTEX_ABS_WIDTH(node)SYNCTEX_ABS_WIDTH(other_node)) { return other_node; } height = SYNCTEX_ABS_DEPTH(node) + SYNCTEX_ABS_HEIGHT(node); other_height = SYNCTEX_ABS_DEPTH(other_node) + SYNCTEX_ABS_HEIGHT(other_node); if (heightother_height) { return other_node; } return node; } synctex_bool_t _synctex_point_in_box(synctex_point_t hitPoint, synctex_node_t node, synctex_bool_t visible) { if (node) { if (0 == _synctex_point_h_distance(hitPoint,node,visible) && 0 == _synctex_point_v_distance(hitPoint,node,visible)) { return synctex_YES; } } return synctex_NO; } int _synctex_node_distance_to_point(synctex_point_t hitPoint, synctex_node_t node, synctex_bool_t visible) { # ifdef __DARWIN_UNIX03 # pragma unused(visible) # endif int result = INT_MAX; /* when the distance is meaning less (sheet, input...) */ if (node) { int minH,maxH,minV,maxV; switch(node->class->type) { /* The distance between a point and a box is special. * It is not the euclidian distance, nor something similar. * We have to take into account the particular layout, * and the box hierarchy. * Given a box, there are 9 regions delimited by the lines of the edges of the box. * The origin being at the top left corner of the page, * we also give names to the vertices of the box. * * 1 | 2 | 3 * ---A---B---> * 4 | 5 | 6 * ---C---D---> * 7 | 8 | 9 * v v * In each region, there is a different formula. * In the end we have a continuous distance which may not be a mathematical distance but who cares. */ case synctex_node_type_vbox: case synctex_node_type_void_vbox: case synctex_node_type_hbox: case synctex_node_type_void_hbox: /* getting the box bounds, taking into account negative widths. */ minH = SYNCTEX_HORIZ(node); maxH = minH + SYNCTEX_ABS_WIDTH(node); minV = SYNCTEX_VERT(node); maxV = minV + SYNCTEX_ABS_DEPTH(node); minV -= SYNCTEX_ABS_HEIGHT(node); /* In what region is the point hitPoint=(H,V) ? */ if (hitPoint.vminV) { result = hitPoint.v - minV + minH - hitPoint.h; } else { result = minV - hitPoint.v + minH - hitPoint.h; } } else if (hitPoint.h>maxH) { if (hitPoint.v>minV) { result = hitPoint.v - minV + hitPoint.h - maxH; } else { result = minV - hitPoint.v + hitPoint.h - maxH; } } else if (hitPoint.v>minV) { result = hitPoint.v - minV; } else { result = minV - hitPoint.v; } break; case synctex_node_type_glue: case synctex_node_type_math: minH = SYNCTEX_HORIZ(node); minV = SYNCTEX_VERT(node); if (hitPoint.hminV) { result = hitPoint.v - minV + minH - hitPoint.h; } else { result = minV - hitPoint.v + minH - hitPoint.h; } } else if (hitPoint.v>minV) { result = hitPoint.v - minV + hitPoint.h - minH; } else { result = minV - hitPoint.v + hitPoint.h - minH; } break; } } return result; } static synctex_node_t _synctex_eq_deepest_container(synctex_point_t hitPoint,synctex_node_t node, synctex_bool_t visible) { if (node) { synctex_node_t result = NULL; synctex_node_t child = NULL; switch(node->class->type) { case synctex_node_type_vbox: case synctex_node_type_hbox: /* test the deep nodes first */ if ((child = SYNCTEX_CHILD(node))) { do { if ((result = _synctex_eq_deepest_container(hitPoint,child,visible))) { return result; } } while((child = SYNCTEX_SIBLING(child))); } /* is the hit point inside the box? */ if (_synctex_point_in_box(hitPoint,node,visible)) { /* for vboxes we try to use some node inside. * Walk through the list of siblings until we find the closest one. * Only consider siblings with children. */ if ((node->class->type == synctex_node_type_vbox) && (child = SYNCTEX_CHILD(node))) { int bestDistance = INT_MAX; do { if (SYNCTEX_CHILD(child)) { int distance = _synctex_node_distance_to_point(hitPoint,child,visible); if (distance < bestDistance) { bestDistance = distance; node = child; } } } while((child = SYNCTEX_SIBLING(child))); } return node; } } } return NULL; } /* Compares the locations of the hitPoint with the locations of the various nodes contained in the box. * As it is an horizontal box, we only compare horizontal coordinates. */ SYNCTEX_INLINE static int __synctex_eq_get_closest_children_in_hbox(synctex_point_t hitPoint, synctex_node_t node, synctex_node_set_t* bestNodesRef,synctex_distances_t* bestDistancesRef, synctex_bool_t visible); SYNCTEX_INLINE static int __synctex_eq_get_closest_children_in_hbox(synctex_point_t hitPoint, synctex_node_t node, synctex_node_set_t* bestNodesRef,synctex_distances_t* bestDistancesRef, synctex_bool_t visible) { int result = 0; if ((node = SYNCTEX_CHILD(node))) { do { int off7 = _synctex_point_h_distance(hitPoint,node,visible); if (off7 > 0) { /* node is to the right of the hit point. * We compare node and the previously recorded one, through the recorded distance. * If the nodes have the same tag, prefer the one with the smallest line number, * if the nodes also have the same line number, prefer the one with the smallest column. */ if (bestDistancesRef->right > off7) { bestDistancesRef->right = off7; bestNodesRef->right = node; result |= SYNCTEX_MASK_RIGHT; } else if (bestDistancesRef->right == off7 && bestNodesRef->right) { if (SYNCTEX_TAG(bestNodesRef->right) == SYNCTEX_TAG(node) && (SYNCTEX_LINE(bestNodesRef->right) > SYNCTEX_LINE(node) || (SYNCTEX_LINE(bestNodesRef->right) == SYNCTEX_LINE(node) && SYNCTEX_COLUMN(bestNodesRef->right) > SYNCTEX_COLUMN(node)))) { bestNodesRef->right = node; result |= SYNCTEX_MASK_RIGHT; } } } else if (off7 == 0) { /* hitPoint is inside node. */ bestDistancesRef->left = bestDistancesRef->right = 0; bestNodesRef->left = node; bestNodesRef->right = NULL; result |= SYNCTEX_MASK_LEFT; } else { /* here off7 < 0, hitPoint is to the right of node */ off7 = -off7; if (bestDistancesRef->left > off7) { bestDistancesRef->left = off7; bestNodesRef->left = node; result |= SYNCTEX_MASK_LEFT; } else if (bestDistancesRef->left == off7 && bestNodesRef->left) { if (SYNCTEX_TAG(bestNodesRef->left) == SYNCTEX_TAG(node) && (SYNCTEX_LINE(bestNodesRef->left) > SYNCTEX_LINE(node) || (SYNCTEX_LINE(bestNodesRef->left) == SYNCTEX_LINE(node) && SYNCTEX_COLUMN(bestNodesRef->left) > SYNCTEX_COLUMN(node)))) { bestNodesRef->left = node; result |= SYNCTEX_MASK_LEFT; } } } } while((node = SYNCTEX_SIBLING(node))); if (result & SYNCTEX_MASK_LEFT) { /* the left node is new, try to narrow the result */ if ((node = _synctex_eq_deepest_container(hitPoint,bestNodesRef->left,visible))) { bestNodesRef->left = node; } if ((node = _synctex_eq_closest_child(hitPoint,bestNodesRef->left,visible))) { bestNodesRef->left = node; } } if (result & SYNCTEX_MASK_RIGHT) { /* the right node is new, try to narrow the result */ if ((node = _synctex_eq_deepest_container(hitPoint,bestNodesRef->right,visible))) { bestNodesRef->right = node; } if ((node = _synctex_eq_closest_child(hitPoint,bestNodesRef->right,visible))) { bestNodesRef->right = node; } } } return result; } SYNCTEX_INLINE static int __synctex_eq_get_closest_children_in_vbox(synctex_point_t hitPoint, synctex_node_t node, synctex_node_set_t* bestNodesRef,synctex_distances_t* bestDistancesRef,synctex_bool_t visible); SYNCTEX_INLINE static int __synctex_eq_get_closest_children_in_vbox(synctex_point_t hitPoint, synctex_node_t node, synctex_node_set_t* bestNodesRef,synctex_distances_t* bestDistancesRef,synctex_bool_t visible) { int result = 0; if ((node = SYNCTEX_CHILD(node))) { do { int off7 = _synctex_point_v_distance(hitPoint,node,visible);/* this is what makes the difference with the h version above */ if (off7 > 0) { /* node is to the top of the hit point (below because TeX is oriented from top to bottom. * We compare node and the previously recorded one, through the recorded distance. * If the nodes have the same tag, prefer the one with the smallest line number, * if the nodes also have the same line number, prefer the one with the smallest column. */ if (bestDistancesRef->right > off7) { bestDistancesRef->right = off7; bestNodesRef->right = node; result |= SYNCTEX_MASK_RIGHT; } else if (bestDistancesRef->right == off7 && bestNodesRef->right) { if (SYNCTEX_TAG(bestNodesRef->right) == SYNCTEX_TAG(node) && (SYNCTEX_LINE(bestNodesRef->right) > SYNCTEX_LINE(node) || (SYNCTEX_LINE(bestNodesRef->right) == SYNCTEX_LINE(node) && SYNCTEX_COLUMN(bestNodesRef->right) > SYNCTEX_COLUMN(node)))) { bestNodesRef->right = node; result |= SYNCTEX_MASK_RIGHT; } } } else if (off7 == 0) { bestDistancesRef->left = bestDistancesRef->right = 0; bestNodesRef->left = node; bestNodesRef->right = NULL; result |= SYNCTEX_MASK_LEFT; } else { /* here off7 < 0 */ off7 = -off7; if (bestDistancesRef->left > off7) { bestDistancesRef->left = off7; bestNodesRef->left = node; result |= SYNCTEX_MASK_LEFT; } else if (bestDistancesRef->left == off7 && bestNodesRef->left) { if (SYNCTEX_TAG(bestNodesRef->left) == SYNCTEX_TAG(node) && (SYNCTEX_LINE(bestNodesRef->left) > SYNCTEX_LINE(node) || (SYNCTEX_LINE(bestNodesRef->left) == SYNCTEX_LINE(node) && SYNCTEX_COLUMN(bestNodesRef->left) > SYNCTEX_COLUMN(node)))) { bestNodesRef->left = node; result |= SYNCTEX_MASK_LEFT; } } } } while((node = SYNCTEX_SIBLING(node))); if (result & SYNCTEX_MASK_LEFT) { /* the left node is new, try to narrow the result */ if ((node = _synctex_eq_deepest_container(hitPoint,bestNodesRef->left,visible))) { bestNodesRef->left = node; } if ((node = _synctex_eq_closest_child(hitPoint,bestNodesRef->left,visible))) { bestNodesRef->left = node; } } if (result & SYNCTEX_MASK_RIGHT) { /* the right node is new, try to narrow the result */ if ((node = _synctex_eq_deepest_container(hitPoint,bestNodesRef->right,visible))) { bestNodesRef->right = node; } if ((node = _synctex_eq_closest_child(hitPoint,bestNodesRef->right,visible))) { bestNodesRef->right = node; } } } return result; } SYNCTEX_INLINE static int _synctex_eq_get_closest_children_in_box(synctex_point_t hitPoint, synctex_node_t node, synctex_node_set_t* bestNodesRef,synctex_distances_t* bestDistancesRef,synctex_bool_t visible) { if (node) { switch(node->class->type) { case synctex_node_type_hbox: return __synctex_eq_get_closest_children_in_hbox(hitPoint, node, bestNodesRef, bestDistancesRef,visible); case synctex_node_type_vbox: return __synctex_eq_get_closest_children_in_vbox(hitPoint, node, bestNodesRef, bestDistancesRef,visible); } } return 0; } SYNCTEX_INLINE static synctex_node_t __synctex_eq_closest_child(synctex_point_t hitPoint, synctex_node_t node,int* distanceRef, synctex_bool_t visible); SYNCTEX_INLINE static synctex_node_t __synctex_eq_closest_child(synctex_point_t hitPoint, synctex_node_t node,int* distanceRef, synctex_bool_t visible) { synctex_node_t best_node = NULL; if ((node = SYNCTEX_CHILD(node))) { do { int distance = _synctex_node_distance_to_point(hitPoint,node,visible); synctex_node_t candidate = NULL; if (distance<=*distanceRef) { *distanceRef = distance; best_node = node; } switch(node->class->type) { case synctex_node_type_vbox: case synctex_node_type_hbox: if ((candidate = __synctex_eq_closest_child(hitPoint,node,distanceRef,visible))) { best_node = candidate; } } } while((node = SYNCTEX_SIBLING(node))); } return best_node; } SYNCTEX_INLINE static synctex_node_t _synctex_eq_closest_child(synctex_point_t hitPoint,synctex_node_t node, synctex_bool_t visible) { if (node) { switch(node->class->type) { case synctex_node_type_hbox: case synctex_node_type_vbox: { int best_distance = INT_MAX; synctex_node_t best_node = __synctex_eq_closest_child(hitPoint,node,&best_distance,visible); if ((best_node)) { synctex_node_t child = NULL; switch(best_node->class->type) { case synctex_node_type_vbox: case synctex_node_type_hbox: if ((child = SYNCTEX_CHILD(best_node))) { best_distance = _synctex_node_distance_to_point(hitPoint,child,visible); while((child = SYNCTEX_SIBLING(child))) { int distance = _synctex_node_distance_to_point(hitPoint,child,visible); if (distance<=best_distance) { best_distance = distance; best_node = child; } } } } } return best_node; } } } return NULL; } # ifdef SYNCTEX_NOTHING # pragma mark - # pragma mark Updater # endif typedef int (*synctex_fprintf_t)(void *, const char * , ...); /* print formatted to either FILE * or gzFile */ # define SYNCTEX_BITS_PER_BYTE 8 struct __synctex_updater_t { gzFile file; /* the foo.synctex or foo.synctex.gz I/O identifier */ synctex_fprintf_t fprintf; /* either fprintf or gzprintf */ int length; /* the number of chars appended */ struct _flags { unsigned int no_gz:1; /* Whether zlib is used or not */ unsigned int reserved:SYNCTEX_BITS_PER_BYTE*sizeof(int)-1; /* Align */ } flags; }; # define SYNCTEX_FILE updater->file # define SYNCTEX_NO_GZ ((updater->flags).no_gz) # define SYNCTEX_fprintf (*(updater->fprintf)) synctex_updater_t synctex_updater_new_with_output_file(const char * output, const char * build_directory) { synctex_updater_t updater = NULL; char * synctex = NULL; synctex_io_mode_t io_mode = 0; const char * mode = NULL; /* prepare the updater, the memory is the only one dynamically allocated */ updater = (synctex_updater_t)_synctex_malloc(sizeof(synctex_updater_t)); if (NULL == updater) { _synctex_error("! synctex_updater_new_with_file: malloc problem"); return NULL; } if (_synctex_open(output,build_directory,&synctex,&SYNCTEX_FILE,synctex_ADD_QUOTES,&io_mode) && _synctex_open(output,build_directory,&synctex,&SYNCTEX_FILE,synctex_DONT_ADD_QUOTES,&io_mode)) { return_on_error: free(updater); updater = NULL; return NULL; } /* OK, the file exists, we close it and reopen it with the correct mode. * The receiver is now the owner of the "synctex" variable. */ gzclose(SYNCTEX_FILE); SYNCTEX_FILE = NULL; SYNCTEX_NO_GZ = (io_mode&synctex_io_gz_mask)?synctex_NO:synctex_YES; mode = _synctex_get_io_mode_name(io_mode|synctex_io_append_mask);/* either "a" or "ab", depending on the file extension */ if (SYNCTEX_NO_GZ) { if (NULL == (SYNCTEX_FILE = (void *)fopen(synctex,mode))) { no_write_error: _synctex_error("! synctex_updater_new_with_file: Can't append to %s",synctex); free(synctex); goto return_on_error; } updater->fprintf = (synctex_fprintf_t)(&fprintf); } else { if (NULL == (SYNCTEX_FILE = (void *)gzopen(synctex,mode))) { goto no_write_error; } updater->fprintf = (synctex_fprintf_t)(&gzprintf); } printf("SyncTeX: updating %s...",synctex); free(synctex); return updater; } void synctex_updater_append_magnification(synctex_updater_t updater, char * magnification){ if (NULL==updater) { return; } if (magnification && strlen(magnification)) { updater->length += SYNCTEX_fprintf(SYNCTEX_FILE,"Magnification:%s\n",magnification); } } void synctex_updater_append_x_offset(synctex_updater_t updater, char * x_offset){ if (NULL==updater) { return; } if (x_offset && strlen(x_offset)) { updater->length += SYNCTEX_fprintf(SYNCTEX_FILE,"X Offset:%s\n",x_offset); } } void synctex_updater_append_y_offset(synctex_updater_t updater, char * y_offset){ if (NULL==updater) { return; } if (y_offset && strlen(y_offset)) { updater->length += SYNCTEX_fprintf(SYNCTEX_FILE,"Y Offset:%s\n",y_offset); } } void synctex_updater_free(synctex_updater_t updater){ if (NULL==updater) { return; } if (updater->length>0) { SYNCTEX_fprintf(SYNCTEX_FILE,"!%i\n",updater->length); } if (SYNCTEX_NO_GZ) { fclose((FILE *)SYNCTEX_FILE); } else { gzclose((gzFile)SYNCTEX_FILE); } free(updater); printf("... done.\n"); return; } qpdfview-0.4.18/synctex/synctex_parser.h0000644000000000000000000003711413516127411016505 0ustar 00000000000000/* Copyright (c) 2008, 2009, 2010 , 2011 jerome DOT laurens AT u-bourgogne DOT fr This file is part of the SyncTeX package. Latest Revision: Tue Jun 14 08:23:30 UTC 2011 Version: 1.18 See synctex_parser_readme.txt for more details License: -------- Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE Except as contained in this notice, the name of the copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from the copyright holder. Acknowledgments: ---------------- The author received useful remarks from the pdfTeX developers, especially Hahn The Thanh, and significant help from XeTeX developer Jonathan Kew Nota Bene: ---------- If you include or use a significant part of the synctex package into a software, I would appreciate to be listed as contributor and see "SyncTeX" highlighted. Version 1 Thu Jun 19 09:39:21 UTC 2008 */ #ifndef __SYNCTEX_PARSER__ # define __SYNCTEX_PARSER__ #ifdef __cplusplus extern "C" { #endif # define SYNCTEX_VERSION_STRING "1.18" /* synctex_node_t is the type for all synctex nodes. * The synctex file is parsed into a tree of nodes, either sheet, boxes, math nodes... */ typedef struct _synctex_node * synctex_node_t; /* The main synctex object is a scanner * Its implementation is considered private. * The basic workflow is * - create a "synctex scanner" with the contents of a file * - perform actions on that scanner like display or edit queries * - free the scanner when the work is done */ typedef struct __synctex_scanner_t _synctex_scanner_t; typedef _synctex_scanner_t * synctex_scanner_t; /* This is the designated method to create a new synctex scanner object. * output is the pdf/dvi/xdv file associated to the synctex file. * If necessary, it can be the tex file that originated the synctex file * but this might cause problems if the \jobname has a custom value. * Despite this method can accept a relative path in practice, * you should only pass a full path name. * The path should be encoded by the underlying file system, * assuming that it is based on 8 bits characters, including UTF8, * not 16 bits nor 32 bits. * The last file extension is removed and replaced by the proper extension. * Then the private method _synctex_scanner_new_with_contents_of_file is called. * NULL is returned in case of an error or non existent file. * Once you have a scanner, use the synctex_display_query and synctex_edit_query below. * The new "build_directory" argument is available since version 1.5. * It is the directory where all the auxiliary stuff is created. * Sometimes, the synctex output file and the pdf, dvi or xdv files are not created in the same directory. * This is the case in MikTeX (I will include this into TeX Live). * This directory path can be nil, it will be ignored then. * It can be either absolute or relative to the directory of the output pdf (dvi or xdv) file. * If no synctex file is found in the same directory as the output file, then we try to find one in the build directory. * Please note that this new "build_directory" is provided as a convenient argument but should not be used. * In fact, this is implempented as a work around of a bug in MikTeX where the synctex file does not follow the pdf file. * The new "parse" argument is available since version 1.5. In general, use 1. * Use 0 only if you do not want to parse the content but just check the existence. */ synctex_scanner_t synctex_scanner_new_with_output_file(const char * output, const char * build_directory, int parse); /* This is the designated method to delete a synctex scanner object. * Frees all the memory, you must call it when you are finished with the scanner. */ void synctex_scanner_free(synctex_scanner_t scanner); /* Send this message to force the scanner to parse the contents of the synctex output file. * Nothing is performed if the file was already parsed. * In each query below, this message is sent, but if you need to access information more directly, * you must be sure that the parsing did occur. * Usage: * if((my_scanner = synctex_scanner_parse(my_scanner))) { * continue with my_scanner... * } else { * there was a problem * } */ synctex_scanner_t synctex_scanner_parse(synctex_scanner_t scanner); /* The main entry points. * Given the file name, a line and a column number, synctex_display_query returns the number of nodes * satisfying the contrain. Use code like * * if(synctex_display_query(scanner,name,line,column)>0) { * synctex_node_t node; * while((node = synctex_next_result(scanner))) { * // do something with node * ... * } * } * * For example, one can * - highlight each resulting node in the output, using synctex_node_h and synctex_node_v * - highlight all the rectangles enclosing those nodes, using synctex_box_... functions * - highlight just the character using that information * * Given the page and the position in the page, synctex_edit_query returns the number of nodes * satisfying the contrain. Use code like * * if(synctex_edit_query(scanner,page,h,v)>0) { * synctex_node_t node; * while(node = synctex_next_result(scanner)) { * // do something with node * ... * } * } * * For example, one can * - highlight each resulting line in the input, * - highlight just the character using that information * * page is 1 based * h and v are coordinates in 72 dpi unit, relative to the top left corner of the page. * If you make a new query, the result of the previous one is discarded. * If one of this function returns a non positive integer, * it means that an error occurred. * * Both methods are conservative, in the sense that matching is weak. * If the exact column number is not found, there will be an answer with the whole line. * * Sumatra-PDF, Skim, iTeXMac2 and Texworks are examples of open source software that use this library. * You can browse their code for a concrete implementation. */ typedef long synctex_status_t; synctex_status_t synctex_display_query(synctex_scanner_t scanner,const char * name,int line,int column); synctex_status_t synctex_edit_query(synctex_scanner_t scanner,int page,float h,float v); synctex_node_t synctex_next_result(synctex_scanner_t scanner); /* Display all the information contained in the scanner object. * If the records are too numerous, only the first ones are displayed. * This is mainly for informatinal purpose to help developers. */ void synctex_scanner_display(synctex_scanner_t scanner); /* The x and y offset of the origin in TeX coordinates. The magnification These are used by pdf viewers that want to display the real box size. For example, getting the horizontal coordinates of a node would require synctex_node_box_h(node)*synctex_scanner_magnification(scanner)+synctex_scanner_x_offset(scanner) Getting its TeX width would simply require synctex_node_box_width(node)*synctex_scanner_magnification(scanner) but direct methods are available for that below. */ int synctex_scanner_x_offset(synctex_scanner_t scanner); int synctex_scanner_y_offset(synctex_scanner_t scanner); float synctex_scanner_magnification(synctex_scanner_t scanner); /* Managing the input file names. * Given a tag, synctex_scanner_get_name will return the corresponding file name. * Conversely, given a file name, synctex_scanner_get_tag will retur, the corresponding tag. * The file name must be the very same as understood by TeX. * For example, if you \input myDir/foo.tex, the file name is myDir/foo.tex. * No automatic path expansion is performed. * Finally, synctex_scanner_input is the first input node of the scanner. * To browse all the input node, use a loop like * * if((input_node = synctex_scanner_input(scanner))){ * do { * blah * } while((input_node=synctex_node_sibling(input_node))); * } * * The output is the name that was used to create the scanner. * The synctex is the real name of the synctex file, * it was obtained from output by setting the proper file extension. */ const char * synctex_scanner_get_name(synctex_scanner_t scanner,int tag); int synctex_scanner_get_tag(synctex_scanner_t scanner,const char * name); synctex_node_t synctex_scanner_input(synctex_scanner_t scanner); const char * synctex_scanner_get_output(synctex_scanner_t scanner); const char * synctex_scanner_get_synctex(synctex_scanner_t scanner); /* Browsing the nodes * parent, child and sibling are standard names for tree nodes. * The parent is one level higher, the child is one level deeper, * and the sibling is at the same level. * The sheet of a node is the first ancestor, it is of type sheet. * A node and its sibling have the same parent. * A node is the parent of its child. * A node is either the child of its parent, * or belongs to the sibling chain of its parent's child. * The next node is either the child, the sibling or the parent's sibling, * unless the parent is a sheet. * This allows to navigate through all the nodes of a given sheet node: * * synctex_node_t node = sheet; * while((node = synctex_node_next(node))) { * // do something with node * } * * With synctex_sheet_content, you can retrieve the sheet node given the page. * The page is 1 based, according to TeX standards. * Conversely synctex_node_sheet allows to retrieve the sheet containing a given node. */ synctex_node_t synctex_node_parent(synctex_node_t node); synctex_node_t synctex_node_sheet(synctex_node_t node); synctex_node_t synctex_node_child(synctex_node_t node); synctex_node_t synctex_node_sibling(synctex_node_t node); synctex_node_t synctex_node_next(synctex_node_t node); synctex_node_t synctex_sheet(synctex_scanner_t scanner,int page); synctex_node_t synctex_sheet_content(synctex_scanner_t scanner,int page); /* These are the types of the synctex nodes */ typedef enum { synctex_node_type_error = 0, synctex_node_type_input, synctex_node_type_sheet, synctex_node_type_vbox, synctex_node_type_void_vbox, synctex_node_type_hbox, synctex_node_type_void_hbox, synctex_node_type_kern, synctex_node_type_glue, synctex_node_type_math, synctex_node_type_boundary, synctex_node_number_of_types } synctex_node_type_t; /* synctex_node_type gives the type of a given node, * synctex_node_isa gives the same information as a human readable text. */ synctex_node_type_t synctex_node_type(synctex_node_t node); const char * synctex_node_isa(synctex_node_t node); /* This is primarily used for debugging purpose. * The second one logs information for the node and recursively displays information for its next node */ void synctex_node_log(synctex_node_t node); void synctex_node_display(synctex_node_t node); /* Given a node, access to the location in the synctex file where it is defined. */ typedef unsigned int synctex_charindex_t; synctex_charindex_t synctex_node_charindex(synctex_node_t node); /* Given a node, access to its tag, line and column. * The line and column numbers are 1 based. * The latter is not yet fully supported in TeX, the default implementation returns 0 which means the whole line. * When the tag is known, the scanner of the node will give the corresponding file name. * When the tag is known, the scanner of the node will give the name. */ int synctex_node_tag(synctex_node_t node); int synctex_node_line(synctex_node_t node); int synctex_node_column(synctex_node_t node); /* In order to enhance forward synchronization, * non void horizontal boxes have supplemental cached information. * The mean line is the average of the line numbers of the included nodes. * The child count is the number of chidren. */ int synctex_node_mean_line(synctex_node_t node); int synctex_node_child_count(synctex_node_t node); /* This is the page where the node appears. * This is a 1 based index as given by TeX. */ int synctex_node_page(synctex_node_t node); /* For quite all nodes, horizontal, vertical coordinates, and width. * These are expressed in TeX small points coordinates, with origin at the top left corner. */ int synctex_node_h(synctex_node_t node); int synctex_node_v(synctex_node_t node); int synctex_node_width(synctex_node_t node); /* For all nodes, dimensions of the enclosing box. * These are expressed in TeX small points coordinates, with origin at the top left corner. * A box is enclosing itself. */ int synctex_node_box_h(synctex_node_t node); int synctex_node_box_v(synctex_node_t node); int synctex_node_box_width(synctex_node_t node); int synctex_node_box_height(synctex_node_t node); int synctex_node_box_depth(synctex_node_t node); /* For quite all nodes, horizontal, vertical coordinates, and width. * The visible dimensions are bigger than real ones to compensate 0 width boxes * that do contain nodes. * These are expressed in page coordinates, with origin at the top left corner. * A box is enclosing itself. */ float synctex_node_visible_h(synctex_node_t node); float synctex_node_visible_v(synctex_node_t node); float synctex_node_visible_width(synctex_node_t node); /* For all nodes, visible dimensions of the enclosing box. * A box is enclosing itself. * The visible dimensions are bigger than real ones to compensate 0 width boxes * that do contain nodes. */ float synctex_node_box_visible_h(synctex_node_t node); float synctex_node_box_visible_v(synctex_node_t node); float synctex_node_box_visible_width(synctex_node_t node); float synctex_node_box_visible_height(synctex_node_t node); float synctex_node_box_visible_depth(synctex_node_t node); /* The main synctex updater object. * This object is used to append information to the synctex file. * Its implementation is considered private. * It is used by the synctex command line tool to take into account modifications * that could occur while postprocessing files by dvipdf like filters. */ typedef struct __synctex_updater_t _synctex_updater_t; typedef _synctex_updater_t * synctex_updater_t; /* Designated initializer. * Once you are done with your whole job, * free the updater */ synctex_updater_t synctex_updater_new_with_output_file(const char * output, const char * directory); /* Use the next functions to append records to the synctex file, * no consistency tests made on the arguments */ void synctex_updater_append_magnification(synctex_updater_t updater, char * magnification); void synctex_updater_append_x_offset(synctex_updater_t updater, char * x_offset); void synctex_updater_append_y_offset(synctex_updater_t updater, char * y_offset); /* You MUST free the updater, once everything is properly appended */ void synctex_updater_free(synctex_updater_t updater); #ifdef __cplusplus } #endif #endif qpdfview-0.4.18/synctex/synctex_parser_local.h0000644000000000000000000000331213516127411017650 0ustar 00000000000000/* Copyright (c) 2008, 2009, 2010 , 2011 jerome DOT laurens AT u-bourgogne DOT fr This file is part of the SyncTeX package. Latest Revision: Tue Jun 14 08:23:30 UTC 2011 Version: 1.18 See synctex_parser_readme.txt for more details License: -------- Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE Except as contained in this notice, the name of the copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from the copyright holder. */ /* This local header file is for TEXLIVE, use your own header to fit your system */ # include /* for inline && HAVE_xxx */ /* No inlining for synctex tool in texlive. */ # define SYNCTEX_INLINE qpdfview-0.4.18/synctex/synctex_parser_readme.txt0000644000000000000000000002057213516127411020412 0ustar 00000000000000This file is part of the SyncTeX package. The Synchronization TeXnology named SyncTeX is a new feature of recent TeX engines designed by Jerome Laurens. It allows to synchronize between input and output, which means to navigate from the source document to the typeset material and vice versa. More informations on http://itexmac2.sourceforge.net/SyncTeX.html This package is mainly for developers, it mainly contains the following files: synctex_parser_readme.txt synctex_parser_version.txt synctex_parser_utils.c synctex_parser_utils.h synctex_parser_local.h synctex_parser.h synctex_parser.c The file you are reading contains more informations about the SyncTeX parser history. In order to support SyncTeX in a viewer, it is sufficient to include in the source the files synctex_parser.h and synctex_parser.c. The synctex parser usage is described in synctex_parser.h header file. The other files are used by tex engines or by the synctex command line utility: ChangeLog README.txt am man1 man5 synctex-common.h synctex-convert.sh synctex-e-mem.ch0 synctex-e-mem.ch1 synctex-e-rec.ch0 synctex-e-rec.ch1 synctex-etex.h synctex-mem.ch0 synctex-mem.ch1 synctex-mem.ch2 synctex-pdf-rec.ch2 synctex-pdftex.h synctex-rec.ch0 synctex-rec.ch1 synctex-rec.ch2 synctex-tex.h synctex-xe-mem.ch2 synctex-xe-rec.ch2 synctex-xe-rec.ch3 synctex-xetex.h synctex.c synctex.defines synctex.h synctex_main.c tests Version: -------- This is version 1, which refers to the synctex output file format. The files are identified by a build number. In order to help developers to automatically manage the version and build numbers and download the parser only when necessary, the synctex_parser.version is an ASCII text file just containing the current version and build numbers. History: -------- 1.1: Thu Jul 17 09:28:13 UTC 2008 - First official version available in TeXLive 2008 DVD. Unfortunately, the backwards synchronization is not working properly mainly for ConTeXt users, see below. 1.2: Tue Sep 2 10:28:32 UTC 2008 - Correction for ConTeXt support in the edit query. The previous method was assuming that TeX boxes do not overlap, which is reasonable for LaTeX but not for ConTeXt. This assumption is no longer considered. 1.3: Fri Sep 5 09:39:57 UTC 2008 - Local variable "read" renamed to "already_read" to avoid conflicts. - "inline" compiler directive renamed to "SYNCTEX_INLINE" for code support and maintenance - _synctex_error cannot be inlined due to variable arguments (thanks Christiaan Hofman) - Correction in the display query, extra boundary nodes are used for a more precise forwards synchronization 1.4: Fri Sep 12 08:12:34 UTC 2008 - For an unknown reason, the previous version was not the real 1.3 (as used in iTeXMac2 build 747). As a consequence, a crash was observed. - Some typos are fixed. 1.6: Mon Nov 3 20:20:02 UTC 2008 - The bug that prevented synchronization with compressed files on windows has been fixed. - New interface to allow system specific customization. - Note that some APIs have changed. 1.8: Mer 8 jul 2009 11:32:38 UTC Note that version 1.7 was delivered privately. - bug fix: synctex was causing a memory leak in pdftex and xetex, thus some processing speed degradation - bug fix: the synctex command line tool was broken when updating a .synctex file - enhancement: better accuracy of the synchronization process - enhancement: the pdf output file and the associated .synctex file no longer need to live in the same directory. The new -d option of the synctex command line tool manages this situation. This is handy when using something like tex -output-directory=DIR ... 1.9: Wed Nov 4 11:52:35 UTC 2009 - Various typo fixed - OutputDebugString replaced by OutputDebugStringA to deliberately disable unicode preprocessing - New conditional created because OutputDebugStringA is only available since Windows 2K professional 1.10: Sun Jan 10 10:12:32 UTC 2010 - Bug fix in synctex_parser.c to solve a synchronization problem with amsmath's gather environment. Concerns the synctex tool. 1.11: Sun Jan 17 09:12:31 UTC 2010 - Bug fix in synctex_parser.c, function synctex_node_box_visible_v: 'x' replaced by 'y'. Only 3rd party tools are concerned. 1.12: Mon Jul 19 21:52:10 UTC 2010 - Bug fix in synctex_parser.c, function __synctex_open: the io_mode was modified even in case of a non zero return, causing a void .synctex.gz file to be created even if it was not expected. Reported by Marek Kasik concerning a bug on evince. 1.13: Fri Mar 11 07:39:12 UTC 2011 - Bug fix in synctex_parser.c, better synchronization as suggested by Jan Sundermeyer (near line 3388). - Stronger code design in synctex_parser_utils.c, function _synctex_get_name (really neutral behavior). Only 3rd party tools are concerned. 1.14: Fri Apr 15 19:10:57 UTC 2011 - taking output_directory into account - Replaced FOPEN_WBIN_MODE by FOPEN_W_MODE when opening the text version of the .synctex file. - Merging with LuaTeX's version of synctex.c 1.15: Fri Jun 10 14:10:17 UTC 2011 This concerns the synctex command line tool and 3rd party developers. TeX and friends are not concerned by these changes. - Bug fixed in _synctex_get_io_mode_name, sometimes the wrong mode was returned - Support for LuaTeX convention of './' file prefixing 1.16: Tue Jun 14 08:23:30 UTC 2011 This concerns the synctex command line tool and 3rd party developers. TeX and friends are not concerned by these changes. - Better forward search (thanks Jose Alliste) - Support for LuaTeX convention of './' file prefixing now for everyone, not only for Windows 1.17: Fri Oct 14 08:15:16 UTC 2011 This concerns the synctex command line tool and 3rd party developers. TeX and friends are not concerned by these changes. - synctex_parser.c: cosmetic changes to enhance code readability - Better forward synchronization. The problem occurs for example with LaTeX \item command. The fact is that this command creates nodes at parse time but these nodes are used only after the text material of the \item is displayed on the page. The consequence is that sometimes, forward synchronization spots an irrelevant point from the point of view of the editing process. This was due to some very basic filtering policy, where a somehow arbitrary choice was made when many different possibilities where offered for synchronisation. Now, forward synchronization prefers nodes inside an hbox with as many acceptable spots as possible. This is achieved with the notion of mean line and node weight. - Adding support for the new file naming convention with './' + function synctex_ignore_leading_dot_slash_in_path replaces synctex_ignore_leading_dot_slash + function _synctex_is_equivalent_file_name is more permissive Previously, the function synctex_scanner_get_tag would give an answer only when the given file name was EXACTLY one of the file names listed in the synctex file. The we added some changes accepting for example 'foo.tex' instead of './foo.tex'. Now we have an even looser policy for dealing with file names. If the given file name does not match exactly one the file names of the synctex file, then we try to match the base names. If there is only one match of the base names, then it is taken as a match for the whole names. The base name is defined as following: ./foo => foo /my///.////foo => foo /foo => /foo /my//.foo => /my//.foo 1.17: Tue Mar 13 10:10:03 UTC 2012 - minor changes, no version changes - syntax man pages are fixed as suggested by M. Shimata see mail to tex-live@tug.org titled "syntax.5 has many warnings from groff" and "syntax.1 use invalid macro for mdoc" 1.17: Tue Jan 14 09:55:00 UTC 2014 - fixed a segfault, from Sebastian Ramacher 1.17: Mon Aug 04 - fixed a memory leak 1.18: Thu Jun 25 11:36:05 UTC 2015 - nested sheets now fully supported (does it make sense in TeX) - cosmetic changes: uniform indentation - suppression of warnings, mainly long/int ones. In short, zlib likes ints when size_t likes longs. - CLI synctex tool can build out of TeXLive (modulo appropriate options passed to the compiler) Acknowledgments: ---------------- The author received useful remarks from the pdfTeX developers, especially Hahn The Thanh, and significant help from XeTeX developer Jonathan Kew Nota Bene: ---------- If you include or use a significant part of the synctex package into a software, I would appreciate to be listed as contributor and see "SyncTeX" highlighted. Copyright (c) 2008-2014 jerome DOT laurens AT u-bourgogne DOT fr qpdfview-0.4.18/synctex/synctex_parser_utils.c0000644000000000000000000004224413516127411017720 0ustar 00000000000000/* Copyright (c) 2008, 2009, 2010 , 2011 jerome DOT laurens AT u-bourgogne DOT fr This file is part of the SyncTeX package. Latest Revision: Tue Jun 14 08:23:30 UTC 2011 Version: 1.18 See synctex_parser_readme.txt for more details License: -------- Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE Except as contained in this notice, the name of the copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from the copyright holder. */ /* In this file, we find all the functions that may depend on the operating system. */ #include #include #include #include #include #include #include #include #include #if defined(_WIN32) || defined(__WIN32__) || defined(__TOS_WIN__) || defined(__WINDOWS__) #define SYNCTEX_WINDOWS 1 #endif #if defined(__OS2__) #define SYNCTEX_OS2 1 #endif #ifdef _WIN32_WINNT_WINXP #define SYNCTEX_RECENT_WINDOWS 1 #endif #ifdef SYNCTEX_WINDOWS #include #include /* Use shlwapi.lib */ #endif void *_synctex_malloc(size_t size) { void * ptr = malloc(size); if(ptr) { /* There used to be a switch to use bzero because it is more secure. JL */ memset(ptr,0, size); } return (void *)ptr; } int _synctex_error(const char * reason,...) { va_list arg; int result; va_start (arg, reason); # ifdef SYNCTEX_RECENT_WINDOWS {/* This code is contributed by William Blum. As it does not work on some older computers, the _WIN32 conditional here is replaced with a SYNCTEX_RECENT_WINDOWS one. According to http://msdn.microsoft.com/en-us/library/aa363362(VS.85).aspx Minimum supported client Windows 2000 Professional Minimum supported server Windows 2000 Server People running Windows 2K standard edition will not have OutputDebugStringA. JL.*/ char *buff; size_t len; OutputDebugStringA("SyncTeX ERROR: "); len = _vscprintf(reason, arg) + 1; buff = (char*)malloc( len * sizeof(char) ); result = vsprintf(buff, reason, arg) +strlen("SyncTeX ERROR: "); OutputDebugStringA(buff); OutputDebugStringA("\n"); free(buff); } # else result = fprintf(stderr,"SyncTeX ERROR: "); result += vfprintf(stderr, reason, arg); result += fprintf(stderr,"\n"); # endif va_end (arg); return result; } /* strip the last extension of the given string, this string is modified! */ void _synctex_strip_last_path_extension(char * string) { if(NULL != string){ char * last_component = NULL; char * last_extension = NULL; # if defined(SYNCTEX_WINDOWS) last_component = PathFindFileName(string); last_extension = PathFindExtension(string); if(last_extension == NULL)return; if(last_component == NULL)last_component = string; if(last_extension>last_component){/* filter out paths like "my/dir/.hidden" */ last_extension[0] = '\0'; } # else char * next = NULL; /* first we find the last path component */ if(NULL == (last_component = strstr(string,"/"))){ last_component = string; } else { ++last_component; while((next = strstr(last_component,"/"))){ last_component = next+1; } } # if defined(SYNCTEX_OS2) /* On OS2, the '\' is also a path separator. */ while((next = strstr(last_component,"\\"))){ last_component = next+1; } # endif /* SYNCTEX_OS2 */ /* then we find the last path extension */ if((last_extension = strstr(last_component,"."))){ ++last_extension; while((next = strstr(last_extension,"."))){ last_extension = next+1; } --last_extension;/* back to the "." */ if(last_extension>last_component){/* filter out paths like ....my/dir/.hidden"*/ last_extension[0] = '\0'; } } # endif /* SYNCTEX_WINDOWS */ } } synctex_bool_t synctex_ignore_leading_dot_slash_in_path(const char ** name_ref) { if (SYNCTEX_IS_DOT((*name_ref)[0]) && SYNCTEX_IS_PATH_SEPARATOR((*name_ref)[1])) { do { (*name_ref) += 2; while (SYNCTEX_IS_PATH_SEPARATOR((*name_ref)[0])) { ++(*name_ref); } } while(SYNCTEX_IS_DOT((*name_ref)[0]) && SYNCTEX_IS_PATH_SEPARATOR((*name_ref)[1])); return synctex_YES; } return synctex_NO; } /* The base name is necessary to deal with the 2011 file naming convention... * path is a '\0' terminated string * The return value is the trailing part of the argument, * just following the first occurrence of the regexp pattern "[^|/|\].[\|/]+".*/ const char * _synctex_base_name(const char *path) { const char * ptr = path; do { if (synctex_ignore_leading_dot_slash_in_path(&ptr)) { return ptr; } do { if (!*(++ptr)) { return path; } } while (!SYNCTEX_IS_PATH_SEPARATOR(*ptr)); } while (*(++ptr)); return path; } /* Compare two file names, windows is sometimes case insensitive... */ synctex_bool_t _synctex_is_equivalent_file_name(const char *lhs, const char *rhs) { /* Remove the leading regex '(\./+)*' in both rhs and lhs */ synctex_ignore_leading_dot_slash_in_path(&lhs); synctex_ignore_leading_dot_slash_in_path(&rhs); next_character: if (SYNCTEX_IS_PATH_SEPARATOR(*lhs)) {/* lhs points to a path separator */ if (!SYNCTEX_IS_PATH_SEPARATOR(*rhs)) {/* but not rhs */ return synctex_NO; } ++lhs; ++rhs; synctex_ignore_leading_dot_slash_in_path(&lhs); synctex_ignore_leading_dot_slash_in_path(&rhs); goto next_character; } else if (SYNCTEX_IS_PATH_SEPARATOR(*rhs)) {/* rhs points to a path separator but not lhs */ return synctex_NO; } else if (SYNCTEX_ARE_PATH_CHARACTERS_EQUAL(*lhs,*rhs)){/* uppercase do not match */ return synctex_NO; } else if (!*lhs) {/* lhs is at the end of the string */ return *rhs ? synctex_NO : synctex_YES; } else if(!*rhs) {/* rhs is at the end of the string but not lhs */ return synctex_NO; } ++lhs; ++rhs; goto next_character; } synctex_bool_t _synctex_path_is_absolute(const char * name) { if(!strlen(name)) { return synctex_NO; } # if defined(SYNCTEX_WINDOWS) || defined(SYNCTEX_OS2) if(strlen(name)>2) { return (name[1]==':' && SYNCTEX_IS_PATH_SEPARATOR(name[2]))?synctex_YES:synctex_NO; } return synctex_NO; # else return SYNCTEX_IS_PATH_SEPARATOR(name[0])?synctex_YES:synctex_NO; # endif } /* We do not take care of UTF-8 */ const char * _synctex_last_path_component(const char * name) { const char * c = name+strlen(name); if(c>name) { if(!SYNCTEX_IS_PATH_SEPARATOR(*c)) { do { --c; if(SYNCTEX_IS_PATH_SEPARATOR(*c)) { return c+1; } } while(c>name); } return c;/* the last path component is the void string*/ } return c; } int _synctex_copy_with_quoting_last_path_component(const char * src, char ** dest_ref, size_t size) { const char * lpc; if(src && dest_ref) { # define dest (*dest_ref) dest = NULL; /* Default behavior: no change and sucess. */ lpc = _synctex_last_path_component(src); if(strlen(lpc)) { if(strchr(lpc,' ') && lpc[0]!='"' && lpc[strlen(lpc)-1]!='"') { /* We are in the situation where adding the quotes is allowed. */ /* Time to add the quotes. */ /* Consistency test: we must have dest+size>dest+strlen(dest)+2 * or equivalently: strlen(dest)+20) { char * result = NULL; ++size; /* Create the memory storage */ if(NULL!=(result = (char *)malloc(size))) { char * dest = result; va_start (arg, first); temp = first; do { if((size = strlen(temp))>0) { /* There is something to merge */ if(dest != strncpy(dest,temp,size)) { _synctex_error("! _synctex_merge_strings: Copy problem"); free(result); result = NULL; return NULL; } dest += size; } } while( (temp = va_arg(arg, const char *)) != NULL); va_end(arg); dest[0]='\0';/* Terminate the merged string */ return result; } _synctex_error("! _synctex_merge_strings: Memory problem"); return NULL; } return NULL; } /* The purpose of _synctex_get_name is to find the name of the synctex file. * There is a list of possible filenames from which we return the most recent one and try to remove all the others. * With two runs of pdftex or xetex we are sure the the synctex file is really the most appropriate. */ int _synctex_get_name(const char * output, const char * build_directory, char ** synctex_name_ref, synctex_io_mode_t * io_mode_ref) { if(output && synctex_name_ref && io_mode_ref) { /* If output is already absolute, we just have to manage the quotes and the compress mode */ size_t size = 0; char * synctex_name = NULL; synctex_io_mode_t io_mode = *io_mode_ref; const char * base_name = _synctex_last_path_component(output); /* do not free, output is the owner. base name of output*/ /* Do we have a real base name ? */ if(strlen(base_name)>0) { /* Yes, we do. */ const char * temp = NULL; char * core_name = NULL; /* base name of output without path extension. */ char * dir_name = NULL; /* dir name of output */ char * quoted_core_name = NULL; char * basic_name = NULL; char * gz_name = NULL; char * quoted_name = NULL; char * quoted_gz_name = NULL; char * build_name = NULL; char * build_gz_name = NULL; char * build_quoted_name = NULL; char * build_quoted_gz_name = NULL; struct stat buf; time_t the_time = 0; /* Create core_name: let temp point to the dot before the path extension of base_name; * We start form the \0 terminating character and scan the string upward until we find a dot. * The leading dot is not accepted. */ if((temp = strrchr(base_name,'.')) && (size = temp - base_name)>0) { /* There is a dot and it is not at the leading position */ if(NULL == (core_name = (char *)malloc(size+1))) { _synctex_error("! _synctex_get_name: Memory problem 1"); return -1; } if(core_name != strncpy(core_name,base_name,size)) { _synctex_error("! _synctex_get_name: Copy problem 1"); free(core_name); dir_name = NULL; return -2; } core_name[size] = '\0'; } else { /* There is no path extension, * Just make a copy of base_name */ core_name = _synctex_merge_strings(base_name); } /* core_name is properly set up, owned by "self". */ /* creating dir_name. */ size = strlen(output)-strlen(base_name); if(size>0) { /* output contains more than one path component */ if(NULL == (dir_name = (char *)malloc(size+1))) { _synctex_error("! _synctex_get_name: Memory problem"); free(core_name); dir_name = NULL; return -1; } if(dir_name != strncpy(dir_name,output,size)) { _synctex_error("! _synctex_get_name: Copy problem"); free(dir_name); dir_name = NULL; free(core_name); dir_name = NULL; return -2; } dir_name[size] = '\0'; } /* dir_name is properly set up. It ends with a path separator, if non void. */ /* creating quoted_core_name. */ if(strchr(core_name,' ')) { quoted_core_name = _synctex_merge_strings("\"",core_name,"\""); } /* quoted_core_name is properly set up. */ if(dir_name &&strlen(dir_name)>0) { basic_name = _synctex_merge_strings(dir_name,core_name,synctex_suffix,NULL); if(quoted_core_name && strlen(quoted_core_name)>0) { quoted_name = _synctex_merge_strings(dir_name,quoted_core_name,synctex_suffix,NULL); } } else { basic_name = _synctex_merge_strings(core_name,synctex_suffix,NULL); if(quoted_core_name && strlen(quoted_core_name)>0) { quoted_name = _synctex_merge_strings(quoted_core_name,synctex_suffix,NULL); } } if(!_synctex_path_is_absolute(output) && build_directory && (size = strlen(build_directory))) { temp = build_directory + size - 1; if(_synctex_path_is_absolute(temp)) { build_name = _synctex_merge_strings(build_directory,basic_name,NULL); if(quoted_core_name && strlen(quoted_core_name)>0) { build_quoted_name = _synctex_merge_strings(build_directory,quoted_name,NULL); } } else { build_name = _synctex_merge_strings(build_directory,"/",basic_name,NULL); if(quoted_core_name && strlen(quoted_core_name)>0) { build_quoted_name = _synctex_merge_strings(build_directory,"/",quoted_name,NULL); } } } if(basic_name) { gz_name = _synctex_merge_strings(basic_name,synctex_suffix_gz,NULL); } if(quoted_name) { quoted_gz_name = _synctex_merge_strings(quoted_name,synctex_suffix_gz,NULL); } if(build_name) { build_gz_name = _synctex_merge_strings(build_name,synctex_suffix_gz,NULL); } if(build_quoted_name) { build_quoted_gz_name = _synctex_merge_strings(build_quoted_name,synctex_suffix_gz,NULL); } /* All the others names are properly set up... */ /* retain the most recently modified file */ # define TEST(FILENAME,COMPRESS_MODE) \ if(FILENAME) {\ if (stat(FILENAME, &buf)) { \ free(FILENAME);\ FILENAME = NULL;\ } else if (buf.st_mtime>the_time) { \ the_time=buf.st_mtime; \ synctex_name = FILENAME; \ if (COMPRESS_MODE) { \ io_mode |= synctex_io_gz_mask; \ } else { \ io_mode &= ~synctex_io_gz_mask; \ } \ } \ } TEST(basic_name,synctex_DONT_COMPRESS); TEST(gz_name,synctex_COMPRESS); TEST(quoted_name,synctex_DONT_COMPRESS); TEST(quoted_gz_name,synctex_COMPRESS); TEST(build_name,synctex_DONT_COMPRESS); TEST(build_gz_name,synctex_COMPRESS); TEST(build_quoted_name,synctex_DONT_COMPRESS); TEST(build_quoted_gz_name,synctex_COMPRESS); # undef TEST /* Free all the intermediate filenames, except the one that will be used as returned value. */ # define CLEAN_AND_REMOVE(FILENAME) \ if(FILENAME && (FILENAME!=synctex_name)) {\ remove(FILENAME);\ printf("synctex tool info: %s removed\n",FILENAME);\ free(FILENAME);\ FILENAME = NULL;\ } CLEAN_AND_REMOVE(basic_name); CLEAN_AND_REMOVE(gz_name); CLEAN_AND_REMOVE(quoted_name); CLEAN_AND_REMOVE(quoted_gz_name); CLEAN_AND_REMOVE(build_name); CLEAN_AND_REMOVE(build_gz_name); CLEAN_AND_REMOVE(build_quoted_name); CLEAN_AND_REMOVE(build_quoted_gz_name); # undef CLEAN_AND_REMOVE /* set up the returned values */ * synctex_name_ref = synctex_name; * io_mode_ref = io_mode; return 0; } return -1;/* bad argument */ } return -2; } const char * _synctex_get_io_mode_name(synctex_io_mode_t io_mode) { static const char * synctex_io_modes[4] = {"r","rb","a","ab"}; unsigned index = ((io_mode & synctex_io_gz_mask)?1:0) + ((io_mode & synctex_io_append_mask)?2:0);// bug pointed out by Jose Alliste return synctex_io_modes[index]; } qpdfview-0.4.18/synctex/synctex_parser_utils.h0000644000000000000000000001321513516127411017721 0ustar 00000000000000/* Copyright (c) 2008, 2009, 2010, 2011 jerome DOT laurens AT u-bourgogne DOT fr This file is part of the SyncTeX package. Latest Revision: Tue Jun 14 08:23:30 UTC 2011 Version: 1.18 See synctex_parser_readme.txt for more details License: -------- Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE Except as contained in this notice, the name of the copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from the copyright holder. */ /* The utilities declared here are subject to conditional implementation. * All the operating system special stuff goes here. * The problem mainly comes from file name management: path separator, encoding... */ # define synctex_bool_t int # define synctex_YES -1 # define synctex_ADD_QUOTES -1 # define synctex_COMPRESS -1 # define synctex_NO 0 # define synctex_DONT_ADD_QUOTES 0 # define synctex_DONT_COMPRESS 0 #ifndef __SYNCTEX_PARSER_UTILS__ # define __SYNCTEX_PARSER_UTILS__ #include #ifdef __cplusplus extern "C" { #endif # if defined(_WIN32) || defined(__OS2__) # define SYNCTEX_CASE_SENSITIVE_PATH 0 # define SYNCTEX_IS_PATH_SEPARATOR(c) ('/' == c || '\\' == c) # else # define SYNCTEX_CASE_SENSITIVE_PATH 1 # define SYNCTEX_IS_PATH_SEPARATOR(c) ('/' == c) # endif # if defined(_WIN32) || defined(__OS2__) # define SYNCTEX_IS_DOT(c) ('.' == c) # else # define SYNCTEX_IS_DOT(c) ('.' == c) # endif # if SYNCTEX_CASE_SENSITIVE_PATH # define SYNCTEX_ARE_PATH_CHARACTERS_EQUAL(left,right) (left != right) # else # define SYNCTEX_ARE_PATH_CHARACTERS_EQUAL(left,right) (toupper(left) != toupper(right)) # endif /* This custom malloc functions initializes to 0 the newly allocated memory. * There is no bzero function on windows. */ void *_synctex_malloc(size_t size); /* This is used to log some informational message to the standard error stream. * On Windows, the stderr stream is not exposed and another method is used. * The return value is the number of characters printed. */ int _synctex_error(const char * reason,...); /* strip the last extension of the given string, this string is modified! * This function depends on the OS because the path separator may differ. * This should be discussed more precisely. */ void _synctex_strip_last_path_extension(char * string); /* Compare two file names, windows is sometimes case insensitive... * The given strings may differ stricto sensu, but represent the same file name. * It might not be the real way of doing things. * The return value is an undefined non 0 value when the two file names are equivalent. * It is 0 otherwise. */ synctex_bool_t _synctex_is_equivalent_file_name(const char *lhs, const char *rhs); /* Description forthcoming.*/ synctex_bool_t _synctex_path_is_absolute(const char * name); /* Description forthcoming...*/ const char * _synctex_last_path_component(const char * name); /* Description forthcoming...*/ const char * _synctex_base_name(const char *path); /* If the core of the last path component of src is not already enclosed with double quotes ('"') * and contains a space character (' '), then a new buffer is created, the src is copied and quotes are added. * In all other cases, no destination buffer is created and the src is not copied. * 0 on success, which means no error, something non 0 means error, mainly due to memory allocation failure, or bad parameter. * This is used to fix a bug in the first version of pdftex with synctex (1.40.9) for which names with spaces * were not managed in a standard way. * On success, the caller owns the buffer pointed to by dest_ref (is any) and * is responsible of freeing the memory when done. * The size argument is the size of the src buffer. On return the dest_ref points to a buffer sized size+2.*/ int _synctex_copy_with_quoting_last_path_component(const char * src, char ** dest_ref, size_t size); /* These are the possible extensions of the synctex file */ extern const char * synctex_suffix; extern const char * synctex_suffix_gz; typedef unsigned int synctex_io_mode_t; typedef enum { synctex_io_append_mask = 1, synctex_io_gz_mask = synctex_io_append_mask<<1 } synctex_io_mode_masks_t; typedef enum { synctex_compress_mode_none = 0, synctex_compress_mode_gz = 1 } synctex_compress_mode_t; int _synctex_get_name(const char * output, const char * build_directory, char ** synctex_name_ref, synctex_io_mode_t * io_mode_ref); /* returns the correct mode required by fopen and gzopen from the given io_mode */ const char * _synctex_get_io_mode_name(synctex_io_mode_t io_mode); synctex_bool_t synctex_ignore_leading_dot_slash_in_path(const char ** name); #ifdef __cplusplus } #endif #endif qpdfview-0.4.18/synctex/synctex_parser_version.txt0000644000000000000000000000000413516127411020626 0ustar 000000000000001.18qpdfview-0.4.18/translations/qpdfview_ast.ts0000644000000000000000000023373513516127411017362 0ustar 00000000000000 Model::ImageDocument Image (%1) Size Resolution Depth Format Formatu Monochrome Indexed 32 bits RGB 32 bits ARGB 16 bits RGB 24 bits RGB Model::PdfDocument Linearized Name Nome Type Triba Embedded Incrustáu Subset Subconxuntu File Ficheru Yes PDF version Encrypted No Non Model::PdfPage Information Información Version 0.20.1 or higher of the Poppler library is required to add or remove annotations. Necesitase la versión 2.20 o superior de la biblioteca Poppler p'amestar o desaniciar anotaciones. Model::PsDocument Title Títulu Created for Creáu pa Creator Creador Creation date Data de creación Format Formatu Language level Nivel de llinguax QObject An empty instance name is not allowed. Nun se permite un nome d'instancia baleru. An empty search text is not allowed. Nun se permite una cadena de gueta balera. Unknown command-line option '%1'. Opción de llinia de comandu desconocida «%1». Using '--instance' requires an instance name. Pa usar '--instance' fai falta un nome d'instancia. Using '--instance' is not allowed without using '--unique'. Nun se permite usar '--instance' ensin usar '--unique'. An instance name must only contain the characters "[A-Z][a-z][0-9]_" and must not begin with a digit. El nome d'una instancia sólo pue contener los caráuteres «[A-Z][a-z][0-9]_» y nun pue comenzar con un díxitu. Using '--search' requires a search text. L'usu de '--search' necesita un testu de gueta. Could not prepare signal handler. Nun se pudo preparar el xestor de señales. QShortcut Shift Mayús. Ctrl Ctrl Alt Alt Shift and Ctrl Mayús y Ctrl Shift and Alt Mayús y Alt Ctrl and Alt Ctrl y Alt Right mouse button Middle mouse button None Dengún qpdfview::BookmarkDialog Bookmark Page: Páxina: Label: Comment: Modified: qpdfview::BookmarkMenu &Open &Abrir Open in new &tab Abrir n'otra llingüe&ta &Remove bookmark Desanicia&r marcador qpdfview::Database Jump to page %1 Saltar a la páxina %1 qpdfview::DocumentView Information Información The source editor has not been set. Opening URL is disabled in the settings. Abrir URLs ta desactivao na configuración. Warning Avisu SyncTeX data for '%1' could not be found. Printing '%1'... Imprentando «%1»... Unlock %1 Desbloquiar %1 Password: Contraseña: Page %1 Páxina %1 qpdfview::FileAttachmentAnnotationWidget Save... Guardar... Save and open... Guardar y abrir... Save file attachment Guardar axuntu al ficheru Warning Avisu Could not open file attachment saved to '%1'. Nun pudo abrise l'axuntu al ficheru guardáu en '%1'. Could not save file attachment to '%1'. Nun pudo guardase l'axuntu al ficheru en '%1'. qpdfview::FontsDialog Fonts qpdfview::HelpDialog Help help.html Please replace by file name of localized help if available, e.g. "help_fr.html". help.html Find previous Alcontrar anterior Find next Alcontrar siguiente qpdfview::MainWindow Toggle tool bars Toggle menu bar Warning Avisu Could not open '%1'. Nun se pudo abrir «%1». Copy file path Select file path Close all tabs Zarrar toles llingüetes Close all tabs but this one Zarrar toles llingüetes menos esta Close all tabs to the left Zarrar toles llingüetes de la izquierda Close all tabs to the right Zarrar toles llingüetes de la drecha Open Abrir Open in new tab Abrir nuna llingüeta nueva Could not refresh '%1'. Nun se pudo anovar «%1». Save copy Guardar una copia Could not save copy at '%1'. Nun se pudo guardar una copia en «%1». Save as Guardar como Move to instance Failed to access instance '%1'. Could not save as '%1'. Nun se pudo guardar como «%1». Could not print '%1'. Nun se pudo imprentar «%1». Set first page Select the first page of the body matter: Jump to page Saltar a páxina Page: Páxina: Jump to page %1 Saltar a la páxina %1 About qpdfview Tocante a qpdfview <p><b>qpdfview %1</b></p><p>qpdfview is a tabbed document viewer using Qt.</p><p>This version includes:<ul> <p><b>qpdfview %1</b></p><p>qpdfview ye un visor de documentos con llingüetes qu'usa Qt.</p><p>Esta versión incluye:<ul> <li>PDF support using Poppler %1</li> <li>PS support using libspectre %1</li> <li>DjVu support using DjVuLibre %1</li> <li>PDF support using Fitz %1</li> <li>Printing support using CUPS %1</li> &Edit bookmark The document '%1' has been modified. Do you want to save your changes? Camudóse'l documentu «%1». ¿Quier guardar los cambios? Page width Anchor de páxina Page size Tamañu de páxina Match &case Distinguir mayús&cules/minúscules Whole &words Highlight &all Rescampl&ar too &Open... &Abrir... Open in new &tab... Abrir en llingüe&ta nueva... Open &copy in new tab Move to &instance... &Refresh Anova&r Information Instance-to-instance communication requires D-Bus support. </ul><p>See <a href="https://launchpad.net/qpdfview">launchpad.net/qpdfview</a> for more information.</p><p>&copy; %1 The qpdfview developers</p> Save &as... Gu&ardar como… Save &copy... &Print... Im&prentar... E&xit Co&lar &Previous page &Páxina anterior &Next page Páxina siguie&nte &First page Pri&mera páxina &Last page Ú&ltima páxina &Set first page... &Jump to page... &Saltar a páxina... Jump &backward Saltar &atrás Jump for&ward Saltar alan&tre &Search... &Guetar Find previous Alcontrar anterior Find next Alcontrar siguiente Cancel search Encaboxar gueta &Copy to clipboard &Copiar al cartafueyu &Add annotation &Amestar anotación Settings... Preferencies... &Continuous &Continuu &Two pages &Dos páxines Two pages &with cover page Dos páxines con por&tada &Multiple pages Páxines &múltiples Right to left De drecha a izquierda Zoom &in A&umentar Zoom &out Ame&norgar Original &size Tamañu ori&xinal Fit to page width Axustar a anchor de páxina Fit to page size Axustar a tamañu de páxina Rotate &left Xirar a la i&zquierda Rotate &right Xirar a la d&recha Invert colors Invertir colores Convert to grayscale Trim margins Darken with paper color Lighten with paper color Fonts... Fontes... &Fullscreen &Pantalla completa &Presentation... &Presentación... &Previous tab Llingüeta an&terior &Next tab Llingüeta siguie&nte &Close tab &Zarrar llingüeta Close &all tabs Z&arrar toles llingüetes Close all tabs &but current tab Zarrar toles llingüetes menos la a&bierta Restore &most recently closed tab &Previous bookmark Marcador an&terior &Next bookmark Marcador siguie&nte &Add bookmark &Amestar marcador Open copy in new &window Split view horizontally... Split view vertically... Close current view Thumb&nails Book&marks Composition &Remove bookmark Desanicia&r marcador Edit '%1' at %2,%3... Open containing &folder &Save Remove all bookmarks Desaniciar tolos marcadores &Contents &Conteníu &About Tocante &a &File &Ficheru &Edit &Editar &View &Ver &Outline C&ontornu &Properties &Propiedaes &Search &Guetar &Tool bars Barres de ferramien&tes &Docks &Puertos &Tabs Llingüe&tes &Bookmarks &Marcadores &Help A&yuda Choose instance Instance: qpdfview::PageItem Go to page %1. Dir a páxina %1. Go to page %1 of file '%2'. Dir a la páxina %1 del ficheru '%2'. Open '%1'. Abrir '%1'. Edit form field '%1'. Editar el campu de formulariu «%1». Copy &text Copiar &testu &Select text Copy &image Copiar &imaxe Save image to &file... Guardar imaxe en &ficheru Save image to file Guardar imaxe en ficheru Warning Avisu Could not save image to file '%1'. Nun se pudo guardar la imaxe nel ficheru «%1». Add &text Amestar &testu Add &highlight Amestar &rescampláu &Copy link address &Select link address &Remove annotation Desanicia&r anotación qpdfview::PdfSettingsWidget Antialiasing: Antialias: Text antialiasing: Antialias de testu: None Dengún Full Completu Reduced Reducíu Text hinting: Aproximación tipográfica de testu: Ignore paper color: Overprint preview: Vista previa de sobreimpresión: Solid Sólidu Shaped Con forma Thin line mode: Mou de llinia fina: Splash Pantalla d'aniciu Arthur Arthur Backend: Infraestructura: qpdfview::PluginHandler Image (%1) Compressed (%1) Supported formats (%1) Could not decompress '%1'! Could not match file type of '%1'! ¡Nun casa'l tipu de ficheru de '%1'! Critical Críticu Could not load plug-in for file type '%1'! ¡Nun pudo cargase'l complementu pal tipu de ficheru '%1'! qpdfview::PrintDialog Fit to page: Axustar a la páxina: Page ranges: Intervalu de páxines: All pages Toles páxines Even pages Páxines pares Odd pages Páxines impares Page set: Conxuntu de páxines: Single page Namái una páxina Two pages Dos páxines Four pages Cuatro páxines Six pages Seyes páxines Nine pages Nueve páxines Sixteen pages Dieciséis páxines Number-up: Aumentar númberu: Bottom to top and left to right D'abaxo a arriba y d'izquierda a drecha Bottom to top and right to left D'abaxo a arriba y de drecha a izquierda Left to right and bottom to top D'izquierda a drecha y d'abaxo a arriba Left to right and top to bottom D'izquierda a drecha y d'arriba a abaxo Right to left and bottom to top De drecha a izquierda y d'abaxo a arriba Right to left and top to bottom De drecha a izquierda y d'arriba a abaxo Top to bottom and left to right D'arriba a abaxo y d'izquierda a drecha Top to bottom and right to left D'arriba a abaxo y de drecha a izquierda Number-up layout: Diseñu de numberación: Extended options Opciones estendíes qpdfview::PsSettingsWidget Graphics antialias bits: Bits del antialias de gráficos: Text antialias bits: Bits del antialias de testu: qpdfview::RecentlyClosedMenu &Recently closed &Recién zarraos &Clear list &Llimpiar la llista qpdfview::RecentlyUsedMenu Recently &used &Usaos de recién &Clear list &Llimpiar la llista qpdfview::SearchModel <b>%1</b> occurrences <b>%1</b> occurrences on page <b>%2</b> qpdfview::SearchableMenu Search for '%1'... qpdfview::SettingsDialog General Xeneral &Behavior &Comportamientu &Graphics &Gràficos &Interface &Interfaz &Shortcuts Atayo&s &Modifiers &Modificadores Defaults Predeterminaos Defaults on current tab Predeterminaos de la llingüeta actual Mouse wheel modifiers Mouse button modifiers Open URL: Abrir URL: Auto-refresh: Anovamientu automáticu: Effective after restart. Efectivu dempués de reaniciar. Track recently used: Rastrar usaos de recién: Keep recently closed: Caltener recién zarraos: Restore tabs: Restaurar llingüetes: Restore bookmarks: Restaurar marcadores: Restore per-file settings: Restaurar preferencies por ficheru: min Save database interval: Synchronize presentation: Sincronizar presentación: Default Predetermináu Presentation screen: Pantalla de presentación: Synchronize split views: Zoom factor: Parallel search execution: ms None Dengún Highlight duration: Rescamplar la duración: Highlight color: Color de rescampláu: Annotation color: Color d'anotación: '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number. '%1' se camudará pol camín absolutu al ficheru. '%2' resp. '%3' se camudará pol númberu de llinia resp. de columna. Source editor: Editor de códigu: Use tiling: Keep obsolete pixmaps: Caltener los mapes de píxeles anticuaos: Use device pixel ratio: Usar la tasa de píxeles del preséu: Decorate pages: Decorar páxines: Decorate links: Decorar enllaces: Decorate form fields: Decorar campos del formulariu: Background color: Color del fondu: Paper color: Color del papel: Presentation background color: Color del fondu de la presentación: Pages per row: Páxines per filera: px Page spacing: Espaciáu de páxina: Thumbnail spacing: Espaciáu de miniatures: Thumbnail size: Tamañu de miniatures: Fit to viewport Document context menu: Tab context menu: Open in source editor: %1 MB %1 MB Cache size: Tamañu de la caché: Minimal scrolling: Prefetch: Precarga: Prefetch distance: Distancia de precarga: Top Arriba Bottom Abaxo Left Izquierda Right Drecha Tab position: Posición de llingüeta: As needed Cuando faiga falta Always Siempres Exit after last tab: Scrollable menus: Searchable menus: Zoom to selection: Never Nunca Settings Tab visibility: Visibilidá de la llingüeta: Spread tabs: Esparder llingüetes: New tab next to current tab: Nueva llingüeta xunto a la actual: Recently used count: Cuenta de recién usaos: Recently closed count: Cuenta de recién zarraos: Extended search dock: Toggle tool and menu bars with fullscreen: File tool bar: Barra de ferramientes ficheros: Edit tool bar: Barra de ferramientes edición: View tool bar: Barra de ferramientes vista: Use page label: Document title as tab title: Títulu del documentu como títulu de llingüeta: Current page in window title: Paxina actual nel títulu de ventana: Instance name in window title: Nome de la instancia nel títulu de la ventana: Synchronize outline view: Sincronizar la vista d'esquema: Highlight current thumbnail: Rescamplar la miniatura actual: Limit thumbnails to results: Llendar les miniatures a los resultaos: Annotation overlay: Capa d'anotación: Form field overlay: Capa de campos de formulariu: Zoom: Ampliación: Rotate: Xirar: Scroll: Desplazamientu: Copy to clipboard: Copiar al cartafueyu: Add annotation: Amestar anotación: qpdfview::ShortcutHandler Action Aición Key sequence Secuencia de tecles Skip backward Saltar atrás Skip forward Saltar alantre Move up Mover arriba Move down Mover abaxo Move left Mover a la izquierda Move right Mover a la drecha qpdfview::TreeView &Expand all &Espander too &Collapse all &Colapsar too qpdfview-0.4.18/translations/qpdfview_az.ts0000644000000000000000000023336413516127411017203 0ustar 00000000000000 Model::ImageDocument Image (%1) Size Resolution Depth Format Format Monochrome Indexed 32 bits RGB 32 bits ARGB 16 bits RGB 24 bits RGB Model::PdfDocument Linearized Name Ad Type Növ Embedded İçərisinə yerləşdirilib Subset Alt qrup File Fayl Yes Bəli PDF version Encrypted No Xeyr Model::PdfPage Information Mə'lumat Version 0.20.1 or higher of the Poppler library is required to add or remove annotations. Əlfəcinlərin alavə edilməsi və ya silinməsi üçün Popler 0.20.1 və ya daha yüksək versiya kitabxana tələb edir. Model::PsDocument Title Başlıq Created for Kimin üçün yaradılıb Creator Yaradan Creation date Yaradılma tarixi Format Format Language level Dil səviyyəsi QObject An empty instance name is not allowed. Boş instansiya adına icazə yoxdur. An empty search text is not allowed. Axtarış mətni boşdur. Unknown command-line option '%1'. Naməlum əmr-sətri opsiyası '%1'. Using '--instance' requires an instance name. '--instance' istifadə etdikdə instansiya adı mütləq göstərilməlidir. Using '--instance' is not allowed without using '--unique'. '--instance' -dən istifadə '--unique' istifadə etmədən mümkün deyil. An instance name must only contain the characters "[A-Z][a-z][0-9]_" and must not begin with a digit. Nüsxənin adında yalnız "[A-Z][a-z][0-9]_" işarələri olmalı və rəqəmlə başlamamalıdır. Using '--search' requires a search text. '--search' istifadə etdikdə axtarılan mətn daxil edilməlidir. Could not prepare signal handler. Siqnal başlığını hazırlamaq mümkün deyil. QShortcut Shift Şift Ctrl Ctrl Alt Alt Shift and Ctrl Şift və Ctrl Shift and Alt Şift və Alt Ctrl and Alt Ctrl və Alt Right mouse button Middle mouse button None Heç Biri qpdfview::BookmarkDialog Bookmark Page: Səhifə: Label: Comment: Modified: qpdfview::BookmarkMenu &Open &Aç Open in new &tab Yeni &İçlikdə aç &Remove bookmark &Əlfəcindən çlxar qpdfview::Database Jump to page %1 %1 səhifəsinə keç qpdfview::DocumentView Information Məlumat The source editor has not been set. Opening URL is disabled in the settings. URL-lərin açılması seçənklərdən bağlıdır Warning Xəbərdarlıq SyncTeX data for '%1' could not be found. Printing '%1'... '%1' çap olunur... Unlock %1 %1 aç Password: Şifrə: Page %1 Səhifə %1 qpdfview::FileAttachmentAnnotationWidget Save... Yaddaşa al Save and open... Yaddaşa al və aç… Save file attachment Əlavədəki faylı saxla Warning Xəbərdarlıq Could not open file attachment saved to '%1'. Could not save file attachment to '%1'. Əlavədəki faylı '%1' yaddaça almaq mümkün deyil qpdfview::FontsDialog Fonts qpdfview::HelpDialog Help help.html Please replace by file name of localized help if available, e.g. "help_fr.html". help.html Find previous Öncəkini tap Find next Sonrakını tap qpdfview::MainWindow Toggle tool bars Toggle menu bar Warning Xəbərdarlıq Could not open '%1'. '%1' açmaq mümkün deyil. Copy file path Select file path Close all tabs Bütün səkmələri bağla Close all tabs but this one Bu siğmədən başqa hamısını bağla Close all tabs to the left Solda olan bütün siğmələri bağla Close all tabs to the right Sağda olan bütün siğmələri bağla Open Open in new tab Yeni İçlikdə aç Could not refresh '%1'. '%1' yüniləmək mümkün deyil. Save copy Nüsxəsini yadda saxla Could not save copy at '%1'. Kopyanı '%1' saxlamaq mümkün deyil. Save as Fərqli adla yaddaşda saxla Move to instance Failed to access instance '%1'. Could not save as '%1'. '%1' kimi yadda saxlamaq mümkün deyil. Could not print '%1'. '%1' çap etmək mümkün deyil. Set first page Select the first page of the body matter: Jump to page Səhifəyə keç Page: Səhifə: Jump to page %1 %1 səhifəsinə keç About qpdfview qpdfview haqda <p><b>qpdfview %1</b></p><p>qpdfview is a tabbed document viewer using Qt.</p><p>This version includes:<ul> <p><b>qpdfview %1</b></p><p>qpdfview Qt-dən istifadə edən səkməli sənəd baxıcısıdır.</p><p>Bu versiyaya daxildir:<ul> <li>PDF support using Poppler %1</li> <li>PS support using libspectre %1</li> <li>DjVu support using DjVuLibre %1</li> <li>PDF support using Fitz %1</li> <li>Printing support using CUPS %1</li> &Edit bookmark The document '%1' has been modified. Do you want to save your changes? '%1' sənədi dəyişdirilmişdir. Dəyişiklikləri yadda saxlamaq istəyirsiniz mi? Page width Səhifənin eni Page size Səhifənin ölçüsü Match &case Reqistr nəzərə alınmaqla Whole &words Highlight &all H&amısını seç &Open... &Aç... Open in new &tab... Yeni İçlikdə aç... Open &copy in new tab Move to &instance... &Refresh &Yenilə Information Instance-to-instance communication requires D-Bus support. </ul><p>See <a href="https://launchpad.net/qpdfview">launchpad.net/qpdfview</a> for more information.</p><p>&copy; %1 The qpdfview developers</p> Save &as... Başqa cür yadda saxla... Save &copy... &Print... Ça&p Et... E&xit Çı&xış &Previous page Əlvəlki səhifə &Next page Növbəti səhifə &First page Öncəki səhifə &Last page Sonuncu səhifə &Set first page... &Jump to page... Səhifəyə keç… Jump &backward Geri qayıt Jump for&ward İrəli keç &Search... Axtarış Find previous Öncəkini tap Find next Sonrakını tap Cancel search Axtarışdan imtina &Copy to clipboard Yaddaşa kopyala &Add annotation Qeydlər əlavə et Settings... Seçənəklər… &Continuous Davamlı &Two pages İki səhifə Two pages &with cover page Başlıqla &birgə iki səhifə &Multiple pages Bir neçə səhifə Right to left Zoom &in Böyüt Zoom &out Kiçild Original &size Oriqinal ölçü Fit to page width Səhifə eninə uyğunlaşdır Fit to page size Səhifə ölçüsünə uyğunlaşdır Rotate &left Sola çevir Rotate &right Sağa çevir Invert colors Rəngləri çevir Convert to grayscale Trim margins Darken with paper color Lighten with paper color Fonts... Şriftlər… &Fullscreen &Tam ekran &Presentation... Nümayiş… &Previous tab Öncəki səkmə &Next tab Sonrakı səkmə &Close tab Səməni bağla Close &all tabs Bütün səkmələri bağla Close all tabs &but current tab Hazırkı səkmədən başqa, qalan səkmələri bağla Restore &most recently closed tab &Previous bookmark Öncəki əıfəcin &Next bookmark Sonrakı əlfəcin &Add bookmark Əlfəcin əlavə et Open copy in new &window Split view horizontally... Split view vertically... Close current view Thumb&nails Book&marks Composition &Remove bookmark Əlfəcini siı Edit '%1' at %2,%3... Open containing &folder &Save Remove all bookmarks Bütün əlfəcinləri sil &Contents &Məzmun &About &Haqqında &File &Fayl &Edit Redaktə et &View &Görünüş &Outline Altdan xətli &Properties Xüsusiyyətlər &Search A&xtar &Tool bars Alətlər paneli &Docks Doklar &Tabs Səkmələr &Bookmarks Əlfəcinlər &Help &Yardım Choose instance Instance: qpdfview::PageItem Go to page %1. %1 səhifəsinə keç. Go to page %1 of file '%2'. '%2' faylının %1 səhifəsinə keç Open '%1'. '%1' aç. Edit form field '%1'. '%1' xanasından redaktə et. Copy &text Mə&tni kopyala &Select text Copy &image Şəkl&i kopyala Save image to &file... Şəkli &fayla yaz… Save image to file Şəkli fayla yaz Warning Xəbərdarlıq Could not save image to file '%1'. Şəkli '%1' faylına yazmaq mümkün deyil. Add &text Mətn əlavə e&t Add &highlight Seçim əlavə et &Copy link address &Select link address &Remove annotation Qeydlə&ri sil qpdfview::PdfSettingsWidget Antialiasing: Hamarlama: Text antialiasing: Mətnin görünüşünün hamarlanması: None Heç Biri Full Tam Reduced Azaldılmış Text hinting: Mətn bildirişi Ignore paper color: Overprint preview: Çap həddini aşma ön baxışı Solid Tam Shaped Fromalı Thin line mode: Xəttin nazikliyi: Splash Tanıtım Arthur Artur Backend: Sistemin arxa tərəfi qpdfview::PluginHandler Image (%1) Compressed (%1) Supported formats (%1) Could not decompress '%1'! Could not match file type of '%1'! Critical Kritik Could not load plug-in for file type '%1'! qpdfview::PrintDialog Fit to page: Səhifəyə uyğunlaşdır: Page ranges: Səhifə aralığı: All pages Bütün səhifələr Even pages Cüt səhifələr Odd pages Tək səhifələr Page set: Səhifələr: Single page Bir səhifə Two pages İki səhifə Four pages Dörd səhifə Six pages Altı səhifə Nine pages Doqquz səhifə Sixteen pages 16 səhifə Number-up: Bir rəqəm yuxarı: Bottom to top and left to right Aşağıdan yixarı və soldan sağa Bottom to top and right to left Aşağıdan yuxarı və sağdan sola Left to right and bottom to top Soldan sağa və aşağıdan yuxarı Left to right and top to bottom Soldan sağa və yuxarıdan aşağı Right to left and bottom to top Sağdan sola və aşağıdan yuxarı Right to left and top to bottom Sağdan sola və yuxarıdan aşağı Top to bottom and left to right Yuxarıdan aşağı və soldan sağa Top to bottom and right to left Yuxarıdan aşağı və sağdan sola Number-up layout: Nömrələr-üstə düzümü: Extended options Geniş seçənəklər qpdfview::PsSettingsWidget Graphics antialias bits: Qrafikanın bitlərinin hamarlanması: Text antialias bits: Mətn bitlərinin hamarlanması: qpdfview::RecentlyClosedMenu &Recently closed Ən son bağlanmışlar &Clear list Siyahını &Təmizlə qpdfview::RecentlyUsedMenu Recently &used Son istifadə edilənlər &Clear list Siyahını təmizlə qpdfview::SearchModel <b>%1</b> occurrences <b>%1</b> occurrences on page <b>%2</b> qpdfview::SearchableMenu Search for '%1'... qpdfview::SettingsDialog General Ümumi &Behavior Davranış &Graphics Qrafiklər &Interface &İnterfeys &Shortcuts Qısa yollar &Modifiers Dəyişdiricilər Defaults Susmaya görə Defaults on current tab Bu sekmeni susmaya görə istifadə et Mouse wheel modifiers Mouse button modifiers Open URL: URL aç: Auto-refresh: Avto-yeniləmə: Effective after restart. Yenidən başlatdıqda təsirlidir. Track recently used: Son istifadə edilmişləri izlə: Keep recently closed: Sonuncu bağlanmışarı xatırla: Restore tabs: Səkmələri bərpa et: Restore bookmarks: Əlfəcinləri bərpa et Restore per-file settings: ön-fayl seçənəklərini bərpa et: min Save database interval: Synchronize presentation: Nümaişin sinxronizasiyası: Default Susmaya görə Presentation screen: Nümayiş ekranı: Synchronize split views: Zoom factor: Parallel search execution: ms None Heç Biri Highlight duration: Sayrışma müddəri: Highlight color: Seçilmə rəngi: Annotation color: Qeydlərin rəngi: '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number. '%1' tam fayl ünvanı ilə əvəz olunacaq. . '%2' resp. '%3' is replaced by line resp. column number. Source editor: Mənbə redaktoru: Use tiling: Keep obsolete pixmaps: Köhnə pixmasp-ı saxla Use device pixel ratio: Cihazın piksel nisbətindən istifadə et: Decorate pages: Səhifələri dekorasiyala: Decorate links: Linkləri dekorasiyala: Decorate form fields: Xanadan dekorasiyala: Background color: Arxa fon rəngi: Paper color: Səhifənin rəngi: Presentation background color: Təqdimatın fon rəngi: Pages per row: Sətrdəki səhifələrin sayı: px Page spacing: Səhifələr arası məsafə: Thumbnail spacing: Miniaturlar arası məsafə: Thumbnail size: Cəld baxış şəkilinin ölçüsü: Fit to viewport Document context menu: Tab context menu: Open in source editor: %1 MB %1 MB Cache size: Keşin ölçüsü: Minimal scrolling: Prefetch: Öncədən yükləmə: Prefetch distance: Öncədən yükəmə məsafəsi: Top Yuxarı Bottom Aşağı Left Sol Right Sağ Tab position: Səkmə pozisiyası: As needed Lazım olduqda Always Həmişə Exit after last tab: Scrollable menus: Searchable menus: Zoom to selection: Never Heç vaxt Settings Tab visibility: Səkmənin görünməsi: Spread tabs: New tab next to current tab: Yeni səkmə hazırkının dalınca: Recently used count: İstifadə sayı: Recently closed count: Ən son bağlanmışların sayı: Extended search dock: Toggle tool and menu bars with fullscreen: File tool bar: Fayl alətlər paneli: Edit tool bar: Alətlər panelini redaktə et: View tool bar: Alətlər panelinə bax: Use page label: Document title as tab title: Current page in window title: Hazırkı səhifə pəncərənin başlığında: Instance name in window title: Pəncərənin başlığında nüsxənin adı: Synchronize outline view: Xətlər görüntüsünü sinxrolaşdır: Highlight current thumbnail: Hazırkı görüntünü seç% Limit thumbnails to results: Görüntüləri axtarış sayı ilə limitlə: Annotation overlay: Annotasiya üzlüyü: Form field overlay: Sahə üzlüyündən: Zoom: Böyüklük Rotate: Dönüş: Scroll: SkrolI Copy to clipboard: Yaddaşa kopyala Add annotation: Qeyd əlavə et: qpdfview::ShortcutHandler Action Davranış Key sequence Açar sırası Skip backward Geri ötür Skip forward İrəli ötür Move up Yuxarı daşı Move down Aşağı daşı Move left Sola daşı Move right Sağa daşı qpdfview::TreeView &Expand all Hamısını aç &Collapse all Hamısını bağla qpdfview-0.4.18/translations/qpdfview_be.ts0000644000000000000000000023123013516127411017145 0ustar 00000000000000 Model::ImageDocument Image (%1) Size Resolution Depth Format Monochrome Indexed 32 bits RGB 32 bits ARGB 16 bits RGB 24 bits RGB Model::PdfDocument Linearized Name Type Embedded Subset Падмноства File Файл Yes Так PDF version Encrypted No Не Model::PdfPage Information Version 0.20.1 or higher of the Poppler library is required to add or remove annotations. Версія бібліятэкі Poppler 0.20.1 ці пазнейшая неабходна каб дадаваць ці выдаляць анатыцыі. Model::PsDocument Title Загаловак Created for Створана для Creator Аўтар Creation date Дата стварэння Format Language level QObject An empty instance name is not allowed. Пустое імя не дазваляецца. An empty search text is not allowed. Пусты тэкст пошуку не дазваляецца. Unknown command-line option '%1'. Using '--instance' requires an instance name. Using '--instance' is not allowed without using '--unique'. An instance name must only contain the characters "[A-Z][a-z][0-9]_" and must not begin with a digit. Using '--search' requires a search text. Could not prepare signal handler. QShortcut Shift Ctrl Alt Shift and Ctrl Shift and Alt Ctrl and Alt Right mouse button Middle mouse button None qpdfview::BookmarkDialog Bookmark Page: Label: Comment: Modified: qpdfview::BookmarkMenu &Open Open in new &tab &Remove bookmark qpdfview::Database Jump to page %1 qpdfview::DocumentView Information The source editor has not been set. Opening URL is disabled in the settings. Warning SyncTeX data for '%1' could not be found. Printing '%1'... Unlock %1 Password: Page %1 qpdfview::FileAttachmentAnnotationWidget Save... Save and open... Save file attachment Warning Could not open file attachment saved to '%1'. Could not save file attachment to '%1'. qpdfview::FontsDialog Fonts qpdfview::HelpDialog Help help.html Please replace by file name of localized help if available, e.g. "help_fr.html". Find previous Find next qpdfview::MainWindow Toggle tool bars Toggle menu bar Warning Could not open '%1'. Copy file path Select file path Close all tabs Close all tabs but this one Close all tabs to the left Close all tabs to the right Open Open in new tab Could not refresh '%1'. Save copy Could not save copy at '%1'. Save as Move to instance Failed to access instance '%1'. Could not save as '%1'. Could not print '%1'. Set first page Select the first page of the body matter: Jump to page Page: Jump to page %1 About qpdfview <p><b>qpdfview %1</b></p><p>qpdfview is a tabbed document viewer using Qt.</p><p>This version includes:<ul> <li>PDF support using Poppler %1</li> <li>PS support using libspectre %1</li> <li>DjVu support using DjVuLibre %1</li> <li>PDF support using Fitz %1</li> <li>Printing support using CUPS %1</li> &Edit bookmark The document '%1' has been modified. Do you want to save your changes? Page width Page size Match &case Whole &words Highlight &all &Open... Open in new &tab... Open &copy in new tab Move to &instance... &Refresh Information Instance-to-instance communication requires D-Bus support. </ul><p>See <a href="https://launchpad.net/qpdfview">launchpad.net/qpdfview</a> for more information.</p><p>&copy; %1 The qpdfview developers</p> Save &as... Save &copy... &Print... E&xit &Previous page &Next page &First page &Last page &Set first page... &Jump to page... Jump &backward Jump for&ward &Search... Find previous Find next Cancel search &Copy to clipboard &Add annotation Settings... &Continuous &Two pages Two pages &with cover page &Multiple pages Right to left Zoom &in Zoom &out Original &size Fit to page width Fit to page size Rotate &left Rotate &right Invert colors Convert to grayscale Trim margins Darken with paper color Lighten with paper color Fonts... &Fullscreen &Presentation... &Previous tab &Next tab &Close tab Close &all tabs Close all tabs &but current tab Restore &most recently closed tab &Previous bookmark &Next bookmark &Add bookmark Open copy in new &window Split view horizontally... Split view vertically... Close current view Thumb&nails Book&marks Composition &Remove bookmark Edit '%1' at %2,%3... Open containing &folder &Save Remove all bookmarks &Contents &About &File &Edit &View &Outline &Properties &Search &Tool bars &Docks &Tabs &Bookmarks &Help Choose instance Instance: qpdfview::PageItem Go to page %1. Go to page %1 of file '%2'. Open '%1'. Edit form field '%1'. Copy &text &Select text Copy &image Save image to &file... Save image to file Warning Could not save image to file '%1'. Add &text Add &highlight &Copy link address &Select link address &Remove annotation qpdfview::PdfSettingsWidget Antialiasing: Text antialiasing: None Full Reduced Text hinting: Ignore paper color: Overprint preview: Solid Shaped Thin line mode: Splash Arthur Backend: qpdfview::PluginHandler Image (%1) Compressed (%1) Supported formats (%1) Could not decompress '%1'! Could not match file type of '%1'! Critical Could not load plug-in for file type '%1'! qpdfview::PrintDialog Fit to page: Page ranges: All pages Even pages Odd pages Page set: Single page Two pages Four pages Six pages Nine pages Sixteen pages Number-up: Bottom to top and left to right Bottom to top and right to left Left to right and bottom to top Left to right and top to bottom Right to left and bottom to top Right to left and top to bottom Top to bottom and left to right Top to bottom and right to left Number-up layout: Extended options qpdfview::PsSettingsWidget Graphics antialias bits: Text antialias bits: qpdfview::RecentlyClosedMenu &Recently closed &Clear list qpdfview::RecentlyUsedMenu Recently &used &Clear list qpdfview::SearchModel <b>%1</b> occurrences <b>%1</b> occurrences on page <b>%2</b> qpdfview::SearchableMenu Search for '%1'... qpdfview::SettingsDialog General &Behavior &Graphics &Interface &Shortcuts &Modifiers Defaults Defaults on current tab Mouse wheel modifiers Mouse button modifiers Open URL: Auto-refresh: Effective after restart. Track recently used: Keep recently closed: Restore tabs: Restore bookmarks: Restore per-file settings: min Save database interval: Synchronize presentation: Default Presentation screen: Synchronize split views: Zoom factor: Parallel search execution: ms None Highlight duration: Highlight color: Annotation color: '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number. Source editor: Use tiling: Keep obsolete pixmaps: Use device pixel ratio: Decorate pages: Decorate links: Decorate form fields: Background color: Paper color: Presentation background color: Pages per row: px Page spacing: Thumbnail spacing: Thumbnail size: Fit to viewport Document context menu: Tab context menu: Open in source editor: %1 MB Cache size: Minimal scrolling: Prefetch: Prefetch distance: Top Bottom Left Right Tab position: As needed Always Exit after last tab: Scrollable menus: Searchable menus: Zoom to selection: Never Settings Tab visibility: Spread tabs: New tab next to current tab: Recently used count: Recently closed count: Extended search dock: Toggle tool and menu bars with fullscreen: File tool bar: Edit tool bar: View tool bar: Use page label: Document title as tab title: Current page in window title: Instance name in window title: Synchronize outline view: Highlight current thumbnail: Limit thumbnails to results: Annotation overlay: Form field overlay: Zoom: Rotate: Scroll: Copy to clipboard: Add annotation: qpdfview::ShortcutHandler Action Key sequence Skip backward Skip forward Move up Move down Move left Move right qpdfview::TreeView &Expand all &Collapse all qpdfview-0.4.18/translations/qpdfview_bg.ts0000644000000000000000000024165513516127411017163 0ustar 00000000000000 Model::ImageDocument Image (%1) Size Resolution Depth Format Формат Monochrome Indexed 32 bits RGB 32 bits ARGB 16 bits RGB 24 bits RGB Model::PdfDocument Linearized Name Име Type Вид Embedded Вграден Subset Подгрупа File Файл Yes Да PDF version Encrypted No Не Model::PdfPage Information Информация Version 0.20.1 or higher of the Poppler library is required to add or remove annotations. Нужна е версия 0.20.1 или по-висока на библиотеката Poppler, за да се добавят или премахват анотации. Model::PsDocument Title Заглавие Created for Създадено за Creator Създател Creation date Дата на създаване Format Формат Language level Ниво на езика QObject An empty instance name is not allowed. Не е позволено празно име за екземпляра. An empty search text is not allowed. Не е позволен празен текст за търсене. Unknown command-line option '%1'. Using '--instance' requires an instance name. Използването на '--instance' изисква име на инстанция. Using '--instance' is not allowed without using '--unique'. Използването на '--instance' не е разрешено без използване на '--unique'. An instance name must only contain the characters "[A-Z][a-z][0-9]_" and must not begin with a digit. Името на инстанцията трябва да съдържа само буквите от "[A-Z][a-z][0-9]_" и не трябва да започва с цифра. Using '--search' requires a search text. Използването на '--search' изисква текст за търсене. Could not prepare signal handler. QShortcut Shift Shift Ctrl Ctrl Alt Alt Shift and Ctrl Shift и Ctrl Shift and Alt Shift и Alt Ctrl and Alt Ctrl и Alt Right mouse button Middle mouse button None qpdfview::BookmarkDialog Bookmark Page: Страница: Label: Comment: Modified: qpdfview::BookmarkMenu &Open &Отвори Open in new &tab Отвари в нов &таб &Remove bookmark &Премахни отметката qpdfview::Database Jump to page %1 Отиди на страница %1 qpdfview::DocumentView Information Информация The source editor has not been set. Opening URL is disabled in the settings. Отварянето на URL е изключено от настройките. Warning Предупреждение SyncTeX data for '%1' could not be found. Printing '%1'... Принтиране на '%1'... Unlock %1 Отключи %1 Password: Парола: Page %1 Страница %1 qpdfview::FileAttachmentAnnotationWidget Save... Съхрани... Save and open... Съхрани и отвори... Save file attachment Съхрани прикачения файл Warning Предупреждение Could not open file attachment saved to '%1'. Could not save file attachment to '%1'. Не може да се съхрани прикаченият файл за '%1'. qpdfview::FontsDialog Fonts qpdfview::HelpDialog Help help.html Please replace by file name of localized help if available, e.g. "help_fr.html". help.html Find previous Намери предишния Find next Намери следващия qpdfview::MainWindow Toggle tool bars Toggle menu bar Warning Предупреждение Could not open '%1'. Не може да се отвори '%1'. Copy file path Select file path Close all tabs Затваряне на всички раздели Close all tabs but this one Затваряне на всички раздели, освен този Close all tabs to the left Затвори всички табове на ляво Close all tabs to the right Затвори всички табове на дясно Open Отвoри Open in new tab Отвари в нов таб Could not refresh '%1'. Не може да се презареди '%1'. Save copy Съхрани копие Could not save copy at '%1'. Не може да се съхрани копие в '%1'. Save as Съхрани като Move to instance Failed to access instance '%1'. Could not save as '%1'. Не може да се съхрани като '%1'. Could not print '%1'. Не може да се отпечати '%1'. Set first page Select the first page of the body matter: Jump to page Отиди на страница Page: Страница: Jump to page %1 Отиди на страница %1 About qpdfview Относно qpdfview <p><b>qpdfview %1</b></p><p>qpdfview is a tabbed document viewer using Qt.</p><p>This version includes:<ul> <p><b>qpdfview %1</b></p><p>qpdfview e четец на PDF документи, използващ раздели, базиран на Qt.</p><p>Тази версия съдържа:<ul> <li>PDF support using Poppler %1</li> <li>PS support using libspectre %1</li> <li>DjVu support using DjVuLibre %1</li> <li>PDF support using Fitz %1</li> <li>Printing support using CUPS %1</li> &Edit bookmark The document '%1' has been modified. Do you want to save your changes? Документът '%1' е променен. Искате ли да запазите промените? Page width Ширина на страницата Page size Размер на страницата Match &case Съвпадение на &регистъра Whole &words Highlight &all Избери &всички &Open... &Отваряне... Open in new &tab... Отваряне в нов &таб... Open &copy in new tab Move to &instance... &Refresh &Опресняване Information Информация Instance-to-instance communication requires D-Bus support. </ul><p>See <a href="https://launchpad.net/qpdfview">launchpad.net/qpdfview</a> for more information.</p><p>&copy; %1 The qpdfview developers</p> Save &as... Съхрани &като... Save &copy... &Print... &Принтиране... E&xit &Изход &Previous page &Предишна страница &Next page &Следваща страница &First page &Първа страница &Last page &Последна страница &Set first page... &Jump to page... &Отиди към страница... Jump &backward Отиди на&зад Jump for&ward Отиди на&пред &Search... &Търсене... Find previous Намери предишния Find next Намери следващия Cancel search Отмени търсенето &Copy to clipboard &Копирай в системния буфер &Add annotation &Добави коментар Settings... Настройки... &Continuous Б&ез прекъсване между страниците &Two pages &Две страници Two pages &with cover page Две страници и &обложка &Multiple pages &Множество страници Right to left Zoom &in У&величи Zoom &out Н&амали Original &size &Оригинален размер Fit to page width По ширина Fit to page size Цялата страница Rotate &left Завърти на&ляво Rotate &right Завърти на&дясно Invert colors Обърни цветовете Convert to grayscale Trim margins Darken with paper color Lighten with paper color Fonts... Шрифтове... &Fullscreen Цял &екран &Presentation... &Презентация... &Previous tab &Предишен таб &Next tab &Следващ таб &Close tab &Затвори таба Close &all tabs Затвори в&сичките табове Close all tabs &but current tab Затвори всичките табове б&ез настоящия Restore &most recently closed tab &Previous bookmark &Предишна отметка &Next bookmark &Следваща отметка &Add bookmark &Добави отметка Open copy in new &window Split view horizontally... Split view vertically... Close current view Thumb&nails Book&marks Composition &Remove bookmark &Премахни отметката Edit '%1' at %2,%3... Open containing &folder &Save Remove all bookmarks Премахни всички отметки &Contents &Съдържание &About &Относно програмата &File &Файл &Edit &Редактирай &View &Преглед &Outline &Съдържание &Properties &Свойства &Search &Търсене &Tool bars Ленти с &инструменти &Docks &Панели &Tabs &Табове &Bookmarks &Отметки &Help &Помощ Choose instance Instance: qpdfview::PageItem Go to page %1. Към страница %1. Go to page %1 of file '%2'. Към страница %1 от файла '%2'. Open '%1'. Отвори '%1'. Edit form field '%1'. Редактирай полето на формата '%1'. Copy &text Копирай &текста &Select text Copy &image Копирай &снимката Save image to &file... Съхрани снимката във &файл... Save image to file Съхрани снимката във файл Warning Предупреждение Could not save image to file '%1'. Не може да се съхрани снимката във файла '%1'. Add &text Добави &текст Add &highlight Добави п&одчертаване &Copy link address &Select link address &Remove annotation П&ремахни анотация qpdfview::PdfSettingsWidget Antialiasing: Изглаждане: Text antialiasing: Изглаждане на текста: None Без Full Пълно Reduced Намалено Text hinting: Подсказка за текста: Ignore paper color: Overprint preview: Solid Плътно Shaped Оформено Thin line mode: Режим на тънката линия: Splash Arthur Backend: qpdfview::PluginHandler Image (%1) Compressed (%1) Supported formats (%1) Could not decompress '%1'! Could not match file type of '%1'! Critical Критично Could not load plug-in for file type '%1'! qpdfview::PrintDialog Fit to page: Побири в страницата: Page ranges: Диапазон на страницата: All pages Всички страници Even pages Четните страници Odd pages Нечетните страници Page set: Набор от страници: Single page Една страница Two pages Две страници Four pages Четири страници Six pages Шест страници Nine pages Девет страници Sixteen pages Шестнадесет страници Number-up: Номер нагоре: Bottom to top and left to right Отдолу нагоре и отляво надясно Bottom to top and right to left Отдолу нагоре и отдясно наляво Left to right and bottom to top Отляво на дясно и отдолу нагоре Left to right and top to bottom Отляво надясно и отгоре надолу Right to left and bottom to top Отдясно наляво и отдолу нагоре Right to left and top to bottom Отдясно наляво и отгоре надолу Top to bottom and left to right Отгоре надолу и отляво надясно Top to bottom and right to left Отгоре надолу и от дясно на ляво Number-up layout: Подредба на страниците Extended options Разширени опции qpdfview::PsSettingsWidget Graphics antialias bits: Text antialias bits: qpdfview::RecentlyClosedMenu &Recently closed &Наскоро затворени &Clear list &Изчистване на списък qpdfview::RecentlyUsedMenu Recently &used Последно &използвани &Clear list &Изчисти списъка qpdfview::SearchModel <b>%1</b> occurrences <b>%1</b> occurrences on page <b>%2</b> qpdfview::SearchableMenu Search for '%1'... qpdfview::SettingsDialog General Основни &Behavior Пов&едение &Graphics &Графика &Interface &Shortcuts Б&ързи клавиши &Modifiers &Модификатори Defaults Стандартни Defaults on current tab Mouse wheel modifiers Mouse button modifiers Open URL: Отвори URL: Auto-refresh: Автоматично опресняване: Effective after restart. Ефективно след рестартиране. Track recently used: Проследи последно използваните: Keep recently closed: Restore tabs: Възстанови табове: Restore bookmarks: Възстанови отметки: Restore per-file settings: Възстановяване на настройки според файл: min Save database interval: Synchronize presentation: Синхронизация на презентация: Default По подразбиране Presentation screen: Екран за презентации: Synchronize split views: Zoom factor: Parallel search execution: ms None Няма Highlight duration: Продължителност на осветяването: Highlight color: Цвят за маркиране: Annotation color: Цвят за анотацията: '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number. Source editor: Редактор на източник: Use tiling: Keep obsolete pixmaps: Use device pixel ratio: Decorate pages: Рамка на страниците: Decorate links: Маркиране на линкове: Decorate form fields: Маркиране на формулярни полета: Background color: Цвят на фона: Paper color: Цвят на хартията: Presentation background color: Цвят на фона за презентация: Pages per row: Страници в един ред: px Page spacing: Разстояние между страниците: Thumbnail spacing: Разстояние между миниатюрите: Thumbnail size: Размер на миниатюрите: Fit to viewport Document context menu: Tab context menu: Open in source editor: %1 MB %1 Mб Cache size: Размер на кеша: Minimal scrolling: Prefetch: Prefetch distance: Top Отгоре Bottom Отдолу Left Отляво Right Отдясно Tab position: Разположение на табовете: As needed При необходимост Always Винаги Exit after last tab: Scrollable menus: Searchable menus: Zoom to selection: Never Никога Settings Tab visibility: Видимост на табовете: Spread tabs: New tab next to current tab: Новият таб в непосредствена близост до сегашният таб: Recently used count: Recently closed count: Extended search dock: Toggle tool and menu bars with fullscreen: File tool bar: Файлов панел: Edit tool bar: Панел за редактиране: View tool bar: Панел за преглед: Use page label: Document title as tab title: Current page in window title: Текуща страница в заглавието на прозореца: Instance name in window title: Synchronize outline view: Highlight current thumbnail: Маркиране на текущата миниатюра: Limit thumbnails to results: Лимит на миниатюри е резултатите: Annotation overlay: Form field overlay: Zoom: Увеличаване: Rotate: Завъртане: Scroll: Copy to clipboard: Копирай в клипборда: Add annotation: Добави анотация: qpdfview::ShortcutHandler Action Действиe Key sequence Последователност на клавишите Skip backward Пропусни назад Skip forward Пропусни напред Move up Премести нагоре Move down Премести надолу Move left Премести наляво Move right Премести надясно qpdfview::TreeView &Expand all &Разгъни всички &Collapse all &Сгъни всички qpdfview-0.4.18/translations/qpdfview_bs.ts0000644000000000000000000023207713516127411017175 0ustar 00000000000000 Model::ImageDocument Image (%1) Size Resolution Depth Format Monochrome Indexed 32 bits RGB 32 bits ARGB 16 bits RGB 24 bits RGB Model::PdfDocument Linearized Name Type Embedded Subset File Yes PDF version Encrypted No Model::PdfPage Information Informacije Version 0.20.1 or higher of the Poppler library is required to add or remove annotations. Model::PsDocument Title Created for Creator Creation date Format Language level QObject An empty instance name is not allowed. Ime instance ne može biti prazno. An empty search text is not allowed. Unknown command-line option '%1'. Using '--instance' requires an instance name. Korištenje '--instance' zathejva i naziv instance. Using '--instance' is not allowed without using '--unique'. Korištenje '--instance' nije dozvoljeno bez korištenja '--unique'. An instance name must only contain the characters "[A-Z][a-z][0-9]_" and must not begin with a digit. Using '--search' requires a search text. Could not prepare signal handler. Nije moguće pripremiti handler za signal. QShortcut Shift Ctrl Alt Shift and Ctrl Shift and Alt Ctrl and Alt Right mouse button Middle mouse button None Ništa qpdfview::BookmarkDialog Bookmark Page: Stranica: Label: Comment: Modified: qpdfview::BookmarkMenu &Open &Otvori Open in new &tab Otvori u novom &tabu &Remove bookmark &Ukloni zabilješku qpdfview::Database Jump to page %1 qpdfview::DocumentView Information Informacije The source editor has not been set. Opening URL is disabled in the settings. Otvaranje URL-a je onemogućeno u postavkama. Warning Upozorenje SyncTeX data for '%1' could not be found. Printing '%1'... Štampam '%1'... Unlock %1 Otključaj %1 Password: Šifra: Page %1 qpdfview::FileAttachmentAnnotationWidget Save... Save and open... Save file attachment Warning Upozorenje Could not open file attachment saved to '%1'. Could not save file attachment to '%1'. qpdfview::FontsDialog Fonts qpdfview::HelpDialog Help help.html Please replace by file name of localized help if available, e.g. "help_fr.html". Find previous Pronađi prethodno Find next Pronađi sljedeće qpdfview::MainWindow Toggle tool bars Toggle menu bar Warning Upozorenje Could not open '%1'. Nije moguće otvoriti '%1'. Copy file path Select file path Close all tabs Close all tabs but this one Close all tabs to the left Close all tabs to the right Open Otvori Open in new tab Otvori u novom tabu Could not refresh '%1'. Nije moguće osvježiti '%1'. Save copy Sačuvaj kopiju Could not save copy at '%1'. Nije moguće sačuvati kopiju u '%1'. Save as Sačuvaj kao Move to instance Failed to access instance '%1'. Could not save as '%1'. Nije moguće sačuvati kao '%1'. Could not print '%1'. Nije moguće štampati '%1'. Set first page Select the first page of the body matter: Jump to page Idi na stranicu Page: Stranica: Jump to page %1 About qpdfview O qpdfviewu <p><b>qpdfview %1</b></p><p>qpdfview is a tabbed document viewer using Qt.</p><p>This version includes:<ul> <li>PDF support using Poppler %1</li> <li>PS support using libspectre %1</li> <li>DjVu support using DjVuLibre %1</li> <li>PDF support using Fitz %1</li> <li>Printing support using CUPS %1</li> &Edit bookmark The document '%1' has been modified. Do you want to save your changes? Page width Širina stranice Page size Veličina stranice Match &case Slaganje &veličine slova Whole &words Highlight &all Označi &sve &Open... &Otvori... Open in new &tab... Otvori u novom &tabu... Open &copy in new tab Move to &instance... &Refresh &Osvježi Information Informacije Instance-to-instance communication requires D-Bus support. </ul><p>See <a href="https://launchpad.net/qpdfview">launchpad.net/qpdfview</a> for more information.</p><p>&copy; %1 The qpdfview developers</p> Save &as... Sačuvaj &kao... Save &copy... &Print... &Štampaj... E&xit &Previous page &Prethodna stranica &Next page &Sljedeća stranica &First page &Prva stranica &Last page &Posljednja stranica &Set first page... &Jump to page... &Idi na stranicu... Jump &backward Jump for&ward &Search... &Pretraga... Find previous Pronađi prethodno Find next Pronađi sljedeće Cancel search Otkaži pretragu &Copy to clipboard &Kopiraj u privremenu memoriju &Add annotation &Dodaj napomenu Settings... Postavke... &Continuous &Neprekidno &Two pages &Dvije stranice Two pages &with cover page Dvije stranice &sa naslovnom stranicom &Multiple pages &Višestruke stranice Right to left Zoom &in Uveća&j Zoom &out Umanj&i Original &size Originalna &veličina Fit to page width Uklopi širinu stranice Fit to page size Uklopi veličinu stranice Rotate &left Rotiraj &lijevo Rotate &right Rotiraj &desno Invert colors Convert to grayscale Trim margins Darken with paper color Lighten with paper color Fonts... Fontovi... &Fullscreen Preko &cijelog ekrana &Presentation... &Prezentacija... &Previous tab &Prethodni tab &Next tab &Sljedeći tab &Close tab &Zatvori tab Close &all tabs Zatvori &sve tabove Close all tabs &but current tab Zatvori sve tabove &osim trenutnog Restore &most recently closed tab &Previous bookmark &Prethodna zabilješka &Next bookmark &Sljedeća zabilješka &Add bookmark &Dodaj zabilješku Open copy in new &window Split view horizontally... Split view vertically... Close current view Thumb&nails Book&marks Composition &Remove bookmark &Remove zabilješku Edit '%1' at %2,%3... Open containing &folder &Save Remove all bookmarks Ukloni sve zabilješke &Contents &Sadržaj &About &O programu &File &Datoteka &Edit &Uredi &View &Prikaz &Outline &Kontura &Properties &Svojstva &Search &Pretraga &Tool bars &Alatne trake &Docks &Dokovi &Tabs &Tabovi &Bookmarks &Zabilješke &Help &Pomoć Choose instance Instance: qpdfview::PageItem Go to page %1. Idi na stranicu %1. Go to page %1 of file '%2'. Idi na stranicu %1 datoteke '%2'. Open '%1'. Otvori '%1'. Edit form field '%1'. Uredi polje obrasca '%1'. Copy &text Kopiraj &tekst &Select text Copy &image Kopiraj &sliku Save image to &file... Sačuvaj sliku u &datoteku... Save image to file Sačuvaj sliku u datoteku Warning Upozorenje Could not save image to file '%1'. Nije moguće sačuvati sliku u datoteku '%1'. Add &text Dodaj &tekst Add &highlight Dodaj &oznaku &Copy link address &Select link address &Remove annotation &Ukloni napomenu qpdfview::PdfSettingsWidget Antialiasing: Text antialiasing: None Ništa Full Reduced Text hinting: Ignore paper color: Overprint preview: Solid Shaped Thin line mode: Splash Arthur Backend: qpdfview::PluginHandler Image (%1) Compressed (%1) Supported formats (%1) Could not decompress '%1'! Could not match file type of '%1'! Critical Could not load plug-in for file type '%1'! qpdfview::PrintDialog Fit to page: Page ranges: All pages Even pages Odd pages Page set: Single page Two pages Four pages Six pages Nine pages Sixteen pages Number-up: Bottom to top and left to right Bottom to top and right to left Left to right and bottom to top Left to right and top to bottom Right to left and bottom to top Right to left and top to bottom Top to bottom and left to right Top to bottom and right to left Number-up layout: Extended options qpdfview::PsSettingsWidget Graphics antialias bits: Text antialias bits: qpdfview::RecentlyClosedMenu &Recently closed &Clear list &Očisti listu qpdfview::RecentlyUsedMenu Recently &used Nedavno &korišteno &Clear list &Očisti listu qpdfview::SearchModel <b>%1</b> occurrences <b>%1</b> occurrences on page <b>%2</b> qpdfview::SearchableMenu Search for '%1'... qpdfview::SettingsDialog General &Behavior &Ponašanje &Graphics &Grafika &Interface &Interfejs &Shortcuts &Modifiers &Prilagođavanja Defaults Podrazumijevano Defaults on current tab Mouse wheel modifiers Mouse button modifiers Open URL: Otvori URL: Auto-refresh: Automatsko osvježavanje: Effective after restart. Bit će u upotrebi nakon ponovnog pokretanja. Track recently used: Prati nedavno korišteno: Keep recently closed: Restore tabs: Povrati tabove: Restore bookmarks: Povrati zabilješke: Restore per-file settings: Povrati postavke za pojedinačne datoteke: min Save database interval: Synchronize presentation: Sinhronizacija prezentacija: Default Podrazumijevano Presentation screen: Prezentacijski ekran: Synchronize split views: Zoom factor: Parallel search execution: ms None Ništa Highlight duration: Trajanje označavanja: Highlight color: Annotation color: '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number. '%1' je zamijenjeno apsolutnom putanjom do datoteke. '%2' koje predstavlja '%3' je zamijenjeno linijom koja predstavlja broj kolone. Source editor: Uređivač izvornog teksta: Use tiling: Keep obsolete pixmaps: Use device pixel ratio: Decorate pages: Ukrašavanje stranica: Decorate links: Ukrašavanje linkova: Decorate form fields: Ukrašavanje polja obrasca: Background color: Boja pozadine: Paper color: Boja papira: Presentation background color: Pages per row: Stranica po redu: px Page spacing: Razmak između stranica: Thumbnail spacing: Razmak između sličica: Thumbnail size: Veličina sličice: Fit to viewport Document context menu: Tab context menu: Open in source editor: %1 MB %1 MB Cache size: Veličina keša: Minimal scrolling: Prefetch: Prefetch: Prefetch distance: Prefetch vrijednost: Top Vrh Bottom Dno Left Lijevo Right Desno Tab position: Položaj taba: As needed Kada je potrebno Always Uvijek Exit after last tab: Scrollable menus: Searchable menus: Zoom to selection: Never Nikad Settings Tab visibility: Vidljivost taba: Spread tabs: New tab next to current tab: Recently used count: Recently closed count: Extended search dock: Toggle tool and menu bars with fullscreen: File tool bar: Alatna traka datoteke: Edit tool bar: Alatna traka za uređivanje: View tool bar: Alatna traka za prikaz: Use page label: Document title as tab title: Current page in window title: Instance name in window title: Synchronize outline view: Highlight current thumbnail: Limit thumbnails to results: Annotation overlay: Form field overlay: Zoom: Uvećanje: Rotate: Rotiraj: Scroll: Skrolanje: Copy to clipboard: Kopiraj u međumemoriju: Add annotation: Dodaj napomenu: qpdfview::ShortcutHandler Action Key sequence Skip backward Skip forward Move up Move down Move left Move right qpdfview::TreeView &Expand all Raširi sv&e &Collapse all &Zatvori sve qpdfview-0.4.18/translations/qpdfview_ca.ts0000644000000000000000000023620613516127411017152 0ustar 00000000000000 Model::ImageDocument Image (%1) Imatge (%1) Size Mida Resolution Resolució Depth Profunditat Format Format Monochrome Monocrom Indexed Indexat 32 bits RGB RGB de 32 bits 32 bits ARGB ARGB de 32 bits 16 bits RGB RGB de 16 bits 24 bits RGB RGB de 24 bits Model::PdfDocument Linearized Linealitzat Name Nom Type Tipus Embedded Incrustat Subset Subconjunt File Fitxer Yes PDF version Versió de PDF Encrypted Xifrat No No Model::PdfPage Information Informació Version 0.20.1 or higher of the Poppler library is required to add or remove annotations. Es necessita la versió 2.20 o superior de la biblioteca Poppler per afegir o eliminar anotacions. Model::PsDocument Title Títol Created for Creat per a Creator Creador Creation date Data de creació Format Format Language level Nivell de llenguatge QObject An empty instance name is not allowed. No es permet un nom d'instància buit. An empty search text is not allowed. No es permet una cadena de cerca buida. Unknown command-line option '%1'. Opció de línia de comandaments '%1' desconeguda. Using '--instance' requires an instance name. La utilització de '--instance' requereix el nom d'una instància. Using '--instance' is not allowed without using '--unique'. La utilització de '--instance' no està permesa sense l'ús de '--unique'. An instance name must only contain the characters "[A-Z][a-z][0-9]_" and must not begin with a digit. El nom d'una instància només pot contindre els caràcters "[A-Z][a-z][0-9]_" i no pot començar per un número. Using '--search' requires a search text. L'ús de '--search' necessita un text de cerca. Could not prepare signal handler. No s'ha pogut preparar el gestor de senyals. QShortcut Shift Majús Ctrl Ctrl Alt Alt Shift and Ctrl Majús i Ctrl Shift and Alt Majús i Alt Ctrl and Alt Ctrl i Alt Right mouse button Botó dret del ratolí Middle mouse button Botó central del ratolí None Cap qpdfview::BookmarkDialog Bookmark Adreça d'interès Page: Pàgina: Label: Etiqueta: Comment: Comentari: Modified: Modificat: qpdfview::BookmarkMenu &Open &Obre Open in new &tab Obre en una pes&tanya nova &Remove bookmark Elimina el ma&rcador qpdfview::Database Jump to page %1 Salta a la pàgina %1 qpdfview::DocumentView Information Informació The source editor has not been set. No s'ha establert l'editor de codi font. Opening URL is disabled in the settings. S'ha inhabilitat l'apertura de l'adreça URL als ajusts. Warning Avís SyncTeX data for '%1' could not be found. No s'han pogut trobar les dades SyncTeX per a '%1'. Printing '%1'... Imprimint '%1'... Unlock %1 Desbloqueja %1 Password: Contrasenya: Page %1 Pàgina %1 qpdfview::FileAttachmentAnnotationWidget Save... Desa... Save and open... Desa i obre... Save file attachment Desa l'adjunt Warning Avís Could not open file attachment saved to '%1'. No s'ha pogut obrir el fitxer afegit desat a '%1'. Could not save file attachment to '%1'. No s'ha pogut desar l'adjunt a '%1'. qpdfview::FontsDialog Fonts Tipus de lletres qpdfview::HelpDialog Help Ajuda help.html Please replace by file name of localized help if available, e.g. "help_fr.html". help_ca.html Find previous Cerca l'anterior Find next Cerca el següent qpdfview::MainWindow Toggle tool bars Canvia barra d'eines Toggle menu bar Canvia barra de menú Warning Avís Could not open '%1'. No s'ha pogut obrir '%1'. Copy file path Copia el camí al fitxer Select file path Selecciona el camí al fitxer Close all tabs Tanca totes les pestanyes Close all tabs but this one Tanca totes les pestanyes menys aquesta Close all tabs to the left Tanca totes les pestanyes a l'esquerra Close all tabs to the right Tanca totes les pestanyes a la dreta Open Obre Open in new tab Obre en una pestanya nova Could not refresh '%1'. No s'ha pogut refrescar '%1'. Save copy Desa una còpia Could not save copy at '%1'. No s'ha pogut desar una còpia a '%1'. Save as Anomena i desa Move to instance Mou a la instància Failed to access instance '%1'. No s'ha pogut accedir a la instància '%1'. Could not save as '%1'. No es pot desar com a '%1'. Could not print '%1'. No s'ha pogut imprimir '%1'. Set first page Posa com a primera pàgina Select the first page of the body matter: Tria la primera pàgina de l'assumpte principal: Jump to page Salta a la pàgina Page: Pàgina: Jump to page %1 Salta a la pàgina %1 About qpdfview Sobre qpdfview <p><b>qpdfview %1</b></p><p>qpdfview is a tabbed document viewer using Qt.</p><p>This version includes:<ul> <p><b>qpdfview %1</b></p><p>qpdfview és un visualitzador de documents amb pestanyes mitjançant Qt.</p><p>Aquesta versió inclou:<ul> <li>PDF support using Poppler %1</li> <li>Compatibilitat amb PDF mitjançant Poppler %1</li> <li>PS support using libspectre %1</li> <li>Compatibilitat amb PS mitjançant libspectre %1</li> <li>DjVu support using DjVuLibre %1</li> <li>Compatibilitat amb DjVu mitjançant DjVuLibre %1</li> <li>PDF support using Fitz %1</li> <li>Compatibilitat amb PDF mitjançant Fitz %1</li> <li>Printing support using CUPS %1</li> <li>Compatibilitat amb la impressió mitjançant CUPS %1</li> &Edit bookmark &Edita el marcador The document '%1' has been modified. Do you want to save your changes? El document '%1' ha estat modificat. Voleu desar els vostres canvis? Page width Amplada de la pàgina Page size Mida de la pàgina Match &case Coincidència de majús&cules Whole &words Paraules senceres (&w) Highlight &all Res&alta tot &Open... &Obre... Open in new &tab... Obre en una pes&tanya nova... Open &copy in new tab Obre la &còpia en una pestanya nova Move to &instance... Mou a la &instància... &Refresh &Refresca Information Informació Instance-to-instance communication requires D-Bus support. La comunicació instancia a instancia requereix la compatibilitat amb D-Bus. </ul><p>See <a href="https://launchpad.net/qpdfview">launchpad.net/qpdfview</a> for more information.</p><p>&copy; %1 The qpdfview developers</p> </ul><p>Consulteu <a href="https://launchpad.net/qpdfview">launchpad.net/qpdfview</a> per a més informació.</p><p>&copy; %1 Els desenvolupadors de qpdfview</p> Save &as... &Anomena i desa... Save &copy... Desa la &còpia... &Print... Im&primeix… E&xit &Surt &Previous page &Pàgina anterior &Next page Pàgi&na següent &First page &Primera pàgina &Last page Ú&ltima pàgina &Set first page... Po&sa primera pàgina... &Jump to page... &Salta a la pàgina... Jump &backward Torna enrere Jump for&ward Vés endavant &Search... &Cerca... Find previous Cerca l'anterior Find next Cerca el següent Cancel search Cancel·la la cerca &Copy to clipboard &Copia al porta-retalls &Add annotation &Afegeix anotació Settings... Ajusts... &Continuous &Continu &Two pages &Doble pàgina Two pages &with cover page Doble pàgina &amb portada &Multiple pages Diverses pàgines Right to left De dreta a esquerra Zoom &in Ampl&ia el zoom: Zoom &out Redueix el z&oom: Original &size Mida &original Fit to page width Ajusta a l'amplada de la pàgina Fit to page size Ajusta a la mida de la pàgina Rotate &left Gira a &l'esquerra Rotate &right Gira a la &dreta Invert colors Inverteix els colors Convert to grayscale Converteix a escala de grisos Trim margins Retalla els marges Darken with paper color Fosc amb color de paper Lighten with paper color Clar amb color de paper Fonts... Tipus de lletres... &Fullscreen Pantalla &completa &Presentation... &Presentació &Previous tab &Pestanya anterior &Next tab Pestanya següe&nt &Close tab Tan&ca la pestanya Close &all tabs Tanc&a totes les pestanyes Close all tabs &but current tab Tanca totes les pestanyes &excepte l'actual Restore &most recently closed tab Restaura les pestanyes tancades &més recents &Previous bookmark Marcador &anterior &Next bookmark Marcador &següent &Add bookmark &Afegeix el marcador Open copy in new &window Obre la còpia en una &finestra nova Split view horizontally... Divideix horitzontalment la vista... Split view vertically... Divideix verticalment la vista... Close current view Tanca la vista actual Thumb&nails Mi&niatures Book&marks &Marcadors Composition Composició &Remove bookmark Elimina el ma&rcador Edit '%1' at %2,%3... Edita '%1' a %2,%3... Open containing &folder Obre carpeta del contingut (&F) &Save De&sa Remove all bookmarks Elimina tots els marcadors &Contents &Continguts &About Qu&ant a &File &Fitxer &Edit &Edita &View &Visualitza &Outline C&ontorn &Properties &Propietats &Search &Cerca &Tool bars &Barres d'eines &Docks &Plafons &Tabs Pes&tanyes &Bookmarks &Marcadors &Help A&juda Choose instance Trieu la instància Instance: Instància: qpdfview::PageItem Go to page %1. Vés a la pàgina %1. Go to page %1 of file '%2'. Vés a la pàgina %1 del fitxer '%2'. Open '%1'. Obre '%1'. Edit form field '%1'. Edita el camp '%1' del formulari. Copy &text Copia el &text &Select text Tria text (&S) Copy &image Copia la &imatge Save image to &file... Desa la imatge a un &fitxer... Save image to file Desa la imatge a un fitxer... Warning Avís Could not save image to file '%1'. No s'ha pogut desar la imatge al fitxer '%1'. Add &text Afegeix &text Add &highlight &Destaca &Copy link address &Còpia direcció de l'enllaç &Select link address Tria direcció de l'enllaç (&S) &Remove annotation &Elimina l'anotació qpdfview::PdfSettingsWidget Antialiasing: Antialiàsing: Text antialiasing: Antialiàsing del text: None Cap Full Complet Reduced Reduït Text hinting: Contorn del text: Ignore paper color: Ignora el color del paper: Overprint preview: Vista prèvia de la sobreimpressió: Solid Sòlid Shaped Amb forma Thin line mode: Mode de línia fina: Splash Pantalla inicial Arthur Arthur Backend: Infraestructura: qpdfview::PluginHandler Image (%1) Imatge (%1) Compressed (%1) Comprimit (%1) Supported formats (%1) Formats admesos (%1) Could not decompress '%1'! No s'ha pogut descomprimir «%1»! Could not match file type of '%1'! No s'ha pogut trobar el tipus de fitxer de '%1'! Critical Crític Could not load plug-in for file type '%1'! No s'ha pogut carregar el connector per al tipus de fitxer '%1'! qpdfview::PrintDialog Fit to page: Encaixa a la pàgina: Page ranges: Interval de pàgines: All pages Totes les pàgines Even pages Pàgines parells Odd pages Pàgines senars Page set: Conjunt de pàgines: Single page Només una pàgina Two pages Dues pàgines Four pages Quatre págines Six pages Sis pàgines Nine pages Nou pàgines Sixteen pages Setze pàgines Number-up: Pàgines per full: Bottom to top and left to right De baix a dalt i d'esquerra a dreta Bottom to top and right to left De baix a dalt i de dreta a esquerra Left to right and bottom to top D'esquerra a dreta i de baix a dalt Left to right and top to bottom D'esquerra a dreta i de dalt a baix Right to left and bottom to top De dreta a esquerra i de baix a dalt Right to left and top to bottom De dreta a esquerra i de dalt a baix Top to bottom and left to right De dalt a baix i d'esquerra a dreta Top to bottom and right to left De dalt a baix i de dreta a esquerra Number-up layout: Distribució de les pàgines per full: Extended options Opcions esteses qpdfview::PsSettingsWidget Graphics antialias bits: Bits de l'antialiàsing dels gràfics: Text antialias bits: Bits de l'antialiàsing del text: qpdfview::RecentlyClosedMenu &Recently closed &Tancats recentment &Clear list &Neteja la llista qpdfview::RecentlyUsedMenu Recently &used &Utilitzats recentment &Clear list &Neteja la llista qpdfview::SearchModel <b>%1</b> occurrences <b>%1</b> aparicions <b>%1</b> occurrences on page <b>%2</b> <b>%1</b> aparicions a la pàgina <b>%2</b> qpdfview::SearchableMenu Search for '%1'... Cerca per '%1'... qpdfview::SettingsDialog General General &Behavior &Comportament &Graphics &Gràfics &Interface &Interfície &Shortcuts Drecere&s &Modifiers &Modificadors Defaults Valors per defecte Defaults on current tab Per defecte en la pestanya actual Mouse wheel modifiers Modificadors de la roda del ratolí Mouse button modifiers Modificadors del botó del ratolí Open URL: Obre les adreces URL: Auto-refresh: Refresc automàtic: Effective after restart. Efectiu desprès de reiniciar. Track recently used: Seguiment dels utilitzats recentment: Keep recently closed: Mantingues els tancats recentment: Restore tabs: Restaura les pestanyes: Restore bookmarks: Restaura els marcadors: Restore per-file settings: Restaura els ajusts per a cada fitxer: min min Save database interval: Interval per al desament de la base de dades Synchronize presentation: Sincronitza la presentació: Default Per defecte Presentation screen: Pantalla de presentació: Synchronize split views: Sincronitza les vistes dividides: Zoom factor: Factor del zoom: Parallel search execution: Execució en paral·lel de la cerca: ms ms None Cap Highlight duration: Durada del ressaltat: Highlight color: Color del ressaltat: Annotation color: Color de l'anotació: '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number. '%1' es canviarà pel camí absolut. '%2' resp. '%3' es canviarà per la línia resp. del número de la columna. Source editor: Editor de codi font: Use tiling: Utilitza el mosaic: Keep obsolete pixmaps: Mantingues els mapes de píxels obsolets: Use device pixel ratio: Utilitza la relació de píxel del dispositiu: Decorate pages: Decora les pàgines: Decorate links: Decora els enllaços: Decorate form fields: Decora els camps dels formularis: Background color: Color del fons: Paper color: Color del paper: Presentation background color: Color del fons de la presentació: Pages per row: Pàgines per fila: px px Page spacing: Espaiat de pàgina: Thumbnail spacing: Espaiat de miniatures: Thumbnail size: Mida de les miniatures: Fit to viewport Ajusta a l'àrea de visualització Document context menu: Menú contextual del document: Tab context menu: Menú contextual de la pestanya: Open in source editor: Obre a l'editor de codi font: %1 MB %1 MB Cache size: Mida de la memòria cau: Minimal scrolling: Desplaçament mínim: Prefetch: Precarrega: Prefetch distance: Distància de precàrrega: Top Superior Bottom Inferior Left Esquerra Right Dreta Tab position: Posició de la pestanya: As needed Quan calgui Always Sempre Exit after last tab: Surt després de la última pestanya: Scrollable menus: Menús amb scroll: Searchable menus: Menús amb cerca: Zoom to selection: Zoom a la selecció: Never Mai Settings Ajusts Tab visibility: Visibilitat de la pestanya: Spread tabs: Barres de fitxes: New tab next to current tab: Pestanya nova al costat de la pestanya actual: Recently used count: Nombre d'utilitzats recentment: Recently closed count: Nombre de tancats recentment: Extended search dock: Lloc de cerca estesa: Toggle tool and menu bars with fullscreen: Canvia les barres de menú i eines a pantalla completa: File tool bar: Barra d'eines de fitxer: Edit tool bar: Barra d'eines d'edició: View tool bar: Barra d'eines de visualització: Use page label: Utilitza l'etiqueta de la pàgina: Document title as tab title: Títol de document com a títol de barra: Current page in window title: Pàgina actual al títol de la finestra: Instance name in window title: Nom de la instància al títol de la finestra: Synchronize outline view: Sincronitza la vista del contorn: Highlight current thumbnail: Ressalta la miniatura actual: Limit thumbnails to results: Limita les miniatures als resultats: Annotation overlay: Superposició de les anotacions: Form field overlay: Superposició dels camps dels formularis: Zoom: Zoom: Rotate: Gir: Scroll: Desplaçament: Copy to clipboard: Copia al porta-retalls: Add annotation: Afegeix l'anotació: qpdfview::ShortcutHandler Action Acció Key sequence Seqüència de tecles Skip backward Omet enrere Skip forward Omet endavant Move up Mou cap amunt Move down Mou cap avall Move left Mou a l'esquerra Move right Mou a la dreta qpdfview::TreeView &Expand all &Expandeix-ho tot &Collapse all &Col·lapsa-ho tot: qpdfview-0.4.18/translations/qpdfview_cs.ts0000644000000000000000000023472213516127411017175 0ustar 00000000000000 Model::ImageDocument Image (%1) Obrázek (%1) Size Velikost Resolution Rozlišení Depth Hloubka Format Formát Monochrome Jednobarevné Indexed Indexováno 32 bits RGB 32 bitový RGB 32 bits ARGB 32 bitový ARGB 16 bits RGB 16 bitový RGB 24 bits RGB 24 bitový RGB Model::PdfDocument Linearized Linearizovaný Name Název Type Typ Embedded Vloženo Subset Podmnožina File Soubor Yes Ano PDF version Verze PDF Encrypted Zašifrováno No Ne Model::PdfPage Information Informace Version 0.20.1 or higher of the Poppler library is required to add or remove annotations. Pro přidávání nebo odstraňování poznámek je požadována verze 0.20.1 nebo vyšší knihovny Poppler. Model::PsDocument Title Název Created for Vytvořeno pro Creator Tvůrce Creation date Datum vytvoření Format Formát Language level Úroveň jazyka QObject An empty instance name is not allowed. Prázdný název instance není povolen. An empty search text is not allowed. Prázdný text k vyhledání není při vyhledávání povolen. Unknown command-line option '%1'. Neznámá volba příkazového řádku '%1'. Using '--instance' requires an instance name. Použití'--instance' vyžaduje název instance. Using '--instance' is not allowed without using '--unique'. Použití'--instance' není povoleno bez použití '--unique'. An instance name must only contain the characters "[A-Z][a-z][0-9]_" and must not begin with a digit. Název instance musí obsahovat pouze znaky "[A-Z][a-z][0-9]_" a nesmí začínat číslem. Using '--search' requires a search text. Použití'--search' vyžaduje text k vyhledání. Could not prepare signal handler. Nepodařilo se připravit zacházení se signálem. QShortcut Shift Shift Ctrl Ctrl Alt Alt Shift and Ctrl Shift a Ctrl Shift and Alt Shift a Alt Ctrl and Alt Ctrl a Alt Right mouse button Pravé tlačítko myši Middle mouse button Prostřední tlačítko myši None Žádná qpdfview::BookmarkDialog Bookmark Záložka Page: Strana: Label: Štítek: Comment: Poznámka: Modified: Změněno: qpdfview::BookmarkMenu &Open &Otevřít Open in new &tab Otevřít v nové &kartě &Remove bookmark &Odstranit záložku qpdfview::Database Jump to page %1 Skočit na stranu %1 qpdfview::DocumentView Information Informace The source editor has not been set. Editor zdrojového textu nebyl nastaven. Opening URL is disabled in the settings. Otevření adresy (URL) je v nastavení zakázáno. Warning Varování SyncTeX data for '%1' could not be found. Nepodařilo se najít data SyncTeX pro '%1'. Printing '%1'... Tiskne se '%1'... Unlock %1 Odemknout %1 Password: Heslo: Page %1 Strana %1 qpdfview::FileAttachmentAnnotationWidget Save... Uložit... Save and open... Uložit a otevřít... Save file attachment Uložit přílohu souboru Warning Varování Could not open file attachment saved to '%1'. Nepodařilo se otevřít přílohu souboru uloženou do '%1'. Could not save file attachment to '%1'. Nepodařilo se uložit přílohu souboru so '%1'. qpdfview::FontsDialog Fonts Písma qpdfview::HelpDialog Help Nápověda help.html Please replace by file name of localized help if available, e.g. "help_fr.html". help_cs.html Find previous Najít předchozí Find next Najít další qpdfview::MainWindow Toggle tool bars Přepnout nástrojové pruhy Toggle menu bar Přepnout pruh s nabídkou Warning Varování Could not open '%1'. Nepodařilo se otevřít '%1'. Copy file path Kopírovat cestu souboru Select file path Vybrat cestu souboru Close all tabs Zavřít všechny karty Close all tabs but this one Zavřít všechny karty kromě této Close all tabs to the left Zavřít všechny karty nalevo Close all tabs to the right Zavřít všechny karty napravo Open Otevřít Open in new tab Otevřít v nové kartě Could not refresh '%1'. Nepodařilo se obnovit '%1'. Save copy Uložit kopii Could not save copy at '%1'. Nepodařilo se uložit kopii v '%1'. Save as Uložit jako Move to instance Jít na instanci Failed to access instance '%1'. Nepodařilo se přistoupit k instanci '%1'. Could not save as '%1'. Nepodařilo se uložit jako '%1'. Could not print '%1'. Nepodařilo se vytisknout '%1'. Set first page Nastavit první stranu Select the first page of the body matter: Vybrat první stranu Jump to page Přejít na stranu Page: Strana: Jump to page %1 Skočit na stranu %1 About qpdfview O programu qpdfview <p><b>qpdfview %1</b></p><p>qpdfview is a tabbed document viewer using Qt.</p><p>This version includes:<ul> <p><b>qpdfview %1</b></p><p>qpdfview je prohlížeč dokumentů s kartami používající Qt.</p><p>Tato verze zahrnuje:<ul> <li>PDF support using Poppler %1</li> <li>Podpora PDF pomocí Poppler %1</li> <li>PS support using libspectre %1</li> <li>Podpora PS pomocí libspectre %1</li> <li>DjVu support using DjVuLibre %1</li> <li>Podpora DjVu pomocí DjVuLibre %1</li> <li>PDF support using Fitz %1</li> <li>Podpora PDF pomocí Fitz %1</li> <li>Printing support using CUPS %1</li> <li>Podpora tisku pomocí CUPS %1</li> &Edit bookmark &Upravit záložku The document '%1' has been modified. Do you want to save your changes? Dokument '%1' byl změněn. Chcete uložit své změny? Page width Šířka strany Page size Velikost strany Match &case Rozlišovat velká a malá &písmena Whole &words Celá &slova Highlight &all Zvýraznit &vše &Open... &Otevřít... Open in new &tab... Otevřít v nové &kartě... Open &copy in new tab Otevřít &kopii v nové kartě Move to &instance... Jít na &instanci... &Refresh &Obnovit Information Informace Instance-to-instance communication requires D-Bus support. Komunikace od instance k instanci vyžaduje podporu pro D-Bus. </ul><p>See <a href="https://launchpad.net/qpdfview">launchpad.net/qpdfview</a> for more information.</p><p>&copy; %1 The qpdfview developers</p> </ul><p>Podívejte se na <a href="https://launchpad.net/qpdfview">launchpad.net/qpdfview</a>, kde naleznete další informace.</p><p>&copy; %1 The qpdfview developers</p> Save &as... Uložit &jako... Save &copy... Uložit &kopii... &Print... &Tisk... E&xit &Ukončit &Previous page &Předchozí strana &Next page &Další strana &First page P&rvní strana &Last page Pos&lední strana &Set first page... &Nastavit první stranu... &Jump to page... Pře&jít na stranu... Jump &backward Skočit &zpět Jump for&ward Skočit &vpřed &Search... &Hledat... Find previous Najít předchozí Find next Najít další Cancel search Zrušit hledání &Copy to clipboard &Kopírovat do schránky &Add annotation &Přidat poznámku Settings... Nastavení... &Continuous &Průběžně &Two pages &Dvě strany Two pages &with cover page Dvě strany &s titulní stranou &Multiple pages &Více stran Right to left Zprava doleva Zoom &in &Přiblížit Zoom &out &Oddálit Original &size Původní &velikost Fit to page width Přizpůsobit šířce strany Fit to page size Přizpůsobit velikosti strany Rotate &left Otočit v&levo Rotate &right Otočit v&pravo Invert colors Obrátit barvy Convert to grayscale Převést na odstíny šedi Trim margins Oříznout okraje Darken with paper color Ztmavit s barvou papíru Lighten with paper color Zesvětlit s barvou papíru Fonts... Písma... &Fullscreen &Celá obrazovka &Presentation... &Promítání... &Previous tab &Předchozí karta &Next tab &Další karta &Close tab &Zavřít kartu Close &all tabs Zavřít &všechny karty Close all tabs &but current tab Zavřít všechny karty &kromě nynější karty Restore &most recently closed tab Obnovit &naposledy zavřenou kartu &Previous bookmark &Předchozí záložka &Next bookmark &Další záložka &Add bookmark &Přidat záložku Open copy in new &window Otevřít kopii v novém &okně Split view horizontally... Rozdělit pohled vodorovně... Split view vertically... Rozdělit pohled svisle... Close current view Zavřít nynější pohled Thumb&nails &Náhledy Book&marks &Záložky Composition Přizpůsobení barev &Remove bookmark &Odstranit záložku Edit '%1' at %2,%3... Upravit '%1' at %2,%3... Open containing &folder Otevřít obsahující &složku &Save &Uložit Remove all bookmarks Odstranit všechny záložky &Contents &Obsah &About O &programu &File &Soubor &Edit Úp&ravy &View &Pohled &Outline &Osnova &Properties &Vlastnosti &Search &Hledání &Tool bars &Nástrojové panely &Docks Postranní p&anely &Tabs &Karty &Bookmarks &Záložky &Help &Nápověda Choose instance Vybrat instanci Instance: Instance: qpdfview::PageItem Go to page %1. Jít na stranu %1. Go to page %1 of file '%2'. Jít na stranu %1 souboru '%2'. Open '%1'. Otevřít '%1'. Edit form field '%1'. Upravit formulářové pole '%1'. Copy &text Kopírovat &text &Select text &Vybrat text Copy &image Kopírovat &obrázek Save image to &file... Uložit obrázek do &souboru... Save image to file Uložit obrázek do souboru Warning Varování Could not save image to file '%1'. Nepodařilo se uložit obrázek do souboru '%1'. Add &text Přidat &text Add &highlight Přidat &zvýraznění &Copy link address &Kopírovat adresu odkazu &Select link address &Vybrat adresu odkazu &Remove annotation &Odstranit poznámku qpdfview::PdfSettingsWidget Antialiasing: Vyhlazování: Text antialiasing: Vyhlazování textu: None Žádné Full Úplné Reduced Omezené Text hinting: Instruování textu: Ignore paper color: Nevšímat si barvy papíru: Overprint preview: Náhled přetisku: Solid Vyplněný Shaped Ohraničený Thin line mode: Režim tenké čáry: Splash Úvodní obrazovka Arthur Artur Backend: Jádro: qpdfview::PluginHandler Image (%1) Obrázek (%1) Compressed (%1) Zabaleno (%1) Supported formats (%1) Podporované formáty (%1) Could not decompress '%1'! Nepodařilo se rozbalit '%1'! Could not match file type of '%1'! Nepodařilo se porovnat typ souboru '%1'! Critical Vážné Could not load plug-in for file type '%1'! Nepodařilo se nahrát přídavný modul pro typ souboru '%1'! qpdfview::PrintDialog Fit to page: Umístit na stranu: Page ranges: Rozsah stran: All pages Všechny strany Even pages Sudé strany Odd pages Liché strany Page set: Soubor stran: Single page Jedna strana Two pages Dvě strany Four pages Čtyři strany Six pages Šest stran Nine pages Devět stran Sixteen pages Šestnáct stran Number-up: Přepočítat: Bottom to top and left to right Zezdola nahoru a zleva doprava Bottom to top and right to left Zezdola nahoru a zprava doleva Left to right and bottom to top Zleva doprava a zezdola nahoru Left to right and top to bottom Zleva doprava a shora dolů Right to left and bottom to top Zprava doleva a zezdola nahoru Right to left and top to bottom Zprava doleva a shora dolů Top to bottom and left to right Shora dolů a zleva doprava Top to bottom and right to left Shora dolů a zprava doleva Number-up layout: Přepočítat rozmístění: Extended options Pokročilé volby qpdfview::PsSettingsWidget Graphics antialias bits: Bity vyhlazování grafiky: Text antialias bits: Bity vyhlazování textu: qpdfview::RecentlyClosedMenu &Recently closed &Nedávno zavřené &Clear list S&mazat seznam qpdfview::RecentlyUsedMenu Recently &used Nedávno &použité &Clear list S&mazat seznam qpdfview::SearchModel <b>%1</b> occurrences <b>%1</b> výskytů <b>%1</b> occurrences on page <b>%2</b> <b>%1</b> výskytů na straně <b>%2</b> qpdfview::SearchableMenu Search for '%1'... Hledat '%1'... qpdfview::SettingsDialog General Obecné &Behavior &Chování &Graphics &Grafika &Interface &Rozhraní &Shortcuts &Zkratky &Modifiers &Modifikátory Defaults Výchozí Defaults on current tab Výchozí na nynější kartě Mouse wheel modifiers Modifikátory kolečka myši Mouse button modifiers Modifikátory tlačítka myši Open URL: Otevřít adresu (URL): Auto-refresh: Obnovit automaticky: Effective after restart. Účinné po opětovném spuštění. Track recently used: Sledovat nedávno použité: Keep recently closed: Uchovat nedávno zavřené: Restore tabs: Obnovit karty: Restore bookmarks: Obnovit záložky: Restore per-file settings: Obnovit nastavení souborů: min min Save database interval: Uložit databázový interval Synchronize presentation: Ovládat promítání: Default Výchozí Presentation screen: Promítací obrazovka: Synchronize split views: Seřídit rozdělené pohledy: Zoom factor: Násobek zvětšení: Parallel search execution: Provádění souběžného vyhledávání: ms ms None Žádný Highlight duration: Doba trvání zvýraznění: Highlight color: Barva zvýraznění: Annotation color: Barva poznámky: '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number. '%1' je nahrazeno absolutní souborovou cestou. '%2' příp. '%3' je nahrazeno číslem řádku popřípadě sloupce. Source editor: Editor zdroje: Use tiling: Použít dláždění: Keep obsolete pixmaps: Zachovat zastaralé pixmapy: Use device pixel ratio: Použít poměr pixelu zařízení: Decorate pages: Obtáhnout strany: Decorate links: Obtáhnout odkazy: Decorate form fields: Obtáhnout formulářová pole: Background color: Barva pozadí: Paper color: Barva papíru: Presentation background color: Barva pozadí promítání: Pages per row: Stran na řádek: px px Page spacing: Odstup stran: Thumbnail spacing: Odstup náhledů: Thumbnail size: Velikost náhledů: Fit to viewport Přizpůsobit oblasti pohledu Document context menu: Související nabídka k dokumentu: Tab context menu: Související nabídka ke kartě Open in source editor: Otevřít v editoru zdroje: %1 MB %1 MB Cache size: Velikost vyrovnávací paměti: Minimal scrolling: Nejmenší posun obrazu: Prefetch: Přednatažení: Prefetch distance: Vzdálenost přednatažení: Top Nahoře Bottom Dole Left Vlevo Right Vpravo Tab position: Umístění karet: As needed Podle potřeby Always Vždy Exit after last tab: Ukončit po poslední kartě: Scrollable menus: Utíkající nabídky: Searchable menus: Prohledávatelné nabídky: Zoom to selection: Přiblížit výběr Never Nikdy Settings Nastavení Tab visibility: Viditelnost karet: Spread tabs: Roztáhnout karty: New tab next to current tab: Nová karta vedle nynější karty: Recently used count: Počet nedávno použitých: Recently closed count: Počet nedávno zavřených: Extended search dock: Panel pro rozšířené hledání: Toggle tool and menu bars with fullscreen: Přepnout nástrojové pruhy a pruh s nabídkou při zobrazení na celou obrazovkou File tool bar: Panel nástrojů pro soubor: Edit tool bar: Panel nástrojů pro úpravy: View tool bar: Panel nástrojů pro pohled: Use page label: Použít popis strany: Document title as tab title: Název dokumentu jako název karty: Current page in window title: Nynější strana v názvu okna: Instance name in window title: Název instance v názvu okna: Synchronize outline view: Zvýraznit položku osnovy: Highlight current thumbnail: Zvýraznit nynější náhled: Limit thumbnails to results: Omezit náhledy na výsledky: Annotation overlay: Vložené poznámky: Form field overlay: Vložené formulářové pole: Zoom: Zvětšení: Rotate: Otočit: Scroll: Posun obrazu: Copy to clipboard: Kopírovat do schránky: Add annotation: Přidat poznámku: qpdfview::ShortcutHandler Action Činnost Key sequence Klávesová zkratka Skip backward Skočit zpět Skip forward Skočit vpřed Move up Posunout nahoru Move down Posunout dolů Move left Posunout doleva Move right Posunout doprava qpdfview::TreeView &Expand all &Rozbalit vše &Collapse all &Sbalit vše qpdfview-0.4.18/translations/qpdfview_da.ts0000644000000000000000000023322313516127411017147 0ustar 00000000000000 Model::ImageDocument Image (%1) Billede (%1) Size Størrelse Resolution Opløsning Depth Dybde Format Format Monochrome Monokrom Indexed Indekseret 32 bits RGB 32 bit RGB 32 bits ARGB 32 bit ARGB 16 bits RGB 16 bit RGB 24 bits RGB 24 bit RGB Model::PdfDocument Linearized Lineariseret Name Navn Type Type Embedded Indlejret Subset Undersæt File Fil Yes Ja PDF version PDF-version Encrypted Krypteret No Nej Model::PdfPage Information Information Version 0.20.1 or higher of the Poppler library is required to add or remove annotations. Version 0.20.1 eller højere af Poppler-biblioteket kræves for at tilføje eller fjerne annotationer. Model::PsDocument Title Titel Created for Oprettet for Creator Skaber Creation date Oprettelsesdato Format Format Language level Sprogniveau QObject An empty instance name is not allowed. Navnet på instansen kan ikke stå tomt. An empty search text is not allowed. En tom søgetekst er ikke tilladt. Unknown command-line option '%1'. Ukendt kommandolinje-tilvalg '%1'. Using '--instance' requires an instance name. Anvendes '--instance' kræver det et navn på den instans. Using '--instance' is not allowed without using '--unique'. Det er ikke tilladt at bruge '--instance' uden også at bruge '--unique'. An instance name must only contain the characters "[A-Z][a-z][0-9]_" and must not begin with a digit. Et instansnavn må kun indeholde tegnene "[A-Z][a-z][0-9]_" og må ikke begynde med et tal. Using '--search' requires a search text. Brug af '--search' kræver en søgetekst. Could not prepare signal handler. Kunne ikke klargøre signalhåndteringen. QShortcut Shift Skift Ctrl Ctrl Alt Alt Shift and Ctrl Skift og Ctrl Shift and Alt Skift og Alt Ctrl and Alt Ctrl og Alt Right mouse button Højre museknap Middle mouse button Midterste museknap None Ingen qpdfview::BookmarkDialog Bookmark Bogmærke Page: Side: Label: Etiket: Comment: Kommentar: Modified: Ændret: qpdfview::BookmarkMenu &Open &Åbn Open in new &tab Åbn i ny&t faneblad &Remove bookmark F&jern bogmærke qpdfview::Database Jump to page %1 Hop til side %1 qpdfview::DocumentView Information Information The source editor has not been set. Kilderedigeringsprogrammet er ikke blevet sat. Opening URL is disabled in the settings. Åbning af URL er deaktiveret i indstillingerne. Warning Advarsel SyncTeX data for '%1' could not be found. SyncTeX-data for '%1' kunne ikke findes. Printing '%1'... Udskriver '%1'... Unlock %1 Lås %1 op Password: Adgangskode: Page %1 Side %1 qpdfview::FileAttachmentAnnotationWidget Save... Gem... Save and open... Gem og åbn... Save file attachment Gem filvedhæftning Warning Advarsel Could not open file attachment saved to '%1'. Kunne ikke åbne filvedhæftning som blev gemt til '%1'. Could not save file attachment to '%1'. Kunne ikke gemme filvedhæftning til '%1'. qpdfview::FontsDialog Fonts Skrifttyper qpdfview::HelpDialog Help Hjælp help.html Please replace by file name of localized help if available, e.g. "help_fr.html". help.html Find previous Find forrige Find next Find næste qpdfview::MainWindow Toggle tool bars Værktøjslinje til/fra Toggle menu bar Menu til/fra Warning Advarsel Could not open '%1'. Kunne ikke åbne '%1'. Copy file path Kopiér filsti Select file path Vælg filsti Close all tabs Luk alle faneblade Close all tabs but this one Luk alle faneblade undtagen dette Close all tabs to the left Luk alle faneblade til venstre Close all tabs to the right Luk alle faneblade til højre Open Åbn Open in new tab Åbn i nyt faneblad Could not refresh '%1'. Kunne ikke opdatere '%1'. Save copy Gem kopi Could not save copy at '%1'. Kunne ikke gemme kopi i '%1'. Save as Gem som Move to instance Flyt til instans Failed to access instance '%1'. Kunne ikke tilgå instans '%1'. Could not save as '%1'. Kunne ikke gemme som '%1'. Could not print '%1'. Kunne ikke udskrive '%1'. Set first page Sæt første side Select the first page of the body matter: Vælg den første side af body matter: Jump to page Gå til side Page: Side: Jump to page %1 Hop til side %1 About qpdfview Om qpdfview <p><b>qpdfview %1</b></p><p>qpdfview is a tabbed document viewer using Qt.</p><p>This version includes:<ul> <p><b>qpdfview %1</b></p><p>qpdfview er en dokumentfremviser med faneblade som bruger Qt.</p><p>Denne version inkluderer:<ul> <li>PDF support using Poppler %1</li> <li>PDF-understøttelse ved brug af Poppler %1</li> <li>PS support using libspectre %1</li> <li>PS-understøttelse ved brug af libspectre %1</li> <li>DjVu support using DjVuLibre %1</li> <li>DjVu-understøttelse ved brug af DjVuLibre %1</li> <li>PDF support using Fitz %1</li> <li>PDF-understøttelse ved brug af Fitz %1</li> <li>Printing support using CUPS %1</li> <li>Udskrivning-understøttelse ved brug af CUPS %1</li> &Edit bookmark &Rediger bogmærke The document '%1' has been modified. Do you want to save your changes? Dokumentet '%1' er blevet ændret. Vil du gemme dine ændringer? Page width Sidebredde Page size Sidestørrelse Match &case &Versalfølsom Whole &words Hele &ord Highlight &all Marker &alle &Open... &Åbn... Open in new &tab... Åbn i nyt &faneblad... Open &copy in new tab Åbn &kopi i nyt faneblad Move to &instance... Flyt til &instans... &Refresh &Opdater Information Information Instance-to-instance communication requires D-Bus support. Instans-til-instans-kommunikation kræver understøttelse af D-Bus. </ul><p>See <a href="https://launchpad.net/qpdfview">launchpad.net/qpdfview</a> for more information.</p><p>&copy; %1 The qpdfview developers</p> </ul><p>Se <a href="https://launchpad.net/qpdfview">launchpad.net/qpdfview</a> for mere information.</p><p>&copy; %1 qpdfview-udviklerne</p> Save &as... Gem &som... Save &copy... Gem &kopi... &Print... &Udskriv... E&xit &Afslut &Previous page &Forrige side &Next page &Næste side &First page Første &side &Last page &Sidste side &Set first page... &Sæt første side... &Jump to page... &Gå til side... Jump &backward Hop &tilbage Jump for&ward Hop &fremad &Search... &Søg... Find previous Find forrige Find next Find næste Cancel search Annuller søgning &Copy to clipboard &Kopiér til udklipsholder &Add annotation Tilføj &notat Settings... Indstillinger... &Continuous &Fortløbende &Two pages &To sider Two pages &with cover page To sider &med forside &Multiple pages &Flere sider Right to left Højre mod venstre Zoom &in Zoom &ind Zoom &out Zoom &ud Original &size Oprindelig &størrelse Fit to page width Tilpas sidebredden Fit to page size Tilpas sidestørrelsen Rotate &left Roter til &venstre Rotate &right Roter til &højre Invert colors Inverter farver Convert to grayscale Konverter til gråtone Trim margins Trim margener Darken with paper color Mørkere med papirsfarve Lighten with paper color Lysere med papirsfarve Fonts... Skrifttyper... &Fullscreen &Fuldskærm &Presentation... &Præsentation... &Previous tab &Forrige faneblad &Next tab &Næste faneblad &Close tab &Luk faneblad Close &all tabs Luk &alle faneblade Close all tabs &but current tab Luk alle faneblade &undtagen det nuværende Restore &most recently closed tab Gendan &seneste lukkede faneblad &Previous bookmark &Forrige bogmærke &Next bookmark &Næste bogmærke &Add bookmark &Tilføj bogmærke Open copy in new &window Åbn kopi i nyt &vindue Split view horizontally... Opdel visning vandret... Split view vertically... Opdel visning lodret... Close current view Luk nuværende visning Thumb&nails &Miniature Book&marks &Bogmærker Composition Komposition &Remove bookmark F&jern bogmærke Edit '%1' at %2,%3... Rediger '%1' ved %2,%3... Open containing &folder Åbn indenholdende &mappe &Save &Gem Remove all bookmarks Fjern alle bogmærker &Contents &Indhold &About &Om &File &Filer &Edit &Rediger &View &Vis &Outline &Oversigt &Properties &Egenskaber &Search &Søg &Tool bars &Værktøjslinjer &Docks &Paneler &Tabs F&aneblade &Bookmarks &Bogmærker &Help &Hjælp Choose instance Vælg instans Instance: Instans: qpdfview::PageItem Go to page %1. Gå til side %1. Go to page %1 of file '%2'. Gå til side %1 i filen "%2". Open '%1'. Åbn "%1". Edit form field '%1'. Rediger formularfeltet '%1'. Copy &text Kopiér &tekst &Select text &Vælg tekst Copy &image Kopiér &billede Save image to &file... Gem billede til &fil... Save image to file Gam billede til fil Warning Advarsel Could not save image to file '%1'. Kunne ikke gemme billede til fil '%1'. Add &text Tilføj &tekst Add &highlight Tilføj &markering &Copy link address &Kopiér linkadresse &Select link address &Vælg linkadresse &Remove annotation &Fjern annotering qpdfview::PdfSettingsWidget Antialiasing: Udjævning: Text antialiasing: Udjævning af tekst: None Ingen Full Fuld Reduced Reduceret Text hinting: Hintning af tekst: Ignore paper color: Ignorer papirsfarve: Overprint preview: Forhåndsvisning af overprint: Solid Ensfarvet Shaped Formet Thin line mode: Tilstand for tynd linje: Splash Splash Arthur Forfatter Backend: Motor: qpdfview::PluginHandler Image (%1) Billede (%1) Compressed (%1) Komprimeret (%1) Supported formats (%1) Understøttede formater (%1) Could not decompress '%1'! Kunne ikke udpakke '%1'! Could not match file type of '%1'! Kunne ikke matche filetype af '%1'! Critical Kritisk Could not load plug-in for file type '%1'! Kunne ikke indlsæse plugin for filtypen '%1'! qpdfview::PrintDialog Fit to page: Tilpas til side: Page ranges: Sideinterval: All pages Alle sider Even pages Lige sider Odd pages Ulige sider Page set: Sidesæt: Single page Én side Two pages To sider Four pages Fire sider Six pages Seks sider Nine pages Ni sider Sixteen pages Seksten siger Number-up: Nummer-op: Bottom to top and left to right Bund til top og venstre til højre Bottom to top and right to left Bund til top og højre til venstre Left to right and bottom to top Venstre til højre og bund til top Left to right and top to bottom Venstre til højre og top til bund Right to left and bottom to top Højre til venstre og bund til top Right to left and top to bottom Højre til venstre og top til bund Top to bottom and left to right Top til bund og venstre til højre Top to bottom and right to left Top til bund og højre til venstre Number-up layout: Interval for nummer-op: Extended options Udvidede valgmuligheder qpdfview::PsSettingsWidget Graphics antialias bits: Udjævningsbit for grafik: Text antialias bits: Udjævningsbit for tekst: qpdfview::RecentlyClosedMenu &Recently closed &Seneste lukkede &Clear list &Ryd liste qpdfview::RecentlyUsedMenu Recently &used Senest &brugte &Clear list &Ryd liste qpdfview::SearchModel <b>%1</b> occurrences <b>%1</b> forekomster <b>%1</b> occurrences on page <b>%2</b> <b>%1</b> forekomster på side <b>%2</b> qpdfview::SearchableMenu Search for '%1'... Søg efter '%1'... qpdfview::SettingsDialog General Generelt &Behavior &Opførsel &Graphics G&rafik &Interface &Grænseflade &Shortcuts &Genveje &Modifiers &Tilpasninger Defaults Standarder Defaults on current tab Standarder på nuværende faneblad Mouse wheel modifiers Tilpasninger for musehjul Mouse button modifiers Tilpasninger for museknap Open URL: Åbn URL: Auto-refresh: Automatisk genindlæsning: Effective after restart. Benyttes efter genstart. Track recently used: Husk senest anvendte: Keep recently closed: Behold seneste lukkede: Restore tabs: Gendan faneblade: Restore bookmarks: Gendan bogmærker: Restore per-file settings: Gendan indstillinger pr. fil: min min Save database interval: Interval for gemning af database: Synchronize presentation: Synkroniser præsentation: Default Standard Presentation screen: Præsentationsskærm Synchronize split views: Visninger for synkroniseret opdeling: Zoom factor: Zoomfaktor: Parallel search execution: Eksekvering af parallel søgning: ms ms None Ingen Highlight duration: Fremhæv varighed: Highlight color: Fremhævelsesfarve: Annotation color: Annoteringsfarve: '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number. '%1' erstattes af den absolutte filsti. '%2' og '%3' erstattes hhv. af linje- og kolonnenummer. Source editor: Kilderedigering: Use tiling: Brug fliselægning: Keep obsolete pixmaps: Behold forældede pixelkort: Use device pixel ratio: Brug enhedens pixelforhold: Decorate pages: Pynt sider: Decorate links: Pynt henvisninger: Decorate form fields: Pynt formularfelter: Background color: Baggrundsfarve: Paper color: Papirfarve: Presentation background color: Baggrundsfarve for præsentation: Pages per row: Sider pr. række: px px Page spacing: Sideafstand: Thumbnail spacing: Miniatureafstand: Thumbnail size: Miniaturestørrelse: Fit to viewport Tilpas til visningsområde Document context menu: Genvejsmenu for dokument: Tab context menu: Genvejsmenu for faneblad: Open in source editor: Åbn i kilderedigeringsprogram: %1 MB %1 MB Cache size: Cache-størrelse: Minimal scrolling: Minimal rulning: Prefetch: Forudindlæs: Prefetch distance: Afstand for afhent på forkant: Top Øverst Bottom Nederst Left Venstre Right Højre Tab position: Fanebladsplacering: As needed Efter behov Always Altid Exit after last tab: Afslut efter sidste faneblad: Scrollable menus: Rulbare menuer: Searchable menus: Søgbare menuer: Zoom to selection: Zoom til markering: Never Aldrig Settings Indstillinger Tab visibility: Synlighed af faneblad: Spread tabs: Spred faneblade: New tab next to current tab: Nyt faneblad ved siden af nuværende faneblad: Recently used count: Antal seneste brugte: Recently closed count: Antal seneste lukket: Extended search dock: Dok for udvidet søgning: Toggle tool and menu bars with fullscreen: Værktøjs- og menulinjer med fuldskærm til/fra: File tool bar: Filværktøjslinje: Edit tool bar: Redigeringsværktøjslinje: View tool bar: Vis-værktøjslinje: Use page label: Brug sideetiket: Document title as tab title: Dokumenttitel som fanebladetitel: Current page in window title: Nuværende side i vinduestitel: Instance name in window title: Instansnavn i vinduestitel: Synchronize outline view: Visning for synkroniseret omrids: Highlight current thumbnail: Fremhæv nuværende miniature: Limit thumbnails to results: Begræns miniaturer til resultater: Annotation overlay: Overlægning for annotering: Form field overlay: Overlægning for formularfelt: Zoom: Zoom: Rotate: Roter: Scroll: Rul: Copy to clipboard: Kopiér til udklipsholder: Add annotation: Tilføj annotering: qpdfview::ShortcutHandler Action Handling Key sequence Tastesekvens Skip backward Spring tilbage Skip forward Spring fremad Move up Flyt op Move down Flyt ned Move left Flyt til venstre Move right Flyt til højre qpdfview::TreeView &Expand all &Udfold alle &Collapse all &Sammenfold alle qpdfview-0.4.18/translations/qpdfview_de.ts0000644000000000000000000023401713516127411017155 0ustar 00000000000000 Model::ImageDocument Image (%1) Bild (%1) Size Größe Resolution Auflösung Depth Farbtiefe Format Format Monochrome Schwarzweiß Indexed Indiziert 32 bits RGB 32-Bit RGB 32 bits ARGB 32-Bit ARGB 16 bits RGB 16-Bit RGB 24 bits RGB 24-Bit RGB Model::PdfDocument Linearized Linearisiert Name Name Type Typ Embedded Eingebettet Subset Teilmenge File Datei Yes Ja PDF version PDF-Version Encrypted Verschlüsselt No Nein Model::PdfPage Information Hinweis Version 0.20.1 or higher of the Poppler library is required to add or remove annotations. Das Hinzufügen oder Entfernen von Anmerkungen benötigt die Poppler-Bibliothek in Version 0.20.1 oder höher. Model::PsDocument Title Titel Created for Erstellt für Creator Ersteller Creation date Erstellungsdatum Format Format Language level Sprachniveau QObject An empty instance name is not allowed. Ein leerer Instanzname ist nicht zugelassen. An empty search text is not allowed. Ein leerer Suchtext ist nicht zugelassen. Unknown command-line option '%1'. Unbekannte Kommandozeilen-Option '%1'. Using '--instance' requires an instance name. '--instance' benötigt einen Instanznamen. Using '--instance' is not allowed without using '--unique'. '--instance' ist nur im Zusammenhang mit '--unique' zugelassen. An instance name must only contain the characters "[A-Z][a-z][0-9]_" and must not begin with a digit. Ein Instanzname darf lediglich die Zeichen "[A-Z][a-z][0-9]_" enthalten und darf nicht mit einer Ziffer beginnen. Using '--search' requires a search text. '--search' benötigt einen Suchtext. Could not prepare signal handler. Konnte Signalbehandlung nicht vorbereiten. QShortcut Shift Umschalt Ctrl Strg Alt Alt Shift and Ctrl Umschalt + Strg Shift and Alt Umschalt + Alt Ctrl and Alt Strg + Alt Right mouse button Rechte Maustaste Middle mouse button Mittlere Maustaste None Nichts qpdfview::BookmarkDialog Bookmark Lesezeichen Page: Seite: Label: Beschriftung: Comment: Kommentar: Modified: Geändert: qpdfview::BookmarkMenu &Open Öff&nen Open in new &tab In neuem &Tab öffnen &Remove bookmark Lesezeichen &entfernen qpdfview::Database Jump to page %1 Gehe zu Seite %1 qpdfview::DocumentView Information Hinweis The source editor has not been set. Der Quelltexteditor wurde nicht gesetzt. Opening URL is disabled in the settings. Das Öffnen von URL ist in den Einstellungen deaktiviert. Warning Warnung SyncTeX data for '%1' could not be found. Keine SyncTeX-Daten für »%1« gefunden. Printing '%1'... Drucke »%1« … Unlock %1 %1 entsperren Password: Kennwort: Page %1 Seite %1 qpdfview::FileAttachmentAnnotationWidget Save... Speichern... Save and open... Speichern und Öffnen... Save file attachment Dateianhang speichern Warning Warnung Could not open file attachment saved to '%1'. Dateianhang in '%1' konnte nach dem Speichern nicht geöffnet werden. Could not save file attachment to '%1'. Dateianhang konnte nicht in '%1' gespeichert werden. qpdfview::FontsDialog Fonts Schriftarten qpdfview::HelpDialog Help Hilfe help.html Please replace by file name of localized help if available, e.g. "help_fr.html". help_de.html Find previous Rückwärts suchen Find next Vorwärts suchen qpdfview::MainWindow Toggle tool bars Werkzeugleisten umschalten Toggle menu bar Menüleiste umschalten Warning Warnung Could not open '%1'. Konnte »%1« nicht öffnen. Copy file path Dateipfad kopieren Select file path Dateipfad auswählen Close all tabs Alle Reiter schließen Close all tabs but this one Alle Reiter bis auf diesen schließen Close all tabs to the left Alle Reiter zur Linken schließen Close all tabs to the right Alle Reiter zur Rechten schließen Open Öffnen Open in new tab In neuem Reiter öffnen Could not refresh '%1'. Konnte »%1« nicht aktualisieren. Save copy Kopie speichern Could not save copy at '%1'. Konnte keine Kopie unter »%1« speichern. Save as Speichern unter Move to instance Gehe zu Sitzung Failed to access instance '%1'. Öffnen der Sitzung '%1' gescheitert Could not save as '%1'. Konnte nicht unter '%1' speichern. Could not print '%1'. Konnte »%1« nicht drucken. Set first page Erste Seite setzen Select the first page of the body matter: Wählen Sie die erste Seite des Hauptteils: Jump to page Gehe zu Seite Page: Seite: Jump to page %1 Gehe zu Seite %1 About qpdfview Über qpdfview <p><b>qpdfview %1</b></p><p>qpdfview is a tabbed document viewer using Qt.</p><p>This version includes:<ul> <p><b>qpdfview %1</b></p><p>qpdfview ist ein Dokumentenbetrachter der Qt verwendet.</p><p>Diese Version enthält:<ul> <li>PDF support using Poppler %1</li> <li>PDF-Unterstützung mittels Poppler %1</li> <li>PS support using libspectre %1</li> <li>PS-Unterstützung mittels libspectre %1</li> <li>DjVu support using DjVuLibre %1</li> <li>DjVu-Unterstützung mittels DjVuLibre %1</li> <li>PDF support using Fitz %1</li> <li>PDF-Unterstützung mittels Fitz %1</li> <li>Printing support using CUPS %1</li> <li>Druckunterstützung mittels CUPS %1</li> &Edit bookmark Lesezeichen &bearbeiten The document '%1' has been modified. Do you want to save your changes? Das Dokument »%1« wurde verändert. Möchten Sie Ihre Änderungen speichern? Page width Seitenbreite Page size Seitengröße Match &case Groß-/&Kleinschreibung beachten Whole &words Ganze &Worte Highlight &all &Alle hervorheben &Open... Öff&nen … Open in new &tab... In neuem Rei&ter öffnen … Open &copy in new tab &Kopie in neuem Reiter öffnen Move to &instance... Gehe zu Sit&zung &Refresh &Aktualisieren Information Hinweis Instance-to-instance communication requires D-Bus support. </ul><p>See <a href="https://launchpad.net/qpdfview">launchpad.net/qpdfview</a> for more information.</p><p>&copy; %1 The qpdfview developers</p> Save &as... Speichern &unter … Save &copy... &Kopie speichern &Print... &Drucken … E&xit &Beenden &Previous page &Vorige Seite &Next page &Nächste Seite &First page &Erste Seite &Last page &Letzte Seite &Set first page... Erste Seite &setzen ... &Jump to page... &Zu Seite springen … Jump &backward Springe &rückwärts Jump for&ward Springe vor&wärts &Search... &Suchen … Find previous Rückwarts suchen Find next Vorwärts suchen Cancel search Suche abbrechen &Copy to clipboard In &Zwischenablage kopieren &Add annotation &Anmerkung hinzufügen Settings... Einstellungen … &Continuous &Fortlaufend &Two pages &Zweiseitig Two pages &with cover page Zweiseitig &mit Titelseite &Multiple pages Mehrere &Seiten Right to left Rechts nach links Zoom &in Ver&größern Zoom &out Ver&kleinern Original &size &Ursprüngliche Größe Fit to page width An Seitenbreite anpassen Fit to page size An Seitengröße anpassen Rotate &left Nach &links drehen Rotate &right Nach &rechts drehen Invert colors Farben umkehren Convert to grayscale In Graustufen umwandeln Trim margins Ränder abschneiden Darken with paper color Mit Papierfarbe abdunkeln Lighten with paper color Mit Papierfarbe aufhellen Fonts... Schriften … &Fullscreen &Vollbild &Presentation... &Präsentation … &Previous tab &Vorheriger Reiter &Next tab &Nächster Reiter &Close tab Reiter &schließen Close &all tabs &Alle Reiter schließen Close all tabs &but current tab Alle Reiter &bis auf den aktuellen schließen Restore &most recently closed tab Zuletzt geschlossenen Reiter &wiederherstellen &Previous bookmark &Voriges Lesezeichen &Next bookmark &Nächstes Lesezeichen &Add bookmark Lesezeichen &hinzufügen Open copy in new &window Split view horizontally... Split view vertically... Close current view Thumb&nails &Vorschaubilder Book&marks Lese&zeichen Composition Farbanpassung &Remove bookmark Lesezeichen &entfernen Edit '%1' at %2,%3... Bearbeite '%1' an %2,%3... Open containing &folder Öffne beinhaltendes &Verzeichnis &Save &Speichern Remove all bookmarks Alle Lesezeichen entfernen &Contents &Inhalt &About Ü&ber &File &Datei &Edit &Bearbeiten &View &Ansicht &Outline &Gliederung &Properties &Eigenschaften &Search S&uchen &Tool bars &Werkzeugleisten &Docks &Paletten &Tabs &Reiter &Bookmarks &Lesezeichen &Help &Hilfe Choose instance Sitzung auswählen Instance: Sitzung qpdfview::PageItem Go to page %1. Zu Seite %1 gehen. Go to page %1 of file '%2'. Gehe zu Seite %1 in Datei »%2«. Open '%1'. "%1" öffnen. Edit form field '%1'. Formularfeld »%1« bearbeiten. Copy &text &Text kopieren &Select text Text aus&wählen Copy &image &Bild kopieren Save image to &file... Bild in &Datei speichern … Save image to file Bild in Datei speichern Warning Warnung Could not save image to file '%1'. Konnte Bild nicht in Datei »%1« speichern. Add &text &Text hinzufügen Add &highlight &Hervorhebung hinzufügen &Copy link address Verweisadresse &kopieren &Select link address Verweisadresse aus&wählen &Remove annotation &Anmerkung entfernen qpdfview::PdfSettingsWidget Antialiasing: Kantenglättung: Text antialiasing: Text-Kantenglättung: None Kein Full Voll Reduced Reduziert Text hinting: Text-Hinting: Ignore paper color: Papierfarbe ignorieren: Overprint preview: Überdruckvorschau: Solid Gefüllt Shaped Geprägt Thin line mode: Modus für dünne Linien: Splash Splash Arthur Arthur Backend: Unterbau: qpdfview::PluginHandler Image (%1) Bild (%1) Compressed (%1) Supported formats (%1) Unterstützte Formate (%1) Could not decompress '%1'! Could not match file type of '%1'! Konnte Dateityp von "%1" nicht bestimmen! Critical Kritischer Fehler Could not load plug-in for file type '%1'! Konnte Plug-in für Dateityp "%1" nicht laden! qpdfview::PrintDialog Fit to page: An Seitengröße anpassen: Page ranges: Seitenbereiche: All pages Alle Seiten Even pages Gerade Seiten Odd pages Ungerade Seiten Page set: Seitenzahlen: Single page Einzelne Seite Two pages Zwei Seiten Four pages Vier Seiten Six pages Sechs Seiten Nine pages Neun Seiten Sixteen pages Sechzehn Seiten Number-up: Seiten pro Blatt: Bottom to top and left to right Von unten nach oben und links nach rechts Bottom to top and right to left Von unten nach oben und rechts nach links Left to right and bottom to top Von links nach rechts und unten nach oben Left to right and top to bottom Von links nach rechts und oben nach unten Right to left and bottom to top Von rechts nach links und unten nach oben Right to left and top to bottom Von rechts nach links und oben nach unten Top to bottom and left to right Von oben nach unten und links nach rechts Top to bottom and right to left Von oben nach unten und rechts nach links Number-up layout: Anordnung der Seiten: Extended options Erweiterte Einstellungen qpdfview::PsSettingsWidget Graphics antialias bits: Bits für Grafik-Kantenglättung: Text antialias bits: Bits für Text-Kantenglättung: qpdfview::RecentlyClosedMenu &Recently closed Zuletzt &geschlossen &Clear list Liste &leeren qpdfview::RecentlyUsedMenu Recently &used Zuletzt &verwendet &Clear list Liste &leeren qpdfview::SearchModel <b>%1</b> occurrences <b>%1</b> Fundstellen <b>%1</b> occurrences on page <b>%2</b> <b>%1</b> Fundstellen auf Seite <b>%2</b> qpdfview::SearchableMenu Search for '%1'... Nach "%1" suchen ... qpdfview::SettingsDialog General Allgemein &Behavior &Verhalten &Graphics &Grafik &Interface &Oberfläche &Shortcuts &Tastenkürzel &Modifiers &Modifikatoren Defaults Vorgaben Defaults on current tab Vorgaben auf aktuellem Reiter Mouse wheel modifiers Mausradverhalten Mouse button modifiers Maustasten Modifikation Open URL: URL öffnen: Auto-refresh: Automatische Aktualisierung: Effective after restart. Nach Neustart wirksam. Track recently used: Verwendete Dateien merken: Keep recently closed: Geschlossene Reiter aufheben: Restore tabs: Reiter wiederherstellen: Restore bookmarks: Lesezeichen wiederherstellen: Restore per-file settings: Dateieinstellungen wiederherstellen: min Minuten Save database interval: Speicherintervall: Synchronize presentation: Präsentation synchronisieren: Default Standard Presentation screen: Präsentationsbildschirm: Synchronize split views: Zoom factor: Vergrößerungsfaktor: Parallel search execution: ms ms None Keine Highlight duration: Dauer der Hervorhebungen: Highlight color: Farbe der Hervorhebungen: Annotation color: Farbe für Anmerkungen: '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number. »%1« wird durch den Pfad der Datei ersetzt. »%2« bzw. »%3« wird durch die Zeilen- bzw. Spaltennummer ersetzt. Source editor: Quelltexteditor: Use tiling: Kachelung verwenden: Keep obsolete pixmaps: Veraltete Grafiken aufheben: Use device pixel ratio: Gerätepixelverhältnis nutzen: Decorate pages: Seiten absetzen: Decorate links: Verweise hervorheben: Decorate form fields: Formularfelder hervorheben: Background color: Hintergrundfarbe: Paper color: Papierfarbe: Presentation background color: Präsentationshintergrundfarbe: Pages per row: Seiten pro Zeile: px px Page spacing: Abstand der Seiten: Thumbnail spacing: Abstand der Vorschaubilder: Thumbnail size: Größe der Vorschaubilder: Fit to viewport An Ansicht anpassen Document context menu: Dokumentenkontextmenü: Tab context menu: Reiterkontextmenü: Open in source editor: Öffnen mit: %1 MB %1 MB Cache size: Größe des Zwischenspeichers: Minimal scrolling: Minimaler Bildlauf: Prefetch: Vorausladen: Prefetch distance: Reichweite des Vorausladens: Top Oben Bottom Unten Left Links Right Rechts Tab position: Reiterposition: As needed Bei Bedarf Always Immer Exit after last tab: Nach letztem Reiter beenden: Scrollable menus: Laufende Menüs: Searchable menus: Durchsuchbare Menüs: Zoom to selection: Auswahl vergrößern: Never Niemals Settings Einstellungen Tab visibility: Reitersichtbarkeit: Spread tabs: Reiter ausbreiten: New tab next to current tab: Neuer Reiter neben aktuellem Reiter: Recently used count: Anzahl verwendeter Dateien: Recently closed count: Anzahl geschlossener Reiter: Extended search dock: Erweiterte Suchansicht: Toggle tool and menu bars with fullscreen: Werkzeug- und Menüleisten bei Vollbild umschalten: File tool bar: Datei-Werkzeugleiste: Edit tool bar: Bearbeiten-Werkzeugleiste: View tool bar: Ansicht-Werkzeugleiste: Use page label: Seitenbeschriftung verwenden: Document title as tab title: Dokumententitel als Reitertitel: Current page in window title: Aktuelle Seite im Fenstertitel: Instance name in window title: Instanzname im Fenstertitel: Synchronize outline view: Gliederung synchronisieren: Highlight current thumbnail: Aktuelles Vorschaubild hervorheben: Limit thumbnails to results: Vorschaubilder auf Ergebnisse beschränken: Annotation overlay: Eingebettet dargestellte Anmerkungen: Form field overlay: Eingebettet dargestellte Formularfelder: Zoom: Skalieren: Rotate: Rotieren: Scroll: Bildlauf: Copy to clipboard: In Zwischenablage kopieren: Add annotation: Anmerkung hinzufügen: qpdfview::ShortcutHandler Action Aktion Key sequence Tastenkürzel Skip backward Rückwärts springen Skip forward Vorwärts springen Move up Nach oben Move down Nach unten Move left Nach links Move right Nach rechts qpdfview::TreeView &Expand all Alle &aufklappen &Collapse all Alle &zuklappen qpdfview-0.4.18/translations/qpdfview_el.ts0000644000000000000000000023623513516127411017171 0ustar 00000000000000 Model::ImageDocument Image (%1) Size Resolution Depth Format Monochrome Indexed 32 bits RGB 32 bits ARGB 16 bits RGB 24 bits RGB Model::PdfDocument Linearized Name Type Embedded Subset File Yes PDF version Encrypted No Model::PdfPage Information Πληροφορίες Version 0.20.1 or higher of the Poppler library is required to add or remove annotations. Model::PsDocument Title Created for Creator Creation date Format Language level QObject An empty instance name is not allowed. An empty search text is not allowed. Unknown command-line option '%1'. Using '--instance' requires an instance name. Using '--instance' is not allowed without using '--unique'. An instance name must only contain the characters "[A-Z][a-z][0-9]_" and must not begin with a digit. Using '--search' requires a search text. Could not prepare signal handler. QShortcut Shift Ctrl Alt Shift and Ctrl Shift and Alt Ctrl and Alt Right mouse button Middle mouse button None qpdfview::BookmarkDialog Bookmark Page: Σελίδα: Label: Comment: Modified: qpdfview::BookmarkMenu &Open &Άνοιγμα Open in new &tab Άνοιγμα σε νέα &καρτέλα &Remove bookmark &Αφαίρεση σελιδοδείκτη qpdfview::Database Jump to page %1 Μετάβαση στη σελίδα %1 qpdfview::DocumentView Information Πληροφορίες The source editor has not been set. Opening URL is disabled in the settings. Το άνοιγμα υπερσυνδέσμων είναι απενεργοποιημένο στις ρυθμίσεις. Warning Προειδοποίηση SyncTeX data for '%1' could not be found. Printing '%1'... Εκτύπωση '%1'... Unlock %1 Ξεκλείδωμα %1 Password: Κωδικός: Page %1 Σελίδα %1 qpdfview::FileAttachmentAnnotationWidget Save... Αποθήκευση... Save and open... Αποθήκευση και άνοιγμα... Save file attachment Αποθήκευση επισυναπτόμενου αρχείου Warning Προειδοποίηση Could not open file attachment saved to '%1'. Could not save file attachment to '%1'. Αδύνατη η αποθήκευση του επισυναπτόμενου αρχείου στο '%1'. qpdfview::FontsDialog Fonts qpdfview::HelpDialog Help help.html Please replace by file name of localized help if available, e.g. "help_fr.html". help.html Find previous Αναζήτηση προηγουμένου Find next Αναζήτηση επομένου qpdfview::MainWindow Toggle tool bars Toggle menu bar Warning Προειδοποίηση Could not open '%1'. Αδυναμία ανοίγματος του '%1'. Copy file path Select file path Close all tabs Close all tabs but this one Close all tabs to the left Κλείσιμο όλων των καρτελών προς τα αριστερά Close all tabs to the right Κλείσιμο όλων των καρτελών προς τα δεξιά Open Άνοιγμα Open in new tab Άνοιγμα σε νέα καρτέλα Could not refresh '%1'. Αδυναμία ανανέωσης του '%1'. Save copy Αποθήκευση αντιγράφου Could not save copy at '%1'. Αδυναμία αποθήκευσης και αντιγραφής στο '%1'. Save as Αποθήκευση ως Move to instance Failed to access instance '%1'. Could not save as '%1'. Αδύνατη η αποθήκευση ως '%1'. Could not print '%1'. Αδυναμία εκτύπωσης του '%1'. Set first page Select the first page of the body matter: Jump to page Μετάβαση στη σελίδα Page: Σελίδα: Jump to page %1 Μετάβαση στη σελίδα %1 About qpdfview Σχετικά με το qpdfview <p><b>qpdfview %1</b></p><p>qpdfview is a tabbed document viewer using Qt.</p><p>This version includes:<ul> <p><b>qpdfview %1</b></p><p>Το qpdfview είναι μια εφαρμογή ανάγνωσης εγγράφων σε καρτέλες και χρησιμοποιεί Qt.</p><p>Αυτή η έκδοση περιλαμβάνει:<ul> <li>PDF support using Poppler %1</li> <li>PS support using libspectre %1</li> <li>DjVu support using DjVuLibre %1</li> <li>PDF support using Fitz %1</li> <li>Printing support using CUPS %1</li> &Edit bookmark The document '%1' has been modified. Do you want to save your changes? Το έγγραφο '%1' έχει τροποποιηθεί. Επιθυμείτε να αποθηκευθούν οι αλλαγές; Page width Πλάτος σελίδας Page size Μέγεθος σελίδας Match &case Ταίριασμα &πεζών/κεφαλαίων Whole &words Highlight &all &Open... &Άνοιγμα... Open in new &tab... Άνοιγμα σε νέα &καρτέλα... Open &copy in new tab Move to &instance... &Refresh &Ανανέωση Information Πληροφορίες Instance-to-instance communication requires D-Bus support. </ul><p>See <a href="https://launchpad.net/qpdfview">launchpad.net/qpdfview</a> for more information.</p><p>&copy; %1 The qpdfview developers</p> Save &as... Αποθήκευση &ως... Save &copy... &Print... &Εκτύπωση... E&xit Έ&ξοδος &Previous page &Προηγούμενη σελίδα &Next page &Επόμενη σελίδα &First page &Πρώτη σελίδα &Last page &Τελευταία σελίδα &Set first page... &Jump to page... &Μετάβαση στη σελίδα... Jump &backward Μετάβαση &πίσω Jump for&ward &Search... &Αναζήτηση... Find previous Αναζήτηση προηγουμένου Find next Αναζήτηση επομένου Cancel search Ακύρωση αναζήτησης &Copy to clipboard &Αντιγραφή στο πρόχειρο &Add annotation &Προσθήκη σχολίου Settings... Ρυθμίσεις... &Continuous &Συνεχής &Two pages &Δύο σελίδες Two pages &with cover page &Δύο σελίδες &με εξώφυλλο &Multiple pages Right to left Zoom &in &Μεγέθυνση Zoom &out &Σμίκρυνση Original &size Αρχικό &μέγεθος Fit to page width Προσαρμογή στο πλάτος της σελίδας Fit to page size Ταίριασμα στο μέγεθος σελίδας Rotate &left Περιστροφή &αριστερά Rotate &right Περιστροφή δεξιά Invert colors Convert to grayscale Trim margins Darken with paper color Lighten with paper color Fonts... Γραμματοσειρές... &Fullscreen &Πλήρης οθόνη &Presentation... &Παρουσίαση &Previous tab &Προηγούμενη καρτέλα &Next tab &Επόμενη καρτέλα &Close tab &Κλείσιμο καρτέλας Close &all tabs Κλείσιμο &όλων των καρτέλων Close all tabs &but current tab Restore &most recently closed tab &Previous bookmark &Προηγούμενος σελιδοδείκτης &Next bookmark &Επόμενος σελιδοδείκτης &Add bookmark &Προσθήκη σελιδοδείκτη Open copy in new &window Split view horizontally... Split view vertically... Close current view Thumb&nails Book&marks Composition &Remove bookmark &Αφαίρεση σελιδοδείκτη Edit '%1' at %2,%3... Open containing &folder &Save Remove all bookmarks Αφαίρεση όλων των σελιδοδεικτών &Contents &Περιεχόμενα &About &Σχετικά &File &Αρχείο &Edit &Επεξεργασία &View &Προβολή &Outline &Properties &Ιδιότητες &Search &Αναζήτηση &Tool bars &Docks &Tabs &Καρτέλες &Bookmarks &Σελιδοδείκτες &Help &Βοήθεια Choose instance Instance: qpdfview::PageItem Go to page %1. Μετάβαση στη σελίδα %1. Go to page %1 of file '%2'. Open '%1'. Edit form field '%1'. Copy &text Αντιγραφή &κειμένου &Select text Copy &image Αντιγραφή &εικόνας Save image to &file... Αποθήκευση εικόνας στο &αρχείο... Save image to file Αποθήκευση εικόνας σε αρχείο Warning Προειδοποίηση Could not save image to file '%1'. Αδυναμία αποθήκευσης εικόνας στο αρχείο '%1'. Add &text Προσθήκη &κειμένου Add &highlight &Copy link address &Select link address &Remove annotation &Αφαίρεση σχολίου qpdfview::PdfSettingsWidget Antialiasing: Text antialiasing: None Full Reduced Text hinting: Ignore paper color: Overprint preview: Solid Shaped Thin line mode: Splash Arthur Backend: qpdfview::PluginHandler Image (%1) Compressed (%1) Supported formats (%1) Could not decompress '%1'! Could not match file type of '%1'! Critical Could not load plug-in for file type '%1'! qpdfview::PrintDialog Fit to page: Page ranges: All pages Even pages Odd pages Page set: Single page Two pages Four pages Six pages Nine pages Sixteen pages Number-up: Bottom to top and left to right Bottom to top and right to left Left to right and bottom to top Left to right and top to bottom Right to left and bottom to top Right to left and top to bottom Top to bottom and left to right Top to bottom and right to left Number-up layout: Extended options qpdfview::PsSettingsWidget Graphics antialias bits: Text antialias bits: qpdfview::RecentlyClosedMenu &Recently closed &Clear list &Καθαρισμός λίστας qpdfview::RecentlyUsedMenu Recently &used Πρόσφατα &χρησιμοποιημένα &Clear list &Καθαρισμός λίστας qpdfview::SearchModel <b>%1</b> occurrences <b>%1</b> occurrences on page <b>%2</b> qpdfview::SearchableMenu Search for '%1'... qpdfview::SettingsDialog General &Behavior &Graphics &Interface &Shortcuts &Modifiers Defaults Προεπιλογές Defaults on current tab Mouse wheel modifiers Mouse button modifiers Open URL: Άνοιγμα υπερσυνδέσμου: Auto-refresh: Αυτόματη ανανέωση: Effective after restart. Εφαρμογή ύστερα από επανεκκίνηση Track recently used: Keep recently closed: Restore tabs: Επαναφορά καρτέλων: Restore bookmarks: Επαναφορά σελιδοδεικτών: Restore per-file settings: min Save database interval: Synchronize presentation: Συγχρονισμός παρουσίασης: Default Προεπιλογή Presentation screen: Οθόνη παρουσίασης: Synchronize split views: Zoom factor: Parallel search execution: ms None Highlight duration: Highlight color: Annotation color: '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number. Source editor: Use tiling: Keep obsolete pixmaps: Use device pixel ratio: Decorate pages: Decorate links: Decorate form fields: Background color: Paper color: Presentation background color: Pages per row: px Page spacing: Thumbnail spacing: Thumbnail size: Μέγεθος εικόνας επισκόπησης: Fit to viewport Document context menu: Tab context menu: Open in source editor: %1 MB %1 MB Cache size: Μέγεθος προσωρινής μνήμης: Minimal scrolling: Prefetch: Prefetch distance: Top Κορυφή Bottom Κάτω Left Αριστερά Right Δεξιά Tab position: Θέση καρτέλας: As needed Always Πάντα Exit after last tab: Scrollable menus: Searchable menus: Zoom to selection: Never Ποτέ Settings Tab visibility: Spread tabs: New tab next to current tab: Recently used count: Recently closed count: Extended search dock: Toggle tool and menu bars with fullscreen: File tool bar: Edit tool bar: View tool bar: Use page label: Document title as tab title: Current page in window title: Instance name in window title: Synchronize outline view: Highlight current thumbnail: Limit thumbnails to results: Annotation overlay: Form field overlay: Zoom: Rotate: Scroll: Copy to clipboard: Add annotation: qpdfview::ShortcutHandler Action Key sequence Skip backward Skip forward Move up Move down Move left Move right qpdfview::TreeView &Expand all &Collapse all qpdfview-0.4.18/translations/qpdfview_en_AU.ts0000644000000000000000000023371313516127411017556 0ustar 00000000000000 English (Australia) <en_AU@li.org> Benjamin Donald-Wilson <benny@seffner.net> 2012-12-09 00:18+0000 2018-05-27 11:51+0000 qpdfview FULL NAME <EMAIL@ADDRESS> 2018-05-28 05:33+0000 # English (Australia) translation for qpdfview # Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 # This file is distributed under the same license as the qpdfview package. # FIRST AUTHOR <EMAIL@ADDRESS>, 2012. # Project-Id-Version,Report-Msgid-Bugs-To,POT-Creation-Date,PO-Revision-Date,Last-Translator,Language-Team,MIME-Version,Content-Type,Content-Transfer-Encoding,X-Launchpad-Export-Date,X-Qt-Contexts Model::ImageDocument Image (%1) Size Resolution Depth Format Monochrome Indexed 32 bits RGB 32 bits ARGB 16 bits RGB 24 bits RGB Model::PdfDocument Linearized Name Type Embedded Subset File Yes PDF version Encrypted No Model::PdfPage Information Version 0.20.1 or higher of the Poppler library is required to add or remove annotations. Model::PsDocument Title Created for Creator Creation date Format Language level QObject An empty instance name is not allowed. An empty search text is not allowed. Unknown command-line option '%1'. Using '--instance' requires an instance name. Using '--instance' is not allowed without using '--unique'. An instance name must only contain the characters "[A-Z][a-z][0-9]_" and must not begin with a digit. Using '--search' requires a search text. Could not prepare signal handler. QShortcut Shift Ctrl Alt Shift and Ctrl Shift and Alt Ctrl and Alt Right mouse button Middle mouse button None qpdfview::BookmarkDialog Bookmark Page: Label: Comment: Modified: qpdfview::BookmarkMenu &Open &Open Open in new &tab Open in new &tab &Remove bookmark &Remove bookmark qpdfview::Database Jump to page %1 qpdfview::DocumentView Information Information The source editor has not been set. Opening URL is disabled in the settings. Opening URL is disabled in the settings. Warning SyncTeX data for '%1' could not be found. Printing '%1'... Printing '%1'... Unlock %1 Unlock %1 Password: Password: Page %1 qpdfview::FileAttachmentAnnotationWidget Save... Save and open... Save file attachment Warning Could not open file attachment saved to '%1'. Could not save file attachment to '%1'. qpdfview::FontsDialog Fonts qpdfview::HelpDialog Help help.html Please replace by file name of localized help if available, e.g. "help_fr.html". Find previous Find next qpdfview::MainWindow Toggle tool bars Toggle menu bar Warning Warning Could not open '%1'. Could not open '%1'. Copy file path Select file path Close all tabs Close all tabs but this one Close all tabs to the left Close all tabs to the right Open Open Open in new tab Open in new tab Could not refresh '%1'. Could not refresh '%1'. Save copy Could not save copy at '%1'. Could not save copy at '%1'. Save as Save as Move to instance Failed to access instance '%1'. Could not save as '%1'. Could not save as '%1'. Could not print '%1'. Could not print '%1'. Set first page Select the first page of the body matter: Jump to page Jump to page Page: Page: Jump to page %1 About qpdfview About qpdfview <p><b>qpdfview %1</b></p><p>qpdfview is a tabbed document viewer using Qt.</p><p>This version includes:<ul> <li>PDF support using Poppler %1</li> <li>PS support using libspectre %1</li> <li>DjVu support using DjVuLibre %1</li> <li>PDF support using Fitz %1</li> <li>Printing support using CUPS %1</li> &Edit bookmark The document '%1' has been modified. Do you want to save your changes? Page width Page width Page size Page size Match &case Match &case Whole &words Highlight &all Highlight &all &Open... &Open... Open in new &tab... Open in new &tab... Open &copy in new tab Move to &instance... &Refresh &Refresh Information Instance-to-instance communication requires D-Bus support. </ul><p>See <a href="https://launchpad.net/qpdfview">launchpad.net/qpdfview</a> for more information.</p><p>&copy; %1 The qpdfview developers</p> Save &as... Save &as... Save &copy... &Print... &Print... E&xit &Previous page &Previous page &Next page &Next page &First page &First page &Last page &Last page &Set first page... &Jump to page... &Jump to page... Jump &backward Jump for&ward &Search... &Search... Find previous Find previous Find next Find next Cancel search Cancel search &Copy to clipboard &Copy to clipboard &Add annotation &Add annotation Settings... &Continuous &Two pages Two pages &with cover page &Multiple pages Right to left Zoom &in Zoom &out Original &size Fit to page width Fit to page size Rotate &left Rotate &right Invert colors Convert to grayscale Trim margins Darken with paper color Lighten with paper color Fonts... &Fullscreen &Presentation... &Previous tab &Next tab &Close tab Close &all tabs Close all tabs &but current tab Restore &most recently closed tab &Previous bookmark &Next bookmark &Add bookmark Open copy in new &window Split view horizontally... Split view vertically... Close current view Thumb&nails Book&marks Composition &Remove bookmark Edit '%1' at %2,%3... Open containing &folder &Save Remove all bookmarks &Contents &About &File &Edit &View &Outline &Properties &Search &Tool bars &Docks &Tabs &Bookmarks &Help Choose instance Instance: qpdfview::PageItem Go to page %1. Go to page %1 of file '%2'. Open '%1'. Edit form field '%1'. Copy &text &Select text Copy &image Save image to &file... Save image to file Warning Could not save image to file '%1'. Add &text Add &highlight &Copy link address &Select link address &Remove annotation qpdfview::PdfSettingsWidget Antialiasing: Text antialiasing: None Full Reduced Text hinting: Ignore paper color: Overprint preview: Solid Shaped Thin line mode: Splash Arthur Backend: qpdfview::PluginHandler Image (%1) Compressed (%1) Supported formats (%1) Could not decompress '%1'! Could not match file type of '%1'! Critical Could not load plug-in for file type '%1'! qpdfview::PrintDialog Fit to page: Page ranges: All pages Even pages Odd pages Page set: Single page Two pages Four pages Six pages Nine pages Sixteen pages Number-up: Bottom to top and left to right Bottom to top and right to left Left to right and bottom to top Left to right and top to bottom Right to left and bottom to top Right to left and top to bottom Top to bottom and left to right Top to bottom and right to left Number-up layout: Extended options qpdfview::PsSettingsWidget Graphics antialias bits: Text antialias bits: qpdfview::RecentlyClosedMenu &Recently closed &Clear list qpdfview::RecentlyUsedMenu Recently &used &Clear list qpdfview::SearchModel <b>%1</b> occurrences <b>%1</b> occurrences on page <b>%2</b> qpdfview::SearchableMenu Search for '%1'... qpdfview::SettingsDialog General &Behavior &Graphics &Interface &Shortcuts &Modifiers Defaults Defaults on current tab Mouse wheel modifiers Mouse button modifiers Open URL: Auto-refresh: Effective after restart. Track recently used: Keep recently closed: Restore tabs: Restore bookmarks: Restore per-file settings: min Save database interval: Synchronize presentation: Default Presentation screen: Synchronize split views: Zoom factor: Parallel search execution: ms None Highlight duration: Highlight color: Annotation color: '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number. Source editor: Use tiling: Keep obsolete pixmaps: Use device pixel ratio: Decorate pages: Decorate links: Decorate form fields: Background color: Paper color: Presentation background color: Pages per row: px Page spacing: Thumbnail spacing: Thumbnail size: Fit to viewport Document context menu: Tab context menu: Open in source editor: %1 MB Cache size: Minimal scrolling: Prefetch: Prefetch distance: Top Bottom Left Right Tab position: As needed Always Exit after last tab: Scrollable menus: Searchable menus: Zoom to selection: Never Settings Tab visibility: Spread tabs: New tab next to current tab: Recently used count: Recently closed count: Extended search dock: Toggle tool and menu bars with fullscreen: File tool bar: Edit tool bar: View tool bar: Use page label: Document title as tab title: Current page in window title: Instance name in window title: Synchronize outline view: Highlight current thumbnail: Limit thumbnails to results: Annotation overlay: Form field overlay: Zoom: Rotate: Scroll: Copy to clipboard: Add annotation: qpdfview::ShortcutHandler Action Key sequence Skip backward Skip forward Move up Move down Move left Move right qpdfview::TreeView &Expand all &Collapse all MainWindow &Exit &Exit &Save copy... &Save copy... qpdfview-0.4.18/translations/qpdfview_en_GB.ts0000644000000000000000000023162313516127411017537 0ustar 00000000000000 Model::ImageDocument Image (%1) Image (%1) Size Size Resolution Resolution Depth Depth Format Format Monochrome Monochrome Indexed Indexed 32 bits RGB 32 bits RGB 32 bits ARGB 32 bits ARGB 16 bits RGB 16 bits RGB 24 bits RGB 24 bits RGB Model::PdfDocument Linearized Linearised Name Name Type Type Embedded Embedded Subset Subset File File Yes Yes PDF version PDF version Encrypted Encrypted No No Model::PdfPage Information Information Version 0.20.1 or higher of the Poppler library is required to add or remove annotations. Version 0.20.1 or higher of the Poppler library is required to add or remove annotations. Model::PsDocument Title Title Created for Created for Creator Creator Creation date Creation date Format Format Language level Language level QObject An empty instance name is not allowed. An empty instance name is not allowed. An empty search text is not allowed. An empty search text is not allowed. Unknown command-line option '%1'. Unknown command-line option '%1'. Using '--instance' requires an instance name. Using '--instance' requires an instance name. Using '--instance' is not allowed without using '--unique'. Using '--instance' is not allowed without using '--unique'. An instance name must only contain the characters "[A-Z][a-z][0-9]_" and must not begin with a digit. An instance name must only contain the characters "[A-Z][a-z][0-9]_" and must not begin with a digit. Using '--search' requires a search text. Using '--search' requires a search text. Could not prepare signal handler. Could not prepare signal handler. QShortcut Shift Shift Ctrl Ctrl Alt Alt Shift and Ctrl Shift and Ctrl Shift and Alt Shift and Alt Ctrl and Alt Ctrl and Alt Right mouse button Right mouse button Middle mouse button Middle mouse button None None qpdfview::BookmarkDialog Bookmark Bookmark Page: Page: Label: Label: Comment: Comment: Modified: Modified: qpdfview::BookmarkMenu &Open &Open Open in new &tab Open in new &tab &Remove bookmark &Remove bookmark qpdfview::Database Jump to page %1 Jump to page %1 qpdfview::DocumentView Information Information The source editor has not been set. The source editor has not been set. Opening URL is disabled in the settings. Opening URL is disabled in the settings. Warning Warning SyncTeX data for '%1' could not be found. SyncTeX data for '%1' could not be found. Printing '%1'... Printing '%1'... Unlock %1 Unlock %1 Password: Password: Page %1 Page %1 qpdfview::FileAttachmentAnnotationWidget Save... Save... Save and open... Save and open... Save file attachment Save file attachment Warning Warning Could not open file attachment saved to '%1'. Could not open file attachment saved to '%1'. Could not save file attachment to '%1'. Could not save file attachment to '%1'. qpdfview::FontsDialog Fonts Fonts qpdfview::HelpDialog Help Help help.html Please replace by file name of localized help if available, e.g. "help_fr.html". help_en_GB.html Find previous Find previous Find next Find next qpdfview::MainWindow Toggle tool bars Toggle toolbars Toggle menu bar Toggle menu bar Warning Warning Could not open '%1'. Could not open '%1'. Copy file path Copy file path Select file path Select file path Close all tabs Close all tabs Close all tabs but this one Close all tabs but this one Close all tabs to the left Close all tabs to the left Close all tabs to the right Close all tabs to the right Open Open Open in new tab Open in new tab Could not refresh '%1'. Could not refresh '%1'. Save copy Save copy Could not save copy at '%1'. Could not save copy at '%1'. Save as Save as Move to instance Move to instance Failed to access instance '%1'. Failed to access instance '%1'. Could not save as '%1'. Could not save as '%1'. Could not print '%1'. Could not print '%1'. Set first page Set first page Select the first page of the body matter: Select the first page of the body matter: Jump to page Jump to page Page: Page: Jump to page %1 Jump to page %1 About qpdfview About qpdfview <p><b>qpdfview %1</b></p><p>qpdfview is a tabbed document viewer using Qt.</p><p>This version includes:<ul> <p><b>qpdfview %1</b></p><p>qpdfview is a tabbed document viewer using Qt.</p><p>This version includes:<ul> <li>PDF support using Poppler %1</li> <li>PDF support using Poppler %1</li> <li>PS support using libspectre %1</li> <li>PS support using libspectre %1</li> <li>DjVu support using DjVuLibre %1</li> <li>DjVu support using DjVuLibre %1</li> <li>PDF support using Fitz %1</li> <li>PDF support using Fitz %1</li> <li>Printing support using CUPS %1</li> <li>Printing support using CUPS %1</li> &Edit bookmark &Edit bookmark The document '%1' has been modified. Do you want to save your changes? The document '%1' has been modified. Do you want to save your changes? Page width Page width Page size Page size Match &case Match &case Whole &words Whole &words Highlight &all Highlight &all &Open... &Open... Open in new &tab... Open in new &tab... Open &copy in new tab Open &copy in new tab Move to &instance... Move to &instance... &Refresh &Refresh Information Information Instance-to-instance communication requires D-Bus support. Instance-to-instance communication requires D-Bus support. </ul><p>See <a href="https://launchpad.net/qpdfview">launchpad.net/qpdfview</a> for more information.</p><p>&copy; %1 The qpdfview developers</p> </ul><p>See <a href="https://launchpad.net/qpdfview">launchpad.net/qpdfview</a> for more information.</p><p>&copy; %1 The qpdfview developers</p> Save &as... Save &as... Save &copy... Save &copy... &Print... &Print... E&xit E&xit &Previous page &Previous page &Next page &Next page &First page &First page &Last page &Last page &Set first page... &Set first page... &Jump to page... &Jump to page... Jump &backward Jump &backward Jump for&ward Jump for&ward &Search... &Search... Find previous Find previous Find next Find next Cancel search Cancel search &Copy to clipboard &Copy to clipboard &Add annotation &Add annotation Settings... Settings... &Continuous &Continuous &Two pages &Two pages Two pages &with cover page Two pages &with cover page &Multiple pages &Multiple pages Right to left Right to left Zoom &in Zoom &in Zoom &out Zoom &out Original &size Original &size Fit to page width Fit to page width Fit to page size Fit to page size Rotate &left Rotate &left Rotate &right Rotate &right Invert colors Invert colours Convert to grayscale Convert to greyscale Trim margins Trim margins Darken with paper color Darken with paper colour Lighten with paper color Lighten with paper colour Fonts... Fonts... &Fullscreen &Fullscreen &Presentation... &Presentation... &Previous tab &Previous tab &Next tab &Next tab &Close tab &Close tab Close &all tabs Close &all tabs Close all tabs &but current tab Close all tabs &but current tab Restore &most recently closed tab Restore &most recently closed tab &Previous bookmark &Previous bookmark &Next bookmark &Next bookmark &Add bookmark &Add bookmark Open copy in new &window Open copy in new &window Split view horizontally... Split view horizontally... Split view vertically... Split view vertically... Close current view Close current view Thumb&nails Thumb&nails Book&marks Book&marks Composition Composition &Remove bookmark &Remove bookmark Edit '%1' at %2,%3... Edit '%1' at %2,%3... Open containing &folder Open containing &folder &Save &Save Remove all bookmarks Remove all bookmarks &Contents &Contents &About &About &File &File &Edit &Edit &View &View &Outline &Outline &Properties &Properties &Search &Search &Tool bars &Toolbars &Docks &Docks &Tabs &Tabs &Bookmarks &Bookmarks &Help &Help Choose instance Choose instance Instance: Instance: qpdfview::PageItem Go to page %1. Go to page %1. Go to page %1 of file '%2'. Go to page %1 of file '%2'. Open '%1'. Open '%1'. Edit form field '%1'. Edit form field '%1'. Copy &text Copy &text &Select text &Select text Copy &image Copy &image Save image to &file... Save image to &file... Save image to file Save image to file Warning Warning Could not save image to file '%1'. Could not save image to file '%1'. Add &text Add &text Add &highlight Add &highlight &Copy link address &Copy link address &Select link address &Select link address &Remove annotation &Remove annotation qpdfview::PdfSettingsWidget Antialiasing: Antialiasing: Text antialiasing: Text antialiasing: None None Full Full Reduced Reduced Text hinting: Text hinting: Ignore paper color: Ignore paper colour: Overprint preview: Overprint preview: Solid Solid Shaped Shaped Thin line mode: Thin line mode: Splash Splash Arthur Arthur Backend: Backend: qpdfview::PluginHandler Image (%1) Image (%1) Compressed (%1) Compressed (%1) Supported formats (%1) Supported formats (%1) Could not decompress '%1'! Could not decompress '%1'! Could not match file type of '%1'! Could not match file type of '%1'! Critical Critical Could not load plug-in for file type '%1'! Could not load plug-in for file type '%1'! qpdfview::PrintDialog Fit to page: Fit to page: Page ranges: Page ranges: All pages All pages Even pages Even pages Odd pages Odd pages Page set: Page set: Single page Single page Two pages Two pages Four pages Four pages Six pages Six pages Nine pages Nine pages Sixteen pages Sixteen pages Number-up: Number-up: Bottom to top and left to right Bottom to top and left to right Bottom to top and right to left Bottom to top and right to left Left to right and bottom to top Left to right and bottom to top Left to right and top to bottom Left to right and top to bottom Right to left and bottom to top Right to left and bottom to top Right to left and top to bottom Right to left and top to bottom Top to bottom and left to right Top to bottom and left to right Top to bottom and right to left Top to bottom and right to left Number-up layout: Number-up layout: Extended options Extended options qpdfview::PsSettingsWidget Graphics antialias bits: Graphics antialias bits: Text antialias bits: Text antialias bits: qpdfview::RecentlyClosedMenu &Recently closed &Recently closed &Clear list &Clear list qpdfview::RecentlyUsedMenu Recently &used Recently &used &Clear list &Clear list qpdfview::SearchModel <b>%1</b> occurrences <b>%1</b> occurrences <b>%1</b> occurrences on page <b>%2</b> <b>%1</b> occurrences on page <b>%2</b> qpdfview::SearchableMenu Search for '%1'... Search for '%1'... qpdfview::SettingsDialog General General &Behavior &Behaviour &Graphics &Graphics &Interface &Interface &Shortcuts &Shortcuts &Modifiers &Modifiers Defaults Defaults Defaults on current tab Defaults on current tab Mouse wheel modifiers Mouse wheel modifiers Mouse button modifiers Mouse button modifiers Open URL: Open URL: Auto-refresh: Auto-refresh: Effective after restart. Effective after restart. Track recently used: Track recently used: Keep recently closed: Keep recently closed: Restore tabs: Restore tabs: Restore bookmarks: Restore bookmarks: Restore per-file settings: Restore per-file settings: min min Save database interval: Save database interval: Synchronize presentation: Synchronise presentation: Default Default Presentation screen: Presentation screen: Synchronize split views: Synchronise split views: Zoom factor: Zoom factor: Parallel search execution: Parallel search execution: ms ms None None Highlight duration: Highlight duration: Highlight color: Highlight colour: Annotation color: Annotation colour: '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number. '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number. Source editor: Source editor: Use tiling: Use tiling: Keep obsolete pixmaps: Keep obsolete pixmaps: Use device pixel ratio: Use device pixel ratio: Decorate pages: Decorate pages: Decorate links: Decorate links: Decorate form fields: Decorate form fields: Background color: Background colour: Paper color: Paper colour: Presentation background color: Presentation background colour: Pages per row: Pages per row: px px Page spacing: Page spacing: Thumbnail spacing: Thumbnail spacing: Thumbnail size: Thumbnail size: Fit to viewport Fit to viewport Document context menu: Document context menu: Tab context menu: Tab context menu: Open in source editor: Open in source editor: %1 MB %1 MB Cache size: Cache size: Minimal scrolling: Minimal scrolling: Prefetch: Prefetch: Prefetch distance: Prefetch distance: Top Top Bottom Bottom Left Left Right Right Tab position: Tab position: As needed As needed Always Always Exit after last tab: Exit after last tab: Scrollable menus: Scrollable menus: Searchable menus: Searchable menus: Zoom to selection: Zoom to selection: Never Never Settings Settings Tab visibility: Tab visibility: Spread tabs: Spread tabs: New tab next to current tab: New tab next to current tab: Recently used count: Recently used count: Recently closed count: Recently closed count: Extended search dock: Extended search dock: Toggle tool and menu bars with fullscreen: Toggle tool and menu bars with fullscreen: File tool bar: File toolbar: Edit tool bar: Edit toolbar: View tool bar: View toolbar: Use page label: Use page label: Document title as tab title: Document title as tab title: Current page in window title: Current page in window title: Instance name in window title: Instance name in window title: Synchronize outline view: Synchronise outline view: Highlight current thumbnail: Highlight current thumbnail: Limit thumbnails to results: Limit thumbnails to results: Annotation overlay: Annotation overlay: Form field overlay: Form field overlay: Zoom: Zoom: Rotate: Rotate: Scroll: Scroll: Copy to clipboard: Copy to clipboard: Add annotation: Add annotation: qpdfview::ShortcutHandler Action Action Key sequence Key sequence Skip backward Skip backward Skip forward Skip forward Move up Move up Move down Move down Move left Move left Move right Move right qpdfview::TreeView &Expand all &Expand all &Collapse all &Collapse all qpdfview-0.4.18/translations/qpdfview_eo.ts0000644000000000000000000023130113516127411017161 0ustar 00000000000000 Model::ImageDocument Image (%1) Size Resolution Depth Format Monochrome Indexed 32 bits RGB 32 bits ARGB 16 bits RGB 24 bits RGB Model::PdfDocument Linearized Name Type Embedded Subset File Yes PDF version Encrypted No Model::PdfPage Information Informo Version 0.20.1 or higher of the Poppler library is required to add or remove annotations. Model::PsDocument Title Created for Creator Creation date Format Language level QObject An empty instance name is not allowed. Vaka nomo de ekzemplero estas nepermesita. An empty search text is not allowed. Unknown command-line option '%1'. Using '--instance' requires an instance name. Uzi je '--instance' necesigas nomon de ekzemplero. Using '--instance' is not allowed without using '--unique'. Uzi je '--instance' estas ne permesita sen '--unique'. An instance name must only contain the characters "[A-Z][a-z][0-9]_" and must not begin with a digit. Using '--search' requires a search text. Could not prepare signal handler. La signaltraktilo ne estas preparebla. QShortcut Shift Ctrl Alt Shift and Ctrl Shift and Alt Ctrl and Alt Right mouse button Middle mouse button None Neniu qpdfview::BookmarkDialog Bookmark Page: Paĝo: Label: Comment: Modified: qpdfview::BookmarkMenu &Open Malfermi Open in new &tab Malfermi en nova langeto &Remove bookmark Forigi legosignon qpdfview::Database Jump to page %1 qpdfview::DocumentView Information Informo The source editor has not been set. Opening URL is disabled in the settings. Malfermi je URL estas malŝaltita en la agordaĵoj. Warning Averto SyncTeX data for '%1' could not be found. Printing '%1'... Presado de '%1'... Unlock %1 Malŝlosi je %1 Password: Pasvorto: Page %1 qpdfview::FileAttachmentAnnotationWidget Save... Save and open... Save file attachment Warning Averto Could not open file attachment saved to '%1'. Could not save file attachment to '%1'. qpdfview::FontsDialog Fonts qpdfview::HelpDialog Help help.html Please replace by file name of localized help if available, e.g. "help_fr.html". Find previous Serĉi antaŭan Find next Serĉi sekvan qpdfview::MainWindow Toggle tool bars Toggle menu bar Warning Averto Could not open '%1'. '%1' ne estas malfermebla. Copy file path Select file path Close all tabs Close all tabs but this one Close all tabs to the left Close all tabs to the right Open Malfermi Open in new tab Malfermi en nova langeto Could not refresh '%1'. '%1' ne estas aktualigebla. Save copy Konservi ekzempleron Could not save copy at '%1'. Ekzemplero ne estas konservebla ĉe '%1'. Save as Konservi kiel Move to instance Failed to access instance '%1'. Could not save as '%1'. Ne estas konservebla kiel '%1'. Could not print '%1'. '%1' ne estas presebla. Set first page Select the first page of the body matter: Jump to page Salti al paĝo Page: Paĝo: Jump to page %1 About qpdfview Pri qpdfview <p><b>qpdfview %1</b></p><p>qpdfview is a tabbed document viewer using Qt.</p><p>This version includes:<ul> <p><b>qpdfview %1</b></p><p>qpdfview estas langeta dokumentvidigilo uzante je Qt.</p><p>Ĉi tiu versio inkludas:<ul> <li>PDF support using Poppler %1</li> <li>PS support using libspectre %1</li> <li>DjVu support using DjVuLibre %1</li> <li>PDF support using Fitz %1</li> <li>Printing support using CUPS %1</li> &Edit bookmark The document '%1' has been modified. Do you want to save your changes? Page width Larĝo de paĝo Page size Grando de paĝo Match &case Kongruigi usklecon Whole &words Highlight &all Emfazi ĉion &Open... Malfermi... Open in new &tab... Malfermi en nova langeto... Open &copy in new tab Move to &instance... &Refresh Aktualigi Information Informo Instance-to-instance communication requires D-Bus support. </ul><p>See <a href="https://launchpad.net/qpdfview">launchpad.net/qpdfview</a> for more information.</p><p>&copy; %1 The qpdfview developers</p> Save &as... Konservi kiel... Save &copy... &Print... Presi... E&xit &Previous page Antaŭa paĝo &Next page Sekva paĝo &First page Unua paĝo &Last page Lasta paĝo &Set first page... &Jump to page... Salti al paĝo... Jump &backward Jump for&ward &Search... Serĉi... Find previous Serĉi antaŭan Find next Serĉi sekvan Cancel search Nuligi serĉon &Copy to clipboard Kopii al tondejo &Add annotation Enmeti noton Settings... Agordoj... &Continuous Kontinua &Two pages Du paĝoj Two pages &with cover page Du paĝoj kun kovrila paĝo &Multiple pages Pluraj paĝoj Right to left Zoom &in Pligrandigi Zoom &out Malpligrandigi Original &size Origina grando Fit to page width Adapti al larĝo de paĝo Fit to page size Adapti al grando de paĝo Rotate &left Turni maldekstren Rotate &right Turni dekstren Invert colors Inversigi kolorojn Convert to grayscale Trim margins Darken with paper color Lighten with paper color Fonts... Tiparoj... &Fullscreen Tutekrana &Presentation... Prezentaĵo... &Previous tab Antaŭa langeto &Next tab Sekva langeto &Close tab Fermi langeton Close &all tabs Fermi ĉiujn langetojn Close all tabs &but current tab Fermi ĉiujn langetojn escepte de la aktuala Restore &most recently closed tab &Previous bookmark Antaŭa legosigno &Next bookmark Sekva legosigno &Add bookmark Enmeti legosignon Open copy in new &window Split view horizontally... Split view vertically... Close current view Thumb&nails Book&marks Composition &Remove bookmark Forigi legosignon Edit '%1' at %2,%3... Open containing &folder &Save Remove all bookmarks Forigi ĉiujn legosignojn &Contents &Enhavo &About Pri &File Dosiero &Edit Redakti &View Vido &Outline Resumo &Properties Atributoj &Search Serĉi &Tool bars Ilobretoj &Docks dokoj &Tabs Langetoj &Bookmarks Legosignoj &Help Helpo Choose instance Instance: qpdfview::PageItem Go to page %1. Iri al paĝo %1. Go to page %1 of file '%2'. Iri al paĝo %1 de dosiero '%2'. Open '%1'. Malfermi '%1'. Edit form field '%1'. Redakti kampon '%1' de la formularo. Copy &text Kopii tekston &Select text Copy &image Kopii bildon Save image to &file... Konservi bildon al dosiero... Save image to file Konservi bildon al dosiero Warning Averto Could not save image to file '%1'. Bildo ne estas konservebla al dosiero '%1'. Add &text Enmeti tekston Add &highlight Enmeti kaj emfazi &Copy link address &Select link address &Remove annotation Forigi noton qpdfview::PdfSettingsWidget Antialiasing: Text antialiasing: None Neniu Full Reduced Text hinting: Ignore paper color: Overprint preview: Solid Shaped Thin line mode: Splash Arthur Backend: qpdfview::PluginHandler Image (%1) Compressed (%1) Supported formats (%1) Could not decompress '%1'! Could not match file type of '%1'! Critical Could not load plug-in for file type '%1'! qpdfview::PrintDialog Fit to page: Page ranges: All pages Even pages Odd pages Page set: Single page Two pages Four pages Six pages Nine pages Sixteen pages Number-up: Bottom to top and left to right Bottom to top and right to left Left to right and bottom to top Left to right and top to bottom Right to left and bottom to top Right to left and top to bottom Top to bottom and left to right Top to bottom and right to left Number-up layout: Extended options qpdfview::PsSettingsWidget Graphics antialias bits: Text antialias bits: qpdfview::RecentlyClosedMenu &Recently closed &Clear list Vakigi liston qpdfview::RecentlyUsedMenu Recently &used Lastatempe uzita(j) &Clear list Vakigi liston qpdfview::SearchModel <b>%1</b> occurrences <b>%1</b> occurrences on page <b>%2</b> qpdfview::SearchableMenu Search for '%1'... qpdfview::SettingsDialog General Ĝenerala &Behavior Konduto &Graphics Grafikoj &Interface Fasado &Shortcuts &Modifiers Modifiloj Defaults Aprioroj Defaults on current tab Mouse wheel modifiers Mouse button modifiers Open URL: Malfermi je URL: Auto-refresh: Aŭtomate aktualigi: Effective after restart. Efikas post restarto. Track recently used: Trako uzita antaŭnelonge: Keep recently closed: Restore tabs: Restaŭri langetojn: Restore bookmarks: Restaŭri legosignojn: Restore per-file settings: Restaŭri laŭdosierajn agordojn: min Save database interval: Synchronize presentation: Sinkronigi prezentaĵon: Default Apriora Presentation screen: Prezentaĵa fenestro: Synchronize split views: Zoom factor: Parallel search execution: ms None Neniu Highlight duration: Emfazi daŭron: Highlight color: Annotation color: '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number. '%1' estas anstataŭigita de la absoluta vojo. '%2' kaj '%3' estas anstataŭigitaj de la nombro de linio aŭ kolumno respektive. Source editor: Redaktinto de la font: Use tiling: Keep obsolete pixmaps: Use device pixel ratio: Decorate pages: Dekoracii paĝojn: Decorate links: Dekoracii ligilojn: Decorate form fields: Dekoracii formularajn kampojn: Background color: Fona koloro: Paper color: Papera koloro: Presentation background color: Pages per row: Paĝoj en vico: px Page spacing: Paĝa interspaco: Thumbnail spacing: Spaco inter miniaturoj: Thumbnail size: Grando de miniaturo: Fit to viewport Document context menu: Tab context menu: Open in source editor: %1 MB %1 MB Cache size: Grando de kaŝmemoro: Minimal scrolling: Prefetch: Antaŭakiro: Prefetch distance: Distanco de antaŭakiro: Top Supro Bottom Malsupro Left Maldekstra Right Dekstra Tab position: Pozicio de langeto: As needed Laŭbezone Always Ĉiam Exit after last tab: Scrollable menus: Searchable menus: Zoom to selection: Never Neniam Settings Tab visibility: Langeta videblo: Spread tabs: New tab next to current tab: Recently used count: Recently closed count: Extended search dock: Toggle tool and menu bars with fullscreen: File tool bar: Dosiera ilobreto: Edit tool bar: Ilobreto Redakti: View tool bar: Ilobreto Vido: Use page label: Document title as tab title: Current page in window title: Instance name in window title: Synchronize outline view: Highlight current thumbnail: Limit thumbnails to results: Annotation overlay: Form field overlay: Zoom: Zomi: Rotate: Turni: Scroll: Rulumi: Copy to clipboard: Kopii al tondejo: Add annotation: Enmeti noton: qpdfview::ShortcutHandler Action Key sequence Skip backward Skip forward Move up Move down Move left Move right qpdfview::TreeView &Expand all Etendi ĉiujn &Collapse all Maletendi ĉiujn qpdfview-0.4.18/translations/qpdfview_es.ts0000644000000000000000000023617513516127411017203 0ustar 00000000000000 Model::ImageDocument Image (%1) Imagen (%1) Size Tamaño Resolution Resolución Depth Profundidad Format Formato Monochrome Monocromo Indexed Indexado 32 bits RGB RGB de 32 bits 32 bits ARGB ARGB de 32 bits 16 bits RGB RGB de 16 bits 24 bits RGB RGB de 24 bits Model::PdfDocument Linearized Linealizado Name Nombre Type Tipo Embedded Incrustado Subset Subconjunto File Archivo Yes PDF version Versión de PDF Encrypted Cifrado No No Model::PdfPage Information Información Version 0.20.1 or higher of the Poppler library is required to add or remove annotations. Se requiere la versión 0.20.1 o superior de la biblioteca Poppler para añadir o eliminar anotaciones. Model::PsDocument Title Título Created for Creado para Creator Creador Creation date Fecha de creación Format Formato Language level Nivel de lenguaje QObject An empty instance name is not allowed. No se permite un nombre de instancia vacío. An empty search text is not allowed. No se permite un texto de búsqueda vacío. Unknown command-line option '%1'. La opción de la línea de órdenes «%1» es desconocida. Using '--instance' requires an instance name. El uso de «--instance» requiere un nombre de instancia. Using '--instance' is not allowed without using '--unique'. No se permite el uso de «--instance» sin usar «--unique». An instance name must only contain the characters "[A-Z][a-z][0-9]_" and must not begin with a digit. Un nombre de instancia solo puede contener los caracteres «[A-Z][a-z][0-9]_» y no debe comenzar por un dígito. Using '--search' requires a search text. El uso de «--search» requiere un término de búsqueda. Could not prepare signal handler. No se pudo preparar el manejador de señales. QShortcut Shift Mayús Ctrl Ctrl Alt Alt Shift and Ctrl Mayús y Ctrl Shift and Alt Mayús y Alt Ctrl and Alt Ctrl y Alt Right mouse button Botón secundario del ratón Middle mouse button Botón central del ratón None Ninguno qpdfview::BookmarkDialog Bookmark Marcador Page: Página: Label: Etiqueta: Comment: Comentario: Modified: Modificado: qpdfview::BookmarkMenu &Open &Abrir Open in new &tab Abrir en una pes&taña nueva &Remove bookmark Eli&minar el marcador qpdfview::Database Jump to page %1 Ir a la página %1 qpdfview::DocumentView Information Información The source editor has not been set. No se ha definido el editor de código fuente. Opening URL is disabled in the settings. Se ha desactivado la apertura de direcciones web en las preferencias. Warning Aviso SyncTeX data for '%1' could not be found. No se encontraron los datos de SyncText para «%1». Printing '%1'... Imprimiendo «%1»… Unlock %1 Desbloquear %1 Password: Contraseña: Page %1 Página %1 qpdfview::FileAttachmentAnnotationWidget Save... Guardar… Save and open... Guardar y abrir… Save file attachment Guardar el archivo adjunto Warning Aviso Could not open file attachment saved to '%1'. No se pudo abrir el archivo adjunto guardado en «%1». Could not save file attachment to '%1'. No se pudo guardar el archivo adjunto en «%1». qpdfview::FontsDialog Fonts Tipos de letra qpdfview::HelpDialog Help Ayuda help.html Please replace by file name of localized help if available, e.g. "help_fr.html". help_es.html Find previous Buscar anterior Find next Buscar siguiente qpdfview::MainWindow Toggle tool bars Mostrar/ocultar las barras de herramientas Toggle menu bar Mostrar/ocultar la barra de menú Warning Aviso Could not open '%1'. No se pudo abrir «%1». Copy file path Copiar la ruta del archivo Select file path Seleccionar la ruta del archivo Close all tabs Cerrar todas las pestañas Close all tabs but this one Cerrar todas las pestañas excepto esta Close all tabs to the left Cerrar las pestañas de la izquierda Close all tabs to the right Cerrar las pestañas de la derecha Open Abrir Open in new tab Abrir en una pestaña nueva Could not refresh '%1'. No se pudo actualizar «%1». Save copy Guardar una copia Could not save copy at '%1'. No se pudo guardar una copia en «%1». Save as Guardar como Move to instance Mover a la instancia Failed to access instance '%1'. Error al acceder a la instancia «%1». Could not save as '%1'. No se pudo guardar como «%1». Could not print '%1'. No se pudo imprimir «%1». Set first page Definir la primera página Select the first page of the body matter: Seleccionar la primera página del cuerpo del documento: Jump to page Ir a la página Page: Página: Jump to page %1 Ir a la página %1 About qpdfview Acerca de qpdfview <p><b>qpdfview %1</b></p><p>qpdfview is a tabbed document viewer using Qt.</p><p>This version includes:<ul> <p><b>qpdfview %1</b></p><p>qpdfview es un visor de documentos con pestañas que usa Qt.</p><p>Esta versión incluye:<ul> <li>PDF support using Poppler %1</li> <li>Compatibilidad con PDF mediante Poppler %1</li> <li>PS support using libspectre %1</li> <li>Compatibilidad con PS mediante libspectre %1</li> <li>DjVu support using DjVuLibre %1</li> <li>Compatibilidad con DjVu mediante DjVuLibre %1</li> <li>PDF support using Fitz %1</li> <li>Compatibilidad con PDF mediante Fitz %1</li> <li>Printing support using CUPS %1</li> <li>Compatibilidad con la impresión mediante CUPS %1</li> &Edit bookmark &Editar el marcador The document '%1' has been modified. Do you want to save your changes? Se ha modificado el documento «%1». ¿Quiere guardar los cambios? Page width Anchura de página Page size Tamaño de página Match &case Distinguir ma&yúsculas/minúsculas Whole &words Pa&labras completas Highlight &all Resaltar &todo &Open... &Abrir Open in new &tab... Abrir en una &pestaña nueva… Open &copy in new tab Abrir una &copia en una pestaña nueva Move to &instance... Mover a la &instancia... &Refresh &Recargar Information Información Instance-to-instance communication requires D-Bus support. La comunicación de instancia a instancia requiere el apoyo de D-Bus. </ul><p>See <a href="https://launchpad.net/qpdfview">launchpad.net/qpdfview</a> for more information.</p><p>&copy; %1 The qpdfview developers</p> </ul><p>Consulte <a href="https://launchpad.net/qpdfview">launchpad.net/qpdfview</a> para obtener más información.</p><p>&copy; %1 Los desarrolladores de qpdfview</p> Save &as... Guardar &como… Save &copy... Guardar una &copia... &Print... Im&primir... E&xit &Salir &Previous page Página &anterior &Next page Página &siguiente &First page &Primera página &Last page &Última página &Set first page... &Definir como primera página... &Jump to page... &Ir a la página… Jump &backward Ir &hacia atrás Jump for&ward Ir hacia ade&lante &Search... Bu&scar... Find previous Buscar anterior Find next Buscar siguiente Cancel search Cancelar la búsqueda &Copy to clipboard &Copiar al portapapeles &Add annotation &Añadir una anotación Settings... Preferencias... &Continuous &Continuo &Two pages &Doble página Two pages &with cover page Doble página con &portada &Multiple pages &Múltiples páginas Right to left De derecha a izquierda Zoom &in Ace&rcar Zoom &out Ale&jar Original &size Tamaño &original Fit to page width Ajustar al ancho de la página Fit to page size Ajustar al tamaño de la página Rotate &left Rotar a la &izquierda Rotate &right Rotar a la &derecha Invert colors Invertir los colores Convert to grayscale Convertir a escala de grises Trim margins Recortar los márgenes Darken with paper color Oscurecer con el color del papel Lighten with paper color Aclarar con el color del papel Fonts... Tipos de letra… &Fullscreen &Pantalla completa &Presentation... Pre&sentación… &Previous tab Pestaña &anterior &Next tab Pestaña &siguiente &Close tab &Cerrar la pestaña Close &all tabs Cerrar &todas las pestañas Close all tabs &but current tab Cerrar todas las pestañas &excepto la actual Restore &most recently closed tab Restaurar la pestaña cerrada &más reciente &Previous bookmark Marcador &anterior &Next bookmark Marcador &siguiente &Add bookmark &Añadir un marcador Open copy in new &window Abrir una copia en una &ventana nueva Split view horizontally... Dividir vista horizontalmente... Split view vertically... Dividir vista verticalmente... Close current view Cerrar la vista actual Thumb&nails Miniat&uras Book&marks &Marcadores Composition Composición &Remove bookmark Eli&minar un marcador Edit '%1' at %2,%3... Editar «%1» en %2, %3... Open containing &folder Abrir la carpeta c&ontenedora &Save &Guardar Remove all bookmarks Eliminar todos los marcadores &Contents &Contenido &About &Acerca de &File &Archivo &Edit &Editar &View &Ver &Outline Í&ndice &Properties &Propiedades &Search &Buscar &Tool bars Barras de &herramientas &Docks Paneles &Tabs &Pestañas &Bookmarks &Marcadores &Help Ay&uda Choose instance Elegir una instancia Instance: Instancia: qpdfview::PageItem Go to page %1. Ir a la página %1. Go to page %1 of file '%2'. Ir a la página %1 del archivo «%2». Open '%1'. Abrir «%1» Edit form field '%1'. Editar el campo de formulario «%1». Copy &text Copiar el &texto &Select text &Seleccionar el texto Copy &image Copiar la &imagen Save image to &file... G&uardar la imagen en un archivo… Save image to file Guardar la imagen en un archivo Warning Aviso Could not save image to file '%1'. No se pudo guardar la imagen en el archivo «%1». Add &text Añadir &texto Add &highlight Añadir &resaltado &Copy link address Cop&iar la dirección del enlace &Select link address S&eleccionar la dirección del enlace &Remove annotation &Eliminar la anotación qpdfview::PdfSettingsWidget Antialiasing: Suavizado gráfico: Text antialiasing: Suavizado del texto: None Ninguno Full Completo Reduced Reducido Text hinting: Optimización de la representación del texto: Ignore paper color: Ignorar el color del papel: Overprint preview: Vista previa de la sobreimpresión Solid Sólido Shaped Contorno Thin line mode: Modo de línea fina: Splash Splash Arthur Arthur Backend: Motor: qpdfview::PluginHandler Image (%1) Imagen (%1) Compressed (%1) Comprimido (%1) Supported formats (%1) Formatos compatibles (%1) Could not decompress '%1'! ¡No se pudo descomprimir «%1»! Could not match file type of '%1'! No se pudo encontrar el tipo de archivo de «%1». Critical Crítico Could not load plug-in for file type '%1'! No se pudo cargar el complemento para el tipo de archivo «%1». qpdfview::PrintDialog Fit to page: Ajustar a la página: Page ranges: Intervalos de página: All pages Todas las páginas Even pages Páginas pares Odd pages Páginas impares Page set: Conjunto de páginas: Single page Una sola página Two pages Dos páginas Four pages Cuatro páginas Six pages Seis páginas Nine pages Nueve páginas Sixteen pages Dieciséis páginas Number-up: Páginas por hoja: Bottom to top and left to right De abajo a arriba y de izquierda a derecha Bottom to top and right to left De abajo a arriba y de derecha a izquierda Left to right and bottom to top De izquierda a derecha y de abajo a arriba Left to right and top to bottom De izquierda a derecha y de arriba a abajo Right to left and bottom to top De derecha a izquierda y de abajo hacia arriba Right to left and top to bottom De derecha a izquierda y de arriba a abajo Top to bottom and left to right De arriba a abajo y de izquierda a derecha Top to bottom and right to left De arriba a abajo y de izquierda a derecha Number-up layout: Disposición de las páginas: Extended options Opciones extendidas qpdfview::PsSettingsWidget Graphics antialias bits: Número de bits del suavizado gráfico: Text antialias bits: Número de bits del suavizado del texto: qpdfview::RecentlyClosedMenu &Recently closed &Cerrados recientemente &Clear list &Limpiar lista qpdfview::RecentlyUsedMenu Recently &used Abiertos &recientemente &Clear list &Limpiar lista qpdfview::SearchModel <b>%1</b> occurrences <b>%1</b> ocurrencias <b>%1</b> occurrences on page <b>%2</b> <b>%1</b> ocurrencias en la página <b>%2</b> qpdfview::SearchableMenu Search for '%1'... Buscar «%1»… qpdfview::SettingsDialog General General &Behavior &Comportamiento &Graphics &Gráficos &Interface &Interfaz &Shortcuts Acce&sos rápidos &Modifiers &Modificadores Defaults Valores por defecto Defaults on current tab Valores por defecto en la pestaña actual Mouse wheel modifiers Modificadores de la rueda del ratón Mouse button modifiers Modificadores de los botones del ratón Open URL: Abrir las direcciones web: Auto-refresh: Actualizar automáticamente: Effective after restart. Efectivo después de reiniciar Track recently used: Conservar los archivos abiertos recientemente: Keep recently closed: Conservar los archivos cerrados recientemente: Restore tabs: Restaurar las pestañas: Restore bookmarks: Restaurar los marcadores: Restore per-file settings: Restaurar las preferencias para cada archivo: min min Save database interval: Intervalo de guardado de la base de datos: Synchronize presentation: Sincronizar la presentación: Default Por defecto Presentation screen: Pantalla de presentación: Synchronize split views: Sincronizar las vistas divididas: Zoom factor: Factor de ampliación: Parallel search execution: Ejecución de la búsqueda paralela: ms ms None Ninguno Highlight duration: Duración del resaltado: Highlight color: Color del resaltado: Annotation color: Color de la anotación: '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number. «%1» se reemplaza por la ruta absoluta. «%2» y «%3» se reemplazan por el número de línea y el número de columna respectivamente. Source editor: Editor de código fuente: Use tiling: Usar el modo mosaico: Keep obsolete pixmaps: Mantener los mapas de bits obsoletos: Use device pixel ratio: Usar la relación de aspecto de pixel del dispositivo: Decorate pages: Decorar las páginas: Decorate links: Decorar los enlaces: Decorate form fields: Decorar los campos de formulario: Background color: Color del fondo: Paper color: Color del papel: Presentation background color: Color del fondo de la presentación: Pages per row: Páginas por fila: px px Page spacing: Espaciado de página: Thumbnail spacing: Espaciado de miniatura: Thumbnail size: Tamaño de miniatura: Fit to viewport Ajustar a la ventana Document context menu: Menú contextual del documento: Tab context menu: Menú contextual de la pestaña: Open in source editor: Abrir en el editor de codigo fuente: %1 MB %1 MB Cache size: Tamaño de la caché: Minimal scrolling: Desplazamiento mínimo: Prefetch: Precargar: Prefetch distance: Distancia de la precarga: Top Arriba Bottom Abajo Left Izquierda Right Derecha Tab position: Posición de las pestañas: As needed Cuando haga falta Always Siempre Exit after last tab: Salir después de la última pestaña: Scrollable menus: Menús con desplazamiento: Searchable menus: Menús con búsqueda: Zoom to selection: Ampliar la selección: Never Nunca Settings Preferencias Tab visibility: Visibilidad de las pestañas: Spread tabs: Extender las pestañas: New tab next to current tab: Pestaña nueva al lado de la pestaña actual: Recently used count: Número de archivos abiertos recientemente: Recently closed count: Número de archivos cerrados recientemente: Extended search dock: Panel de búsqueda extendida: Toggle tool and menu bars with fullscreen: Mostrar/ocultar las barras de menú y herramientas a pantalla completa: File tool bar: Barra de herramientas Archivo: Edit tool bar: Barra de herramientas Editar: View tool bar: Barra de herramientas Ver: Use page label: Usar la etiqueta de la página: Document title as tab title: Título del documento como título de pestaña: Current page in window title: Página actual en el título de la ventana: Instance name in window title: Nombre de la instancia en el título de la ventana: Synchronize outline view: Sincronizar el índice: Highlight current thumbnail: Resaltar la miniatura actual: Limit thumbnails to results: Limitar las miniaturas a los resultados: Annotation overlay: Superponer las anotaciones: Form field overlay: Superponer los campos de formulario: Zoom: Ampliar: Rotate: Rotar: Scroll: Desplazar: Copy to clipboard: Copiar al portapapeles: Add annotation: Añadir un anotación: qpdfview::ShortcutHandler Action Acción Key sequence Secuencia de teclas Skip backward Ir hacia atrás Skip forward Ir hacia adelante Move up Mover hacia arriba Move down Mover hacia abajo Move left Mover a la izquierda Move right Mover a la derecha qpdfview::TreeView &Expand all &Expandir todo &Collapse all &Contraer todo qpdfview-0.4.18/translations/qpdfview_eu.ts0000644000000000000000000023130113516127411017167 0ustar 00000000000000 Model::ImageDocument Image (%1) Size Resolution Depth Format Monochrome Indexed 32 bits RGB 32 bits ARGB 16 bits RGB 24 bits RGB Model::PdfDocument Linearized Name Type Embedded Subset File Yes PDF version Encrypted No Model::PdfPage Information Informazioa Version 0.20.1 or higher of the Poppler library is required to add or remove annotations. Model::PsDocument Title Created for Creator Creation date Format Language level QObject An empty instance name is not allowed. An empty search text is not allowed. Unknown command-line option '%1'. Using '--instance' requires an instance name. Using '--instance' is not allowed without using '--unique'. An instance name must only contain the characters "[A-Z][a-z][0-9]_" and must not begin with a digit. Using '--search' requires a search text. Could not prepare signal handler. QShortcut Shift Ctrl Alt Shift and Ctrl Shift and Alt Ctrl and Alt Right mouse button Middle mouse button None Bat ere ez qpdfview::BookmarkDialog Bookmark Page: Orria: Label: Comment: Modified: qpdfview::BookmarkMenu &Open &Ireki Open in new &tab Ireki &fitxa berrian &Remove bookmark &Kendu laster-marka qpdfview::Database Jump to page %1 qpdfview::DocumentView Information Informazioa The source editor has not been set. Opening URL is disabled in the settings. URLak irekitzea desgaituta dago ezarpenetan Warning Abisua SyncTeX data for '%1' could not be found. Printing '%1'... '%1' inprimatzen... Unlock %1 Desblokeatu %1 Password: Pasahitza: Page %1 qpdfview::FileAttachmentAnnotationWidget Save... Save and open... Save file attachment Warning Abisua Could not open file attachment saved to '%1'. Could not save file attachment to '%1'. qpdfview::FontsDialog Fonts qpdfview::HelpDialog Help help.html Please replace by file name of localized help if available, e.g. "help_fr.html". Find previous Bilatu aurrekoa Find next Bilatu hurrengoa qpdfview::MainWindow Toggle tool bars Toggle menu bar Warning Abisua Could not open '%1'. Ezin izan da '%1' ireki. Copy file path Select file path Close all tabs Close all tabs but this one Close all tabs to the left Close all tabs to the right Open Ireki Open in new tab Ireki fitxa berrian Could not refresh '%1'. Ezin izan da '%1' freskatu. Save copy Gorde kopia Could not save copy at '%1'. Ezin izan da '%1'(e)n kopia gorde. Save as Gorde honela Move to instance Failed to access instance '%1'. Could not save as '%1'. Ezin izan da '%1' bezala gorde. Could not print '%1'. Ezin izan da '%1' inprimatu. Set first page Select the first page of the body matter: Jump to page Joan orrira Page: Orria: Jump to page %1 About qpdfview qpdfview-ri buruz <p><b>qpdfview %1</b></p><p>qpdfview is a tabbed document viewer using Qt.</p><p>This version includes:<ul> <li>PDF support using Poppler %1</li> <li>PS support using libspectre %1</li> <li>DjVu support using DjVuLibre %1</li> <li>PDF support using Fitz %1</li> <li>Printing support using CUPS %1</li> &Edit bookmark The document '%1' has been modified. Do you want to save your changes? Page width Orriaren zabalera Page size Orriaren neurria Match &case Whole &words Highlight &all Nabarmendu &guztiak &Open... &Ireki... Open in new &tab... Ireki &fitxa berrian... Open &copy in new tab Move to &instance... &Refresh &Freskatu Information Informazioa Instance-to-instance communication requires D-Bus support. </ul><p>See <a href="https://launchpad.net/qpdfview">launchpad.net/qpdfview</a> for more information.</p><p>&copy; %1 The qpdfview developers</p> Save &as... Gorde &honela... Save &copy... &Print... &Inprimatu... E&xit &Previous page &Aurreko orria &Next page &Hurrengo orria &First page &Lehen orria &Last page A&zken orria &Set first page... &Jump to page... &Joan orrira... Jump &backward Jump for&ward &Search... &Bilatu... Find previous Bilatu aurrekoa Find next Bilatu hurrengoa Cancel search Utzi bilaketa &Copy to clipboard &Kopiatu arbelean &Add annotation &Gehitu oharra Settings... Ezarpenak... &Continuous &Jarraia &Two pages &Bi orri Two pages &with cover page Bi orri &azalarekin &Multiple pages &Hainbat orri Right to left Zoom &in &Handitu Zoom &out &Txikitu Original &size Jatorrizko &tamaina Fit to page width Doitu orriaren zabalerara Fit to page size Doitu orriaren tamainara Rotate &left Biratu e&zkerrera Rotate &right Biratu e&skuinera Invert colors Convert to grayscale Trim margins Darken with paper color Lighten with paper color Fonts... Letra-tipoak... &Fullscreen &Pantaila osoa &Presentation... &Aurkezpena... &Previous tab &Aurreko fitxa &Next tab &Hurrengo fitxa &Close tab &Itxi fitxa Close &all tabs Itxi fitxa &guztiak Close all tabs &but current tab Itxi fitxa guztiak &unekoa ezik Restore &most recently closed tab &Previous bookmark &Aurreko laster-marka &Next bookmark &Hurrengo laster-marka &Add bookmark &Gehitu laster-marka Open copy in new &window Split view horizontally... Split view vertically... Close current view Thumb&nails Book&marks Composition &Remove bookmark &Kendu laster-marka Edit '%1' at %2,%3... Open containing &folder &Save Remove all bookmarks Kendu laster-marka guztiak &Contents &Edukiak &About &Honi buruz &File &Fitxategia &Edit &Editatu &View &Ikusi &Outline &Properties &Propietateak &Search &Bilatu &Tool bars &Tresna-barrak &Docks &Tabs &Fitxak &Bookmarks &Laster-markak &Help &Laguntza Choose instance Instance: qpdfview::PageItem Go to page %1. Joan %1 orrira Go to page %1 of file '%2'. Open '%1'. Edit form field '%1'. Editatu '%1' inprimaki-eremua. Copy &text Kopiatu &testua &Select text Copy &image Kopiatu &irudia Save image to &file... Gorde irudia &fitxategian... Save image to file Gorde irudia fitxategian Warning Abisua Could not save image to file '%1'. Ezin izan da gorde irudia '%1' fitxategian. Add &text Gehitu &testua Add &highlight Gehitu &nabarmentzea &Copy link address &Select link address &Remove annotation &Kendu oharra qpdfview::PdfSettingsWidget Antialiasing: Text antialiasing: None Bat ere ez Full Reduced Text hinting: Ignore paper color: Overprint preview: Solid Shaped Thin line mode: Splash Arthur Backend: qpdfview::PluginHandler Image (%1) Compressed (%1) Supported formats (%1) Could not decompress '%1'! Could not match file type of '%1'! Critical Could not load plug-in for file type '%1'! qpdfview::PrintDialog Fit to page: Page ranges: All pages Even pages Odd pages Page set: Single page Two pages Four pages Six pages Nine pages Sixteen pages Number-up: Bottom to top and left to right Bottom to top and right to left Left to right and bottom to top Left to right and top to bottom Right to left and bottom to top Right to left and top to bottom Top to bottom and left to right Top to bottom and right to left Number-up layout: Extended options qpdfview::PsSettingsWidget Graphics antialias bits: Text antialias bits: qpdfview::RecentlyClosedMenu &Recently closed &Clear list &Garbitu zerrenda qpdfview::RecentlyUsedMenu Recently &used Azkenaldiak &erabiliak &Clear list &Garbitu zerrenda qpdfview::SearchModel <b>%1</b> occurrences <b>%1</b> occurrences on page <b>%2</b> qpdfview::SearchableMenu Search for '%1'... qpdfview::SettingsDialog General &Behavior &Portaera &Graphics &Grafikoak &Interface &Interfazea &Shortcuts &Modifiers &Aldatzaileak Defaults Lehenespenak Defaults on current tab Mouse wheel modifiers Mouse button modifiers Open URL: Ireki URLa: Auto-refresh: Freskatu automatikoki: Effective after restart. Berrabiarazi ondoren du eragina. Track recently used: Keep recently closed: Restore tabs: Leheneratu fitxak: Restore bookmarks: Leheneratu laster-markak: Restore per-file settings: Leheneratu fitxategi bakoitzeko ezarpenak: min Save database interval: Synchronize presentation: Sinkronizatu aurkezpena: Default Lehenetsia Presentation screen: Aurkezpenaren pantaila: Synchronize split views: Zoom factor: Parallel search execution: ms None Bat ere ez Highlight duration: Nabarmentzearen iraupena: Highlight color: Annotation color: '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number. Source editor: Iturburu-editorea: Use tiling: Keep obsolete pixmaps: Use device pixel ratio: Decorate pages: Apaindu orriak: Decorate links: Apaindu estekak: Decorate form fields: Apaindu inprimaki-eremuak: Background color: Atzeko planoaren kolorea: Paper color: Paperaren kolorea: Presentation background color: Pages per row: Orriak errenkadako: px Page spacing: Orri arteko tartea: Thumbnail spacing: Koadro txikien arteko tartea: Thumbnail size: Koadro txikien tamaina: Fit to viewport Document context menu: Tab context menu: Open in source editor: %1 MB %1 MB Cache size: Cache-aren tamaina: Minimal scrolling: Prefetch: Prefetch distance: Top Goia Bottom Behea Left Ezkerra Right Eskuina Tab position: Fitxaren kokapena: As needed Behar denean Always Beti Exit after last tab: Scrollable menus: Searchable menus: Zoom to selection: Never Inoiz ez Settings Tab visibility: Fitxaren ikusgaitasuna: Spread tabs: New tab next to current tab: Recently used count: Recently closed count: Extended search dock: Toggle tool and menu bars with fullscreen: File tool bar: Fitxategia tresna-barra: Edit tool bar: Editatu tresna-barra: View tool bar: Ikusi tresna-barra: Use page label: Document title as tab title: Current page in window title: Instance name in window title: Synchronize outline view: Highlight current thumbnail: Limit thumbnails to results: Annotation overlay: Form field overlay: Zoom: Rotate: Scroll: Copy to clipboard: Add annotation: qpdfview::ShortcutHandler Action Key sequence Skip backward Skip forward Move up Move down Move left Move right qpdfview::TreeView &Expand all &Zabaldu dena &Collapse all &Tolestu dena qpdfview-0.4.18/translations/qpdfview_fa.ts0000644000000000000000000023322113516127411017147 0ustar 00000000000000 Persian <fa@li.org> Goudarz Jafari <Unknown> 2017-09-26 20:39+0000 2018-05-27 11:51+0000 qpdfview FULL NAME <EMAIL@ADDRESS> 2018-05-28 05:33+0000 # Persian translation for qpdfview # Copyright (c) 2017 Rosetta Contributors and Canonical Ltd 2017 # This file is distributed under the same license as the qpdfview package. # FIRST AUTHOR <EMAIL@ADDRESS>, 2017. # Project-Id-Version,Report-Msgid-Bugs-To,POT-Creation-Date,PO-Revision-Date,Last-Translator,Language-Team,MIME-Version,Content-Type,Content-Transfer-Encoding,X-Launchpad-Export-Date,X-Qt-Contexts Model::ImageDocument Image (%1) تصویر (%1) Size Resolution Depth Format Monochrome Indexed 32 bits RGB 32 bits ARGB 16 bits RGB 24 bits RGB Model::PdfDocument Linearized Name Type Embedded Subset File Yes PDF version Encrypted No Model::PdfPage Information Version 0.20.1 or higher of the Poppler library is required to add or remove annotations. Model::PsDocument Title Created for Creator Creation date Format Language level QObject An empty instance name is not allowed. An empty search text is not allowed. Unknown command-line option '%1'. Using '--instance' requires an instance name. Using '--instance' is not allowed without using '--unique'. An instance name must only contain the characters "[A-Z][a-z][0-9]_" and must not begin with a digit. Using '--search' requires a search text. Could not prepare signal handler. QShortcut Shift Ctrl Alt Shift and Ctrl Shift and Alt Ctrl and Alt Right mouse button Middle mouse button None qpdfview::BookmarkDialog Bookmark Page: Label: Comment: Modified: qpdfview::BookmarkMenu &Open Open in new &tab &Remove bookmark qpdfview::Database Jump to page %1 qpdfview::DocumentView Information The source editor has not been set. Opening URL is disabled in the settings. Warning SyncTeX data for '%1' could not be found. Printing '%1'... Unlock %1 Password: Page %1 qpdfview::FileAttachmentAnnotationWidget Save... Save and open... Save file attachment Warning Could not open file attachment saved to '%1'. Could not save file attachment to '%1'. qpdfview::FontsDialog Fonts qpdfview::HelpDialog Help help.html Please replace by file name of localized help if available, e.g. "help_fr.html". Find previous Find next qpdfview::MainWindow Toggle tool bars Toggle menu bar Warning Could not open '%1'. Copy file path Select file path Close all tabs Close all tabs but this one Close all tabs to the left Close all tabs to the right Open Open in new tab Could not refresh '%1'. Save copy Could not save copy at '%1'. Save as Move to instance Failed to access instance '%1'. Could not save as '%1'. Could not print '%1'. Set first page Select the first page of the body matter: Jump to page Page: Jump to page %1 About qpdfview <p><b>qpdfview %1</b></p><p>qpdfview is a tabbed document viewer using Qt.</p><p>This version includes:<ul> <li>PDF support using Poppler %1</li> <li>PS support using libspectre %1</li> <li>DjVu support using DjVuLibre %1</li> <li>PDF support using Fitz %1</li> <li>Printing support using CUPS %1</li> &Edit bookmark The document '%1' has been modified. Do you want to save your changes? Page width Page size Match &case Whole &words Highlight &all &Open... Open in new &tab... Open &copy in new tab Move to &instance... &Refresh Information Instance-to-instance communication requires D-Bus support. </ul><p>See <a href="https://launchpad.net/qpdfview">launchpad.net/qpdfview</a> for more information.</p><p>&copy; %1 The qpdfview developers</p> Save &as... Save &copy... &Print... E&xit &Previous page &Next page &First page &Last page &Set first page... &Jump to page... Jump &backward Jump for&ward &Search... Find previous Find next Cancel search &Copy to clipboard &Add annotation Settings... &Continuous &Two pages Two pages &with cover page &Multiple pages Right to left Zoom &in Zoom &out Original &size Fit to page width Fit to page size Rotate &left Rotate &right Invert colors Convert to grayscale Trim margins Darken with paper color Lighten with paper color Fonts... &Fullscreen &Presentation... &Previous tab &Next tab &Close tab Close &all tabs Close all tabs &but current tab Restore &most recently closed tab &Previous bookmark &Next bookmark &Add bookmark Open copy in new &window Split view horizontally... Split view vertically... Close current view Thumb&nails Book&marks Composition &Remove bookmark Edit '%1' at %2,%3... Open containing &folder &Save Remove all bookmarks &Contents &About &File &Edit &View &Outline &Properties &Search &Tool bars &Docks &Tabs &Bookmarks &Help Choose instance Instance: qpdfview::PageItem Go to page %1. Go to page %1 of file '%2'. Open '%1'. Edit form field '%1'. Copy &text &Select text Copy &image Save image to &file... Save image to file Warning Could not save image to file '%1'. Add &text Add &highlight &Copy link address &Select link address &Remove annotation qpdfview::PdfSettingsWidget Antialiasing: Text antialiasing: None Full Reduced Text hinting: Ignore paper color: Overprint preview: Solid Shaped Thin line mode: Splash Arthur Backend: qpdfview::PluginHandler Image (%1) Compressed (%1) Supported formats (%1) Could not decompress '%1'! Could not match file type of '%1'! Critical Could not load plug-in for file type '%1'! qpdfview::PrintDialog Fit to page: Page ranges: All pages Even pages Odd pages Page set: Single page Two pages Four pages Six pages Nine pages Sixteen pages Number-up: Bottom to top and left to right Bottom to top and right to left Left to right and bottom to top Left to right and top to bottom Right to left and bottom to top Right to left and top to bottom Top to bottom and left to right Top to bottom and right to left Number-up layout: Extended options qpdfview::PsSettingsWidget Graphics antialias bits: Text antialias bits: qpdfview::RecentlyClosedMenu &Recently closed &Clear list qpdfview::RecentlyUsedMenu Recently &used &Clear list qpdfview::SearchModel <b>%1</b> occurrences <b>%1</b> occurrences on page <b>%2</b> qpdfview::SearchableMenu Search for '%1'... qpdfview::SettingsDialog General &Behavior &Graphics &Interface &Shortcuts &Modifiers Defaults Defaults on current tab Mouse wheel modifiers Mouse button modifiers Open URL: Auto-refresh: Effective after restart. Track recently used: Keep recently closed: Restore tabs: Restore bookmarks: Restore per-file settings: min Save database interval: Synchronize presentation: Default Presentation screen: Synchronize split views: Zoom factor: Parallel search execution: ms None Highlight duration: Highlight color: Annotation color: '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number. Source editor: Use tiling: Keep obsolete pixmaps: Use device pixel ratio: Decorate pages: Decorate links: Decorate form fields: Background color: Paper color: Presentation background color: Pages per row: px Page spacing: Thumbnail spacing: Thumbnail size: Fit to viewport Document context menu: Tab context menu: Open in source editor: %1 MB Cache size: Minimal scrolling: Prefetch: Prefetch distance: Top Bottom Left Right Tab position: As needed Always Exit after last tab: Scrollable menus: Searchable menus: Zoom to selection: Never Settings Tab visibility: Spread tabs: New tab next to current tab: Recently used count: Recently closed count: Extended search dock: Toggle tool and menu bars with fullscreen: File tool bar: Edit tool bar: View tool bar: Use page label: Document title as tab title: Current page in window title: Instance name in window title: Synchronize outline view: Highlight current thumbnail: Limit thumbnails to results: Annotation overlay: Form field overlay: Zoom: Rotate: Scroll: Copy to clipboard: Add annotation: qpdfview::ShortcutHandler Action Key sequence Skip backward Skip forward Move up Move down Move left Move right qpdfview::TreeView &Expand all &Collapse all qpdfview-0.4.18/translations/qpdfview_fi.ts0000644000000000000000000023211013516127411017153 0ustar 00000000000000 Model::ImageDocument Image (%1) Kuva (%1) Size Koko Resolution Koko Depth Syvyys Format Monochrome Yksivärinen Indexed Indeksoitu 32 bits RGB 32 bits ARGB 16 bits RGB 24 bits RGB Model::PdfDocument Linearized Linearisoitu Name Nimi Type Tyyppi Embedded Upotettu Subset Osajoukko File Tiedosto Yes Kyllä PDF version PDF-versio Encrypted Salattu No Ei Model::PdfPage Information Tiedot Version 0.20.1 or higher of the Poppler library is required to add or remove annotations. Huomautusten lisääminen tai poistaminen vaatiin Poppler-kirjaston version 0.20.1 tai uudemman. Model::PsDocument Title Otsikko Created for Creator Tekijä Creation date Luomispäivä Format Language level QObject An empty instance name is not allowed. An empty search text is not allowed. Unknown command-line option '%1'. Using '--instance' requires an instance name. Using '--instance' is not allowed without using '--unique'. An instance name must only contain the characters "[A-Z][a-z][0-9]_" and must not begin with a digit. Using '--search' requires a search text. Could not prepare signal handler. QShortcut Shift Vaihto Ctrl Ctrl Alt Alt Shift and Ctrl Vaihto ja Ctrl Shift and Alt Vaihto ja Alt Ctrl and Alt Ctrl ja Ctrl Right mouse button Hiiren oikea painike Middle mouse button Hiiren keskimmäinen painike None Ei mitään qpdfview::BookmarkDialog Bookmark Kirjanmerkki Page: Sivu: Label: Nimike: Comment: Kommentti: Modified: Muokattu: qpdfview::BookmarkMenu &Open &Avaa Open in new &tab Avaa uudessa välilehdessä &Remove bookmark Poista kirjanmerkki qpdfview::Database Jump to page %1 Siirry sivulle %1 qpdfview::DocumentView Information Tiedot The source editor has not been set. Opening URL is disabled in the settings. URL-ositteiden avaaminen on otettu asetuksissa pois käytöstä. Warning Varoitus SyncTeX data for '%1' could not be found. SyncTeX tietoja tiedostolle '%1' ei löydetty. Printing '%1'... Tulostetaan tiedostoa '%1'... Unlock %1 Lukitse %1 Password: Salasana: Page %1 qpdfview::FileAttachmentAnnotationWidget Save... Tallenna... Save and open... Tallenna ja avaa... Save file attachment Tallenna liitetiedosto Warning Varoitus Could not open file attachment saved to '%1'. Could not save file attachment to '%1'. qpdfview::FontsDialog Fonts qpdfview::HelpDialog Help Ohje help.html Please replace by file name of localized help if available, e.g. "help_fr.html". Find previous Etsi edellinen Find next Etsi seuraava qpdfview::MainWindow Toggle tool bars Toggle menu bar Warning Varoitus Could not open '%1'. Älä avaa kohdetta '%1'. Copy file path Kopioi tiedostopolku Select file path Valitse tiedostopolku Close all tabs Sulje kaikki välilehdet Close all tabs but this one Sulje kaikki paitsi tämä välilehti Close all tabs to the left Close all tabs to the right Open Avaa Open in new tab Avaa uudessa välilehdessä Could not refresh '%1'. Älä päivitä kohdetta '%1'. Save copy Tallenna kopio Could not save copy at '%1'. Save as Tallenna nimellä Move to instance Failed to access instance '%1'. Could not save as '%1'. Ei voitu tallentaa nimellä '%1'. Could not print '%1'. Älä tulosta kohdetta '%1'. Set first page Select the first page of the body matter: Jump to page Siirry sivulle Page: Sivu: Jump to page %1 Siirry sivulle %1 About qpdfview Tietoja qpdfview:istä <p><b>qpdfview %1</b></p><p>qpdfview is a tabbed document viewer using Qt.</p><p>This version includes:<ul> <p><b>qpdfview %1</b></p><p>qpdfview on välilehdellinen asiakirjojen katseluohjelma käyttäen Qt:ta.</p><p>Tämä versio sisältää:<ul> <li>PDF support using Poppler %1</li> <li>PS support using libspectre %1</li> <li>DjVu support using DjVuLibre %1</li> <li>PDF support using Fitz %1</li> <li>Printing support using CUPS %1</li> &Edit bookmark &Muokkaa kirjanmerkkiä The document '%1' has been modified. Do you want to save your changes? Asiakirjaa '%1' on muokattu. Haluatko tallentaa muutokset? Page width Sivun leveys Page size Sivun koko Match &case Huomioi &kirjainkoko Whole &words Highlight &all Korosta &kaikki &Open... &Avaa... Open in new &tab... Avaa uuteen &välilehteen... Open &copy in new tab Move to &instance... &Refresh &Päivitä Information Tiedot Instance-to-instance communication requires D-Bus support. </ul><p>See <a href="https://launchpad.net/qpdfview">launchpad.net/qpdfview</a> for more information.</p><p>&copy; %1 The qpdfview developers</p> Save &as... Tallenn&a nimellä... Save &copy... Tallenna &kopio... &Print... &Tulosta... E&xit &Previous page &Edellinen sivu &Next page &Seuraava sivu &First page &Ensimmäinen sivu &Last page &Viimeinen sivu &Set first page... &Jump to page... &Siirry sivulle... Jump &backward Siirry &taaksepäin Jump for&ward Siirry &eteenpäin &Search... &Etsi... Find previous Etsi edellinen Find next Etsi seuraava Cancel search Peruuta haku &Copy to clipboard &Kopioi leikepöydälle &Add annotation Lisää huom&autus Settings... Asetukset... &Continuous &Jatkuva &Two pages &Kaksi sivua Two pages &with cover page Kaksi sivua &kansilehdellä &Multiple pages &Useita sivuja Right to left Oikealta vasemmalle Zoom &in Zoomaa &lähemmäs Zoom &out Zoomaa &kaiemmas Original &size Alkuperäinen &koko Fit to page width Sovita sivun leveys Fit to page size Sovita sivuun Rotate &left Käännä &vasemmalle Rotate &right Käännä &oikealle Invert colors Käännä värit Convert to grayscale Muunna harmaasävyksi Trim margins Leikkaa marginaaleja Darken with paper color Lighten with paper color Fonts... Fontit... &Fullscreen &Koko näyttö &Presentation... &Esitys &Previous tab &Edellinen välilehti &Next tab &Seuraava välilehti &Close tab &Sulje ikkuna Close &all tabs Sulje &kaikki ikkunat Close all tabs &but current tab Sulje kaikki &paitsi valittu välilehti Restore &most recently closed tab Palauta &viimeisin suljettu välilehti &Previous bookmark &Edellinen kirjanmerkki &Next bookmark &Seuraava kirjanmerkki &Add bookmark &Lisää kirjanmerkki Open copy in new &window Split view horizontally... Split view vertically... Close current view Thumb&nails Pienois&kuvat Book&marks Composition &Remove bookmark &Poista kirjanmerkki Edit '%1' at %2,%3... Open containing &folder &Save &Tallenna Remove all bookmarks Poista kaikki kirjanmerkit &Contents &Sisältö &About &Tietoja &File &Tiedosto &Edit &Muokkaa &View &Näytä &Outline &Yleiskatsaus &Properties &Ominaisuudet &Search &Etsi &Tool bars &Työkalupalkit &Docks &Telakoitavat &Tabs &Välilehdet &Bookmarks &Kirjanmerkit &Help O&hje Choose instance Instance: qpdfview::PageItem Go to page %1. Siirry sivulle %1 Go to page %1 of file '%2'. Siirry sivulle %1 tiedostosta '%2'. Open '%1'. Edit form field '%1'. Copy &text Kopioi &teksti &Select text Copy &image Kopioi &kuva Save image to &file... Tallenna kuva &tiedostoon... Save image to file Tallenna kuva tiedostoon Warning Varoitus Could not save image to file '%1'. Tiedostoa '%1' ei voitu tallentaa. Add &text Lisää &teksti Add &highlight Lisää &korostus &Copy link address &Select link address &Remove annotation &Poista huomautus qpdfview::PdfSettingsWidget Antialiasing: Reunanpehmennys: Text antialiasing: Tekstin reunanpehmennys: None Ei mitään Full Täysi Reduced Vaimennettu Text hinting: Tekstin vihjeistys: Ignore paper color: Overprint preview: Solid Shaped Thin line mode: Splash Arthur Backend: qpdfview::PluginHandler Image (%1) Kuva (%1) Compressed (%1) Supported formats (%1) Could not decompress '%1'! Could not match file type of '%1'! Critical Could not load plug-in for file type '%1'! qpdfview::PrintDialog Fit to page: Page ranges: All pages Even pages Odd pages Page set: Single page Two pages Kaksi sivua Four pages Six pages Nine pages Sixteen pages Kuusitoista sivua Number-up: Bottom to top and left to right Alhaalta ylös ja vasemmalta oikealle Bottom to top and right to left Alhaalta ylös ja oikealta vasemmalle Left to right and bottom to top Vasemmalta oikealle ja alhaalta ylös Left to right and top to bottom Vasemmalta oikealle ja ylhäältä alas Right to left and bottom to top Oikealta vasemmalle ja alhaalta ylös Right to left and top to bottom Oikealta vasemmalle ja ylhäältä alas Top to bottom and left to right Ylhäältä alas ja vasemmalta oikealle Top to bottom and right to left Ylhäältä alas ja oikealta vasemmalle Number-up layout: Extended options qpdfview::PsSettingsWidget Graphics antialias bits: Grafiikan reunanpehmennys bitit: Text antialias bits: Tekstin reunanpehmennys bitit qpdfview::RecentlyClosedMenu &Recently closed &Viimeksi suljetut &Clear list &Tyhjennä lista qpdfview::RecentlyUsedMenu Recently &used Viimeksi &käytetyt &Clear list &Tyhjennä lista qpdfview::SearchModel <b>%1</b> occurrences <b>%1</b> occurrences on page <b>%2</b> qpdfview::SearchableMenu Search for '%1'... qpdfview::SettingsDialog General Yleiset &Behavior &Toiminta &Graphics &Interface &Käyttöliittymä &Shortcuts &Modifiers &Muokkaajat Defaults Oletusasetukset Defaults on current tab Oletusasetukset nykyisessä välililehdessä Mouse wheel modifiers Mouse button modifiers Open URL: Avaa URL-osoite: Auto-refresh: Automaattinen päivitys: Effective after restart. Track recently used: Seuraa viimeksi käytettyjä: Keep recently closed: Säilytä viimeksi suljetut: Restore tabs: Palauta välilehdet Restore bookmarks: Palauta kirjanmerkit Restore per-file settings: Palauta tiedostokohtaiset asetukset: min Save database interval: Synchronize presentation: Synkronoi esitys: Default Palauta oletusarvot Presentation screen: Esitysnäyttö: Synchronize split views: Zoom factor: Parallel search execution: ms None Ei mitään Highlight duration: Korostuksen kesto: Highlight color: Korostusväri: Annotation color: Huomautusten väri: '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number. Source editor: Use tiling: Käytä laatoitusta: Keep obsolete pixmaps: Use device pixel ratio: Decorate pages: Koristele sivut: Decorate links: Koristele linkit: Decorate form fields: Koristele lomakekentät: Background color: Taustaväri Paper color: Paperin väri: Presentation background color: Esityksen taustaväri: Pages per row: Sivuja rivillä: px Page spacing: Thumbnail spacing: Pienoiskuvien välinen etäisyys: Thumbnail size: Pienoiskuvien koko: Fit to viewport Document context menu: Tab context menu: Open in source editor: %1 MB %1 MB Cache size: Välimuistin koko: Minimal scrolling: Minimi vieritys: Prefetch: Esihaku: Prefetch distance: Esihaku etäisyys: Top Ylös Bottom Alas Left Vasen Right Oikea Tab position: Välilehtien sijainti: As needed Tarvittaessa Always Aina Exit after last tab: Poistu viimeisen välilehden jälkeen: Scrollable menus: Searchable menus: Zoom to selection: Never Ei koskaan Settings Asetukset Tab visibility: Välilehden näkyvyys: Spread tabs: Levitä välilehtiä: New tab next to current tab: Uusi välilehti nykyisen välilehden viereen: Recently used count: Viimeksi käytettyjen määrä: Recently closed count: Viimeksi suljettujen määrä: Extended search dock: Toggle tool and menu bars with fullscreen: File tool bar: Edit tool bar: Muokkaa työkaluriviä: View tool bar: Näytä työkalurivi: Use page label: Document title as tab title: Asiakirjan otsikko välilehden otsikkona: Current page in window title: Instance name in window title: Synchronize outline view: Highlight current thumbnail: Korosta nykyinen pienoiskuva: Limit thumbnails to results: Annotation overlay: Form field overlay: Zoom: Rotate: Käännä: Scroll: Copy to clipboard: Kopioi leikepöydälle: Add annotation: Lisää huomautus: qpdfview::ShortcutHandler Action Key sequence Skip backward Skip forward Move up Move down Move left Move right Siirrä oikealle qpdfview::TreeView &Expand all &Collapse all qpdfview-0.4.18/translations/qpdfview_fr.ts0000644000000000000000000023736413516127411017204 0ustar 00000000000000 Model::ImageDocument Image (%1) Image (%1) Size Taille Resolution Résolution Depth Profondeur Format Format Monochrome Monochrome Indexed Indexé 32 bits RGB RVB 32 bits 32 bits ARGB RVBA 32 bits 16 bits RGB RVB 16 bits 24 bits RGB RVB 24 bits Model::PdfDocument Linearized Linéarisé Name Nom Type Type Embedded Incorporé Subset Jeu partiel File Fichier Yes Oui PDF version Version PDF Encrypted Chiffré No Non Model::PdfPage Information Information Version 0.20.1 or higher of the Poppler library is required to add or remove annotations. Une version 0.20.1 ou supérieure de la bibliothèque Poppler est requise pour ajouter ou supprimer des annotations. Model::PsDocument Title Titre Created for Créé pour Creator Créateur Creation date Date de création Format Format Language level Niveau de langue QObject An empty instance name is not allowed. Un nom d'instance vide n'est pas autorisé. An empty search text is not allowed. Une recherche vide n’est pas autorisée. Unknown command-line option '%1'. Option de ligne de commande « %1 » inconnue. Using '--instance' requires an instance name. Utiliser « --instance » nécessite un nom d'instance. Using '--instance' is not allowed without using '--unique'. Utiliser « --instance » n'est pas autorisé sans l'utilisation de « --unique ». An instance name must only contain the characters "[A-Z][a-z][0-9]_" and must not begin with a digit. Un nom d'instance ne doit contenir que les caractères « [A-Z][a-z][0-9]_ » et ne doit pas commencer par un nombre. Using '--search' requires a search text. L'utilisation de « --search » nécessite un texte de recherche. Could not prepare signal handler. Impossible de préparer le gestionnaire de signaux. QShortcut Shift Maj Ctrl Ctrl Alt Alt Shift and Ctrl Maj et Ctrl Shift and Alt Maj et Alt Ctrl and Alt Ctrl et Alt Right mouse button Bouton droit de la souris Middle mouse button Bouton du milieu de la souris None Aucun qpdfview::BookmarkDialog Bookmark Signet Page: Page : Label: Étiquette : Comment: Commentaires : Modified: Modifié le : qpdfview::BookmarkMenu &Open &Ouvrir Open in new &tab Ouvrir dans un nouvel &onglet &Remove bookmark &Supprimer le signet qpdfview::Database Jump to page %1 Aller à la page %1 qpdfview::DocumentView Information Informations The source editor has not been set. L'éditeur de source n'a pas été configuré. Opening URL is disabled in the settings. L'ouverture d'URL est désactivée dans les paramètres. Warning Avertissement SyncTeX data for '%1' could not be found. Impossible de trouver les données SyncTeX pour « %1 ». Printing '%1'... Impression de « %1 »… Unlock %1 Déverrouiller %1 Password: Mot de passe : Page %1 Page %1 qpdfview::FileAttachmentAnnotationWidget Save... Enregistrer… Save and open... Enregistrer et ouvrir… Save file attachment Enregistrer la pièce jointe Warning Avertissement Could not open file attachment saved to '%1'. Impossible d'ouvrir la pièce jointe enregistrée dans « %1 ». Could not save file attachment to '%1'. Impossible d'enregistrer la pièce jointe dans « %1 ». qpdfview::FontsDialog Fonts Police de caractères qpdfview::HelpDialog Help Aide help.html Please replace by file name of localized help if available, e.g. "help_fr.html". help_fr.html Find previous Rechercher le précédent Find next Rechercher le suivant qpdfview::MainWindow Toggle tool bars Affichage de la barre d'outils Toggle menu bar Affichage de la barre de menu Warning Avertissement Could not open '%1'. Impossible d'ouvrir « %1 ». Copy file path Copier le chemin d'accès du fichier Select file path Sélectionner le chemin d'accès du fichier Close all tabs Fermer tous les onglets Close all tabs but this one Fermer tous les onglets sauf celui-ci Close all tabs to the left Fermer tous les onglets sur la gauche Close all tabs to the right Fermer tous les onglets sur la droite Open Ouvrir Open in new tab Ouvrir dans un nouvel onglet Could not refresh '%1'. Impossible d'actualiser « %1 ». Save copy Enregistrer une copie Could not save copy at '%1'. Impossible d'enregistrer la copie vers « %1 ». Save as Enregistrer sous Move to instance Déplacer vers l'instance Failed to access instance '%1'. Impossible d'accéder à l'instance « %1 ». Could not save as '%1'. Impossible d'enregistrer en tant que « %1 ». Could not print '%1'. Impossible d'imprimer « %1 ». Set first page Définir la première page Select the first page of the body matter: Sélectionner la première page du corps de matière : Jump to page Aller à la page Page: Page : Jump to page %1 Aller à la page %1 About qpdfview À propos de qpdfview <p><b>qpdfview %1</b></p><p>qpdfview is a tabbed document viewer using Qt.</p><p>This version includes:<ul> <p><b>qpdfview %1</b></p><p>qpdfview est une visionneuse de documents avec onglets utilisant Qt.</p><p>Cette version inclut :<ul> <li>PDF support using Poppler %1</li> <li>Prise en charge PDF utilisant Poppler %1</li> <li>PS support using libspectre %1</li> <li>Prise en charge PS utilisant libspectre %1</li> <li>DjVu support using DjVuLibre %1</li> <li>Prise en charge DjVu utilisant DjVuLibre %1</li> <li>PDF support using Fitz %1</li> <li>Prise en charge PDF utilisant Fitz %1</li> <li>Printing support using CUPS %1</li> <li>Service d'impression utilisant CUPS %1</li> &Edit bookmark &Éditer le signet The document '%1' has been modified. Do you want to save your changes? Le document « %1 » a été modifié. Voulez-vous enregistrer les changements ? Page width Largeur de la page Page size Taille de la page Match &case Respecter la &casse Whole &words &Mots entiers Highlight &all &Tout mettre en surbrillance &Open... &Ouvrir… Open in new &tab... Ouvrir dans un nouvel &onglet… Open &copy in new tab Ouvrir et &copier dans un nouvel onglet Move to &instance... Déplacer vers l'&instance… &Refresh &Actualiser Information xx Instance-to-instance communication requires D-Bus support. La communication d’instance à instance nécessite le support D-Bus. </ul><p>See <a href="https://launchpad.net/qpdfview">launchpad.net/qpdfview</a> for more information.</p><p>&copy; %1 The qpdfview developers</p> </ul><p>Consulter<a href="https://launchpad.net/qpdfview">launchpad.net/qpdfview</a> pour plus d’informations.</p><p>&copy; %1 Les développeurs de qpdfview</p> Save &as... Enregistrer &sous… Save &copy... Enregistrer une &copie… &Print... &Imprimer… E&xit &Quitter &Previous page Page &précédente &Next page Page &suivante &First page &Première page &Last page &Dernière page &Set first page... &Définir la première page… &Jump to page... &Aller à la page… Jump &backward Aller vers l'a&rrière Jump for&ward Aller vers l'a&vant &Search... &Rechercher… Find previous Rechercher le précédent Find next Rechercher le suivant Cancel search Annuler la recherche &Copy to clipboard &Copier dans le presse-papiers &Add annotation &Ajouter une annotation Settings... Paramètres… &Continuous &Continu &Two pages &Deux pages Two pages &with cover page Deux pages &avec page de couverture &Multiple pages &Pages multiples Right to left De droite à gauche Zoom &in Zoom &avant Zoom &out Zoom &arrière Original &size Taille &réelle Fit to page width Ajuster à la largeur de la page Fit to page size Ajuster à la taille de la page Rotate &left Rotation vers la &gauche Rotate &right Rotation vers la &droite Invert colors Inverser les couleurs Convert to grayscale Convertir en niveaux de gris Trim margins Rogner les marges Darken with paper color Foncé avec couleur papier Lighten with paper color Clair avec couleur papier Fonts... Polices… &Fullscreen &Plein écran &Presentation... &Présentation… &Previous tab Onglet &précédent &Next tab Onglet &suivant &Close tab &Fermer l'onglet Close &all tabs Fermer &tous les onglets Close all tabs &but current tab Fermer tous les onglets &sauf l'onglet actuel Restore &most recently closed tab &Restaurer les onglets récemment fermés &Previous bookmark Signet &précédent &Next bookmark Signet &suivant &Add bookmark &Ajouter un signet Open copy in new &window Ouvrir la copie dans une nouvelle &fenêtre Split view horizontally... Scinder la vue horizontalement… Split view vertically... Scinder la vue verticalement… Close current view Fermer la vue actuelle Thumb&nails &Miniatures Book&marks &Signets Composition Profil &Remove bookmark &Supprimer le signet Edit '%1' at %2,%3... Éditer « %1 » à %2, %3… Open containing &folder Ouvrir le &dossier source &Save &Enregistrer Remove all bookmarks Supprimer tous les signets &Contents &Guide d'utilisation &About À &propos &File &Fichier &Edit &Éditer &View &Affichage &Outline &Sommaire &Properties &Propriétés &Search &Rechercher &Tool bars &Barres d'outils &Docks &Barre latérale des fonctionnalités &Tabs &Onglets &Bookmarks &Signets &Help &Aide Choose instance Choisir une instance Instance: Instance : qpdfview::PageItem Go to page %1. Aller à la page %1. Go to page %1 of file '%2'. Aller à la page %1 du fichier « %2 ». Open '%1'. Ouvrir « %1 ». Edit form field '%1'. Éditer le champ du formulaire « %1 ». Copy &text Copier le &texte &Select text &Sélectionner le texte Copy &image Copier &l'image Save image to &file... Enregistrer l'image dans le &fichier… Save image to file Enregistrer l'image dans un fichier Warning Avertissement Could not save image to file '%1'. Impossible d'enregistrer l'image dans le fichier « %1 ». Add &text Ajouter du &texte Add &highlight Mettre en &surbrillance &Copy link address &Copier l'adresse du lien &Select link address &Sélectionner l'adresse du lien &Remove annotation &Supprimer les annotations qpdfview::PdfSettingsWidget Antialiasing: Anticrénelage : Text antialiasing: Anticrénelage du texte : None Aucun Full Complet Reduced Réduit Text hinting: Optimisation de rendu du texte : Ignore paper color: Ignorer la couleur papier : Overprint preview: Sur-imprimer l'aperçu : Solid Trait continu Shaped Déformé Thin line mode: Mode ligne fine : Splash Splash Arthur Arthur Backend: Arrière-plan : qpdfview::PluginHandler Image (%1) Image (%1) Compressed (%1) Compressé (%1) Supported formats (%1) Formats supportés (%1) Could not decompress '%1'! Impossible de décompresser « %1 » ! Could not match file type of '%1'! Correspondance impossible pour le type de fichier de « %1 » ! Critical Critique Could not load plug-in for file type '%1'! Impossible de charger le greffon pour le type de fichier « %1 » ! qpdfview::PrintDialog Fit to page: Ajuster à la page : Page ranges: Groupes de page : All pages Toutes les pages Even pages Pages paires Odd pages Pages impaires Page set: Configuration de pages : Single page Page unique Two pages Deux pages Four pages Quatre pages Six pages Six pages Nine pages Neuf pages Sixteen pages Seize pages Number-up: Pages par feuille : Bottom to top and left to right De bas en haut et de gauche à droite Bottom to top and right to left De bas en haut et de droite à gauche Left to right and bottom to top De gauche à droite et de bas en haut Left to right and top to bottom De gauche à droite et de haut en bas Right to left and bottom to top De droite à gauche et de bas en haut Right to left and top to bottom De droite à gauche et de haut en bas Top to bottom and left to right De haut en bas et de gauche à droite Top to bottom and right to left De haut en bas et de droite à gauche Number-up layout: Ordre des pages : Extended options Options avancées qpdfview::PsSettingsWidget Graphics antialias bits: Nombre de bits d'anticrénelage graphique : Text antialias bits: Nombre de bits d'anticrénelage du texte : qpdfview::RecentlyClosedMenu &Recently closed &Récemment fermé &Clear list &Vider la liste qpdfview::RecentlyUsedMenu Recently &used &Récemment ouvert &Clear list &Vider la liste qpdfview::SearchModel <b>%1</b> occurrences <b>%1</b> occurrence(s) <b>%1</b> occurrences on page <b>%2</b> <b>%1</b> occurrence(s) sur la page <b>%2</b> qpdfview::SearchableMenu Search for '%1'... Recherche de « %1 »… qpdfview::SettingsDialog General Général &Behavior &Comportement &Graphics &Affichage &Interface &Interface &Shortcuts &Raccourcis &Modifiers &Modificateurs Defaults Rétablir les paramètres par défaut Defaults on current tab Rétablir les paramètres par défaut sur l'onglet actuel Mouse wheel modifiers Modificateurs de la molette de la souris Mouse button modifiers Modificateurs du bouton de la souris Open URL: Ouvrir une URL : Auto-refresh: Actualisation automatique : Effective after restart. Effectif après redémarrage. Track recently used: Conserver les fichiers récemment ouverts : Keep recently closed: Conserver les fichiers récemment fermés : Restore tabs: Restaurer les onglets : Restore bookmarks: Restaurer les signets : Restore per-file settings: Restaurer les paramètres par fichier : min min Save database interval: Intervalle de sauvegarde de la base de données : Synchronize presentation: Synchroniser la présentation : Default Par défaut Presentation screen: Écran de présentation : Synchronize split views: Synchroniser les vues scindées : Zoom factor: Niveau de zoom : Parallel search execution: Exécution de recherche parallèle ms ms None Aucun Highlight duration: Durée de mise en surbrillance : Highlight color: Couleur de surlignement : Annotation color: Couleur d'annotation : '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number. « %1 » est remplacé par le chemin d'accès absolu. « %2 » et « %3 » sont remplacés respectivement par le numéro de ligne et le numéro de colonne. Source editor: Éditeur de source : Use tiling: Utiliser le mode tuile : Keep obsolete pixmaps: Conserver l'affichage lors du zoom : Use device pixel ratio: Utiliser le taux de pixel du périphérique : Decorate pages: Décorer les pages : Decorate links: Décorer les liens : Decorate form fields: Décorer les champs de formulaire : Background color: Couleur de l'arrière plan : Paper color: Couleur du papier : Presentation background color: Couleur de l'arrière-plan en mode présentation : Pages per row: Pages par ligne : px px Page spacing: Espacement des pages : Thumbnail spacing: Espacement des miniatures : Thumbnail size: Taille des miniatures : Fit to viewport Adapter à la fenêtre d'affichage Document context menu: Menu contextuel du document : Tab context menu: Menu contextuel de l'onglet : Open in source editor: Ouvrir dans l'éditeur source : %1 MB %1 Mo Cache size: Taille du cache : Minimal scrolling: Défilement minimum : Prefetch: Préchargement : Prefetch distance: Distance de préchargement : Top Haut Bottom Bas Left Gauche Right Droite Tab position: Position de l'onglet : As needed Si nécessaire Always Toujours Exit after last tab: Quitter après le dernier onglet : Scrollable menus: Menus déroulants : Searchable menus: Menus consultables : Zoom to selection: Zoomer sur la sélection : Never Jamais Settings Paramètres Tab visibility: Visibilité de l'onglet : Spread tabs: Répartir les onglets : New tab next to current tab: Nouvel onglet à côté de l'onglet actuel : Recently used count: Nombre de fichiers récemment ouverts : Recently closed count: Nombre de fichiers récemment fermés : Extended search dock: Barre de recherche avancée : Toggle tool and menu bars with fullscreen: Affichage des barres d'outils et de menu en mode plein écran : File tool bar: Barre d'outils Fichier : Edit tool bar: Barre d'outils Édition : View tool bar: Barre d'outils Affichage : Use page label: Utiliser le libellé de la page : Document title as tab title: Titre du document comme titre d'onglet : Current page in window title: Page actuelle dans le titre de la fenêtre : Instance name in window title: Afficher le nom d'instance dans le titre de la fenêtre : Synchronize outline view: Synchroniser le sommaire : Highlight current thumbnail: Surligner la miniature actuelle : Limit thumbnails to results: Limiter les miniatures aux résultats : Annotation overlay: Superposition des annotations : Form field overlay: Superposition des champs de formulaire : Zoom: Zoomer : Rotate: Faire pivoter : Scroll: Faire défiler : Copy to clipboard: Copier dans le presse-papiers : Add annotation: Ajouter une annotation : qpdfview::ShortcutHandler Action Action Key sequence Séquence clavier Skip backward Reculer Skip forward Avancer Move up Déplacer vers le haut Move down Déplacer vers le bas Move left Déplacer vers la gauche Move right Déplacer vers la droite qpdfview::TreeView &Expand all &Tout développer &Collapse all &Tout réduire qpdfview-0.4.18/translations/qpdfview_gl.ts0000644000000000000000000023420613516127411017167 0ustar 00000000000000 Model::ImageDocument Image (%1) Size Resolution Depth Format Formato Monochrome Indexed 32 bits RGB 32 bits ARGB 16 bits RGB 24 bits RGB Model::PdfDocument Linearized Name Nome Type Tipo Embedded Encaixado Subset Subconxunto File Ficheiro Yes Si PDF version Encrypted No Non Model::PdfPage Information Información Version 0.20.1 or higher of the Poppler library is required to add or remove annotations. Precísase a version 0.20.1 ou superior da biblioteca Poppler para engadir ou eliminar anotacións. Model::PsDocument Title Título Created for Creado para Creator Creador Creation date Data de creación Format Formato Language level Nivel de idioma QObject An empty instance name is not allowed. Non se permite un nome de instancia baleiro. An empty search text is not allowed. Non se permite un texto de busca baleiro. Unknown command-line option '%1'. Opción de liña de ordes descoñecida «%1». Using '--instance' requires an instance name. O uso de «--instance» require un nome de instancia. Using '--instance' is not allowed without using '--unique'. Non se permite o uso de «--instance» sen usar «--unique». An instance name must only contain the characters "[A-Z][a-z][0-9]_" and must not begin with a digit. O nome dunha instancia debe conter só os caracteres «[A-Z][a-z][0-9]_» e non debe comezar cun díxito. Using '--search' requires a search text. O uso de «--search» require un texto de busca. Could not prepare signal handler. Non foi posíbel preparar o xestor de sinais. QShortcut Shift Maiús. Ctrl Ctrl Alt Alt Shift and Ctrl Maiús e Ctrl Shift and Alt Maiús e Alt Ctrl and Alt Ctrl e Alt Right mouse button Botón dereito do rato Middle mouse button Botón central do rato None Ningún qpdfview::BookmarkDialog Bookmark Marcador Page: Páxina: Label: Etiqueta: Comment: Comentario: Modified: Modificado: qpdfview::BookmarkMenu &Open &Abrir Open in new &tab &Abrir nunha nova lapela &Remove bookmark &Retirar marcador qpdfview::Database Jump to page %1 Ir á páxina %1 qpdfview::DocumentView Information Información The source editor has not been set. Opening URL is disabled in the settings. A apertura de URL está desactivada nos axustes. Warning Aviso SyncTeX data for '%1' could not be found. Printing '%1'... Imprimindo «%1»... Unlock %1 Desbloquear %1 Password: Contrasinal: Page %1 Páxina %1 qpdfview::FileAttachmentAnnotationWidget Save... Gardar... Save and open... Gardar e abrir... Save file attachment Gardar anexo Warning Aviso Could not open file attachment saved to '%1'. Non foi posíbel abrir o ficheiro do anexo gardado en «%1». Could not save file attachment to '%1'. Non foi posíbel gardar o anexo en «%1». qpdfview::FontsDialog Fonts Tipos de letra qpdfview::HelpDialog Help Axuda help.html Please replace by file name of localized help if available, e.g. "help_fr.html". help.html Find previous Buscar anterior Find next Buscar seguinte qpdfview::MainWindow Toggle tool bars Alternar barra de ferramentas Toggle menu bar Alternar barra do menú Warning Aviso Could not open '%1'. Non foi posíbel abrir «%1». Copy file path Select file path Close all tabs Pechar todas as lapelas Close all tabs but this one Pechar todas as lapelas excepto este Close all tabs to the left Pechar todas as lapelas á esquerda Close all tabs to the right Pechar todas as lapelas á dereita Open Abrir Open in new tab Abrir nunha nova lapela Could not refresh '%1'. Non foi posíbel actualizar «%1». Save copy Gardar unha copia Could not save copy at '%1'. Non foi posíbel gardar unha copia en «%1». Save as Gardar como Move to instance Failed to access instance '%1'. Could not save as '%1'. Non foi posíbel gardalo como «%1». Could not print '%1'. Non foi posíbel imprimir «%1». Set first page Estabelecer a primeira páxina Select the first page of the body matter: Seleccionar a primeira páxina do corpo principal: Jump to page Ir á páxina Page: Páxina: Jump to page %1 Ir á páxina %1 About qpdfview Sobre qpdfview <p><b>qpdfview %1</b></p><p>qpdfview is a tabbed document viewer using Qt.</p><p>This version includes:<ul> <p><b>qpdfview %1</b></p><p>qpdfview é un visor de documentos provisto de lapelas e que usa QT.</p><p>Esta versión inclúe:<ul> <li>PDF support using Poppler %1</li> <li>Compatibilidade PDF usando Poppler %1</li> <li>PS support using libspectre %1</li> <li>Compatibilidade PS usando libspectre %1</li> <li>DjVu support using DjVuLibre %1</li> <li>Compatibilidade DjVu usando DjVuLibre %1</li> <li>PDF support using Fitz %1</li> <li>Compatibilidade PDF usando Fitz %1</li> <li>Printing support using CUPS %1</li> <li>Compatibilidade coa impresión usando CUPS %1</li> &Edit bookmark &Editar o marcador The document '%1' has been modified. Do you want to save your changes? O documento «%1» modificouse. Desexa gardar os cambios? Page width Largo da páxina Page size Tamaño da páxina Match &case Distinguir &maiúsculas Whole &words &Palabras completas Highlight &all Destacar &todos &Open... &Abrir... Open in new &tab... Abrir nunha nova &lapela... Open &copy in new tab Abrir e &copiar nunha nova lapela Move to &instance... &Refresh &Actualizar Information Información Instance-to-instance communication requires D-Bus support. </ul><p>See <a href="https://launchpad.net/qpdfview">launchpad.net/qpdfview</a> for more information.</p><p>&copy; %1 The qpdfview developers</p> Save &as... Gardar &como... Save &copy... &Print... &Imprimir... E&xit &Saír &Previous page Páxina &anterior &Next page Páxina &seguinte &First page &Primeira páxina &Last page &Última páxina &Set first page... E&stabelecer a primeira páxina... &Jump to page... &Ir á páxina... Jump &backward Ir cara a a&trás Jump for&ward Ir cara a a&diante &Search... &Buscar... Find previous Buscar anterior Find next Buscar seguinte Cancel search Cancelar busca &Copy to clipboard &Copiar ao portapapeis &Add annotation &Engadir anotación Settings... Axustes... &Continuous &Contínuo &Two pages &Dúas páxinas Two pages &with cover page Dúas páxinas &con portada &Multiple pages &Múltiples páxinas Right to left De dereita a esquerda Zoom &in &Ampliar Zoom &out &Reducir Original &size &Tamaño orixinal Fit to page width Axustar á largura da páxina Fit to page size Axustar ao tamaño da páxina Rotate &left Rotar á &esquerda Rotate &right Rotar á &dereita Invert colors Inverter as cores Convert to grayscale Converter a escala de grisis Trim margins Darken with paper color Lighten with paper color Fonts... Tipos de letra... &Fullscreen &Pantalla completa &Presentation... &Presentación... &Previous tab Lapela &anterior &Next tab Lapela &seguinte &Close tab &Pechar a lapela Close &all tabs Pechar &todas as lapelas Close all tabs &but current tab Pechar todas as lapelas &agás a actual Restore &most recently closed tab &Previous bookmark Marcador &anterior &Next bookmark Marcador &seguinte &Add bookmark &Engadir marcador Open copy in new &window Split view horizontally... Split view vertically... Close current view Thumb&nails Mi&niaturas Book&marks &Marcadores Composition &Remove bookmark &Retirar marcador Edit '%1' at %2,%3... Open containing &folder Abrir o cart&fol que o contén &Save Remove all bookmarks Retirar todos os marcadores &Contents &Contidos &About &Sobre &File &Ficheiro &Edit &Editar &View &Ver &Outline &Esquema &Properties &Propiedades &Search &Buscar &Tool bars &Barras de ferramentas &Docks &Docas &Tabs &Lapelas &Bookmarks &Marcadores &Help &Axuda Choose instance Instance: qpdfview::PageItem Go to page %1. Ir á páxina %1. Go to page %1 of file '%2'. Ir á páxina %1 do ficheiro «%2». Open '%1'. Abrir «%1». Edit form field '%1'. Editar campo do formulario «%1». Copy &text &Copiar texto &Select text &Seleccionar o texto Copy &image Copiar &imaxe Save image to &file... Gardar a imaxe nun &ficheiro... Save image to file Gardar a imaxe nun ficheiro Warning Aviso Could not save image to file '%1'. Non foi posíbel gardar a imaxe no ficheiro «%1». Add &text Engadir &texto Add &highlight Engadir &resalte &Copy link address &Copiar o enderezo da ligazón &Select link address &Seleccionar o enderezo da ligazón &Remove annotation &Retirar a anotación qpdfview::PdfSettingsWidget Antialiasing: Suavizado: Text antialiasing: Suavizado do texto: None Ningún Full Completo Reduced Reducido Text hinting: Optimización do texto: Ignore paper color: Overprint preview: Previsualización da sobreimpresión: Solid Sólido Shaped Con forma Thin line mode: Modo de liña fina: Splash Pantalla inicial Arthur Arthur Backend: Infraestrutura: qpdfview::PluginHandler Image (%1) Compressed (%1) Supported formats (%1) Could not decompress '%1'! Could not match file type of '%1'! Non foi posíbel atopar un tipo de ficheiro «%1». Critical Crítico Could not load plug-in for file type '%1'! Non foi posíbel cargar o engadido para o tipo de ficheiro «%1». qpdfview::PrintDialog Fit to page: Axustar a páxina: Page ranges: Intervalo de páxinas: All pages Todas as páxinas Even pages Páxinas pares Odd pages Páxinas impares Page set: Grupo de páxinas: Single page Páxina única Two pages Dúas páxinas Four pages Catro páxinas Six pages Seis páxinas Nine pages Nove páxinas Sixteen pages Dezaseis páxinas Number-up: Número de páxinas: Bottom to top and left to right De abaixo a arriba e de esquerda a dereita Bottom to top and right to left De abaixo a arriba e de dereita a esquerda Left to right and bottom to top De esquerda a dereita e de abaixo a arriba Left to right and top to bottom De esquerda a dereita e de arriba a abaixo Right to left and bottom to top De dereita a esquerda e de abaixo a arriba Right to left and top to bottom De dereita a esquerda e de arriba a abaixo Top to bottom and left to right De arriba a abaixo e de esquerda a dereita Top to bottom and right to left De arriba a abaixo e de dereita a esquerda Number-up layout: Disposición das páxinas: Extended options Opcións ampliadas qpdfview::PsSettingsWidget Graphics antialias bits: Bits de suavizado de gráficos: Text antialias bits: Bits de suavizado de texto: qpdfview::RecentlyClosedMenu &Recently closed Pechados &recentemente &Clear list &Borrar lista qpdfview::RecentlyUsedMenu Recently &used Usados &recentemente &Clear list &Limpar lista qpdfview::SearchModel <b>%1</b> occurrences <b>%1</b> ocorrencias <b>%1</b> occurrences on page <b>%2</b> <b>%1</b> ocorrencias na páxina <b>%2</b> qpdfview::SearchableMenu Search for '%1'... Buscar «%1»... qpdfview::SettingsDialog General Xeral &Behavior &Comportamento &Graphics &Gráficos &Interface &Interface &Shortcuts &Atallos &Modifiers &Modificadores Defaults Predeterminados Defaults on current tab Predefinicións na lapela actual Mouse wheel modifiers Mouse button modifiers Open URL: Abrir URL: Auto-refresh: Actualización automática: Effective after restart. Efectivo tras reiniciar. Track recently used: Lembrar os ficheiros recentes: Keep recently closed: Manter os pechados recentemente: Restore tabs: Restaurar lapelas: Restore bookmarks: Restaurar marcadores: Restore per-file settings: Restaurar axustes por-ficheiro: min min. Save database interval: Gardar o intervalo da base de datos: Synchronize presentation: Sincronizar a presentación: Default Predeterminado Presentation screen: Pantalla de presentación: Synchronize split views: Zoom factor: Factor de ampliación: Parallel search execution: ms ms. None Ningún Highlight duration: Duración do resalte: Highlight color: Cor de resalte: Annotation color: Cor da anotación: '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number. «%1» é substituído pola ruta absoluta ao ficheiro «%2» correspondente, «%3» é substituído pola liña correspondente ao número de columna. Source editor: Editor de orixes: Use tiling: Usar mosaico: Keep obsolete pixmaps: Manter os mapas de píxeles obsoletos: Use device pixel ratio: Usar a taxa de píxeles do dispositivo: Decorate pages: Decorar páxinas: Decorate links: Decorar ligazóns: Decorate form fields: Decorar campos do formulario: Background color: Cor do fondo: Paper color: Cor do papel: Presentation background color: Cor do fondo da presentación: Pages per row: Páxinas por liña: px px Page spacing: Espazado de páxina: Thumbnail spacing: Espazado de miniaturas: Thumbnail size: Tamaño das miniaturas: Fit to viewport Document context menu: Tab context menu: Open in source editor: %1 MB %1 MB Cache size: Tamaño da caché: Minimal scrolling: Prefetch: Precargar: Prefetch distance: Distancia de precargado: Top Arriba Bottom Abaixo Left Esquerda Right Dereita Tab position: Posición da lapela: As needed Cando se precise Always Sempre Exit after last tab: Saír despois da última lapela: Scrollable menus: Menús despregábeis: Searchable menus: Menús que se poden buscar: Zoom to selection: Ampliar a selección: Never Nunca Settings Axustes Tab visibility: Visibilidade da lapela: Spread tabs: Espallar lapelas: New tab next to current tab: A nova lapela despois da actual: Recently used count: Nº de usados recentemente: Recently closed count: Conta de pechados recentemente: Extended search dock: Doca de busca ampliada: Toggle tool and menu bars with fullscreen: Alternar barra de ferramentas e do menú en pantalla completa: File tool bar: Barra de ferramentas de ficheiro: Edit tool bar: Barra de ferramentas de edición: View tool bar: Barra de ferramentas de Ver: Use page label: Usar etiqueta de páxina: Document title as tab title: Título do documento como título da lapela: Current page in window title: Páxina actual no título da xanela: Instance name in window title: Nome da instancia no título da xanela: Synchronize outline view: Sincronizar a vista en esquema: Highlight current thumbnail: Resaltar a miniatura actual: Limit thumbnails to results: Mostrar só as miniaturas con resultados: Annotation overlay: Anotación superposta: Form field overlay: Superposición dos campos do formulario: Zoom: Ampliación: Rotate: Rotar: Scroll: Desprazamento: Copy to clipboard: Copiar ao portapapeis: Add annotation: Engadir anotación: qpdfview::ShortcutHandler Action Acción Key sequence Secuencia de teclas Skip backward Saltar cara a atrás Skip forward Saltar cara a adiante Move up Mover cara a arriba Move down Mover cara a abaixo Move left Mover cara a esquerda Move right Mover cara a dereita qpdfview::TreeView &Expand all &Expandir todo &Collapse all &Contraer todo qpdfview-0.4.18/translations/qpdfview_he.ts0000644000000000000000000023425013516127411017160 0ustar 00000000000000 Model::ImageDocument Image (%1) Size Resolution Depth Format עיצוב Monochrome Indexed 32 bits RGB 32 bits ARGB 16 bits RGB 24 bits RGB Model::PdfDocument Linearized Name שם Type סוג Embedded מוטמע Subset File קובץ Yes כן PDF version Encrypted No לא Model::PdfPage Information פרטים Version 0.20.1 or higher of the Poppler library is required to add or remove annotations. Model::PsDocument Title כותרת Created for נוצר עבור Creator יוצר Creation date תאריך היצירה Format עיצוב Language level רמת השפה QObject An empty instance name is not allowed. An empty instance name is not allowed. An empty search text is not allowed. אסור לחפש טקסט ריק. Unknown command-line option '%1'. Using '--instance' requires an instance name. Using '--instance' requires an instance name. Using '--instance' is not allowed without using '--unique'. Using '--instance' is not allowed without using '--unique'. An instance name must only contain the characters "[A-Z][a-z][0-9]_" and must not begin with a digit. Using '--search' requires a search text. Could not prepare signal handler. לא ניתן להכין את המטפל באותות. QShortcut Shift Shift Ctrl Ctrl Alt Alt Shift and Ctrl Shift ו־Ctrl Shift and Alt Shift ו־Alt Ctrl and Alt Ctrl ו־Alt Right mouse button Middle mouse button None qpdfview::BookmarkDialog Bookmark Page: עמוד: Label: Comment: Modified: qpdfview::BookmarkMenu &Open &פתיחה Open in new &tab פתיחה ב&לשונית חדשה &Remove bookmark הס&רת הסימנייה qpdfview::Database Jump to page %1 מעבר לעמוד %1 qpdfview::DocumentView Information פרטים The source editor has not been set. Opening URL is disabled in the settings. פתיחת כתובות מנוטרלת בהגדרות. Warning אזהרה SyncTeX data for '%1' could not be found. Printing '%1'... '%1' בהדפסה... Unlock %1 שחרור %1 Password: ססמה: Page %1 עמוד %1 qpdfview::FileAttachmentAnnotationWidget Save... שמירה... Save and open... שמירה ופתיחה... Save file attachment Warning אזהרה Could not open file attachment saved to '%1'. Could not save file attachment to '%1'. qpdfview::FontsDialog Fonts qpdfview::HelpDialog Help help.html Please replace by file name of localized help if available, e.g. "help_fr.html". help.html Find previous חיפוש הקודם Find next חיפוש הבא qpdfview::MainWindow Toggle tool bars Toggle menu bar Warning אזהרה Could not open '%1'. לא ניתן לפתוח את '%1'. Copy file path Select file path Close all tabs סגירת כל הלשוניות Close all tabs but this one סגירת כל הלשוניות למעט זו Close all tabs to the left סגירת כל הלשוניות לשמאל Close all tabs to the right Open פתיחה Open in new tab פתיחה בלשונית חדשה Could not refresh '%1'. לא ניתן לרענן את '%1'. Save copy שמירת עותק Could not save copy at '%1'. לא ניתן לשמור עותק למיקום '%1'. Save as שמירה בשם Move to instance Failed to access instance '%1'. Could not save as '%1'. לא ניתן לשמור בשם ‚%1‘. Could not print '%1'. לא ניתן להדפיס את '%1'. Set first page Select the first page of the body matter: Jump to page מעבר לעמוד Page: עמוד: Jump to page %1 מעבר לעמוד %1 About qpdfview על אודות qpdfview <p><b>qpdfview %1</b></p><p>qpdfview is a tabbed document viewer using Qt.</p><p>This version includes:<ul> <p><b>qpdfview %1</b></p><p>qpdfview הנו מציג מסמכים בלשוניות לסביבת Qt.</p><p>גרסה זו כוללת:<ul> <li>PDF support using Poppler %1</li> <li>PS support using libspectre %1</li> <li>DjVu support using DjVuLibre %1</li> <li>PDF support using Fitz %1</li> <li>Printing support using CUPS %1</li> &Edit bookmark The document '%1' has been modified. Do you want to save your changes? Page width רוחב העמוד Page size גודל עמוד Match &case התאמת &רישיות Whole &words Highlight &all ה&דגשה של הכול &Open... &פתיחה... Open in new &tab... פתיחה ב&לשונית חדשה... Open &copy in new tab Move to &instance... &Refresh &רענון Information פרטים Instance-to-instance communication requires D-Bus support. </ul><p>See <a href="https://launchpad.net/qpdfview">launchpad.net/qpdfview</a> for more information.</p><p>&copy; %1 The qpdfview developers</p> Save &as... שמירה &בשם... Save &copy... &Print... הד&פסה... E&xit י&ציאה &Previous page העמוד ה&קודם &Next page העמוד ה&בא &First page העמוד ה&ראשון &Last page העמוד ה&אחרון &Set first page... &Jump to page... מ&עבר לעמוד... Jump &backward Jump for&ward &Search... &חיפוש... Find previous חיפוש הקודם Find next חיפוש הבא Cancel search ביטול החיפוש &Copy to clipboard ה&עתקה ללוח הגזירים &Add annotation הוספת ה&ערה Settings... הגדרות... &Continuous מ&תמשך &Two pages &שני עמודים Two pages &with cover page &שני עמודים עם עמוד שער &Multiple pages מ&ספר עמודים Right to left ימין לשמאל Zoom &in הת&קרבות Zoom &out הת&רחקות Original &size גודל מ&קורי Fit to page width התאמת העמוד לרוחב Fit to page size התאמה לגודל העמוד Rotate &left הטייה &שמאלה Rotate &right הטייה ימי&נה Invert colors היפוך צבעים Convert to grayscale Trim margins Darken with paper color Lighten with paper color Fonts... גופנים... &Fullscreen מ&סך מלא &Presentation... מ&צגת... &Previous tab הלשונית ה&קודמת &Next tab הלשונית ה&באה &Close tab &סגירת הלשונית Close &all tabs סגירת &כל הלשוניות Close all tabs &but current tab סגירת כל הלשוניות &פרטי לנוכחית Restore &most recently closed tab &Previous bookmark הסימנייה ה&קודמת &Next bookmark הסימנייה ה&באה &Add bookmark הוס&פת סימנייה Open copy in new &window Split view horizontally... Split view vertically... Close current view Thumb&nails Book&marks Composition &Remove bookmark הס&רת הסימנייה Edit '%1' at %2,%3... Open containing &folder &Save Remove all bookmarks הסרת כל הסימניות &Contents ת&כנים &About על &אודות &File &קובץ &Edit ע&ריכה &View ת&צוגה &Outline מ&תאר &Properties מ&אפיינים &Search &חיפוש &Tool bars סרגלי &כלים &Docks מ&עגנים &Tabs &לשוניות &Bookmarks &סימניות &Help ע&זרה Choose instance Instance: qpdfview::PageItem Go to page %1. מעבר לעמוד %1. Go to page %1 of file '%2'. מעבר לעמוד %1 בקובץ '%2'. Open '%1'. פתיחת '%1'. Edit form field '%1'. עריכת שדה הטופס '%1'. Copy &text ה&עתקת טקסט &Select text Copy &image העתקת ת&מונה Save image to &file... שמירת תמונה ל&קובץ... Save image to file שמירת תמונה לקובץ Warning אזהרה Could not save image to file '%1'. לא ניתן לשמור את התמונה לקובץ '%1'. Add &text הוספת &טקסט Add &highlight הוספת ה&דגשה &Copy link address &Select link address &Remove annotation הסרת ה&ערה qpdfview::PdfSettingsWidget Antialiasing: החלקת קצוות: Text antialiasing: החלקת קצוות גופנים: None אין Full מלא Reduced Text hinting: Ignore paper color: Overprint preview: טווחי Solid אחיד Shaped Thin line mode: Splash מסך פתיחה Arthur Backend: מנגנון: qpdfview::PluginHandler Image (%1) Compressed (%1) Supported formats (%1) Could not decompress '%1'! Could not match file type of '%1'! Critical קריטי Could not load plug-in for file type '%1'! qpdfview::PrintDialog Fit to page: התאמה לעמוד: Page ranges: טווחי עמודים: All pages כל העמודים Even pages עמודים זוגיים Odd pages עמודים אי־זוגיים Page set: Single page עמוד יחיד Two pages שני עמודים Four pages ארבעה עמודים Six pages שישה עמודים Nine pages תשעה עמודים Sixteen pages שישה עשר עמודים Number-up: Bottom to top and left to right Bottom to top and right to left Left to right and bottom to top משמאל לימין ומלמטה למעלה Left to right and top to bottom משמאל לימין ומלמעלה למטה Right to left and bottom to top מימין לשמאל ומלמטה למעלה Right to left and top to bottom מימין לשמאל ומלמעלה למטה Top to bottom and left to right מלמעלה למטה ומשמאל לימין Top to bottom and right to left מלמעלה למטה ומימין לשמאל Number-up layout: Extended options אפשרויות מורחבות qpdfview::PsSettingsWidget Graphics antialias bits: Text antialias bits: qpdfview::RecentlyClosedMenu &Recently closed &Clear list &פינוי הרשימה qpdfview::RecentlyUsedMenu Recently &used בשימוש לא&חרונה &Clear list &פינוי הרשימה qpdfview::SearchModel <b>%1</b> occurrences <b>%1</b> occurrences on page <b>%2</b> qpdfview::SearchableMenu Search for '%1'... qpdfview::SettingsDialog General כללי &Behavior הת&נהגות &Graphics &גרפיקה &Interface מ&נשק &Shortcuts &קיצורי מקשים &Modifiers מקשי ה&חלפה Defaults בררות מחדל Defaults on current tab Mouse wheel modifiers Mouse button modifiers Open URL: פתיחת כתובת: Auto-refresh: &רענון אוטומטי: Effective after restart. ייכנס לתוקף אחרי הפעלה מחדש. Track recently used: מעקב אחר האחרונים בשימוש: Keep recently closed: Restore tabs: שחזור לשוניות: Restore bookmarks: שחזור סימניות: Restore per-file settings: שחזור ההגדרות לפי קובץ: min Save database interval: Synchronize presentation: סנכרון מצגת: Default בררת מחדל Presentation screen: מסך המצגת: Synchronize split views: Zoom factor: Parallel search execution: ms None ללא Highlight duration: משך ההדגשה: Highlight color: צבע ההדגשה: Annotation color: צבע ההערות: '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number. '%1' יוחלף בנתיב המלא והמוחלט. '%2' ו־'%3' יוחלפו בשורה ובמספר העמודה בהתאמה. Source editor: עורך המקור: Use tiling: Keep obsolete pixmaps: Use device pixel ratio: Decorate pages: קישוט עמודים: Decorate links: קישוט קישורים: Decorate form fields: עיצוב שדות הטופס: Background color: צבע הרקע: Paper color: צבע הנייר: Presentation background color: Pages per row: עמודים בשורה: px Page spacing: ריווח עמודים: Thumbnail spacing: ריווח בין התמונות הממוזערות: Thumbnail size: גודל תמונה ממוזערת: Fit to viewport Document context menu: Tab context menu: Open in source editor: %1 MB %1 מ״ב Cache size: גודל מטמון: Minimal scrolling: Prefetch: אחזור קדם: Prefetch distance: מרחק בין אחזורי הקדם: Top למעלה Bottom למטה Left משמאל Right מימין Tab position: מיקום הלשונית: As needed לפי הצורך Always תמיד Exit after last tab: Scrollable menus: Searchable menus: Zoom to selection: Never לעולם לא Settings Tab visibility: הופעת הלשונית: Spread tabs: New tab next to current tab: לשונית חדשה ליד הלשונית הנוכחית: Recently used count: Recently closed count: Extended search dock: Toggle tool and menu bars with fullscreen: File tool bar: סרגל הכלים קובץ: Edit tool bar: סרגל הכלים עריכה: View tool bar: סרגל כלים הצגה: Use page label: Document title as tab title: Current page in window title: העמוד הנוכחי בכותרת החלון: Instance name in window title: Synchronize outline view: Highlight current thumbnail: הדגשת התמונה הממוזערת הנוכחית: Limit thumbnails to results: Annotation overlay: Form field overlay: Zoom: מרחק מתצוגה: Rotate: סיבוב: Scroll: גלילה: Copy to clipboard: העתקה ללוח הגזירים: Add annotation: הוספת הערה: qpdfview::ShortcutHandler Action פעולה Key sequence צירוף מקשים Skip backward דילוג אחורה Skip forward דילוג קדימה Move up הזזה מעלה Move down הזזה למטה Move left הזזה שמאלה Move right הזזה ימינה qpdfview::TreeView &Expand all ה&רחבה של הכול &Collapse all &צמצום של הכול qpdfview-0.4.18/translations/qpdfview_hr.ts0000644000000000000000000023205113516127411017172 0ustar 00000000000000 Model::ImageDocument Image (%1) Size Resolution Depth Format Format Monochrome Indexed 32 bits RGB 32 bits ARGB 16 bits RGB 24 bits RGB Model::PdfDocument Linearized Name Naziv Type Tip Embedded Ugrađen Subset Podskupina File Datoteka Yes Da PDF version Encrypted No Ne Model::PdfPage Information Informacija Version 0.20.1 or higher of the Poppler library is required to add or remove annotations. Verzija 0.20.1 ili novija Poppler biblioteke su potrebni za dodavanje ili uklanjanje napomena. Model::PsDocument Title Naslov Created for Napravljeno za Creator Tvorac Creation date Datum izrade Format Format Language level Razina jezika QObject An empty instance name is not allowed. Prazna instanca imena nije dopuštena. An empty search text is not allowed. Prazan izraz nije dozvoljen. Unknown command-line option '%1'. Using '--instance' requires an instance name. Koristim '--instance' potražuje naziv instance. Using '--instance' is not allowed without using '--unique'. Koristim '--instance' nije dozvoljeno bez korištenja '--unique'. An instance name must only contain the characters "[A-Z][a-z][0-9]_" and must not begin with a digit. Using '--search' requires a search text. Korištenje '--search' potražuje upis teksta. Could not prepare signal handler. Neuspjelo pripremanje signal poslužitelja. QShortcut Shift Shift Ctrl Ctrl Alt Alt Shift and Ctrl Shift i Ctrl Shift and Alt Shift i Alt Ctrl and Alt Ctrl i Alt Right mouse button Middle mouse button None qpdfview::BookmarkDialog Bookmark Page: Stranica: Label: Comment: Modified: qpdfview::BookmarkMenu &Open &Otvori Open in new &tab Otvori u novoj &kartici &Remove bookmark &Ukloni oznaku qpdfview::Database Jump to page %1 qpdfview::DocumentView Information Informacija The source editor has not been set. Opening URL is disabled in the settings. Otvaranje URL je onemogućeno u postavkama. Warning Upozorenje SyncTeX data for '%1' could not be found. Printing '%1'... Tiskanje '%1'... Unlock %1 Otključaj %1 Password: Lozinka: Page %1 qpdfview::FileAttachmentAnnotationWidget Save... Save and open... Save file attachment Warning Upozorenje Could not open file attachment saved to '%1'. Could not save file attachment to '%1'. qpdfview::FontsDialog Fonts qpdfview::HelpDialog Help help.html Please replace by file name of localized help if available, e.g. "help_fr.html". Find previous Pronađi prethodno Find next Pronađi sljedeće qpdfview::MainWindow Toggle tool bars Toggle menu bar Warning Upozorenje Could not open '%1'. Ne mogu otvoriti '%1'. Copy file path Select file path Close all tabs Close all tabs but this one Close all tabs to the left Close all tabs to the right Open Otvori Open in new tab Otvori u novoj kartici Could not refresh '%1'. Ne mogu osvježiti '%1'. Save copy Spremi kopiju Could not save copy at '%1'. Ne mogu spremiti kopiju na '%1'. Save as Spremi kao Move to instance Failed to access instance '%1'. Could not save as '%1'. Ne mogu spremiti kao '%1'. Could not print '%1'. Ne može se ispisati '%1'. Set first page Select the first page of the body matter: Jump to page Skoči na stranicu Page: Stranica: Jump to page %1 About qpdfview O qpdfview <p><b>qpdfview %1</b></p><p>qpdfview is a tabbed document viewer using Qt.</p><p>This version includes:<ul> <p><b>qpdfview %1</b></p><p>qpdfview je preglednik dokumenata s mogućom upotrbom kartica, a napravljen je koristeći Qt.</p><p>Ova verzija uključuje:<ul> <li>PDF support using Poppler %1</li> <li>PS support using libspectre %1</li> <li>DjVu support using DjVuLibre %1</li> <li>PDF support using Fitz %1</li> <li>Printing support using CUPS %1</li> &Edit bookmark The document '%1' has been modified. Do you want to save your changes? Page width Širina stranice Page size Veličina stranice Match &case Odgovara &slučaju Whole &words Highlight &all Označi &sve &Open... &Otvori... Open in new &tab... Otvori u novoj &kartici... Open &copy in new tab Move to &instance... &Refresh &Osvježi Information Informacija Instance-to-instance communication requires D-Bus support. </ul><p>See <a href="https://launchpad.net/qpdfview">launchpad.net/qpdfview</a> for more information.</p><p>&copy; %1 The qpdfview developers</p> Save &as... Spremi &kao Save &copy... &Print... &Tiskanje... E&xit I&zlaz &Previous page &Prethodna stranica &Next page &Sljedeća stranica &First page &Početna stranica &Last page &Posljednja stranica &Set first page... &Jump to page... &Skoči na stranicu... Jump &backward Skok &natrag Jump for&ward Skok nap&rijed &Search... &Traži... Find previous Pronađi prethodno Find next Pronađi sljedeće Cancel search Otkaži pretraživanje &Copy to clipboard &Kopiraj u međuspremnik &Add annotation &Dodaj anotaciju Settings... Postavke... &Continuous &Neprekidno &Two pages &Dvije stranice Two pages &with cover page Dvije stranice &sa naslovnicom &Multiple pages &Višestruke stranice Right to left Zoom &in Zumiraj &unutra Zoom &out Zumiraj &van Original &size Originalna &veličina Fit to page width Podesi prema širini stranice Fit to page size Prilagodi po veličini stranice Rotate &left Rotiraj &lijevo Rotate &right Rotiraj &desno Invert colors Izokreni boje Convert to grayscale Trim margins Darken with paper color Lighten with paper color Fonts... Fontovi... &Fullscreen &Na cijelom zaslonu &Presentation... &Prezentacija... &Previous tab &Prethodna kartica &Next tab &Sljedeća kartica &Close tab &Zatvori karticu Close &all tabs Zatvori &sve kartice Close all tabs &but current tab Zatvorite sve kartice &osim trenutnu karticu Restore &most recently closed tab &Previous bookmark &Pijašnja oznaka &Next bookmark &Sljedeća oznaka &Add bookmark &Dodaj oznaku Open copy in new &window Split view horizontally... Split view vertically... Close current view Thumb&nails Book&marks Composition &Remove bookmark &Ukloni oznaku Edit '%1' at %2,%3... Open containing &folder &Save Remove all bookmarks Uklonite sve oznake &Contents &Sadržaj &About &O programu &File &Datoteka &Edit &Uredi &View &Prikaz &Outline &Obris &Properties &Karakteristike &Search &Pretraživanje &Tool bars &Alatne trake &Docks &Dokovi &Tabs &Kartice &Bookmarks &Oznake &Help &Pomoć Choose instance Instance: qpdfview::PageItem Go to page %1. Idi na stranicu %1. Go to page %1 of file '%2'. Idi na stranicu %1 datoteke '%2'. Open '%1'. Otvori '%1'. Edit form field '%1'. Uredi iz polja '%1'. Copy &text Kopiraj &tekst &Select text Copy &image Kopiraj &sliku Save image to &file... Sačuvaj sliku u &datoteci... Save image to file Sačuvaj sliku u datoteci Warning Upozorenje Could not save image to file '%1'. Nemoguće je spremiti sliku u datoteku '%1'. Add &text Dodaj &tekst Add &highlight Dodaj &istakni &Copy link address &Select link address &Remove annotation &Odstrani napomenu qpdfview::PdfSettingsWidget Antialiasing: Antialiasing: Text antialiasing: Antialiasing teksta: None Nijedno Full Potpuno Reduced Smanjeno Text hinting: Aludiranje teksta: Ignore paper color: Overprint preview: Pregled pretiska: Solid Čvrsto Shaped Oblikovano Thin line mode: Način tanke linije: Splash Arthur Backend: qpdfview::PluginHandler Image (%1) Compressed (%1) Supported formats (%1) Could not decompress '%1'! Could not match file type of '%1'! Critical Kritično Could not load plug-in for file type '%1'! qpdfview::PrintDialog Fit to page: Prilagodi stranici: Page ranges: Opseg stranica: All pages Sve stranice Even pages Parne stranice Odd pages Neparne stranice Page set: Set stranica: Single page Jedna stranica Two pages Dvije stranice Four pages Četiri stranice Six pages Šest stranica Nine pages Devet stranica Sixteen pages Šesnaest stranica Number-up: Broj-više: Bottom to top and left to right Dno na vrh i lijevo na desno Bottom to top and right to left Dno na vrh i desno na lijevo Left to right and bottom to top Lijevo na desno i dno na vrh Left to right and top to bottom S lijeva na desno i vrha do dna Right to left and bottom to top Desno na lijevo i dno na vrh Right to left and top to bottom Desno na lijevo i vrh na dno Top to bottom and left to right Vrh na dno i lijevo na desno Top to bottom and right to left Vrh na dno i desno na lijevo Number-up layout: Broj van sučelja: Extended options Proširene opcije qpdfview::PsSettingsWidget Graphics antialias bits: Bitovi grafičkog popravljanja: Text antialias bits: Bitovi ispravljanja teksta: qpdfview::RecentlyClosedMenu &Recently closed &Clear list &Očisti listu qpdfview::RecentlyUsedMenu Recently &used Nedavno &korišteno &Clear list &Očisti listu qpdfview::SearchModel <b>%1</b> occurrences <b>%1</b> occurrences on page <b>%2</b> qpdfview::SearchableMenu Search for '%1'... qpdfview::SettingsDialog General Općenito &Behavior &Ponašanje &Graphics &Grafika &Interface &Sučelje &Shortcuts &Prečice &Modifiers &Modifikatori Defaults Zadano Defaults on current tab Zadano na trenutačnoj kartici Mouse wheel modifiers Mouse button modifiers Open URL: Otvori URL: Auto-refresh: Auto-osvježavanje: Effective after restart. Učinkovito nakon ponovnog pokretanja. Track recently used: Prati nedavno korišteno: Keep recently closed: Restore tabs: Vrati kartice: Restore bookmarks: Vraćanje oznaka: Restore per-file settings: Vrati postavke za svaku datoteku posebno: min Save database interval: Synchronize presentation: Sinkroniziraj prezentaciju: Default Zadana vrijednost Presentation screen: Zaslon prezentacije: Synchronize split views: Zoom factor: Parallel search execution: ms None Nijedan Highlight duration: Označite trajanje: Highlight color: Boja za označavanje: Annotation color: Boja napomene: '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number. '%1' je zamijenjen za apsolutnu putanju. '%2' resp. '%3' je zamijenjen za resp. broj stupca. Source editor: Uređivač izvora: Use tiling: Keep obsolete pixmaps: Use device pixel ratio: Decorate pages: Dekoriraj stranice: Decorate links: Dekoriraj veze: Decorate form fields: Dekoriranje polja forme: Background color: Boja pozadine: Paper color: Boja stranice: Presentation background color: Pages per row: Stranice po redu: px Page spacing: Razmak stranica: Thumbnail spacing: Razmak sličica: Thumbnail size: Veličina sličice: Fit to viewport Document context menu: Tab context menu: Open in source editor: %1 MB %1 MB Cache size: Veličina predmemorije: Minimal scrolling: Prefetch: Pretpreuzmi: Prefetch distance: Pretpreuzmi udaljenost: Top Vrh Bottom Dno Left Lijevo Right Desno Tab position: Položaj kartice: As needed Po potrebi Always Uvijek Exit after last tab: Scrollable menus: Searchable menus: Zoom to selection: Never Nikada Settings Tab visibility: Vidljivost kartice: Spread tabs: New tab next to current tab: Nova kartica uz trenutnu karticu: Recently used count: Zbroj nedavno korištenih: Recently closed count: Extended search dock: Toggle tool and menu bars with fullscreen: File tool bar: Alatna traka datoteke: Edit tool bar: Alatna traka za uređivanje: View tool bar: Alatna traka pregleda: Use page label: Document title as tab title: Current page in window title: Trenutna stranica u naslovu prozora: Instance name in window title: Synchronize outline view: Highlight current thumbnail: Označite trenutnu sličicu: Limit thumbnails to results: Ograniči sličicu na rezultate: Annotation overlay: Form field overlay: Zoom: Zumiraj: Rotate: Rotiraj: Scroll: Pomicanje: Copy to clipboard: Kopiraj u međuspremnik: Add annotation: Dodaj napomenu: qpdfview::ShortcutHandler Action Akcija Key sequence Niz tipaka Skip backward Preskoči unazad Skip forward Preskoči unaprijed Move up Pomakni gore Move down Pomakni dolje Move left Pomakni lijevo Move right Pomakni desno qpdfview::TreeView &Expand all &Raširi sve &Collapse all &Sažmi sve qpdfview-0.4.18/translations/qpdfview_hu.ts0000644000000000000000000023121713516127411017200 0ustar 00000000000000 Model::ImageDocument Image (%1) Size Resolution Depth Format Formátum Monochrome Indexed 32 bits RGB 32 bits ARGB 16 bits RGB 24 bits RGB Model::PdfDocument Linearized linearizált Name Név Type Típus Embedded Beágyazott Subset File Fájl Yes Igen PDF version PDF verzió Encrypted Titkosított No Nem Model::PdfPage Information Információ Version 0.20.1 or higher of the Poppler library is required to add or remove annotations. Kommentár hozzáadásához vagy eltávolításához a Poppler függvénytár 0.20.1 vagy magasabb verziója szükséges. Model::PsDocument Title Cím Created for Creator Készítő Creation date Létrehozás dátuma Format Formátum Language level QObject An empty instance name is not allowed. An empty search text is not allowed. Üres keresendő szöveg nem megengedett. Unknown command-line option '%1'. Using '--instance' requires an instance name. Using '--instance' is not allowed without using '--unique'. An instance name must only contain the characters "[A-Z][a-z][0-9]_" and must not begin with a digit. Using '--search' requires a search text. Could not prepare signal handler. QShortcut Shift Shift Ctrl Ctrl Alt Alt Shift and Ctrl Shift + Ctrl Shift and Alt Shift + Alt Ctrl and Alt Ctrl + Alt Right mouse button Jobb egérgomb Middle mouse button Középső egérgomb None Nincs qpdfview::BookmarkDialog Bookmark Könyvjelző Page: Oldal: Label: Címke: Comment: Megjegyzés: Modified: Módosítva: qpdfview::BookmarkMenu &Open &Megnyitás Open in new &tab Megnyitás új &lapon &Remove bookmark Könyvjelző &törlése qpdfview::Database Jump to page %1 %1. oldalra ugrás qpdfview::DocumentView Information Információ The source editor has not been set. Opening URL is disabled in the settings. URL menyitása nincs engedélyezve a beállításokban. Warning Figyelmeztetés SyncTeX data for '%1' could not be found. Printing '%1'... '%1' nyomtatása... Unlock %1 %1 feloldása Password: Jelszó: Page %1 %1. oldal qpdfview::FileAttachmentAnnotationWidget Save... Mentés... Save and open... Mentés és megnyitás... Save file attachment Fájlcsatolás mentése Warning Figyelmeztetés Could not open file attachment saved to '%1'. Could not save file attachment to '%1'. qpdfview::FontsDialog Fonts Betűtípusok qpdfview::HelpDialog Help Segítség help.html Please replace by file name of localized help if available, e.g. "help_fr.html". Find previous Előző keresése Find next Következő keresése qpdfview::MainWindow Toggle tool bars Toggle menu bar Warning Figyelmeztetés Could not open '%1'. '%1' nem nyitható meg. Copy file path Select file path Close all tabs Minden lap bezárása Close all tabs but this one Close all tabs to the left Close all tabs to the right Open Megnyitás Open in new tab Megnyitás új lapon Could not refresh '%1'. '%1' nem frissíthető. Save copy Másolat mentése Could not save copy at '%1'. Save as Mentés másként Move to instance Failed to access instance '%1'. Could not save as '%1'. Nem menthető, mint '%1'. Could not print '%1'. '%1' nem nyomtatható. Set first page Első oldal beállítása Select the first page of the body matter: Jump to page Page: Oldal: Jump to page %1 %1. oldalra ugrás About qpdfview <p><b>qpdfview %1</b></p><p>qpdfview is a tabbed document viewer using Qt.</p><p>This version includes:<ul> <li>PDF support using Poppler %1</li> <li>PS support using libspectre %1</li> <li>DjVu support using DjVuLibre %1</li> <li>PDF support using Fitz %1</li> <li>Printing support using CUPS %1</li> &Edit bookmark Könyvjelző &szerkesztése The document '%1' has been modified. Do you want to save your changes? '%1' dokumentum megváltozott. Kívánja menteni a változásokat? Page width Oldalszélesség Page size Oldalméret Match &case Nagybetűér&zékeny Whole &words Teljes szavak Highlight &all Összes &kiemelése &Open... &Megnyitás… Open in new &tab... Megnyitás új &lapon Open &copy in new tab Másolat &megnyitása új lapon Move to &instance... &Refresh &Frissítés Information Információ Instance-to-instance communication requires D-Bus support. </ul><p>See <a href="https://launchpad.net/qpdfview">launchpad.net/qpdfview</a> for more information.</p><p>&copy; %1 The qpdfview developers</p> Save &as... Mentés má&sként... Save &copy... &Print... &Nyomtatás... E&xit &Kilépés &Previous page &Előző oldal &Next page &Következő oldal &First page &Első oldal &Last page &Utolsó oldal &Set first page... Első oldal &beállítása... &Jump to page... U&grás oldalra... Jump &backward Jump for&ward &Search... &Keresés… Find previous Előző keresése Find next Következő keresése Cancel search Keresés leállítása &Copy to clipboard Másolás a &vágólapra &Add annotation Kommentár &hozzáadása Settings... Beállítások... &Continuous &Folyamatos &Two pages &Két oldal Two pages &with cover page Két oldal &fedőlappal &Multiple pages &Több oldal Right to left Jobbról balra Zoom &in &Nagyítás Zoom &out &Kicsinyítés Original &size &Eredeti méret Fit to page width Fit to page size Rotate &left Forgatás &balra Rotate &right Forgatás &jobbra Invert colors Színek invertálása Convert to grayscale Átalakítás szürkeárnyalatosra Trim margins Darken with paper color Lighten with paper color Fonts... Betűkészletek... &Fullscreen &Teljes képernyő &Presentation... &Prezentáció... &Previous tab &Előző lap &Next tab &Következő lap &Close tab &Lap bezárása Close &all tabs &Minden lap bezárása Close all tabs &but current tab Minden lap bezárása az aktuális &kivételével Restore &most recently closed tab &Previous bookmark &Előző könyvjelző &Next bookmark &Következő könyvjelző &Add bookmark Könyvjelző &hozzáadása Open copy in new &window Split view horizontally... Split view vertically... Close current view Thumb&nails Bélye&gképek Book&marks Könyv&jelzők Composition &Remove bookmark Könyvjelző &törlése Edit '%1' at %2,%3... Open containing &folder A &fájlt tartalmazó mappa megnyitása &Save Remove all bookmarks Összes könyvjelző törlése &Contents &Tartalom &About &Névjegy &File &Fájl &Edit &Szerkesztés &View &Nézet &Outline Á&ttekintés &Properties &Tulajdonságok &Search &Keresés &Tool bars &Eszköztárak &Docks &Tabs &Lapok &Bookmarks &Könyvjelzők &Help &Súgó Choose instance Instance: qpdfview::PageItem Go to page %1. Go to page %1 of file '%2'. Open '%1'. '%1' megnyitása Edit form field '%1'. Copy &text Szöveg &másolása &Select text Szöveg &kijelölése Copy &image Kép má&solása Save image to &file... Kép mentése &fájlba... Save image to file Kép mentése fájlba Warning Figyelmeztetés Could not save image to file '%1'. Add &text Szöveg &hozzáadása Add &highlight Ki&emelés hozzáadása &Copy link address Hivatkozás címének &másolása &Select link address Hivatkozás címének &kijelölése &Remove annotation Kommentár &eltávolítása qpdfview::PdfSettingsWidget Antialiasing: Élsimítás: Text antialiasing: Szöveg élsimítás: None Nincs Full Teljes Reduced Csökkentett Text hinting: Ignore paper color: Overprint preview: Solid Egyszerű Shaped Formázott Thin line mode: Splash Indítókép Arthur Backend: qpdfview::PluginHandler Image (%1) Compressed (%1) Supported formats (%1) Támogatott formátumok (%1) Could not decompress '%1'! Could not match file type of '%1'! Critical Kritikus Could not load plug-in for file type '%1'! qpdfview::PrintDialog Fit to page: Page ranges: Oldalak: All pages Minden oldal Even pages Páros oldalak Odd pages Páratlan oldalak Page set: Oldal tartomány: Single page Egy oldal Two pages 2 oldal Four pages 4 oldal Six pages 6 oldal Nine pages 9 oldal Sixteen pages 16 oldal Number-up: Bottom to top and left to right Bottom to top and right to left Left to right and bottom to top Left to right and top to bottom Right to left and bottom to top Right to left and top to bottom Top to bottom and left to right Top to bottom and right to left Number-up layout: Extended options qpdfview::PsSettingsWidget Graphics antialias bits: Text antialias bits: qpdfview::RecentlyClosedMenu &Recently closed &Nemrég bezárt &Clear list &Lista törlése qpdfview::RecentlyUsedMenu Recently &used &Nemrég használt &Clear list &Lista törlése qpdfview::SearchModel <b>%1</b> occurrences <b>%1</b> találat <b>%1</b> occurrences on page <b>%2</b> <b>%1</b> találat a(z) <b>%2</b> oldalon qpdfview::SearchableMenu Search for '%1'... '%1' keresése... qpdfview::SettingsDialog General Általános &Behavior &Működés &Graphics &Grafika &Interface &Shortcuts &Billentyűparancsok &Modifiers Defaults Alapértelmezések Defaults on current tab Alapértelmezések az aktuális lapon Mouse wheel modifiers Mouse button modifiers Open URL: URL megnyitása: Auto-refresh: Automatikus frissítés: Effective after restart. Track recently used: Keep recently closed: Restore tabs: Lapok visszaállítása: Restore bookmarks: Könyvjelzők visszaállítása: Restore per-file settings: Fájlonkénti beállítások visszaállítása: min perc Save database interval: Adatbázis mentés időköze: Synchronize presentation: Default Alapértelmezett Presentation screen: Synchronize split views: Zoom factor: Nagyítás faktor: Parallel search execution: ms ms None Nincs Highlight duration: Kiemelés időtartama: Highlight color: Kiemelés színe: Annotation color: Kommentár színe: '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number. Source editor: Use tiling: Keep obsolete pixmaps: Use device pixel ratio: Decorate pages: Decorate links: Decorate form fields: Background color: Háttérszín: Paper color: Papírszín: Presentation background color: Pages per row: px képpont Page spacing: Thumbnail spacing: Thumbnail size: Bélyegkép mérete: Fit to viewport Document context menu: Tab context menu: Open in source editor: %1 MB %1 MB Cache size: A gyorsítótár mérete: Minimal scrolling: Prefetch: Prefetch distance: Top Fent Bottom Lent Left Bal oldalon Right Jobb oldalon Tab position: A lapok helye: As needed Ha szükséges Always Mindig Exit after last tab: Scrollable menus: Görgethető menük: Searchable menus: Kereshető menük: Zoom to selection: Never Soha Settings Beállítások Tab visibility: Spread tabs: New tab next to current tab: Recently used count: Recently closed count: Extended search dock: Toggle tool and menu bars with fullscreen: File tool bar: Edit tool bar: View tool bar: Use page label: Document title as tab title: Current page in window title: Instance name in window title: Synchronize outline view: Highlight current thumbnail: Limit thumbnails to results: Annotation overlay: Form field overlay: Zoom: Nagyítás: Rotate: Forgatás: Scroll: Görgetés: Copy to clipboard: Másolás a vágólapra: Add annotation: qpdfview::ShortcutHandler Action Művelet Key sequence Billentyűparancs Skip backward Skip forward Move up Mozgatás fel Move down Mozgatás le Move left Mozgatás balra Move right Mozgatás jobbra qpdfview::TreeView &Expand all &Mindet kibont &Collapse all &Mindet összecsukja qpdfview-0.4.18/translations/qpdfview_id.ts0000644000000000000000000023134513516127411017162 0ustar 00000000000000 Model::ImageDocument Image (%1) Gambar (%1) Size Ukuran Resolution Resolusi Depth Kedalaman Format Format Monochrome Monokrom Indexed Terindeks 32 bits RGB 32 bits RGB 32 bits ARGB 32 bits ARGB 16 bits RGB 16 bits RGB 24 bits RGB 24 bits RGB Model::PdfDocument Linearized Name Nama Type Tipe Embedded Tertanam Subset Subset File Berkas Yes Ya PDF version Versi PDF Encrypted Terenkripsi No Tidak Model::PdfPage Information Informasi Version 0.20.1 or higher of the Poppler library is required to add or remove annotations. Versi 0.20.1 atau lebih baru dari pustaka Poppler diperlukan untuk menambah atau menghapus anotasi. Model::PsDocument Title Judul Created for Dibuat untuk Creator Pembuat Creation date Tanggal pembuatan Format Format Language level Level bahasa QObject An empty instance name is not allowed. Nama instansi tidak diperkenankan kosong. An empty search text is not allowed. Teks pencarian kosong tidak diperkenankan. Unknown command-line option '%1'. Pilihan baris perintah tak diketahui '%1'. Using '--instance' requires an instance name. Using '--instance' is not allowed without using '--unique'. An instance name must only contain the characters "[A-Z][a-z][0-9]_" and must not begin with a digit. Using '--search' requires a search text. Penggunaan '--search' membutuhkan sebuah teks pencarian. Could not prepare signal handler. Tak dapat mempersiapkan pengendali sinyal. QShortcut Shift Shift Ctrl Ctrl Alt Alt Shift and Ctrl Shift dan Ctrl Shift and Alt Shift dan Alt Ctrl and Alt Ctrl dan Alt Right mouse button Tombol kanan tetikus Middle mouse button Tombol tengah tetikus None qpdfview::BookmarkDialog Bookmark Page: Halaman: Label: Label: Comment: Komentar: Modified: qpdfview::BookmarkMenu &Open &Buka Open in new &tab Buka di &tab baru &Remove bookmark &Hilangkan penanda qpdfview::Database Jump to page %1 Lompat ke halaman %1 qpdfview::DocumentView Information Informasi The source editor has not been set. Opening URL is disabled in the settings. Membuka URL dimatikan pada pengaturan. Warning Peringatan SyncTeX data for '%1' could not be found. Printing '%1'... Mencetak '%1'... Unlock %1 Buka kunci %1 Password: Sandi: Page %1 Halaman %1 qpdfview::FileAttachmentAnnotationWidget Save... Simpan... Save and open... Simpan dan buka... Save file attachment SImpan lampiran berkas Warning Peringatan Could not open file attachment saved to '%1'. Tidak bisa membuka lampiran berkas yang disimpan ke '%1'. Could not save file attachment to '%1'. Tidak bisa menyimpan lampiran berkas ke '%1'. qpdfview::FontsDialog Fonts qpdfview::HelpDialog Help help.html Please replace by file name of localized help if available, e.g. "help_fr.html". help.html Find previous Cari sebelumnya Find next Cari berikutnya qpdfview::MainWindow Toggle tool bars Toggle menu bar Warning Peringatan Could not open '%1'. Tidak dapat membuka '%1'. Copy file path Select file path Close all tabs Tutup semua tab Close all tabs but this one Tutup semua tab kecuali yang satu ini. Close all tabs to the left Tutup semua tab ke kiri Close all tabs to the right Tutup semua tab ke kanan Open Buka Open in new tab Buka di tab baru Could not refresh '%1'. Takdapat menyegarkan '%1' Save copy Simpan salinan Could not save copy at '%1'. Tidak bisa menyimpan salinan pada '%1'. Save as Simpan sebagai Move to instance Failed to access instance '%1'. Could not save as '%1'. Tidak dapat menyimpan sebagai '%1'. Could not print '%1'. Tidak dapat mencetak '%1'. Set first page Select the first page of the body matter: Jump to page Lompat ke halaman Page: Halaman: Jump to page %1 Lompat ke halaman %1 About qpdfview Tentang qpdfview <p><b>qpdfview %1</b></p><p>qpdfview is a tabbed document viewer using Qt.</p><p>This version includes:<ul> <p><b>qpdfview %1</b></p><p>qpdfview merupakan penampil dokumen bertab yang menggunakan Qt.</p><p>Versi ini mengandungi:<ul> <li>PDF support using Poppler %1</li> <li>PS support using libspectre %1</li> <li>DjVu support using DjVuLibre %1</li> <li>PDF support using Fitz %1</li> <li>Printing support using CUPS %1</li> &Edit bookmark The document '%1' has been modified. Do you want to save your changes? Dokumen '%1' telah diubah. Apakah Anda ingin menyimpan perubahan? Page width Lebar halaman Page size Ukuran halaman Match &case Cocokkan &huruf Whole &words Highlight &all Soroti &semua &Open... &Buka... Open in new &tab... Buka di &tab baru... Open &copy in new tab Move to &instance... &Refresh Sega&rkan Information Informasi Instance-to-instance communication requires D-Bus support. </ul><p>See <a href="https://launchpad.net/qpdfview">launchpad.net/qpdfview</a> for more information.</p><p>&copy; %1 The qpdfview developers</p> Save &as... Simp&an sebagai... Save &copy... &Print... &Cetak... E&xit &Keluar &Previous page Halaman Se&belumnya &Next page Halaman Se&lanjutnya &First page Halaman &Pertama &Last page Halaman &Terakhir &Set first page... &Jump to page... &Lompat ke halaman... Jump &backward Lompat &mundur Jump for&ward Lompat ma&ju &Search... &Cari... Find previous Cari sebelumnya Find next Cari selanjutnya Cancel search Batalkan pencarian &Copy to clipboard &Salin ke papan klip &Add annotation Tambah &catatan Settings... Pengaturan... &Continuous &Two pages Two pages &with cover page &Multiple pages Right to left Kanan ke kiri Zoom &in Zoom &out Original &size Fit to page width Fit to page size Rotate &left Rotate &right Invert colors Convert to grayscale Trim margins Darken with paper color Lighten with paper color Fonts... &Fullscreen &Presentation... &Previous tab &Next tab &Close tab Close &all tabs Close all tabs &but current tab Restore &most recently closed tab &Previous bookmark &Next bookmark &Add bookmark Open copy in new &window Split view horizontally... Split view vertically... Close current view Thumb&nails Book&marks Composition Komposisi &Remove bookmark &Hilangkan penanda Edit '%1' at %2,%3... Open containing &folder &Save &Simpan Remove all bookmarks &Contents &About &File &Edit &View &Outline &Properties &Search &Tool bars &Docks &Tabs &Bookmarks &Help Choose instance Instance: qpdfview::PageItem Go to page %1. Go to page %1 of file '%2'. Open '%1'. Edit form field '%1'. Copy &text &Select text Copy &image Save image to &file... Save image to file Warning Peringatan Could not save image to file '%1'. Add &text Add &highlight &Copy link address &Select link address &Remove annotation qpdfview::PdfSettingsWidget Antialiasing: Text antialiasing: None Full Reduced Text hinting: Ignore paper color: Overprint preview: Solid Shaped Thin line mode: Splash Arthur Backend: qpdfview::PluginHandler Image (%1) Gambar (%1) Compressed (%1) Supported formats (%1) Could not decompress '%1'! Could not match file type of '%1'! Critical Could not load plug-in for file type '%1'! qpdfview::PrintDialog Fit to page: Page ranges: All pages Even pages Odd pages Page set: Single page Two pages Four pages Six pages Nine pages Sixteen pages Number-up: Bottom to top and left to right Bottom to top and right to left Left to right and bottom to top Left to right and top to bottom Right to left and bottom to top Right to left and top to bottom Top to bottom and left to right Top to bottom and right to left Number-up layout: Extended options qpdfview::PsSettingsWidget Graphics antialias bits: Text antialias bits: qpdfview::RecentlyClosedMenu &Recently closed &Clear list qpdfview::RecentlyUsedMenu Recently &used &Clear list qpdfview::SearchModel <b>%1</b> occurrences <b>%1</b> occurrences on page <b>%2</b> qpdfview::SearchableMenu Search for '%1'... qpdfview::SettingsDialog General &Behavior &Graphics &Interface &Shortcuts &Modifiers Defaults Defaults on current tab Mouse wheel modifiers Mouse button modifiers Open URL: Auto-refresh: Effective after restart. Track recently used: Keep recently closed: Restore tabs: Restore bookmarks: Restore per-file settings: min Save database interval: Synchronize presentation: Default Presentation screen: Synchronize split views: Zoom factor: Parallel search execution: ms None Highlight duration: Highlight color: Annotation color: '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number. Source editor: Use tiling: Keep obsolete pixmaps: Use device pixel ratio: Decorate pages: Decorate links: Decorate form fields: Background color: Paper color: Presentation background color: Pages per row: px Page spacing: Thumbnail spacing: Thumbnail size: Fit to viewport Document context menu: Tab context menu: Open in source editor: %1 MB Cache size: Minimal scrolling: Prefetch: Prefetch distance: Top Bottom Left Right Tab position: As needed Always Exit after last tab: Scrollable menus: Searchable menus: Zoom to selection: Never Settings Tab visibility: Spread tabs: New tab next to current tab: Recently used count: Recently closed count: Extended search dock: Toggle tool and menu bars with fullscreen: File tool bar: Edit tool bar: View tool bar: Use page label: Document title as tab title: Current page in window title: Instance name in window title: Synchronize outline view: Highlight current thumbnail: Limit thumbnails to results: Annotation overlay: Form field overlay: Zoom: Rotate: Scroll: Copy to clipboard: Add annotation: qpdfview::ShortcutHandler Action Key sequence Skip backward Skip forward Move up Move down Move left Move right qpdfview::TreeView &Expand all &Collapse all qpdfview-0.4.18/translations/qpdfview_it.ts0000644000000000000000000023407613516127411017206 0ustar 00000000000000 Model::ImageDocument Image (%1) Immagine (%1) Size Dimensioni Resolution Risoluzione Depth Profondità Format Formato Monochrome Monocromatica Indexed Indicizzata 32 bits RGB 32 bits RGB 32 bits ARGB 32 bits ARGB 16 bits RGB 16 bits RGB 24 bits RGB 24 bits RGB Model::PdfDocument Linearized Linearizzato Name Nome Type Tipo Embedded Incorporato Subset Sottoinsieme File File Yes PDF version Versione PDF Encrypted Cifrato No No Model::PdfPage Information Informazioni Version 0.20.1 or higher of the Poppler library is required to add or remove annotations. È necessaria la libreria Poppler versione 0.20.1 o successiva per aggiungere o rimuovere le annotazioni. Model::PsDocument Title Titolo Created for Creato per Creator Autore Creation date Data di creazione Format Formato Language level Livello linguaggio QObject An empty instance name is not allowed. Non è consentito un nome vuoto dell'istanza An empty search text is not allowed. Non è consentita una stringa di ricerca vuota. Unknown command-line option '%1'. Opzione per la riga di comando «%1» sconosciuta. Using '--instance' requires an instance name. L'uso di "--instance" richiede il nome di un'istanza Using '--instance' is not allowed without using '--unique'. L'uso di "--instance" non è consentito senza usare "--unique" An instance name must only contain the characters "[A-Z][a-z][0-9]_" and must not begin with a digit. Il nome dell'istanza deve contenere solo i caratteri "[A-Z][a-z][0-9]_" e non deve iniziare con una cifra. Using '--search' requires a search text. L'uso dell'opzione "--search" richiede una ricerca testuale- Could not prepare signal handler. Impossibile preparare il gestore di segnale QShortcut Shift Maiusc Ctrl Ctrl Alt Alt Shift and Ctrl Maiusc e Ctrl Shift and Alt Maiusc e Alt Ctrl and Alt Ctrl e Alt Right mouse button Pulsante destro del mouse Middle mouse button Pulsante centrale del mouse None Nessuna qpdfview::BookmarkDialog Bookmark Segnalibri Page: Pagina: Label: Etichetta: Comment: Commento: Modified: Ultima modifica: qpdfview::BookmarkMenu &Open &Apri Open in new &tab Apri in nuova &scheda &Remove bookmark &Rimuovi segnalibro qpdfview::Database Jump to page %1 Vai alla pagina %1 qpdfview::DocumentView Information Informazioni The source editor has not been set. Opening URL is disabled in the settings. Apertura degli URL disabilitata nelle impostazioni. Warning Avviso SyncTeX data for '%1' could not be found. Printing '%1'... Stampa di «%1»... Unlock %1 Sblocca %1 Password: Password: Page %1 Pagina %1 qpdfview::FileAttachmentAnnotationWidget Save... Salva... Save and open... Salva e apri... Save file attachment Salva allegato Warning Avviso Could not open file attachment saved to '%1'. Impossibile aprire l'allegato salvato in "%1". Could not save file attachment to '%1'. Impossibile salvare l'allegato in '%1' qpdfview::FontsDialog Fonts Tipi di carattere qpdfview::HelpDialog Help Aiuto help.html Please replace by file name of localized help if available, e.g. "help_fr.html". help_it.html Find previous Trova precedente Find next Trova successivo qpdfview::MainWindow Toggle tool bars Attiva/Disattiva barre degli strumenti Toggle menu bar Attiva/Disattiva barra dei menù Warning Avviso Could not open '%1'. Impossibile aprire «%1». Copy file path Select file path Close all tabs Chiudi tutte le schede Close all tabs but this one Chiudi tutte le schede tranne questa Close all tabs to the left Chiudi tutte le schede alla sinistra Close all tabs to the right Chiudi tutte le schede alla destra Open Apri Open in new tab Apri in nuova scheda Could not refresh '%1'. Impossibile aggiornare «%1». Save copy Salva una copia Could not save copy at '%1'. Impossibile salvare in «%1». Save as Salva come Move to instance Failed to access instance '%1'. Could not save as '%1'. Impossibile salvare come «%1» Could not print '%1'. Impossibile stampare «%1». Set first page Imposta prima pagina Select the first page of the body matter: Selezionare la prima pagina del documento: Jump to page Vai alla pagina Page: Pagina: Jump to page %1 Va alla pagina %1 About qpdfview Informazioni su qpdfview <p><b>qpdfview %1</b></p><p>qpdfview is a tabbed document viewer using Qt.</p><p>This version includes:<ul> <p><b>qpdfview %1</b></p><p>qpdfview è un visualizzatore di documenti a schede che usa Qt.</p><p>Questa versione include:<ul> <li>PDF support using Poppler %1</li> <li>Supporto PDF usando Poppler %1</li> <li>PS support using libspectre %1</li> <li>Supporto PS usando libspectre %1</li> <li>DjVu support using DjVuLibre %1</li> <li>Supporto DjVu usando DjVuLibre %1</li> <li>PDF support using Fitz %1</li> <li>Supporto PDF usando Fitz %1</li> <li>Printing support using CUPS %1</li> <li>Supporto per la stampa usando CUPS %1</li> &Edit bookmark Modifica s&egnalibro The document '%1' has been modified. Do you want to save your changes? Il documento «%1» è stato modificato. Salvare le modifiche? Page width Larghezza pagina Page size Dimensione pagina Match &case &Corrispondenza MAIUSCOLO/minuscolo Whole &words Parol_e intere Highlight &all E&videnzia tutto &Open... &Apri... Open in new &tab... Apri in nuova &scheda... Open &copy in new tab Apri _copia in nuova scheda Move to &instance... &Refresh Aggio&rna Information Informazioni Instance-to-instance communication requires D-Bus support. </ul><p>See <a href="https://launchpad.net/qpdfview">launchpad.net/qpdfview</a> for more information.</p><p>&copy; %1 The qpdfview developers</p> Save &as... Sa&lva come... Save &copy... &Print... Stam&pa... E&xit &Esci &Previous page &Pagina precedente &Next page Pagina &successiva &First page Pr&ima pagina &Last page &Ultima pagina &Set first page... Impo&sta prima pagina... &Jump to page... &Vai alla pagina... Jump &backward Va indietro Jump for&ward Va avanti &Search... C&erca... Find previous Trova precedente Find next Trova successivo Cancel search Annulla ricerca &Copy to clipboard &Copia negli appunti &Add annotation &Aggiungi nota Settings... Impostazioni... &Continuous &Continuo &Two pages &Due pagine Two pages &with cover page Due pagine co&mpresa la copertina &Multiple pages Pagine &multiple Right to left Da destra a sinistra Zoom &in A&umenta Zoom &out Ri&duci Original &size Dimen&sione originale Fit to page width Adatta alla larghezza della pagina Fit to page size Adatta alla dimensione della pagina Rotate &left Ruota a si&nistra Rotate &right &Ruota a destra Invert colors Inverti colori Convert to grayscale Converti in scale di grigi Trim margins Darken with paper color Lighten with paper color Fonts... Caratteri... &Fullscreen Sc&hermo intero &Presentation... &Presentazione... &Previous tab Scheda &precedente &Next tab S&cheda successiva &Close tab &Chiusi scheda Close &all tabs Chiudi &tutte le schede Close all tabs &but current tab Chiudi tutte le schede t&ranne questa Restore &most recently closed tab &Previous bookmark Segnalibro &precedente &Next bookmark Seg&nalibro successivo &Add bookmark &Aggiungi segnalibro Open copy in new &window Split view horizontally... Split view vertically... Close current view Thumb&nails Mi_niature Book&marks Se&gnalibri Composition &Remove bookmark &Rimuovi segnalibro Edit '%1' at %2,%3... Open containing &folder A&pri cartella contenitore &Save Remove all bookmarks Rimuovi tutti i segnalibri &Contents &Contenuti &About I&nformazioni &File &File &Edit &Modifica &View &Visualizza &Outline St&ruttura &Properties &Proprietà &Search &Cerca &Tool bars Barre degli s&trumenti &Docks &Elementi &Tabs &Schede &Bookmarks Segnali&bri &Help A&iuto Choose instance Instance: qpdfview::PageItem Go to page %1. Va alla pagina %1 Go to page %1 of file '%2'. Va alla pagina %1 del file «%2» Open '%1'. Apre «%1» Edit form field '%1'. Modifica campo del form «%1». Copy &text Copia &testo &Select text &Seleziona testo Copy &image Copia &immagine Save image to &file... Salva immagine in un &file... Save image to file Salva immagine in un file Warning Avviso Could not save image to file '%1'. Impossibile salvare l'immagine nel file «%1». Add &text Aggiungi &testo Add &highlight Aggiungi e&videnziazione &Copy link address &Copia indirizzo del collegamento &Select link address &Seleziona indirizzo del collegamento &Remove annotation &Rimuovi nota qpdfview::PdfSettingsWidget Antialiasing: Antialiasing: Text antialiasing: Antialiasing del testo: None Nessuna Full Completa Reduced Ridotta Text hinting: Approssimazione del testo: Ignore paper color: Overprint preview: Anteprima sovrastampa: Solid Solida Shaped Sagomata Thin line mode: Modalità per le linee sottili: Splash Splash Arthur Arthur Backend: Backend: qpdfview::PluginHandler Image (%1) Immagine (%1) Compressed (%1) Supported formats (%1) Could not decompress '%1'! Could not match file type of '%1'! Impossibile confrontare il tipo di file per "%1". Critical Attenzione Could not load plug-in for file type '%1'! Impossibile caricare il plugin per il tipo di file "%1". qpdfview::PrintDialog Fit to page: Adattare alla pagina: Page ranges: Intervalli di pagine: All pages Tutte le pagine Even pages Pagine pari Odd pages Pagine dispari Page set: Pagine da stampare: Single page Pagina singola Two pages Due pagine Four pages Quattro pagine Six pages Sei pagine Nine pages NOve pagine Sixteen pages Sedici pagine Number-up: Number-up: Bottom to top and left to right Dal basso all'alto e da sinistra a destra Bottom to top and right to left Dal basso all'alto e da destra a sinistra Left to right and bottom to top Da sinistra a destra e dal basso all'alto Left to right and top to bottom Da sinistra a destra e dall'alto al basso Right to left and bottom to top Da destra a sinistra e dal basso all'alto Right to left and top to bottom Da destra a sinistra e dall'alto al basso Top to bottom and left to right Dall'alto al basso e da sinistra a destra Top to bottom and right to left Dall'alto al basso e da destra a sinistra Number-up layout: Disposizione number-up: Extended options Opzioni estese qpdfview::PsSettingsWidget Graphics antialias bits: Bit antialias grafica: Text antialias bits: Bit antialias testo: qpdfview::RecentlyClosedMenu &Recently closed Chiusi di &recente &Clear list Pulis&ci elenco qpdfview::RecentlyUsedMenu Recently &used &Usati di recente &Clear list Pulis&ci elenco qpdfview::SearchModel <b>%1</b> occurrences Corrispondenze <b>%1</b> <b>%1</b> occurrences on page <b>%2</b> Corrispondenze sulla pagina <b>%2</b>: <b>%1</b> qpdfview::SearchableMenu Search for '%1'... Ricerca di "%1"... qpdfview::SettingsDialog General Generali &Behavior Co&mportamento &Graphics &Grafica &Interface &Interfaccia &Shortcuts &Scorciatoie &Modifiers &Modificatori Defaults Predefiniti Defaults on current tab Ripristina i valori predefiniti per la scheda attuale Mouse wheel modifiers Mouse button modifiers Open URL: Aprire URL: Auto-refresh: Aggiornare automaticamente: Effective after restart. Effettive al riavvio. Track recently used: Memorizzare usati di recente: Keep recently closed: Mantenere chiusi di recente: Restore tabs: Ripristinare schede: Restore bookmarks: Ripristinare segnalibri: Restore per-file settings: Modificare impostazioni per singoli fie: min min Save database interval: Salva intervallo del database: Synchronize presentation: Sincronizzare presentazione: Default Predefinito Presentation screen: Schermo per presentazione: Synchronize split views: Zoom factor: Fattore di zoom: Parallel search execution: ms ms None Nessuna Highlight duration: Durata dell'evidenziatore: Highlight color: Colore dell'evidenziatore: Annotation color: Colore dell'annotazione: '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number. «%1» viene sostituito dal percorso assoluto del file. «%2» relativamente a «%3» viene sostituito dalla riga relativamente al numero della colonna. Source editor: Editor sorgente: Use tiling: Usa piastrelle: Keep obsolete pixmaps: Mantenere pixmap obsoleti: Use device pixel ratio: Usare il rapporto pixel del dispositivo: Decorate pages: Decorare pagine: Decorate links: Decorare collegamenti: Decorate form fields: Decorare campo del form: Background color: Colore di fondo: Paper color: Colore della carta: Presentation background color: Colore sfondo presentazione: Pages per row: Pagine per riga: px px Page spacing: Spaziatura pagina: Thumbnail spacing: Spaziatura miniatura: Thumbnail size: Dimensione miniatura: Fit to viewport Document context menu: Tab context menu: Open in source editor: %1 MB %1 MB Cache size: Dimensione cache: Minimal scrolling: Prefetch: Prefetch: Prefetch distance: Distanza di prefetch: Top In alto Bottom In basso Left A sinistra Right A destra Tab position: Posizione scheda: As needed Quando necessaria Always Sempre Exit after last tab: Uscire dopo l'ultima sceda: Scrollable menus: Menù scorrevoli: Searchable menus: Ricerca nei menù: Zoom to selection: Ingrandimento alla sezione: Never Mai Settings Impostazioni Tab visibility: Visibilità scheda: Spread tabs: Mostra schede: New tab next to current tab: Nuova scheda dopo quella attuale: Recently used count: Conteggio usati di recente: Recently closed count: Conteggio chiusi di recente: Extended search dock: Elemento di ricerca esteso: Toggle tool and menu bars with fullscreen: Attiva/Disattiva barre dei menù e degli strumenti a schermo intero: File tool bar: Barra degli strumenti «File»: Edit tool bar: Barra degli strumenti «Modifica»: View tool bar: Barra degli strumenti «Visualizza»: Use page label: Usare etichetta della pagina: Document title as tab title: Titolo del documento come titolo della scheda: Current page in window title: Pagina attuale nel titolo della finestra: Instance name in window title: Nome dell'istanza nel titolo della finestra: Synchronize outline view: Sincronizzare vista struttura: Highlight current thumbnail: Evidenziare scheda corrente: Limit thumbnails to results: Limitare le miniature nei risultati: Annotation overlay: Motivo annotazione: Form field overlay: Motivo campo del form: Zoom: Ingrandimento: Rotate: Rotazione: Scroll: Scorrimento: Copy to clipboard: Copia negli appunti: Add annotation: Aggiungi nota: qpdfview::ShortcutHandler Action Azione Key sequence Scorciatoia da tastiera Skip backward Salta indietro Skip forward Salta avanti Move up Sposta su Move down Sposta giù Move left Sposta a sinistra Move right Sposta a destra qpdfview::TreeView &Expand all &Espandi tutto &Collapse all &Comprimi tutto qpdfview-0.4.18/translations/qpdfview_ja.ts0000644000000000000000000024163613516127411017164 0ustar 00000000000000 Japanese <ja@li.org> Shinichirou Yamada <yamada_strong_yamada_nice_64bit@yahoo.co.jp> 2018-12-17 17:45+0000 2018-05-27 11:51+0000 qpdfview FULL NAME <EMAIL@ADDRESS> 2018-12-18 05:38+0000 # Japanese translation for qpdfview # Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015 # This file is distributed under the same license as the qpdfview package. # FIRST AUTHOR <EMAIL@ADDRESS>, 2015. # Project-Id-Version,Report-Msgid-Bugs-To,POT-Creation-Date,PO-Revision-Date,Last-Translator,Language-Team,MIME-Version,Content-Type,Content-Transfer-Encoding,X-Launchpad-Export-Date,X-Qt-Contexts Model::ImageDocument Image (%1) 画像(%1) Size 寸法 Resolution 解像度 Depth 深度 Format 形式 Monochrome モノクロ Indexed インデックス済 32 bits RGB 32ビットRGB 32 bits ARGB 32ビットARGB 16 bits RGB 16ビットRGB 24 bits RGB 24ビットRGB Model::PdfDocument Linearized 線形化済 Name 名称 Type 種類 Embedded 埋込済 Subset 一部分 File ファイル Yes はい PDF version PDFバージョン Encrypted 暗号化済 No いいえ Model::PdfPage Information 情報 Version 0.20.1 or higher of the Poppler library is required to add or remove annotations. 註釈の追加や削除をするには、第0.20.1版以降のPopplerライブラリが必要です。 Model::PsDocument Title 表題 Created for Creator 作成者 Creation date 作成日時 Format 形式 Language level 言語レベル QObject An empty instance name is not allowed. インスタンス名を空にしておくことはできません。 An empty search text is not allowed. 検索文字列は空であってはなりません。 Unknown command-line option '%1'. 「%1」というコマンドラインオプションはありません。 Using '--instance' requires an instance name. 「--instance」を使うにはインスタンス名も必要です。 Using '--instance' is not allowed without using '--unique'. 「--instance」は「--unique」とともに使わなくてはなりません。 An instance name must only contain the characters "[A-Z][a-z][0-9]_" and must not begin with a digit. インスタンス名には「[A-Z][a-z][0-9]_」以外の文字は使えません。また数字から始まってはなりません。 Using '--search' requires a search text. 「--search」を使うには検索文字列も必要です。 Could not prepare signal handler. シグナルハンドラを用意できませんでした。 QShortcut Shift Shift Ctrl Ctrl Alt Alt Shift and Ctrl ShiftおよびCtrl Shift and Alt ShiftおよびAlt Ctrl and Alt CtrlおよびAlt Right mouse button 右マウスボタン Middle mouse button 中央マウスボタン None なし qpdfview::BookmarkDialog Bookmark しおり Page: ページ: Label: ラベル: Comment: コメント: Modified: 更新日時: qpdfview::BookmarkMenu &Open 開く(&O) Open in new &tab 新規タブで開く(&T) &Remove bookmark しおりを外す(&R) qpdfview::Database Jump to page %1 %1ページヘ跳ぶ qpdfview::DocumentView Information 情報 The source editor has not been set. ソースエディタが設定されていません。 Opening URL is disabled in the settings. URLを開くことは不可に設定されています。 Warning 警告 SyncTeX data for '%1' could not be found. 「%1」に対応するSyncTeXデータは見つかりませんでした。 Printing '%1'... 「%1」を印刷中です... Unlock %1 %1を解除 Password: パスワード: Page %1 %1 ページ qpdfview::FileAttachmentAnnotationWidget Save... 保存... Save and open... 保存して開く... Save file attachment ファイル添付物を保存 Warning 警告 Could not open file attachment saved to '%1'. 「%1」に保存されているファイル保存物を開くことができませんでした。 Could not save file attachment to '%1'. ファイル添付物を「%1」に保存することができませんでした。 qpdfview::FontsDialog Fonts フォント qpdfview::HelpDialog Help ヘルプ help.html Please replace by file name of localized help if available, e.g. "help_fr.html". help.html Find previous 前を検索 Find next 次を検索 qpdfview::MainWindow Toggle tool bars ツールバーを入切 Toggle menu bar メニューバーを入切 Warning 警告 Could not open '%1'. 「%1」を開くことができませんでした。 Copy file path ファイルパスをコピー Select file path ファイルパスを選択 Close all tabs 全てのタブを閉じる Close all tabs but this one これ以外のタブを全て閉じる Close all tabs to the left 左側のタブを全て閉じる Close all tabs to the right 右側のタブを全て閉じる Open 開く Open in new tab 新規タブで開く Could not refresh '%1'. 「%1」を再読込できませんでした。 Save copy コピーを保存 Could not save copy at '%1'. コピーを「%1」に保存することができませんでした。 Save as 名前を付けて保存 Move to instance インスタンスへ移動 Failed to access instance '%1'. インスタンス「%1」へのアクセスに失敗しました。 Could not save as '%1'. 「%1」として保存することができませんでした。 Could not print '%1'. 「%1」を印刷することができませんでした。 Set first page 最初のページを設定 Select the first page of the body matter: 本体の最初のページを選択してください: Jump to page 指定ページへ跳ぶ Page: ページ: Jump to page %1 %1ページヘ跳ぶ About qpdfview qpdfviewについて <p><b>qpdfview %1</b></p><p>qpdfview is a tabbed document viewer using Qt.</p><p>This version includes:<ul> <p><b>qpdfview %1</b></p><p>qpdfviewはQtを使用したタブ式文書ビューアです。</p><p>この版は下記のサポートを提供しています:<ul> <li>PDF support using Poppler %1</li> <li>PDFサポート(Poppler %1を使用)</li> <li>PS support using libspectre %1</li> <li>PSサポート(libspectre %1を使用)</li> <li>DjVu support using DjVuLibre %1</li> <li>DjVuサポート(DjVuLibre %1を使用)</li> <li>PDF support using Fitz %1</li> <li>PDFサポート(Fitz %1を使用)</li> <li>Printing support using CUPS %1</li> <li>印刷サポート(CUPS %1を使用)</li> &Edit bookmark しおりを編集(&E) The document '%1' has been modified. Do you want to save your changes? 文書「%1」は修正されています。変更分を保存しますか? Page width ページ幅 Page size ページ寸法 Match &case 大文字と小文字を区別(&C) Whole &words 単語全体(&W) Highlight &all 全て強調(&A) &Open... 開く(&O)... Open in new &tab... 新規タブに開く(&T)... Open &copy in new tab 新規タブにコピーを開く(&C) Move to &instance... インスタンスへ移動(&I)... &Refresh 再読込(&R) Information 情報 Instance-to-instance communication requires D-Bus support. インスタンス間のやり取りにはD-Busサポートが必要です。 </ul><p>See <a href="https://launchpad.net/qpdfview">launchpad.net/qpdfview</a> for more information.</p><p>&copy; %1 The qpdfview developers</p> </ul><p>より詳しい情報は<a href="https://launchpad.net/qpdfview">launchpad.net/qpdfview</a>をご覧ください。</p><p>&copy; %1 The qpdfview developers</p> Save &as... 名前を付けて保存(&A)... Save &copy... コピーを保存(&C)... &Print... 印刷(&P)... E&xit 終了(&X) &Previous page 前ページ(&P) &Next page 次ページ(&N) &First page 最初のページ(&F) &Last page 最後のページ(&L) &Set first page... 最初のページを設定(&S)... &Jump to page... 指定ページへ跳ぶ(&J)... Jump &backward 後ろに跳ぶ(&B) Jump for&ward 前に跳ぶ(&W) &Search... 検索(&S)... Find previous 前を検索 Find next 次を検索 Cancel search 検索を取り消す &Copy to clipboard クリップボードにコピー(&C) &Add annotation 註釈を追加(&A) Settings... 設定... &Continuous 連続表示(&C) &Two pages 見開き(&T) Two pages &with cover page 見開き(表紙付き)(&W) &Multiple pages 複数ページ(&M) Right to left 右から左 Zoom &in 拡大(&I) Zoom &out 縮小(&O) Original &size 原寸大(&S) Fit to page width ページ幅に合わせる Fit to page size ページ寸法に合わせる Rotate &left 左に回転(&L) Rotate &right 右に回転(&R) Invert colors 色を反転 Convert to grayscale グレースケールに変換 Trim margins 余白を落とす Darken with paper color 紙の色で暗くする Lighten with paper color 紙の色で明るくする Fonts... フォント... &Fullscreen 全画面表示(&F) &Presentation... プレゼンテーション(&P)... &Previous tab 前のタブ(&P) &Next tab 次のタブ(&N) &Close tab タブを閉じる(&C) Close &all tabs 全てのタブを閉じる(&A) Close all tabs &but current tab 現在のタブ以外全て閉じる(&B) Restore &most recently closed tab 直前に閉じたタブを復元(&M) &Previous bookmark 前のしおり(&P) &Next bookmark 次のしおり(&N) &Add bookmark しおりを付ける(&A) Open copy in new &window 新規ウィンドウにコピーを開く(&W) Split view horizontally... ビューを左右に分割... Split view vertically... ビューを上下に分割... Close current view 現在のビューを閉じる Thumb&nails サムネイル(&N) Book&marks しおり(&M) Composition 合成 &Remove bookmark しおりを外す(&R) Edit '%1' at %2,%3... 「%1」の%2行%3列を編集... Open containing &folder 文書のあるフォルダを開く(&F) &Save 保存(&S) Remove all bookmarks しおりを全て外す &Contents 目次(&C) &About qpdfviewについて(&A) &File ファイル(&F) &Edit 編集(&E) &View 表示(&V) &Outline 概要(&O) &Properties 設定(&P) &Search 検索(&S) &Tool bars ツールバー(&T) &Docks ドック(&D) &Tabs タブ(&T) &Bookmarks しおり(&B) &Help ヘルプ(&H) Choose instance インスタンスを選択 Instance: インスタンス: qpdfview::PageItem Go to page %1. %1ページに跳びます。 Go to page %1 of file '%2'. ファイル「%2」の%1ページに跳びます。 Open '%1'. 「%1」を開きます。 Edit form field '%1'. フォームフィールド「%1」を編集します。 Copy &text 文をコピー(&T) &Select text 文を選択(&S) Copy &image 画像をコピー(&I) Save image to &file... 画像をファイルに保存(&F)... Save image to file 画像をファイルに保存 Warning 警告 Could not save image to file '%1'. 画像をファイル「%1」に保存できませんでした。 Add &text 文を追加(&T) Add &highlight 強調部を追加(&H) &Copy link address リンクアドレスをコピー(&C) &Select link address リンクアドレスを選択(&S) &Remove annotation 註釈を削除(&R) qpdfview::PdfSettingsWidget Antialiasing: アンチエイリアス: Text antialiasing: テキストのアンチエイリアス: None なし Full 完全 Reduced 軽減 Text hinting: テキストのヒンティング: Ignore paper color: ページ色を無視: Overprint preview: 重ね刷りをプレビュー: Solid 単色 Shaped シェイプ Thin line mode: 細線モード: Splash Splash Arthur Arthur Backend: バックエンド: qpdfview::PluginHandler Image (%1) 画像(%1) Compressed (%1) 圧縮済(%1) Supported formats (%1) サポート形式(%1) Could not decompress '%1'! 「%1」を展開できませんでした! Could not match file type of '%1'! 「%1」のファイル形式に一致しませんでした! Critical 致命的 Could not load plug-in for file type '%1'! ファイル形式「%1」のプラグインを読み込めませんでした! qpdfview::PrintDialog Fit to page: ページに合わせる: Page ranges: ページ範囲: All pages 全ページ Even pages 偶数ページ Odd pages 奇数ページ Page set: ページセット: Single page 1ページ Two pages 2ページ Four pages 4ページ Six pages 6ページ Nine pages 9ページ Sixteen pages 16ページ Number-up: 連番付け: Bottom to top and left to right 下から上および左から右 Bottom to top and right to left 下から上および右から左 Left to right and bottom to top 左から右および下から上 Left to right and top to bottom 左から右および上から下 Right to left and bottom to top 右から左および下から上 Right to left and top to bottom 右から左および上から下 Top to bottom and left to right 上から下および左から右 Top to bottom and right to left 上から下および右から左 Number-up layout: 連番付けのレイアウト: Extended options 拡張オプション qpdfview::PsSettingsWidget Graphics antialias bits: 画像アンチエイリアスビット: Text antialias bits: 文字アンチエイリアスビット: qpdfview::RecentlyClosedMenu &Recently closed 最近閉じたもの(&R) &Clear list 一覧をクリア(&C) qpdfview::RecentlyUsedMenu Recently &used 最近使用したもの(&U) &Clear list 一覧をクリア(&C) qpdfview::SearchModel <b>%1</b> occurrences <b>%1</b> 件 <b>%1</b> occurrences on page <b>%2</b> <b>%2</b>ページに<b>%1</b>件 qpdfview::SearchableMenu Search for '%1'... 「%1」を検索... qpdfview::SettingsDialog General 汎用 &Behavior 挙動(&B) &Graphics 画像(&G) &Interface インタフェース(&I) &Shortcuts ショートカット(&S) &Modifiers 修飾キー(&M) Defaults 既定 Defaults on current tab このタブの既定値 Mouse wheel modifiers マウスホイール修飾キー Mouse button modifiers マウスボタン修飾キー Open URL: URLを開く: Auto-refresh: 自動更新: Effective after restart. 再起動後に有効になります。 Track recently used: 最近使用したものを追跡: Keep recently closed: 最近閉じたものを保持: Restore tabs: タブを復元: Restore bookmarks: しおりを復元: Restore per-file settings: ファイル毎の設定を復元: min Save database interval: データベース保存間隔: Synchronize presentation: プレゼンテーションを同期: Default 既定 Presentation screen: プレゼンテーション画面: Synchronize split views: 分割ビューを同期: Zoom factor: 拡大比: Parallel search execution: 並行検索の実行: ms ミリ秒 None なし Highlight duration: 強調する時間: Highlight color: 強調表示の色: Annotation color: 註釈の色: '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number. 「%1」は絶対ファイルパスで置き換えられます。「%2」および「%3」は、それぞれ行番号と列番号で置き換えられます。 Source editor: ソースエディタ: Use tiling: タイル配置を使用: Keep obsolete pixmaps: 旧いピックスマップを保持: Use device pixel ratio: デバイスのピクセル比を使用: Decorate pages: ページを装飾: Decorate links: リンクを装飾: Decorate form fields: フォームフィールドを装飾: Background color: 背景色: Paper color: 紙の色: Presentation background color: プレゼンテーション背景色: Pages per row: 行あたりページ数: px ピクセル Page spacing: ページ間隔: Thumbnail spacing: サムネイル間隔: Thumbnail size: サムネイル寸法: Fit to viewport ビューポートに合わせる Document context menu: 文書のコンテキストメニュー: Tab context menu: タブのコンテキストメニュー: Open in source editor: ソースエディタで開く: %1 MB %1 MB Cache size: キャッシュ容量: Minimal scrolling: 最小限のスクロール: Prefetch: 事前読込: Prefetch distance: 事前読込数: Top Bottom Left Right Tab position: タブの位置: As needed 必要時 Always 常時 Exit after last tab: 最後のタブを閉じたら終了: Scrollable menus: スクロール可能なメニュー: Searchable menus: 検索可能なメニュー: Zoom to selection: 選択部を拡大: Never なし Settings 設定 Tab visibility: タブの可視性: Spread tabs: タブを広げる: New tab next to current tab: 現タブの隣に新規タブ: Recently used count: 最近使用したものの数: Recently closed count: 最近閉じたものの数: Extended search dock: 拡張検索ドック: Toggle tool and menu bars with fullscreen: 全画面表示でのツールバーとメニューバーを入切: File tool bar: ファイルツールバー: Edit tool bar: 編集ツールバー: View tool bar: 表示ツールバー: Use page label: ページラベルを使用: Document title as tab title: 文書表題をタブに表示: Current page in window title: 現ページをタイトルバーに表示: Instance name in window title: インスタンス名をタイトルバーに表示: Synchronize outline view: 概要表示を同期: Highlight current thumbnail: 現サムネイルを強調: Limit thumbnails to results: サムネイルを検索結果に限定: Annotation overlay: 註釈の重ね置き: Form field overlay: フォームフィールドの重ね置き: Zoom: 表示倍率: Rotate: 回転: Scroll: スクロール: Copy to clipboard: クリップボードにコピー: Add annotation: 註釈を追加: qpdfview::ShortcutHandler Action 動作 Key sequence キーシーケンス Skip backward 後ろに跳ぶ Skip forward 前に跳ぶ Move up 上へ移動 Move down 下へ移動 Move left 左へ移動 Move right 右へ移動 qpdfview::TreeView &Expand all 全て展開(&E) &Collapse all 全て畳む(&C) MainWindow &Save copy... コピーを保存(&S) qpdfview-0.4.18/translations/qpdfview_kk.ts0000644000000000000000000024150513516127411017172 0ustar 00000000000000 Model::ImageDocument Image (%1) Size Resolution Depth Format Пішімі Monochrome Indexed 32 bits RGB 32 bits ARGB 16 bits RGB 24 bits RGB Model::PdfDocument Linearized Name Аты Type Түрі Embedded Енгізілген Subset Ішкі жиын File Файл Yes Иә PDF version Encrypted No Жоқ Model::PdfPage Information Ақпараты Version 0.20.1 or higher of the Poppler library is required to add or remove annotations. Аңдатпаларды қосу не өшіру үшін Poppler библиотекасының 0.20.1 не одан жоғары нұсқасы керек. Model::PsDocument Title Атауы Created for Үшін жасалған Creator Жасаған Creation date Жасалған күні Format Пішімі Language level Тіл деңгейі QObject An empty instance name is not allowed. Экземплярдың бос атына рұқсат жоқ. An empty search text is not allowed. Іздеу үшін мәтін бос болмауы тиіс. Unknown command-line option '%1'. Белгісіз '%1' командалық жол опциясы. Using '--instance' requires an instance name. '--instance' опциясын қолдану экземпляр атын талап етеді. Using '--instance' is not allowed without using '--unique'. '--instance' опциясын '--unique' опциясыз қолдану рұқсат етілмеген. An instance name must only contain the characters "[A-Z][a-z][0-9]_" and must not begin with a digit. Using '--search' requires a search text. '--search' опциясы іздеу үшін мәтінді талап етеді. Could not prepare signal handler. Сигнал талдаушысын дайындау мүмкін емес. QShortcut Shift Shift Ctrl Ctrl Alt Alt Shift and Ctrl Shift және Ctrl Shift and Alt Shift және Alt Ctrl and Alt Ctrl және Alt Right mouse button Тышқанның оң жақ батырмасы Middle mouse button Тышқанның орта батырмасы None Ешнәрсе qpdfview::BookmarkDialog Bookmark Бетбелгі Page: Бет: Label: Белгі: Comment: Түсіндірме: Modified: Түзетілген: qpdfview::BookmarkMenu &Open А&шу Open in new &tab Жаңа бе&тте ашу &Remove bookmark Бетбелгіні ө&шіру qpdfview::Database Jump to page %1 %1 бетіне өту qpdfview::DocumentView Information Ақпараты The source editor has not been set. Opening URL is disabled in the settings. Сілтемелерді ашу мүмкіндігі баптауларда сөндірілген. Warning Ескерту SyncTeX data for '%1' could not be found. Printing '%1'... '%1' баспаға шығару... Unlock %1 %1 босату Password: Пароль: Page %1 Бет %1 qpdfview::FileAttachmentAnnotationWidget Save... Сақтау... Save and open... Сақтау және ашу... Save file attachment Файл салынымын сақтау Warning Ескерту Could not open file attachment saved to '%1'. '%1' жерінде сақталған файл салынымын ашу мүмкін емес. Could not save file attachment to '%1'. Файл салынымын '%1' жеріне сақтау мүмкін емес. qpdfview::FontsDialog Fonts Қаріптер qpdfview::HelpDialog Help Көмек help.html Please replace by file name of localized help if available, e.g. "help_fr.html". Find previous Алдыңғысын табу Find next Келесісін табу qpdfview::MainWindow Toggle tool bars Саймандар панельдерін көрсету/жасыру Toggle menu bar Мәзір жолағын көрсету/жасыру Warning Ескерту Could not open '%1'. '%1' ашу мүмкін емес. Copy file path Select file path Close all tabs Барлық беттерді жабу Close all tabs but this one Осыдан басқа барлық бетті жабу Close all tabs to the left Сол жақта барлық бетті жабу Close all tabs to the right Оң жақта барлық бетті жабу Open Ашу Open in new tab Жаңа бетте ашу Could not refresh '%1'. '%1' жаңарту мүмкін емес. Save copy Көшірмесін сақтау Could not save copy at '%1'. Көшірмені '%1' жерінде сақтау мүмкін емес. Save as Қалайша сақтау Move to instance Failed to access instance '%1'. Could not save as '%1'. '%1' ретінде сақтау мүмкін емес. Could not print '%1'. '%1' баспаға шығару мүмкін емес. Set first page Бірінші бетті орнату Select the first page of the body matter: Jump to page Бетке өту Page: Бет: Jump to page %1 %1 бетіне өту About qpdfview qpdfview туралы <p><b>qpdfview %1</b></p><p>qpdfview is a tabbed document viewer using Qt.</p><p>This version includes:<ul> <p><b>qpdfview %1</b></p><p>qpdfview - құжаттарды көрсетушісі, Qt қолданады.</p><p>Бұл нұсқада бар:<ul> <li>PDF support using Poppler %1</li> <li>PDF қолдауы Poppler %1 негізінде</li> <li>PS support using libspectre %1</li> <li>PS қолдауы libspectre %1 негізінде</li> <li>DjVu support using DjVuLibre %1</li> <li>DjVu қолдауы DjVuLibre %1 негізінде</li> <li>PDF support using Fitz %1</li> <li>PDF қолдауы Fitz %1 негізінде</li> <li>Printing support using CUPS %1</li> <li>Баспаға шығару CUPS %1 негізінде</li> &Edit bookmark Бетбелгіні түз&ету The document '%1' has been modified. Do you want to save your changes? '%1' құжаты өзгертілген. Өзгерістерді сақтау керек пе? Page width Бет ені Page size Бет өлшемдері Match &case Ре&гистрін ескеру Whole &words Highlight &all Б&арлығын түспен ерекшелеу &Open... А&шу... Open in new &tab... Жаңа бе&тте ашу... Open &copy in new tab Move to &instance... &Refresh Жаңа&рту Information Ақпараты Instance-to-instance communication requires D-Bus support. </ul><p>See <a href="https://launchpad.net/qpdfview">launchpad.net/qpdfview</a> for more information.</p><p>&copy; %1 The qpdfview developers</p> Save &as... Қала&йша сақтау... Save &copy... &Print... Бас&паға шығару... E&xit &Шығу &Previous page А&лдыңғы бет &Next page К&елесі бет &First page &Бірінші бет &Last page С&оңғы бет &Set first page... &Jump to page... Б&етке өту... Jump &backward Ар&тқа секіру Jump for&ward А&лға секіру &Search... І&здеу... Find previous Алдыңғысын табу Find next Келесісін табу Cancel search Іздеуден бас тарту &Copy to clipboard Алмасу буферіне &көшіру &Add annotation Аңдатпаны қ&осу Settings... Баптаулар... &Continuous Ү&зіліссіз &Two pages &Екі бет Two pages &with cover page Екі бет, мұқабамен &бірге &Multiple pages Бірн&еше бет Right to left Zoom &in Үлке&йту Zoom &out Кі&шірейту Original &size Бастапқы ө&лшемі Fit to page width Бет енімен сыйдыру Fit to page size Бет өлшемімен сыйдыру Rotate &left &Солға бұру Rotate &right &Оңға бұру Invert colors Түстерді терістеу Convert to grayscale Trim margins Darken with paper color Lighten with paper color Fonts... Қаріптер... &Fullscreen Толық &экранға &Presentation... &Презентация... &Previous tab А&лдыңғы бет &Next tab К&елесі бет &Close tab Бетті жа&бу Close &all tabs Б&арлық беттерді жабу Close all tabs &but current tab Ағ&ымдағы беттен барлық басқа беттерді жабу Restore &most recently closed tab &Previous bookmark Ал&дыңғы бетбелгі &Next bookmark Ке&лесі бетбелгі &Add bookmark Бе&тбелгіні қосу Open copy in new &window Split view horizontally... Split view vertically... Close current view Thumb&nails Book&marks Composition &Remove bookmark Бетбелгіні ө&шіру Edit '%1' at %2,%3... Open containing &folder &Save Remove all bookmarks Барлық бетбелгілерді өшіру &Contents Құра&масы &About &Осы туралы &File &Файл &Edit &Түзету &View Тү&рі &Outline &Мазмұны &Properties Қас&иеттері &Search І&здеу &Tool bars &Саймандар панельдері &Docks &Бекіткіштер &Tabs Б&еттер &Bookmarks &Бетбелгілер &Help &Көмек Choose instance Instance: qpdfview::PageItem Go to page %1. %1 бетке өту. Go to page %1 of file '%2'. %1 бетке өту, '%2' файлы ішінде. Open '%1'. %1' ашу. Edit form field '%1'. '%1' форма өрісін түзету. Copy &text Мә&тінін көшіріп алу &Select text Copy &image Сурет&ті көшіру Save image to &file... Суретті &файлға сақтау... Save image to file Суретті файлға сақтау Warning Ескерту Could not save image to file '%1'. Суретті '%1' файлын сақтау мүмкін емес. Add &text Мә&тінді қосу Add &highlight Түспен ер&екшелеуді қосу &Copy link address &Select link address &Remove annotation Аңдатпаны ө&шіру qpdfview::PdfSettingsWidget Antialiasing: Тегістеу: Text antialiasing: Мәтінді тегістеу: None Ешнәрсе Full Толық Reduced Кішірейтілген Text hinting: Ignore paper color: Overprint preview: Solid Бүтін Shaped Пішінделген Thin line mode: Жұқа сызық режимі: Splash Arthur Backend: qpdfview::PluginHandler Image (%1) Compressed (%1) Supported formats (%1) Could not decompress '%1'! Could not match file type of '%1'! Critical Критикалық Could not load plug-in for file type '%1'! qpdfview::PrintDialog Fit to page: Бетке сыйдыру: Page ranges: Беттер ауқымы: All pages Барлық беттер Even pages Жұп беттер Odd pages Тақ беттер Page set: Баспаға шығарылатын беттер: Single page Бір бет Two pages Екі бет Four pages Төрт бет Six pages Алты бет Nine pages Тоғыз бет Sixteen pages Он алты бет Number-up: Bottom to top and left to right Төменнен жоғарыға, солдан оңға Bottom to top and right to left Төменнен жоғарыға, оңнан солға Left to right and bottom to top Солдан оңға, төменнен жоғарыға Left to right and top to bottom Солдан оңға, жоғарыдан төмен Right to left and bottom to top Оңнан солға, төменнен жоғарыға Right to left and top to bottom Оңнан солға, жоғарыдан төмен Top to bottom and left to right Жоғарыдан төмен, солдан оңға Top to bottom and right to left Жоғарыдан төмен, оңнан солға Number-up layout: Беттер реті: Extended options Кеңейтілген баптаулар qpdfview::PsSettingsWidget Graphics antialias bits: Text antialias bits: qpdfview::RecentlyClosedMenu &Recently closed &Clear list Тізімді та&зарту qpdfview::RecentlyUsedMenu Recently &used Соңғы қ&олданылған &Clear list Тізімді та&зарту qpdfview::SearchModel <b>%1</b> occurrences <b>%1</b> occurrences on page <b>%2</b> qpdfview::SearchableMenu Search for '%1'... qpdfview::SettingsDialog General Жалпы &Behavior Мінез-құл&ығы &Graphics &Графика &Interface &Интерфейс &Shortcuts Жа&рлықтар &Modifiers &Түрлендіргіштер Defaults Бастапқы мәндер Defaults on current tab Mouse wheel modifiers Mouse button modifiers Open URL: Сілтемені ашу: Auto-refresh: Автожаңарту: Effective after restart. Қайта қосудан кейін іске асады. Track recently used: Жақында қолданылғанды бақылау: Keep recently closed: Restore tabs: Беттерді қалпына келтіру: Restore bookmarks: Бетбелгілерді қалпына келтіру: Restore per-file settings: Жеке файлдарға қатысты баптауларды қалпына келтіру: min Save database interval: Synchronize presentation: Презентацияны синхрондау: Default Бастапқы Presentation screen: Презентация экраны Synchronize split views: Zoom factor: Parallel search execution: ms None Ешнәрсе Highlight duration: Түспен ерекшелеу ұзақтығы: Highlight color: Түспен ерекшелеу түсі: Annotation color: Аңдатпа түсі: '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number. '%1' файлға дейінгі абсолютті орналасу жолымен алмастырылады. '%2' және '%3' сәйкесінше жол және баған нөмерімен алмастырылады. Source editor: Бастапқы код түзеткіші: Use tiling: Keep obsolete pixmaps: Use device pixel ratio: Decorate pages: Бет қоршауы: Decorate links: Сілтемелерді ерекшелеу: Decorate form fields: Формалар өрістерін ерекшелеу: Background color: Фон түсі: Paper color: Қағаз түсі: Presentation background color: Pages per row: Бір жолдағы беттер саны px Page spacing: Беттер аралығы: Thumbnail spacing: Үлгілер аралығы: Thumbnail size: Үлгі өлшемі: Fit to viewport Document context menu: Tab context menu: Open in source editor: %1 MB %1 МБ Cache size: Кэш өлшемі: Minimal scrolling: Prefetch: Алдын-ала жүктеу: Prefetch distance: Алдын-ала жүктеу қашықтығы: Top Жоғары Bottom Төмен Left Сол жақ Right Оң жақ Tab position: Беттердің орналасуы: As needed Керек болған кезде Always Әрқашан Exit after last tab: Scrollable menus: Searchable menus: Zoom to selection: Never Ешқашан Settings Tab visibility: Бет көрінуі: Spread tabs: New tab next to current tab: Жаңа бетті ағымдағы беттен кейін ашу: Recently used count: Жақында қолданылған құжаттар саны: Recently closed count: Extended search dock: Toggle tool and menu bars with fullscreen: File tool bar: Файл саймандар панелі: Edit tool bar: Түзету саймандар панелі: View tool bar: Түрі саймандар панелі: Use page label: Document title as tab title: Current page in window title: Терезе атауында ағымдағы бет: Instance name in window title: Synchronize outline view: Highlight current thumbnail: Ағымдағы үлгіні түспен ерекшелеу: Limit thumbnails to results: Annotation overlay: Form field overlay: Zoom: Масштаб: Rotate: Бұру: Scroll: Айналдыру: Copy to clipboard: Алмасу буферіне көшіру: Add annotation: Аңдатпаны қосу: qpdfview::ShortcutHandler Action Әрекет Key sequence Пернелер тізбегі Skip backward Артқа өткізу Skip forward Алға өткізу Move up Жоғары жылжыту Move down Төмен жылжыту Move left Солға жылжыту Move right Оңға жылжыту qpdfview::TreeView &Expand all Барлығын &жазық қылу &Collapse all Барлығын ж&инау qpdfview-0.4.18/translations/qpdfview_ko.ts0000644000000000000000000023315713516127411017202 0ustar 00000000000000 Korean <ko@li.org> Hanjin Cho <Unknown> 2017-07-13 11:03+0000 2018-05-27 11:51+0000 qpdfview FULL NAME <EMAIL@ADDRESS> 2018-05-28 05:33+0000 # Korean translation for qpdfview # Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 # This file is distributed under the same license as the qpdfview package. # FIRST AUTHOR <EMAIL@ADDRESS>, 2013. # Project-Id-Version,Report-Msgid-Bugs-To,POT-Creation-Date,PO-Revision-Date,Last-Translator,Language-Team,MIME-Version,Content-Type,Content-Transfer-Encoding,X-Launchpad-Export-Date,X-Qt-Contexts Model::ImageDocument Image (%1) Size 파일 크기 Resolution 해상도 Depth Format 포맷 Monochrome 단색 Indexed 색인 32 bits RGB 32 bits ARGB 16 bits RGB 24 bits RGB Model::PdfDocument Linearized Name Type Embedded Subset File Yes PDF version Encrypted No Model::PdfPage Information Version 0.20.1 or higher of the Poppler library is required to add or remove annotations. Model::PsDocument Title Created for Creator Creation date Format Language level QObject An empty instance name is not allowed. An empty search text is not allowed. Unknown command-line option '%1'. Using '--instance' requires an instance name. Using '--instance' is not allowed without using '--unique'. An instance name must only contain the characters "[A-Z][a-z][0-9]_" and must not begin with a digit. Using '--search' requires a search text. Could not prepare signal handler. QShortcut Shift Ctrl Alt Shift and Ctrl Shift and Alt Ctrl and Alt Right mouse button Middle mouse button None qpdfview::BookmarkDialog Bookmark Page: Label: Comment: Modified: qpdfview::BookmarkMenu &Open Open in new &tab &Remove bookmark qpdfview::Database Jump to page %1 qpdfview::DocumentView Information The source editor has not been set. Opening URL is disabled in the settings. Warning SyncTeX data for '%1' could not be found. Printing '%1'... Unlock %1 Password: Page %1 qpdfview::FileAttachmentAnnotationWidget Save... Save and open... Save file attachment Warning Could not open file attachment saved to '%1'. Could not save file attachment to '%1'. qpdfview::FontsDialog Fonts qpdfview::HelpDialog Help help.html Please replace by file name of localized help if available, e.g. "help_fr.html". Find previous Find next qpdfview::MainWindow Toggle tool bars Toggle menu bar Warning Could not open '%1'. Copy file path Select file path Close all tabs Close all tabs but this one 이 탭만 남기고 모두 닫기 Close all tabs to the left Close all tabs to the right Open Open in new tab Could not refresh '%1'. Save copy Could not save copy at '%1'. Save as Move to instance Failed to access instance '%1'. Could not save as '%1'. Could not print '%1'. Set first page Select the first page of the body matter: Jump to page Page: Jump to page %1 About qpdfview gpdfview에 대하여 <p><b>qpdfview %1</b></p><p>qpdfview is a tabbed document viewer using Qt.</p><p>This version includes:<ul> <li>PDF support using Poppler %1</li> <li>PS support using libspectre %1</li> <li>DjVu support using DjVuLibre %1</li> <li>PDF support using Fitz %1</li> <li>Printing support using CUPS %1</li> &Edit bookmark The document '%1' has been modified. Do you want to save your changes? Page width Page size Match &case Whole &words Highlight &all &Open... Open in new &tab... Open &copy in new tab Move to &instance... &Refresh Information Instance-to-instance communication requires D-Bus support. </ul><p>See <a href="https://launchpad.net/qpdfview">launchpad.net/qpdfview</a> for more information.</p><p>&copy; %1 The qpdfview developers</p> Save &as... Save &copy... &Print... E&xit &Previous page &Next page &First page &Last page &Set first page... &Jump to page... Jump &backward Jump for&ward &Search... Find previous Find next Cancel search &Copy to clipboard &Add annotation Settings... &Continuous &Two pages Two pages &with cover page &Multiple pages Right to left Zoom &in Zoom &out Original &size Fit to page width Fit to page size Rotate &left Rotate &right Invert colors Convert to grayscale Trim margins Darken with paper color Lighten with paper color Fonts... &Fullscreen &Presentation... &Previous tab &Next tab &Close tab Close &all tabs Close all tabs &but current tab Restore &most recently closed tab &Previous bookmark &Next bookmark &Add bookmark Open copy in new &window Split view horizontally... Split view vertically... Close current view Thumb&nails Book&marks Composition &Remove bookmark Edit '%1' at %2,%3... Open containing &folder &Save Remove all bookmarks &Contents &About &File &Edit &View &Outline &Properties &Search &Tool bars &Docks &Tabs &Bookmarks &Help Choose instance Instance: qpdfview::PageItem Go to page %1. Go to page %1 of file '%2'. Open '%1'. Edit form field '%1'. Copy &text &Select text Copy &image Save image to &file... Save image to file Warning Could not save image to file '%1'. Add &text Add &highlight &Copy link address &Select link address &Remove annotation qpdfview::PdfSettingsWidget Antialiasing: Text antialiasing: None Full Reduced Text hinting: Ignore paper color: Overprint preview: Solid Shaped Thin line mode: Splash Arthur Backend: qpdfview::PluginHandler Image (%1) Compressed (%1) Supported formats (%1) Could not decompress '%1'! Could not match file type of '%1'! Critical Could not load plug-in for file type '%1'! qpdfview::PrintDialog Fit to page: Page ranges: All pages Even pages Odd pages Page set: Single page Two pages Four pages Six pages Nine pages Sixteen pages Number-up: Bottom to top and left to right Bottom to top and right to left Left to right and bottom to top Left to right and top to bottom Right to left and bottom to top Right to left and top to bottom Top to bottom and left to right Top to bottom and right to left Number-up layout: Extended options qpdfview::PsSettingsWidget Graphics antialias bits: Text antialias bits: qpdfview::RecentlyClosedMenu &Recently closed &Clear list qpdfview::RecentlyUsedMenu Recently &used &Clear list qpdfview::SearchModel <b>%1</b> occurrences <b>%1</b> occurrences on page <b>%2</b> qpdfview::SearchableMenu Search for '%1'... qpdfview::SettingsDialog General &Behavior &Graphics &Interface &Shortcuts &Modifiers Defaults Defaults on current tab Mouse wheel modifiers Mouse button modifiers Open URL: Auto-refresh: Effective after restart. Track recently used: Keep recently closed: Restore tabs: Restore bookmarks: Restore per-file settings: min Save database interval: Synchronize presentation: Default Presentation screen: Synchronize split views: Zoom factor: Parallel search execution: ms None Highlight duration: Highlight color: Annotation color: '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number. Source editor: Use tiling: Keep obsolete pixmaps: Use device pixel ratio: Decorate pages: Decorate links: Decorate form fields: Background color: Paper color: Presentation background color: Pages per row: px Page spacing: Thumbnail spacing: Thumbnail size: Fit to viewport Document context menu: Tab context menu: Open in source editor: %1 MB Cache size: Minimal scrolling: Prefetch: Prefetch distance: Top Bottom Left Right Tab position: As needed Always Exit after last tab: Scrollable menus: Searchable menus: Zoom to selection: Never Settings Tab visibility: Spread tabs: New tab next to current tab: Recently used count: Recently closed count: Extended search dock: Toggle tool and menu bars with fullscreen: File tool bar: Edit tool bar: View tool bar: Use page label: Document title as tab title: Current page in window title: Instance name in window title: Synchronize outline view: Highlight current thumbnail: Limit thumbnails to results: Annotation overlay: Form field overlay: Zoom: Rotate: Scroll: Copy to clipboard: Add annotation: qpdfview::ShortcutHandler Action Key sequence Skip backward Skip forward Move up Move down Move left Move right qpdfview::TreeView &Expand all &Collapse all qpdfview-0.4.18/translations/qpdfview_ku.ts0000644000000000000000000023172513516127411017207 0ustar 00000000000000 Kurdish <ku@li.org> Rokar ✌ <Unknown> 2017-02-15 20:44+0000 2018-05-27 11:51+0000 qpdfview FULL NAME <EMAIL@ADDRESS> 2018-05-28 05:33+0000 # Kurdish translation for qpdfview # Copyright (c) 2017 Rosetta Contributors and Canonical Ltd 2017 # This file is distributed under the same license as the qpdfview package. # FIRST AUTHOR <EMAIL@ADDRESS>, 2017. # Project-Id-Version,Report-Msgid-Bugs-To,POT-Creation-Date,PO-Revision-Date,Last-Translator,Language-Team,MIME-Version,Content-Type,Content-Transfer-Encoding,X-Launchpad-Export-Date,X-Qt-Contexts Model::ImageDocument Image (%1) Size Mezinahî Resolution Rêjeşane Depth Kûrahî Format Teşe Monochrome Reş-spî Indexed 32 bits RGB 32 bits ARGB 16 bits RGB 24 bits RGB Model::PdfDocument Linearized Name Nav Type Cûre Embedded Veşartî Subset Koma Jêr File Dosya Yes Erê PDF version PDF versiyon Encrypted Şîfrekirî No Na Model::PdfPage Information Agahî Version 0.20.1 or higher of the Poppler library is required to add or remove annotations. Model::PsDocument Title Sernav Created for Creator Afirînêr Creation date Format Teşe Language level QObject An empty instance name is not allowed. An empty search text is not allowed. Unknown command-line option '%1'. Using '--instance' requires an instance name. Using '--instance' is not allowed without using '--unique'. An instance name must only contain the characters "[A-Z][a-z][0-9]_" and must not begin with a digit. Using '--search' requires a search text. Could not prepare signal handler. QShortcut Shift Bikşîne Ctrl Ctrl Alt Jêr Shift and Ctrl Shift and Alt Ctrl and Alt Right mouse button Bişkojka rastê ya mişk Middle mouse button Bişkojka navîn a mişk None Tu yek qpdfview::BookmarkDialog Bookmark Bijare Page: Rûpel: Label: Etîket: Comment: Şîrove: Modified: Guhertî: qpdfview::BookmarkMenu &Open &Veke Open in new &tab &Remove bookmark qpdfview::Database Jump to page %1 qpdfview::DocumentView Information Agahî The source editor has not been set. Opening URL is disabled in the settings. Warning Hişyar SyncTeX data for '%1' could not be found. Printing '%1'... Unlock %1 Password: Şîfre: Page %1 qpdfview::FileAttachmentAnnotationWidget Save... Tomar bike... Save and open... Save file attachment Warning Hişyar Could not open file attachment saved to '%1'. Could not save file attachment to '%1'. qpdfview::FontsDialog Fonts Cureyên nivîsê qpdfview::HelpDialog Help Alîkarî help.html Please replace by file name of localized help if available, e.g. "help_fr.html". Find previous Find next qpdfview::MainWindow Toggle tool bars Toggle menu bar Warning Hişyar Could not open '%1'. Copy file path Select file path Close all tabs Hemû hilfirînan bigire Close all tabs but this one Close all tabs to the left Close all tabs to the right Open Veke Open in new tab Di hilpekîna nû de veke Could not refresh '%1'. Save copy Could not save copy at '%1'. Save as Cuda tomar bike Move to instance Failed to access instance '%1'. Could not save as '%1'. Could not print '%1'. Set first page Select the first page of the body matter: Jump to page Page: Rûpel: Jump to page %1 About qpdfview <p><b>qpdfview %1</b></p><p>qpdfview is a tabbed document viewer using Qt.</p><p>This version includes:<ul> <li>PDF support using Poppler %1</li> <li>PS support using libspectre %1</li> <li>DjVu support using DjVuLibre %1</li> <li>PDF support using Fitz %1</li> <li>Printing support using CUPS %1</li> &Edit bookmark The document '%1' has been modified. Do you want to save your changes? Page width Page size Match &case Whole &words Highlight &all &Open... &Veke... Open in new &tab... Open &copy in new tab Move to &instance... &Refresh &Tazekirin Information Instance-to-instance communication requires D-Bus support. </ul><p>See <a href="https://launchpad.net/qpdfview">launchpad.net/qpdfview</a> for more information.</p><p>&copy; %1 The qpdfview developers</p> Save &as... Save &copy... &Print... &Çap bike... E&xit Der&keve &Previous page &Next page &Rûpela piştre &First page &Last page &Set first page... &Jump to page... Jump &backward Jump for&ward &Search... Find previous Find next Cancel search &Copy to clipboard &Add annotation Settings... Mîheng... &Continuous &Bê navber &Two pages Two pages &with cover page &Multiple pages Right to left Rast ber bi çep Zoom &in Zoom &out Original &size Fit to page width Fit to page size Rotate &left Rotate &right Invert colors Convert to grayscale Trim margins Darken with paper color Lighten with paper color Fonts... &Fullscreen &DîmenderTijî &Presentation... &Previous tab &Next tab &Close tab Close &all tabs Close all tabs &but current tab Restore &most recently closed tab &Previous bookmark &Next bookmark &Add bookmark Open copy in new &window Split view horizontally... Split view vertically... Close current view Thumb&nails Book&marks Composition &Remove bookmark Edit '%1' at %2,%3... Open containing &folder &Save &Tomar bike Remove all bookmarks &Contents &Naverok &About &Derbarê &File &Dosye &Edit &Biguherhîne &View &Bibîne &Outline &Properties &Taybetî &Search &Lê Bigere &Tool bars &Docks &Tabs &Pekan &Bookmarks &Bijare &Help &Alîkarî Choose instance Instance: qpdfview::PageItem Go to page %1. Go to page %1 of file '%2'. Open '%1'. Edit form field '%1'. Copy &text &Select text Copy &image Save image to &file... Save image to file Warning Hişyar Could not save image to file '%1'. Add &text Add &highlight &Copy link address &Select link address &Remove annotation qpdfview::PdfSettingsWidget Antialiasing: Text antialiasing: None Tu yek Full Tije Reduced Text hinting: Ignore paper color: Overprint preview: Solid Shaped Thin line mode: Splash Arthur Backend: qpdfview::PluginHandler Image (%1) Compressed (%1) Supported formats (%1) Could not decompress '%1'! Could not match file type of '%1'! Critical Krîtîk Could not load plug-in for file type '%1'! qpdfview::PrintDialog Fit to page: Page ranges: Rûpelê rêzkirinê: All pages Even pages Odd pages Page set: Single page Two pages Four pages Six pages Nine pages Sixteen pages Number-up: Bottom to top and left to right Bottom to top and right to left Left to right and bottom to top Left to right and top to bottom Right to left and bottom to top Right to left and top to bottom Top to bottom and left to right Top to bottom and right to left Number-up layout: Extended options qpdfview::PsSettingsWidget Graphics antialias bits: Text antialias bits: qpdfview::RecentlyClosedMenu &Recently closed &Clear list qpdfview::RecentlyUsedMenu Recently &used &Clear list qpdfview::SearchModel <b>%1</b> occurrences <b>%1</b> occurrences on page <b>%2</b> qpdfview::SearchableMenu Search for '%1'... qpdfview::SettingsDialog General Giştî &Behavior &Graphics &Interface &Shortcuts &Modifiers Defaults Standard Defaults on current tab Mouse wheel modifiers Mouse button modifiers Open URL: Auto-refresh: Effective after restart. Track recently used: Keep recently closed: Restore tabs: Restore bookmarks: Restore per-file settings: min deq Save database interval: Synchronize presentation: Default Wekî heyî Presentation screen: Synchronize split views: Zoom factor: Parallel search execution: ms None Tu yek Highlight duration: Highlight color: Annotation color: '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number. Source editor: Use tiling: Keep obsolete pixmaps: Use device pixel ratio: Decorate pages: Decorate links: Decorate form fields: Background color: Rengê bingehê: Paper color: Presentation background color: Pages per row: px px Page spacing: Thumbnail spacing: Thumbnail size: Mezinahiya wêneyên biçûk: Fit to viewport Document context menu: Tab context menu: Open in source editor: %1 MB %1 MB Cache size: Minimal scrolling: Prefetch: Prefetch distance: Top Jor Bottom Bin Left Çep Right Rast Tab position: As needed Always Her dem Exit after last tab: Scrollable menus: Searchable menus: Zoom to selection: Never Hîç Settings Mîheng Tab visibility: Spread tabs: New tab next to current tab: Recently used count: Recently closed count: Extended search dock: Toggle tool and menu bars with fullscreen: File tool bar: Edit tool bar: View tool bar: Use page label: Document title as tab title: Current page in window title: Instance name in window title: Synchronize outline view: Highlight current thumbnail: Limit thumbnails to results: Annotation overlay: Form field overlay: Zoom: Rotate: Scroll: Copy to clipboard: Add annotation: qpdfview::ShortcutHandler Action Çalakî Key sequence Skip backward Paş de hup bike Skip forward Pêşde Hilpeke Move up Move down Move left Move right qpdfview::TreeView &Expand all &Collapse all qpdfview-0.4.18/translations/qpdfview_ky.ts0000644000000000000000000023167413516127411017216 0ustar 00000000000000 Model::ImageDocument Image (%1) Size Resolution Depth Format Monochrome Indexed 32 bits RGB 32 bits ARGB 16 bits RGB 24 bits RGB Model::PdfDocument Linearized Name Type Embedded Subset File Yes PDF version Encrypted No Model::PdfPage Information Маалымат Version 0.20.1 or higher of the Poppler library is required to add or remove annotations. Model::PsDocument Title Created for Creator Creation date Format Language level QObject An empty instance name is not allowed. An empty search text is not allowed. Unknown command-line option '%1'. Using '--instance' requires an instance name. Using '--instance' is not allowed without using '--unique'. An instance name must only contain the characters "[A-Z][a-z][0-9]_" and must not begin with a digit. Using '--search' requires a search text. Could not prepare signal handler. QShortcut Shift Ctrl Alt Shift and Ctrl Shift and Alt Ctrl and Alt Right mouse button Middle mouse button None qpdfview::BookmarkDialog Bookmark Page: Барак: Label: Comment: Modified: qpdfview::BookmarkMenu &Open &Ачуу Open in new &tab Жаңы &салмадан ачуу &Remove bookmark Чөп катты &өчүрүү qpdfview::Database Jump to page %1 qpdfview::DocumentView Information Маалымат The source editor has not been set. Opening URL is disabled in the settings. Warning Эскертүү SyncTeX data for '%1' could not be found. Printing '%1'... '%1' басуу... Unlock %1 %1 тосмолоодон алуу Password: Сырсөз: Page %1 qpdfview::FileAttachmentAnnotationWidget Save... Save and open... Save file attachment Warning Эскертүү Could not open file attachment saved to '%1'. Could not save file attachment to '%1'. qpdfview::FontsDialog Fonts qpdfview::HelpDialog Help help.html Please replace by file name of localized help if available, e.g. "help_fr.html". Find previous Мурункуну табуу Find next Кийинкини табуу qpdfview::MainWindow Toggle tool bars Toggle menu bar Warning Эскертүү Could not open '%1'. Copy file path Select file path Close all tabs Close all tabs but this one Close all tabs to the left Close all tabs to the right Open Ачуу Open in new tab Жаңы салмадан ачуу Could not refresh '%1'. Save copy Көчүрмөнү сактоо Could not save copy at '%1'. Save as Ат коюп сактоо Move to instance Failed to access instance '%1'. Could not save as '%1'. Could not print '%1'. Set first page Select the first page of the body matter: Jump to page Баракка өтүү Page: Барак: Jump to page %1 About qpdfview qpdfview жөнүндө <p><b>qpdfview %1</b></p><p>qpdfview is a tabbed document viewer using Qt.</p><p>This version includes:<ul> <li>PDF support using Poppler %1</li> <li>PS support using libspectre %1</li> <li>DjVu support using DjVuLibre %1</li> <li>PDF support using Fitz %1</li> <li>Printing support using CUPS %1</li> &Edit bookmark The document '%1' has been modified. Do you want to save your changes? Page width Барактын туурасы боюнча Page size Барактын өлчөмү боюнча Match &case Whole &words Highlight &all &Open... &Ачуу... Open in new &tab... Open &copy in new tab Move to &instance... &Refresh &Жаңыртуу Information Маалымат Instance-to-instance communication requires D-Bus support. </ul><p>See <a href="https://launchpad.net/qpdfview">launchpad.net/qpdfview</a> for more information.</p><p>&copy; %1 The qpdfview developers</p> Save &as... &Ат коюп сактоо... Save &copy... &Print... &Басма... E&xit &Previous page &Мурунку барак &Next page &Кийинки барак &First page &Биринчи барак &Last page &Акыркы барак &Set first page... &Jump to page... Баракка &өтүү... Jump &backward Jump for&ward &Search... &Издөө... Find previous Мурункуну табуу Find next Кийинкини табуу Cancel search Издөөнү жокко чыгаруу &Copy to clipboard Алмашуу буферине &көчүрүү &Add annotation Settings... Ырастоолор... &Continuous &Two pages &Эки барак Two pages &with cover page &Multiple pages Right to left Zoom &in Zoom &out Original &size Fit to page width Fit to page size Rotate &left Rotate &right Invert colors Convert to grayscale Trim margins Darken with paper color Lighten with paper color Fonts... &Fullscreen &Presentation... &Previous tab &Next tab &Close tab Close &all tabs Close all tabs &but current tab Restore &most recently closed tab &Previous bookmark &Next bookmark &Add bookmark Open copy in new &window Split view horizontally... Split view vertically... Close current view Thumb&nails Book&marks Composition &Remove bookmark Чөп катты &өчүрүү Edit '%1' at %2,%3... Open containing &folder &Save Remove all bookmarks &Contents &About &File &Edit &View &Outline &Properties &Search &Tool bars &Docks &Tabs &Bookmarks &Help Choose instance Instance: qpdfview::PageItem Go to page %1. Go to page %1 of file '%2'. Open '%1'. Edit form field '%1'. Copy &text &Select text Copy &image Save image to &file... Save image to file Warning Эскертүү Could not save image to file '%1'. Add &text Add &highlight &Copy link address &Select link address &Remove annotation qpdfview::PdfSettingsWidget Antialiasing: Text antialiasing: None Full Reduced Text hinting: Ignore paper color: Overprint preview: Solid Shaped Thin line mode: Splash Arthur Backend: qpdfview::PluginHandler Image (%1) Compressed (%1) Supported formats (%1) Could not decompress '%1'! Could not match file type of '%1'! Critical Could not load plug-in for file type '%1'! qpdfview::PrintDialog Fit to page: Page ranges: All pages Even pages Odd pages Page set: Single page Two pages Four pages Six pages Nine pages Sixteen pages Number-up: Bottom to top and left to right Bottom to top and right to left Left to right and bottom to top Left to right and top to bottom Right to left and bottom to top Right to left and top to bottom Top to bottom and left to right Top to bottom and right to left Number-up layout: Extended options qpdfview::PsSettingsWidget Graphics antialias bits: Text antialias bits: qpdfview::RecentlyClosedMenu &Recently closed &Clear list qpdfview::RecentlyUsedMenu Recently &used &Clear list qpdfview::SearchModel <b>%1</b> occurrences <b>%1</b> occurrences on page <b>%2</b> qpdfview::SearchableMenu Search for '%1'... qpdfview::SettingsDialog General &Behavior &Graphics &Interface &Shortcuts &Modifiers Defaults Defaults on current tab Mouse wheel modifiers Mouse button modifiers Open URL: Auto-refresh: Effective after restart. Track recently used: Keep recently closed: Restore tabs: Restore bookmarks: Restore per-file settings: min Save database interval: Synchronize presentation: Default Presentation screen: Synchronize split views: Zoom factor: Parallel search execution: ms None Highlight duration: Highlight color: Annotation color: '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number. Source editor: Use tiling: Keep obsolete pixmaps: Use device pixel ratio: Decorate pages: Decorate links: Decorate form fields: Background color: Paper color: Presentation background color: Pages per row: px Page spacing: Thumbnail spacing: Thumbnail size: Fit to viewport Document context menu: Tab context menu: Open in source editor: %1 MB Cache size: Minimal scrolling: Prefetch: Prefetch distance: Top Bottom Left Right Tab position: As needed Always Exit after last tab: Scrollable menus: Searchable menus: Zoom to selection: Never Settings Tab visibility: Spread tabs: New tab next to current tab: Recently used count: Recently closed count: Extended search dock: Toggle tool and menu bars with fullscreen: File tool bar: Edit tool bar: View tool bar: Use page label: Document title as tab title: Current page in window title: Instance name in window title: Synchronize outline view: Highlight current thumbnail: Limit thumbnails to results: Annotation overlay: Form field overlay: Zoom: Rotate: Scroll: Copy to clipboard: Add annotation: qpdfview::ShortcutHandler Action Key sequence Skip backward Skip forward Move up Move down Move left Move right qpdfview::TreeView &Expand all &Collapse all qpdfview-0.4.18/translations/qpdfview_lt.ts0000644000000000000000000023563113516127411017207 0ustar 00000000000000 Model::ImageDocument Image (%1) Paveikslas (%1) Size Dydis Resolution Raiška Depth Gylis Format Formatas Monochrome Vienspalvis Indexed Indeksuotasis 32 bits RGB 32 bitų RGB 32 bits ARGB 32 bitų ARGB 16 bits RGB 16 bitų RGB 24 bits RGB 24 bitų RGB Model::PdfDocument Linearized Linearizuotas Name Pavadinimas Type Tipas Embedded Įtaisytas Subset Poaibis File Failas Yes Taip PDF version PDF versija Encrypted Užšifruotas No Ne Model::PdfPage Information Informacija Version 0.20.1 or higher of the Poppler library is required to add or remove annotations. Norint pridėti ar šalinti pastabas, reikalinga Poppler bibliotekos versija 0.20.1 arba aukštesnė. Model::PsDocument Title Antraštė Created for Sukurta Creator Sukūrė Creation date Sukūrimo data Format Formatas Language level Kalbos lygis QObject An empty instance name is not allowed. Tuščias egzemplioriaus pavadinimas yre neleidžiamas. An empty search text is not allowed. Tuščias paieškos tekstas nėra leidžiamas. Unknown command-line option '%1'. Nežinoma komandų eilutės parinktis '%1'. Using '--instance' requires an instance name. "--instance" naudojimas reikalauja egzemplioriaus pavadinimo. Using '--instance' is not allowed without using '--unique'. "--instance" naudojimas, nenaudojant "--unique" yra neleidžiamas. An instance name must only contain the characters "[A-Z][a-z][0-9]_" and must not begin with a digit. Egzemplioriaus pavadinime privalo būti tik simboliai "[A-Z][a-z][0-9]_" ir jis negali prasidėti skaičiumi. Using '--search' requires a search text. "--search" naudojimas reikalauja ieškomo teksto. Could not prepare signal handler. Nepavyko paruošti signalo doroklės. QShortcut Shift Shift (Lyg2) Ctrl Ctrl (Vald) Alt Alt Shift and Ctrl Shift (Lyg2) ir Ctrl (Vald) Shift and Alt Shift (Lyg2) ir Alt Ctrl and Alt Ctrl (Vald) ir Alt Right mouse button Dešinysis pelės mygtukas Middle mouse button Vidurinis pelės mygtukas None Nėra qpdfview::BookmarkDialog Bookmark Žymė Page: Puslapis: Label: Etiketė: Comment: Komentaras: Modified: Keista: qpdfview::BookmarkMenu &Open &Atverti Open in new &tab Atverti naujoje kor&telėje &Remove bookmark Ša&linti žymę qpdfview::Database Jump to page %1 Pereiti į puslapį %1 qpdfview::DocumentView Information Informacija The source editor has not been set. Nėra nustatytas šaltinio redaktorius. Opening URL is disabled in the settings. URL atvėrimas yra išjungtas nustatymuose Warning Įspėjimas SyncTeX data for '%1' could not be found. Nepavyko rasti SyncTeX duomenų, skirtų "%1". Printing '%1'... Spausdinama '%1'... Unlock %1 Atrakinti %1 Password: Slaptažodis: Page %1 Puslapis %1 qpdfview::FileAttachmentAnnotationWidget Save... Įrašyti... Save and open... Įrašyti ir atverti... Save file attachment Įrašyti failo priedą Warning Įspėjimas Could not open file attachment saved to '%1'. Nepavyko atverti failo priedo, įrašyto į "%1". Could not save file attachment to '%1'. Nepavyko įrašyti failo priedo į "%1". qpdfview::FontsDialog Fonts Šriftai qpdfview::HelpDialog Help Pagalba help.html Please replace by file name of localized help if available, e.g. "help_fr.html". help_lt.html Find previous Rasti ankstesnį Find next Rasti kitą qpdfview::MainWindow Toggle tool bars Perjungti įrankių juostas Toggle menu bar Perjungti meniu juostą Warning Įspėjimas Could not open '%1'. Nepavyko atverti '%1'. Copy file path Kopijuoti failo kelią Select file path Pasirinkti failo kelią Close all tabs Užverti visas korteles Close all tabs but this one Užverti visas korteles, išskyrus šią Close all tabs to the left Užverti visas korteles kairėje Close all tabs to the right Užverti visas korteles dešinėje Open Atverti Open in new tab Atverti naujoje kortelėje Could not refresh '%1'. Nepavyko iš naujo įkelti '%1'. Save copy Įrašyti kopiją Could not save copy at '%1'. Nepavyko įrašyti kopijos į "%1". Save as Įrašyti kaip Move to instance Perkelti į egzempliorių Failed to access instance '%1'. Nepavyko gauti prieigos prie egzemplioriaus "%1". Could not save as '%1'. Nepavyko įrašyti "%1". Could not print '%1'. Nepavyko spausdinti "%1". Set first page Nustatyti pirmą puslapį Select the first page of the body matter: Pasirinkite pirmą pagrindinės dalies medžiagos puslapį: Jump to page Pereiti į puslapį Page: Puslapis: Jump to page %1 Pereiti į puslapį %1 About qpdfview Apie qpdfview <p><b>qpdfview %1</b></p><p>qpdfview is a tabbed document viewer using Qt.</p><p>This version includes:<ul> <p><b>qpdfview %1</b></p><p>qpdfview yra korteles palaikanti dokumentų peržiūros programa, naudojanti Qt.</p><p>Į šią versiją įeina:<ul> <li>PDF support using Poppler %1</li> <li>PDF palaikymas, naudojant Poppler %1</li> <li>PS support using libspectre %1</li> <li>PS palaikymas, naudojant libspectre %1</li> <li>DjVu support using DjVuLibre %1</li> <li>DjVu palaikymas, naudojant DjVuLibre %1</li> <li>PDF support using Fitz %1</li> <li>PDF palaikymas, naudojant Fitz %1</li> <li>Printing support using CUPS %1</li> <li>Spausdinimo palaikymas, naudojant CUPS %1</li> &Edit bookmark R&edaguoti žymę The document '%1' has been modified. Do you want to save your changes? Dokumentas "%1" buvo modifikuotas. Ar norite įrašyti savo pakeitimus? Page width Puslapio plotis Page size Puslapio dydis Match &case Skirti didžiąsias ir mažąsias raides Whole &words Ištisi ž&odžiai Highlight &all Par&yškinti visus &Open... &Atverti... Open in new &tab... Atverti naujoje kor&telėje... Open &copy in new tab Atverti &kopiją naujoje kortelėje Move to &instance... Perkelti į &egzempliorių... &Refresh Įkelti iš nau&jo Information Informacija Instance-to-instance communication requires D-Bus support. Susisiekimas tarp egzempliorių reikalauja D-Bus palaikymo. </ul><p>See <a href="https://launchpad.net/qpdfview">launchpad.net/qpdfview</a> for more information.</p><p>&copy; %1 The qpdfview developers</p> </ul><p>Išsamesnei informacijai, žiūrėkite <a href="https://launchpad.net/qpdfview">launchpad.net/qpdfview</a>.</p><p>&copy; %1 qpdfview kūrėjai</p> Save &as... Įrašyti &kaip... Save &copy... Įrašyti &kopiją &Print... S&pausdinti... E&xit Iš&eiti &Previous page Ankstesnis &puslapis &Next page &Kitas puslapis &First page P&irmas puslapis &Last page Pask&utinis puslapis &Set first page... &Nustatyti pirmą puslapį... &Jump to page... Pereiti į pu&slapį Jump &backward Pereiti a&tgal Jump for&ward Pereiti pi&rmyn &Search... &Ieškoti... Find previous Rasti ankstesnį Find next Rasti kitą Cancel search Atsisakyti paieškos &Copy to clipboard &Kopijuoti į iškarpinę &Add annotation Pridėti p&astabą Settings... Nustatymai... &Continuous &Ištisai &Two pages &Du puslapiai Two pages &with cover page Du puslapiai &su viršelio puslapiu &Multiple pages &Keli puslapiai Right to left Iš dešinės į kairę Zoom &in Did&inti Zoom &out &Mažinti Original &size Originalo dydi&s Fit to page width Talpinti į puslapio plotį Fit to page size Talpinti į puslapio dydį Rotate &left Pasukti &kairėn Rotate &right Pasukti &dešinėn Invert colors Invertuoti spalvas Convert to grayscale Konvertuoti į pilkumo tonus Trim margins Apkarpyti paraštes Darken with paper color Tamsesnė už popieriaus spalvą Lighten with paper color Šviesesnė už popieriaus spalvą Fonts... Šriftai... &Fullscreen &Visas ekranas &Presentation... &Pateiktis... &Previous tab &Ankstesnė kortelė &Next tab &Kita kortelė &Close tab &Užverti kortelę Close &all tabs Užverti &visas korteles Close all tabs &but current tab Užverti visas korteles, išskyrus &esamą Restore &most recently closed tab Atkurti pa&skiausiai užvertą kortelę &Previous bookmark &Ankstesnė žymė &Next bookmark &Kita žymė &Add bookmark &Pridėti žymę Open copy in new &window Atverti kopiją naujame &lange Split view horizontally... Perskirti rodinį horizontaliai... Split view vertically... Perskirti rodinį vertikaliai... Close current view Užverti dabartinį rodinį Thumb&nails Mi&niatiūros Book&marks Žy&mės Composition Kompozicija &Remove bookmark Ša&linti žymę Edit '%1' at %2,%3... Redaguoti "%1" ties %2,%3... Open containing &folder Atverti vidinį apla&nką &Save Į&rašyti Remove all bookmarks Šalinti visas žymes &Contents &Turinys &About &Apie &File &Failas &Edit &Taisa &View &Rodinys &Outline Sc&hema &Properties Savy&bės &Search &Paieška &Tool bars Įrankių juos&tos &Docks Sky&deliai &Tabs Kor&telės &Bookmarks Ž&ymės &Help &Pagalba Choose instance Pasirinkti egzempliorių Instance: Egzempliorius: qpdfview::PageItem Go to page %1. Pereiti į %1 puslapį. Go to page %1 of file '%2'. Pereiti į failo "%2", %1 puslapį. Open '%1'. Atverti "%1". Edit form field '%1'. Redaguoti formos lauką "%1". Copy &text Kopijuoti &tekstą &Select text Ž&ymėti tekstą Copy &image Kopijuoti pave&ikslą Save image to &file... Įrašyti paveikslą į &failą... Save image to file Įrašyti paveikslą į failą Warning Įspėjimas Could not save image to file '%1'. Nepavyko įrašyti paveikslo į failą '%1'. Add &text Pridėti &tekstą Add &highlight Pridėti p&aryškinimą &Copy link address &Kopijuoti nuorodos adresą &Select link address &Pažymėti nuorodos adresą &Remove annotation Ša&linti pastabą qpdfview::PdfSettingsWidget Antialiasing: Vaizdo glodinimas: Text antialiasing: Teksto glodinimas: None Nėra Full Pilna Reduced Sumažinta Text hinting: Teksto taškinė korekcija Ignore paper color: Nepaisyti popieriaus spalvos: Overprint preview: Užspausdinimo peržiūra: Solid Vientisa Shaped Suformuota Thin line mode: Plonos linijos veiksena: Splash Splash Arthur Arthur Backend: Vidinė pusė: qpdfview::PluginHandler Image (%1) Paveikslas (%1) Compressed (%1) Suglaudintas (%1) Supported formats (%1) Palaikomi formatai (%1) Could not decompress '%1'! Nepavyko išglaudinti "%1"! Could not match file type of '%1'! Nepavyko atitikti "%1" failo tipą! Critical Kritinis Could not load plug-in for file type '%1'! Nepavyko įkelti įskiepio, skirto failo tipui "%1"! qpdfview::PrintDialog Fit to page: Talpinti į puslapį: Page ranges: Puslapių rėžiai: All pages Visi puslapiai Even pages Lyginiai puslapiai Odd pages Nelyginiai puslapiai Page set: Puslapių rinkinys: Single page 1 puslapis Two pages 2 puslapiai Four pages 4 puslapiai Six pages 6 puslapiai Nine pages 9 puslapiai Sixteen pages 16 puslapių Number-up: Puslapių ant lapo: Bottom to top and left to right Nuo apačios į viršų ir iš kairės į dešinę Bottom to top and right to left Nuo apačios į viršų ir iš dešinės į kairę Left to right and bottom to top Iš kairės į dešinę ir iš apačios į viršų Left to right and top to bottom Iš kairės į dešinę ir iš viršaus į apačią Right to left and bottom to top Iš dešinės į kairę ir iš apačios į viršų Right to left and top to bottom Iš dešinės į kairę ir iš viršaus į apačią Top to bottom and left to right Iš viršaus į apačią ir iš kairės į dešinę Top to bottom and right to left Iš viršaus į apačią ir iš dešinės į kairę Number-up layout: Puslapių ant lapo išdėstymas: Extended options Išplėstinės parinktys qpdfview::PsSettingsWidget Graphics antialias bits: Grafikos glodinimo bitai: Text antialias bits: Teksto glodinimo bitai: qpdfview::RecentlyClosedMenu &Recently closed Paskiausiai užve&rtos &Clear list &Išvalyti sąrašą qpdfview::RecentlyUsedMenu Recently &used Paskiausiai na&udoti &Clear list &Išvalyti sąrašą qpdfview::SearchModel <b>%1</b> occurrences <b>%1</b> pasikartojimų <b>%1</b> occurrences on page <b>%2</b> <b>%1</b> pasikartojimų puslapyje <b>%2</b> qpdfview::SearchableMenu Search for '%1'... Ieškoti "%1"... qpdfview::SettingsDialog General Bendra &Behavior &Elgsena &Graphics &Grafika &Interface &Sąsaja &Shortcuts S&partieji klavišai &Modifiers &Modifikavimo klavišai Defaults Numatytieji Defaults on current tab Numatytieji esamoje kortelėje Mouse wheel modifiers Pelės ratuko modifikatoriai Mouse button modifiers Pelės mygtuko modifikatorius Open URL: Atverti URL: Auto-refresh: Automatiškai įkelti iš naujo: Effective after restart. Įsigalios po paleidimo iš naujo. Track recently used: Sekti paskiausiai naudotus: Keep recently closed: Laikyti paskiausiai užvertus: Restore tabs: Atkurti korteles: Restore bookmarks: Atkurti žymes: Restore per-file settings: Atkurti pavie min min. Save database interval: Duomenų bazės įrašymo intervalas: Synchronize presentation: Sinchronizuoti pateiktį Default Numatytasis Presentation screen: Pateikties ekranas Synchronize split views: Sinchronizuoti perskirtus rodinius: Zoom factor: Mastelio daugiklis: Parallel search execution: Lygiagrečios paieškos vykdymas: ms ms None Nėra Highlight duration: Paryškinimo trukmė: Highlight color: Paryškinimo spalva: Annotation color: Pastabų spalva: '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number. "%1" yra pakeičiama absoliučiu failo keliu. "%2" ir "%3" yra atitinkamai pakeičiami eilutės ir stulpelio numeriu. Source editor: Šaltinio redaktorius: Use tiling: Naudoti išklotinę: Keep obsolete pixmaps: Išlaikyti pasenusius taškinius paveikslus: Use device pixel ratio: Naudoti įrenginio pikselių santykį: Decorate pages: Dekoruoti puslapius: Decorate links: Dekoruoti nuorodas: Decorate form fields: Dekoruoti formos laukus: Background color: Fono spalva: Paper color: Popieriaus spalva: Presentation background color: Pateikties fono spalva: Pages per row: Puslapių eilutėje: px piks. Page spacing: Tarpai tarp puslapių: Thumbnail spacing: Tarpai tarp miniatiūrų: Thumbnail size: Miniatiūrų dydis: Fit to viewport Priderinti prie rodymo srities Document context menu: Dokumento kontekstinis meniu: Tab context menu: Kortelės kontekstinis meniu: Open in source editor: Atverti šaltinio redaktoriuje: %1 MB %1 MB Cache size: Podėlio dydis: Minimal scrolling: Minimalus slinkimas: Prefetch: Išankstinis įkėlimas: Prefetch distance: Išankstinio įkėlimo nuotolis: Top Viršuje Bottom Apačioje Left Kairėje Right Dešinėje Tab position: Kortelių vieta: As needed Kai reikia Always Visada Exit after last tab: Išeiti po paskutinės kortelės: Scrollable menus: Slankiojamieji meniu: Searchable menus: Randami meniu: Zoom to selection: Didinti iki pažymėtos srities: Never Niekada Settings Nustatymai Tab visibility: Kortelių matomumas: Spread tabs: Išskleisti korteles: New tab next to current tab: Nauja kortelė šalia esamos kortelės: Recently used count: Paskiausiai naudotų skaičius: Recently closed count: Paskiausiai užvertų skaičius: Extended search dock: Išplėstinės paieškos skydelis: Toggle tool and menu bars with fullscreen: Perjunginėti įrankių ir meniu juostas su visu ekranu: File tool bar: Failo įrankių juosta: Edit tool bar: Taisos įrankių juosta: View tool bar: Rodinio įrankių juosta: Use page label: Naudoti puslapio etiketę: Document title as tab title: Dokumento antraštė kaip kortelės antraštė: Current page in window title: Esamas puslapis lango antraštėje: Instance name in window title: Egzemplioriaus pavadinimas lango antraštėje: Synchronize outline view: Sinchronizuoti schemos rodinį: Highlight current thumbnail: Paryškinti esamą miniatiūrą: Limit thumbnails to results: Apriboti miniatiūras iki rezultatų: Annotation overlay: Pastabų perdanga: Form field overlay: Formos laukų perdanga: Zoom: Mastelis: Rotate: Pasukti: Scroll: Slinkti: Copy to clipboard: Kopijuoti į iškarpinę Add annotation: Pridėti pastabą: qpdfview::ShortcutHandler Action Veiksmas Key sequence Klavišų seka Skip backward Peršokti atgal Skip forward Peršokti pirmyn Move up Judėti aukštyn Move down Judėti žemyn Move left Judėti kairėn Move right Judėti dešinėn qpdfview::TreeView &Expand all Išskl&eisti visus &Collapse all &Suskleisti visus qpdfview-0.4.18/translations/qpdfview_lv.ts0000644000000000000000000023317713516127411017214 0ustar 00000000000000 Latvian <lv@li.org> Jānis Marks Gailis <jm-gailis@fai-vianet.fr> 2013-03-12 15:14+0000 2018-05-27 11:51+0000 qpdfview FULL NAME <EMAIL@ADDRESS> 2018-05-28 05:33+0000 # Latvian translation for qpdfview # Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 # This file is distributed under the same license as the qpdfview package. # FIRST AUTHOR <EMAIL@ADDRESS>, 2013. # Project-Id-Version,Report-Msgid-Bugs-To,POT-Creation-Date,PO-Revision-Date,Last-Translator,Language-Team,MIME-Version,Content-Type,Content-Transfer-Encoding,X-Launchpad-Export-Date,X-Qt-Contexts Model::ImageDocument Image (%1) Size Resolution Depth Format Monochrome Indexed 32 bits RGB 32 bits ARGB 16 bits RGB 24 bits RGB Model::PdfDocument Linearized Name Type Embedded Subset File Yes PDF version Encrypted No Model::PdfPage Information Version 0.20.1 or higher of the Poppler library is required to add or remove annotations. Model::PsDocument Title Created for Creator Creation date Format Language level QObject An empty instance name is not allowed. An empty search text is not allowed. Unknown command-line option '%1'. Using '--instance' requires an instance name. Using '--instance' is not allowed without using '--unique'. An instance name must only contain the characters "[A-Z][a-z][0-9]_" and must not begin with a digit. Using '--search' requires a search text. Could not prepare signal handler. QShortcut Shift Ctrl Alt Shift and Ctrl Shift and Alt Ctrl and Alt Right mouse button Middle mouse button None qpdfview::BookmarkDialog Bookmark Page: Label: Comment: Modified: qpdfview::BookmarkMenu &Open &Atvērt Open in new &tab Atvert Jauna &Cilne &Remove bookmark qpdfview::Database Jump to page %1 qpdfview::DocumentView Information Informācija The source editor has not been set. Opening URL is disabled in the settings. Warning SyncTeX data for '%1' could not be found. Printing '%1'... Druka '%1'... Unlock %1 Atbloket %1 Password: Parole: Page %1 qpdfview::FileAttachmentAnnotationWidget Save... Save and open... Save file attachment Warning Could not open file attachment saved to '%1'. Could not save file attachment to '%1'. qpdfview::FontsDialog Fonts qpdfview::HelpDialog Help help.html Please replace by file name of localized help if available, e.g. "help_fr.html". Find previous Find next qpdfview::MainWindow Toggle tool bars Toggle menu bar Warning Uzmanību Could not open '%1'. Copy file path Select file path Close all tabs Close all tabs but this one Close all tabs to the left Close all tabs to the right Open Atvērt Open in new tab Atvērt jaunā cilnē Could not refresh '%1'. Save copy Could not save copy at '%1'. Save as Saglabāt kā Move to instance Failed to access instance '%1'. Could not save as '%1'. Could not print '%1'. Set first page Select the first page of the body matter: Jump to page Page: Jump to page %1 About qpdfview <p><b>qpdfview %1</b></p><p>qpdfview is a tabbed document viewer using Qt.</p><p>This version includes:<ul> <li>PDF support using Poppler %1</li> <li>PS support using libspectre %1</li> <li>DjVu support using DjVuLibre %1</li> <li>PDF support using Fitz %1</li> <li>Printing support using CUPS %1</li> &Edit bookmark The document '%1' has been modified. Do you want to save your changes? Page width Page size Match &case Whole &words Highlight &all &Open... Open in new &tab... Open &copy in new tab Move to &instance... &Refresh Information Instance-to-instance communication requires D-Bus support. </ul><p>See <a href="https://launchpad.net/qpdfview">launchpad.net/qpdfview</a> for more information.</p><p>&copy; %1 The qpdfview developers</p> Save &as... Save &copy... &Print... E&xit &Previous page &Next page &First page &Last page &Set first page... &Jump to page... Jump &backward Jump for&ward &Search... Find previous Find next Cancel search &Copy to clipboard &Add annotation Settings... &Continuous &Two pages Two pages &with cover page &Multiple pages Right to left Zoom &in Zoom &out Original &size Fit to page width Fit to page size Rotate &left Rotate &right Invert colors Convert to grayscale Trim margins Darken with paper color Lighten with paper color Fonts... &Fullscreen &Presentation... &Previous tab &Next tab &Close tab Close &all tabs Close all tabs &but current tab Restore &most recently closed tab &Previous bookmark &Next bookmark &Add bookmark Open copy in new &window Split view horizontally... Split view vertically... Close current view Thumb&nails Book&marks Composition &Remove bookmark Edit '%1' at %2,%3... Open containing &folder &Save Remove all bookmarks &Contents &About &File &Edit &View &Outline &Properties &Search &Tool bars &Docks &Tabs &Bookmarks &Help Choose instance Instance: qpdfview::PageItem Go to page %1. Go to page %1 of file '%2'. Open '%1'. Edit form field '%1'. Copy &text &Select text Copy &image Save image to &file... Save image to file Warning Could not save image to file '%1'. Add &text Add &highlight &Copy link address &Select link address &Remove annotation qpdfview::PdfSettingsWidget Antialiasing: Text antialiasing: None Full Reduced Text hinting: Ignore paper color: Overprint preview: Solid Shaped Thin line mode: Splash Arthur Backend: qpdfview::PluginHandler Image (%1) Compressed (%1) Supported formats (%1) Could not decompress '%1'! Could not match file type of '%1'! Critical Could not load plug-in for file type '%1'! qpdfview::PrintDialog Fit to page: Page ranges: All pages Even pages Odd pages Page set: Single page Two pages Four pages Six pages Nine pages Sixteen pages Number-up: Bottom to top and left to right Bottom to top and right to left Left to right and bottom to top Left to right and top to bottom Right to left and bottom to top Right to left and top to bottom Top to bottom and left to right Top to bottom and right to left Number-up layout: Extended options qpdfview::PsSettingsWidget Graphics antialias bits: Text antialias bits: qpdfview::RecentlyClosedMenu &Recently closed &Clear list qpdfview::RecentlyUsedMenu Recently &used &Clear list qpdfview::SearchModel <b>%1</b> occurrences <b>%1</b> occurrences on page <b>%2</b> qpdfview::SearchableMenu Search for '%1'... qpdfview::SettingsDialog General &Behavior &Graphics &Interface &Shortcuts &Modifiers Defaults Defaults on current tab Mouse wheel modifiers Mouse button modifiers Open URL: Auto-refresh: Effective after restart. Track recently used: Keep recently closed: Restore tabs: Restore bookmarks: Restore per-file settings: min Save database interval: Synchronize presentation: Default Presentation screen: Synchronize split views: Zoom factor: Parallel search execution: ms None Highlight duration: Highlight color: Annotation color: '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number. Source editor: Use tiling: Keep obsolete pixmaps: Use device pixel ratio: Decorate pages: Decorate links: Decorate form fields: Background color: Paper color: Presentation background color: Pages per row: px Page spacing: Thumbnail spacing: Thumbnail size: Fit to viewport Document context menu: Tab context menu: Open in source editor: %1 MB Cache size: Minimal scrolling: Prefetch: Prefetch distance: Top Bottom Left Right Tab position: As needed Always Exit after last tab: Scrollable menus: Searchable menus: Zoom to selection: Never Settings Tab visibility: Spread tabs: New tab next to current tab: Recently used count: Recently closed count: Extended search dock: Toggle tool and menu bars with fullscreen: File tool bar: Edit tool bar: View tool bar: Use page label: Document title as tab title: Current page in window title: Instance name in window title: Synchronize outline view: Highlight current thumbnail: Limit thumbnails to results: Annotation overlay: Form field overlay: Zoom: Rotate: Scroll: Copy to clipboard: Add annotation: qpdfview::ShortcutHandler Action Key sequence Skip backward Skip forward Move up Move down Move left Move right qpdfview::TreeView &Expand all &Collapse all qpdfview-0.4.18/translations/qpdfview_ms.ts0000644000000000000000000023246413516127411017210 0ustar 00000000000000 Model::ImageDocument Image (%1) Imej (%1) Size Saiz Resolution Resolusi Depth Kedalaman Format Format Monochrome Monokrom Indexed Berindeks 32 bits RGB RGB 32 bit 32 bits ARGB ARGB 32 bit 16 bits RGB RGB 16 bit 24 bits RGB RGB 24 bit Model::PdfDocument Linearized Dilinearkan Name Nama Type Jenis Embedded Terbenam Subset Subset File Fail Yes Ya PDF version Versi PDF Encrypted Disulitkan No Tidak Model::PdfPage Information Maklumat Version 0.20.1 or higher of the Poppler library is required to add or remove annotations. Versi pustaka Poppler 0.201 atau lebih tinggi diperlukan untuk tambah atau buang catatan. Model::PsDocument Title Tajuk Created for Dicipta untuk Creator Pencipta Creation date Tarikh Ciptaan Format Format Language level Aras bahasa QObject An empty instance name is not allowed. Nama kejadian kosong tidak dibenarkan. An empty search text is not allowed. Teks gelintar kosong tidak dibenarkan. Unknown command-line option '%1'. Pilihan baris-perintah '%1' tidak diketahui. Using '--instance' requires an instance name. Penggunaan '--instance' memerlukan nama kejadian. Using '--instance' is not allowed without using '--unique'. Penggunaan '--instance' tidak dibenarkan tanpa menggunakan '--unique'. An instance name must only contain the characters "[A-Z][a-z][0-9]_" and must not begin with a digit. Satu nama kejadian mesti mengandungi aksara "[A-Z][a-z][0-9]_" dan mesti tidak bermula dengan digit. Using '--search' requires a search text. Menggunakan '--search' memerlukan teks gelintar. Could not prepare signal handler. Tidak dapat sediakan pengendali isyarat. QShortcut Shift Shift Ctrl Ctrl Alt Alt Shift and Ctrl Shift dan Ctrl Shift and Alt Shift dan Alt Ctrl and Alt Ctrl dan Alt Right mouse button Butang tetikus kanan Middle mouse button Butang tetikus tengah None Tiada qpdfview::BookmarkDialog Bookmark Tanda Buku Page: Halaman: Label: Label: Comment: Ulasan: Modified: Diubahsuai: qpdfview::BookmarkMenu &Open &Buka Open in new &tab Buka dalam &tab baru &Remove bookmark &Buang tanda buku qpdfview::Database Jump to page %1 Lompat ke halaman %1 qpdfview::DocumentView Information Maklumat The source editor has not been set. Penyunting sumber belum ditetapkan. Opening URL is disabled in the settings. Membuka URL dilumpuhkan dalam tetapan. Warning Amaran SyncTeX data for '%1' could not be found. Printing '%1'... Mencetak '%1'... Unlock %1 Buka %1 Password: Kata Laluan: Page %1 Halaman %1 qpdfview::FileAttachmentAnnotationWidget Save... Simpan... Save and open... Simpan dan buka... Save file attachment Simpan lampiran fail Warning Amaran Could not open file attachment saved to '%1'. Tidak dapat buka lampiran fail yang tersimpan di dalam '%1'. Could not save file attachment to '%1'. Tidak dapat simpan lampiran ke '%1'. qpdfview::FontsDialog Fonts Fon qpdfview::HelpDialog Help Bantuan help.html Please replace by file name of localized help if available, e.g. "help_fr.html". help.html Find previous Cari terdahulu Find next Cari berikutnya qpdfview::MainWindow Toggle tool bars Togol palang alat Toggle menu bar Togol palang menu Warning Amaran Could not open '%1'. Tidak dapat buka '%1'. Copy file path Salin laluan fail Select file path Pilih laluan fail Close all tabs Tutup semua tab Close all tabs but this one Tutup semua tab tetapi kecualikan ini Close all tabs to the left Tutup semua ke disebelah kiri Close all tabs to the right Tutup semua tab disebelah kanan Open Buka Open in new tab Buka dalam tab baru Could not refresh '%1'. Tidak dapat segar semula '%1'. Save copy Simpan salinan Could not save copy at '%1'. Tidak dapat simpan salinan pada '%1'. Save as Simpan sebagai Move to instance Failed to access instance '%1'. Could not save as '%1'. Tidak dapat simpan sebagai '%1'. Could not print '%1'. Tidak dapat cetak '%1'. Set first page Tetapkan halaman pertama Select the first page of the body matter: Pilih halaman pertama badan: Jump to page Lompat ke halaman Page: Halaman: Jump to page %1 Lompat ke halaman %1 About qpdfview Perihal qpdfview <p><b>qpdfview %1</b></p><p>qpdfview is a tabbed document viewer using Qt.</p><p>This version includes:<ul> <p><b>qpdfview %1</b></p><p>qpdfview merupakan pelihat dokumen bertab yang menggunakan Qt.</p><p>Versi ini menyertakan:<ul> <li>PDF support using Poppler %1</li> <li>Sokongan PDF menggunakan Poppler %1</li> <li>PS support using libspectre %1</li> <li>Sokongan PS menggunakan libspectre %1</li> <li>DjVu support using DjVuLibre %1</li> <li>Sokongan DjVu menggunakan DjVuLibre %1</li> <li>PDF support using Fitz %1</li> <li>Sokongan PDF menggunakan Fitz %1</li> <li>Printing support using CUPS %1</li> <li>Sokongan Percetakan menggunakan CUPS %1</li> &Edit bookmark &Sunting tanda buku The document '%1' has been modified. Do you want to save your changes? Dokumen '%1' telah diubahsuai. Anda hendak simpan perubahan yang anda buat? Page width Lebar halaman Page size Saiz halaman Match &case Padan &kata Whole &words Keseluruhan pe&rkataan Highlight &all Sorot semu&a &Open... B&uka... Open in new &tab... Buka dalam &tab baru... Open &copy in new tab Buka sa&linan dalam tab baharu Move to &instance... &Refresh Sega&r semula Information Maklumat Instance-to-instance communication requires D-Bus support. </ul><p>See <a href="https://launchpad.net/qpdfview">launchpad.net/qpdfview</a> for more information.</p><p>&copy; %1 The qpdfview developers</p> Save &as... Simp&an sebagai... Save &copy... &Print... &Cetak... E&xit &Keluar &Previous page Halaman te&rdahulu &Next page Halaman &berikut &First page Halaman per&tama &Last page Halaman t&erakhir &Set first page... &Tetapkan halaman pertama... &Jump to page... L&ompat ke halaman... Jump &backward Lompat men&gundur Jump for&ward Lompat ma&ju &Search... &Gelintar... Find previous Cari terdahulu Find next Cari berikutnya Cancel search Batal gelintar &Copy to clipboard Sa&lin ke papan keratan &Add annotation T&ambah anotasi Settings... Tetapan... &Continuous &Bersambung &Two pages &Dua halaman Two pages &with cover page Dua halaman de&ngan muka hadapan &Multiple pages Halaman be&rbilang Right to left Kanan ke kiri Zoom &in Zum mas&uk Zoom &out Zum ke&luar Original &size &Saiz asal Fit to page width Suai muat mengikut lebar halaman Fit to page size Muat mengikut saiz halaman Rotate &left Putar k&iri Rotate &right Putar ka&nan Invert colors Songsangkan warna Convert to grayscale Tukar ke skala kelabu Trim margins Kerat margin Darken with paper color Gelapkan dengan warna kertas Lighten with paper color Cerahkan dengan warna kertas Fonts... Fon... &Fullscreen Skrin &Penuh &Presentation... &Persembahan... &Previous tab Tab ter&dahulu &Next tab Tab b&erikutnya &Close tab T&utup tab Close &all tabs Tutup semu&a tab Close all tabs &but current tab Tutup semua tab ke&cuali tab semasa Restore &most recently closed tab &Previous bookmark Tanda buku te&rdahulu &Next bookmark Tanda buku ber&ikutnya &Add bookmark T&ambah tanda buku Open copy in new &window Split view horizontally... Split view vertically... Close current view Thumb&nails Lakaran &Kenit Book&marks &Tanda Buku Composition Komposisi &Remove bookmark &Buang tanda buku Edit '%1' at %2,%3... Sunting '%1' pada %2,%3... Open containing &folder Buka &folder yang dikandungi &Save Remove all bookmarks Buang semua tanda buku &Contents &Kandungan &About Perih&al &File &Fail &Edit &Sunting &View &Lihat &Outline Garis&luar &Properties Si&fat &Search &Gelintar &Tool bars Palang ala&t &Docks La&buh &Tabs &Tab &Bookmarks Tanda &Buku &Help Ban&tuan Choose instance Instance: qpdfview::PageItem Go to page %1. Pergi ke halaman %1. Go to page %1 of file '%2'. Pergi ke halaman %1 dari fail '%2'. Open '%1'. Buka '%1'. Edit form field '%1'. Sunting medan borang '%1'. Copy &text Salin &teks &Select text &Pilih teks Copy &image Salin &imej Save image to &file... Simpan imej ke &fail... Save image to file Simpan imej ke fail Warning Amaran Could not save image to file '%1'. Tidak dapat simpan imej ke fail '%1'. Add &text Tambah &teks Add &highlight Tambah s&orot &Copy link address Sa&lin alamat pautan &Select link address &Pilih alamat pautan &Remove annotation &Buang anotasi qpdfview::PdfSettingsWidget Antialiasing: Anti alias: Text antialiasing: Anti alias teks: None Tiada Full Penuh Reduced Terkurang Text hinting: Pembayang teks: Ignore paper color: Abai warna kertas: Overprint preview: Pratonton lampau cetak: Solid Tegar Shaped Terbentuk Thin line mode: Mod garis nipis: Splash Percikan Arthur Arthur Backend: Bahagian Belakang: qpdfview::PluginHandler Image (%1) Imej (%1) Compressed (%1) Supported formats (%1) Format disokong (%1) Could not decompress '%1'! Could not match file type of '%1'! Tidak dapat padankan jenis fail '%1'! Critical Kritikal Could not load plug-in for file type '%1'! Tidak dapat muat pemalam untuk jenis fail '%1'! qpdfview::PrintDialog Fit to page: Suai muat ke halaman: Page ranges: Julat halaman: All pages Semua halaman Even pages Halaman genap Odd pages Halaman ganjil Page set: Set halaman: Single page Halaman tunggal Two pages Dua halaman Four pages Empat halaman Six pages Enam halaman Nine pages Sembilan halaman Sixteen pages Enam belas halaman Number-up: Nombor-menaik: Bottom to top and left to right Bawah ke atas dan kiri ke kanan Bottom to top and right to left Bawah ke atas dan kanan ke kiri Left to right and bottom to top Kiri ke kanan dan bawah ke atas Left to right and top to bottom Kiri ke kanan dan atas ke bawah Right to left and bottom to top Kanan ke kiri dan bawah ke atas Right to left and top to bottom Kanan ke kiri dan atas ke bawah Top to bottom and left to right Atas ke bawah dan kiri ke kanan Top to bottom and right to left Atas ke bawah dan kanan ke kiri Number-up layout: Bentangan nombor-keatas: Extended options Pilihan sambungan qpdfview::PsSettingsWidget Graphics antialias bits: Bit antialias grafik Text antialias bits: Bit antialias teks: qpdfview::RecentlyClosedMenu &Recently closed &Ditutup baru-baru ini &Clear list K&osongkan senarai qpdfview::RecentlyUsedMenu Recently &used Digunakan baru-baru &ini &Clear list K&osongkan senarai qpdfview::SearchModel <b>%1</b> occurrences <b>%1</b> kemunculan <b>%1</b> occurrences on page <b>%2</b> <b>%1</b> kemunculan pada halaman <b>%2</b> qpdfview::SearchableMenu Search for '%1'... Gelintar '%1'... qpdfview::SettingsDialog General Am &Behavior &Kelakuan &Graphics &Grafik &Interface Anta&ramuka &Shortcuts &Pintasan &Modifiers Peng&ubahsuai Defaults Lalai Defaults on current tab Lalai pada tab semasa Mouse wheel modifiers Mouse button modifiers Open URL: URL buka: Auto-refresh: Segar-semula-automatik: Effective after restart. Berkesan selepas mula semula. Track recently used: Jejak yang digunakan baru-baru ini: Keep recently closed: Kekalkan ditutup baru-baru ini: Restore tabs: Pulih tab: Restore bookmarks: Piulih tanda buku: Restore per-file settings: Pulih tetapan per-fail: min min Save database interval: Simpan sela pangkalan data: Synchronize presentation: Segerakkan persembahan: Default Lalai Presentation screen: Skrin persembahan: Synchronize split views: Zoom factor: Faktor zum: Parallel search execution: ms ms None Tiada Highlight duration: Sorot jangkamasa: Highlight color: Warna sorot: Annotation color: Warna catatan: '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number. '%1' diganti dengan laluan fail mutlak. '%2' resp. '%3' diganti dengan nombot lajur resp. baris. Source editor: Penyunting sumber: Use tiling: Guna penjubinan: Keep obsolete pixmaps: Kekalkan peta pix lapuk: Use device pixel ratio: Guna nisbah piksel peranti: Decorate pages: Hias halaman: Decorate links: Hias pautan: Decorate form fields: Hias medan borang: Background color: Warna latar belakang: Paper color: Warna kertas: Presentation background color: Warna latar belakang persembahan: Pages per row: Halaman per baris: px px Page spacing: Jarak halaman: Thumbnail spacing: Jarak thumbnail: Thumbnail size: Saiz thumbnail: Fit to viewport Suai muat ke port pandang Document context menu: Menu konteks dokumen: Tab context menu: Menu konteks tab: Open in source editor: %1 MB %1 MB Cache size: Saiz cache: Minimal scrolling: Penatalan minimum: Prefetch: Prefetch: Prefetch distance: Jarak prefetch: Top Atas Bottom Bawah Left Kiri Right Kanan Tab position: Kedudukan tab: As needed Seperti diperlukan Always Sentiasa Exit after last tab: Keluar selepas tab terakhir: Scrollable menus: Menu boleh tatal: Searchable menus: Menu boleh gelintar: Zoom to selection: Zum ke pemilihan: Never Jangan sesekali Settings Tetapan Tab visibility: Ketampakan tab: Spread tabs: Hampar tab: New tab next to current tab: Tab baru bersebelahan tab semasa: Recently used count: Kiraan yang terkini digunakan: Recently closed count: Kiraan ditutup baru-baru ini: Extended search dock: Labuh gelintar tambahan: Toggle tool and menu bars with fullscreen: Togol palang alat dan menu dengan skrin penuh: File tool bar: Palang alat fail: Edit tool bar: Palang alat sunting: View tool bar: Palang alat lihat: Use page label: Guna label halaman: Document title as tab title: Tajuk dokumen sebagai tajuk tab: Current page in window title: Halaman semasa dalam tajuk tetingkap: Instance name in window title: Nama kejadian dalam tajuk tetingkap: Synchronize outline view: Segerak paparan garis luar: Highlight current thumbnail: Sorot lakaran kenit semasa: Limit thumbnails to results: Had thumbnail terhadap keputusan: Annotation overlay: Tindihan catatan: Form field overlay: Tindihan medan borang: Zoom: Zum: Rotate: Putar: Scroll: Tatal: Copy to clipboard: Salin ke papan keratan: Add annotation: Tambah anotasi: qpdfview::ShortcutHandler Action Tindakan Key sequence Jujukan kekunci Skip backward Langkau mengundur Skip forward Langkau maju Move up Alih ke atas Move down Alih ke bawah Move left Alih ke kiri Move right Alih ke kanan qpdfview::TreeView &Expand all K&embang semua &Collapse all K&uncup semua qpdfview-0.4.18/translations/qpdfview_my.ts0000644000000000000000000023720613516127411017215 0ustar 00000000000000 Model::ImageDocument Image (%1) Size Resolution Depth Format Monochrome Indexed 32 bits RGB 32 bits ARGB 16 bits RGB 24 bits RGB Model::PdfDocument Linearized Name Type Embedded Subset File Yes PDF version Encrypted No Model::PdfPage Information အချက်အလက် Version 0.20.1 or higher of the Poppler library is required to add or remove annotations. Model::PsDocument Title Created for Creator Creation date Format Language level QObject An empty instance name is not allowed. An empty search text is not allowed. Unknown command-line option '%1'. Using '--instance' requires an instance name. Using '--instance' is not allowed without using '--unique'. An instance name must only contain the characters "[A-Z][a-z][0-9]_" and must not begin with a digit. Using '--search' requires a search text. Could not prepare signal handler. QShortcut Shift Ctrl Alt Shift and Ctrl Shift and Alt Ctrl and Alt Right mouse button Middle mouse button None ဘာမျှမဟုတ် qpdfview::BookmarkDialog Bookmark Page: စာမျက်နှာ- Label: Comment: Modified: qpdfview::BookmarkMenu &Open &Oဖွင့်မည်။ Open in new &tab &t အသစ်တွင်ဖွင့်မည် &Remove bookmark &Rမှတ်တမ်းဖြုတ်မည် qpdfview::Database Jump to page %1 qpdfview::DocumentView Information အချက်အလက် The source editor has not been set. Opening URL is disabled in the settings. Opening URL is disabled in the settings. Warning သတိပေးချက် SyncTeX data for '%1' could not be found. Printing '%1'... '%1' ကိုစာရွက်ထုတ်နေပါသည် Unlock %1 Unlock %1 Password: စကားဝှက် − Page %1 qpdfview::FileAttachmentAnnotationWidget Save... Save and open... Save file attachment Warning သတိပေးချက် Could not open file attachment saved to '%1'. Could not save file attachment to '%1'. qpdfview::FontsDialog Fonts qpdfview::HelpDialog Help help.html Please replace by file name of localized help if available, e.g. "help_fr.html". Find previous ရှေ့တွင်ရှာမည် Find next နောက်တွင်ရှာမည် qpdfview::MainWindow Toggle tool bars Toggle menu bar Warning သတိပေးချက် Could not open '%1'. '%1' ကိုမဖွင့်နိုင်ပါ Copy file path Select file path Close all tabs Close all tabs but this one Close all tabs to the left Close all tabs to the right Open ဖွင့် Open in new tab Tab တစ်ခုတွင်ဖွင့်မည် Could not refresh '%1'. Save copy မိတ္ထူကိုသိမ်းမည် Could not save copy at '%1'. '%1' မှာ မိတ္ထူကိုမသိမ်းနိုင်ပါ Save as Move to instance Failed to access instance '%1'. Could not save as '%1'. Could not print '%1'. '%1' ပရင့်မထုတ်နိုင်ပါ Set first page Select the first page of the body matter: Jump to page စာမျက်နှာသို့သွားမည် Page: စာမျက်နှာ- Jump to page %1 About qpdfview qpdfview အကြောင်း <p><b>qpdfview %1</b></p><p>qpdfview is a tabbed document viewer using Qt.</p><p>This version includes:<ul> <li>PDF support using Poppler %1</li> <li>PS support using libspectre %1</li> <li>DjVu support using DjVuLibre %1</li> <li>PDF support using Fitz %1</li> <li>Printing support using CUPS %1</li> &Edit bookmark The document '%1' has been modified. Do you want to save your changes? Page width စာမျက်နှာအနံ Page size စာမျက်နှာအရွယ်အစား Match &case Whole &words Highlight &all &Open... &Oဖွင့် Open in new &tab... &t Tab အသစ်တွင်ဖွင့်မည် Open &copy in new tab Move to &instance... &Refresh &Refresh Information အချက်အလက် Instance-to-instance communication requires D-Bus support. </ul><p>See <a href="https://launchpad.net/qpdfview">launchpad.net/qpdfview</a> for more information.</p><p>&copy; %1 The qpdfview developers</p> Save &as... Save &copy... &Print... &P စာရွက်ထုတ်မည် E&xit &Previous page &P ယခင်စာမျက်နှာ &Next page &N နောက်စာမျက်နှာ &First page &F ပထမစာမျက်နှာ &Last page &L နောက်ဆုံးစာမျက်နှာ &Set first page... &Jump to page... &J တခြားစာမျက်နှာသို့သွားမည် Jump &backward Jump for&ward &Search... &S ရှာမည် Find previous ရှေ့တွင်ရှာမည် Find next နောက်တွင်ရှာမည် Cancel search ရှာဖွေခြင်းကိုရပ်မည် &Copy to clipboard &Add annotation &A မှတ်သားစာထည့်မည် Settings... &Continuous &C ဆက်လုပ်မည် &Two pages & နှစ်မျက်နှာ Two pages &with cover page &w အဖုံးစာမျက်နှာနှင့်နှစ်မျက်နှာ &Multiple pages &M စာရွက်အမြောက်အများ Right to left Zoom &in &i ချုံ့မည် Zoom &out &o ချဲ့မည် Original &size &s မူလအရွယ်အစား Fit to page width စာမျက်နှာအနံနှင့်ဆန့်အောင်ထားမည် Fit to page size စာမျက်နှာအရွယ်အစားနှင့်ဆန့်အောင်ထားမည် Rotate &left &l ဘယ်ဖက်သို့လှည့်မည် Rotate &right &r ညာဖက်သို့လှည့်မည် Invert colors Convert to grayscale Trim margins Darken with paper color Lighten with paper color Fonts... စာလုံးပုံစံ &Fullscreen &F စကရင်အပြည့် &Presentation... &Previous tab &P ယခင် tab &Next tab &N နောက် tab &Close tab &C tab ကိုပိတ်မည် Close &all tabs &a tab များအားလုံးကိုပိတ်မည် Close all tabs &but current tab &b ယခု tab မှလွဲပြီး tab များအားလုံးကိုပိတ်မည် Restore &most recently closed tab &Previous bookmark &P ရှေ့ကမှတ်တမ်း &Next bookmark &N နောက်မှတ်တမ်း &Add bookmark &A မှတ်တမ်းထည့်မည် Open copy in new &window Split view horizontally... Split view vertically... Close current view Thumb&nails Book&marks Composition &Remove bookmark &Rမှတ်တမ်းဖြုတ်မည် Edit '%1' at %2,%3... Open containing &folder &Save Remove all bookmarks မှတ်တမ်းများအားလုံးကိုဖျက်မည် &Contents &C မာတိကာ &About &A အကြောင်း &File &Fဖိုင် &Edit &Eပြင်ဆင်ရန် &View &V မြင်ကွင်း &Outline &Properties &Search &Sရှာဖွေရေး &Tool bars &Docks &Tabs &Tabs &Bookmarks &B မှတ်တမ်းများ &Help &H အကူအညီ Choose instance Instance: qpdfview::PageItem Go to page %1. %1 စာမျက်နှာသို့သွားမည် Go to page %1 of file '%2'. Open '%1'. Edit form field '%1'. Copy &text &t စာများကိုကူးမည် &Select text Copy &image &i ပုံများကိုကူးမည် Save image to &file... &f ပုံများကိုဖိုင်ထဲသို့သိမ်းမည် Save image to file ပုံများကို ဖိုင်ထဲသိမ်းမည် Warning သတိပေးချက် Could not save image to file '%1'. '%1' ဖိုင်ထဲသို့ပုံ မသိမ်းနိုင်ပါ Add &text &t စာများထည့်မည် Add &highlight &Copy link address &Select link address &Remove annotation &R မှတ်သားစာဖြုတ်မည် qpdfview::PdfSettingsWidget Antialiasing: Text antialiasing: None ဘာမျှမဟုတ် Full Reduced Text hinting: Ignore paper color: Overprint preview: Solid Shaped Thin line mode: Splash Arthur Backend: qpdfview::PluginHandler Image (%1) Compressed (%1) Supported formats (%1) Could not decompress '%1'! Could not match file type of '%1'! Critical Could not load plug-in for file type '%1'! qpdfview::PrintDialog Fit to page: Page ranges: All pages Even pages Odd pages Page set: Single page Two pages Four pages Six pages Nine pages Sixteen pages Number-up: Bottom to top and left to right Bottom to top and right to left Left to right and bottom to top Left to right and top to bottom Right to left and bottom to top Right to left and top to bottom Top to bottom and left to right Top to bottom and right to left Number-up layout: Extended options qpdfview::PsSettingsWidget Graphics antialias bits: Text antialias bits: qpdfview::RecentlyClosedMenu &Recently closed &Clear list &Clear list qpdfview::RecentlyUsedMenu Recently &used &u မကြာသေးခင်ကသုံးသွားသော &Clear list &Clear list qpdfview::SearchModel <b>%1</b> occurrences <b>%1</b> occurrences on page <b>%2</b> qpdfview::SearchableMenu Search for '%1'... qpdfview::SettingsDialog General &Behavior &Graphics &Graphics &Interface &I အသွင်အပြင် &Shortcuts &Modifiers Defaults နဂိုမူလအတိုင်း Defaults on current tab Mouse wheel modifiers Mouse button modifiers Open URL: URL ကိုဖွင့်မည် - Auto-refresh: Effective after restart. စက်ကိုပိတ်ပြီးပြန်ဖွင့်မှထိရောက်မည် Track recently used: Keep recently closed: Restore tabs: tab များကို ပြန်ထားမည် - Restore bookmarks: မှတ်တမ်းများကိုပြန်ထားမည် - Restore per-file settings: min Save database interval: Synchronize presentation: Default မူလပုံစံ Presentation screen: Synchronize split views: Zoom factor: Parallel search execution: ms None ဘာမျှမဟုတ် Highlight duration: Highlight color: Annotation color: '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number. Source editor: Use tiling: Keep obsolete pixmaps: Use device pixel ratio: Decorate pages: အလှချယ်ထားသောစာမျက်နှာများ- Decorate links: Decorate form fields: Background color: Paper color: Presentation background color: Pages per row: တစ်တိုင်တွင်စာမျက်နှာများ px Page spacing: Thumbnail spacing: Thumbnail size: Thumbnail အရွယ်အစား- Fit to viewport Document context menu: Tab context menu: Open in source editor: %1 MB %1 MB Cache size: Cache အရွယ်အစား- Minimal scrolling: Prefetch: Prefetch: Prefetch distance: Top ထိပ် Bottom အောက်ခြေ Left ဘယ်ဖက် Right ညာဖက် Tab position: Tab တည်နေရာ- As needed လိုအပ်သလို Always အမြဲတမ်း Exit after last tab: Scrollable menus: Searchable menus: Zoom to selection: Never ဘယ်တော့မှ Settings Tab visibility: Tab မြင်သာမှု့- Spread tabs: New tab next to current tab: Recently used count: Recently closed count: Extended search dock: Toggle tool and menu bars with fullscreen: File tool bar: ဖိုင် tool bar: Edit tool bar: Edit tool bar: View tool bar: မြင်ကွင်း tool bar: Use page label: Document title as tab title: Current page in window title: Instance name in window title: Synchronize outline view: Highlight current thumbnail: Limit thumbnails to results: Annotation overlay: Form field overlay: Zoom: Rotate: Scroll: Copy to clipboard: Add annotation: qpdfview::ShortcutHandler Action Key sequence Skip backward Skip forward Move up Move down Move left Move right qpdfview::TreeView &Expand all &E အားလုံးကိုဖြန့်မည် &Collapse all &C အားလုံးကိုချုံ့မည် qpdfview-0.4.18/translations/qpdfview_nb.ts0000644000000000000000000023325313516127411017165 0ustar 00000000000000 Norwegian Bokmal <nb@li.org> Erlend Østlie <erlendandreas12368@gmail.com> 2018-05-05 22:43+0000 2018-05-27 11:51+0000 qpdfview FULL NAME <EMAIL@ADDRESS> 2018-05-28 05:33+0000 # Norwegian Bokmal translation for qpdfview # Copyright (c) 2018 Rosetta Contributors and Canonical Ltd 2018 # This file is distributed under the same license as the qpdfview package. # FIRST AUTHOR <EMAIL@ADDRESS>, 2018. # Project-Id-Version,Report-Msgid-Bugs-To,POT-Creation-Date,PO-Revision-Date,Last-Translator,Language-Team,MIME-Version,Content-Type,Content-Transfer-Encoding,X-Launchpad-Export-Date,X-Qt-Contexts Model::ImageDocument Image (%1) Bilde (%1) Size størrelse Resolution Depth Format Monochrome Indexed 32 bits RGB 32 bits ARGB 16 bits RGB 24 bits RGB Model::PdfDocument Linearized Name Type Embedded Subset File Yes PDF version Encrypted No Model::PdfPage Information Version 0.20.1 or higher of the Poppler library is required to add or remove annotations. Model::PsDocument Title Created for Creator Creation date Format Language level QObject An empty instance name is not allowed. An empty search text is not allowed. Unknown command-line option '%1'. Using '--instance' requires an instance name. Using '--instance' is not allowed without using '--unique'. An instance name must only contain the characters "[A-Z][a-z][0-9]_" and must not begin with a digit. Using '--search' requires a search text. Could not prepare signal handler. QShortcut Shift Ctrl Alt Shift and Ctrl Shift and Alt Ctrl and Alt Right mouse button Middle mouse button None qpdfview::BookmarkDialog Bookmark Page: Label: Comment: Modified: qpdfview::BookmarkMenu &Open Open in new &tab &Remove bookmark qpdfview::Database Jump to page %1 qpdfview::DocumentView Information The source editor has not been set. Opening URL is disabled in the settings. Warning SyncTeX data for '%1' could not be found. Printing '%1'... Unlock %1 Password: Page %1 qpdfview::FileAttachmentAnnotationWidget Save... Save and open... Save file attachment Warning Could not open file attachment saved to '%1'. Could not save file attachment to '%1'. qpdfview::FontsDialog Fonts qpdfview::HelpDialog Help help.html Please replace by file name of localized help if available, e.g. "help_fr.html". Find previous Find next qpdfview::MainWindow Toggle tool bars Toggle menu bar Warning Could not open '%1'. Copy file path Select file path Close all tabs Close all tabs but this one Close all tabs to the left Close all tabs to the right Open Open in new tab Could not refresh '%1'. Save copy Could not save copy at '%1'. Save as Move to instance Failed to access instance '%1'. Could not save as '%1'. Could not print '%1'. Set first page Select the first page of the body matter: Jump to page Page: Jump to page %1 About qpdfview <p><b>qpdfview %1</b></p><p>qpdfview is a tabbed document viewer using Qt.</p><p>This version includes:<ul> <li>PDF support using Poppler %1</li> <li>PS support using libspectre %1</li> <li>DjVu support using DjVuLibre %1</li> <li>PDF support using Fitz %1</li> <li>Printing support using CUPS %1</li> &Edit bookmark The document '%1' has been modified. Do you want to save your changes? Page width Page size Match &case Whole &words Highlight &all &Open... Open in new &tab... Open &copy in new tab Move to &instance... &Refresh Information Instance-to-instance communication requires D-Bus support. </ul><p>See <a href="https://launchpad.net/qpdfview">launchpad.net/qpdfview</a> for more information.</p><p>&copy; %1 The qpdfview developers</p> Save &as... Save &copy... &Print... E&xit &Previous page &Next page &First page &Last page &Set first page... &Jump to page... Jump &backward Jump for&ward &Search... Find previous Find next Cancel search &Copy to clipboard &Add annotation Settings... &Continuous &Two pages Two pages &with cover page &Multiple pages Right to left Zoom &in Zoom &out Original &size Fit to page width Fit to page size Rotate &left Rotate &right Invert colors Convert to grayscale Trim margins Darken with paper color Lighten with paper color Fonts... &Fullscreen &Presentation... &Previous tab &Next tab &Close tab Close &all tabs Close all tabs &but current tab Restore &most recently closed tab &Previous bookmark &Next bookmark &Add bookmark Open copy in new &window Split view horizontally... Split view vertically... Close current view Thumb&nails Book&marks Composition &Remove bookmark Edit '%1' at %2,%3... Open containing &folder &Save Remove all bookmarks &Contents &About &File &Edit &View &Outline &Properties &Search &Tool bars &Docks &Tabs &Bookmarks &Help Choose instance Instance: qpdfview::PageItem Go to page %1. Go to page %1 of file '%2'. Open '%1'. Edit form field '%1'. Copy &text &Select text Copy &image Save image to &file... Save image to file Warning Could not save image to file '%1'. Add &text Add &highlight &Copy link address &Select link address &Remove annotation qpdfview::PdfSettingsWidget Antialiasing: Text antialiasing: None Full Reduced Text hinting: Ignore paper color: Overprint preview: Solid Shaped Thin line mode: Splash Arthur Backend: qpdfview::PluginHandler Image (%1) Compressed (%1) Supported formats (%1) Could not decompress '%1'! Could not match file type of '%1'! Critical Could not load plug-in for file type '%1'! qpdfview::PrintDialog Fit to page: Page ranges: All pages Even pages Odd pages Page set: Single page Two pages Four pages Six pages Nine pages Sixteen pages Number-up: Bottom to top and left to right Bottom to top and right to left Left to right and bottom to top Left to right and top to bottom Right to left and bottom to top Right to left and top to bottom Top to bottom and left to right Top to bottom and right to left Number-up layout: Extended options qpdfview::PsSettingsWidget Graphics antialias bits: Text antialias bits: qpdfview::RecentlyClosedMenu &Recently closed &Clear list qpdfview::RecentlyUsedMenu Recently &used &Clear list qpdfview::SearchModel <b>%1</b> occurrences <b>%1</b> occurrences on page <b>%2</b> qpdfview::SearchableMenu Search for '%1'... qpdfview::SettingsDialog General &Behavior &Graphics &Interface &Shortcuts &Modifiers Defaults Defaults on current tab Mouse wheel modifiers Mouse button modifiers Open URL: Auto-refresh: Effective after restart. Track recently used: Keep recently closed: Restore tabs: Restore bookmarks: Restore per-file settings: min Save database interval: Synchronize presentation: Default Presentation screen: Synchronize split views: Zoom factor: Parallel search execution: ms None Highlight duration: Highlight color: Annotation color: '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number. Source editor: Use tiling: Keep obsolete pixmaps: Use device pixel ratio: Decorate pages: Decorate links: Decorate form fields: Background color: Paper color: Presentation background color: Pages per row: px Page spacing: Thumbnail spacing: Thumbnail size: Fit to viewport Document context menu: Tab context menu: Open in source editor: %1 MB Cache size: Minimal scrolling: Prefetch: Prefetch distance: Top Bottom Left Right Tab position: As needed Always Exit after last tab: Scrollable menus: Searchable menus: Zoom to selection: Never Settings Tab visibility: Spread tabs: New tab next to current tab: Recently used count: Recently closed count: Extended search dock: Toggle tool and menu bars with fullscreen: File tool bar: Edit tool bar: View tool bar: Use page label: Document title as tab title: Current page in window title: Instance name in window title: Synchronize outline view: Highlight current thumbnail: Limit thumbnails to results: Annotation overlay: Form field overlay: Zoom: Rotate: Scroll: Copy to clipboard: Add annotation: qpdfview::ShortcutHandler Action Key sequence Skip backward Skip forward Move up Move down Move left Move right qpdfview::TreeView &Expand all &Collapse all qpdfview-0.4.18/translations/qpdfview_nds.ts0000644000000000000000000023320613516127411017350 0ustar 00000000000000 Low German <nds@li.org> A. Kohl <Unknown> 2012-12-03 22:06+0000 2018-05-27 11:51+0000 qpdfview FULL NAME <EMAIL@ADDRESS> 2018-05-28 05:33+0000 # Low German translation for qpdfview # Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 # This file is distributed under the same license as the qpdfview package. # FIRST AUTHOR <EMAIL@ADDRESS>, 2012. # Project-Id-Version,Report-Msgid-Bugs-To,POT-Creation-Date,PO-Revision-Date,Last-Translator,Language-Team,MIME-Version,Content-Type,Content-Transfer-Encoding,X-Launchpad-Export-Date,X-Qt-Contexts Model::ImageDocument Image (%1) Size Resolution Depth Format Monochrome Indexed 32 bits RGB 32 bits ARGB 16 bits RGB 24 bits RGB Model::PdfDocument Linearized Name Type Embedded Subset File Yes PDF version Encrypted No Model::PdfPage Information Version 0.20.1 or higher of the Poppler library is required to add or remove annotations. Model::PsDocument Title Created for Creator Creation date Format Language level QObject An empty instance name is not allowed. An empty search text is not allowed. Unknown command-line option '%1'. Using '--instance' requires an instance name. Using '--instance' is not allowed without using '--unique'. An instance name must only contain the characters "[A-Z][a-z][0-9]_" and must not begin with a digit. Using '--search' requires a search text. Could not prepare signal handler. QShortcut Shift Ctrl Alt Shift and Ctrl Shift and Alt Ctrl and Alt Right mouse button Middle mouse button None qpdfview::BookmarkDialog Bookmark Page: Label: Comment: Modified: qpdfview::BookmarkMenu &Open &Opmaken Open in new &tab &Remove bookmark qpdfview::Database Jump to page %1 qpdfview::DocumentView Information The source editor has not been set. Opening URL is disabled in the settings. Warning SyncTeX data for '%1' could not be found. Printing '%1'... Unlock %1 Password: Passwoort: Page %1 qpdfview::FileAttachmentAnnotationWidget Save... Save and open... Save file attachment Warning Could not open file attachment saved to '%1'. Could not save file attachment to '%1'. qpdfview::FontsDialog Fonts qpdfview::HelpDialog Help help.html Please replace by file name of localized help if available, e.g. "help_fr.html". Find previous Find next qpdfview::MainWindow Toggle tool bars Toggle menu bar Warning Could not open '%1'. Copy file path Select file path Close all tabs Close all tabs but this one Close all tabs to the left Close all tabs to the right Open Open in new tab Could not refresh '%1'. Save copy Could not save copy at '%1'. Save as Move to instance Failed to access instance '%1'. Could not save as '%1'. Could not print '%1'. Set first page Select the first page of the body matter: Jump to page Page: Jump to page %1 About qpdfview <p><b>qpdfview %1</b></p><p>qpdfview is a tabbed document viewer using Qt.</p><p>This version includes:<ul> <li>PDF support using Poppler %1</li> <li>PS support using libspectre %1</li> <li>DjVu support using DjVuLibre %1</li> <li>PDF support using Fitz %1</li> <li>Printing support using CUPS %1</li> &Edit bookmark The document '%1' has been modified. Do you want to save your changes? Page width Page size Match &case Whole &words Highlight &all &Open... Open in new &tab... Open &copy in new tab Move to &instance... &Refresh Information Instance-to-instance communication requires D-Bus support. </ul><p>See <a href="https://launchpad.net/qpdfview">launchpad.net/qpdfview</a> for more information.</p><p>&copy; %1 The qpdfview developers</p> Save &as... Save &copy... &Print... E&xit &Previous page &Next page &First page &Last page &Set first page... &Jump to page... Jump &backward Jump for&ward &Search... Find previous Find next Cancel search &Copy to clipboard &Add annotation Settings... &Continuous &Two pages Two pages &with cover page &Multiple pages Right to left Zoom &in Zoom &out Original &size Fit to page width Fit to page size Rotate &left Rotate &right Invert colors Convert to grayscale Trim margins Darken with paper color Lighten with paper color Fonts... &Fullscreen &Presentation... &Previous tab &Next tab &Close tab Close &all tabs Close all tabs &but current tab Restore &most recently closed tab &Previous bookmark &Next bookmark &Add bookmark Open copy in new &window Split view horizontally... Split view vertically... Close current view Thumb&nails Book&marks Composition &Remove bookmark Edit '%1' at %2,%3... Open containing &folder &Save Remove all bookmarks &Contents &About &File &Edit &View &Outline &Properties &Search &Tool bars &Docks &Tabs &Bookmarks &Help Choose instance Instance: qpdfview::PageItem Go to page %1. Go to page %1 of file '%2'. Open '%1'. Edit form field '%1'. Copy &text &Select text Copy &image Save image to &file... Save image to file Warning Could not save image to file '%1'. Add &text Add &highlight &Copy link address &Select link address &Remove annotation qpdfview::PdfSettingsWidget Antialiasing: Text antialiasing: None Full Reduced Text hinting: Ignore paper color: Overprint preview: Solid Shaped Thin line mode: Splash Arthur Backend: qpdfview::PluginHandler Image (%1) Compressed (%1) Supported formats (%1) Could not decompress '%1'! Could not match file type of '%1'! Critical Could not load plug-in for file type '%1'! qpdfview::PrintDialog Fit to page: Page ranges: All pages Even pages Odd pages Page set: Single page Two pages Four pages Six pages Nine pages Sixteen pages Number-up: Bottom to top and left to right Bottom to top and right to left Left to right and bottom to top Left to right and top to bottom Right to left and bottom to top Right to left and top to bottom Top to bottom and left to right Top to bottom and right to left Number-up layout: Extended options qpdfview::PsSettingsWidget Graphics antialias bits: Text antialias bits: qpdfview::RecentlyClosedMenu &Recently closed &Clear list qpdfview::RecentlyUsedMenu Recently &used &Clear list qpdfview::SearchModel <b>%1</b> occurrences <b>%1</b> occurrences on page <b>%2</b> qpdfview::SearchableMenu Search for '%1'... qpdfview::SettingsDialog General &Behavior &Graphics &Interface &Shortcuts &Modifiers Defaults Defaults on current tab Mouse wheel modifiers Mouse button modifiers Open URL: Auto-refresh: Effective after restart. Track recently used: Keep recently closed: Restore tabs: Restore bookmarks: Restore per-file settings: min Save database interval: Synchronize presentation: Default Presentation screen: Synchronize split views: Zoom factor: Parallel search execution: ms None Highlight duration: Highlight color: Annotation color: '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number. Source editor: Use tiling: Keep obsolete pixmaps: Use device pixel ratio: Decorate pages: Decorate links: Decorate form fields: Background color: Paper color: Presentation background color: Pages per row: px Page spacing: Thumbnail spacing: Thumbnail size: Fit to viewport Document context menu: Tab context menu: Open in source editor: %1 MB Cache size: Minimal scrolling: Prefetch: Prefetch distance: Top Bottom Left Right Tab position: As needed Always Exit after last tab: Scrollable menus: Searchable menus: Zoom to selection: Never Settings Tab visibility: Spread tabs: New tab next to current tab: Recently used count: Recently closed count: Extended search dock: Toggle tool and menu bars with fullscreen: File tool bar: Edit tool bar: View tool bar: Use page label: Document title as tab title: Current page in window title: Instance name in window title: Synchronize outline view: Highlight current thumbnail: Limit thumbnails to results: Annotation overlay: Form field overlay: Zoom: Rotate: Scroll: Copy to clipboard: Add annotation: qpdfview::ShortcutHandler Action Key sequence Skip backward Skip forward Move up Move down Move left Move right qpdfview::TreeView &Expand all &Collapse all qpdfview-0.4.18/translations/qpdfview_oc.ts0000644000000000000000000023356313516127411017173 0ustar 00000000000000 Occitan (post 1500) <oc@li.org> Cédric VALMARY (Tot en òc) <cvalmary@yahoo.fr> 2016-12-03 17:28+0000 2018-05-27 11:51+0000 qpdfview FULL NAME <EMAIL@ADDRESS> 2018-05-28 05:33+0000 # Occitan (post 1500) translation for qpdfview # Copyright (c) 2016 Rosetta Contributors and Canonical Ltd 2016 # This file is distributed under the same license as the qpdfview package. # FIRST AUTHOR <EMAIL@ADDRESS>, 2016. # Project-Id-Version,Report-Msgid-Bugs-To,POT-Creation-Date,PO-Revision-Date,Last-Translator,Language-Team,MIME-Version,Content-Type,Content-Transfer-Encoding,X-Launchpad-Export-Date,X-Qt-Contexts Model::ImageDocument Image (%1) Imatge (%1) Size Talha Resolution Resolucion Depth Prigondor Format Format Monochrome Monocròme Indexed Indexat 32 bits RGB RVB 32 bits 32 bits ARGB RVBA 32 bits 16 bits RGB RVB 16 bits 24 bits RGB RVB 24 bits Model::PdfDocument Linearized Linearizat Name Nom Type Tipe Embedded Integrat Subset Jòc parcial File Fichièr Yes Òc PDF version Version PDF Encrypted Chifrat No Non Model::PdfPage Information Informacion Version 0.20.1 or higher of the Poppler library is required to add or remove annotations. Model::PsDocument Title Títol Created for Creat per Creator Creator Creation date Data de creacion Format Format Language level Nivèl de lenga QObject An empty instance name is not allowed. An empty search text is not allowed. Unknown command-line option '%1'. Using '--instance' requires an instance name. Using '--instance' is not allowed without using '--unique'. An instance name must only contain the characters "[A-Z][a-z][0-9]_" and must not begin with a digit. Using '--search' requires a search text. Could not prepare signal handler. QShortcut Shift Maj Ctrl Ctrl Alt Alt Shift and Ctrl Maj e Ctrl Shift and Alt Maj e Alt Ctrl and Alt Ctrl e Alt Right mouse button Boton de dreita Middle mouse button Boton de mirga del mitan None Pas cap qpdfview::BookmarkDialog Bookmark Marcapagina Page: Pagina : Label: Labèl : Comment: Comentari : Modified: Modificat lo : qpdfview::BookmarkMenu &Open Do&brir Open in new &tab &Remove bookmark qpdfview::Database Jump to page %1 Anar a la pagina %1 qpdfview::DocumentView Information Informacion The source editor has not been set. Opening URL is disabled in the settings. Warning Avertiment SyncTeX data for '%1' could not be found. Printing '%1'... Impression de « %1 »… Unlock %1 Desverrolhar %1 Password: Senhal : Page %1 Pagina %1 qpdfview::FileAttachmentAnnotationWidget Save... Enregistrar... Save and open... Enregistrar e dobrir… Save file attachment Enregistrar la pèça junta Warning Avertiment Could not open file attachment saved to '%1'. Could not save file attachment to '%1'. qpdfview::FontsDialog Fonts Poliças qpdfview::HelpDialog Help Ajuda help.html Please replace by file name of localized help if available, e.g. "help_fr.html". help.html Find previous Recercar lo precedent Find next Recercar lo seguent qpdfview::MainWindow Toggle tool bars Afichatge de la barra d'aisinas Toggle menu bar Afichatge de la barra de menú Warning Avertiment Could not open '%1'. Impossible de dobrir « %1 ». Copy file path Copiar lo camin d'accès del fichièr Select file path Close all tabs Tampar totes los onglets Close all tabs but this one Tampar totes los onglets levat aqueste Close all tabs to the left Tampar totes los onglets a esquèrra Close all tabs to the right Tampar totes los onglets a dreita Open Dobrir Open in new tab Dobrir dins un onglet novèl Could not refresh '%1'. Impossible d'actualizar « %1 ». Save copy Enregistrar una còpia Could not save copy at '%1'. Impossible d'enregistrar la còpia cap a « %1 ». Save as Enregistrar jos Move to instance Failed to access instance '%1'. Could not save as '%1'. Impossible d'enregistrar en tant que « %1 ». Could not print '%1'. Impossible d'imprimir « %1 ». Set first page Definir la primièra pagina Select the first page of the body matter: Jump to page Anar a la pagina Page: Pagina : Jump to page %1 Anar a la pagina %1 About qpdfview A prepaus de qpdfview <p><b>qpdfview %1</b></p><p>qpdfview is a tabbed document viewer using Qt.</p><p>This version includes:<ul> <li>PDF support using Poppler %1</li> <li>PS support using libspectre %1</li> <li>DjVu support using DjVuLibre %1</li> <li>PDF support using Fitz %1</li> <li>Printing support using CUPS %1</li> &Edit bookmark &Editar lo signet The document '%1' has been modified. Do you want to save your changes? Page width Largor de pagina Page size Talha de las paginas Match &case Sensible a la &cassa Whole &words &Mots entièrs Highlight &all &Open... &Dobrir... Open in new &tab... Open &copy in new tab Move to &instance... &Refresh &Actualizar Information Instance-to-instance communication requires D-Bus support. </ul><p>See <a href="https://launchpad.net/qpdfview">launchpad.net/qpdfview</a> for more information.</p><p>&copy; %1 The qpdfview developers</p> Save &as... Enregistrar &jos… Save &copy... &Print... &Imprimir... E&xit &Quitar &Previous page Pagina &precedenta &Next page Pagina seg&uenta &First page &Primièra pagina &Last page &Darrièra pagina &Set first page... &Definir la primièra pagina… &Jump to page... &Anar a la pagina… Jump &backward Jump for&ward &Search... Rec&ercar... Find previous Recercar lo precedent Find next Recercar lo seguent Cancel search Anullar la recèrca &Copy to clipboard &Copiar cap al quichapapièrs &Add annotation &Apondre una anotacion Settings... Paramètres... &Continuous &Continú &Two pages &Doas paginas Two pages &with cover page &Multiple pages &Paginas multiplas Right to left De dreita a esquèrra Zoom &in Zoom &avant Zoom &out Zoom &arrièr Original &size Talha &originala Fit to page width Fit to page size Rotate &left Rotate &right Invert colors Inversar las colors Convert to grayscale Trim margins Darken with paper color Lighten with paper color Fonts... Poliças… &Fullscreen &Ecran complet &Presentation... &Presentacion… &Previous tab Onglet &precedent &Next tab Onglet &seguent &Close tab &Tampar l'onglet Close &all tabs Tampar &totes los onglets Close all tabs &but current tab Tampar totes los onglets &levat l'onglet actual Restore &most recently closed tab &Previous bookmark Signet &precedent &Next bookmark Signet &seguent &Add bookmark &Apondre un signet Open copy in new &window Split view horizontally... Split view vertically... Close current view Thumb&nails &Miniaturas Book&marks Si&gnets Composition Composicion &Remove bookmark Edit '%1' at %2,%3... Editar « %1 » a %2, %3… Open containing &folder &Save &Enregistrar Remove all bookmarks &Contents En&senhador &About &A prepaus de &File &Fichièr &Edit &Editar &View &Afichar &Outline &Properties &Proprietats &Search &Recercar &Tool bars &Barras d'aisinas &Docks &Encarts &Tabs &Tabulacions &Bookmarks &Marcapaginas &Help &Ajuda Choose instance Causir una instància Instance: Instància : qpdfview::PageItem Go to page %1. Anar a la pagina %1. Go to page %1 of file '%2'. Open '%1'. Dobrir « %1 ». Edit form field '%1'. Copy &text Copiar lo &tèxte &Select text &Seleccionar lo tèxte Copy &image Copiar &l'imatge Save image to &file... Enregistrar l'imatge dins lo &fichièr… Save image to file Enregistrar l'imatge dins un fichièr Warning Avertiment Could not save image to file '%1'. Impossible d'enregistrar l'imatge dins lo fichièr « %1 ». Add &text Apondre de &tèxte Add &highlight Metre en &susbrilhança &Copy link address &Copiar l'adreça del ligam &Select link address &Remove annotation qpdfview::PdfSettingsWidget Antialiasing: Anticrenelatge : Text antialiasing: None Pas cap Full Plen Reduced Reduit Text hinting: Ignore paper color: Overprint preview: Solid Plen Shaped Desformat Thin line mode: Splash Arthur Arthur Backend: Rèireplan : qpdfview::PluginHandler Image (%1) Imatge (%1) Compressed (%1) Supported formats (%1) Formats suportats (%1) Could not decompress '%1'! Could not match file type of '%1'! Critical Critic Could not load plug-in for file type '%1'! qpdfview::PrintDialog Fit to page: Ajustar a la pagina : Page ranges: Mantuna pagina : All pages Totas las paginas Even pages Paginas paras Odd pages Paginas imparas Page set: Configuracion de paginas : Single page Pagina unica Two pages Doas paginas Four pages Quatre paginas Six pages Sièis paginas Nine pages Nòu paginas Sixteen pages Setze paginas Number-up: Paginas per fuèlh : Bottom to top and left to right Bottom to top and right to left Left to right and bottom to top Left to right and top to bottom Right to left and bottom to top Right to left and top to bottom Top to bottom and left to right Top to bottom and right to left Number-up layout: Òrdre de las paginas : Extended options Opcions avançadas qpdfview::PsSettingsWidget Graphics antialias bits: Text antialias bits: qpdfview::RecentlyClosedMenu &Recently closed Tampat &recentament &Clear list &Voidar la lista qpdfview::RecentlyUsedMenu Recently &used Dobèrt &recentament &Clear list &Voidar la lista qpdfview::SearchModel <b>%1</b> occurrences <b>%1</b> ocurréncias <b>%1</b> occurrences on page <b>%2</b> qpdfview::SearchableMenu Search for '%1'... Recèrca de « %1 »… qpdfview::SettingsDialog General General &Behavior &Compòrtament &Graphics &Afichatge &Interface &Interfàcia &Shortcuts &Acorchis &Modifiers &Modificadors Defaults Per defaut Defaults on current tab Mouse wheel modifiers Mouse button modifiers Open URL: Dobrir una URL : Auto-refresh: Actualizacion automatica : Effective after restart. Track recently used: Keep recently closed: Restore tabs: Restablir los onglets : Restore bookmarks: Restablir los signets : Restore per-file settings: min min Save database interval: Synchronize presentation: Default Per defaut Presentation screen: Ecran de presentacion : Synchronize split views: Zoom factor: Nivèl de zoom : Parallel search execution: ms ms None Pas cap Highlight duration: Highlight color: Color d'enfasi : Annotation color: Color d'anotacion : '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number. Source editor: Editor de font : Use tiling: Keep obsolete pixmaps: Use device pixel ratio: Decorate pages: Decorar las paginas : Decorate links: Decorate form fields: Background color: Color de rèireplan : Paper color: Color del papièr : Presentation background color: Pages per row: Paginas per linha : px px Page spacing: Espaçament de las paginas : Thumbnail spacing: Espaçament de las miniaturas : Thumbnail size: Talha de las miniaturas : Fit to viewport Document context menu: Menú contextual del document : Tab context menu: Menú contextual de l'onglet : Open in source editor: %1 MB %1 Mio Cache size: Talha del cache : Minimal scrolling: Desfilament minimum : Prefetch: Precargament : Prefetch distance: Top Naut Bottom Bas Left Esquèrra Right Dreita Tab position: Posicion de l'onglet : As needed Se necessari Always Totjorn Exit after last tab: Scrollable menus: Menús desenrotlants : Searchable menus: Menús consultables : Zoom to selection: Zoomar sus la seleccion : Never Pas jamai Settings Paramètres Tab visibility: Visibilitat de l'onglet : Spread tabs: Repartir los onglets : New tab next to current tab: Recently used count: Recently closed count: Extended search dock: Toggle tool and menu bars with fullscreen: File tool bar: Barra d'aisinas Fichièr : Edit tool bar: Barra d'aisinas Edicion : View tool bar: Barra d'aisinas Afichatge : Use page label: Utilizar lo libellat de la pagina : Document title as tab title: Current page in window title: Instance name in window title: Synchronize outline view: Highlight current thumbnail: Limit thumbnails to results: Annotation overlay: Form field overlay: Zoom: Zoom : Rotate: Rotacion : Scroll: Desfilament : Copy to clipboard: Add annotation: Apondre una anotacion : qpdfview::ShortcutHandler Action Accion Key sequence Sequéncia clavièr Skip backward Tornar a la precedenta Skip forward Avança rapida Move up Desplaçar cap amont Move down Desplaçar cap aval Move left Desplaçar cap a esquèrra Move right Desplaçar cap a dreita qpdfview::TreeView &Expand all Desvolopar &tot &Collapse all Reduire &tot MainWindow &Save copy... &Enregistrar una còpia… qpdfview-0.4.18/translations/qpdfview_pl.ts0000644000000000000000000023427313516127411017204 0ustar 00000000000000 Model::ImageDocument Image (%1) Obraz (%1) Size Rozmiar Resolution Rozdzielczość Depth Głębia kolorów Format Format Monochrome Monochromatyczny Indexed Indeksowany 32 bits RGB 32-bitowe RGB 32 bits ARGB 32-bitowe ARGB 16 bits RGB 16-bitowe RGB 24 bits RGB 24-bitowe RGB Model::PdfDocument Linearized Linearyzowane Name Nazwa Type Rodzaj Embedded Osadzony Subset Podzbiór File Plik Yes Tak PDF version Wersja PDF Encrypted Zaszyfrowane No Nie Model::PdfPage Information Informacja Version 0.20.1 or higher of the Poppler library is required to add or remove annotations. Wersja 0.20.1 lub wyższa biblioteki Poppler jest wymagana by dodawać lub usuwać adnotacje. Model::PsDocument Title Tytuł Created for Utworzono dla Creator Utworzył Creation date Data utworzenia Format Format Language level Poziom języka QObject An empty instance name is not allowed. Pusta nazwa instancji nie jest dozwolona. An empty search text is not allowed. Wyszukiwanie pustego tekstu jest niedozwolone. Unknown command-line option '%1'. Nieznana opcja wiersza poleceń '%1'. Using '--instance' requires an instance name. Użycie opcji '--instance' wymaga podania nazwy. Using '--instance' is not allowed without using '--unique'. Użycie opcji '--instance' nie jest dozwolone bez opcji '--unique'. An instance name must only contain the characters "[A-Z][a-z][0-9]_" and must not begin with a digit. Nazwa instancji musi składać się tylko ze znaków "[A-Z][a-z][0-9]_" i nie może zaczynać się od cyfry. Using '--search' requires a search text. Użycie '--search' wymaga podania szukanego tekstu. Could not prepare signal handler. Nie można przygotować obsługi sygnału. QShortcut Shift Shift Ctrl Ctrl Alt Alt Shift and Ctrl Shift i Ctrl Shift and Alt Shift i Alt Ctrl and Alt Ctrl i Alt Right mouse button Prawy przycisk myszy Middle mouse button Środkowy przycisk myszy None Brak qpdfview::BookmarkDialog Bookmark Zakładka Page: Strona: Label: Etykieta: Comment: Komentarz: Modified: Zmodyfikowano: qpdfview::BookmarkMenu &Open &Otwórz Open in new &tab Otwórz w nowej &karcie &Remove bookmark &Usuń zakładkę qpdfview::Database Jump to page %1 Przejdź do strony %1 qpdfview::DocumentView Information Informacje The source editor has not been set. Nie ustawiono jeszcze edytora źródła. Opening URL is disabled in the settings. Otwieranie adresów URL jest wyłączone w ustawieniach. Warning Ostrzeżenie SyncTeX data for '%1' could not be found. Dane systemu SyncTeX dla '%1' nie zostały znalezione. Printing '%1'... Drukowanie '%1'... Unlock %1 Odblokuj %1 Password: Hasło: Page %1 Strona %1 qpdfview::FileAttachmentAnnotationWidget Save... Zapisz... Save and open... Zapisz i otwórz... Save file attachment Zapisz plik załącznika Warning Ostrzeżenie Could not open file attachment saved to '%1'. Nie można otworzyć załącznika pliku zapisanego do '%1'. Could not save file attachment to '%1'. Nie udało się zapisać pliku załącznika do '%1'. qpdfview::FontsDialog Fonts Czcionki qpdfview::HelpDialog Help Pomoc help.html Please replace by file name of localized help if available, e.g. "help_fr.html". help.html Find previous Znajdź poprzedni Find next Znajdź następny qpdfview::MainWindow Toggle tool bars Przełącz paski narzędzi Toggle menu bar Przełącz pasek menu Warning Ostrzeżenie Could not open '%1'. Nie można otworzyć '%1'. Copy file path Kopiuj ścieżkę pliku Select file path Zaznacz ścieżkę pliku Close all tabs Zamknij wszystkie karty Close all tabs but this one Zamknij wszystkie karty, ale nie tą Close all tabs to the left Zamknij wszystkie karty w lewo Close all tabs to the right Zamknij wszystkie karty w prawo Open Otwórz Open in new tab Otwórz w nowej karcie Could not refresh '%1'. Nie można odświeżyć '%1'. Save copy Zapisz kopię Could not save copy at '%1'. Nie można zapisać kopii jako '%1'. Save as Zapisz jako Move to instance Przenieś do instancji Failed to access instance '%1'. Nie udało się uzyskać dostępu do instancji '%1'. Could not save as '%1'. Nie można zapisać jako '%1'. Could not print '%1'. Nie można wydrukować '%1'. Set first page Ustaw pierwszą stronę Select the first page of the body matter: Ustaw pierwszą stronę głównego dokumentu: Jump to page Skocz do strony Page: Strona: Jump to page %1 Przejdź do strony %1 About qpdfview O programie qpdfview <p><b>qpdfview %1</b></p><p>qpdfview is a tabbed document viewer using Qt.</p><p>This version includes:<ul> <p><b>qpdfview %1</b></p><p>qpdfview to przeglądarka dokumentów z kartami używająca interfejsu Qt.</p><p>Ta wersja zawiera:<ul> <li>PDF support using Poppler %1</li> <li>Obsługa PDF poprzez Poppler %1</li> <li>PS support using libspectre %1</li> <li>Obsługa PS poprzez libspectre %1</li> <li>DjVu support using DjVuLibre %1</li> <li>Obsługa DjVu poprzez DjVuLibre %1</li> <li>PDF support using Fitz %1</li> <li>Obsługa PDF poprzez Fitz %1</li> <li>Printing support using CUPS %1</li> <li>Obsługa drukowania poprzez CUPS %1</li> &Edit bookmark &Edytuj zakładkę The document '%1' has been modified. Do you want to save your changes? Dokument '%1' został zmieniony. Czy chcesz zapisać swoje zmiany? Page width Szerokość strony Page size Rozmiar strony Match &case Uwzględniaj &wielkość liter Whole &words &Wszystkie słowa Highlight &all Podświetl &wszystko &Open... &Otwórz... Open in new &tab... Otwórz w nowej &karcie... Open &copy in new tab Otwórz &kopię w nowej karcie Move to &instance... Przenieś do &instancji… &Refresh O&dśwież Information Informacje Instance-to-instance communication requires D-Bus support. </ul><p>See <a href="https://launchpad.net/qpdfview">launchpad.net/qpdfview</a> for more information.</p><p>&copy; %1 The qpdfview developers</p> Save &as... Zapisz &jako... Save &copy... Zapisz &kopię... &Print... &Drukuj... E&xit Zakoń&cz &Previous page Pop&rzednia strona &Next page &Następna strona &First page &Pierwsza strona &Last page &Ostatnia strona &Set first page... %Ustaw pierwszą stronę... &Jump to page... &Skocz do strony... Jump &backward Przejdź &do tyłu Jump for&ward Przejdź do p&rzodu &Search... &Znajdź... Find previous Znajdź poprzedni Find next Znajdź następny Cancel search Anuluj wyszukiwanie &Copy to clipboard &Kopiuj do schowka &Add annotation &Dodaj adnotację Settings... Ustawienia... &Continuous Widok &ciągły &Two pages &Dwie strony Two pages &with cover page Dwie strony z &okładką &Multiple pages &Wiele stron Right to left Od prawej do lewej Zoom &in &Powiększ Zoom &out Po&mniejsz Original &size Wielkość &oryginalna Fit to page width Dostosuj do szerokości Fit to page size Dostosuj do wielkości Rotate &left Obróć w &lewo Rotate &right Obróć w &prawo Invert colors Odwróć kolory Convert to grayscale Przekształć na skalę szarości Trim margins Marginesy cięcia Darken with paper color Ciemniejszy od koloru papieru Lighten with paper color Jaśniejszy od koloru papieru Fonts... Czcionki... &Fullscreen &Pełny ekran &Presentation... Pre&zentacja... &Previous tab &Poprzednia karta &Next tab &Następna karta &Close tab &Zamknij kartę Close &all tabs Zamknij &wszystkie karty Close all tabs &but current tab Zamknij &pozostałe karty Restore &most recently closed tab Przywróć ostatnio za&mkniętą kartę &Previous bookmark &Poprzednia zakładka &Next bookmark &Następna zakładka &Add bookmark &Dodaj zakładkę Open copy in new &window Split view horizontally... Split view vertically... Close current view Zamknięcie bieżącego widoku Thumb&nails Mi&niaturki Book&marks Zakła&dki Composition Kompozycja &Remove bookmark &Usuń zakładkę Edit '%1' at %2,%3... Edycja '%1' w %2,%3... Open containing &folder Otwórz zawierający &katalog &Save Zapi&sz Remove all bookmarks Usuń wszystkie zakładki &Contents &Spis treści &About &O progamie &File &Plik &Edit &Edycja &View &Widok &Outline &Konspekt &Properties &Właściwości &Search &Wyszukaj &Tool bars Paski &narzędzi &Docks &Widoki &Tabs &Karty &Bookmarks &Zakładki &Help P&omoc Choose instance Wybierz instancję Instance: Instancja: qpdfview::PageItem Go to page %1. Skocz do strony %1. Go to page %1 of file '%2'. Przejdź do strony %1 pliku '%2'. Open '%1'. Otwórz '%1'. Edit form field '%1'. Edytuj pole formularza '%1'. Copy &text Kopiuj &tekst &Select text &Zaznacz tekst Copy &image Kopiuj &obraz Save image to &file... Zapisz obraz do &pliku... Save image to file Zapisz obraz do pliku Warning Ostrzeżenie Could not save image to file '%1'. Nie można zapisać obrazu do pliku '%1'. Add &text Dodaj &tekst Add &highlight Dodaj po&dświetlenie &Copy link address %Skopiuj adres odnośnika &Select link address &Zaznacz adres odnośnika &Remove annotation &Usuń adnotację qpdfview::PdfSettingsWidget Antialiasing: Antyaliasing: Text antialiasing: Antyaliasing tekstu: None Brak Full Pełny Reduced Zredukowano Text hinting: Tekst podpowiedzi: Ignore paper color: Ignoruj kolor papieru: Overprint preview: Podgląd wydruku: Solid Jednolity Shaped Uformowane Thin line mode: Tryb cienkiej linii: Splash Ekran powitalny Arthur Arthur Backend: Mechanizm: qpdfview::PluginHandler Image (%1) Obraz (%1) Compressed (%1) Supported formats (%1) Obsługiwane formaty (%1) Could not decompress '%1'! Could not match file type of '%1'! Nie można dopasować typu pliku '%1'! Critical Krytyczny Could not load plug-in for file type '%1'! Nie można wczytać wtyczki dla typu pliku '%1'! qpdfview::PrintDialog Fit to page: Dopasuj do strony: Page ranges: Zakres stron: All pages Wszystkie strony Even pages Parzyste strony Odd pages Nieparzyste strony Page set: Wybór stron: Single page Pojedyncza strona Two pages Dwie strony Four pages Cztery strony Six pages Sześć stron Nine pages Dziewięć stron Sixteen pages Szesnaście stron Number-up: Stron na arkusz: Bottom to top and left to right Od dołu do góry i od lewej do prawej Bottom to top and right to left Od dołu do góry i od prawej do lewej Left to right and bottom to top Od lewej do prawej i od dołu do góry Left to right and top to bottom Od lewej do prawej i od góry do dołu Right to left and bottom to top Od prawej do lewej i od dołu do góry Right to left and top to bottom Od prawej do lewej i od góry do dołu Top to bottom and left to right Od góry do dołu i od lewej do prawej Top to bottom and right to left Od góry do dołu i od prawej do lewej Number-up layout: Kolejność: Extended options Opcje rozszerzone qpdfview::PsSettingsWidget Graphics antialias bits: Antyaliasing grafiki: Text antialias bits: Antyaliasing tekstu: qpdfview::RecentlyClosedMenu &Recently closed O&statnio zamknięte &Clear list &Wyczyść listę qpdfview::RecentlyUsedMenu Recently &used Ostatnio &użyte &Clear list &Wyczyść listę qpdfview::SearchModel <b>%1</b> occurrences <b>%1</b> występowań <b>%1</b> occurrences on page <b>%2</b> <b>%1</b> występowań na stronie <b>%2</b> qpdfview::SearchableMenu Search for '%1'... Szukaj '%1'... qpdfview::SettingsDialog General Ogólne &Behavior &Zachowanie &Graphics &Wyświetlanie &Interface &Interfejs &Shortcuts &Skróty &Modifiers &Klawisze Defaults Domyślne Defaults on current tab Domyślne na bieżącej karcie Mouse wheel modifiers Modyfikacje kółka myszy Mouse button modifiers Modyfikacje przycisków myszy Open URL: Otwieraj URL-e: Auto-refresh: Autoodświeżanie: Effective after restart. Zmiany dostępne po ponownym uruchomieniu. Track recently used: Śledź ostatnio użyte: Keep recently closed: Zachowaj ostatnio zamknięte: Restore tabs: Przywróć karty: Restore bookmarks: Przywróć zakładki: Restore per-file settings: Przywróć ustawienia dla plików: min min. Save database interval: Odstęp zapisu bazy danych: Synchronize presentation: Synchronizuj prezentację: Default Domyślny Presentation screen: Ekran do prezentacji: Synchronize split views: Zoom factor: Współczynnik powiększania: Parallel search execution: ms milisekund None Brak Highlight duration: Czas trwania podświetlenia: Highlight color: Kolor podświetlenia: Annotation color: Kolor adnotacji: '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number. sekwencja '%1' jest zastępowana przez ścieżkę bezwzględną. '%2' i '%3' są zastępowane odpowiednio przez numer linii i kolumny. Source editor: Edytor tekstu źródłowego: Use tiling: Użycie kafelkowania: Keep obsolete pixmaps: Zachowaj przestarzałe mapy pikseli: Use device pixel ratio: Użyj współczynnika piksela urządzenia: Decorate pages: Dekoracje stron: Decorate links: Dekoracje linków: Decorate form fields: Dekoracje pól formularza: Background color: Kolor tła: Paper color: Kolor papieru: Presentation background color: Kolor tła prezentacji: Pages per row: Stron w wierszu: px piks. Page spacing: Odstępy między stronami: Thumbnail spacing: Odstępy między miniaturami: Thumbnail size: Wielkość miniatury: Fit to viewport Dopasuj do okna podglądu Document context menu: Menu kontekstowe dokumentu: Tab context menu: Menu kontekstowe karty: Open in source editor: Otwórz w edytorze źródła: %1 MB %1 MB Cache size: Wielkość bufora: Minimal scrolling: Minimalne przewinięcie: Prefetch: Ładowanie z wyprzedzeniem: Prefetch distance: Dystans wyprzedzenia: Top Na górze Bottom Na dole Left Po lewej Right Po prawej Tab position: Położenie paska kart: As needed Gdy konieczne Always Zawsze Exit after last tab: Wyjdź po ostatniej karcie: Scrollable menus: Przewijane menu: Searchable menus: Menu wyszukiwania: Zoom to selection: Powiększenie przy zaznaczeniu: Never Nigdy Settings Ustawienia Tab visibility: Widoczność paska kart: Spread tabs: Rozciągnięcie kart: New tab next to current tab: Nowa karta obok bieżącej karty: Recently used count: Ostatnio używane liczba: Recently closed count: Ilość ostatnio zamkniętych: Extended search dock: Rozszerzony dok wyszukiwania: Toggle tool and menu bars with fullscreen: Przełącz paski narzędzi i menu wraz z pełnym ekranem: File tool bar: Pasek narzędziowy "Plik": Edit tool bar: Pasek narzędziowy "Edycja": View tool bar: Pasek narzędziowy "Widok": Use page label: Użyj etykietę strony: Document title as tab title: Tytuł dokumentu jako tytuł karty: Current page in window title: Bieżąca strona w tytule okna: Instance name in window title: Nazwa instancji w tytule okna: Synchronize outline view: Synchronizuj widok konspektu: Highlight current thumbnail: Zaznacz bieżącą miniaturkę: Limit thumbnails to results: Limit miniatur do: Annotation overlay: Pokrycie adnotacji: Form field overlay: Pokrycie pola formularza: Zoom: Powiększenie: Rotate: Obrót: Scroll: Przewijaj: Copy to clipboard: Kopiuj do schowka: Add annotation: Dodaj adnotację: qpdfview::ShortcutHandler Action Działanie Key sequence Sekwencja klawiszy Skip backward Przejdź wstecz Skip forward Przejdź naprzód Move up Przesuń w górę Move down Przesuń w dół Move left Idź w lewo Move right Idź w prawo qpdfview::TreeView &Expand all &Rozszerz wszystko &Collapse all &Zwiń wszystko qpdfview-0.4.18/translations/qpdfview_pt.ts0000644000000000000000000023404713516127411017213 0ustar 00000000000000 Model::ImageDocument Image (%1) Imagem (%1) Size Tamanho Resolution Resolução Depth Profundidade Format Formato Monochrome Monocromático Indexed Indexado 32 bits RGB RGB 32 bits 32 bits ARGB ARGB 32 bits 16 bits RGB RGB 16 bits 24 bits RGB RGB 24 bits Model::PdfDocument Linearized Linearizado Name Nome Type Tipo Embedded Incorporado Subset Subconjunto File Ficheiro Yes Sim PDF version Versão PDF Encrypted Encriptado No Não Model::PdfPage Information Informações Version 0.20.1 or higher of the Poppler library is required to add or remove annotations. Tem que instalar a versão 0.20.1 da biblioteca poppler para adicionar ou remover notas. Model::PsDocument Title Titulo Created for Criado para Creator Autor Creation date Data de criação Format Formato Language level Nível de linguagem QObject An empty instance name is not allowed. Não é permitido um nome de instância vazio. An empty search text is not allowed. Não é permitida uma procura de texto vazia. Unknown command-line option '%1'. %1 é uma opção desconhecida na linha de comandos. Using '--instance' requires an instance name. A opção --instance requer o nome da instância. Using '--instance' is not allowed without using '--unique'. A opção --instance obriga à utilização da opção --unique. An instance name must only contain the characters "[A-Z][a-z][0-9]_" and must not begin with a digit. O nome da instância só pode possuir os caracteres "[A-Z][a-z][0-9]_" e não pode iniciar com um dígito. Using '--search' requires a search text. A opção --search requer o texto a procurar. Could not prepare signal handler. Não foi possível preparar o gestor de sinais. QShortcut Shift Shift Ctrl Ctrl Alt Alt Shift and Ctrl Shift e Ctrl Shift and Alt Shift e Alt Ctrl and Alt Ctrl e Alt Right mouse button Botão direito do rato Middle mouse button Botão central do rato None Nenhum qpdfview::BookmarkDialog Bookmark Marcador Page: Página: Label: Etiqueta: Comment: Comentário: Modified: Modificado: qpdfview::BookmarkMenu &Open A&brir Open in new &tab Abrir em novo &separador &Remove bookmark &Remover marcador qpdfview::Database Jump to page %1 Ir para a página %1 qpdfview::DocumentView Information Informações The source editor has not been set. Editor de fonte não definido. Opening URL is disabled in the settings. A abertura de URL está inativa nas definições. Warning Aviso SyncTeX data for '%1' could not be found. Não foi possível encontrar os dados SyncText para %1. Printing '%1'... A imprimir %1... Unlock %1 Desbloquear %1 Password: Palavra-passe: Page %1 Página %1 qpdfview::FileAttachmentAnnotationWidget Save... Guardar... Save and open... Guardar e abrir... Save file attachment Guardar anexo... Warning Aviso Could not open file attachment saved to '%1'. Não foi possível abrir o anexo guardado em %1. Could not save file attachment to '%1'. Não foi possível guardar o anexo em %1. qpdfview::FontsDialog Fonts Tipos de letra qpdfview::HelpDialog Help Ajuda help.html Please replace by file name of localized help if available, e.g. "help_fr.html". help_pt.html Find previous Localizar anterior Find next Localizar seguinte qpdfview::MainWindow Toggle tool bars Alternar barra de ferramentas Toggle menu bar Alternar barra de menu Warning Aviso Could not open '%1'. Não foi possível abrir %1. Copy file path Copiar caminho do ficheiro Select file path Selecionar caminho do ficheiro Close all tabs Fechar todos os separadores Close all tabs but this one Fechar todos os separadores exceto este Close all tabs to the left Fechar todos os separadores à esquerda Close all tabs to the right Fechar todos os separadores à direita Open Abrir Open in new tab Abrir em novo separador Could not refresh '%1'. Não foi possível atualizar %1. Save copy Guardar uma cópia Could not save copy at '%1'. Não foi possível guardar a cópia em %1. Save as Guardar como Move to instance Mover para a instância Failed to access instance '%1'. Erro ao aceder à instância %1. Could not save as '%1'. Não foi possível guardar como %1. Could not print '%1'. Não foi possível imprimir %1. Set first page Definir primeira página Select the first page of the body matter: Selecione a primeira página do conteúdo: Jump to page Ir para a página Page: Página: Jump to page %1 Ir para a página %1 About qpdfview Sobre o qpdfview <p><b>qpdfview %1</b></p><p>qpdfview is a tabbed document viewer using Qt.</p><p>This version includes:<ul> <p><b>qpdfview %1</b></p><p>O qpdfview é um visualizador de documentos que utiliza a tecnologia Qt.</p><p>Esta versão inclui:<ul> <li>PDF support using Poppler %1</li> <li>Suporte PDF através de Poppler %1</li> <li>PS support using libspectre %1</li> <li>Suporte PS através de libspectre %1</li> <li>DjVu support using DjVuLibre %1</li> <li>Suporte DjVu através de DjVuLibre %1</li> <li>PDF support using Fitz %1</li> <li>Suporte PDF através de Fitz %1</li> <li>Printing support using CUPS %1</li> <li>Suporte de impressão através de CUPS %1</li> &Edit bookmark &Editar marcador The document '%1' has been modified. Do you want to save your changes? O documento %1 foi modificado. Pretende guardar as alterações? Page width Largura da página Page size Tamanho da página Match &case Diferenciar maiús&cula/minúscula Whole &words &Palavra completa Highlight &all Realç&ar tudo &Open... &Abrir... Open in new &tab... Abrir em novo &separador... Open &copy in new tab Abrir uma &cópia em novo separador Move to &instance... Mover para a &instância... &Refresh Atualiza&r Information Informações Instance-to-instance communication requires D-Bus support. </ul><p>See <a href="https://launchpad.net/qpdfview">launchpad.net/qpdfview</a> for more information.</p><p>&copy; %1 The qpdfview developers</p> Save &as... Gu&ardar como... Save &copy... Guardar &cópia &Print... Im&primir... E&xit &Sair &Previous page &Página anterior &Next page Página segui&nte &First page Pri&meira página &Last page Ú&ltima página &Set first page... &Definir primeira página... &Jump to page... &Ir para a página... Jump &backward &Recuar Jump for&ward A&vançar &Search... Proc&urar... Find previous Procurar anterior Find next Procurar seguinte Cancel search Cancelar &Copy to clipboard &Copiar para a área de transferência &Add annotation &Adicionar nota Settings... Definições... &Continuous &Contínuo &Two pages &Duas páginas Two pages &with cover page Duas páginas com &folha de rosto &Multiple pages &Múltiplas páginas Right to left Da direita para a esquerda Zoom &in Ampl&iar Zoom &out &Reduzir Original &size &Tamanho original Fit to page width Ajustar à largura da página Fit to page size Ajustar ao tamanho da página Rotate &left Rodar à &esquerda Rotate &right R&odar à direita Invert colors Inverter cores Convert to grayscale Converter para escala de cinza Trim margins Reduzir margens Darken with paper color Escuro com cor de papel Lighten with paper color Claro com cor de papel Fonts... Tipo de letra... &Fullscreen &Ecrã completo &Presentation... A&presentação... &Previous tab Separador &anterior &Next tab Separador &seguinte &Close tab Fe&char separador Close &all tabs Fech&ar todos os separadores Close all tabs &but current tab Fechar todos &os separadores exceto o atual Restore &most recently closed tab Restaurar separador recente&mente fechado &Previous bookmark Marcador &anterior &Next bookmark Marcador se&guinte &Add bookmark &Adicionar marcador Open copy in new &window Split view horizontally... Split view vertically... Close current view Thumb&nails Mi&niaturas Book&marks &Marcadores Composition Composição &Remove bookmark &Remover marcador Edit '%1' at %2,%3... Editar '%1' em %2,%3... Open containing &folder Abrir pasta &respetiva &Save &Guardar Remove all bookmarks Remover todos os marcadores &Contents &Conteúdo &About &Sobre &File &Ficheiro &Edit &Editar &View &Ver &Outline Tópic&os &Properties &Propriedades &Search &Procurar &Tool bars Barra de ferramen&tas &Docks &Docas &Tabs &Separadores &Bookmarks &Marcadores &Help Aj&uda Choose instance Escolher instância Instance: Instância: qpdfview::PageItem Go to page %1. Ir para a página %1. Go to page %1 of file '%2'. Ir para a página %1 do ficheiro %2. Open '%1'. Abrir %1. Edit form field '%1'. Editar o campo %1. Copy &text Copiar &texto &Select text &Selecionar texto Copy &image Copiar &imagem Save image to &file... Guardar imagem no &ficheiro... Save image to file Guardar imagem no ficheiro Warning Aviso Could not save image to file '%1'. Não foi possível guardar a imagem no ficheiro %1. Add &text Adicionar &texto Add &highlight Adicionar r&ealce &Copy link address &Copiar endereço da ligação &Select link address &Selecionar endereço da ligação &Remove annotation &Remover nota qpdfview::PdfSettingsWidget Antialiasing: Suavização: Text antialiasing: Suavização de texto: None Nenhuma Full Total Reduced Reduzida Text hinting: Hinting de texto: Ignore paper color: Ignorar cor do papel: Overprint preview: Pré-visualização: Solid Sólida Shaped Com formas Thin line mode: Modo de linha: Splash Ecrã inicial Arthur Artur Backend: Infraestrutura: qpdfview::PluginHandler Image (%1) Imagem (%1) Compressed (%1) Supported formats (%1) Formatos suportados (%1) Could not decompress '%1'! Could not match file type of '%1'! Não foi possível obter o tipo de ficheiro de %1! Critical Crítico Could not load plug-in for file type '%1'! Não foi possível carregar o plugin para os ficheiros %1! qpdfview::PrintDialog Fit to page: Ajustar à página: Page ranges: Intervalo de páginas: All pages Todas as páginas Even pages Páginas pares Odd pages Páginas ímpares Page set: Páginas: Single page Uma página Two pages Duas páginas Four pages Quatro páginas Six pages Seis páginas Nine pages Nove páginas Sixteen pages Dezasseis páginas Number-up: Número: Bottom to top and left to right De baixo para cima e da esquerda para a direita Bottom to top and right to left De baixo para cima e da direita para a esquerda Left to right and bottom to top Da esquerda para a direita e de baixo para cima Left to right and top to bottom Da esquerda para a direita e de cima para baixo Right to left and bottom to top Da direita para a esquerda e de baixo para cima Right to left and top to bottom Da direita para a esquerda e de cima para baixo Top to bottom and left to right De cima para baixo e da esquerda para a direita Top to bottom and right to left De cima para baixo e da direita para a esquerda Number-up layout: Esquema: Extended options Opções detalhadas qpdfview::PsSettingsWidget Graphics antialias bits: Bits de suavização de objetos: Text antialias bits: Bits de suavização de texto: qpdfview::RecentlyClosedMenu &Recently closed Fechados &recentemente &Clear list &Limpar lista qpdfview::RecentlyUsedMenu Recently &used Doc&umentos recentes &Clear list &Limpar lista qpdfview::SearchModel <b>%1</b> occurrences <b>%1</b> ocorrências <b>%1</b> occurrences on page <b>%2</b> <b>%1</b> ocorrências na página <b>%2</b> qpdfview::SearchableMenu Search for '%1'... Procurar por %1... qpdfview::SettingsDialog General Geral &Behavior &Comportamento &Graphics Objetos &gráficos &Interface &Interface &Shortcuts Atalho&s &Modifiers &Modificadores Defaults Predefinições Defaults on current tab Predefinições no separador atual Mouse wheel modifiers Modificadores da roda do rato Mouse button modifiers Modificadores dos botões do rato Open URL: Abrir URL: Auto-refresh: Atualização automática: Effective after restart. As alterações serão aplicadas ao reiniciar. Track recently used: Utilizado recentemente: Keep recently closed: Manter fechados recentemente: Restore tabs: Restaurar separadores: Restore bookmarks: Restaurar marcadores: Restore per-file settings: Restaurar definições por ficheiro: min min Save database interval: Intervalo para guardar: Synchronize presentation: Sincronizar apresentação: Default Predefinição Presentation screen: Ecrã de apresentação: Synchronize split views: Zoom factor: Fator de ampliação: Parallel search execution: ms ms None Não Highlight duration: Duração de realce: Highlight color: Cor de realce: Annotation color: Cor da nota: '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number. %1 será substituido pelo caminho absoluto. %2 e %3 serão substituidos pelos números de linha e coluna. Source editor: Editor de código: Use tiling: Usar mosaicos: Keep obsolete pixmaps: Manter pixmaps obsoletos: Use device pixel ratio: Utilizar rácio de pixeis: Decorate pages: Decorar páginas: Decorate links: Decorar ligações: Decorate form fields: Decorar campos: Background color: Cor de fundo: Paper color: Cor do papel: Presentation background color: Cor de fundo da apresentação: Pages per row: Páginas por linha: px px Page spacing: Espaçamento entre páginas: Thumbnail spacing: Espaçamento entre miniaturas: Thumbnail size: Tamanho de miniaturas: Fit to viewport Ajustar ao ecrã Document context menu: Menu de contexto do documento: Tab context menu: Menu de contexto do separador: Open in source editor: Abrir no editor fonte: %1 MB %1 MB Cache size: Tamanho de cache: Minimal scrolling: Deslocação mínima Prefetch: Prefetch: Prefetch distance: Distância prefetch: Top Cima Bottom Baixo Left Esquerda Right Direita Tab position: Posição do separador: As needed Conforme necessário Always Sempre Exit after last tab: Sair após o último separador: Scrollable menus: Menus deslocáveis: Searchable menus: Menus pesquisáveis: Zoom to selection: Ampliar seleção: Never Nunca Settings Definições Tab visibility: Mostrar separadores: Spread tabs: Expandir separadores: New tab next to current tab: Novo separador junto ao atual: Recently used count: Número de documentos recentes: Recently closed count: Contagem de fechados recentemente: Extended search dock: Doca de procura extensiva: Toggle tool and menu bars with fullscreen: Alternar entre barra de menu e ferramentas em ecrã completo: File tool bar: Barra de ferramentas Ficheiro: Edit tool bar: Barra de ferramentas Editar: View tool bar: Barra de ferramentas Ver: Use page label: Usar etiqueta de página: Document title as tab title: Título do documento como título do separador: Current page in window title: Página atual na barra de título: Instance name in window title: Nome da instância no título da janela: Synchronize outline view: Sincronizar vista de tópicos: Highlight current thumbnail: Realçar miniatura atual: Limit thumbnails to results: Limitar miniaturas a: Annotation overlay: Cobertura da anotação: Form field overlay: Cobertura do campo de formulários: Zoom: Ampliação: Rotate: Rotação: Scroll: Deslocação: Copy to clipboard: Copiar para a área de transferência: Add annotation: Adicionar nota: qpdfview::ShortcutHandler Action Ação Key sequence Combinação de teclas Skip backward Avançar Skip forward Recuar Move up Mover para cima Move down Mover para baixo Move left Mover para a esquerda Move right Mover para a direita qpdfview::TreeView &Expand all &Expandir tudo &Collapse all Re&colher tudo qpdfview-0.4.18/translations/qpdfview_pt_BR.ts0000644000000000000000000023463013516127411017574 0ustar 00000000000000 Model::ImageDocument Image (%1) Size Resolution Depth Format Formato Monochrome Indexed 32 bits RGB 32 bits ARGB 16 bits RGB 24 bits RGB Model::PdfDocument Linearized Name Nome Type Tipo Embedded Embutido Subset Sublistar File Arquivo Yes Sim PDF version Versão PDF Encrypted Criptografado No Não Model::PdfPage Information Informações Version 0.20.1 or higher of the Poppler library is required to add or remove annotations. Versão 0.20.1 ou maior da biblioteca Poppler é necessária para adicionar ou remover anotações. Model::PsDocument Title Título Created for Criado para Creator Autor Creation date Data de criação Format Formato Language level Nível de linguagem QObject An empty instance name is not allowed. Um nome de instância vazio não é permitido. An empty search text is not allowed. Não é permitido pesquisa de texto vazio. Unknown command-line option '%1'. Opção de linha de comando desconhecida '%1'. Using '--instance' requires an instance name. Usar '--instance' requer um nome de instância. Using '--instance' is not allowed without using '--unique'. Usar '--instance' não é permitido sem utilizar '--unique'. An instance name must only contain the characters "[A-Z][a-z][0-9]_" and must not begin with a digit. Um nome de instância deve conter somente os caracteres "[A-Z][a-z][0-9]_" e não deve iniciar com dígito. Using '--search' requires a search text. Usando '--search' requer um texto de pesquisa. Could not prepare signal handler. Não foi possível preparar manipulador de sinal. QShortcut Shift Shift Ctrl Ctrl Alt Alt Shift and Ctrl Shift e Ctrl Shift and Alt Shift e Alt Ctrl and Alt Ctrl e Alt Right mouse button Botão direito do mouse Middle mouse button Botão do meio do mouse None qpdfview::BookmarkDialog Bookmark Marcador Page: Página: Label: Nome: Comment: Comentário: Modified: Modificado em: qpdfview::BookmarkMenu &Open &Abrir Open in new &tab Abrir em uma nova &aba &Remove bookmark &Remover marcador qpdfview::Database Jump to page %1 Pular para página %1 qpdfview::DocumentView Information Informações The source editor has not been set. Opening URL is disabled in the settings. Abertura de URL está desabilitada nas configurações. Warning SyncTeX data for '%1' could not be found. Printing '%1'... Imprimindo '%1'... Unlock %1 Destravar %1 Password: Senha: Page %1 Página %1 qpdfview::FileAttachmentAnnotationWidget Save... Salvar... Save and open... Salvar e abrir... Save file attachment Salvar arquivo em anexo Warning Atenção Could not open file attachment saved to '%1'. Não foi possível abrir o anexo salvo em '%1'. Could not save file attachment to '%1'. Não foi possível salvar o arquivo anexo para '%1'. qpdfview::FontsDialog Fonts Fontes qpdfview::HelpDialog Help Ajuda help.html Please replace by file name of localized help if available, e.g. "help_fr.html". help_pt_BR.html Find previous Localizar anterior Find next Localizar próxima qpdfview::MainWindow Toggle tool bars Alternar exibição da barra de ferramentas Toggle menu bar Alternar exibição da barra de menus Warning Aviso Could not open '%1'. Não foi possível abrir '%1'. Copy file path Copiar caminho do arquivo Select file path Selecionar caminho do arquivo Close all tabs Fechar todas as abas Close all tabs but this one Fechar todas as abas menos a atual Close all tabs to the left Fechar todas as abas a esquerda Close all tabs to the right Fechar todas as abas a direita Open Abrir Open in new tab Abrir em uma nova aba Could not refresh '%1'. Não foi possível atualizar '%1'. Save copy Salvar uma cópia Could not save copy at '%1'. Não foi possível salvar cópia '%1'. Save as Salvar como Move to instance Failed to access instance '%1'. Could not save as '%1'. Não foi possível salvar como '%1'. Could not print '%1'. Não foi possível imprimir '%1'. Set first page Definir como página inicial Select the first page of the body matter: Selecione a primeira página da parte principal do documento: Jump to page Pular para a página Page: Página: Jump to page %1 Pular para página %1 About qpdfview Sobre o qpdfview <p><b>qpdfview %1</b></p><p>qpdfview is a tabbed document viewer using Qt.</p><p>This version includes:<ul> <p><b>qpdfview %1</b></p><p>qpdfview é um leitor de documentos com abas usando QT.</p><p>Esta versão inclui:<ul> <li>PDF support using Poppler %1</li> <li>Suporte à PDF usando a infraestrutura Poppler %1</li> <li>PS support using libspectre %1</li> <li>Suporte à PS usando a infraestrutura libspectre %1</li> <li>DjVu support using DjVuLibre %1</li> <li>Suporte à DjVu usando a infraestrutura DjVuLibre %1</li> <li>PDF support using Fitz %1</li> <li>Suporte à PDF usando a infraestrutura Fitz %1</li> <li>Printing support using CUPS %1</li> <li>Suporte à impressão usando a infraestrutura CUPS %1</li> &Edit bookmark &Editar marcador The document '%1' has been modified. Do you want to save your changes? O documento '%1' foi modificado. Deseja salvar suas alterações? Page width Largura da página Page size Tamanho da página Match &case Diferenciar &maiúsculas de minúsculas Whole &words Palavras &inteiras Highlight &all Destacar &tudo &Open... &Abrir... Open in new &tab... Abrir em uma nova &aba... Open &copy in new tab Move to &instance... &Refresh &Atualizar Information Informações Instance-to-instance communication requires D-Bus support. </ul><p>See <a href="https://launchpad.net/qpdfview">launchpad.net/qpdfview</a> for more information.</p><p>&copy; %1 The qpdfview developers</p> Save &as... Salvar &como... Save &copy... &Print... &Imprimir... E&xit S&air &Previous page Página &anterior &Next page &Próxima página &First page Página &inicial &Last page &Última página &Set first page... Definir como página &inicial.... &Jump to page... &Pular para a página... Jump &backward Ir para &trás Jump for&ward Ir para &frente &Search... &Pesquisar... Find previous Localizar anterior Find next Localizar próxima Cancel search Cancelar pesquisa &Copy to clipboard &Copiar para a área de transferência &Add annotation &Adicionar anotações Settings... Configurações... &Continuous &Contínuo &Two pages &Páginas duplas Two pages &with cover page Duas páginas &com capa &Multiple pages &Múltiplas páginas Right to left Direita para esquerda Zoom &in &Aumentar zoom Zoom &out &Diminuir zoom Original &size &Tamanho original Fit to page width Ajusta à largura da página Fit to page size Ajustar ao tamanho da página Rotate &left Girar para a &esquerda Rotate &right Girar para a &direita Invert colors Inverter as cores Convert to grayscale Converter para escala de cinza Trim margins Remover margens Darken with paper color Lighten with paper color Fonts... Fontes... &Fullscreen Tela &cheia &Presentation... &Apresentação... &Previous tab Aba &anterior &Next tab &Próxima aba &Close tab &Fechar aba Close &all tabs Fechar &todas as abas Close all tabs &but current tab Fechar todas as abas &menos a atual Restore &most recently closed tab &Previous bookmark Marcador &anterior &Next bookmark &Próximo marcador &Add bookmark &Adicionar marcador Open copy in new &window Split view horizontally... Split view vertically... Close current view Thumb&nails Mi&niaturas Book&marks &Marcadores Composition Composição &Remove bookmark &Remover marcador Edit '%1' at %2,%3... Open containing &folder Abrir pasta que contém o arquivo &Save Remove all bookmarks Remover todos os marcadores &Contents &Conteúdo &About &Sobre &File &Arquivo &Edit &Editar &View &Exibir &Outline &Contornar &Properties &Propriedades &Search &Pesquisar &Tool bars Barra de &ferramentas &Docks &Barras &Tabs &Abas &Bookmarks &Marcadores &Help A&juda Choose instance Instance: qpdfview::PageItem Go to page %1. Ir para página %1. Go to page %1 of file '%2'. Ir para a página %1 do arquivo '%2'. Open '%1'. Abrir '%1'. Edit form field '%1'. Editar campo do formulário '%1'. Copy &text Copiar &texto &Select text &Selecionar texto Copy &image Copiar &imagem Save image to &file... Salvar imagem para &arquivo... Save image to file Salvar imagem para arquivo Warning Aviso Could not save image to file '%1'. Não foi possível salvar imagem para o arquivo '%1' Add &text Adicionar &texto Add &highlight Adicionar &destaque &Copy link address &Copiar endereço do link &Select link address &Selecionar endereço do link &Remove annotation Remover &anotação qpdfview::PdfSettingsWidget Antialiasing: Suavização: Text antialiasing: Suvaização de texto: None Nenhum Full Completo Reduced Reduzido Text hinting: Sugestão de texto: Ignore paper color: Overprint preview: Visualização de superimposição: Solid Sólido Shaped Com Formas Thin line mode: Modo de linha fina: Splash Arthur Backend: Infraestrutura: qpdfview::PluginHandler Image (%1) Compressed (%1) Supported formats (%1) Formatos suportados (%1) Could not decompress '%1'! Could not match file type of '%1'! Tipo de arquivo de '%1' sem correspondência! Critical Crítico Could not load plug-in for file type '%1'! Não foi possível carregar o plug-in para o tipo de arquivo '%1'! qpdfview::PrintDialog Fit to page: Ajustar à página: Page ranges: Intervalo de páginas: All pages Todas as páginas Even pages Páginas pares Odd pages Páginas ímpares Page set: Conjunto de páginas: Single page Página única Two pages Duas páginas Four pages Quatro páginas Six pages Seis páginas Nine pages Nove páginas Sixteen pages 16 páginas Number-up: Bottom to top and left to right De baixo para cima e da esquerda para a direita Bottom to top and right to left De baixo para cima e da direita para a esquerda Left to right and bottom to top Da esquerda para a direita e de baixo para cima Left to right and top to bottom Da esquerda para a direita e de cima para baixo Right to left and bottom to top Da direita para esquerda e de baixo para cima Right to left and top to bottom Da direita para a esquerda e de cima para baixo Top to bottom and left to right De cima para baixo de da esquerda para a direita Top to bottom and right to left De cima para baixo e da direita para a esquerda Number-up layout: Extended options Opções estendidas qpdfview::PsSettingsWidget Graphics antialias bits: Bits de suavização de gráficos: Text antialias bits: Bits de suavização de texto: qpdfview::RecentlyClosedMenu &Recently closed &Recentemente fechada &Clear list &Limpar lista qpdfview::RecentlyUsedMenu Recently &used Recentemente &utilizados &Clear list &Limpar lista qpdfview::SearchModel <b>%1</b> occurrences <b>%1</b> ocorrência(s) <b>%1</b> occurrences on page <b>%2</b> <b>%1</b> ocorrência(s) na página <b>%2</b> qpdfview::SearchableMenu Search for '%1'... Procurar por '%1'... qpdfview::SettingsDialog General Geral &Behavior &Comportamento &Graphics &Gráficos &Interface &Interface &Shortcuts &Atalhos &Modifiers &Modificadores Defaults Padrões Defaults on current tab Padrões na aba atual Mouse wheel modifiers Mouse button modifiers Open URL: Abrir URL: Auto-refresh: Auto-atualizar: Effective after restart. Efetivar após reiniciar. Track recently used: Acompanhar recentemente utilizados: Keep recently closed: Listar abas recentemente fechadas: Restore tabs: Restaurar abas: Restore bookmarks: Restaurar marcadores: Restore per-file settings: Restaurar configurações por arquivo: min min Save database interval: Intervalo para salvar a base de dados: Synchronize presentation: Sincronizar apresentação: Default Padrão Presentation screen: Tela de apresentação: Synchronize split views: Zoom factor: Fator de zoom: Parallel search execution: ms ms None Nenhuma Highlight duration: Duração do destaque: Highlight color: Cor de destaque: Annotation color: Cor das anotações: '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number. '%1' é substituído pelo caminho absoluto do arquivo. '%2' resp. '%3' é substituído pela linha resp. número da coluna. Source editor: Editor de código: Use tiling: Keep obsolete pixmaps: Manter pixmaps obsoletos: Use device pixel ratio: Utilizar taxa de pixel do dispositivo: Decorate pages: Decorar páginas: Decorate links: Decorar links: Decorate form fields: Decorar campos do formulário: Background color: Cor de fundo: Paper color: Cor da folha: Presentation background color: Cor de fundo da apresentação: Pages per row: Páginas por linha: px px Page spacing: Espaçamento das páginas: Thumbnail spacing: Espaçamento das miniaturas: Thumbnail size: Tamanho das miniaturas: Fit to viewport Document context menu: Menu de contexto do documento: Tab context menu: Menu de contexto da aba: Open in source editor: %1 MB %1 MB Cache size: Tamanho do cache: Minimal scrolling: Prefetch: Pré-carregar: Prefetch distance: Distância pré-obtida: Top Topo Bottom Base Left Esquerda Right Direita Tab position: Posição das abas: As needed Quando necessário Always Sempre Exit after last tab: Sair ao fechar a última aba: Scrollable menus: Searchable menus: Zoom to selection: Zoom para a seleção: Never Nunca Settings Configurações Tab visibility: Visualização das abas: Spread tabs: Espalhar abas: New tab next to current tab: Nova aba ao lado da aba atual: Recently used count: Contagem de recentemente utilizados: Recently closed count: Quantidade de abas fechadas a listar: Extended search dock: Toggle tool and menu bars with fullscreen: File tool bar: Barra de ferramenta Arquivo: Edit tool bar: Barra de ferramentas Editar: View tool bar: Barra de ferramentas Exibir: Use page label: Document title as tab title: Título do documento no nome da aba: Current page in window title: Página atual no título da janela: Instance name in window title: Nome da instância no título da janela: Synchronize outline view: Highlight current thumbnail: Destacar miniatura atual: Limit thumbnails to results: Limite de miniaturas para resultados: Annotation overlay: Sobreposição de anotação Form field overlay: Sobreposição de campo do formulário: Zoom: Zoom: Rotate: Girar: Scroll: Rolar: Copy to clipboard: Copiar para a área de transferência: Add annotation: Adicionar anotação: qpdfview::ShortcutHandler Action Ação Key sequence Sequência de teclas Skip backward Ignorar anterior Skip forward Ignorar próxima Move up Mover para cima Move down Mover para baixo Move left Mover para esquerda Move right Mover para direita qpdfview::TreeView &Expand all &Expandir tudo &Collapse all &Fechar todos qpdfview-0.4.18/translations/qpdfview_ro.ts0000644000000000000000000023333313516127411017205 0ustar 00000000000000 Model::ImageDocument Image (%1) Size Resolution Depth Format Format Monochrome Indexed 32 bits RGB 32 bits ARGB 16 bits RGB 24 bits RGB Model::PdfDocument Linearized Name Nume Type Tip Embedded Încorporat Subset Subset File Fișier Yes Da PDF version Encrypted No Nu Model::PdfPage Information Detalii Version 0.20.1 or higher of the Poppler library is required to add or remove annotations. Pentru a adăuga sau șterge adnotările este nevoie de versiunea 0.20.1 sau mai mare a bibliotecii popler. Model::PsDocument Title Titlu Created for Creat pentru Creator Autor Creation date Data creării Format Format Language level Nivel limbaj QObject An empty instance name is not allowed. Nu sunt permise câpuri goale. An empty search text is not allowed. Nu este permis un câmp de căutare gol. Unknown command-line option '%1'. Opțiunea „%1” din linie de comandă necunoscută. Using '--instance' requires an instance name. Utilizarea „--instance” trebuie să aibă un nume. Using '--instance' is not allowed without using '--unique'. Utilizarea „--instance” nu este permisă fără a utiliza și „--unique”. An instance name must only contain the characters "[A-Z][a-z][0-9]_" and must not begin with a digit. O instanță trebuie să conțină doar caracterele [A-Z][a-z][0-9]_ și nu trebuie să înceapă cu o cifră. Using '--search' requires a search text. Dacă utlizați „--search” trebuie să introduceți text. Could not prepare signal handler. Nu s-a putut pregăti prelucrarea semnalelor (signal handler). QShortcut Shift Shift Ctrl Ctrl Alt Alt Shift and Ctrl Shift și Ctrl Shift and Alt Shift și Alt Ctrl and Alt Ctrl și Alt Right mouse button Middle mouse button None Nimic qpdfview::BookmarkDialog Bookmark Page: Pagina: Label: Comment: Modified: qpdfview::BookmarkMenu &Open &Deschide Open in new &tab Deschide în &tab nou &Remove bookmark Ște&rge semn de carte qpdfview::Database Jump to page %1 Sari la pagina %1 qpdfview::DocumentView Information Informații The source editor has not been set. Opening URL is disabled in the settings. Accesarea URL-urilor este dezactivată din configurări. Warning SyncTeX data for '%1' could not be found. Printing '%1'... Se tipărește „%1”... Unlock %1 Deblocare %1 Password: Parolă: Page %1 Pagina %1 qpdfview::FileAttachmentAnnotationWidget Save... Salvează... Save and open... Salvează și deschide... Save file attachment Salvare fișier atașat Warning Avertisment Could not open file attachment saved to '%1'. Nu s-a putut deschide fișierul atașat salavat în „%1”. Could not save file attachment to '%1'. Nu s-a putut salva fișierul atașat în „%1”. qpdfview::FontsDialog Fonts qpdfview::HelpDialog Help help.html Please replace by file name of localized help if available, e.g. "help_fr.html". help.html Find previous Caută elementul anterior Find next Caută elementul următor qpdfview::MainWindow Toggle tool bars Toggle menu bar Warning Atenție Could not open '%1'. Nu se poate deschide „%1” Copy file path Select file path Close all tabs Închide toate filele Close all tabs but this one Închide toate filele în afară de asta Close all tabs to the left Închide toate filele din stânga Close all tabs to the right Închide toate filele din dreapta Open Deschide Open in new tab Deschide într-o filă nouă Could not refresh '%1'. Nuse poate reactualiza „%1”. Save copy Salvează o copie Could not save copy at '%1'. NU am putut salva copia în „%1”. Save as Salvează ca Move to instance Failed to access instance '%1'. Could not save as '%1'. Nu s-a putut salva ca „%1”. Could not print '%1'. Nuse poate tipări „%1” Set first page Select the first page of the body matter: Jump to page Sari la pagina Page: Pagina: Jump to page %1 Sari la pagina %1 About qpdfview Despre qpdfview <p><b>qpdfview %1</b></p><p>qpdfview is a tabbed document viewer using Qt.</p><p>This version includes:<ul> <p><b>qpdfview %1</b></p><p>qpdfview este un utilitar de vizualizat documente cu file care utilizează Qt.</p><p>Această versiune include:<ul> <li>PDF support using Poppler %1</li> <li>PS support using libspectre %1</li> <li>DjVu support using DjVuLibre %1</li> <li>PDF support using Fitz %1</li> <li>Printing support using CUPS %1</li> &Edit bookmark The document '%1' has been modified. Do you want to save your changes? Documentul „%1” a fost modificat. Vreți să salvați modificările? Page width Lățime pagină Page size Mărime pagină Match &case Potrivește mărimea literelor Whole &words Highlight &all Evidențiază &tot &Open... &Deschide... Open in new &tab... Deschide în &filă nouă... Open &copy in new tab Move to &instance... &Refresh &Reactualizează Information Instance-to-instance communication requires D-Bus support. </ul><p>See <a href="https://launchpad.net/qpdfview">launchpad.net/qpdfview</a> for more information.</p><p>&copy; %1 The qpdfview developers</p> Save &as... Salvați c&a... Save &copy... &Print... Ti&părește... E&xit Ieș&ire &Previous page &Pagina anterioară &Next page Pagi&na următoare &First page Prima pa&gină &Last page U&ltima pagină &Set first page... &Jump to page... &Sari la pagina... Jump &backward &Sari înapoi Jump for&ward Sari înai&nte &Search... &Căutare... Find previous Caută elementul anterior Find next Caută elementul următor Cancel search Anulează căutarea &Copy to clipboard &Copiază în clipboard &Add annotation &Adaugă notiță Settings... Configurări... &Continuous &Continuu &Two pages Două pagini Two pages &with cover page Două pagini și &coperta &Multiple pages Pagini &multiple Right to left De la dreapta spre stânga Zoom &in &Mărire Zoom &out Micș&orare Original &size Mărime originală Fit to page width Potrivire la lățimea paginii Fit to page size Potrivire la mărimea paginii Rotate &left Rotire &stânga Rotate &right Rotire &dreapta Invert colors Inversează culorile Convert to grayscale Trim margins Darken with paper color Lighten with paper color Fonts... Fonturi... &Fullscreen &Ecran complet &Presentation... &Prezentare... &Previous tab Fila &precedentă &Next tab &Fila următoare &Close tab În&chide fila Close &all tabs Inchide &toate filele Close all tabs &but current tab Închide toate filele în &afară de aceasta Restore &most recently closed tab &Previous bookmark Semn de carte &precedent &Next bookmark Semn de carte &următor &Add bookmark &Adaugă semn de carte Open copy in new &window Split view horizontally... Split view vertically... Close current view Thumb&nails Book&marks Composition &Remove bookmark Ște&rge semn de carte Edit '%1' at %2,%3... Open containing &folder &Save Remove all bookmarks Șterge toate semnele de carte &Contents &Cuprins &About &Despre &File &Fișier &Edit &Editare &View &Vizualizare &Outline &Cuprins &Properties &Proprietăți &Search &Caută &Tool bars &Bare de unelte &Docks &Bare andocabile &Tabs Fi&le &Bookmarks &Semne de carte &Help &Ajutor Choose instance Instance: qpdfview::PageItem Go to page %1. Du-te la pagina %1. Go to page %1 of file '%2'. Du-te la pagina %1 din fișierul „%2”. Open '%1'. Deschide „%1”. Edit form field '%1'. Editare formular „%1”. Copy &text Copiere &text &Select text Copy &image Copiere &imagine Save image to &file... Salvează imaginea în &fișier... Save image to file Salvează imaginea în fișier Warning Atenție Could not save image to file '%1'. Nu s-a putut salva imaginea în fișierul „%1”. Add &text Adaugă &text Add &highlight Adaugă &evidențiere &Copy link address &Select link address &Remove annotation Ște&rge notiță qpdfview::PdfSettingsWidget Antialiasing: Antialiasing: Text antialiasing: Antialiasing text: None Nimic Full Complet Reduced Redus Text hinting: Reliefare text: Ignore paper color: Overprint preview: Previziualizare suprapunere: Solid Solid Shaped Conturat Thin line mode: Mod linie subțire: Splash Splash Arthur Arthur Backend: Configurație: qpdfview::PluginHandler Image (%1) Compressed (%1) Supported formats (%1) Could not decompress '%1'! Could not match file type of '%1'! NU s-a găsit o potrivire pentru tipul de fișier „%1”! Critical Critic Could not load plug-in for file type '%1'! Nu s-a putut încărca extensia pentru tipul de fișier „%1”! qpdfview::PrintDialog Fit to page: Potrivire la pagină: Page ranges: Șir pagini: All pages Toate paginile Even pages Pagini pare Odd pages Pagini impare Page set: Set pagini: Single page O singură pagină Two pages Două pagini Four pages Patru pagini Six pages Șase pagini Nine pages Nouă pagini Sixteen pages 16 pagini Number-up: Numerotare: Bottom to top and left to right De jos în sus și de la stânga la dreapta Bottom to top and right to left De jos în sus și de la dreapta la stânga Left to right and bottom to top De la stânga la dreapta și de jos în sus Left to right and top to bottom De la stânga la dreapta și de sus în jos Right to left and bottom to top De la dreapta la stânga și de jos în sus Right to left and top to bottom De la dreapta la stânga și de sus în jos Top to bottom and left to right De sus în jos și de la stânga la dreapta Top to bottom and right to left De sus în jos și de la dreapta la stânga Number-up layout: Aranjament numerotare: Extended options Opțiuni extinse qpdfview::PsSettingsWidget Graphics antialias bits: Biți antialias grafică: Text antialias bits: Biți antialias text: qpdfview::RecentlyClosedMenu &Recently closed Închise &recent &Clear list Șterge &lista qpdfview::RecentlyUsedMenu Recently &used Deschise &recent &Clear list Șterge &lista qpdfview::SearchModel <b>%1</b> occurrences <b>%1</b> occurrences on page <b>%2</b> qpdfview::SearchableMenu Search for '%1'... qpdfview::SettingsDialog General Setări generale &Behavior &Comportament &Graphics &Grafică &Interface &Interfață &Shortcuts &Scurtături &Modifiers &Modificatori Defaults Implicit Defaults on current tab Setări implicite în tabul curent Mouse wheel modifiers Mouse button modifiers Open URL: Deschide URL: Auto-refresh: Reîmprospătare automată: Effective after restart. Se aplică după repornire. Track recently used: Memorează documente deschise recent: Keep recently closed: Păstrează documentele închise recent: Restore tabs: Restaurare file: Restore bookmarks: Restaurare semne de carte: Restore per-file settings: Restabilire configurări pentru fiecare fișier: min Save database interval: Synchronize presentation: Sincronizare prezentare: Default Implicit Presentation screen: Ecran prezentare: Synchronize split views: Zoom factor: Parallel search execution: ms None Nimic Highlight duration: Durată evidențiere: Highlight color: Culoare evidențiere: Annotation color: Culoare adnotări: '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number. „%1” este înlocuit(ă) de calea absolută către fișier. „%2” respectiv „%3” este înlocuit(ă) de un rând corespunzător numărului coloanei. Source editor: Editor surse: Use tiling: Keep obsolete pixmaps: Păstrează fișierele imagine învechite: Use device pixel ratio: Utilizează proporție pixeli: Decorate pages: Decorare pagini: Decorate links: Decorare legături: Decorate form fields: Decorare formulare: Background color: Culoare fundal: Paper color: Culoare hârtie: Presentation background color: Culoare de fundal pentru prezentare: Pages per row: Pagini per rând: px Page spacing: Spațiere pagină: Thumbnail spacing: Spațiere miniaturi: Thumbnail size: Dimensiune miniaturi: Fit to viewport Document context menu: Tab context menu: Open in source editor: %1 MB %1 MB Cache size: Mărime cache: Minimal scrolling: Prefetch: Preîncărcare: Prefetch distance: Interval pre-încărcare: Top Sus Bottom Jos Left Stânga Right Dreapta Tab position: Poziția filei: As needed După necesitate Always Întotdeauna Exit after last tab: Scrollable menus: Searchable menus: Zoom to selection: Never Niciodată Settings Tab visibility: Vizibilitate file: Spread tabs: Desfă filele: New tab next to current tab: Tab nou lângă cel actual: Recently used count: Numărătoare utilizată recent: Recently closed count: Număr de fișiere închise recent: Extended search dock: Toggle tool and menu bars with fullscreen: File tool bar: Bară de unelte pentru fișiere: Edit tool bar: Bara de unelte pentru editare: View tool bar: Vizualizare bare de unelte: Use page label: Document title as tab title: Titlu document ca titlu de filă: Current page in window title: Pagina curentă în titlul ferestrei: Instance name in window title: Numele instanței în titlul ferestrei: Synchronize outline view: Sincronizare vedere de ansamblu: Highlight current thumbnail: Evidențiere pictogramă curentă: Limit thumbnails to results: Limitare pictograme la rezultate: Annotation overlay: Suprapunere adnotări: Form field overlay: Suprapunere câmpuri pentru forme: Zoom: Panoramare: Rotate: Rotire: Scroll: Derulare: Copy to clipboard: Copiere în clipboard: Add annotation: Adăugare adnotare: qpdfview::ShortcutHandler Action Acțiune Key sequence Secvență taste Skip backward Sari înapoi: Skip forward Sari înainte: Move up Sus Move down Jos Move left Stânga Move right Dreapta qpdfview::TreeView &Expand all &Extinde tot &Collapse all &Strânge tot qpdfview-0.4.18/translations/qpdfview_ru.ts0000644000000000000000000024710213516127411017212 0ustar 00000000000000 Model::ImageDocument Image (%1) Изображение (%1) Size Размер Resolution Разрешение Depth Глубина цвета Format Формат Monochrome Чёрно-белое Indexed Индексирован 32 bits RGB 32 бит RGB 32 bits ARGB 32 бит ARGB 16 bits RGB 16 бит RGB 24 bits RGB 24 бит RGB Model::PdfDocument Linearized Линеаризованный Name Название Type Тип Embedded Встроенный Subset Подмножество File Файл Yes Да PDF version Версия PDF Encrypted Зашифрован No Нет Model::PdfPage Information Сведения Version 0.20.1 or higher of the Poppler library is required to add or remove annotations. Для добавления или удаления аннотаций требуется версия 0.20.1 (или выше) библиотеки Poppler. Model::PsDocument Title Название Created for Создано для Creator Создатель Creation date Дата создания Format Формат Language level Уровень языка QObject An empty instance name is not allowed. Пустое имя экземпляра не допустимо. An empty search text is not allowed. Пустая строка поиска недопустима Unknown command-line option '%1'. Неизвестный параметр командной строки '%1'. Using '--instance' requires an instance name. Использование '--instance' требует имени экземпляра. Using '--instance' is not allowed without using '--unique'. Использование '--instance' не возможно без использования '--unique'. An instance name must only contain the characters "[A-Z][a-z][0-9]_" and must not begin with a digit. Название экземпляра может содержать только символы "[A-Z][a-z][0-9]_" и не начинаться с цифры. Using '--search' requires a search text. Параметр '--search' требует введение текста для поиска. Could not prepare signal handler. Не удалось подготовить обработчик сигнала. QShortcut Shift Shift Ctrl Ctrl Alt Alt Shift and Ctrl Shift и Ctrl Shift and Alt Shift и Alt Ctrl and Alt Ctrl и Alt Right mouse button Правая кнопка мыши Middle mouse button Средняя кнопка мыши None Нет qpdfview::BookmarkDialog Bookmark Закладка Page: Страница: Label: Метка: Comment: Комментарий: Modified: Изменён: qpdfview::BookmarkMenu &Open &Открыть… Open in new &tab Открыть в новой &вкладке… &Remove bookmark &Удалить закладку qpdfview::Database Jump to page %1 Перейти на страницу %1 qpdfview::DocumentView Information Сведения The source editor has not been set. Редактор исходного кода не задан. Opening URL is disabled in the settings. Открытие адреса запрещено в настройках. Warning Внимание SyncTeX data for '%1' could not be found. Не найдены данные SyncTeX для '%1'. Printing '%1'... Печать '%1'… Unlock %1 Разблокировать %1 Password: Пароль: Page %1 Страница %1 qpdfview::FileAttachmentAnnotationWidget Save... Сохранить... Save and open... Сохранить и открыть... Save file attachment Сохранить вложение Warning Предупреждение Could not open file attachment saved to '%1'. Невозможно открыть вложение, сохраненное в '%1'. Could not save file attachment to '%1'. Не могу сохранить вложение в '%1' qpdfview::FontsDialog Fonts Шрифты qpdfview::HelpDialog Help Справка help.html Please replace by file name of localized help if available, e.g. "help_fr.html". help_ru.html Find previous Найти предыдущее Find next Найти далее qpdfview::MainWindow &Set first page... &Установить первую страницу… Toggle tool bars Переключить панели инструментов Toggle menu bar Переключение меню Warning Предупреждение Could not open '%1'. Не удалось открыть '%1' Copy file path Копировать путь к файлу Select file path Выберите путь к файлу Close all tabs Закрыть все вкладки Close all tabs but this one Закрыть другие вкладки Close all tabs to the left Закрыть вкладки слева Close all tabs to the right Закрыть вкладки справа Open Открыть Open in new tab Открыть в новой вкладке Could not refresh '%1'. Не удалось обновить '%1' Save copy Сохранить копию Could not save copy at '%1'. Не удалось сохранить копию в '%1' Save as Сохранить как Move to instance Переместить в Failed to access instance '%1'. Не получилось открыть файл '%1'. Could not save as '%1'. Не удалось сохранить как '%1'. Could not print '%1'. Не удалось напечатать '%1' Set first page Установить первую страницу Select the first page of the body matter: Выберите первую страницу содержимого: Jump to page Переход на страницу Page: Страница: Jump to page %1 Перейти на страницу %1 About qpdfview О программе qpdfview <p><b>qpdfview %1</b></p><p>qpdfview is a tabbed document viewer using Qt.</p><p>This version includes:<ul> <p><b>qpdfview %1</b></p><p>qpdfview — просмотрщик документов со вкладками, использующий Qt.</p><p>В этой версии:<ul> <li>PDF support using Poppler %1</li> <li>Поддержка PDF с помощью Poppler %1</li> <li>PS support using libspectre %1</li> <li>Поддержка PS с помощью libspectre %1</li> <li>DjVu support using DjVuLibre %1</li> <li>Поддержка DjVu с помощью DjVuLibre %1</li> <li>PDF support using Fitz %1</li> <li>Поддержка PDF с помощью Fitz %1</li> <li>Printing support using CUPS %1</li> <li>Поддержка печати с помощью CUPS %1</li> &Edit bookmark &Редактировать закладку The document '%1' has been modified. Do you want to save your changes? Документ '%1' был изменён. Сохранить изменения? Page width По ширине страницы Page size Страница целиком Match &case С уч&ётом регистра Whole &words Слова &целиком Highlight &all Выделить &все &Open... &Открыть… Open in new &tab... Открыть в новой &вкладке… Open &copy in new tab Открыть &копию в новой вкладке Move to &instance... Переместить в... &Refresh О&бновить Information Информация Instance-to-instance communication requires D-Bus support. Сообщение между экземплярами приложения требует поддержки D-Bus. </ul><p>See <a href="https://launchpad.net/qpdfview">launchpad.net/qpdfview</a> for more information.</p><p>&copy; %1 The qpdfview developers</p> </ul><p>Смотри <a href="https://launchpad.net/qpdfview">launchpad.net/qpdfview</a> для получения дополнительной информации. </p><p>&copy; %1 Разработчики qpdfview</p> Save &as... Со&хранить как... Save &copy... Сохранить &скопировать... &Print... Пе&чать… E&xit &Выход &Previous page &Предыдущая страница &Next page &Следующая страница &First page П&ервая страница &Last page После&дняя страница &Jump to page... Пе&рейти к странице… Jump &backward Назад Jump for&ward Вперёд &Search... П&оиск… Find previous Найти предыдущее Find next Найти следующее Cancel search Отменить поиск &Copy to clipboard &Скопировать в буфер &Add annotation Добавить &комментарий Settings... Настройки… &Continuous &Рулоном &Two pages &Две страницы Two pages &with cover page Две страницы и &обложка &Multiple pages &Несколько страниц Right to left Справа налево Zoom &in У&величить Zoom &out У&меньшить Original &size &Исходный размер Fit to page width По ширине Fit to page size Страница целиком Rotate &left Повернуть в&лево Rotate &right Повернуть в&право Invert colors Инвертировать цвета Convert to grayscale Конвертировать в серые тона Trim margins Обрезать поля Darken with paper color Темнее цвета бумаги Lighten with paper color Светлее цвета бумаги Fonts... Шрифты… &Fullscreen Полный &экран &Presentation... Пре&зентация &Previous tab &Предыдущая вкладка &Next tab &Следующая вкладка &Close tab &Закрыть вкладку Close &all tabs Закрыть &все вкладки Close all tabs &but current tab Закрыть все вкладки, кроме текуще&й Restore &most recently closed tab Открыть &закрытую вкладку &Previous bookmark &Предыдущая закладка &Next bookmark &Следующая закладка &Add bookmark Д&обавить закладку Open copy in new &window Открыть копию в новом окне Split view horizontally... Разделить окно по горизонтали… Split view vertically... Разделить окно по вертикали… Close current view Закрыть текущий вид Thumb&nails &Миниатюры Book&marks &Закладки Composition Построение &Remove bookmark &Удалить закладку Edit '%1' at %2,%3... Правка '%1' в %2,%3... Open containing &folder Открыть содержащую &папку &Save &Сохранить Remove all bookmarks Удалить все закладки &Contents &Содержание &About &О программе &File &Файл &Edit П&равка &View В&ид &Outline &Оглавление &Properties С&войства &Search &Поиск &Tool bars Панели инс&трументов &Docks Прилип&алы &Tabs Вкла&дки &Bookmarks &Закладки &Help &Справка Choose instance Выберите файл Instance: Файл: qpdfview::PageItem Go to page %1. Перейти к странице %1. Go to page %1 of file '%2'. Перейти на страницу %1 файла '%2'. Open '%1'. Открыть '%1'. Edit form field '%1'. Редактировать поле формы '%1'. Copy &text &Копировать текст &Select text &Выделить текст Copy &image Копировать и&зображение Save image to &file... Сохранить изображение в &файл… Save image to file Сохранить изображение в файл Warning Предупреждение Could not save image to file '%1'. Невозможно сохранить изображение в файл '%1'. Add &text Добавить &текст Add &highlight Добавить &выделение &Copy link address &Копировать адрес ссылки &Select link address &Выбрать адрес ссылки &Remove annotation &Удалить комментарий qpdfview::PdfSettingsWidget Antialiasing: Сглаживание: Text antialiasing: Сглаживание текста: None Нет Full Полное Reduced Укороченный Text hinting: Хинтинг текста: Ignore paper color: Игнорировать цвет бумаги: Overprint preview: Предпросмотр надпечатки: Solid Цельный Shaped Формовый Thin line mode: Режим тонкой линии: Splash Splash Arthur Arthur Backend: Бэкенд: qpdfview::PluginHandler Image (%1) Изображение (%1) Compressed (%1) Сжатый (%1) Supported formats (%1) Поддерживаемые форматы (%1) Could not decompress '%1'! Невозможно разжать '%1'! Could not match file type of '%1'! Не соответствует типу файла «%1»! Critical Критический Could not load plug-in for file type '%1'! Не удалось загрузить плагин для типа файла «%1»! qpdfview::PrintDialog Fit to page: Уместить в страницу Page ranges: Диапазон страниц: All pages Все страницы Even pages Чётные страницы Odd pages Нечётные страницы Page set: Печатать страницы: Single page Одна страница Two pages 2 траницы Four pages 4 страницы Six pages 6 страниц Nine pages 9 страниц Sixteen pages Шестнадцать страниц Number-up: Номером вверх Bottom to top and left to right Снизу вверх и слева направо Bottom to top and right to left Снизу вверх и справа налево Left to right and bottom to top Слева направо и снизу вверх Left to right and top to bottom Слева направо и сверху вниз Right to left and bottom to top Справа налево и снизу вверх Right to left and top to bottom Справа налево и сверху вниз Top to bottom and left to right Сверху вниз и слева направо Top to bottom and right to left Сверху вниз и справа налево Number-up layout: Порядок страниц Extended options Дополнительные параметры qpdfview::PsSettingsWidget Graphics antialias bits: Биты сглаживания графики: Text antialias bits: Биты сглаживания текста: qpdfview::RecentlyClosedMenu &Recently closed Недавно &закрытые &Clear list О&чистить список qpdfview::RecentlyUsedMenu Recently &used Не&давно открытые &Clear list О&чистить список qpdfview::SearchModel <b>%1</b> occurrences <b>%1</b> совпадений <b>%1</b> occurrences on page <b>%2</b> <b>%1</b> совпадений на странице <b>%2</b> qpdfview::SearchableMenu Search for '%1'... Поиск '%1'... qpdfview::SettingsDialog General Общие &Behavior &Поведение &Graphics &Графика &Interface &Интерфейс &Shortcuts &Комбинации клавиш &Modifiers &Модификаторы Defaults По умолчанию Defaults on current tab По умолчанию на текущей вкладке Mouse wheel modifiers Модификаторы колёсика мыши Mouse button modifiers Модификаторы кнопок мыши Open URL: Открыть адрес: Auto-refresh: Автообновление: Effective after restart. Вступит в силу после перезапуска Track recently used: Отслеживать недавно открытые: Keep recently closed: Помнить недавно закрытые: Restore tabs: Восстановить вкладки: Restore bookmarks: Восстановить закладки: Restore per-file settings: Восстановление пофайловых настроек: min мин Save database interval: Интервал сохранения базы данных: Synchronize presentation: Синхронная презентация: Default По умолчанию Presentation screen: Экран презентации: Synchronize split views: Синхронизировать разделенные окна Zoom factor: Коэффициент масштабирования: Parallel search execution: Распараллеливание поиска: ms мс None Нет Highlight duration: Длительность подсветки: Highlight color: Цвет выделения: Annotation color: Цвет аннотаций: '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number. '%1' заменяется абсолютным путём к файлу. '%2' и '%3' заменяются номером строки и столбца соответственно. Source editor: Редактор исходника: Use tiling: Использовать тайлинг: Keep obsolete pixmaps: Запоминать устаревшие растровые изображения: Use device pixel ratio: Использовать разрешение устройства Decorate pages: Рамка страницы: Decorate links: Выделять ссылки: Decorate form fields: Выделять поля форм: Background color: Цвет фона: Paper color: Цвет бумаги: Presentation background color: Цвет фона презентации: Pages per row: Страниц в ряд: px px Page spacing: Расстояние между страницами: Thumbnail spacing: Расстояние между миниатюрами: Thumbnail size: Размер миниатюр: Fit to viewport По области просмотра Document context menu: Контекстное меню документа: Tab context menu: Контекстное меню вкладки: Open in source editor: Открыть в редакторе: %1 MB %1 MБ Cache size: Размер кэша: Minimal scrolling: Минимизация прокрутки: Prefetch: Подгружать наперёд: Prefetch distance: Длина предзагрузки: Top Вверху Bottom Внизу Left Слева Right Справа Tab position: Положение вкладок: As needed По надобности Always Всегда Exit after last tab: Выход при закрытии последней вкладки: Scrollable menus: Меню с прокруткой: Searchable menus: Поиск в меню: Zoom to selection: Масштаб по выделению: Never Никогда Settings Настройки Tab visibility: Видимость вкладок: Spread tabs: Растянуть вкладки: New tab next to current tab: Новая вкладка рядом с текущей вкладкой: Recently used count: Недавно использованные: Recently closed count: Недавно закрытые: Extended search dock: Расширенная панель поиска: Toggle tool and menu bars with fullscreen: Скрывать инструменты и меню в полноэкранном режиме: File tool bar: Панель "Файл": Edit tool bar: Панель "Правка": View tool bar: Панель "Вид": Use page label: Использовать метку страницы: Document title as tab title: Название документа как название вкладки: Current page in window title: Текущая страница в заголовке окна: Instance name in window title: Имя экземпляра в заголовке окна: Synchronize outline view: Синхронизация в режиме структуры: Highlight current thumbnail: Выделять текущий эскиз: Limit thumbnails to results: Ограничивать показ миниатюр при поиске: Annotation overlay: Наложение аннотации: Form field overlay: Наложение полей формы: Zoom: Масштаб: Rotate: Поворот: Scroll: Прокрутка: Copy to clipboard: Скопировать в буфер обмена: Add annotation: Добавить примечание: qpdfview::ShortcutHandler Action Действие Key sequence Последовательность клавиш Skip backward Назад Skip forward Вперёд Move up Переместить вверх Move down Переместить вниз Move left Переместить влево Move right Переместить вправо qpdfview::TreeView &Expand all &Развернуть все &Collapse all &Свернуть все qpdfview-0.4.18/translations/qpdfview_sk.ts0000644000000000000000000023435313516127411017205 0ustar 00000000000000 Model::ImageDocument Image (%1) Obrázok (%1) Size Veľkosť Resolution Rozlíšenie Depth Hĺbka Format Formát Monochrome Čiernobiely Indexed Indexovaný 32 bits RGB 32 bitový RGB 32 bits ARGB 32 bitový ARGB 16 bits RGB 16 bitový RGB 24 bits RGB 24 bitový RGB Model::PdfDocument Linearized Linearizované Name Názov Type Typ Embedded Zabudované Subset Podmnožina File Súbor Yes Áno PDF version PDF verzia Encrypted Šifrované No Nie Model::PdfPage Information Informácie Version 0.20.1 or higher of the Poppler library is required to add or remove annotations. Na vkladanie a odstraňovanie komentárov je vyžadovaná knižnica Poppler vo verzie 0.20.1 alebo vyššej. Model::PsDocument Title Názov Created for Vytvorené pre Creator Vytvoril Creation date Dátum vytvorenia Format Formát Language level Úroveň jazyka QObject An empty instance name is not allowed. Prázdny názov inštancie nie je povolený. An empty search text is not allowed. Prázdny text na vyhľadanie nie je povolený. Unknown command-line option '%1'. Neznámy parameter príkazového riadka '%1'. Using '--instance' requires an instance name. Použitie '--instance' vyžaduje názov inštancie. Using '--instance' is not allowed without using '--unique'. Použitie '--instance' nieje povolené bez použitia '--unique'. An instance name must only contain the characters "[A-Z][a-z][0-9]_" and must not begin with a digit. Názov inštancie môže obsahovať iba znaky "[A-Z][a-z][0-9]_" a nesmie začínať číslom. Using '--search' requires a search text. Použitie '--search' vyžaduje text na vyhľadanie. Could not prepare signal handler. Nepodarilo se pripraviť obsluhovanie signálu. QShortcut Shift Shift Ctrl Ctrl Alt Alt Shift and Ctrl Shift a Ctrl Shift and Alt Shift a Alt Ctrl and Alt Ctrl a Alt Right mouse button Pravé tlačidlo myši Middle mouse button Stredné tlačidlo myši None Žiadne qpdfview::BookmarkDialog Bookmark Záložka Page: Strana: Label: Popis: Comment: Komentár: Modified: Zmenené: qpdfview::BookmarkMenu &Open &Otvoriť Open in new &tab Otvoriť na novej kar&te &Remove bookmark Odst&rániť záložku qpdfview::Database Jump to page %1 Prejsť na stranu %1 qpdfview::DocumentView Information Informácie The source editor has not been set. Editor zdrojového textu nebol nastavený. Opening URL is disabled in the settings. Otvorenie URL adresy je v nastaveniach zakázané. Warning Varovanie SyncTeX data for '%1' could not be found. SyncTeX dáta pre '%1' sa nedali nájsť. Printing '%1'... Tlačí sa '%1'... Unlock %1 Odomknúť %1 Password: Heslo: Page %1 Strana %1 qpdfview::FileAttachmentAnnotationWidget Save... Uložiť... Save and open... Uložiť a otvoriť... Save file attachment Uložiť prílohu súboru Warning Varovanie Could not open file attachment saved to '%1'. Nepodarilo sa otvoriť prílohu súboru uloženú do '%1'. Could not save file attachment to '%1'. Nepodarilo sa uložiť prílohu súboru do '%1'. qpdfview::FontsDialog Fonts Písma qpdfview::HelpDialog Help Nápoveda help.html Please replace by file name of localized help if available, e.g. "help_fr.html". help_sk.html Find previous Nájsť predchádzajúce Find next Nájsť ďalšie qpdfview::MainWindow Toggle tool bars Prepínať panely nástrojov Toggle menu bar Prepínať panel menu Warning Varovanie Could not open '%1'. Nedalo sa otvoríť '%1'. Copy file path Kopírovať cestu súboru Select file path Vybrať cestu súboru Close all tabs Zatvoriť všetky karty Close all tabs but this one Zatvoriť všetky karty okrem tejto Close all tabs to the left Zatvoriť všetky karty naľavo Close all tabs to the right Zatvoriť všetky karty napravo Open Otvoriť Open in new tab Otvoriť na novej karte Could not refresh '%1'. Nepodarilo se obnoviť '%1'. Save copy Uložiť kópiu Could not save copy at '%1'. Nepodarilo se uložiť kópiu v '%1'. Save as Uložiť ako Move to instance Failed to access instance '%1'. Could not save as '%1'. Nepodarilo sa uložiť ako '%1'. Could not print '%1'. Nepodarilo sa vytlačiť '%1'. Set first page Nastaviť prvú stranu Select the first page of the body matter: Vybrať prvú stranu Jump to page Prejsť na stranu Page: Strana: Jump to page %1 Prejsť na stranu %1 About qpdfview O qpdfview <p><b>qpdfview %1</b></p><p>qpdfview is a tabbed document viewer using Qt.</p><p>This version includes:<ul> <p><b>qpdfview %1</b></p><p>qpdfview je prehliadač dokumentov na kartách používajúci Qt.</p><p>Táto verzia obsahuje:<ul> <li>PDF support using Poppler %1</li> <li>PDF podpora používajúca Poppler %1</li> <li>PS support using libspectre %1</li> <li>PostScript podpora používajúca libspectre %1</li> <li>DjVu support using DjVuLibre %1</li> <li>DjVu podpora používajúca DjVuLibre %1</li> <li>PDF support using Fitz %1</li> <li>PDF podpora používajúca Fitz %1</li> <li>Printing support using CUPS %1</li> <li>Podpora tlače používajúca CUPS %1</li> &Edit bookmark &Upraviť záložku The document '%1' has been modified. Do you want to save your changes? Dokument '%1' bol zmenený. Chcete uložiť vaše zmeny? Page width Šírka strany Page size Veľkosť strany Match &case Zhoda malý&ch a veľkých písmen Whole &words Celá &slová Highlight &all Zvýr&azniť všetko &Open... &Otvoriť... Open in new &tab... Otvoriť na novej &karte... Open &copy in new tab Otvoriť &kópiu na novej karte Move to &instance... &Refresh O&bnoviť Information Informácie Instance-to-instance communication requires D-Bus support. </ul><p>See <a href="https://launchpad.net/qpdfview">launchpad.net/qpdfview</a> for more information.</p><p>&copy; %1 The qpdfview developers</p> Save &as... Uložiť &ako... Save &copy... &Print... &Tlačiť... E&xit U&končiť &Previous page &Predchádzajúca strana &Next page &Nasledujúca strana &First page P&rvá strana &Last page Pos&ledná strana &Set first page... &Nastaviť prvú stranu... &Jump to page... Pre&jsť na stranu... Jump &backward Prejsť &späť Jump for&ward Prejsť &dopredu &Search... &Hľadať... Find previous Nájsť predchádzajúce Find next Nájsť ďalšie Cancel search Zrušiť hľadanie &Copy to clipboard &Kopírovať do schránky &Add annotation Prid&ať komentár Settings... Nastavenia... &Continuous &Súvislo &Two pages &Dve strany Two pages &with cover page Dve strany s &titulnou stranou &Multiple pages Viac&eré strany Right to left Sprava doľava Zoom &in Priblíž&iť Zoom &out &Odialiť Original &size Pôvodná &veľkosť Fit to page width Prispôsobiť šírku strany Fit to page size Prispôsobiť veľkosť strany Rotate &left Otočiť doľ&ava Rotate &right Otočiť dop&rava Invert colors Invertovať farby Convert to grayscale Konvertovať do odtieňov šedej Trim margins Orezať okraje Darken with paper color Stmaviť s farbou papiera Lighten with paper color Zosvetliť s farbou papiera Fonts... Písma... &Fullscreen &Celá obrazovka &Presentation... &Prezentácia... &Previous tab &Predchádzajúca karta &Next tab &Nasledujúca karta &Close tab &Zatvoriť kartu Close &all tabs Z&atvoriť všetky karty Close all tabs &but current tab Zatvoriť všetky karty &okrem súčasnej Restore &most recently closed tab Obnoviť &naposledy zatvorenú kartu &Previous bookmark &Predchádzajúca záložka &Next bookmark &Nasledujúca záložka &Add bookmark Prid&ať záložku Open copy in new &window Split view horizontally... Split view vertically... Close current view Thumb&nails &Náhľady Book&marks &Záložky Composition Kompozícia &Remove bookmark Odst&rániť záložku Edit '%1' at %2,%3... Upraviť '%1' z %2,%3... Open containing &folder Otvoriť obsahujúci &priečinok &Save Remove all bookmarks Odstrániť všetky záložky &Contents Pomo&cník &About O &programe &File &Súbor &Edit &Upraviť &View &Zobraziť &Outline &Obsah &Properties &Vlastnosti &Search &Hľadať &Tool bars Panely &nástrojov &Docks &Bočné panely &Tabs Kar&ty &Bookmarks Zá&ložky &Help &Nápoveda Choose instance Instance: qpdfview::PageItem Go to page %1. Prejsť na stranu %1. Go to page %1 of file '%2'. Prejsť na stranu %1 súboru '%2'. Open '%1'. Otvoriť '%1'. Edit form field '%1'. Upraviť políčko formulára '%1'. Copy &text Kopírovať &text &Select text &Vybrať text Copy &image Kopírovať &obrázok Save image to &file... Uložiť obrázok so &súboru... Save image to file Uložiť obrázok do súboru Warning Varovanie Could not save image to file '%1'. Obrázok sa nemohol uložiť do súboru '%1'. Add &text Pridať &text Add &highlight Pridať &zvýraznenie &Copy link address &Kopírovať adresu odkazu &Select link address &Vybrať adresu odkazu &Remove annotation Odst&rániť komentár qpdfview::PdfSettingsWidget Antialiasing: Vyhladzovanie: Text antialiasing: Vyhlazovanie textu: None Žiadne Full Úplné Reduced Čiastočné Text hinting: Hinting textu: Ignore paper color: Ignorovať farbu papiera: Overprint preview: Náhľad pretlače: Solid Pevné Shaped Ohraničený Thin line mode: Režim tenkej čiary: Splash Úvodná obrazovka Arthur Arthur Backend: Backend: qpdfview::PluginHandler Image (%1) Obrázok (%1) Compressed (%1) Supported formats (%1) Podporované formáty (%1) Could not decompress '%1'! Could not match file type of '%1'! Nepodarilo sa porovnať typ súboru '%1'! Critical Kritické Could not load plug-in for file type '%1'! Nepodarilo sa načítať plugin pre súbory typu '%1'! qpdfview::PrintDialog Fit to page: Prispôsobiť strane: Page ranges: Rozsah strán: All pages Všetky strany Even pages Párne strany Odd pages Nepárne strany Page set: Súbor strán: Single page Jedna strana Two pages Dve strany Four pages Štyri strany Six pages Šesť strán Nine pages Deväť strán Sixteen pages Šestnásť strán Number-up: Na jednu stranu: Bottom to top and left to right Zdola hore a zľava doprava Bottom to top and right to left Zdola hore a zprava doľava Left to right and bottom to top Zľava doprava a zdola hore Left to right and top to bottom Zľava doprava a zhora dolu Right to left and bottom to top Zprava doľava a zdola hore Right to left and top to bottom Zprava doľava a zhora dolu Top to bottom and left to right Zhora dolu a zľava doprava Top to bottom and right to left Zhora dolu a zprava doľava Number-up layout: Rozloženie na strane: Extended options Pokročilé možnosti qpdfview::PsSettingsWidget Graphics antialias bits: Bity vyhladzovania grafiky: Text antialias bits: Bity vyhladzovania textu: qpdfview::RecentlyClosedMenu &Recently closed Nedávno zatvo&rené &Clear list &Vyčistiť zoznam qpdfview::RecentlyUsedMenu Recently &used Nedávno ot&vorené &Clear list &Vyčistiť zoznam qpdfview::SearchModel <b>%1</b> occurrences <b>%1</b> výskytov <b>%1</b> occurrences on page <b>%2</b> <b>%1</b> výskytov na strane <b>%2</b> qpdfview::SearchableMenu Search for '%1'... Hľadať '%1'... qpdfview::SettingsDialog General Všeobecné &Behavior &Správanie &Graphics &Grafika &Interface Rozhran&ie &Shortcuts &Skratky &Modifiers &Modifikátory Defaults Predvolené Defaults on current tab Východzie na aktuálnej karte Mouse wheel modifiers Modifikátory kolieska myši Mouse button modifiers Modifikátory tlačítka myši Open URL: Otvárať URL adresy: Auto-refresh: Obnoviť automaticky: Effective after restart. Aplikuje sa po reštarte programu. Track recently used: Zaznamenávať nedávno otvorené: Keep recently closed: Ponechať nedávno zatvorené: Restore tabs: Obnoviť karty: Restore bookmarks: Obnoviť záložky: Restore per-file settings: Obnoviť nastavenie súboru: min min Save database interval: Interval ukladania databáze: Synchronize presentation: Synchronizovať prezentovanie: Default Predvolené Presentation screen: Obrazovka prezentovania: Synchronize split views: Zoom factor: Koeficient zväčšovania: Parallel search execution: ms ms None Nič Highlight duration: Trvanie zvýraznenia: Highlight color: Farba zvýraznenia: Annotation color: Farba poznámky: '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number. '%1' je nahradené absolútnou cestou k súboru. '%2' resp. '%3' je nahradené číslom radku resp. stĺpca. Source editor: Editor zdrojov: Use tiling: Použiť dlaždicové zobrazenie: Keep obsolete pixmaps: Zachovať zastaralé pixmapy: Use device pixel ratio: Použiť pomer obrazovky zariadenia: Decorate pages: Orámovať strany: Decorate links: Orámovať odkazy: Decorate form fields: Orámovať políčka formulára: Background color: Farba pozadia: Paper color: Farba papiera: Presentation background color: Farba pozadia prezentácie: Pages per row: Strán na riadok px px Page spacing: Odstup strán: Thumbnail spacing: Odstup miniatúr: Thumbnail size: Veľkosť miniatúr: Fit to viewport Prispôsobiť oblasti pohľadu Document context menu: Kontextové menu dokumentu: Tab context menu: Kontextové menu karty Open in source editor: Otvoriť v editore zdrojových kódov: %1 MB %1 MiB Cache size: Veľkosť vyrovnávacej pamäte: Minimal scrolling: Minimálne skrolovanie: Prefetch: Načítavať dopredu: Prefetch distance: Vzdialenosť predprípravy: Top Hore Bottom Dole Left Vľavo Right Vpravo Tab position: Pozícia kariet: As needed Podľa potreby Always Vždy Exit after last tab: Ukončiť po poslednej karte: Scrollable menus: Skrolovacie menu: Searchable menus: Prohľadávateľné menu: Zoom to selection: Priblížiť výber Never Nikdy Settings Nastavenia Tab visibility: Viditeľnosť kariet: Spread tabs: Roztiahnuť karty: New tab next to current tab: Nová karta vedľa aktuálnej karty: Recently used count: Počet nedávno použitých: Recently closed count: Počet nedávno zatvorených: Extended search dock: Rozšírený panel hľadania: Toggle tool and menu bars with fullscreen: Prepínať panely nástrojov a panel menu pri zobrazení na celú obrazovku File tool bar: Panel nástrojov pre Súbor: Edit tool bar: Panel nástrojov pre Upraviť: View tool bar: Panel nástrojov pre Zobraziť: Use page label: Použiť popis strany: Document title as tab title: Názov dokumentu ako titulok karty: Current page in window title: Aktuálna strana v názve okna: Instance name in window title: Názov inštancie v názve okna: Synchronize outline view: Synchronizovať zobrazenie obsahu: Highlight current thumbnail: Zvýrazniť aktuálny náhľad: Limit thumbnails to results: Obmedziť náhľady pre výsledky: Annotation overlay: Prekrytie poznámky: Form field overlay: Prekrytie formulárového políčka: Zoom: Priblíženie: Rotate: Otočenie: Scroll: Skrolovanie: Copy to clipboard: Skopírovať do schránky: Add annotation: Pridať komentár: qpdfview::ShortcutHandler Action Činnosť Key sequence Klávesová skratka Skip backward Preskočiť dozadu Skip forward Preskočiť dopredu Move up Posunúť vyššie Move down Posunúť nižšie Move left Posunúť doľava Move right Posunúť doprava qpdfview::TreeView &Expand all &Rozbaliť všetko &Collapse all &Zbaliť všetko qpdfview-0.4.18/translations/qpdfview_sr.ts0000644000000000000000000024741113516127411017213 0ustar 00000000000000 Serbian <sr@li.org> Саша Петровић <salepetronije@gmail.com> 2016-03-10 13:41+0000 2018-05-27 11:51+0000 qpdfview FULL NAME <EMAIL@ADDRESS> 2018-05-28 05:33+0000 # Serbian translation for qpdfview # Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015 # This file is distributed under the same license as the qpdfview package. # FIRST AUTHOR <EMAIL@ADDRESS>, 2015. # Project-Id-Version,Report-Msgid-Bugs-To,POT-Creation-Date,PO-Revision-Date,Last-Translator,Language-Team,MIME-Version,Content-Type,Content-Transfer-Encoding,X-Launchpad-Export-Date,X-Qt-Contexts Model::ImageDocument Image (%1) Слика (%1) Size Величина Resolution Размера Depth Дубина Format Облик Monochrome Једнобојно Indexed Индексирано 32 bits RGB 32 бита РГБ-а 32 bits ARGB 32 бита АРГБ-а 16 bits RGB 16 бита РГБ-а 24 bits RGB 24 бита РГБ-а Model::PdfDocument Linearized Линеарно Name Назив Type Врста Embedded Угнежђен Subset Подскуп File Датотека Yes Да PDF version Издање ПДФ-а Encrypted Шифровано No Не Model::PdfPage Information Обавештење Version 0.20.1 or higher of the Poppler library is required to add or remove annotations. Издање 0.20.1 или новија библиотеке Поплер је потребна за додавање или уклањање напомена. Model::PsDocument Title Наслов Created for Направљено за Creator Стваралац Creation date Дан израде Format Облик Language level Језички ниво QObject An empty instance name is not allowed. Празна ставка имена није допуштена. An empty search text is not allowed. Празно поље претраге текста није дозвољено. Unknown command-line option '%1'. Непозната опција командне-линије '%1'. Using '--instance' requires an instance name. Коришћење '--instance' захтева име инстанце. Using '--instance' is not allowed without using '--unique'. Коришћење '--instance' није дозвољено без употребе '--unique'. An instance name must only contain the characters "[A-Z][a-z][0-9]_" and must not begin with a digit. Име инстанце може садржати само карактере "[A-Z][a-z][0-9]_" и не сме почињати бројем. Using '--search' requires a search text. Коришћење '--search' захтева текст за претрагу. Could not prepare signal handler. Неуспешна припрема сигнала управљања. QShortcut Shift Shift Ctrl Ctrl Alt Alt Shift and Ctrl Shift и Ctrl Shift and Alt Shift и Alt Ctrl and Alt Ctrl и Alt Right mouse button Десно дугме миша Middle mouse button Средње дугме миша None Ниједно qpdfview::BookmarkDialog Bookmark Обележивач Page: Страна: Label: Натпис: Comment: Напомена: Modified: Измењено: qpdfview::BookmarkMenu &Open &Отвори Open in new &tab Отвори у новој &картици &Remove bookmark &Уклони обележивач qpdfview::Database Jump to page %1 Иди на страницу %1 qpdfview::DocumentView Information Информације The source editor has not been set. Сорс едитор није подешен. Opening URL is disabled in the settings. Отварање URL (линка) је онемогућено у подешавањима. Warning Упозорење SyncTeX data for '%1' could not be found. SyncTeX подаци за '%1' не могу бити пронађени. Printing '%1'... Штампање '%1'... Unlock %1 Откључај %1 Password: Лозинка: Page %1 Страница %1 qpdfview::FileAttachmentAnnotationWidget Save... Сачувај... Save and open... Сачувај и отвори... Save file attachment Сачувај атачмент фајл Warning Упозорење Could not open file attachment saved to '%1'. Не могу да отворим атачмент датотеку сачувану у '%1'. Could not save file attachment to '%1'. Не могу да сачувам атачмент датотеку у '%1'. qpdfview::FontsDialog Fonts Фонтови qpdfview::HelpDialog Help Помоћ help.html Please replace by file name of localized help if available, e.g. "help_fr.html". помоћ_rs.html Find previous Нађи претходнo Find next Нађи следећe qpdfview::MainWindow Toggle tool bars Пребаци на палету алата Toggle menu bar Пребаци на палету менија Warning Упозорење Could not open '%1'. Не могу да отворим '%1'. Copy file path Копирај путању датотеке Select file path Назначите путању датотеке Close all tabs Затвори све картице Close all tabs but this one Затвори све картице осим ове Close all tabs to the left Затвори све картице налево Close all tabs to the right Затвори све картице надесно Open Отвори Open in new tab Отвори у новој картици Could not refresh '%1'. Не могу да освежим '%1'. Save copy Сачувај копију Could not save copy at '%1'. Не могу да сачувам копију на '%1'. Save as Сачувај као Move to instance Failed to access instance '%1'. Could not save as '%1'. Не могу да сачувам као '%1'. Could not print '%1'. Не могу да штампам '%1'. Set first page Подесите почетну страницу Select the first page of the body matter: Изаберите почетну страницу из садржаја: Jump to page Иди на страницу Page: Страна: Jump to page %1 Иди на страницу %1 About qpdfview О qpdfview <p><b>qpdfview %1</b></p><p>qpdfview is a tabbed document viewer using Qt.</p><p>This version includes:<ul> <p><b>qpdfview %1</b></p><p>qpdfview је читач докумената са употрбом картица користи Qt.</p><p>Ова верзија укључује:<ul> <li>PDF support using Poppler %1</li> <li>PDF подршка користи Poppler %1</li> <li>PS support using libspectre %1</li> <li>PS подршка користи libspectre %1</li> <li>DjVu support using DjVuLibre %1</li> <li>DjVu подршка користи DjVuLibre %1</li> <li>PDF support using Fitz %1</li> <li>PDF подршка користи Fitz %1</li> <li>Printing support using CUPS %1</li> <li>Printing подршка користи CUPS %1</li> &Edit bookmark &Уреди обележавач The document '%1' has been modified. Do you want to save your changes? Документ '%1' ће бити измењен. Да ли желите да сачувате измене? Page width Ширина странице Page size Величина странице Match &case Одговара &случају Whole &words Све &речи Highlight &all Назначи &све &Open... &Отвори... Open in new &tab... Отвори у новој &картици... Open &copy in new tab Отвори &копирај у новоу картицу Move to &instance... &Refresh &Освежи Information Instance-to-instance communication requires D-Bus support. </ul><p>See <a href="https://launchpad.net/qpdfview">launchpad.net/qpdfview</a> for more information.</p><p>&copy; %1 The qpdfview developers</p> Save &as... Сачувај &као... Save &copy... &Print... &Штампај... E&xit И&зађи &Previous page &Претходна страница &Next page &Следећа страница &First page &Прва страница &Last page &Последња страница &Set first page... &Подеси прву страницу... &Jump to page... &Иди на страницу... Jump &backward Иди &назад Jump for&ward Иди на&пред &Search... &Тражи... Find previous Нађи претходнo Find next Нађи следећe Cancel search Откажи претраживање &Copy to clipboard &Копирај у клипборд &Add annotation &Додај напомену Settings... Подешавања... &Continuous &Континуално &Two pages &Две странице Two pages &with cover page Две стране &насловну &Multiple pages &Више странично Right to left Са десна на лево Zoom &in Увећа &но Zoom &out Умање &но Original &size Оригинална &величина Fit to page width Уклопи по ширини стране Fit to page size Уклопи у величину стране Rotate &left Ротирај &лево Rotate &right Ротирај &десно Invert colors Инверзија боја Convert to grayscale Претвори у сиве тонове Trim margins Уреди маргине Darken with paper color Потамни боју папира Lighten with paper color Посветли боју папира Fonts... Фонтови... &Fullscreen &Преко целог екрана &Presentation... &Презентација... &Previous tab &Претходна картица &Next tab &Следећа картица &Close tab &Затвори картицу Close &all tabs Затвори &све картице Close all tabs &but current tab Затвори све картице &осим тренутне Restore &most recently closed tab Поврати &недавно затворену картицу &Previous bookmark &Претходни обележивач &Next bookmark &Следећи обележивач &Add bookmark &Додај обележивач Open copy in new &window Split view horizontally... Split view vertically... Close current view Thumb&nails Сли&чице Book&marks Обележи&вачи Composition Композиција &Remove bookmark &Уклони обележивач Edit '%1' at %2,%3... Уреди '%1' at %2,%3... Open containing &folder Отвори садржај &фасцикле &Save Remove all bookmarks Уклони све обележиваче &Contents &Садржај &About &О програму &File &Датотека &Edit &Уреди &View &Приказ &Outline &Шема &Properties &Својства &Search &Претраживање &Tool bars &Палета алата &Docks &Бочно &Tabs &Картице &Bookmarks &Обележивачи &Help &Помоћ Choose instance Instance: qpdfview::PageItem Go to page %1. Иди на страницу %1. Go to page %1 of file '%2'. Иди на страницу %1 датотеке '%2'. Open '%1'. Отвори '%1'. Edit form field '%1'. Уреди из поља '%1'. Copy &text Копирај &текст &Select text &Избор текста Copy &image Копирај &слику Save image to &file... Сачувај слику у &датотеци... Save image to file Сачувај слику у датотеци Warning Упозорење Could not save image to file '%1'. Није могуће сачувати слику у датотеци '%1'. Add &text Додај &текст Add &highlight Додај &истакни &Copy link address &Копирај линк адресе &Select link address &Селектуј линк адресе &Remove annotation &Уклони напомену qpdfview::PdfSettingsWidget Antialiasing: Умекшавање: Text antialiasing: Умекшавање текста: None Ништа Full Потпуно Reduced Умањено Text hinting: Текстуалне сугестије: Ignore paper color: Занемари боју папира: Overprint preview: Приказ дретштампе: Solid Испуњено Shaped Развијено Thin line mode: Начин танке линије: Splash Поздравни екран Arthur Backend: Позадина qpdfview::PluginHandler Image (%1) Слика (%1) Compressed (%1) Supported formats (%1) Подржани формати (%1) Could not decompress '%1'! Could not match file type of '%1'! Неподударње типа датотеке '%1'! Critical Критично Could not load plug-in for file type '%1'! Није могуће учитати плаг-ин за тип датотеке '%1'! qpdfview::PrintDialog Fit to page: Прилагоди страници: Page ranges: Од - до странице: All pages Све странице Even pages Парне странице Odd pages Непарне странице Page set: Сет страница: Single page Једна страница Two pages Две странице Four pages Четири странице Six pages Шест страница Nine pages Девет страница Sixteen pages Шеснаест страница Number-up: Број-више: Bottom to top and left to right Са дна ка врху и слева на десно Bottom to top and right to left Са дна ка врху и сдесна на лево Left to right and bottom to top Слева на десно и са дна ка врху Left to right and top to bottom Сдесна на лево и са дна ка врху Right to left and bottom to top Сдесна на лево и са дна ка врху Right to left and top to bottom Сдесна на лево и са врха ка дну Top to bottom and left to right Са врха ка дну и слева на десно Top to bottom and right to left Са врха ка дну и сдесна на лево Number-up layout: Нумерација распореда: Extended options Проширене опције qpdfview::PsSettingsWidget Graphics antialias bits: Бит умекшавања графике: Text antialias bits: Бит умекшавања текста: qpdfview::RecentlyClosedMenu &Recently closed &Недавно затворен &Clear list &Очисти листу qpdfview::RecentlyUsedMenu Recently &used Недавно &коришћен &Clear list &Очисти листу qpdfview::SearchModel <b>%1</b> occurrences <b>%1</b> дешавања <b>%1</b> occurrences on page <b>%2</b> <b>%1</b> дешавања на страни <b>%2</b> qpdfview::SearchableMenu Search for '%1'... Претражи за '%1'... qpdfview::SettingsDialog General Опште &Behavior &Понашање &Graphics &Графика &Interface &Интерфејс &Shortcuts &Пречице &Modifiers &Прилагођење Defaults Подразумевано Defaults on current tab Подразумевано на тренутној картици Mouse wheel modifiers Прилагођење точкића миша Mouse button modifiers Прилагођење дугмета миша Open URL: Отвори URL: Auto-refresh: Ауто-освежавање: Effective after restart. Активно после поновног покретања. Track recently used: Прати недавно коришћено: Keep recently closed: Задржи недавно затворено: Restore tabs: Врати картице: Restore bookmarks: Врати обележиваче: Restore per-file settings: Врати подешавања датотека: min min Save database interval: Интервал чувања података: Synchronize presentation: Синхронизација презентације: Default Подразумевано Presentation screen: Презентациони екран: Synchronize split views: Zoom factor: Фактор увећања: Parallel search execution: ms ms None Ништа Highlight duration: Трајање истицања: Highlight color: Боја истицања: Annotation color: Боја напомена: '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number. '%1' је замењена апсолутном путањом датотеке. '%2' resp. '%3' је замењен линијом resp. броја колоне. Source editor: Уређивач изворног кода: Use tiling: Користи плочице: Keep obsolete pixmaps: Задржи постојеће мапе пиксела: Use device pixel ratio: Користи однос пиксела уређаја: Decorate pages: Декорација страница: Decorate links: Декорација линкова: Decorate form fields: Декорација облика поља: Background color: Боја позадине: Paper color: Боја папира: Presentation background color: Боја позадине презентације: Pages per row: Страница по реду: px px Page spacing: Размак страница: Thumbnail spacing: Размак сличица: Thumbnail size: Величина сличица: Fit to viewport Прилагођење приказа Document context menu: Документ контекст мени: Tab context menu: Таб контекст мени: Open in source editor: Отвори са уређивачем изворног кода: %1 MB %1 МБ Cache size: Величина кеша: Minimal scrolling: Минимално скроловање: Prefetch: Prefetch distance: Top Врх Bottom Дно Left Лево Right Десно Tab position: Положај картице: As needed Када је потребно Always Увек Exit after last tab: Изађи после задње картице: Scrollable menus: Скролујући менији: Searchable menus: Претраживачки менији: Zoom to selection: Увећавање изабраног: Never Никада Settings Подешавања Tab visibility: Видљивост картица: Spread tabs: Проширење картица: New tab next to current tab: Нова картица уз трутну катрицу: Recently used count: Број недавно коришћених: Recently closed count: Број недавно затворених: Extended search dock: Проширење поља претраге: Toggle tool and menu bars with fullscreen: Преклопник и палетни мени са пуним екраном: File tool bar: Палета алата датотеке: Edit tool bar: Уређивање палете алата: View tool bar: Изглед палете алата: Use page label: Користи обележавање страна: Document title as tab title: Наслов документа као име картице: Current page in window title: Тренутна страница у наслову прозора: Instance name in window title: Име инстанце у наслову прозора: Synchronize outline view: Синхронизовање приказа структуре: Highlight current thumbnail: Назначи тренутну сличицу: Limit thumbnails to results: Ограничење приказа у резултатима: Annotation overlay: Напомене преклапања: Form field overlay: Поље образаца: Zoom: Увећање: Rotate: Ротирај: Scroll: Скроловање: Copy to clipboard: Копирај у међумеморију: Add annotation: Додај напомену: qpdfview::ShortcutHandler Action Радња Key sequence Редослед дирки Skip backward Прескочи уназад Skip forward Прескочи унапред Move up Подигни Move down Спусти Move left Помери улево Move right Помери удесно qpdfview::TreeView &Expand all &Прошири све &Collapse all &Скупи све MainWindow &Save copy... &Сачувај копију... qpdfview-0.4.18/translations/qpdfview_sv.ts0000644000000000000000000023322713516127411017217 0ustar 00000000000000 Model::ImageDocument Image (%1) Bild (%1) Size Storlek Resolution Upplösning Depth Djup Format Format Monochrome Svartvitt Indexed Indexerat 32 bits RGB 32-bitars RGB 32 bits ARGB 32-bitars ARGB 16 bits RGB 16-bitars RGB 24 bits RGB 24-bitars RGB Model::PdfDocument Linearized Linjärt Name Namn Type Typ Embedded Inbäddad Subset Delmängd File Fil Yes Ja PDF version PDF-version Encrypted Krypterat No Nej Model::PdfPage Information Information Version 0.20.1 or higher of the Poppler library is required to add or remove annotations. Det krävs version 0.20.1 eller högre av Poppler för att lägga till eller ta bort anteckningar. Model::PsDocument Title TItel Created for Skapad för Creator Skapare Creation date Skapat Format Format Language level Språknivå QObject An empty instance name is not allowed. Ett tomt förekomstnamn är inte tillåtet. An empty search text is not allowed. En tom söktext är inte tillåtet. Unknown command-line option '%1'. Okänt kommandoradsalternativ '%1'. Using '--instance' requires an instance name. Att använda '--instance' kräver ett förekomstnamn. Using '--instance' is not allowed without using '--unique'. Att använda '--instance' är inte tillåtet utan att använda '--unique'. An instance name must only contain the characters "[A-Z][a-z][0-9]_" and must not begin with a digit. Ett förekomstnamn får endast innehålla tecknen [A-Z][a-z][0-9]_" och får inte börja med en siffra. Using '--search' requires a search text. Att använda '--search' kräver en söktext. Could not prepare signal handler. Det gick inte att förbereda signalhanterare. QShortcut Shift Shift Ctrl Ctrl Alt Alt Shift and Ctrl Shift och Ctrl Shift and Alt Shift och Alt Ctrl and Alt Ctrl och Alt Right mouse button Höger musknapp Middle mouse button Mittenmusknapp None Ingen qpdfview::BookmarkDialog Bookmark Bokmärke Page: Sida: Label: Etikett: Comment: Kommentar: Modified: Ändrad: qpdfview::BookmarkMenu &Open &Öppna Open in new &tab Öppna i ny &flik &Remove bookmark &Ta bort bokmärke qpdfview::Database Jump to page %1 Hoppa till sidan %1 qpdfview::DocumentView Information Information The source editor has not been set. Källredigeraren har inte angetts. Opening URL is disabled in the settings. Öppnande av URL är inaktiverat i inställningarna Warning Varning SyncTeX data for '%1' could not be found. Det gick inte att hitta SyncTeX-data för '%1'. Printing '%1'... Skriver ut '%1'... Unlock %1 Lås upp %1 Password: Lösenord: Page %1 Sida %1 qpdfview::FileAttachmentAnnotationWidget Save... Spara... Save and open... Spara och öppna... Save file attachment Spara bifogad fil Warning Varning Could not open file attachment saved to '%1'. Det gick inte att öppna filbilaga sparad till '%1'. Could not save file attachment to '%1'. Kunde inte spara bifogad fil till '%1'. qpdfview::FontsDialog Fonts Teckensnitt qpdfview::HelpDialog Help Hjälp help.html Please replace by file name of localized help if available, e.g. "help_fr.html". help.html Find previous Sök föregående Find next Sök nästa qpdfview::MainWindow Toggle tool bars Växla verktygsrader Toggle menu bar Växla menyrad Warning Varning Could not open '%1'. Kunde inte öppna '%1'. Copy file path Kopiera filsökväg Select file path Välj filsökväg Close all tabs Stäng alla flikar Close all tabs but this one Stäng alla flikar utom denna Close all tabs to the left Stäng alla flikar till vänster Close all tabs to the right Stäng alla flikar till höger Open Öppna Open in new tab Öppna i ny flik Could not refresh '%1'. Kunde inte uppdatera '%1'. Save copy Spara kopia Could not save copy at '%1'. Det gick inte att spara kopia vid '%1'. Save as Spara som Move to instance Flytta till förekomst Failed to access instance '%1'. Det gick inte att komma åt förekomst '%1'. Could not save as '%1'. Kunde inte spara som '%1'. Could not print '%1'. Kunde inte skriva ut '%1'. Set first page Ställ in förstasida Select the first page of the body matter: Välj förstasida för brödtext: Jump to page Hoppa till sida Page: Sida: Jump to page %1 Hoppa till sidan %1 About qpdfview Om qpdfview <p><b>qpdfview %1</b></p><p>qpdfview is a tabbed document viewer using Qt.</p><p>This version includes:<ul> <p><b>qpdfview %1</b></p><p>qpdfview är en dokumentvisare med flikar baserad på Qt.</p><p>Den här versionen inkluderar:<ul> <li>PDF support using Poppler %1</li> <li>PDF-stöd använder Poppler %1</li> <li>PS support using libspectre %1</li> <li>PS-stöd använder libspectre %1</li> <li>DjVu support using DjVuLibre %1</li> <li>DjVu-stöd använder DjVuLibre %1</li> <li>PDF support using Fitz %1</li> <li>PDF-stöd använder Fitz %1</li> <li>Printing support using CUPS %1</li> <li>Utskriftsstöd använder CUPS %1</li> &Edit bookmark R&edigera bokmärke The document '%1' has been modified. Do you want to save your changes? Dokumentet '%1' har ändrats. Vill du spara dina ändringar? Page width Sidbredd Page size Sidstorlek Match &case S&kiftlägeskänslig Whole &words Hela o&rd Highlight &all Markera &alla &Open... &Öppna... Open in new &tab... Öppna i ny &flik... Open &copy in new tab Öppna och &kopiera i ny flik Move to &instance... Flytta t&ill förekomst... &Refresh &Uppdatera Information Information Instance-to-instance communication requires D-Bus support. </ul><p>See <a href="https://launchpad.net/qpdfview">launchpad.net/qpdfview</a> for more information.</p><p>&copy; %1 The qpdfview developers</p> Save &as... Spara so&m... Save &copy... Spara och &kopiera... &Print... S&kriv ut... E&xit &Avsluta &Previous page &Föregående sida &Next page &Nästa sida &First page &Första sidan &Last page &Sista sidan &Set first page... &Ställ in förstasida... &Jump to page... &Hoppa till sida... Jump &backward Hoppa &bakåt Jump for&ward Hoppa fra&måt &Search... &Sök... Find previous Sök föregående Find next Sök nästa Cancel search Avbryt sökning &Copy to clipboard &Kopiera till urklipp &Add annotation &Lägg till anteckning Settings... Inställningar... &Continuous &Kontinuerlig &Two pages &Två sidor Two pages &with cover page Två sidor &med försättsblad &Multiple pages &Flera sidor Right to left Höger till vänster Zoom &in Zooma &in Zoom &out Zooma &ut Original &size Ursprungs&storlek Fit to page width Anpassa till sidbredd Fit to page size Anpassa till sidstorlek Rotate &left Rotera åt &vänster Rotate &right Rotera åt &höger Invert colors Invertera färger Convert to grayscale Konvertera till gråskala Trim margins Beskär marginaler Darken with paper color Gör mörkare med pappersfärg Lighten with paper color Gör ljusare med pappersfärg Fonts... Teckensnitt... &Fullscreen &Helskärm &Presentation... &Presentation... &Previous tab &Föregående flik &Next tab &Nästa flik &Close tab &Stäng flik Close &all tabs Stäng &alla flikar Close all tabs &but current tab Stäng alla flikar &utom aktiv flik Restore &most recently closed tab Återställ &senast stängda flik &Previous bookmark &Föregående bokmärke &Next bookmark &Nästa bokmärke &Add bookmark &Lägg till bokmärke Open copy in new &window Split view horizontally... Split view vertically... Close current view Thumb&nails Mi&niatyrbilder Book&marks Bok&märken Composition Sammansättning &Remove bookmark &Ta bort bokmärke Edit '%1' at %2,%3... Redigera '%1' vid %2,%3... Open containing &folder Öppna innehållande &mapp &Save &Spara Remove all bookmarks Ta bort alla bokmärken &Contents &Innehåll &About &Om &File &Arkiv &Edit &Redigera &View &Visa &Outline Öve&rsikt &Properties &Egenskaper &Search &Sök &Tool bars &Verktygsrader &Docks &Paneler &Tabs F&likar &Bookmarks &Bokmärken &Help &Hjälp Choose instance Välj förekomst Instance: Förekomst: qpdfview::PageItem Go to page %1. Gå till sidan %1. Go to page %1 of file '%2'. Gå till sidan %1 i filen '%2'. Open '%1'. Öppna '%1'. Edit form field '%1'. Redigera formulärfält '%1'. Copy &text Kopiera &text &Select text &Markera text Copy &image Kopiera &bild Save image to &file... Spara bild till &fil... Save image to file Spara bild till fil Warning Varning Could not save image to file '%1'. Kunde inte spara bild till fil '%1'. Add &text Lägg till &text Add &highlight Lägg till en &markering &Copy link address &Kopiera länkadress &Select link address &Markera länkadress &Remove annotation &Ta bort anteckning qpdfview::PdfSettingsWidget Antialiasing: Antialiasing: Text antialiasing: Antialiasing för text: None Ingen Full Fullständig Reduced Reducerad Text hinting: Textantydan: Ignore paper color: Ignorera pappersfärg: Overprint preview: Skriv över förhandsvisning: Solid Solid Shaped Formad Thin line mode: Tunn linje läge: Splash Splash Arthur Arthur Backend: Bakände: qpdfview::PluginHandler Image (%1) Bild (%1) Compressed (%1) Supported formats (%1) Format som stöds (%1) Could not decompress '%1'! Could not match file type of '%1'! Det gick inte att matcha filtypen '%1'! Critical Kritiskt Could not load plug-in for file type '%1'! Det gick inte att läsa in insticksprogram för filtyp '%1'! qpdfview::PrintDialog Fit to page: Anpassa till sida: Page ranges: Sidintervall: All pages Alla sidor Even pages Jämna sidor Odd pages Udda sidor Page set: Sidval: Single page En sida Two pages Två sidor Four pages Fyra sidor Six pages Sex sidor Nine pages Nio sidor Sixteen pages 16 sidor Number-up: Nummer upp: Bottom to top and left to right Nerifrån och upp och vänster till höger Bottom to top and right to left Nerifrån och upp och höger till vänster Left to right and bottom to top Vänster till höger och nerifrån och upp Left to right and top to bottom Vänster till höger och uppifrån och ner Right to left and bottom to top Höger till vänster och nerifrån och upp Right to left and top to bottom Höger till vänster och uppifrån och ner Top to bottom and left to right Uppifrån och ner och vänster till höger Top to bottom and right to left Uppifrån och ner och höger till vänster Number-up layout: Nummer upp layout: Extended options Utökade alternativ qpdfview::PsSettingsWidget Graphics antialias bits: Grafik antialias bitar: Text antialias bits: Text antialias bitar: qpdfview::RecentlyClosedMenu &Recently closed &Senast stängda &Clear list &Rensa lista qpdfview::RecentlyUsedMenu Recently &used Senast &använda &Clear list &Rensa lista qpdfview::SearchModel <b>%1</b> occurrences <b>%1</b> förekomster <b>%1</b> occurrences on page <b>%2</b> <b>%1</b> förekomster på sida <b>%2</b> qpdfview::SearchableMenu Search for '%1'... Sök efter '%1'... qpdfview::SettingsDialog General Allmänt &Behavior &Beteende &Graphics &Grafik &Interface &Gränssnitt &Shortcuts &Genvägar &Modifiers &Modifierare Defaults Standardinställningar Defaults on current tab Standardinställningar för aktiv flik Mouse wheel modifiers Mushjulsmodifierare Mouse button modifiers Musknappsmodifierare Open URL: Öppna URL: Auto-refresh: Automatisk uppdatering: Effective after restart. Gäller efter omstart. Track recently used: Spara senast använda: Keep recently closed: Behåll senast stängda: Restore tabs: Återställ flikar: Restore bookmarks: Återställ bokmärken: Restore per-file settings: Återställ filspecifika inställningar: min min Save database interval: Spara databasintervall: Synchronize presentation: Synkronisera presentation: Default Standard Presentation screen: Presentationsskärm: Synchronize split views: Zoom factor: Zoomfaktor: Parallel search execution: ms ms None Ingen Highlight duration: Tidsintervall för markeringar: Highlight color: Färg för markeringar: Annotation color: Färg för anteckningar: '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number. '%1' ersätts med den fullständiga sökvägen. '%2' resp. '%3' ersätts med rad- resp. kolumnnummer. Source editor: Källredigerare: Use tiling: Använd tiling: Keep obsolete pixmaps: Behåll obsoleta pixmaps: Use device pixel ratio: Använd den fysiska enhetens pixelförhållande: Decorate pages: Använd siddekorationer: Decorate links: Använd dekorationer för länkar: Decorate form fields: Använd dekorationer för formulärfält: Background color: Bakgrundsfärg: Paper color: Pappersfärg: Presentation background color: Bakgrundsfärg för presentationer: Pages per row: Sidor per rad: px px Page spacing: Avstånd mellan sidor: Thumbnail spacing: Avstånd mellan miniatyrbilder: Thumbnail size: Miniatyrbildsstorlek: Fit to viewport Anpassa till visning Document context menu: Dokumentsnabbmeny: Tab context menu: Fliksnabbmeny: Open in source editor: Öppna i källredigerare: %1 MB %1 MB Cache size: Cachestorlek: Minimal scrolling: Minsta rullning: Prefetch: Förhandshämtning: Prefetch distance: Avstånd för förhandshämtningar: Top Överkant Bottom Nederkant Left Vänster Right Höger Tab position: Flikplacering: As needed Efter behov Always Alltid Exit after last tab: Stäng efter sista flik: Scrollable menus: Rullbara menyer: Searchable menus: Sökbara menyer: Zoom to selection: Zooma till markering: Never Aldrig Settings Inställningar Tab visibility: Visning av flikar: Spread tabs: Sprid flikar: New tab next to current tab: Ny flik bredvid aktiv flik Recently used count: Antal senast använda: Recently closed count: Antal senast stängda: Extended search dock: Utökat sökfält: Toggle tool and menu bars with fullscreen: Växla verktygs- och menyrader med fullskärmsläge: File tool bar: Verktygsrad "Arkiv": Edit tool bar: Verktygsrad "Redigera": View tool bar: Verktygsrad "Visa": Use page label: Använd sidetikett: Document title as tab title: Dokumentnamn som fliknamn: Current page in window title: Aktiv sida i fönstertitel: Instance name in window title: Namn på instans i fönstertitel: Synchronize outline view: Synkronisera översiktsvyn: Highlight current thumbnail: Markera aktiv miniatyrbild: Limit thumbnails to results: Begränsa miniatyrbilder efter resultat: Annotation overlay: Överlappning av anteckningar: Form field overlay: Överlappning av formulärfält: Zoom: Zoom: Rotate: Rotera: Scroll: Scrollning: Copy to clipboard: Kopiera till urklipp: Add annotation: Lägg till anteckning: qpdfview::ShortcutHandler Action Åtgärd Key sequence Tangentföljd Skip backward Hoppa bakåt Skip forward Hoppa framåt Move up Flytta upp Move down Flytta ner Move left Flytta åt vänster Move right Flytta åt höger qpdfview::TreeView &Expand all &Expandera alla &Collapse all &Dölj alla qpdfview-0.4.18/translations/qpdfview_th.ts0000644000000000000000000023164513516127411017204 0ustar 00000000000000 Model::ImageDocument Image (%1) Size Resolution Depth Format ฟอร์แมต Monochrome Indexed 32 bits RGB 32 bits ARGB 16 bits RGB 24 bits RGB Model::PdfDocument Linearized Name ชื่อ Type ชนิด Embedded ฝังแนบมาด้วย Subset เซตย่อย File แฟ้ม Yes ใช่ PDF version Encrypted No ไม่ Model::PdfPage Information ข้อมูล Version 0.20.1 or higher of the Poppler library is required to add or remove annotations. รุ่น 0.20.1 หรือสูงกว่าของคลัง Poppler ต้องการเพิ่ม/ลบบันทึกย่อ Model::PsDocument Title ชื่อ Created for สร้างมาสำหรับ Creator ผู้สร้าง Creation date วันที่สร้าง Format ฟอร์แมต Language level ขั้นของภาษา QObject An empty instance name is not allowed. An empty search text is not allowed. ไม่อนุญาตให้เว้นว่างช่องค้นหาไว้ Unknown command-line option '%1'. ไม่รู้จักตัวเลือกบรรทัดคำสั่ง '%1' Using '--instance' requires an instance name. Using '--instance' is not allowed without using '--unique'. An instance name must only contain the characters "[A-Z][a-z][0-9]_" and must not begin with a digit. Using '--search' requires a search text. ในการใช้คำสั่ง '--search' ต้องพิมพ์คำค้นด้วย Could not prepare signal handler. QShortcut Shift Shift Ctrl Ctrl Alt Alt Shift and Ctrl Shift และ Ctrl Shift and Alt Ctrl and Alt Right mouse button Middle mouse button None qpdfview::BookmarkDialog Bookmark Page: Label: Comment: Modified: qpdfview::BookmarkMenu &Open Open in new &tab &Remove bookmark qpdfview::Database Jump to page %1 qpdfview::DocumentView Information ข้อมูล The source editor has not been set. Opening URL is disabled in the settings. Warning SyncTeX data for '%1' could not be found. Printing '%1'... Unlock %1 Password: Page %1 qpdfview::FileAttachmentAnnotationWidget Save... Save and open... Save file attachment Warning Could not open file attachment saved to '%1'. Could not save file attachment to '%1'. qpdfview::FontsDialog Fonts qpdfview::HelpDialog Help help.html Please replace by file name of localized help if available, e.g. "help_fr.html". Find previous Find next qpdfview::MainWindow Toggle tool bars Toggle menu bar Warning Could not open '%1'. Copy file path Select file path Close all tabs Close all tabs but this one Close all tabs to the left Close all tabs to the right Open Open in new tab Could not refresh '%1'. Save copy Could not save copy at '%1'. Save as Move to instance Failed to access instance '%1'. Could not save as '%1'. Could not print '%1'. Set first page Select the first page of the body matter: Jump to page Page: Jump to page %1 About qpdfview <p><b>qpdfview %1</b></p><p>qpdfview is a tabbed document viewer using Qt.</p><p>This version includes:<ul> <li>PDF support using Poppler %1</li> <li>PS support using libspectre %1</li> <li>DjVu support using DjVuLibre %1</li> <li>PDF support using Fitz %1</li> <li>Printing support using CUPS %1</li> &Edit bookmark The document '%1' has been modified. Do you want to save your changes? Page width Page size Match &case Whole &words Highlight &all &Open... Open in new &tab... Open &copy in new tab Move to &instance... &Refresh Information ข้อมูล Instance-to-instance communication requires D-Bus support. </ul><p>See <a href="https://launchpad.net/qpdfview">launchpad.net/qpdfview</a> for more information.</p><p>&copy; %1 The qpdfview developers</p> Save &as... Save &copy... &Print... E&xit &Previous page &Next page &First page &Last page &Set first page... &Jump to page... Jump &backward Jump for&ward &Search... Find previous Find next Cancel search &Copy to clipboard &Add annotation Settings... &Continuous &Two pages Two pages &with cover page &Multiple pages Right to left Zoom &in Zoom &out Original &size Fit to page width Fit to page size Rotate &left Rotate &right Invert colors Convert to grayscale Trim margins Darken with paper color Lighten with paper color Fonts... &Fullscreen &Presentation... &Previous tab &Next tab &Close tab Close &all tabs Close all tabs &but current tab Restore &most recently closed tab &Previous bookmark &Next bookmark &Add bookmark Open copy in new &window Split view horizontally... Split view vertically... Close current view Thumb&nails Book&marks Composition &Remove bookmark Edit '%1' at %2,%3... Open containing &folder &Save Remove all bookmarks &Contents &About &File &Edit &View &Outline &Properties &Search &Tool bars &Docks &Tabs &Bookmarks &Help Choose instance Instance: qpdfview::PageItem Go to page %1. Go to page %1 of file '%2'. Open '%1'. Edit form field '%1'. Copy &text &Select text Copy &image Save image to &file... Save image to file Warning Could not save image to file '%1'. Add &text Add &highlight &Copy link address &Select link address &Remove annotation qpdfview::PdfSettingsWidget Antialiasing: Text antialiasing: None Full Reduced Text hinting: Ignore paper color: Overprint preview: Solid Shaped Thin line mode: Splash Arthur Backend: qpdfview::PluginHandler Image (%1) Compressed (%1) Supported formats (%1) Could not decompress '%1'! Could not match file type of '%1'! Critical Could not load plug-in for file type '%1'! qpdfview::PrintDialog Fit to page: Page ranges: All pages Even pages Odd pages Page set: Single page Two pages Four pages Six pages Nine pages Sixteen pages Number-up: Bottom to top and left to right Bottom to top and right to left Left to right and bottom to top Left to right and top to bottom Right to left and bottom to top Right to left and top to bottom Top to bottom and left to right Top to bottom and right to left Number-up layout: Extended options qpdfview::PsSettingsWidget Graphics antialias bits: Text antialias bits: qpdfview::RecentlyClosedMenu &Recently closed &Clear list qpdfview::RecentlyUsedMenu Recently &used &Clear list qpdfview::SearchModel <b>%1</b> occurrences <b>%1</b> occurrences on page <b>%2</b> qpdfview::SearchableMenu Search for '%1'... qpdfview::SettingsDialog General &Behavior &Graphics &Interface &Shortcuts &Modifiers Defaults Defaults on current tab Mouse wheel modifiers Mouse button modifiers Open URL: Auto-refresh: Effective after restart. Track recently used: Keep recently closed: Restore tabs: Restore bookmarks: Restore per-file settings: min Save database interval: Synchronize presentation: Default Presentation screen: Synchronize split views: Zoom factor: Parallel search execution: ms None Highlight duration: Highlight color: Annotation color: '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number. Source editor: Use tiling: Keep obsolete pixmaps: Use device pixel ratio: Decorate pages: Decorate links: Decorate form fields: Background color: Paper color: Presentation background color: Pages per row: px Page spacing: Thumbnail spacing: Thumbnail size: Fit to viewport Document context menu: Tab context menu: Open in source editor: %1 MB Cache size: Minimal scrolling: Prefetch: Prefetch distance: Top Bottom Left Right Tab position: As needed Always Exit after last tab: Scrollable menus: Searchable menus: Zoom to selection: Never Settings Tab visibility: Spread tabs: New tab next to current tab: Recently used count: Recently closed count: Extended search dock: Toggle tool and menu bars with fullscreen: File tool bar: Edit tool bar: View tool bar: Use page label: Document title as tab title: Current page in window title: Instance name in window title: Synchronize outline view: Highlight current thumbnail: Limit thumbnails to results: Annotation overlay: Form field overlay: Zoom: Rotate: Scroll: Copy to clipboard: Add annotation: qpdfview::ShortcutHandler Action Key sequence Skip backward Skip forward Move up Move down Move left Move right qpdfview::TreeView &Expand all &Collapse all qpdfview-0.4.18/translations/qpdfview_tr.ts0000644000000000000000000023350513516127411017213 0ustar 00000000000000 Model::ImageDocument Image (%1) Resim (%1) Size Boyut Resolution Çözünürlük Depth Derinlik Format Biçim Monochrome Siyah beyaz Indexed İndisli 32 bits RGB 32 bit RGB 32 bits ARGB 32 bit ARGB 16 bits RGB 16 bit RGB 24 bits RGB 24 bit RGB Model::PdfDocument Linearized Doğruşallaştır Name İsim Type Tür Embedded Gömülü Subset Alt Küme File Dosya Yes Evet PDF version PDF sürümü Encrypted Şifreli No Hayır Model::PdfPage Information Bilgi Version 0.20.1 or higher of the Poppler library is required to add or remove annotations. Ek açıklamalar eklemek veya kaldırmak için Poppler kitaplığının 0.20.1 veya daha yüksek bir sürümü gereklidir. Model::PsDocument Title Başlık Created for İçin oluşturuldu Creator Oluşturucu Creation date Oluşturulma tarihi Format Biçem Language level Dil seviyesi QObject An empty instance name is not allowed. Boş bir örnek adı verilmez. An empty search text is not allowed. Boş bir arama metnine izin verilmiyor. Unknown command-line option '%1'. Bilinmeyen komut satırı seçeneği '%1'. Using '--instance' requires an instance name. '--instance' kullanmak bir örnek adı gerektirir. Using '--instance' is not allowed without using '--unique'. '--unique' kullanılmadan '--instance' kullanılmasına izin verilmez. An instance name must only contain the characters "[A-Z][a-z][0-9]_" and must not begin with a digit. Örnek adı yalnızca "[A-Z][a-z][0-9]_" karakterlerini içermeli ve bir rakamla başlamamalıdır. Using '--search' requires a search text. '--ara' kullanma bir arama metni gerektirir. Could not prepare signal handler. Sinyal işleyicisi hazırlanamadı. QShortcut Shift Üst Ctrl Ctrl Alt Alt Shift and Ctrl Shift ve Ctrl Shift and Alt Shift ve Alt Ctrl and Alt Ctrl ve Alt Right mouse button Sağ fare düğmesi Middle mouse button Orta fare düğmesi None Hiçbiri qpdfview::BookmarkDialog Bookmark Yerimi Page: Sayfa: Label: Etiket: Comment: Açıklama: Modified: Değiştirilme tarihi: qpdfview::BookmarkMenu &Open &Aç Open in new &tab Yeni &sekmede aç &Remove bookmark &Yerimini kaldır qpdfview::Database Jump to page %1 %1 sayfasına git qpdfview::DocumentView Information Bilgi The source editor has not been set. Kaynak düzeneyici ayarlanmadı. Opening URL is disabled in the settings. Bağlantıları açmak ayarlardan kapatılmış durumda. Warning Uyarı SyncTeX data for '%1' could not be found. '%1' için SyncTeX verileri bulunamadı. Printing '%1'... '%1' dosyası yazdırılıyor... Unlock %1 %1 dosyasının kilidini aç Password: Şifre: Page %1 Sayfa %1 qpdfview::FileAttachmentAnnotationWidget Save... Kaydet... Save and open... Kaydet ve aç... Save file attachment Dosya ekini kaydet Warning Uyarı Could not open file attachment saved to '%1'. '%1' klasörüne kaydedilmiş dosya eki açılamadı. Could not save file attachment to '%1'. Dosya eki kaydedilemedi '%1'. qpdfview::FontsDialog Fonts Yazı tipleri qpdfview::HelpDialog Help Yardım help.html Please replace by file name of localized help if available, e.g. "help_fr.html". yardım.html Find previous Öncekini bul Find next Sonrakini bul qpdfview::MainWindow Toggle tool bars Araç çubuklarını aç/kapat Toggle menu bar Menü çubuğunu aç/kapat Warning Uyarı Could not open '%1'. '%1' dosyası açılamadı. Copy file path Dosya yolunu kopyala Select file path Dosya yolunu seçin Close all tabs Tüm sekmeleri kapat Close all tabs but this one Tüm sekmeleri kapat, ancak bunu Close all tabs to the left Sola tüm sekmeleri kapat Close all tabs to the right Sağa tüm sekmeleri kapat Open Open in new tab Yeni sekmede aç Could not refresh '%1'. '%1' dosyası yenilenemedi. Save copy Kopyayı kaydet Could not save copy at '%1'. Kopya '%1' yoluna kaydedilemedi. Save as Farklı kaydet Move to instance Örneğe taşı Failed to access instance '%1'. '%1' örneğine erişilemedi. Could not save as '%1'. '%1' olarak kaydedilemedi. Could not print '%1'. '%1' dosyası yazdırılamadı. Set first page İlk sayfa ayarla Select the first page of the body matter: Gövde durumu ilk sayfasını seç: Jump to page Sayfaya git Page: Sayfa: Jump to page %1 %1 sayfasına git About qpdfview qpdfview hakkında <p><b>qpdfview %1</b></p><p>qpdfview is a tabbed document viewer using Qt.</p><p>This version includes:<ul> <p><b>qpdfview %1</b></p><p>qpdfview, Qt kullanan sekmeli bir belge görüntüleyicidir.</p><p>Bu sürüm aşağıdakileri içerir:<ul> <li>PDF support using Poppler %1</li> <li>Poppler %1 kullanılarak PDF desteği</li> <li>PS support using libspectre %1</li> <li>Libspectre %1 kullanarak PS desteği</li> <li>DjVu support using DjVuLibre %1</li> <li>DjVuLibre %1 kullanılarak DjVu desteği</li> <li>PDF support using Fitz %1</li> <li>Fitz kullanarak PDF desteği %1</li> <li>Printing support using CUPS %1</li> <li>CUPS %1 kullanarak baskı desteği</li> &Edit bookmark Yer imini &düzenle The document '%1' has been modified. Do you want to save your changes? '%1' belgesi değiştirildi. Değişikliklerinizi kaydetmek istiyor musunuz? Page width Sayfa genişliği Page size Sayfa boyutu Match &case Eşleme &durumu Whole &words Tüm &kelimeler Highlight &all &Tümünü vurgulayın &Open... &Aç... Open in new &tab... Yeni &sekmede aç... Open &copy in new tab Aç ve yeni sekmede &kopyala Move to &instance... &Örneğe taşı &Refresh &Yenile Information Bilgi Instance-to-instance communication requires D-Bus support. </ul><p>See <a href="https://launchpad.net/qpdfview">launchpad.net/qpdfview</a> for more information.</p><p>&copy; %1 The qpdfview developers</p> Save &as... Farklı k&aydet... Save &copy... Kaydet &kopyala ... &Print... &Yazdır... E&xit &Çık &Previous page &Önceki sayfa &Next page So&nraki sayfa &First page İlk say&fa &Last page Son sayfa &Set first page... İlk sayfa &ayarla ... &Jump to page... &Sayfaya git... Jump &backward &Geriye atla Jump for&ward İleri a&tla &Search... &Ara... Find previous Öncekini bul Find next Sonrakini bul Cancel search Aramayı iptal et &Copy to clipboard &Panoya kopyala &Add annotation &Ek açıklama ekle Settings... Ayarlar... &Continuous &Sürekli &Two pages &İkili sayfalar Two pages &with cover page &Kapak sayfasıyla birlikte ikili sayfalar &Multiple pages &Çoklu sayfa Right to left Sağdan sola Zoom &in &Yakınlaştır Zoom &out &Uzaklaştır Original &size &Gerçek boyut Fit to page width Sayfa genişliğine sığdır Fit to page size Sayfa boyutuna uydur Rotate &left So&la döndür Rotate &right Sa&ğa döndür Invert colors Renkleri tersine çevir Convert to grayscale Gri tonlamaya dönüştürün Trim margins Kenar boşluklarını düzelt Darken with paper color Kağıt rengiyle koyu renkte Lighten with paper color Kağıt rengiyle açık renkte Fonts... Yazı tipleri... &Fullscreen &Tam Ekran &Presentation... &Sunum... &Previous tab &Önceki sekme &Next tab &Sonraki sekme &Close tab &Sekmeyi kapat Close &all tabs &Tüm sekmeleri kapat Close all tabs &but current tab &Şimdiki dışındaki tüm sekmeleri kapat Restore &most recently closed tab Geri yükle ve en son kapatılan sekme &Previous bookmark &Önceki yerimi &Next bookmark &Sonraki yerimi &Add bookmark Yerimi &ekle Open copy in new &window Split view horizontally... Split view vertically... Close current view Thumb&nails Öngörü&ntüler Book&marks Yer İ&mleri Composition Birleşim &Remove bookmark Yerimini &kaldır Edit '%1' at %2,%3... %2,%3 konumunda '%1' düzenle... Open containing &folder Dosyayı içeren &klasörü aç &Save &Kaydet Remove all bookmarks Tüm yerimlerini kaldır &Contents &İçindekiler &About &Hakkında &File &Dosya &Edit Dü&zenle &View &Görünüm &Outline &Ana Çizgi &Properties &Özellikler &Search &Ara &Tool bars &Araç çubukları &Docks &Rıhtımlar &Tabs &Sekmeler &Bookmarks &Yerimleri &Help &Yardım Choose instance Durum Seç Instance: Örnek: qpdfview::PageItem Go to page %1. %1. sayfaya git. Go to page %1 of file '%2'. '%2' dosyasının %1 sayfasına gidin. Open '%1'. Aç '%1'. Edit form field '%1'. Form alanını '%1' düzenleyin. Copy &text Metni &kopyala &Select text Metin &seç Copy &image &Görüntüyü kopyala Save image to &file... Görüntüyü &dosyaya kaydet... Save image to file Görüntüyü dosyaya kaydet Warning Uyarı Could not save image to file '%1'. Görüntü '%1' dosyasına kaydedilemedi. Add &text &Metin ekle Add &highlight &Vurgu ekle &Copy link address Bağlantı adresini &kopyala &Select link address Bağlantı adresini &seç &Remove annotation Ek açıklamayı &kaldır qpdfview::PdfSettingsWidget Antialiasing: Keskinlik yumuşatma: Text antialiasing: Metin yumuşatma: None Hiçbiri Full Tam Reduced Azaltılmış Text hinting: Metin keskinliği: Ignore paper color: Kağıt rengini yoksay: Overprint preview: Üst Baskı Önizleme: Solid Düz Shaped Biçimli Thin line mode: İnce çizgi kipi: Splash Açılış Resmi Arthur Arthur Backend: Arka uç qpdfview::PluginHandler Image (%1) Resim (%1) Compressed (%1) Supported formats (%1) Desteklenen biçimler (%1) Could not decompress '%1'! Could not match file type of '%1'! '%1' dosya türünün eşleştirilemedi! Critical Önemli Could not load plug-in for file type '%1'! Dosya türü '%1' için eklenti yüklenemedi! qpdfview::PrintDialog Fit to page: Sayfaya sığdır: Page ranges: Sayfa aralıkları: All pages Tüm sayfa Even pages Sayfalar bile Odd pages Tek sayfalar Page set: Sayfayı ayarla: Single page Tek sayfa Two pages İki sayfa Four pages Dört sayfa Six pages Altı sayfa Nine pages Dokuz sayfa Sixteen pages Onaltı sayfa Number-up: Arttır: Bottom to top and left to right Alttan üste ve soldan sağa Bottom to top and right to left Alttan üste ve sağdan sola Left to right and bottom to top Soldan sağa ve alttan üste Left to right and top to bottom Soldan sağa ve yukarıdan aşağıya Right to left and bottom to top Sağdan sola ve altdan üste Right to left and top to bottom Sağdan sola ve yukarıdan aşağıya Top to bottom and left to right Üstten alta ve soldan sağa Top to bottom and right to left Üstten alta ve soldan sağa Number-up layout: Düzeni arttır: Extended options Genişletilmiş seçenekler qpdfview::PsSettingsWidget Graphics antialias bits: Grafik yumuşatma bitleri: Text antialias bits: Metin yumuşatım bitleri: qpdfview::RecentlyClosedMenu &Recently closed &Sonlar kapandı &Clear list Listeyi &temizle qpdfview::RecentlyUsedMenu Recently &used Son &kullanılan &Clear list &Listeyi temizle qpdfview::SearchModel <b>%1</b> occurrences <b>%1</b> kez sonra <b>%1</b> occurrences on page <b>%2</b> <b>%1</b> sayfa oluşumları <b>%2</b> qpdfview::SearchableMenu Search for '%1'... '%1' için ara... qpdfview::SettingsDialog General Genel &Behavior &Davranış &Graphics &Grafikler &Interface &Arayüz &Shortcuts &Kısayollar &Modifiers &Düzenleyiciler Defaults Öntanımlılar Defaults on current tab Geçerli sekmede varsayılanlar Mouse wheel modifiers Fare tekerleği değiştiriciler Mouse button modifiers Fare düğmesi değiştiriciler Open URL: Bağlantı aç: Auto-refresh: Otomatik-yenile: Effective after restart. Yeniden başlatıldıktan sonra uygulanır. Track recently used: Son kullanılanları listele: Keep recently closed: Son zamanları kapalı tutun: Restore tabs: Sekmeleri geri yükle: Restore bookmarks: Yerimlerini geri yükle: Restore per-file settings: Dosya başına geri yükle ayarları: min dk Save database interval: Veritabanı aralığını kaydet: Synchronize presentation: Sunumu eşle: Default Öntanımlı Presentation screen: Sunum ekranı: Synchronize split views: Zoom factor: Büyütme etkisi: Parallel search execution: ms ms None Hiçbiri Highlight duration: Vurgu süresi: Highlight color: Vurgulama rengi: Annotation color: Ek açıklama rengi: '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number. '%1' mutlak dosya yolu ile değiştirildi. '%2' resp. '%3' yerine satırları geldi. Sütun numarası. Source editor: Kaynak düzenleyici: Use tiling: Döşeme kullan: Keep obsolete pixmaps: Eski benek haritalarını sakla: Use device pixel ratio: Cihaz benek oranını kullan: Decorate pages: Süsleme düzenleyicileri: Decorate links: Süsleme bağlantıları: Decorate form fields: Form alanlarını süsleyin: Background color: Artalan rengi: Paper color: Kağıt rengi: Presentation background color: Sunum artalan rengi: Pages per row: Satır başına sayfalar: px bnk Page spacing: Sayfa aralığı: Thumbnail spacing: Küçük resim aralığı: Thumbnail size: Küçük resim boyutu: Fit to viewport Görüntü uzantısını sığdır Document context menu: Belge bağlam menüsü: Tab context menu: Sekme bağlam menüsü: Open in source editor: Kaynak editörde açın: %1 MB %1 MB Cache size: Önbellek boyutu: Minimal scrolling: Asgari kaydırma: Prefetch: Önbellekleme: Prefetch distance: Önbellekleme mesafesi: Top Sayfabaşı Bottom Sayfasonu Left Sol Right Sağ Tab position: Sekme konumu: As needed Gerektiğinde Always Her zaman Exit after last tab: Son sekmeden çık: Scrollable menus: Kaydırılabilir menüler: Searchable menus: Aranabilir menüler: Zoom to selection: Seçimi yakınlaştır: Never Asla Settings Ayarlar Tab visibility: Sekme görünürlüğü: Spread tabs: Sekmeleri yay: New tab next to current tab: Geçerli sekmenin yanındaki yeni sekme: Recently used count: Son kullanılanı say: Recently closed count: Son kapalıyı say: Extended search dock: Genişletilmiş arama rıhtımı: Toggle tool and menu bars with fullscreen: Aracı ve menü çubuklarını tam ekranla değiştirin: File tool bar: Dosya araç çubuğu: Edit tool bar: Araç çubuğunu düzenle: View tool bar: Araç çubuğunu görüntüle: Use page label: Sayfa etiketini kullan: Document title as tab title: Belge başlığı sekme başlığı olarak: Current page in window title: Pencere başlığında geçerli sayfa: Instance name in window title: Pencere başlığında örnek adı: Synchronize outline view: Anahat görünümünü eşitle: Highlight current thumbnail: Mevcut öngörüntüyü vurgula: Limit thumbnails to results: Küçük resim sonuçlarını sınırla: Annotation overlay: Ek açıklama yer paylaşımı: Form field overlay: Form alanı yer paylaşımı: Zoom: Yakınlaştır: Rotate: Döndür: Scroll: Kaydır: Copy to clipboard: Panoya kopyala: Add annotation: Ek açıklama ekle: qpdfview::ShortcutHandler Action Eylem Key sequence Anahtar dizisi Skip backward Geriye atla Skip forward İleri atla Move up Yukarı Taşı Move down Aşağı Taşı Move left Sola taşı Move right Sağa taşı qpdfview::TreeView &Expand all Tümünü &Genişlet &Collapse all Tümünü &Daralt qpdfview-0.4.18/translations/qpdfview_ug.ts0000644000000000000000000023406513516127411017203 0ustar 00000000000000 Model::ImageDocument Image (%1) Size Resolution Depth Format Monochrome Indexed 32 bits RGB 32 bits ARGB 16 bits RGB 24 bits RGB Model::PdfDocument Linearized Name Type Embedded Subset File Yes PDF version Encrypted No Model::PdfPage Information ئۇچۇر Version 0.20.1 or higher of the Poppler library is required to add or remove annotations. Model::PsDocument Title Created for Creator Creation date Format Language level QObject An empty instance name is not allowed. An empty search text is not allowed. Unknown command-line option '%1'. Using '--instance' requires an instance name. Using '--instance' is not allowed without using '--unique'. An instance name must only contain the characters "[A-Z][a-z][0-9]_" and must not begin with a digit. Using '--search' requires a search text. Could not prepare signal handler. QShortcut Shift Ctrl Alt Shift and Ctrl Shift and Alt Ctrl and Alt Right mouse button Middle mouse button None يوق qpdfview::BookmarkDialog Bookmark Page: بەت: Label: Comment: Modified: qpdfview::BookmarkMenu &Open ئاچ(&O) Open in new &tab يېڭى بەتكۈچتە ئاچ(&T) &Remove bookmark خەتكۈشنى چىقىۋەت(&R) qpdfview::Database Jump to page %1 qpdfview::DocumentView Information ئۇچۇر The source editor has not been set. Opening URL is disabled in the settings. تەڭشەكتە URL نى ئېچىش چەكلەنگەن. Warning ئاگاھلاندۇرۇش SyncTeX data for '%1' could not be found. Printing '%1'... بېسىۋاتقىنى ‹%1›… Unlock %1 %1 نى قۇلۇپسىزلا Password: ئىم: Page %1 qpdfview::FileAttachmentAnnotationWidget Save... Save and open... Save file attachment Warning ئاگاھلاندۇرۇش Could not open file attachment saved to '%1'. Could not save file attachment to '%1'. qpdfview::FontsDialog Fonts qpdfview::HelpDialog Help help.html Please replace by file name of localized help if available, e.g. "help_fr.html". Find previous كېيىنكىنى ئىزدە Find next كېيىنكىنى ئىزدە qpdfview::MainWindow Toggle tool bars Toggle menu bar Warning ئاگاھلاندۇرۇش Could not open '%1'. ‹%1› نى ئاچالمىدى. Copy file path Select file path Close all tabs Close all tabs but this one Close all tabs to the left Close all tabs to the right Open ئاچ Open in new tab يېڭى بەتكۈچتە ئاچ Could not refresh '%1'. ‹%1› نى يېڭىلىيالمىدى. Save copy كۆچۈرمىسىنى ساقلا Could not save copy at '%1'. كۆچۈرمىسىنى ‹%1› غا ساقلىيالمىدى. Save as باشقا ئاتتا ساقلا Move to instance Failed to access instance '%1'. Could not save as '%1'. '%1' سۈپىتىدە ساقلىيالمايدۇ. Could not print '%1'. ‹%1› نى ساقلىيالمىدى. Set first page Select the first page of the body matter: Jump to page بەتكە يۆتكەل Page: بەت: Jump to page %1 About qpdfview qpdfview ھەققىدە <p><b>qpdfview %1</b></p><p>qpdfview is a tabbed document viewer using Qt.</p><p>This version includes:<ul> <li>PDF support using Poppler %1</li> <li>PS support using libspectre %1</li> <li>DjVu support using DjVuLibre %1</li> <li>PDF support using Fitz %1</li> <li>Printing support using CUPS %1</li> &Edit bookmark The document '%1' has been modified. Do you want to save your changes? Page width بەت كەڭلىكى Page size بەت چوڭلۇقى Match &case چوڭ كىچىك ھەرپنى پەرقلەندۈر(&C) Whole &words Highlight &all ھەممىنى يورۇت(&A) &Open... ئاچ(&O)… Open in new &tab... يېڭى بەتكۈچتە ئاچ(&T)… Open &copy in new tab Move to &instance... &Refresh يېڭىلا(&R) Information ئۇچۇر Instance-to-instance communication requires D-Bus support. </ul><p>See <a href="https://launchpad.net/qpdfview">launchpad.net/qpdfview</a> for more information.</p><p>&copy; %1 The qpdfview developers</p> Save &as... باشقا ئاتتا ساقلا(&A)… Save &copy... &Print... باس(&P)… E&xit &Previous page ئالدىنقى بەت(&P) &Next page كېيىنكى بەت(&N) &First page بىرىنچى بەت(&F) &Last page ئاخىرقى بەت(&L) &Set first page... &Jump to page... بەتكە يۆتكەل(&J)… Jump &backward Jump for&ward &Search... ئىزدە(&S)… Find previous كېيىنكىنى ئىزدە Find next كېيىنكىنى ئىزدە Cancel search ئىزدەشتىن ۋاز كەچ &Copy to clipboard چاپلاش تاختىسىغا كۆچۈر(&C) &Add annotation ئىزاھات قوش(&A) Settings... تەڭشەكلەر… &Continuous ئۈزلۈكسىز(&C) &Two pages ئىككى بەت(&T) Two pages &with cover page مۇقاۋىسى بار ئىككى بەت(&W) &Multiple pages كۆپ بەت(&M) Right to left Zoom &in چوڭايت(&I) Zoom &out كىچىكلەت(&O) Original &size ئەسلى چوڭلۇقى(&O) Fit to page width بەت كەڭلىكىگە ماسلاشتۇر Fit to page size بەت چوڭلۇقىغا ماسلاشتۇر Rotate &left سولغا چۆرگىلەت(&L) Rotate &right ئوڭغا چۆرگىلەت(&R) Invert colors Convert to grayscale Trim margins Darken with paper color Lighten with paper color Fonts... خەت نۇسخىلىرى … &Fullscreen پۈتۈن ئېكران(&F) &Presentation... سۇنۇلما(&P) … &Previous tab ئالدىنقى بەتكۈچ(&P) &Next tab كېيىنكى بەتكۈچ(&N) &Close tab بەتكۈچنى ياپ(&C) Close &all tabs بارلىق بەتكۈچلەرنى ياپ(&A) Close all tabs &but current tab نۆۋەتتىكى بەتكۈچتىن باشقا ھەممە بەتكۈچنى تاقا(&B) Restore &most recently closed tab &Previous bookmark ئالدىنقى خەتكۈش(&P) &Next bookmark كېيىنكى خەتكۈش(N) &Add bookmark خەتكۈش قوش(&A) Open copy in new &window Split view horizontally... Split view vertically... Close current view Thumb&nails Book&marks Composition &Remove bookmark خەتكۈشنى چىقىۋەت(&R) Edit '%1' at %2,%3... Open containing &folder &Save Remove all bookmarks ھەممە خەتكۈشنى چىقىرىۋەت &Contents مەزمۇنلار(&C) &About ھەققىدە(&A) &File ھۆججەت(&F) &Edit تەھرىر(&E) &View كۆرۈنۈش(&V) &Outline تېزىس(&O) &Properties خاسلىق(&P) &Search ئىزدە(&S) &Tool bars قورال بالداقلار(&T) &Docks قونداقلار(&D) &Tabs بەتكۈچلەر(&T) &Bookmarks خەتكۈچلەر(&B) &Help ياردەم(&H) Choose instance Instance: qpdfview::PageItem Go to page %1. بەت %1 غا يۆتكىلىدۇ. Go to page %1 of file '%2'. Open '%1'. Edit form field '%1'. Copy &text تېكىست كۆچۈر(&C) &Select text Copy &image سۈرەت كۆچۈر(&I) Save image to &file... سۈرەتنى ھۆججەتكە ساقلا(&F)… Save image to file سۈرەتنى ھۆججەتكە ساقلا Warning ئاگاھلاندۇرۇش Could not save image to file '%1'. سۈرەتنى ھۆججەت ‹%1› غا ساقلىيالمىدى. Add &text تېكىست قوش(&T) Add &highlight يورۇتۇش قوش((&H)) &Copy link address &Select link address &Remove annotation qpdfview::PdfSettingsWidget Antialiasing: Text antialiasing: None يوق Full Reduced Text hinting: Ignore paper color: Overprint preview: Solid Shaped Thin line mode: Splash Arthur Backend: qpdfview::PluginHandler Image (%1) Compressed (%1) Supported formats (%1) Could not decompress '%1'! Could not match file type of '%1'! Critical Could not load plug-in for file type '%1'! qpdfview::PrintDialog Fit to page: Page ranges: All pages Even pages Odd pages Page set: Single page Two pages Four pages Six pages Nine pages Sixteen pages Number-up: Bottom to top and left to right Bottom to top and right to left Left to right and bottom to top Left to right and top to bottom Right to left and bottom to top Right to left and top to bottom Top to bottom and left to right Top to bottom and right to left Number-up layout: Extended options qpdfview::PsSettingsWidget Graphics antialias bits: Text antialias bits: qpdfview::RecentlyClosedMenu &Recently closed &Clear list تىزىمنى تازىلا(&C) qpdfview::RecentlyUsedMenu Recently &used يېقىندا ئىشلەتكەن(&U) &Clear list تىزىمنى تازىلا(&C) qpdfview::SearchModel <b>%1</b> occurrences <b>%1</b> occurrences on page <b>%2</b> qpdfview::SearchableMenu Search for '%1'... qpdfview::SettingsDialog General &Behavior مەشغۇلات(&B) &Graphics گرافىك(&G) &Interface ئارايۈز(&I) &Shortcuts &Modifiers سۈپەتلىگۈچىلەر(&M): Defaults كۆڭۈلدىكى قىممەتلەر Defaults on current tab Mouse wheel modifiers Mouse button modifiers Open URL: تور ئادرېسى(URL) ئاچ: Auto-refresh: Effective after restart. Track recently used: Keep recently closed: Restore tabs: بەتكۈچلەرنى ئەسلىگە كەلتۈر Restore bookmarks: Restore per-file settings: min Save database interval: Synchronize presentation: Default كۆڭۈلدىكى Presentation screen: Synchronize split views: Zoom factor: Parallel search execution: ms None يوق Highlight duration: يورۇتۇش ۋاقتى: Highlight color: Annotation color: '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number. Source editor: Use tiling: Keep obsolete pixmaps: Use device pixel ratio: Decorate pages: Decorate links: Decorate form fields: Background color: تەگلىك رەڭگى: Paper color: Presentation background color: Pages per row: px Page spacing: بەت ئارىلىقى: Thumbnail spacing: كىچىك سۈرەت ئارىلىقى: Thumbnail size: كىچىك سۈرەت چوڭلۇقى: Fit to viewport Document context menu: Tab context menu: Open in source editor: %1 MB %1 مېگابايت Cache size: غەملەك چوڭلۇقى: Minimal scrolling: Prefetch: ئالدىن ئوقۇش: Prefetch distance: Top ئۈستى Bottom ئاستى Left سول Right ئوڭ Tab position: بەتكۈچ ئورنى: As needed زۆرۈر بولغاندا Always ھەمىشە Exit after last tab: Scrollable menus: Searchable menus: Zoom to selection: Never ھەرگىز Settings Tab visibility: Spread tabs: New tab next to current tab: Recently used count: Recently closed count: Extended search dock: Toggle tool and menu bars with fullscreen: File tool bar: ھۆججەت قورال بالدىقى: Edit tool bar: تەھرىر قورال بالدىقى: View tool bar: كۆرۈنۈش قورال بالدىقى: Use page label: Document title as tab title: Current page in window title: Instance name in window title: Synchronize outline view: Highlight current thumbnail: Limit thumbnails to results: Annotation overlay: Form field overlay: Zoom: Rotate: Scroll: Copy to clipboard: Add annotation: qpdfview::ShortcutHandler Action Key sequence Skip backward Skip forward Move up Move down Move left Move right qpdfview::TreeView &Expand all &Collapse all qpdfview-0.4.18/translations/qpdfview_uk.ts0000644000000000000000000025011613516127411017202 0ustar 00000000000000 Model::ImageDocument Image (%1) Зображення (%1) Size Розмір Resolution Роздільність Depth Глибина Format Формат Monochrome Чорно-біле Indexed Індексоване 32 bits RGB 32-бітове RGB 32 bits ARGB 32-бітове ARGB 16 bits RGB 16-бітове RGB 24 bits RGB 24-бітове RGB Model::PdfDocument Linearized Ліанеризовано Name Назва Type Тип Embedded Вбудований Subset Підмножина File Файл Yes Так PDF version Версія PDF Encrypted Зашифровано No Ні Model::PdfPage Information Відомості Version 0.20.1 or higher of the Poppler library is required to add or remove annotations. Для додавання або вилучення анотацій слід встановити версію 0.20.1 або новішу бібліотеки Poppler. Model::PsDocument Title Заголовок Created for Створено для Creator Створено у Creation date Дата створення Format Формат Language level Рівень мови QObject An empty instance name is not allowed. Порожнє ім'я екземпляру не дозволяється. An empty search text is not allowed. Не можна шукати порожній рядок. Unknown command-line option '%1'. Невідомий параметр командного рядка, «%1». Using '--instance' requires an instance name. Використання '--instance' потребує вказання імені екземпляру. Using '--instance' is not allowed without using '--unique'. Використання '--instance' не дозволяється без '--unique'. An instance name must only contain the characters "[A-Z][a-z][0-9]_" and must not begin with a digit. Назва екземпляра програми може складатися лише з символів «[A-Z][a-z][0-9]_» і не повинна починатися з цифри. Using '--search' requires a search text. Використання параметра «--search» вимагає зазначення тексту для пошуку. Could not prepare signal handler. Не вдалося підготувати обробник сигналу. QShortcut Shift Shift Ctrl Ctrl Alt Alt Shift and Ctrl Shift і Ctrl Shift and Alt Shift і Alt Ctrl and Alt Ctrl і Alt Right mouse button Права кнопка миші Middle mouse button Середня кнопка миші None Немає qpdfview::BookmarkDialog Bookmark Закладка Page: Сторінка: Label: Мітка: Comment: Коментар: Modified: Змінено: qpdfview::BookmarkMenu &Open &Відкрити Open in new &tab Ві&дкрити у новій вкладці &Remove bookmark Ви&далити закладку qpdfview::Database Jump to page %1 Перейти до сторінки %1 qpdfview::DocumentView Information Інформація The source editor has not been set. Редактор початкового коду не визначено. Opening URL is disabled in the settings. Перехід за посиланням заборонено у налаштуваннях. Warning Попередження SyncTeX data for '%1' could not be found. Даних SyncTeX для «%1» не знайдено. Printing '%1'... Друк '%1'... Unlock %1 Розблокувати %1 Password: Пароль: Page %1 Сторінка %1 qpdfview::FileAttachmentAnnotationWidget Save... Зберегти... Save and open... Зберегти і відкрити… Save file attachment Зберегти долучення до файла Warning Попередження Could not open file attachment saved to '%1'. Не вдалося відкрити долучення до файла, збережене як «%1». Could not save file attachment to '%1'. Не вдалося зберегти файл-долучення до «%1». qpdfview::FontsDialog Fonts Шрифти qpdfview::HelpDialog Help Довідка help.html Please replace by file name of localized help if available, e.g. "help_fr.html". help_uk.html Find previous Знайти попереднє Find next Знайти наступне qpdfview::MainWindow Toggle tool bars Увімкнути або вимкнути показ панелей інструментів Toggle menu bar Увімкнути або вимкнути показ смужки меню Warning Попередження Could not open '%1'. Не вдалося відкрити '%1'. Copy file path Копіювати шлях до файла Select file path Вибрати шлях до файла Close all tabs Закрити усі вкладки Close all tabs but this one Закрити усі вкладки, окрім цієї Close all tabs to the left Закрити усі вкладки ліворуч Close all tabs to the right Закрити усі вкладки праворуч Open Відкрити Open in new tab Відкрити у новій вкладці Could not refresh '%1'. Не вдалося оновити '%1'. Save copy Зберегти копію Could not save copy at '%1'. Не вдалося зберегти копію '%1'. Save as Зберегти як Move to instance Пересунути до екземпляра Failed to access instance '%1'. Не вдалося отримати доступ до екземпляра «%1». Could not save as '%1'. Не вдалося зберегти як '%1'. Could not print '%1'. Не вдалося роздрукувати '%1'. Set first page Встановлення першої сторінки Select the first page of the body matter: Виберіть першу сторінку вмісту: Jump to page Перехід до сторінки Page: Сторінка: Jump to page %1 Перейти до сторінки %1 About qpdfview Про qpdfview <p><b>qpdfview %1</b></p><p>qpdfview is a tabbed document viewer using Qt.</p><p>This version includes:<ul> <p><b>qpdfview %1</b></p><p>qpdfview — програма для перегляду документів на основі Qt.</p><p>Можливості цієї версії:<ul> <li>PDF support using Poppler %1</li> <li>Підтримка PDF на основі Poppler %1</li> <li>PS support using libspectre %1</li> <li>Підтримка PS на основі libspectre %1</li> <li>DjVu support using DjVuLibre %1</li> <li>Підтримка DjVu на основі DjVuLibre %1</li> <li>PDF support using Fitz %1</li> <li>Підтримка PDF на основі Fitz %1</li> <li>Printing support using CUPS %1</li> <li>Друк за допомогою CUPS %1</li> &Edit bookmark З&мінити закладку The document '%1' has been modified. Do you want to save your changes? До документа «%1» внесено зміни. Хочете зберегти ці зміни? Page width Ширина сторінки Page size Розмір сторінки Match &case Враховувати &регістр Whole &words &Цілі слова Highlight &all Виділити &усе &Open... &Відкрити... Open in new &tab... Ві&дкрити у новій вкладці... Open &copy in new tab Відкрити &копію у новій вкладці Move to &instance... Пересунути до &екземпляра… &Refresh &Оновити Information Відомості Instance-to-instance communication requires D-Bus support. Обмін даними між екземплярами потребує підтримки D-Bus. </ul><p>See <a href="https://launchpad.net/qpdfview">launchpad.net/qpdfview</a> for more information.</p><p>&copy; %1 The qpdfview developers</p> </ul><p>Див. <a href="https://launchpad.net/qpdfview">launchpad.net/qpdfview</a>, щоб дізнатися більше.</p><p>&copy; Розробники qpdfview, %1</p> Save &as... Зберегти &як... Save &copy... Зберегти &копію… &Print... Д&рукувати... E&xit Ви&йти &Previous page &Попередня сторінка &Next page &Наступна сторінка &First page П&ерша сторінка &Last page О&стання сторінка &Set first page... Вс&тановити першу сторінку… &Jump to page... Пе&рейти до сторінки... Jump &backward Перейти &назад Jump for&ward Перейти в&перед &Search... &Пошук... Find previous Знайти попереднє Find next Знайти наступне Cancel search Скасувати пошук &Copy to clipboard С&копіювати до буфера &Add annotation &Додати коментар Settings... Параметри… &Continuous &Неперервний перегляд &Two pages &Дві сторінки Two pages &with cover page Дві сторінки та &обкладинка &Multiple pages &Кілька сторінок Right to left Справа ліворуч Zoom &in З&більшити Zoom &out З&меншити Original &size По&чатковий розмір Fit to page width За шириною Fit to page size Сторінка цілком Rotate &left Повернути &праворуч Rotate &right Повернути &ліворуч Invert colors Інвертувати кольори Convert to grayscale Перетворити на відтінки сірого Trim margins Обрізати поля Darken with paper color Темніше з кольором паперу Lighten with paper color Світліше з кольором паперу Fonts... Шрифти... &Fullscreen &На весь екран &Presentation... Пре&зентація... &Previous tab &Попередня вкладка &Next tab &Наступна вкладка &Close tab &Закрити вкладку Close &all tabs Закрити &усі вкладки Close all tabs &but current tab Закрити усі вкладки, &крім поточної Restore &most recently closed tab Відновити &останню закриту вкладку &Previous bookmark &Попередня закладка &Next bookmark &Наступна закладка &Add bookmark &Додати закладку Open copy in new &window Відкрити копію у новому &вікні Split view horizontally... Розділити перегляд горизонтально… Split view vertically... Розділити перегляд вертикально… Close current view Закрити поточний перегляд Thumb&nails &Мініатюри Book&marks З&акладки Composition Компонування &Remove bookmark &Вилучити закладку Edit '%1' at %2,%3... Редагувати «%1» на місці %2,%3... Open containing &folder Відкрити т&еку з даними &Save З&берегти Remove all bookmarks Вилучити усі закладки &Contents &Зміст &About &Про програму &File &Файл &Edit З&міни &View П&ерегляд &Outline &Зміст &Properties &Властивості &Search &Пошук &Tool bars Па&нелі інструментів &Docks &Бічні панелі &Tabs В&кладки &Bookmarks &Закладки &Help &Довідка Choose instance Виберіть екземпляр Instance: Екземпляр: qpdfview::PageItem Go to page %1. Перейти до сторінки %1. Go to page %1 of file '%2'. Перейти на сторінку %1 файла «%2». Open '%1'. Відкрити «%1». Edit form field '%1'. Редагувати поле '%1'. Copy &text Скопіювати &текст &Select text &Позначити текст Copy &image Скопіювати &зображення Save image to &file... Зберегти зображення у &файл... Save image to file Зберегти зображення у файл Warning Попередження Could not save image to file '%1'. Неможливо зберегти зображення у файл '%1'. Add &text Додати &текст Add &highlight Додати &підсвічування &Copy link address &Копіювати адресу посилання &Select link address &Позначити адресу посилання &Remove annotation &Вилучити анотацію qpdfview::PdfSettingsWidget Antialiasing: Згладжування: Text antialiasing: Згладжування тексту: None Немає Full Повне Reduced Спрощене Text hinting: Гінтінґ тексту: Ignore paper color: Ігнорувати колір паперу: Overprint preview: Перегляд наддруку: Solid Суцільні Shaped Надати форму Thin line mode: Режим тонких ліній: Splash Splash Arthur Arthur Backend: Модуль обробки: qpdfview::PluginHandler Image (%1) Зображення (%1) Compressed (%1) Стиснений (%1) Supported formats (%1) Підтримувані формати (%1) Could not decompress '%1'! Не вдалося розпакувати «%1»! Could not match file type of '%1'! Не вдалося встановити відповідність типу файлів «%1»! Critical Критична помилка Could not load plug-in for file type '%1'! Не вдалося завантажити додаток для типу файлів «%1»! qpdfview::PrintDialog Fit to page: Підлаштовування під аркуш: Page ranges: Діапазон сторінок: All pages Всі сторінки Even pages Парні сторінки Odd pages Непарні сторінки Page set: Набір сторінок: Single page Одна сторінка Two pages Дві сторінки Four pages Чотири сторінки Six pages Шість сторінок Nine pages Дев’ять сторінок Sixteen pages Шістнадцять сторінок Number-up: Розташовування: Bottom to top and left to right Знизу вгору і зліва праворуч Bottom to top and right to left Знизу вгору і справа ліворуч Left to right and bottom to top Зліва праворуч і знизу вгору Left to right and top to bottom Зліва праворуч і згори взниз Right to left and bottom to top Справа ліворуч і знизу вгору Right to left and top to bottom Справа ліворуч і згори вниз Top to bottom and left to right Згори вниз і зліва праворуч Top to bottom and right to left Згори вниз і справа ліворуч Number-up layout: Компонування сторінок: Extended options Додаткові параметри qpdfview::PsSettingsWidget Graphics antialias bits: Бітова маска згладжування графіки: Text antialias bits: Бітова маска згладжування тексту: qpdfview::RecentlyClosedMenu &Recently closed &Останні закриті &Clear list &Спорожнити список qpdfview::RecentlyUsedMenu Recently &used Останні відкр&иті &Clear list О&чистити список qpdfview::SearchModel <b>%1</b> occurrences <b>%1</b> відповідників <b>%1</b> occurrences on page <b>%2</b> <b>%1</b> відповідників на сторінці <b>%2</b> qpdfview::SearchableMenu Search for '%1'... Шукати «%1»… qpdfview::SettingsDialog General Загальне &Behavior &Поведінка &Graphics &Графіка &Interface &Інтерфейс &Shortcuts &Клавіатурні скорочення &Modifiers &Модифікатори Defaults Типові Defaults on current tab Типові на поточній вкладці Mouse wheel modifiers Модифікатори для коліщатка миші Mouse button modifiers Модифікатори для кнопок миші Open URL: Відкривати URL: Auto-refresh: Автооновлення: Effective after restart. Діятиме після перезапуску. Track recently used: Пам'ятати останні відкриті: Keep recently closed: Пам’ятати останні закриті: Restore tabs: Відновлювати вкладки: Restore bookmarks: Відновлювати закладки: Restore per-file settings: Відновлювати налаштування окремих документів: min хв. Save database interval: Інтервал між збереженнями бази даних: Synchronize presentation: Синхронна презентація: Default Типові Presentation screen: Екран презентації: Synchronize split views: Синхронізувати розділені перегляди: Zoom factor: Коефіцієнт масштабування: Parallel search execution: Паралельне виконання пошуку: ms мс None Немає Highlight duration: Тривалість підсвічування: Highlight color: Колір підсвічування: Annotation color: Колір анотацій: '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number. «%1» замінюється абсолютним шляхом до файлу. «%2» та «%3» замінюються номером рядка та стовпчика відповідно. Source editor: Редактор вихідного файла: Use tiling: Мозаїчність: Keep obsolete pixmaps: Зберігати застарілі растрові зображення: Use device pixel ratio: Використовувати співвідношення у пікселях пристрою: Decorate pages: Рамка навколо сторінки: Decorate links: Виокремлювати посилання: Decorate form fields: Виокремлювати поля форм: Background color: Колір тла: Paper color: Колір паперу: Presentation background color: Колір тла у режимі презентації: Pages per row: Сторінок у ряд: px пк Page spacing: Між сторінками: Thumbnail spacing: Між мініатюрами: Thumbnail size: Розмір мініатюр: Fit to viewport За розмірами області перегляду Document context menu: Контекстне меню документа: Tab context menu: Контекстне меню вкладки: Open in source editor: Відкрити у редакторі коду: %1 MB %1 МБ Cache size: Кеш: Minimal scrolling: Мінімальне гортання: Prefetch: Передзавантаження: Prefetch distance: Довжина передзавантаження: Top Вгорі Bottom Внизу Left Ліворуч Right Праворуч Tab position: Розташування вкладок: As needed За потребою Always Завжди Exit after last tab: Вийти після останньої вкладки: Scrollable menus: Меню з гортанням: Searchable menus: Придатні до пошуку меню: Zoom to selection: Масштабування за позначеним: Never Ніколи Settings Параметри Tab visibility: Показувати вкладки: Spread tabs: Розтягнути вкладки: New tab next to current tab: Нова вкладка поряд з поточною: Recently used count: Кількість останніх відкритих: Recently closed count: Кількість записів останніх закритих документів: Extended search dock: Розширена панель пошуку: Toggle tool and menu bars with fullscreen: Вимкнути панелі у повноекранному режимі: File tool bar: Панель «Файл»: Edit tool bar: Панель «Редагування»: View tool bar: Панель «Перегляд»: Use page label: Використовувати мітку сторінки: Document title as tab title: Назва документа як заголовок вкладки: Current page in window title: Поточна сторінка у заголовку вікна: Instance name in window title: Назва екземпляра у заголовку вікна: Synchronize outline view: Синхронізувати перегляд змісту: Highlight current thumbnail: Підсвічування поточної мініатюри: Limit thumbnails to results: Обмежити мініатюри результатами: Annotation overlay: Накладка анотації: Form field overlay: Накладка поля форми: Zoom: Масштабування: Rotate: Обертання: Scroll: Гортання: Copy to clipboard: Копіювання до буфера: Add annotation: Додавання анотацій: qpdfview::ShortcutHandler Action Дія Key sequence Комбінація клавіш Skip backward Гортати назад Skip forward Гортати вперед Move up Вгору Move down Вниз Move left Ліворуч Move right Праворуч qpdfview::TreeView &Expand all &Розгорнути все &Collapse all &Згорнути все qpdfview-0.4.18/translations/qpdfview_uz.ts0000644000000000000000000023327013516127411017223 0ustar 00000000000000 Uzbek <uz@li.org> Akmal Xushvaqov <akmalxster@gmail.com> 2012-11-25 16:06+0000 2018-05-27 11:51+0000 qpdfview FULL NAME <EMAIL@ADDRESS> 2018-05-28 05:33+0000 # Uzbek translation for qpdfview # Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 # This file is distributed under the same license as the qpdfview package. # FIRST AUTHOR <EMAIL@ADDRESS>, 2012. # Project-Id-Version,Report-Msgid-Bugs-To,POT-Creation-Date,PO-Revision-Date,Last-Translator,Language-Team,MIME-Version,Content-Type,Content-Transfer-Encoding,X-Launchpad-Export-Date,X-Qt-Contexts Model::ImageDocument Image (%1) Size Resolution Depth Format Monochrome Indexed 32 bits RGB 32 bits ARGB 16 bits RGB 24 bits RGB Model::PdfDocument Linearized Name Type Embedded Subset File Yes PDF version Encrypted No Model::PdfPage Information Version 0.20.1 or higher of the Poppler library is required to add or remove annotations. Model::PsDocument Title Created for Creator Creation date Format Language level QObject An empty instance name is not allowed. An empty search text is not allowed. Unknown command-line option '%1'. Using '--instance' requires an instance name. Using '--instance' is not allowed without using '--unique'. An instance name must only contain the characters "[A-Z][a-z][0-9]_" and must not begin with a digit. Using '--search' requires a search text. Could not prepare signal handler. QShortcut Shift Ctrl Alt Shift and Ctrl Shift and Alt Ctrl and Alt Right mouse button Middle mouse button None qpdfview::BookmarkDialog Bookmark Page: Label: Comment: Modified: qpdfview::BookmarkMenu &Open &Очиш Open in new &tab Янги &табда очиш &Remove bookmark Хатчўпни &ўчириш qpdfview::Database Jump to page %1 qpdfview::DocumentView Information The source editor has not been set. Opening URL is disabled in the settings. Warning SyncTeX data for '%1' could not be found. Printing '%1'... Unlock %1 Password: Page %1 qpdfview::FileAttachmentAnnotationWidget Save... Save and open... Save file attachment Warning Could not open file attachment saved to '%1'. Could not save file attachment to '%1'. qpdfview::FontsDialog Fonts qpdfview::HelpDialog Help help.html Please replace by file name of localized help if available, e.g. "help_fr.html". Find previous Find next qpdfview::MainWindow Toggle tool bars Toggle menu bar Warning Could not open '%1'. Copy file path Select file path Close all tabs Close all tabs but this one Close all tabs to the left Close all tabs to the right Open Open in new tab Could not refresh '%1'. Save copy Could not save copy at '%1'. Save as Move to instance Failed to access instance '%1'. Could not save as '%1'. Could not print '%1'. Set first page Select the first page of the body matter: Jump to page Page: Jump to page %1 About qpdfview <p><b>qpdfview %1</b></p><p>qpdfview is a tabbed document viewer using Qt.</p><p>This version includes:<ul> <li>PDF support using Poppler %1</li> <li>PS support using libspectre %1</li> <li>DjVu support using DjVuLibre %1</li> <li>PDF support using Fitz %1</li> <li>Printing support using CUPS %1</li> &Edit bookmark The document '%1' has been modified. Do you want to save your changes? Page width Page size Match &case Whole &words Highlight &all &Open... Open in new &tab... Open &copy in new tab Move to &instance... &Refresh Information Instance-to-instance communication requires D-Bus support. </ul><p>See <a href="https://launchpad.net/qpdfview">launchpad.net/qpdfview</a> for more information.</p><p>&copy; %1 The qpdfview developers</p> Save &as... Save &copy... &Print... E&xit &Previous page &Next page &First page &Last page &Set first page... &Jump to page... Jump &backward Jump for&ward &Search... Find previous Find next Cancel search &Copy to clipboard &Add annotation Settings... &Continuous &Two pages Two pages &with cover page &Multiple pages Right to left Zoom &in Zoom &out Original &size Fit to page width Fit to page size Rotate &left Rotate &right Invert colors Convert to grayscale Trim margins Darken with paper color Lighten with paper color Fonts... &Fullscreen &Presentation... &Previous tab &Next tab &Close tab Close &all tabs Close all tabs &but current tab Restore &most recently closed tab &Previous bookmark &Next bookmark &Add bookmark Open copy in new &window Split view horizontally... Split view vertically... Close current view Thumb&nails Book&marks Composition &Remove bookmark Edit '%1' at %2,%3... Open containing &folder &Save Remove all bookmarks &Contents &About &File &Edit &View &Outline &Properties &Search &Tool bars &Docks &Tabs &Bookmarks &Help Choose instance Instance: qpdfview::PageItem Go to page %1. Go to page %1 of file '%2'. Open '%1'. Edit form field '%1'. Copy &text &Select text Copy &image Save image to &file... Save image to file Warning Could not save image to file '%1'. Add &text Add &highlight &Copy link address &Select link address &Remove annotation qpdfview::PdfSettingsWidget Antialiasing: Text antialiasing: None Full Reduced Text hinting: Ignore paper color: Overprint preview: Solid Shaped Thin line mode: Splash Arthur Backend: qpdfview::PluginHandler Image (%1) Compressed (%1) Supported formats (%1) Could not decompress '%1'! Could not match file type of '%1'! Critical Could not load plug-in for file type '%1'! qpdfview::PrintDialog Fit to page: Page ranges: All pages Even pages Odd pages Page set: Single page Two pages Four pages Six pages Nine pages Sixteen pages Number-up: Bottom to top and left to right Bottom to top and right to left Left to right and bottom to top Left to right and top to bottom Right to left and bottom to top Right to left and top to bottom Top to bottom and left to right Top to bottom and right to left Number-up layout: Extended options qpdfview::PsSettingsWidget Graphics antialias bits: Text antialias bits: qpdfview::RecentlyClosedMenu &Recently closed &Clear list qpdfview::RecentlyUsedMenu Recently &used &Clear list qpdfview::SearchModel <b>%1</b> occurrences <b>%1</b> occurrences on page <b>%2</b> qpdfview::SearchableMenu Search for '%1'... qpdfview::SettingsDialog General &Behavior &Graphics &Interface &Shortcuts &Modifiers Defaults Defaults on current tab Mouse wheel modifiers Mouse button modifiers Open URL: Auto-refresh: Effective after restart. Track recently used: Keep recently closed: Restore tabs: Restore bookmarks: Restore per-file settings: min Save database interval: Synchronize presentation: Default Presentation screen: Synchronize split views: Zoom factor: Parallel search execution: ms None Highlight duration: Highlight color: Annotation color: '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number. Source editor: Use tiling: Keep obsolete pixmaps: Use device pixel ratio: Decorate pages: Decorate links: Decorate form fields: Background color: Paper color: Presentation background color: Pages per row: px Page spacing: Thumbnail spacing: Thumbnail size: Fit to viewport Document context menu: Tab context menu: Open in source editor: %1 MB Cache size: Minimal scrolling: Prefetch: Prefetch distance: Top Bottom Left Right Tab position: As needed Always Exit after last tab: Scrollable menus: Searchable menus: Zoom to selection: Never Settings Tab visibility: Spread tabs: New tab next to current tab: Recently used count: Recently closed count: Extended search dock: Toggle tool and menu bars with fullscreen: File tool bar: Edit tool bar: View tool bar: Use page label: Document title as tab title: Current page in window title: Instance name in window title: Synchronize outline view: Highlight current thumbnail: Limit thumbnails to results: Annotation overlay: Form field overlay: Zoom: Rotate: Scroll: Copy to clipboard: Add annotation: qpdfview::ShortcutHandler Action Key sequence Skip backward Skip forward Move up Move down Move left Move right qpdfview::TreeView &Expand all &Collapse all qpdfview-0.4.18/translations/qpdfview_vi.ts0000644000000000000000000023332013516127411017177 0ustar 00000000000000 Model::ImageDocument Image (%1) Size Resolution Depth Format Định dạng Monochrome Indexed 32 bits RGB 32 bits ARGB 16 bits RGB 24 bits RGB Model::PdfDocument Linearized Name Tên Type Thể loại Embedded Embedded Subset Subset File Tệp Yes Vâng PDF version Encrypted No Không Model::PdfPage Information Thông tin Version 0.20.1 or higher of the Poppler library is required to add or remove annotations. Phiên bản 0.20.1 hoặc cao thơn của thư viện Poppler để thêm hoặc xóa ghi chú. Model::PsDocument Title Tiêu đề Created for Tạo ra cho Creator Tác giả Creation date Ngày tạo Format Định dạng Language level Cấp độ ngôn ngữ QObject An empty instance name is not allowed. Không cho phép tên để trống An empty search text is not allowed. Không cho phép tìm văn bản trống Unknown command-line option '%1'. Không rõ tùy chọn dòng lệnh '%1'. Using '--instance' requires an instance name. Sử dụng '--instance' bắt buộc tên yêu càu Using '--instance' is not allowed without using '--unique'. Using '--instance' is not allowed without using '--unique'. An instance name must only contain the characters "[A-Z][a-z][0-9]_" and must not begin with a digit. An instance name must only contain the characters "[A-Z][a-z][0-9]_" and must not begin with a digit. Using '--search' requires a search text. Using '--search' requires a search text. Could not prepare signal handler. Không thể nhận tín hiệu. QShortcut Shift Shift Ctrl Ctrl Alt Alt Shift and Ctrl Shift và Ctrl Shift and Alt Shift và Alt Ctrl and Alt Ctrl và Alt Right mouse button Middle mouse button None Trống qpdfview::BookmarkDialog Bookmark Page: Trang: Label: Comment: Modified: qpdfview::BookmarkMenu &Open &Mở Open in new &tab Mở &trong thẻ mới &Remove bookmark &Bỏ đánh dấu qpdfview::Database Jump to page %1 Đến trang %1 qpdfview::DocumentView Information Thông tin The source editor has not been set. Opening URL is disabled in the settings. Không cho phép mở URL trong thiết đặt Warning Cảnh báo SyncTeX data for '%1' could not be found. Printing '%1'... Đang in '%1' Unlock %1 Mở khóa %1 Password: Mật khẩu: Page %1 Trang %1 qpdfview::FileAttachmentAnnotationWidget Save... Lưu... Save and open... Lưu và mở... Save file attachment Lưu tệp đính kèm Warning Cảnh báo Could not open file attachment saved to '%1'. Không thể mở tệp đính kèm được lưu vào '%1'. Could not save file attachment to '%1'. Không thể lưu tệp đính kèm cho '%1'. qpdfview::FontsDialog Fonts qpdfview::HelpDialog Help help.html Please replace by file name of localized help if available, e.g. "help_fr.html". help.html Find previous Tìm ngược Find next Tìm tiếp qpdfview::MainWindow Toggle tool bars Toggle menu bar Warning Cảnh báo Could not open '%1'. Không thể mở '%1'. Copy file path Select file path Close all tabs Đóng tất cả cá thẻ Close all tabs but this one Đóng tất cả trừ thẻ này Close all tabs to the left Đóng tất cả thẻ bên trái Close all tabs to the right Đóng tất cả thẻ bên phải Open Mở Open in new tab Mở trong thẻ mới Could not refresh '%1'. Không thể làm tươi '%1'. Save copy Lưu bản sao Could not save copy at '%1'. Không thể lưu bản sao tại '%1.' Save as Lưu với tên khác Move to instance Failed to access instance '%1'. Could not save as '%1'. Không thể lưu với tên '%1'. Could not print '%1'. Không thể in '%1'. Set first page Select the first page of the body matter: Jump to page Đến trang Page: Trang: Jump to page %1 Đến trang %1 About qpdfview Về qpdfview <p><b>qpdfview %1</b></p><p>qpdfview is a tabbed document viewer using Qt.</p><p>This version includes:<ul> <p><b>qpdfview %1</b></p><p>qpdfview là trình xem tài liệu theo thẻ viết bằng Qt.</p><p>Phiên bản này bao gồm:<ul> <li>PDF support using Poppler %1</li> <li>PS support using libspectre %1</li> <li>DjVu support using DjVuLibre %1</li> <li>PDF support using Fitz %1</li> <li>Printing support using CUPS %1</li> &Edit bookmark The document '%1' has been modified. Do you want to save your changes? Tài liệu '%1' đã bị sửa đổi. Có muốn lưu các thay đổi của bạn? Page width Độ rộng trang Page size Kích thươc trang Match &case &Khớp từ Whole &words Highlight &all Tô &sáng tất cả &Open... &Mở Open in new &tab... Mở &trong thẻ mới Open &copy in new tab Move to &instance... &Refresh Là&m tươi Information Thông tin Instance-to-instance communication requires D-Bus support. </ul><p>See <a href="https://launchpad.net/qpdfview">launchpad.net/qpdfview</a> for more information.</p><p>&copy; %1 The qpdfview developers</p> Save &as... Lưu &với tên... Save &copy... &Print... &In E&xit T&hoát &Previous page T&rang trước &Next page Trang &kế &First page Tr&ang đầu &Last page Trang &cuối &Set first page... &Jump to page... Đế&n trang Jump &backward &Lùi Jump for&ward &Tiến &Search... Tìm... Find previous Tìm ngược Find next Tìm tiếp Cancel search Hủy tìm kiếm &Copy to clipboard Chếp &vào bộ nhớ đệm &Add annotation Thêm &ghi chú Settings... Thiết lập... &Continuous Tiếp nối &Two pages Hai trang Two pages &with cover page Hai trang với khung &Multiple pages Nhiều trang Right to left Phải sang trái Zoom &in &Phóng to Zoom &out &Thu nhỏ Original &size &Kích thước gốc Fit to page width Khít theo độ &rộng trang Fit to page size Khít theo kích &thước trang Rotate &left X&oay qua trái Rotate &right Xoa&y qua phải Invert colors Đảo màu Convert to grayscale Trim margins Darken with paper color Lighten with paper color Fonts... Font chữ &Fullscreen Toàn màn &hình &Presentation... Trình chiế&u &Previous tab Thẻ trước &Next tab Thẻ kế &Close tab Đóng thẻ Close &all tabs Đóng tất cả thẻ Close all tabs &but current tab Đóng tất cả trù thẻ này Restore &most recently closed tab &Previous bookmark Đánh dấu trướ&c &Next bookmark Đánh dấ&u tiếp &Add bookmark &Thêm đánh dấu Open copy in new &window Split view horizontally... Split view vertically... Close current view Thumb&nails Book&marks Composition &Remove bookmark &Bỏ đánh dấu Edit '%1' at %2,%3... Open containing &folder &Save Remove all bookmarks Bỏ tất cả đánh dấu &Contents &Mục &About Thông t&in &File &Tệp &Edit &Sửa &View &Xem &Outline &Dàn bài &Properties T&huộc tính &Search &Tìm kiếm &Tool bars Thanh &công cụ &Docks Thanh &neo &Tabs &Thẻ &Bookmarks Đánh &dấu &Help &Giúp đỡ Choose instance Instance: qpdfview::PageItem Go to page %1. Đến trang %1. Go to page %1 of file '%2'. Đến trang %1 hoặc '%2'. Open '%1'. Mở '%1'. Edit form field '%1'. Sửa biểu mẫu '%1'. Copy &text Sao chép &văn bản &Select text Copy &image Sao chép &hình Save image to &file... Lưu hình vào &tệp... Save image to file Lưu hình vào tệp Warning Cảnh báo Could not save image to file '%1'. Không thể lưu hình vào tệp '%1'. Add &text Thêm văn bản Add &highlight Thêm tô sáng &Copy link address &Select link address &Remove annotation Bỏ ghi chú qpdfview::PdfSettingsWidget Antialiasing: Khử răng cưa Text antialiasing: Khử răng cưa cho văn bản None Trống Full Đầy Reduced Giảm bớt Text hinting: Gợi ý văn bản: Ignore paper color: Overprint preview: Xem trước khi in: Solid Đặc Shaped Sắc nét Thin line mode: Chế độ dòng mảnh: Splash Nháy Arthur Arthur Backend: Bổ trợ: qpdfview::PluginHandler Image (%1) Compressed (%1) Supported formats (%1) Could not decompress '%1'! Could not match file type of '%1'! Không thể khớp loại tệp của '%1'! Critical Xung đột Could not load plug-in for file type '%1'! Không thể tải phần bổ trợ cho loại tệp '%1'! qpdfview::PrintDialog Fit to page: Vừa khít trang: Page ranges: Khoảng trang: All pages Tất cả trang Even pages Trang sự kiện Odd pages Trang odd Page set: Trang đặt: Single page 1 trang Two pages 2 trang Four pages 4 trang Six pages 6 trang Nine pages 9 trang Sixteen pages 16 trang Number-up: Số-trên: Bottom to top and left to right Dưới lên trên và trái qua phải Bottom to top and right to left Dưới lên trên và phải qua trái Left to right and bottom to top Trái qua phải và dưới lên trên Left to right and top to bottom Trái qua phải và trên xuống dưới Right to left and bottom to top Phải qua trái và dưới lên trên Right to left and top to bottom Phải qua trái và trên xuống dưới Top to bottom and left to right Trên xuống dưới và trái qua phải Top to bottom and right to left Trên xuống dưới và phải qua trái Number-up layout: Number-up layout: Extended options Tùy chọn mở rộng qpdfview::PsSettingsWidget Graphics antialias bits: Số bit khử răng cưa đồ họa: Text antialias bits: Số bit khử răng cưa văn bản: qpdfview::RecentlyClosedMenu &Recently closed Hiện tại đã đóng &Clear list &Xóa danh sách qpdfview::RecentlyUsedMenu Recently &used Hiện tại đang dùng &Clear list &Xóa danh sách qpdfview::SearchModel <b>%1</b> occurrences <b>%1</b> occurrences on page <b>%2</b> qpdfview::SearchableMenu Search for '%1'... qpdfview::SettingsDialog General Chung &Behavior &Hành vi &Graphics Đồ &họa &Interface &Giao diện &Shortcuts &Phím tắt &Modifiers &Bổ trợ Defaults Mặc định Defaults on current tab Mặc định từ thẻ này Mouse wheel modifiers Mouse button modifiers Open URL: Mở URL: Auto-refresh: Tự làm tươi: Effective after restart. Có hiệu lực sau khi khởi động lại Track recently used: Khe hiện tại được sử dụng: Keep recently closed: Giữ hiện tại đã đóng Restore tabs: Khôi phục thẻ: Restore bookmarks: Khôi phục đánh dấu: Restore per-file settings: Khôi phục thiết đặt mỗi tệp: min Save database interval: Synchronize presentation: Đồng bộ hóa trình chiếu: Default Mặc định Presentation screen: Màn hình trình chiếu: Synchronize split views: Zoom factor: Parallel search execution: ms None Trống Highlight duration: Thời gian tô sáng: Highlight color: Màu tô sáng: Annotation color: Màu ghi chú: '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number. '%1' được thay bằng đường dẫn tập tin tuyệt đối. '%2' resp. '%3' được thay thế bằng dòng resp. số cột. Source editor: Soạn thảo mã nguồn: Use tiling: Keep obsolete pixmaps: Giữ pixmap lỗi thời: Use device pixel ratio: Sử dụng tỉ lệ pixel của thiết bị Decorate pages: Decorate pages: Decorate links: Decorate links: Decorate form fields: Decorate form fields: Background color: Màu nền: Paper color: Màu giấy: Presentation background color: Màu nền trình chiếu: Pages per row: Số trang mỗi dòng: px Page spacing: Khoảng cách trang: Thumbnail spacing: Khoảng cách hình thu nhỏ: Thumbnail size: Kích cỡ hình thu nhỏ: Fit to viewport Document context menu: Tab context menu: Open in source editor: %1 MB %1 Mb Cache size: Kích thước đệm Minimal scrolling: Prefetch: Prefetch: Prefetch distance: Prefetch distance: Top Trên Bottom Dưới Left Trái Right Phải Tab position: Vị trí thẻ: As needed Nếu cần thiết Always Luôn luôn Exit after last tab: Scrollable menus: Searchable menus: Zoom to selection: Never Không bao giờ Settings Tab visibility: Ẩn thẻ: Spread tabs: Dàn trải thẻ New tab next to current tab: Thẻ mới đến thẻ này: Recently used count: Đếm số hiện tại đang sử dụng: Recently closed count: Số lượng hiện tại đã đóng: Extended search dock: Toggle tool and menu bars with fullscreen: File tool bar: Thanh công cụ tệp: Edit tool bar: Thanh công cụ chỉnh sửa: View tool bar: Thanh công cụ xem: Use page label: Document title as tab title: Tiêu đề tài liệu như tiêu đề thẻ Current page in window title: Trang hiện tại trong tiêu đề cửa sổ: Instance name in window title: Tên yêu cầu trong tiêu đề cửa sổ: Synchronize outline view: Đồng bộ hóa xem phác thảo: Highlight current thumbnail: Làm nổi bật hình ảnh thu nhỏ hiện tại: Limit thumbnails to results: Giới hạn hình thu nhỏ đến: Annotation overlay: Annotation overlay: Form field overlay: Form field overlay: Zoom: Thu phóng: Rotate: Xoay: Scroll: Cuộn: Copy to clipboard: Chép vào bộ nhớ đệm: Add annotation: Thêm chú thích: qpdfview::ShortcutHandler Action Hành động Key sequence Dãy phím Skip backward Bỏ trước đó Skip forward Bỏ kế tiếp Move up Di chuyển lên Move down Di chuyển xuống Move left Di chuyển qua trái Move right Di chuyển qua phải qpdfview::TreeView &Expand all &Bung ra &Collapse all &Thu lại qpdfview-0.4.18/translations/qpdfview_zh_CN.ts0000644000000000000000000023140313516127411017562 0ustar 00000000000000 Model::ImageDocument Image (%1) 图片 (%1) Size 尺寸 Resolution 分辨率 Depth 色深 Format 格式 Monochrome 单色 Indexed 索引 32 bits RGB 32位 RGB 32 bits ARGB 32位 ARGB 16 bits RGB 16位 RGB 24 bits RGB 24位 RGB Model::PdfDocument Linearized 线性化的 Name 名称 Type 类型 Embedded 嵌入 Subset 子集 File 文件 Yes PDF version PDF 版本 Encrypted 已加密 No Model::PdfPage Information 信息 Version 0.20.1 or higher of the Poppler library is required to add or remove annotations. 添加或删除注释需要 0.20.1 或更高版本的 Poppler 库。 Model::PsDocument Title 标题 Created for 创建 Creator 创建人 Creation date 创建日期 Format 格式 Language level 语言水平 QObject An empty instance name is not allowed. 实例名不许为空。 An empty search text is not allowed. 搜索词不许为空。 Unknown command-line option '%1'. 未知命令行选项 '%1'。 Using '--instance' requires an instance name. 使用 '--instance' 需要一个实例名。 Using '--instance' is not allowed without using '--unique'. 使用了 '--instance' 不运行不用 '--unique'。 An instance name must only contain the characters "[A-Z][a-z][0-9]_" and must not begin with a digit. 一个实例名必须只包含字符 "[A-Z][a-z][0-9]_",并且不能以数字开头。 Using '--search' requires a search text. 使用 '--search' 需要一个搜索词。 Could not prepare signal handler. 无法准备信号处理器。 QShortcut Shift Shift Ctrl Ctrl Alt Alt Shift and Ctrl Shift 和 Ctrl Shift and Alt Shift 和 Alt Ctrl and Alt Ctrl 和 Alt Right mouse button 鼠标右键 Middle mouse button 鼠标中键 None qpdfview::BookmarkDialog Bookmark 书签 Page: 页: Label: 标签: Comment: 备注: Modified: 修改: qpdfview::BookmarkMenu &Open 打开(&O) Open in new &tab 在新标签中打开(&T) &Remove bookmark 移除书签(&R) qpdfview::Database Jump to page %1 跳到第%1页 qpdfview::DocumentView Information 信息 The source editor has not been set. 未设置源编辑器。 Opening URL is disabled in the settings. 在设置中已经禁用打开 URL。 Warning 警告 SyncTeX data for '%1' could not be found. 找不到 “%1” 的 SyncTeX 数据 Printing '%1'... 正在打印“%1”... Unlock %1 解锁 %1 Password: 密码: Page %1 第 %1 页 qpdfview::FileAttachmentAnnotationWidget Save... 保存... Save and open... 保存并打开... Save file attachment 保存附件... Warning 警告 Could not open file attachment saved to '%1'. 打开文件附件不能保存到 '%1'。 Could not save file attachment to '%1'. 无法保存附件到"%1"。 qpdfview::FontsDialog Fonts 字体 qpdfview::HelpDialog Help 帮助 help.html Please replace by file name of localized help if available, e.g. "help_fr.html". help_zh_CN.html Find previous 查找上一个 Find next 查找下一个 qpdfview::MainWindow Toggle tool bars 显示/隐藏工具条 Toggle menu bar 显示/隐藏菜单条 Warning 警告 Could not open '%1'. 无法打开“%1”。 Copy file path 复制文件路径 Select file path 选择文件路径 Close all tabs 关闭全部标签页 Close all tabs but this one 关闭当前标签外的所有标签 Close all tabs to the left 关闭左侧的标签页 Close all tabs to the right 关闭右侧的标签页 Open 打开 Open in new tab 在新标签页中打开 Could not refresh '%1'. 无法刷新“%1”。 Save copy 保存副本 Could not save copy at '%1'. 无法在“%1”保存副本。 Save as 另存为 Move to instance 移动到实例 Failed to access instance '%1'. 无法访问实例“%1”。 Could not save as '%1'. 无法保存为“%1”。 Could not print '%1'. 无法打印“%1”。 Set first page 设置首页 Select the first page of the body matter: 选择版面的首页: Jump to page 跳到页面 Page: 页: Jump to page %1 跳到第%1页 About qpdfview 关于 qpdfview <p><b>qpdfview %1</b></p><p>qpdfview is a tabbed document viewer using Qt.</p><p>This version includes:<ul> <p><b>qpdfview %1</b></p><p>qpdfview 是一款使用 Qt 的标签式文档查看器。</p><p>该版本包括:<ul> <li>PDF support using Poppler %1</li> <li> PDF 由 Poppler %1 支持</li> <li>PS support using libspectre %1</li> <li> PS 由 libspectre %1 支持</li> <li>DjVu support using DjVuLibre %1</li> <li>DjVu 由 DjVuLibre %1 支持</li> <li>PDF support using Fitz %1</li> <li>PDF 由 Fitz %1 支持</li> <li>Printing support using CUPS %1</li> <li>打印由 CUPS %1 支持</li> &Edit bookmark 编辑书签(&E) The document '%1' has been modified. Do you want to save your changes? 文件 %1 已被修改,你想要保存你的修改吗? Page width 页面宽度 Page size 页面大小 Match &case 匹配大小写(&C) Whole &words 整个词(&w) Highlight &all 全部高亮(&A) &Open... 打开(&O)... Open in new &tab... 在新标签中打开(&T)... Open &copy in new tab 在新标签页打开副本(&C) Move to &instance... 移动到实例(&I)... &Refresh 刷新(&R) Information 信息 Instance-to-instance communication requires D-Bus support. 实例到实例的通信需要 D-Bus 支持。 </ul><p>See <a href="https://launchpad.net/qpdfview">launchpad.net/qpdfview</a> for more information.</p><p>&copy; %1 The qpdfview developers</p> </ul><p>请访问 <a href="https://launchpad.net/qpdfview">launchpad.net/qpdfview</a> 以了解更多信息。</p><p>&copy; %1 qpdfview 开发者</p> Save &as... 另存为(&A)... Save &copy... 保存副本(&C)... &Print... 打印(&P)... E&xit 退出(&X) &Previous page 上一页(&P) &Next page 下一页(&N) &First page 第一页(&F) &Last page 最后一页(&L) &Set first page... 设置首页(&S)... &Jump to page... 跳到页面(&J)... Jump &backward 向后跳至(&B) Jump for&ward 向前跳至(&W) &Search... 搜索(&S)... Find previous 查找上一个 Find next 查找下一个 Cancel search 取消搜索 &Copy to clipboard 复制到剪贴板(&C) &Add annotation 添加注释(&A) Settings... 设置... &Continuous 连续(&C) &Two pages 2 页(&T) Two pages &with cover page 双页带有封面(&W) &Multiple pages 多页(&M) Right to left 从右到左 Zoom &in 放大(&I) Zoom &out 缩小(&O) Original &size 原始尺寸(&S) Fit to page width 适合页宽 Fit to page size 适合页面大小 Rotate &left 左旋转(&L) Rotate &right 右旋转(&R) Invert colors 反色 Convert to grayscale 转换为灰度 Trim margins 修剪边距 Darken with paper color 用纸色变暗 Lighten with paper color 用纸色变亮 Fonts... 字体... &Fullscreen 全屏(&F) &Presentation... 幻灯(&P)... &Previous tab 上一标签(&P) &Next tab 下一标签(&N) &Close tab 关闭标签(&C) Close &all tabs 关闭全部标签(&A) Close all tabs &but current tab 关闭当前标签外的全部标签(&B) Restore &most recently closed tab 还原最近关闭的标签(&m) &Previous bookmark 上一书签(&P) &Next bookmark 下一书签(&N) &Add bookmark 添加书签(&A) Open copy in new &window 在新窗口中打开副本(&W) Split view horizontally... 水平分割视图... Split view vertically... 垂直分割视图... Close current view 关闭当前视图 Thumb&nails 缩略图(&N) Book&marks 书签(&M) Composition 合成 &Remove bookmark 移除书签(&R) Edit '%1' at %2,%3... 在 %2,%3 编辑 '%1' ... Open containing &folder 打开文档所在目录 &Save 保存(&s) Remove all bookmarks 移除全部书签 &Contents 内容(&C) &About 关于(&A) &File 文件(&F) &Edit 编辑(&E) &View 查看(&V) &Outline 大纲(&O) &Properties 属性(&P) &Search 搜索(&S) &Tool bars 工具栏(&T) &Docks &Docks &Tabs 标签(&T) &Bookmarks 书签(&B) &Help 帮助(&H) Choose instance 选择实例 Instance: 实例: qpdfview::PageItem Go to page %1. 转到 %1 页。 Go to page %1 of file '%2'. 转到文件“%2”第 %1 页。 Open '%1'. 打开“%1”。 Edit form field '%1'. 编辑表格字段“%1”。 Copy &text 复制文本(&T) &Select text 选择文本(&S) Copy &image 复制图像(&I) Save image to &file... 保存图像到文件(&F)... Save image to file 保存图像到文件 Warning 警告 Could not save image to file '%1'. 无法保存图像到文件“%1”。 Add &text 添加文本(&T) Add &highlight 添加高亮(&H) &Copy link address 复制链接地址(&C) &Select link address 选择链接地址(&S) &Remove annotation 移除注释(&R) qpdfview::PdfSettingsWidget Antialiasing: 抗锯齿: Text antialiasing: 文本抗锯齿: None Full 完全 Reduced 减少 Text hinting: 文字提示: Ignore paper color: 忽略纸色: Overprint preview: 打印预览: Solid 实体 Shaped 形状 Thin line mode: 细线模式: Splash 闪屏 Arthur 亚瑟 Backend: 后端: qpdfview::PluginHandler Image (%1) 图片 (%1) Compressed (%1) 已压缩(%1) Supported formats (%1) 支持的格式 (%1) Could not decompress '%1'! 无法解压缩“%1”! Could not match file type of '%1'! 不能匹配 '%1' 的文件类型! Critical 严重 Could not load plug-in for file type '%1'! 不能为文件类型 '%1'加载插件! qpdfview::PrintDialog Fit to page: 适合页面: Page ranges: 页数范围: All pages 全部页面 Even pages 偶数页 Odd pages 奇数页 Page set: 页面设置: Single page 单页 Two pages 双页 Four pages 4 页 Six pages 6 页 Nine pages 9 页 Sixteen pages 16 页 Number-up: 数字式: Bottom to top and left to right 下到上,左到右 Bottom to top and right to left 下到上,右到左 Left to right and bottom to top 左到右,下到上 Left to right and top to bottom 左到右,上到下 Right to left and bottom to top 右到左,下到上 Right to left and top to bottom 右到左,上到小 Top to bottom and left to right 上到下,左到右 Top to bottom and right to left 上到下,右到左 Number-up layout: 数字式布局: Extended options 扩展选项 qpdfview::PsSettingsWidget Graphics antialias bits: 图像反锯齿位: Text antialias bits: 文本反锯齿位: qpdfview::RecentlyClosedMenu &Recently closed 最近关闭(&R) &Clear list 清空列表(&C) qpdfview::RecentlyUsedMenu Recently &used 最近使用的(&U) &Clear list 清理列表(&C) qpdfview::SearchModel <b>%1</b> occurrences <b>%1</b> 发生 <b>%1</b> occurrences on page <b>%2</b> <b>%1</b> 发生在页面 <b>%2</b> qpdfview::SearchableMenu Search for '%1'... 搜索 '%1'... qpdfview::SettingsDialog General 常规 &Behavior 行为(&B) &Graphics 图形(&G) &Interface 界面(&I) &Shortcuts 快捷键(&S) &Modifiers 修饰键(&M) Defaults 默认 Defaults on current tab 在当前选项卡的默认值 Mouse wheel modifiers 鼠标滚轮修饰 Mouse button modifiers 鼠标按钮修饰 Open URL: 打开 URL: Auto-refresh: 自动刷新: Effective after restart. 重新启动后生效。 Track recently used: 记录最近使用的: Keep recently closed: 记录最近关闭的: Restore tabs: 恢复标签: Restore bookmarks: 恢复书签: Restore per-file settings: 恢复先前的文件设置: min Save database interval: 保存数据库的时间间隔: Synchronize presentation: 同步演示: Default 默认 Presentation screen: 演示画面: Synchronize split views: 同步分割视图: Zoom factor: 缩放系数: Parallel search execution: 并行执行搜索: ms 毫秒 None Highlight duration: 高亮时长: Highlight color: 高亮颜色: Annotation color: 注释颜色: '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number. '%1'由绝对文件路径替换。 '%2' '%3'由行代替。列号。 Source editor: 源编辑器: Use tiling: 使用平铺: Keep obsolete pixmaps: 保持过时像素图: Use device pixel ratio: 使用设备像素比: Decorate pages: 装饰页面: Decorate links: 装饰链接: Decorate form fields: 装饰表格字段: Background color: 背景色: Paper color: 页面颜色: Presentation background color: 演示背景色: Pages per row: 每行页数: px 像素 Page spacing: 页间距: Thumbnail spacing: 缩略图间隔: Thumbnail size: 缩略图大小: Fit to viewport 适合视口 Document context menu: 文档上下文菜单: Tab context menu: 标签上下文菜单: Open in source editor: 在源代码编辑器中打开: %1 MB %1 MB Cache size: 缓存大小: Minimal scrolling: 最小滚动: Prefetch: 预取: Prefetch distance: 预取距离: Top 顶部 Bottom 底部 Left 左侧 Right 右侧 Tab position: 标签位置: As needed 根据需要 Always 总是 Exit after last tab: 关闭最后一个标签后退出: Scrollable menus: 滚动菜单: Searchable menus: 可搜索的菜单: Zoom to selection: 缩放到选择: Never 从不 Settings 设置 Tab visibility: 标签可视: Spread tabs: 扩展标签 New tab next to current tab: 新建与当前标签相邻的标签: Recently used count: 最近使用数: Recently closed count: 最近关闭数: Extended search dock: 扩展搜索条: Toggle tool and menu bars with fullscreen: 全屏时显示/隐藏工具条和菜单条 File tool bar: 文件工具栏: Edit tool bar: 编辑工具栏: View tool bar: 查看工具栏: Use page label: 使用页面标签: Document title as tab title: 文档标题作为分页标题: Current page in window title: 在窗口标题显示当前页数 Instance name in window title: 在窗口标题显示实例名 Synchronize outline view: 同步大纲视图: Highlight current thumbnail: 高亮当前缩略图: Limit thumbnails to results: 限制缩略图的结果: Annotation overlay: 注释叠加: Form field overlay: 表单字段叠加: Zoom: 缩放: Rotate: 旋转: Scroll: 滚屏: Copy to clipboard: 复制到剪贴板: Add annotation: 添加注释: qpdfview::ShortcutHandler Action 动作 Key sequence 按钮顺序 Skip backward 向后跳转 Skip forward 快进 Move up 上移 Move down 下移 Move left 左移 Move right 右移 qpdfview::TreeView &Expand all 展开全部(&E) &Collapse all 关闭全部(&C) qpdfview-0.4.18/translations/qpdfview_zh_TW.ts0000644000000000000000000023345313516127411017623 0ustar 00000000000000 Chinese (Traditional) <zh_TW@li.org> Hsiu-Ming Chang <cges30901@gmail.com> 2016-08-17 07:50+0000 2018-05-27 11:51+0000 qpdfview FULL NAME <EMAIL@ADDRESS> 2018-05-28 05:33+0000 # Chinese (Traditional) translation for qpdfview # Copyright (c) 2016 Rosetta Contributors and Canonical Ltd 2016 # This file is distributed under the same license as the qpdfview package. # FIRST AUTHOR <EMAIL@ADDRESS>, 2016. # Project-Id-Version,Report-Msgid-Bugs-To,POT-Creation-Date,PO-Revision-Date,Last-Translator,Language-Team,MIME-Version,Content-Type,Content-Transfer-Encoding,X-Launchpad-Export-Date,X-Qt-Contexts,X-Language,X-Source-Language Model::ImageDocument Image (%1) 圖片 (%1) Size Resolution 解析度 Depth 深度 Format 格式 Monochrome Indexed 32 bits RGB 32 位元 RGB 32 bits ARGB 32 位元 ARGB 16 bits RGB 16 位元 RGB 24 bits RGB 24 位元 RGB Model::PdfDocument Linearized Name 名稱 Type 類型 Embedded 嵌入 Subset 子集 File 檔案 Yes PDF version PDF 版本 Encrypted No Model::PdfPage Information 資訊 Version 0.20.1 or higher of the Poppler library is required to add or remove annotations. 加入或刪除注釋需要 0.20.1 或更高版本的 Poppler 函式庫。 Model::PsDocument Title 標題 Created for Creator 建立者 Creation date 建立日期 Format 格式 Language level QObject An empty instance name is not allowed. An empty search text is not allowed. Unknown command-line option '%1'. 未知的命令列選項 '%1'。 Using '--instance' requires an instance name. Using '--instance' is not allowed without using '--unique'. An instance name must only contain the characters "[A-Z][a-z][0-9]_" and must not begin with a digit. Using '--search' requires a search text. Could not prepare signal handler. QShortcut Shift Shift Ctrl Ctrl Alt Alt Shift and Ctrl Shift 和 Ctrl Shift and Alt Shift 和 Alt Ctrl and Alt Ctrl 和 Alt Right mouse button 滑鼠右鍵 Middle mouse button 滑鼠中鍵 None qpdfview::BookmarkDialog Bookmark 書籤 Page: 頁: Label: 標籤: Comment: 備註: Modified: 修改時間: qpdfview::BookmarkMenu &Open 開啟(&O) Open in new &tab 在新分頁中開啟(&T) &Remove bookmark 移除書籤(&R) qpdfview::Database Jump to page %1 跳到第%1頁 qpdfview::DocumentView Information 資訊 The source editor has not been set. Opening URL is disabled in the settings. 開啟網址在選項中被停用。 Warning 警告 SyncTeX data for '%1' could not be found. Printing '%1'... 正在列印 '%1'... Unlock %1 解除鎖定 %1 Password: 密碼: Page %1 第 %1 頁 qpdfview::FileAttachmentAnnotationWidget Save... 儲存... Save and open... 儲存並開啟... Save file attachment Warning 警告 Could not open file attachment saved to '%1'. Could not save file attachment to '%1'. qpdfview::FontsDialog Fonts 字型 qpdfview::HelpDialog Help 幫助 help.html Please replace by file name of localized help if available, e.g. "help_fr.html". Find previous 尋找上一個 Find next 尋找下一個 qpdfview::MainWindow Toggle tool bars 顯示/隱藏工具列 Toggle menu bar 顯示/隱藏功能表列 Warning 警告 Could not open '%1'. 無法開啟 '%1'。 Copy file path 複製檔案路徑 Select file path 選擇檔案路徑 Close all tabs 關閉所有分頁 Close all tabs but this one 關閉目前分頁外的所有分頁 Close all tabs to the left 關閉所有左邊的分頁 Close all tabs to the right 關閉所有右邊的分頁 Open 開啟 Open in new tab 在新分頁中開啟 Could not refresh '%1'. 無法重新整理 '%1'. Save copy 儲存副本 Could not save copy at '%1'. Save as 另存為 Move to instance Failed to access instance '%1'. Could not save as '%1'. 無法儲存為 '%1'。 Could not print '%1'. 無法列印 '%1'。 Set first page Select the first page of the body matter: Jump to page 跳到頁面 Page: 頁: Jump to page %1 跳到第%1頁 About qpdfview 關於 qpdfview <p><b>qpdfview %1</b></p><p>qpdfview is a tabbed document viewer using Qt.</p><p>This version includes:<ul> <p><b>qpdfview %1</b></p><p>qpdfview 是一個使用 Qt 開發的具有分頁的文件檢視器。</p><p>這個版本包含:<ul> <li>PDF support using Poppler %1</li> <li>PDF 支援使用 Poppler %1</li> <li>PS support using libspectre %1</li> <li>PS 支援使用 libspectre %1</li> <li>DjVu support using DjVuLibre %1</li> <li>DjVu 支援使用 DjVuLibre %1</li> <li>PDF support using Fitz %1</li> <li>PDF 支援使用 Fitz %1</li> <li>Printing support using CUPS %1</li> <li>列印支援使用 CUPS %1</li> &Edit bookmark 編輯書籤(&E) The document '%1' has been modified. Do you want to save your changes? 文件 '%1' 已經被修改。你想要儲存變更嗎? Page width 頁面寬度 Page size 頁面大小 Match &case 符合大小寫(&C) Whole &words Highlight &all 全部高亮度標示(&A) &Open... 開啟(&O)... Open in new &tab... 在新分頁中開啟(&T)... Open &copy in new tab 在新分頁開啟副本(&C) Move to &instance... &Refresh 重新整理(&R) Information Instance-to-instance communication requires D-Bus support. </ul><p>See <a href="https://launchpad.net/qpdfview">launchpad.net/qpdfview</a> for more information.</p><p>&copy; %1 The qpdfview developers</p> Save &as... 另存為(&A)... Save &copy... &Print... 列印(&P)... E&xit 退出(&X) &Previous page 上一頁(&P) &Next page 下一頁(&N) &First page 第一頁(&F) &Last page 最後一頁(&L) &Set first page... &Jump to page... 跳到頁面(&J)... Jump &backward Jump for&ward &Search... 搜尋(&S)... Find previous 尋找上一個 Find next 尋找下一個 Cancel search 取消搜尋 &Copy to clipboard 複製到剪貼簿(&C) &Add annotation 加入註解(&A) Settings... 設定... &Continuous 連續(&C) &Two pages 兩頁(&T) Two pages &with cover page &Multiple pages 多頁(&M) Right to left 從右到左 Zoom &in 放大(&I) Zoom &out 縮小(&O) Original &size 原始尺寸(&S) Fit to page width 符合頁面寬度 Fit to page size 符合頁面 Rotate &left 向左旋轉(&L) Rotate &right 向右旋轉(&R) Invert colors 反轉顏色 Convert to grayscale 轉換為灰階 Trim margins 裁切邊緣 Darken with paper color Lighten with paper color Fonts... 字型... &Fullscreen 全螢幕(&F) &Presentation... 簡報(&P)... &Previous tab 上一個分頁(&P) &Next tab 下一個分頁(&N) &Close tab 關閉分頁(&C) Close &all tabs 關閉所有分頁(&A) Close all tabs &but current tab 關閉目前分頁外的所有分頁(&B) Restore &most recently closed tab 還原最近關閉的分頁(&M) &Previous bookmark 上一個書籤(&P) &Next bookmark 下一個書籤(&N) &Add bookmark 加入書籤(&A) Open copy in new &window Split view horizontally... Split view vertically... Close current view Thumb&nails 縮圖(&N) Book&marks 書籤(&M) Composition &Remove bookmark 移除書籤(&R) Edit '%1' at %2,%3... Open containing &folder 開啟包含的資料夾(&F) &Save Remove all bookmarks 移除所有書籤 &Contents 內容(&C) &About 關於(&A) &File 檔案(&F) &Edit 編輯(&E) &View 檢視(&V) &Outline &Properties 屬性(&P) &Search 搜尋(&S) &Tool bars 工具列(&T) &Docks &Tabs 分頁(&T) &Bookmarks 書籤(&B) &Help 幫助(&H) Choose instance Instance: qpdfview::PageItem Go to page %1. 跳到第 %1 頁。 Go to page %1 of file '%2'. 跳到檔案 '%2' 的第 %1 頁。 Open '%1'. 開啟 '%1'。 Edit form field '%1'. Copy &text 複製文字(&T) &Select text 選擇文字(&S) Copy &image 複製圖片(&I) Save image to &file... 儲存圖片到檔案(&F)... Save image to file 儲存圖片到檔案 Warning 警告 Could not save image to file '%1'. 無法儲存圖片到檔案「%1」。 Add &text 加入文字(&T) Add &highlight &Copy link address 複製連結位置(&C) &Select link address 選擇連結位置(&S) &Remove annotation 移除註解(&R) qpdfview::PdfSettingsWidget Antialiasing: 反鋸齒: Text antialiasing: 文字反鋸齒: None Full Reduced Text hinting: Ignore paper color: Overprint preview: Solid Shaped Thin line mode: Splash Splash Arthur Arthur Backend: 後端: qpdfview::PluginHandler Image (%1) 圖片 (%1) Compressed (%1) Supported formats (%1) 支援的格式 (%1) Could not decompress '%1'! Could not match file type of '%1'! Critical Could not load plug-in for file type '%1'! qpdfview::PrintDialog Fit to page: 符合頁面: Page ranges: 頁面範圍: All pages 所有頁面 Even pages 偶數頁 Odd pages 奇數頁 Page set: Single page 單頁 Two pages 兩頁 Four pages 四頁 Six pages 六頁 Nine pages 九頁 Sixteen pages 十六頁 Number-up: Bottom to top and left to right 由下至上,由左至右 Bottom to top and right to left 由下至上,由右至左 Left to right and bottom to top 由左至右,由下至上 Left to right and top to bottom 由左至右,由上至下 Right to left and bottom to top 由右至左,由下至上 Right to left and top to bottom 由右至左,由上至下 Top to bottom and left to right 由上至下,由左至右 Top to bottom and right to left 由上至下,由右至左 Number-up layout: Extended options qpdfview::PsSettingsWidget Graphics antialias bits: Text antialias bits: qpdfview::RecentlyClosedMenu &Recently closed 最近關閉的(&R) &Clear list 清除清單(&C) qpdfview::RecentlyUsedMenu Recently &used 最近使用的(&U) &Clear list 清除清單 qpdfview::SearchModel <b>%1</b> occurrences <b>%1</b> occurrences on page <b>%2</b> qpdfview::SearchableMenu Search for '%1'... 搜尋 '%1'... qpdfview::SettingsDialog General 一般 &Behavior 行為(&B) &Graphics 圖形(&G) &Interface 介面(&I) &Shortcuts 捷徑(&S) &Modifiers Defaults 預設 Defaults on current tab Mouse wheel modifiers Mouse button modifiers Open URL: 開啟 URL: Auto-refresh: 自動重新整理: Effective after restart. 重新啟動後生效。 Track recently used: 記錄最近使用的: Keep recently closed: 保存最近關閉的: Restore tabs: 還原分頁: Restore bookmarks: 還原書籤: Restore per-file settings: min 分鐘 Save database interval: 儲存資料庫間隔: Synchronize presentation: Default 預設 Presentation screen: 簡報螢幕: Synchronize split views: Zoom factor: 縮放係數: Parallel search execution: ms 毫秒 None Highlight duration: Highlight color: 高亮度標記顏色: Annotation color: 註解顏色: '%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number. Source editor: Use tiling: Keep obsolete pixmaps: Use device pixel ratio: Decorate pages: Decorate links: Decorate form fields: Background color: 背景顏色: Paper color: 頁面顏色: Presentation background color: 簡報背景顏色: Pages per row: 每行頁數: px 像素 Page spacing: Thumbnail spacing: Thumbnail size: 縮圖大小: Fit to viewport Document context menu: Tab context menu: Open in source editor: %1 MB %1 MB Cache size: 快取大小: Minimal scrolling: Prefetch: Prefetch distance: Top 頂部 Bottom 底部 Left 左側 Right 右側 Tab position: 分頁列位置: As needed 需要時 Always 總是 Exit after last tab: 最後一個分頁關閉後退出: Scrollable menus: Searchable menus: Zoom to selection: Never 永不 Settings 設定 Tab visibility: 分頁可見度: Spread tabs: New tab next to current tab: Recently used count: Recently closed count: Extended search dock: Toggle tool and menu bars with fullscreen: File tool bar: Edit tool bar: View tool bar: Use page label: Document title as tab title: Current page in window title: Instance name in window title: Synchronize outline view: Highlight current thumbnail: 高亮度標記目前的縮圖: Limit thumbnails to results: Annotation overlay: Form field overlay: Zoom: 縮放: Rotate: 旋轉: Scroll: 捲動: Copy to clipboard: 複製到剪貼簿: Add annotation: 加入註解: qpdfview::ShortcutHandler Action 動作 Key sequence Skip backward 向後捲動 Skip forward 向前捲動 Move up 向上移動 Move down 向下移動 Move left 向左移動 Move right 向右移動 qpdfview::TreeView &Expand all 全部展開(&E) &Collapse all 全部摺疊(&C) MainWindow &Save copy... 儲存副本(&S)...