Compare commits

...

37 Commits

Author SHA1 Message Date
Kolan Sh bb985a96e0 Merge branch 'release-1.1.5' 2016-02-27 19:28:30 +03:00
Kolan Sh 6553736aab Bump version number to 1.1.5 2016-02-27 19:28:17 +03:00
Kolan Sh 3b362ef7f9 Merge branch '#104_toolbuttons' into develop 2016-02-27 18:30:46 +03:00
Kolan Sh 9aca644b7c Closes #104: Opening toolbar buttons not seen (Arrow in the toolbar). 2016-02-27 18:30:03 +03:00
Kolan Sh f798be983a Merge branch '#101_hotkeys' into develop 2016-02-27 15:53:47 +03:00
Kolan Sh 35d8b59df4 Closes #101: Hot keys: Ctrl+Q, Ctrl+P, Ctrl+N, Ctrl+E, Del, Ctrl+O, Ctrl+R, Ctrl+H, F1. 2016-02-27 15:53:42 +03:00
Kolan Sh 6efa22c4c8 Merge branch '#103_objects_doubleclick' into develop 2016-02-26 16:15:32 +03:00
Kolan Sh 5a872acd87 Closes #103: Object list double click should call object.compose(). 2016-02-26 16:15:05 +03:00
Kolan Sh 7f11e70f32 Renames: protocols -> objects (protocol objects). 2016-02-26 16:11:51 +03:00
Kolan Sh 2763b3ef30 LAview: plugin-protocol -> plugin-object. 2016-02-14 14:54:32 +03:00
Kolan Sh 755a69fd9e Handle AppCore.core.get_objects_list exceptions. 2016-02-12 13:45:18 +03:00
Kolan Sh c36a3be5cd Merge branch 'release-1.1.4' 2016-02-08 03:39:53 +03:00
Kolan Sh 514c36efd4 Merge branch 'release-1.1.4' into develop 2016-02-08 03:39:47 +03:00
Kolan Sh c0a61031a9 Bump version number to 1.1.4 2016-02-08 03:39:36 +03:00
Kolan Sh 0d3aa990aa *.terminate() added. 2016-02-08 02:57:57 +03:00
Kolan Sh 086006a0fe Tilda is a Shell extension. There is no neccessity to expand it. 2016-02-06 02:09:32 +03:00
Kolan Sh 0fce33dfc6 Merge branch 'release-1.1.3' 2016-01-31 00:48:30 +03:00
Kolan Sh 601b2eb303 Merge branch 'release-1.1.3' into develop 2016-01-31 00:48:27 +03:00
Kolan Sh b0b4b986cd Bump version number to 1.1.3 2016-01-31 00:48:22 +03:00
Kolan Sh 41b1dcac0e LAview Core data/protocol plugins as properties. 2016-01-31 00:35:20 +03:00
Kolan Sh 0e3639fdfd Merge branch 'release-1.1.2' 2016-01-30 06:14:07 +03:00
Kolan Sh d6a149e040 Merge branch 'release-1.1.2' into develop 2016-01-30 06:14:03 +03:00
Kolan Sh 8f3ccf2d6e Bump version number to 1.1.2 2016-01-30 06:13:51 +03:00
Kolan Sh 2096c19f2b Fix destroy signal. 2016-01-30 06:11:48 +03:00
Kolan Sh e9522144f2 Code reduction. 2016-01-30 05:52:43 +03:00
Kolan Sh e8578fb018 Merge branch '#100_app_class_id' into develop 2016-01-30 05:52:14 +03:00
Kolan Sh fea1168533 Closes #100: Application class + ID. 2016-01-30 05:52:02 +03:00
Kolan Sh e252150ef1 Merge branch 'release-1.1.1' 2016-01-28 02:32:24 +03:00
Kolan Sh 38ef905dde Merge branch 'release-1.1.1' into develop 2016-01-28 02:32:20 +03:00
Kolan Sh a31cdc4647 Bump version number to 1.1.1 2016-01-28 02:32:15 +03:00
Kolan Sh d0a531d093 Merge branch 'w32hooks' into develop 2016-01-28 02:31:11 +03:00
Kolan Sh a18b5f05bd Win32 hooks added for localtime_r(). 2016-01-28 02:30:51 +03:00
Kolan Sh dd665bd61b Merge branch '#98_last_pdf_dir' into develop 2016-01-28 02:03:00 +03:00
Kolan Sh fea6cd4404 Closes #98: Save last pdf directory and set FileChooserDialog to this directory. 2016-01-27 23:29:43 +03:00
Kolan Sh 64624a96b0 Merge branch '#99_pdf_date_time' into develop 2016-01-25 00:48:17 +03:00
Kolan Sh 112daf68d0 Closes #99: Date+time to the pdf file name. 2016-01-25 00:47:47 +03:00
Kolan Sh 8b99f682e2 Merge branch 'release-1.1.0' into develop 2016-01-24 03:09:46 +03:00
17 changed files with 358 additions and 404 deletions

View File

@ -7,7 +7,7 @@ SET (PROJECT_DESCRIPTION "LAview Desktop Application.")
SET (MAJOR 1)
SET (MINOR 1)
SET (PATCH 0)
SET (PATCH 5)
LIST (APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/backbone)

View File

@ -1,22 +1,10 @@
<schemalist>
<schema id="ws.backbone.lavew.desktop-@MAJOR@" path="/ws/backbone/laview/desktop-@MAJOR@/" gettext-domain="laview-desktop-@MAJOR@">
<schema id="ws.backbone.laview.desktop-@MAJOR@" path="/ws/backbone/laview/desktop-@MAJOR@/" gettext-domain="laview-desktop-@MAJOR@">
<key name="greeting" type="s">
<default l10n="messages">"Hello, earthlings"</default>
<summary>A greeting</summary>
<description>Greeting of the invading martians</description>
</key>
<key name="bottles-of-beer" type="i">
<default>99</default>
<summary>Bottles of beer</summary>
<description>Number of bottles of beer on the wall</description>
</key>
<key name="lighting" type="b">
<default>false</default>
<summary>Is the light switched on?</summary>
<description>State of an imaginary light switch.</description>
<key name="pdf-save-path" type="s">
<default>""</default>
<summary>Directory to save pdf files (last selected path).</summary>
<description>It is too lazy to select a directory each time...</description>
</key>
</schema>

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: laview-desktop\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-01-24 02:59+0300\n"
"POT-Creation-Date: 2016-02-14 15:22+0300\n"
"PO-Revision-Date: 2015-10-24 20:19+0300\n"
"Last-Translator: <backbone@backbone.ws>\n"
"Language-Team: German\n"
@ -18,104 +18,76 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: config/ws.backbone.laview.desktop.gschema.xml.h:1
msgid "\"Hello, earthlings\""
msgid "Directory to save pdf files (last selected path)."
msgstr ""
#: config/ws.backbone.laview.desktop.gschema.xml.h:2
msgid "A greeting"
msgid "It is too lazy to select a directory each time..."
msgstr ""
#: config/ws.backbone.laview.desktop.gschema.xml.h:3
msgid "Greeting of the invading martians"
msgstr ""
#: config/ws.backbone.laview.desktop.gschema.xml.h:4
msgid "Bottles of beer"
msgstr ""
#: config/ws.backbone.laview.desktop.gschema.xml.h:5
msgid "Number of bottles of beer on the wall"
msgstr ""
#: config/ws.backbone.laview.desktop.gschema.xml.h:6
msgid "Is the light switched on?"
msgstr ""
#: config/ws.backbone.laview.desktop.gschema.xml.h:7
msgid "State of an imaginary light switch."
msgstr ""
#: src/MainWindow.vala:58
#: src/MainWindow.vala:64
msgid "We're ready, Commander! Select or create a template. :-)"
msgstr ""
#: src/MainWindow.vala:76 src/MainWindow.vala:120 src/MainWindow.vala:194
#: src/MainWindow.vala:212 src/MainWindow.vala:302
#: src/MainWindow.vala:82 src/MainWindow.vala:125 src/MainWindow.vala:199
#: src/MainWindow.vala:217 src/MainWindow.vala:255 src/MainWindow.vala:321
msgid "Error"
msgstr ""
#: src/MainWindow.vala:84
#: src/MainWindow.vala:90
msgid "Select templates"
msgstr ""
#: src/MainWindow.vala:86 src/MainWindow.vala:268
#: src/MainWindow.vala:92 src/MainWindow.vala:281
msgid "_Cancel"
msgstr ""
#: src/MainWindow.vala:87
#: src/MainWindow.vala:93
msgid "_Open"
msgstr ""
#: src/MainWindow.vala:166
#: src/MainWindow.vala:171
msgid "After composing all objects print the document."
msgstr ""
#: src/MainWindow.vala:248
#: src/MainWindow.vala:261
msgid "Document analized, select an object and set it's properties."
msgstr ""
#: src/MainWindow.vala:253
#: src/MainWindow.vala:266
msgid "Press 'Properties' button to compose the object."
msgstr ""
#: src/MainWindow.vala:262
#: src/MainWindow.vala:275
msgid "Prepare the document first! >;-]"
msgstr ""
#: src/MainWindow.vala:266
#: src/MainWindow.vala:279
msgid "Select destination"
msgstr ""
#: src/MainWindow.vala:269
#: src/MainWindow.vala:282
msgid "_Save"
msgstr ""
#: src/MainWindow.vala:297
msgid "bytes copied/saved"
msgstr ""
#: src/MainWindow.vala:297
#: src/MainWindow.vala:314
msgid "bytes of"
msgstr ""
#: src/MainWindow.vala:299
#: src/MainWindow.vala:315
msgid "bytes copied/saved"
msgstr ""
#: src/MainWindow.vala:318
msgid "Save/Copy operation complete! :-)"
msgstr ""
#: src/main.vala:33
msgid "Show the application's version"
msgstr ""
#: src/main.vala:52
msgid "[FILE]"
msgstr ""
#: src/main.vala:64
#: src/main.vala:64 src/main.vala:83
#, c-format
msgid "Error: %s\n"
msgstr ""
#: src/main.vala:65
#: src/main.vala:84
#, c-format
msgid "Run '%s --help' to see a full list of available command line options.\n"
msgstr ""
@ -157,89 +129,81 @@ msgid "Common"
msgstr ""
#: ui/glade/laview-desktop.glade.h:10
msgid "Protocol Plugins"
msgid "Object plugins"
msgstr ""
#: ui/glade/laview-desktop.glade.h:11
msgid "Protocol plugins"
msgstr ""
#: ui/glade/laview-desktop.glade.h:12
msgid "Data Plugins"
msgstr ""
#: ui/glade/laview-desktop.glade.h:13
msgid "Data plugins"
msgstr ""
#: ui/glade/laview-desktop.glade.h:14
#: ui/glade/laview-desktop.glade.h:12
msgid "LAview Desktop"
msgstr ""
#: ui/glade/laview-desktop.glade.h:15
#: ui/glade/laview-desktop.glade.h:13
msgid "_Template"
msgstr ""
#: ui/glade/laview-desktop.glade.h:16
#: ui/glade/laview-desktop.glade.h:14
msgid "_Document"
msgstr ""
#: ui/glade/laview-desktop.glade.h:17
#: ui/glade/laview-desktop.glade.h:15
msgid "_Application"
msgstr ""
#: ui/glade/laview-desktop.glade.h:18
#: ui/glade/laview-desktop.glade.h:16
msgid "_Help"
msgstr ""
#: ui/glade/laview-desktop.glade.h:19
#: ui/glade/laview-desktop.glade.h:17
msgid "Create a new template"
msgstr ""
#: ui/glade/laview-desktop.glade.h:20
#: ui/glade/laview-desktop.glade.h:18
msgid "Open a template"
msgstr ""
#: ui/glade/laview-desktop.glade.h:21
#: ui/glade/laview-desktop.glade.h:19
msgid "Change selected template"
msgstr ""
#: ui/glade/laview-desktop.glade.h:22
#: ui/glade/laview-desktop.glade.h:20
msgid "Delete selected template"
msgstr ""
#: ui/glade/laview-desktop.glade.h:23
#: ui/glade/laview-desktop.glade.h:21
msgid "Document object preparing"
msgstr ""
#: ui/glade/laview-desktop.glade.h:24
#: ui/glade/laview-desktop.glade.h:22
msgid "View and print the document"
msgstr ""
#: ui/glade/laview-desktop.glade.h:25
#: ui/glade/laview-desktop.glade.h:23
msgid "Edit the result document"
msgstr ""
#: ui/glade/laview-desktop.glade.h:26
#: ui/glade/laview-desktop.glade.h:24
msgid "Save the document as..."
msgstr ""
#: ui/glade/laview-desktop.glade.h:27
#: ui/glade/laview-desktop.glade.h:25
msgid "Application preferences"
msgstr ""
#: ui/glade/laview-desktop.glade.h:28
#: ui/glade/laview-desktop.glade.h:26
msgid "Help and reference"
msgstr ""
#: ui/glade/laview-desktop.glade.h:29
#: ui/glade/laview-desktop.glade.h:27
msgid "Close the application"
msgstr ""
#: ui/glade/laview-desktop.glade.h:30
#: ui/glade/laview-desktop.glade.h:28
msgid "Templates"
msgstr ""
#: ui/glade/laview-desktop.glade.h:31
#: ui/glade/laview-desktop.glade.h:29
msgid "Document Objects"
msgstr ""

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: laview-desktop\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-01-24 02:59+0300\n"
"POT-Creation-Date: 2016-02-14 15:22+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -18,104 +18,76 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
#: config/ws.backbone.laview.desktop.gschema.xml.h:1
msgid "\"Hello, earthlings\""
msgid "Directory to save pdf files (last selected path)."
msgstr ""
#: config/ws.backbone.laview.desktop.gschema.xml.h:2
msgid "A greeting"
msgid "It is too lazy to select a directory each time..."
msgstr ""
#: config/ws.backbone.laview.desktop.gschema.xml.h:3
msgid "Greeting of the invading martians"
msgstr ""
#: config/ws.backbone.laview.desktop.gschema.xml.h:4
msgid "Bottles of beer"
msgstr ""
#: config/ws.backbone.laview.desktop.gschema.xml.h:5
msgid "Number of bottles of beer on the wall"
msgstr ""
#: config/ws.backbone.laview.desktop.gschema.xml.h:6
msgid "Is the light switched on?"
msgstr ""
#: config/ws.backbone.laview.desktop.gschema.xml.h:7
msgid "State of an imaginary light switch."
msgstr ""
#: src/MainWindow.vala:58
#: src/MainWindow.vala:64
msgid "We're ready, Commander! Select or create a template. :-)"
msgstr ""
#: src/MainWindow.vala:76 src/MainWindow.vala:120 src/MainWindow.vala:194
#: src/MainWindow.vala:212 src/MainWindow.vala:302
#: src/MainWindow.vala:82 src/MainWindow.vala:125 src/MainWindow.vala:199
#: src/MainWindow.vala:217 src/MainWindow.vala:255 src/MainWindow.vala:321
msgid "Error"
msgstr ""
#: src/MainWindow.vala:84
#: src/MainWindow.vala:90
msgid "Select templates"
msgstr ""
#: src/MainWindow.vala:86 src/MainWindow.vala:268
#: src/MainWindow.vala:92 src/MainWindow.vala:281
msgid "_Cancel"
msgstr ""
#: src/MainWindow.vala:87
#: src/MainWindow.vala:93
msgid "_Open"
msgstr ""
#: src/MainWindow.vala:166
#: src/MainWindow.vala:171
msgid "After composing all objects print the document."
msgstr ""
#: src/MainWindow.vala:248
#: src/MainWindow.vala:261
msgid "Document analized, select an object and set it's properties."
msgstr ""
#: src/MainWindow.vala:253
#: src/MainWindow.vala:266
msgid "Press 'Properties' button to compose the object."
msgstr ""
#: src/MainWindow.vala:262
#: src/MainWindow.vala:275
msgid "Prepare the document first! >;-]"
msgstr ""
#: src/MainWindow.vala:266
#: src/MainWindow.vala:279
msgid "Select destination"
msgstr ""
#: src/MainWindow.vala:269
#: src/MainWindow.vala:282
msgid "_Save"
msgstr ""
#: src/MainWindow.vala:297
msgid "bytes copied/saved"
msgstr ""
#: src/MainWindow.vala:297
#: src/MainWindow.vala:314
msgid "bytes of"
msgstr ""
#: src/MainWindow.vala:299
#: src/MainWindow.vala:315
msgid "bytes copied/saved"
msgstr ""
#: src/MainWindow.vala:318
msgid "Save/Copy operation complete! :-)"
msgstr ""
#: src/main.vala:33
msgid "Show the application's version"
msgstr ""
#: src/main.vala:52
msgid "[FILE]"
msgstr ""
#: src/main.vala:64
#: src/main.vala:64 src/main.vala:83
#, c-format
msgid "Error: %s\n"
msgstr ""
#: src/main.vala:65
#: src/main.vala:84
#, c-format
msgid "Run '%s --help' to see a full list of available command line options.\n"
msgstr ""
@ -157,89 +129,81 @@ msgid "Common"
msgstr ""
#: ui/glade/laview-desktop.glade.h:10
msgid "Protocol Plugins"
msgid "Object plugins"
msgstr ""
#: ui/glade/laview-desktop.glade.h:11
msgid "Protocol plugins"
msgstr ""
#: ui/glade/laview-desktop.glade.h:12
msgid "Data Plugins"
msgstr ""
#: ui/glade/laview-desktop.glade.h:13
msgid "Data plugins"
msgstr ""
#: ui/glade/laview-desktop.glade.h:14
#: ui/glade/laview-desktop.glade.h:12
msgid "LAview Desktop"
msgstr ""
#: ui/glade/laview-desktop.glade.h:15
#: ui/glade/laview-desktop.glade.h:13
msgid "_Template"
msgstr ""
#: ui/glade/laview-desktop.glade.h:16
#: ui/glade/laview-desktop.glade.h:14
msgid "_Document"
msgstr ""
#: ui/glade/laview-desktop.glade.h:17
#: ui/glade/laview-desktop.glade.h:15
msgid "_Application"
msgstr ""
#: ui/glade/laview-desktop.glade.h:18
#: ui/glade/laview-desktop.glade.h:16
msgid "_Help"
msgstr ""
#: ui/glade/laview-desktop.glade.h:19
#: ui/glade/laview-desktop.glade.h:17
msgid "Create a new template"
msgstr ""
#: ui/glade/laview-desktop.glade.h:20
#: ui/glade/laview-desktop.glade.h:18
msgid "Open a template"
msgstr ""
#: ui/glade/laview-desktop.glade.h:21
#: ui/glade/laview-desktop.glade.h:19
msgid "Change selected template"
msgstr ""
#: ui/glade/laview-desktop.glade.h:22
#: ui/glade/laview-desktop.glade.h:20
msgid "Delete selected template"
msgstr ""
#: ui/glade/laview-desktop.glade.h:23
#: ui/glade/laview-desktop.glade.h:21
msgid "Document object preparing"
msgstr ""
#: ui/glade/laview-desktop.glade.h:24
#: ui/glade/laview-desktop.glade.h:22
msgid "View and print the document"
msgstr ""
#: ui/glade/laview-desktop.glade.h:25
#: ui/glade/laview-desktop.glade.h:23
msgid "Edit the result document"
msgstr ""
#: ui/glade/laview-desktop.glade.h:26
#: ui/glade/laview-desktop.glade.h:24
msgid "Save the document as..."
msgstr ""
#: ui/glade/laview-desktop.glade.h:27
#: ui/glade/laview-desktop.glade.h:25
msgid "Application preferences"
msgstr ""
#: ui/glade/laview-desktop.glade.h:28
#: ui/glade/laview-desktop.glade.h:26
msgid "Help and reference"
msgstr ""
#: ui/glade/laview-desktop.glade.h:29
#: ui/glade/laview-desktop.glade.h:27
msgid "Close the application"
msgstr ""
#: ui/glade/laview-desktop.glade.h:30
#: ui/glade/laview-desktop.glade.h:28
msgid "Templates"
msgstr ""
#: ui/glade/laview-desktop.glade.h:31
#: ui/glade/laview-desktop.glade.h:29
msgid "Document Objects"
msgstr ""

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: laview-desktop\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-01-24 02:59+0300\n"
"POT-Creation-Date: 2016-02-14 15:22+0300\n"
"PO-Revision-Date: 2015-10-24 20:19+0300\n"
"Last-Translator: <backbone@backbone.ws>\n"
"Language-Team: Russian\n"
@ -19,104 +19,76 @@ msgstr ""
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
#: config/ws.backbone.laview.desktop.gschema.xml.h:1
msgid "\"Hello, earthlings\""
msgstr "\"Привет, земляне\""
msgid "Directory to save pdf files (last selected path)."
msgstr "Директория для сохранения pdf файлов (последний выбранный путь)."
#: config/ws.backbone.laview.desktop.gschema.xml.h:2
msgid "A greeting"
msgstr "Приветствие"
msgid "It is too lazy to select a directory each time..."
msgstr "Слишком лениво выбирать каждый раз директорию для сохранения..."
#: config/ws.backbone.laview.desktop.gschema.xml.h:3
msgid "Greeting of the invading martians"
msgstr "Приветствие вторгнувшихся марсиан"
#: config/ws.backbone.laview.desktop.gschema.xml.h:4
msgid "Bottles of beer"
msgstr "Бутылки пива"
#: config/ws.backbone.laview.desktop.gschema.xml.h:5
msgid "Number of bottles of beer on the wall"
msgstr "Число бутылок пива на стене"
#: config/ws.backbone.laview.desktop.gschema.xml.h:6
msgid "Is the light switched on?"
msgstr "Включен ли свет?"
#: config/ws.backbone.laview.desktop.gschema.xml.h:7
msgid "State of an imaginary light switch."
msgstr "Состояние воображаемого выключателя света."
#: src/MainWindow.vala:58
#: src/MainWindow.vala:64
msgid "We're ready, Commander! Select or create a template. :-)"
msgstr "Мы готовы, Командир! Выберите или создайте шаблон. :-)"
#: src/MainWindow.vala:76 src/MainWindow.vala:120 src/MainWindow.vala:194
#: src/MainWindow.vala:212 src/MainWindow.vala:302
#: src/MainWindow.vala:82 src/MainWindow.vala:125 src/MainWindow.vala:199
#: src/MainWindow.vala:217 src/MainWindow.vala:255 src/MainWindow.vala:321
msgid "Error"
msgstr "Ошибка"
#: src/MainWindow.vala:84
#: src/MainWindow.vala:90
msgid "Select templates"
msgstr "Выберите шаблоны"
#: src/MainWindow.vala:86 src/MainWindow.vala:268
#: src/MainWindow.vala:92 src/MainWindow.vala:281
msgid "_Cancel"
msgstr "_Отмена"
#: src/MainWindow.vala:87
#: src/MainWindow.vala:93
msgid "_Open"
msgstr "_Открыть"
#: src/MainWindow.vala:166
#: src/MainWindow.vala:171
msgid "After composing all objects print the document."
msgstr "После компоновки всех объектов напечатайте документ."
#: src/MainWindow.vala:248
#: src/MainWindow.vala:261
msgid "Document analized, select an object and set it's properties."
msgstr "Документ проанализирован, выберите объект и установите его свойства."
#: src/MainWindow.vala:253
#: src/MainWindow.vala:266
msgid "Press 'Properties' button to compose the object."
msgstr "Нажмите кнопку 'Свойства' для компоновки объекта."
#: src/MainWindow.vala:262
#: src/MainWindow.vala:275
msgid "Prepare the document first! >;-]"
msgstr "Сначала подготовьте документ! >;-]"
#: src/MainWindow.vala:266
#: src/MainWindow.vala:279
msgid "Select destination"
msgstr "Выберите назначение"
#: src/MainWindow.vala:269
#: src/MainWindow.vala:282
msgid "_Save"
msgstr "_Сохранить"
#: src/MainWindow.vala:297
msgid "bytes copied/saved"
msgstr "байт скопировано/сохранено"
#: src/MainWindow.vala:297
#: src/MainWindow.vala:314
msgid "bytes of"
msgstr "байт из"
#: src/MainWindow.vala:299
#: src/MainWindow.vala:315
msgid "bytes copied/saved"
msgstr "байт скопировано/сохранено"
#: src/MainWindow.vala:318
msgid "Save/Copy operation complete! :-)"
msgstr "Операция сохранения/копирования завершена! :-)"
#: src/main.vala:33
msgid "Show the application's version"
msgstr "Показать версию приложения"
#: src/main.vala:52
msgid "[FILE]"
msgstr "[ФАЙЛ]"
#: src/main.vala:64
#: src/main.vala:64 src/main.vala:83
#, c-format
msgid "Error: %s\n"
msgstr "Ошибка: %s\n"
#: src/main.vala:65
#: src/main.vala:84
#, c-format
msgid "Run '%s --help' to see a full list of available command line options.\n"
msgstr "Запустите '%s --help', чтобы увидеть весь список доступных опций.\n"
@ -158,89 +130,81 @@ msgid "Common"
msgstr "Общие"
#: ui/glade/laview-desktop.glade.h:10
msgid "Protocol Plugins"
msgstr "Плагины протоколов"
msgid "Object plugins"
msgstr "Плагины объектов"
#: ui/glade/laview-desktop.glade.h:11
msgid "Protocol plugins"
msgstr "Плагины протоколов"
#: ui/glade/laview-desktop.glade.h:12
msgid "Data Plugins"
msgstr "Плагины данных"
#: ui/glade/laview-desktop.glade.h:13
msgid "Data plugins"
msgstr "Плагины данных"
#: ui/glade/laview-desktop.glade.h:14
#: ui/glade/laview-desktop.glade.h:12
msgid "LAview Desktop"
msgstr "Рабочее окно LAview"
#: ui/glade/laview-desktop.glade.h:15
#: ui/glade/laview-desktop.glade.h:13
msgid "_Template"
msgstr "_Шаблон"
#: ui/glade/laview-desktop.glade.h:16
#: ui/glade/laview-desktop.glade.h:14
msgid "_Document"
msgstr "_Документ"
#: ui/glade/laview-desktop.glade.h:17
#: ui/glade/laview-desktop.glade.h:15
msgid "_Application"
msgstr "_Приложение"
#: ui/glade/laview-desktop.glade.h:18
#: ui/glade/laview-desktop.glade.h:16
msgid "_Help"
msgstr "_Помощь"
#: ui/glade/laview-desktop.glade.h:19
#: ui/glade/laview-desktop.glade.h:17
msgid "Create a new template"
msgstr "Создать новый шаблон"
#: ui/glade/laview-desktop.glade.h:20
#: ui/glade/laview-desktop.glade.h:18
msgid "Open a template"
msgstr "Открыть шаблон"
#: ui/glade/laview-desktop.glade.h:21
#: ui/glade/laview-desktop.glade.h:19
msgid "Change selected template"
msgstr "Изменить выбранный шаблон"
#: ui/glade/laview-desktop.glade.h:22
#: ui/glade/laview-desktop.glade.h:20
msgid "Delete selected template"
msgstr "Удалить выбранный шаблон"
#: ui/glade/laview-desktop.glade.h:23
#: ui/glade/laview-desktop.glade.h:21
msgid "Document object preparing"
msgstr "Подготовка объекта документа"
#: ui/glade/laview-desktop.glade.h:24
#: ui/glade/laview-desktop.glade.h:22
msgid "View and print the document"
msgstr "Просмотр и печать документа"
#: ui/glade/laview-desktop.glade.h:25
#: ui/glade/laview-desktop.glade.h:23
msgid "Edit the result document"
msgstr "Редактировать полученный документ"
#: ui/glade/laview-desktop.glade.h:26
#: ui/glade/laview-desktop.glade.h:24
msgid "Save the document as..."
msgstr "Сохранить документ как..."
#: ui/glade/laview-desktop.glade.h:27
#: ui/glade/laview-desktop.glade.h:25
msgid "Application preferences"
msgstr "Параметры приложения"
#: ui/glade/laview-desktop.glade.h:28
#: ui/glade/laview-desktop.glade.h:26
msgid "Help and reference"
msgstr "Помощь и справка"
#: ui/glade/laview-desktop.glade.h:29
#: ui/glade/laview-desktop.glade.h:27
msgid "Close the application"
msgstr "Закрыть приложение"
#: ui/glade/laview-desktop.glade.h:30
#: ui/glade/laview-desktop.glade.h:28
msgid "Templates"
msgstr "Шаблоны"
#: ui/glade/laview-desktop.glade.h:31
#: ui/glade/laview-desktop.glade.h:29
msgid "Document Objects"
msgstr "Объекты документа"

View File

@ -8,15 +8,16 @@ namespace LAview.Desktop {
public class AboutDialogWindow {
AboutDialog dialog;
public AboutDialogWindow (Window parent) throws Error {
public AboutDialogWindow (Gtk.Application application, Window parent) throws Error {
var builder = new Builder ();
builder.add_from_file (AppDirs.ui_dir + "/laview-desktop.glade");
builder.connect_signals (this);
dialog = builder.get_object ("aboutdialog_window") as AboutDialog;
dialog.set_destroy_with_parent (true);
dialog.set_transient_for (parent);
dialog.set_modal (true);
dialog.destroy_with_parent = true;
dialog.transient_for = parent;
dialog.modal = true;
dialog.application = application;
dialog.delete_event.connect ((source) => {return true;});
dialog.version = @" $(Config.VERSION_MAJOR).$(Config.VERSION_MINOR).$(Config.VERSION_PATCH)";

View File

@ -2,9 +2,15 @@ namespace LAview.Desktop {
class AppCore {
public static LAview.Core.Core core;
public static AppSettings settings;
public static void init (string[] args) throws Error {
core = new LAview.Core.Core();
settings = new AppSettings();
}
public static void terminate () {
core = null;
}
}
}

View File

@ -5,7 +5,7 @@ SET (BinPkgModules gtk+-3.0 gee-0.8 laview-core-0)
SET (BinCustomVapis ${CMAKE_SOURCE_DIR}/config/Config.vapi)
INCLUDE_DIRECTORIES ("${CMAKE_BINARY_DIR}/config")
SET (BinInstall ON)
SET (BinExtraSources "${CMAKE_SOURCE_DIR}/res/laview-desktop.rc")
SET (BinExtraSources "${CMAKE_SOURCE_DIR}/res/laview-desktop.rc" w32hooks.c)
IF (WIN32)
SET (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mwindows")
SET (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--export-all-symbols")

View File

@ -7,7 +7,7 @@ namespace LAview.Desktop {
*/
public class MainWindow {
Window window;
ApplicationWindow window;
PreferencesDialog pref_dialog;
AboutDialogWindow about_dialog;
SubprocessDialog subprocess_dialog;
@ -17,12 +17,12 @@ namespace LAview.Desktop {
TreeView treeview_templates;
TreeView treeview_objects;
public MainWindow () throws Error {
public MainWindow (Gtk.Application application) throws Error {
var builder = new Builder ();
builder.add_from_file (AppDirs.ui_dir + "/laview-desktop.glade");
builder.connect_signals (this);
window = builder.get_object ("main_window") as Window;
window = builder.get_object ("main_window") as ApplicationWindow;
statusbar = builder.get_object ("statusbar") as Statusbar;
liststore_templates = builder.get_object ("liststore_templates") as Gtk.ListStore;
liststore_doc_objects = builder.get_object ("liststore_objects") as Gtk.ListStore;
@ -31,11 +31,17 @@ namespace LAview.Desktop {
window.title = "LAview Desktop"
+ @" $(Config.VERSION_MAJOR).$(Config.VERSION_MINOR).$(Config.VERSION_PATCH)";
pref_dialog = new PreferencesDialog (window);
subprocess_dialog = new SubprocessDialog (window);
about_dialog = new AboutDialogWindow (window);
pref_dialog = new PreferencesDialog (application, window);
subprocess_dialog = new SubprocessDialog (application, window);
about_dialog = new AboutDialogWindow (application, window);
fill_liststore_templates ();
application.app_menu = builder.get_object ("menubar") as MenuModel;
application.menubar = builder.get_object ("main_toolbar") as MenuModel;
window.application = application;
window.destroy.connect (() => { window.application.quit (); });
}
void fill_liststore_templates () {
@ -86,14 +92,13 @@ namespace LAview.Desktop {
_("_Cancel"), ResponseType.CANCEL,
_("_Open"), ResponseType.ACCEPT);
chooser.select_multiple = true;
FileFilter filter = new FileFilter ();
chooser.set_filter (filter);
filter.add_mime_type ("application/x-tex");
filter.add_mime_type ("application/x-latex");
filter.add_mime_type ("application/x-lyx");
filter.add_pattern ("*.tex");
filter.add_pattern ("*.latex");
filter.add_pattern ("*.lyx");
chooser.filter = new FileFilter ();
chooser.filter.add_mime_type ("application/x-tex");
chooser.filter.add_mime_type ("application/x-latex");
chooser.filter.add_mime_type ("application/x-lyx");
chooser.filter.add_pattern ("*.tex");
chooser.filter.add_pattern ("*.latex");
chooser.filter.add_pattern ("*.lyx");
if (chooser.run () == ResponseType.ACCEPT) {
var paths = chooser.get_filenames ();
@ -156,16 +161,26 @@ namespace LAview.Desktop {
return indices;
}
[CCode (instance_pos = -1)]
public void action_compose_activate (Gtk.Action action) {
void compose_object () {
var t_indices = get_template_indices ();
var o_indices = get_objects_indices ();
if (t_indices.length != 0 && o_indices.length != 0) {
if (t_indices.length != 0 && o_indices.length != 0)
AppCore.core.compose_object (t_indices[0], o_indices[0]);
}
statusbar_show (_("After composing all objects print the document."));
}
[CCode (instance_pos = -1)]
public void action_compose_activate (Gtk.Action action) {
compose_object();
}
[CCode (instance_pos = -1)]
public void objects_activated (Gtk.TreeView treeview,
Gtk.TreePath path,
Gtk.TreeViewColumn column) {
compose_object();
}
[CCode (instance_pos = -1)]
public void action_edit_result_activate (Gtk.Action action) {
var indices = get_template_indices();
@ -237,12 +252,20 @@ namespace LAview.Desktop {
public void templates_cursor_changed (Gtk.TreeView treeview) {
var indices = get_template_indices ();
if (indices.length != 0) {
var doc_objects = AppCore.core.get_objects_list (indices[0]);
liststore_doc_objects.clear();
Gtk.TreeIter iter = Gtk.TreeIter();
foreach (var t in doc_objects) {
liststore_doc_objects.append (out iter);
liststore_doc_objects.set (iter, 0, t);
try {
var doc_objects = AppCore.core.get_objects_list (indices[0]);
liststore_doc_objects.clear();
Gtk.TreeIter iter = Gtk.TreeIter();
foreach (var t in doc_objects) {
liststore_doc_objects.append (out iter);
liststore_doc_objects.set (iter, 0, t);
}
} catch (Error err) {
var msg = new MessageDialog (window, DialogFlags.MODAL, MessageType.ERROR,
ButtonsType.CLOSE, _("Error")+@": $(err.message).");
msg.response.connect ((response_id) => { msg.destroy (); } );
msg.show ();
return;
}
}
statusbar_show (_("Document analized, select an object and set it's properties."));
@ -268,16 +291,23 @@ namespace LAview.Desktop {
_("_Cancel"), ResponseType.CANCEL,
_("_Save"), ResponseType.ACCEPT);
chooser.select_multiple = false;
FileFilter filter = new FileFilter ();
chooser.set_filter (filter);
filter.add_mime_type ("application/pdf");
filter.add_pattern ("*.pdf");
chooser.filter = new FileFilter ();
chooser.filter.add_mime_type ("application/pdf");
chooser.filter.add_pattern ("*.pdf");
// set folder
if (AppCore.settings.pdf_save_path != "")
chooser.set_current_folder (AppCore.settings.pdf_save_path);
// set current pdf file name or select an existance one
var template_name = AppCore.core.get_template_path_by_index (indices[0]);
template_name = File.new_for_path(template_name).get_basename ();
if (template_name.down().has_suffix(".lyx"))
template_name = template_name.splice (template_name.length-4, template_name.length, ".pdf");
if ( template_name.down().has_suffix(".lyx")
|| template_name.down().has_suffix(".tex")
) {
var date = Time.local (time_t()).format("-%Y.%m.%d_%H-%M-%S");
template_name = template_name.splice (template_name.length-4, template_name.length, date+".pdf");
}
if (File.new_for_path(template_name).query_exists())
chooser.set_filename (template_name);
else
@ -288,15 +318,13 @@ namespace LAview.Desktop {
// process response
if (response == ResponseType.ACCEPT) {
var save_path = chooser.get_filename ();
var file_src = File.new_for_path (tmp_pdf);
var file_dest = File.new_for_path (save_path);
try {
file_src.copy (file_dest, FileCopyFlags.OVERWRITE, null,
File.new_for_path (tmp_pdf).copy (chooser.get_file(), FileCopyFlags.OVERWRITE, null,
(current_num_bytes, total_num_bytes) => {
statusbar_show (@"$current_num_bytes "+_("bytes of")+
@" $total_num_bytes "+_("bytes copied/saved")+".");
});
AppCore.settings.pdf_save_path = chooser.get_file().get_parent().get_path();
statusbar_show (_("Save/Copy operation complete! :-)"));
} catch (Error err) {
var msg = new MessageDialog (chooser, DialogFlags.MODAL, MessageType.ERROR,
@ -308,5 +336,10 @@ namespace LAview.Desktop {
chooser.close ();
}
[CCode (instance_pos = -1)]
public void action_quit_activate (Gtk.Action action) {
window.destroy();
}
}
}

View File

@ -8,50 +8,47 @@ namespace LAview.Desktop {
public class PreferencesDialog {
Dialog dialog;
Gtk.ListStore liststore_data;
Gtk.ListStore liststore_protocols;
Gtk.ListStore liststore_objects;
FileChooserButton filechooserbutton_lyx;
FileChooserButton filechooserbutton_pdflatex;
public PreferencesDialog (Window parent) throws Error {
public PreferencesDialog (Gtk.Application application, Window parent) throws Error {
var builder = new Builder ();
builder.add_from_file (AppDirs.ui_dir + "/laview-desktop.glade");
builder.connect_signals (this);
dialog = builder.get_object ("preferences_window") as Dialog;
dialog.set_transient_for (parent);
dialog.set_modal (true);
dialog.transient_for = parent;
dialog.modal = true;
//dialog.application = application;
dialog.delete_event.connect ((source) => {return true;});
liststore_data = builder.get_object ("liststore_data") as Gtk.ListStore;
liststore_protocols = builder.get_object ("liststore_protocols") as Gtk.ListStore;
liststore_objects = builder.get_object ("liststore_protocol_objects") as Gtk.ListStore;
filechooserbutton_lyx = builder.get_object ("filechooserbutton_lyx") as FileChooserButton;
filechooserbutton_pdflatex = builder.get_object ("filechooserbutton_pdflatex") as FileChooserButton;
fill_liststore_data ();
fill_liststore_protocols ();
fill_liststore_objects ();
filechooserbutton_lyx.set_filename (AppCore.core.lyx_path);
filechooserbutton_pdflatex.set_filename (AppCore.core.pdflatex_path);
}
void fill_liststore_data () {
var data_plugins = AppCore.core.get_data_plugins ();
liststore_data.clear();
TreeIter iter = TreeIter();
foreach (var p in data_plugins.entries) {
foreach (var p in AppCore.core.data_plugins.entries) {
liststore_data.append (out iter);
liststore_data.set (iter, 0, p.value.get_readable_name ());
}
}
void fill_liststore_protocols () {
var protocol_plugins = AppCore.core.get_protocol_plugins ();
liststore_protocols.clear();
void fill_liststore_objects () {
liststore_objects.clear();
TreeIter iter = TreeIter();
foreach (var p in protocol_plugins.entries) {
liststore_protocols.append (out iter);
liststore_protocols.set (iter, 0, p.value.get_readable_name ());
foreach (var p in AppCore.core.object_plugins.entries) {
liststore_objects.append (out iter);
liststore_objects.set (iter, 0, p.value.get_readable_name ());
}
}

View File

@ -7,5 +7,8 @@ namespace LAview.Desktop {
resource = Resource.load (resource_file);
resource._register();
}
public static void terminate () {
}
}
}

View File

@ -1,15 +1,31 @@
namespace LAview.Desktop {
class AppSettings {
//public static GLib.Settings settings;
public class AppSettings {
Settings settings;
public static void init (string[] args) throws Error {
string _pdf_save_path;
public string pdf_save_path {
get { return _pdf_save_path; }
set {
if (settings != null) settings.set_string ("pdf-save-path", value);
_pdf_save_path = value;
}
default = "";
}
public AppSettings () throws Error {
SettingsSchemaSource sss = new SettingsSchemaSource.from_directory (AppDirs.settings_dir, null, false);
//SettingsSchema schema = sss.lookup ("ws.backbone.laview.desktop-"+Config.VERSION_MAJOR.to_string(), false);
if (sss.lookup == null)
throw new FileError.NOENT ("Schema ID not found");
SettingsSchema schema = sss.lookup ("ws.backbone.laview.desktop-"+Config.VERSION_MAJOR.to_string(), false);
if (schema == null) {
stderr.printf ("ID not found.\n");
throw new IOError.NOT_FOUND ("File "+AppDirs.settings_dir+"/gschemas.compiled not found");
}
settings = new Settings.full (schema, null, null);
//settings = new Settings.full (schema, null, null);
_pdf_save_path = settings.get_string("pdf-save-path");
settings.changed["pdf-save-path"].connect (() => {
_pdf_save_path = settings.get_string("pdf-save-path");
});
}
}
}

View File

@ -13,14 +13,15 @@ namespace LAview.Desktop {
public delegate void PostProcessDelegate ();
public SubprocessDialog (Window parent) throws Error {
public SubprocessDialog (Gtk.Application application, Window parent) throws Error {
var builder = new Builder ();
builder.add_from_file (AppDirs.ui_dir + "/laview-desktop.glade");
builder.connect_signals (this);
dialog = builder.get_object ("subprocess_dialog") as Dialog;
dialog.set_transient_for (parent);
dialog.set_modal (true);
dialog.transient_for = parent;
dialog.modal = true;
//dialog.application = application;
dialog.delete_event.connect ((source) => {return true;});
textview_stderrout = builder.get_object ("textview_stderrout") as TextView;
}

View File

@ -4,43 +4,6 @@ namespace LAview.Desktop {
using Gtk;
/**
* Resolve a path beginning with "~"
* Look at: https://github.com/ssokolow/gvrun/blob/master/process_runner.vala#L86
*/
#if (linux || UNIX || __unix__)
static string expand_tilde (string path) {
if (!path.has_prefix ("~")) return path; // Just pass paths through if they don't start with ~
// Split the ~user portion from the path (Use / for the path if not present)
string parts[2];
if (!(Path.DIR_SEPARATOR_S in path)) {
parts = { path.substring(1), Path.DIR_SEPARATOR_S };
} else {
string trimmed = path.substring(1);
parts = trimmed.split(Path.DIR_SEPARATOR_S, 2);
}
warn_if_fail(parts.length == 2);
// Handle both "~" and "~user" forms
string home_path;
if (parts[0] == "") {
home_path = Environment.get_variable("HOME") ?? Environment.get_home_dir();
} else {
unowned Posix.Passwd _pw = Posix.getpwnam(parts[0]);
home_path = (_pw == null) ? null : _pw.pw_dir;
}
// Fail safely if we couldn't look up a homedir
if (home_path == null) {
warning("Could not get homedir for user: %s", parts[0].length > 0 ? parts[0] : "<current user>");
return path;
} else {
return home_path + Path.DIR_SEPARATOR_S + parts[1];
}
}
#endif
/**
* Open document.
* Idea borrowed from: https://github.com/ssokolow/gvrun/blob/master/process_runner.vala
@ -51,7 +14,7 @@ namespace LAview.Desktop {
foreach (var opener in OPENERS) {
if (Environment.find_program_in_path (opener) != null) {
try {
string[] argv = { opener, expand_tilde (path) };
string[] argv = { opener, path };
Process.spawn_async(null, argv, null, SpawnFlags.SEARCH_PATH, null, null);
} catch (SpawnError err) {
var msg = new MessageDialog (parent_window, DialogFlags.MODAL, MessageType.ERROR,

View File

@ -4,7 +4,7 @@ namespace LAview.Desktop {
using Gtk, LAview.Desktop;
namespace CommandlineOptions {
/*namespace CommandlineOptions {
// bool no_startup_progress = false;
// string data_dir = null;
bool show_version = false;
@ -38,35 +38,52 @@ namespace LAview.Desktop {
return entries;
}
}
}*/
void main (string[] args) {
try {
public class LAviewDesktopApp : Gtk.Application {
AppDirs.init (args);
AppSettings.init (args);
AppCore.init (args);
Resources.init (args);
MainWindow main_window;
Gtk.init_with_args (ref args, _("[FILE]"), CommandlineOptions.get_options (), GETTEXT_PACKAGE);
// Internationalization
Intl.bindtextdomain (GETTEXT_PACKAGE, AppDirs.locale_dir);
Intl.bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
var main_window = new MainWindow ();
main_window.show_all ();
Gtk.main ();
} catch (Error e) {
stderr.printf (_("Error: %s\n"), e.message);
stderr.printf (_("Run '%s --help' to see a full list of available command line options.\n"), args[0]);
public LAviewDesktopApp () {
Object(application_id: "ws.backbone.laview.desktop",
flags: ApplicationFlags.FLAGS_NONE);
}
AppDirs.terminate();
~LAviewDesktopApp () {
Resources.terminate ();
AppCore.terminate ();
AppDirs.terminate ();
}
return;
protected override void activate () {
try {
main_window = new MainWindow (this);
main_window.show_all ();
} catch (Error e) {
stderr.printf (_("Error: %s\n"), e.message);
}
}
public static int main (string[] args) {
try {
AppDirs.init (args);
AppCore.init (args);
Resources.init (args);
//Gtk.init_with_args (ref args, _("[FILE]"), CommandlineOptions.get_options (), GETTEXT_PACKAGE);
// Internationalization
Intl.bindtextdomain (GETTEXT_PACKAGE, AppDirs.locale_dir);
Intl.bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
var app = new LAviewDesktopApp ();
return app.run (args);
} catch (Error e) {
stderr.printf (_("Error: %s\n"), e.message);
stderr.printf (_("Run '%s --help' to see a full list of available command line options.\n"), args[0]);
return e.code;
}
}
}
}

8
src/w32hooks.c Normal file
View File

@ -0,0 +1,8 @@
#if defined(_WIN32) || defined(_WIN64)
#include <time.h>
struct tm *localtime_r(const time_t *timep, struct tm *result)
{
localtime_s(result, timep);
return result;
}
#endif

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.18.3 -->
<!-- Generated with glade 3.19.0 -->
<interface domain="laview-desktop-@MAJOR@">
<requires lib="gtk+" version="3.16"/>
<object class="GtkAboutDialog" id="aboutdialog_window">
@ -41,65 +41,83 @@
<object class="GtkActionGroup" id="actiongroup_main">
<child>
<object class="GtkAction" id="action_new">
<property name="icon_name">drive-optical</property>
<property name="stock_id">gtk-new</property>
<property name="always_show_image">True</property>
<signal name="activate" handler="laview_desktop_main_window_action_new_activate" swapped="no"/>
</object>
</child>
<child>
<object class="GtkAction" id="action_open">
<property name="stock_id">gtk-open</property>
<property name="always_show_image">True</property>
<signal name="activate" handler="laview_desktop_main_window_action_open_activate" swapped="no"/>
</object>
</child>
<child>
<object class="GtkAction" id="action_edit_template">
<property name="label" translatable="yes">_Template</property>
<property name="stock_id">gtk-edit</property>
<property name="always_show_image">True</property>
<signal name="activate" handler="laview_desktop_main_window_action_edit_template_activate" swapped="no"/>
</object>
</child>
<child>
<object class="GtkAction" id="action_delete">
<property name="stock_id">gtk-delete</property>
<property name="always_show_image">True</property>
<signal name="activate" handler="laview_desktop_main_window_action_delete_activate" swapped="no"/>
</object>
</child>
<child>
<object class="GtkAction" id="action_prepare">
<property name="stock_id">gtk-properties</property>
<property name="always_show_image">True</property>
<signal name="activate" handler="laview_desktop_main_window_action_compose_activate" swapped="no"/>
</object>
</child>
<child>
<object class="GtkAction" id="action_print">
<property name="stock_id">gtk-print</property>
<property name="always_show_image">True</property>
<signal name="activate" handler="laview_desktop_main_window_action_print_activate" swapped="no"/>
</object>
</child>
<child>
<object class="GtkAction" id="action_ref">
<property name="stock_id">gtk-help</property>
<property name="always_show_image">True</property>
<signal name="activate" handler="laview_desktop_main_window_action_ref_activate" swapped="no"/>
</object>
</child>
<child>
<object class="GtkAction" id="action_preferences">
<property name="stock_id">gtk-preferences</property>
<property name="always_show_image">True</property>
<signal name="activate" handler="laview_desktop_main_window_action_preferences_activate" swapped="no"/>
</object>
</child>
<child>
<object class="GtkAction" id="action_edit_result">
<property name="label" translatable="yes">_Document</property>
<property name="stock_id">gtk-edit</property>
<property name="always_show_image">True</property>
<signal name="activate" handler="laview_desktop_main_window_action_edit_result_activate" swapped="no"/>
</object>
</child>
<child>
<object class="GtkAction" id="action_saveas">
<property name="stock_id">gtk-save</property>
<property name="always_show_image">True</property>
<signal name="activate" handler="laview_desktop_main_window_action_saveas_activate" swapped="no"/>
</object>
</child>
<child>
<object class="GtkAction" id="action_quit">
<property name="stock_id">gtk-quit</property>
<property name="always_show_image">True</property>
<signal name="activate" handler="laview_desktop_main_window_action_quit_activate" swapped="no"/>
</object>
</child>
</object>
<object class="GtkFileFilter" id="filefilter_open">
<patterns>
@ -119,7 +137,7 @@
<column type="gchararray"/>
</columns>
</object>
<object class="GtkListStore" id="liststore_protocols">
<object class="GtkListStore" id="liststore_protocol_objects">
<columns>
<!-- column-name name -->
<column type="gchararray"/>
@ -269,16 +287,16 @@
<property name="can_focus">True</property>
<property name="shadow_type">in</property>
<child>
<object class="GtkTreeView" id="treeview_protocols">
<object class="GtkTreeView" id="treeview_protocol_objects">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="model">liststore_protocols</property>
<property name="model">liststore_protocol_objects</property>
<child internal-child="selection">
<object class="GtkTreeSelection" id="treeview-selection5"/>
</child>
<child>
<object class="GtkTreeViewColumn" id="treeviewcolumn3">
<property name="title" translatable="yes">Protocol Plugins</property>
<property name="title" translatable="yes">Object plugins</property>
<child>
<object class="GtkCellRendererText" id="cellrenderertext2"/>
<attributes>
@ -305,7 +323,7 @@
<object class="GtkLabel" id="label2">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Protocol plugins</property>
<property name="label" translatable="yes">Object plugins</property>
</object>
<packing>
<property name="position">1</property>
@ -332,7 +350,7 @@
</child>
<child>
<object class="GtkTreeViewColumn" id="treeviewcolumn4">
<property name="title" translatable="yes">Data Plugins</property>
<property name="title" translatable="yes">Data plugins</property>
<child>
<object class="GtkCellRendererText" id="cellrenderertext3"/>
<attributes>
@ -382,14 +400,13 @@
<column type="gchararray"/>
</columns>
</object>
<object class="GtkWindow" id="main_window">
<object class="GtkApplicationWindow" id="main_window">
<property name="width_request">640</property>
<property name="height_request">480</property>
<property name="can_focus">False</property>
<property name="margin_top">3</property>
<property name="border_width">4</property>
<property name="title" translatable="yes">LAview Desktop</property>
<signal name="destroy" handler="gtk_main_quit" swapped="no"/>
<child>
<object class="GtkBox" id="main_vbox">
<property name="visible">True</property>
@ -420,6 +437,7 @@
<property name="use_underline">True</property>
<property name="use_stock">True</property>
<property name="always_show_image">True</property>
<accelerator key="n" signal="activate" modifiers="GDK_CONTROL_MASK"/>
</object>
</child>
<child>
@ -432,6 +450,7 @@
<property name="use_underline">True</property>
<property name="use_stock">True</property>
<property name="always_show_image">True</property>
<accelerator key="o" signal="activate" modifiers="GDK_CONTROL_MASK"/>
</object>
</child>
<child>
@ -444,6 +463,7 @@
<property name="use_underline">True</property>
<property name="use_stock">True</property>
<property name="always_show_image">True</property>
<accelerator key="e" signal="activate" modifiers="GDK_CONTROL_MASK"/>
</object>
</child>
<child>
@ -456,6 +476,7 @@
<property name="use_underline">True</property>
<property name="use_stock">True</property>
<property name="always_show_image">True</property>
<accelerator key="Delete" signal="activate"/>
</object>
</child>
<child>
@ -469,12 +490,13 @@
<object class="GtkImageMenuItem" id="menuitem_quit">
<property name="label">gtk-quit</property>
<property name="use_action_appearance">False</property>
<property name="related_action">action_quit</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="use_underline">True</property>
<property name="use_stock">True</property>
<property name="always_show_image">True</property>
<signal name="activate" handler="gtk_main_quit" swapped="no"/>
<accelerator key="q" signal="activate" modifiers="GDK_CONTROL_MASK"/>
</object>
</child>
</object>
@ -503,6 +525,7 @@
<property name="use_underline">True</property>
<property name="use_stock">True</property>
<property name="always_show_image">True</property>
<accelerator key="r" signal="activate" modifiers="GDK_CONTROL_MASK"/>
</object>
</child>
<child>
@ -515,6 +538,7 @@
<property name="use_underline">True</property>
<property name="use_stock">True</property>
<property name="always_show_image">True</property>
<accelerator key="p" signal="activate" modifiers="GDK_CONTROL_MASK"/>
</object>
</child>
<child>
@ -539,6 +563,7 @@
<property name="use_underline">True</property>
<property name="use_stock">True</property>
<property name="always_show_image">True</property>
<accelerator key="s" signal="activate" modifiers="GDK_CONTROL_MASK"/>
</object>
</child>
</object>
@ -593,6 +618,8 @@
<property name="use_underline">True</property>
<property name="use_stock">True</property>
<property name="always_show_image">True</property>
<accelerator key="F1" signal="activate"/>
<accelerator key="h" signal="activate" modifiers="GDK_CONTROL_MASK"/>
</object>
</child>
<child>
@ -625,7 +652,7 @@
<property name="toolbar_style">both</property>
<child>
<object class="GtkToolButton" id="toolbutton_new">
<property name="use_action_appearance">False</property>
<property name="use_action_appearance">True</property>
<property name="related_action">action_new</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
@ -640,7 +667,7 @@
</child>
<child>
<object class="GtkToolButton" id="toolbutton_open">
<property name="use_action_appearance">False</property>
<property name="use_action_appearance">True</property>
<property name="related_action">action_open</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
@ -655,7 +682,7 @@
</child>
<child>
<object class="GtkToolButton" id="toolbutton_edit_template">
<property name="use_action_appearance">False</property>
<property name="use_action_appearance">True</property>
<property name="related_action">action_edit_template</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
@ -671,7 +698,7 @@
</child>
<child>
<object class="GtkToolButton" id="toolbutton_delete">
<property name="use_action_appearance">False</property>
<property name="use_action_appearance">True</property>
<property name="related_action">action_delete</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
@ -696,7 +723,7 @@
</child>
<child>
<object class="GtkToolButton" id="toolbutton_prepare">
<property name="use_action_appearance">False</property>
<property name="use_action_appearance">True</property>
<property name="related_action">action_prepare</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
@ -711,7 +738,7 @@
</child>
<child>
<object class="GtkToolButton" id="toolbutton_print">
<property name="use_action_appearance">False</property>
<property name="use_action_appearance">True</property>
<property name="related_action">action_print</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
@ -726,7 +753,7 @@
</child>
<child>
<object class="GtkToolButton" id="toolbutton_edit_result">
<property name="use_action_appearance">False</property>
<property name="use_action_appearance">True</property>
<property name="related_action">action_edit_result</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
@ -742,7 +769,7 @@
</child>
<child>
<object class="GtkToolButton" id="toolbutton_saveas">
<property name="use_action_appearance">False</property>
<property name="use_action_appearance">True</property>
<property name="related_action">action_saveas</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
@ -767,7 +794,7 @@
</child>
<child>
<object class="GtkToolButton" id="toolbutton_preferences">
<property name="use_action_appearance">False</property>
<property name="use_action_appearance">True</property>
<property name="related_action">action_preferences</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
@ -782,7 +809,7 @@
</child>
<child>
<object class="GtkToolButton" id="toolbutton_ref">
<property name="use_action_appearance">False</property>
<property name="use_action_appearance">True</property>
<property name="related_action">action_ref</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
@ -807,12 +834,13 @@
</child>
<child>
<object class="GtkToolButton" id="toolbutton_quit">
<property name="use_action_appearance">True</property>
<property name="related_action">action_quit</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="tooltip_text" translatable="yes">Close the application</property>
<property name="use_underline">True</property>
<property name="stock_id">gtk-quit</property>
<signal name="clicked" handler="gtk_main_quit" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
@ -982,6 +1010,7 @@
<property name="can_focus">True</property>
<property name="model">liststore_objects</property>
<signal name="cursor-changed" handler="laview_desktop_main_window_objects_cursor_changed" swapped="no"/>
<signal name="row-activated" handler="laview_desktop_main_window_objects_activated" swapped="no"/>
<child internal-child="selection">
<object class="GtkTreeSelection" id="treeview-selection_objects"/>
</child>