cirkuit-0.4.3/000755 001750 001750 00000000000 11677603101 014676 5ustar00scarlettscarlett000000 000000 cirkuit-0.4.3/po/000755 001750 001750 00000000000 11677602522 015322 5ustar00scarlettscarlett000000 000000 cirkuit-0.4.3/po/uk/000755 001750 001750 00000000000 11677602452 015743 5ustar00scarlettscarlett000000 000000 cirkuit-0.4.3/po/uk/cirkuit.po000644 001750 001750 00000040076 11677602452 017764 0ustar00scarlettscarlett000000 000000 # Copyright (C) YEAR This_file_is_part_of_KDE # This file is distributed under the same license as the PACKAGE package. # # Yuri Chornoivan , 2010, 2011. msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2011-11-18 05:01+0100\n" "PO-Revision-Date: 2011-11-17 08:22+0200\n" "Last-Translator: Yuri Chornoivan \n" "Language-Team: Ukrainian \n" "Language: uk\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n" "%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "X-Generator: Lokalize 1.2\n" #: widgets/imageview.cpp:81 msgid "Zoom to fit" msgstr "Підібрати за розмірами" #: widgets/templatechoosedialog.cpp:103 mainwindow.cpp:174 msgid "Template manager" msgstr "Керування шаблонами" #: widgets/templatechoosedialog.cpp:193 msgid "Template name" msgstr "Назва шаблона" #: widgets/templatechoosedialog.cpp:193 msgid "Insert the template name" msgstr "Вставте назву шаблона" #: widgets/templatechoosedialog.cpp:217 msgid "Do you really want to delete the selected template?" msgstr "Ви дійсно хочете вилучити позначений шаблон?" #: widgets/templatechoosedialog.cpp:218 msgid "Confirm deletion" msgstr "Підтвердження вилучення" #: widgets/backendchoosedialog.cpp:26 #, kde-format msgid "" "

%1

%2

See %3 for more " "information
" msgstr "" "

%1

%2

Докладніше про програму можна дізнатися за " "адресою %3.
" #: widgets/backendchoosedialog.cpp:33 msgid "Backend selection" msgstr "Вибір модуля обробки" #: main.cpp:30 msgid "Cirkuit" msgstr "Cirkuit" #: main.cpp:30 msgid "" "An application to generate publication-ready figures. It is a KDE frontend " "for Circuit Macros by J. D. Aplevich, TikZ and Gnuplot.

Visit the Circuit Macros " "and TikZ websites for further " "information." msgstr "" "Програма для створення готових для друку зображень. Ця програма є графічною " "оболонкою KDE до макроса Circuit Macros, автором якого є J. D. Aplevich, " "TikZ та Gnuplot.

Відвідайте вебсайти макроса Circuit та TikZ, щоб дізнатися більше." #: main.cpp:30 msgid "(c) 2011 Matteo Agostinelli" msgstr "© Matteo Agostinelli, 2011" #: main.cpp:31 msgid "Matteo Agostinelli" msgstr "Matteo Agostinelli" #: main.cpp:31 msgid "Maintainer" msgstr "Супровідник" #: main.cpp:36 msgid "Document to open" msgstr "Документ, який слід відкрити" #: generatorthread.cpp:55 msgid "No backend could be selected!" msgstr "Не вдалося вибрати модуль обробки." #: mainwindow.cpp:81 msgid "" "A KDE text-editor component could not be found;\n" "please check your KDE installation." msgstr "" "Не вдалося знайти компонент текстового редактора KDE.\n" "Будь ласка, перевірте, чи належним чином встановлено KDE." #. i18n: file: cirkuit_general_settings.ui:65 #. i18n: ectx: property (title), widget (QGroupBox, groupBox) #: mainwindow.cpp:90 rc.cpp:121 msgid "Preview" msgstr "Перегляд" #: mainwindow.cpp:96 msgid "Log" msgstr "Журнал" #: mainwindow.cpp:158 msgid "Export..." msgstr "Експортувати…" #: mainwindow.cpp:162 msgid "Build preview" msgstr "Зібрати документ попереднього перегляду" #: mainwindow.cpp:168 msgid "Open preview" msgstr "Відкрити попередній перегляд" #: mainwindow.cpp:178 msgid "Show manual" msgstr "Показати підручник" #: mainwindow.cpp:182 msgid "Show examples" msgstr "Показати приклади" #: mainwindow.cpp:190 msgid "Download Examples" msgstr "Звантажити приклади" #: mainwindow.cpp:195 msgid "Upload Example" msgstr "Вивантажити приклад" #: mainwindow.cpp:200 msgid "&Open Example" msgstr "&Відкрити приклад" #: mainwindow.cpp:238 msgid "Open file - Cirkuit" msgstr "Відкриття файла — Cirkuit" #: mainwindow.cpp:281 msgid "Save file - Cirkuit" msgstr "Збереження файла — Cirkuit" #: mainwindow.cpp:313 msgid "Export image - Cirkuit" msgstr "Експортування зображення — Cirkuit" #: mainwindow.cpp:402 #, kde-format msgid "Backend %1 not found" msgstr "Модуля обробки %1 не знайдено" #: mainwindow.cpp:411 msgid "No valid backend selected." msgstr "Не позначено коректного модуля обробки." #: mainwindow.cpp:460 msgid "General" msgstr "Загальне" #: mainwindow.cpp:519 msgid "" "Circuit Macros could not be found on your system. The application will not " "work if the macros are not installed. Do you want to proceed with the " "installation?" msgstr "" "Не вдалося виявити макрос Circuit у вашій системі. Програма не зможе " "нормально працювати, якщо макрос не буде встановлено. Бажаєте перейти до " "встановлення макроса?" #: mainwindow.cpp:519 msgid "Installation needed" msgstr "Потрібне встановлення" #: mainwindow.cpp:524 msgid "Downloading Circuit Macros. Please wait..." msgstr "Звантаження макроса Circuit. Будь ласка, зачекайте…" #: mainwindow.cpp:532 #, kde-format msgid "" "A new version of Circuit Macros (version %1) is available. Do you want to " "upgrade?" msgstr "" "Доступна нова версія макроса Circuit (версія %1). Бажаєте оновити макрос?" #: mainwindow.cpp:532 msgid "Upgrade" msgstr "Оновити" #: mainwindow.cpp:550 msgid "Unable to generate a preview for the current input" msgstr "Не вдалося створити попередній перегляд поточних вхідних даних" #: mainwindow.cpp:577 msgid "" "No working backend has been found. Cirkuit is unable to generate any figure." msgstr "" "Не знайдено працездатного модуля обробки. Cirkuit не зможе створювати " "рисунки." #: mainwindow.cpp:577 msgid "No backends found" msgstr "Не знайдено жодного модуля обробки" #: mainwindow.cpp:610 #, kde-format msgid "%1 manual" msgstr "Підручник з %1" #: mainwindow.cpp:611 #, kde-format msgid "%1 examples" msgstr "Приклади %1" #: mainwindow.cpp:630 msgid "Save the current document before uploading it" msgstr "Збережіть поточний документ, перш ніж його вивантажувати" #: rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Юрій Чорноіван" #: rc.cpp:2 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "yurchor@ukr.net" #. i18n: file: backends/circuitmacros/circuitmacrosbackend.kcfg:18 #. i18n: ectx: label, entry (templateurl), group (CircuitMacrosBackend) #: rc.cpp:5 msgid "The location of the Circuit Macros template." msgstr "Розташування шаблону макроса Circuit Macros" #. i18n: file: backends/circuitmacros/circuitmacrosbackend.kcfg:22 #. i18n: ectx: label, entry (tikztemplateurl), group (CircuitMacrosBackend) #: rc.cpp:8 msgid "The location of the Circuit Macros template with TikZ backend." msgstr "Розташування шаблону макроса Circuit Macros з модулем TikZ." #. i18n: file: backends/circuitmacros/circuitmacrosbackend.kcfg:26 #. i18n: ectx: label, entry (latexargs), group (CircuitMacrosBackend) #. i18n: file: backends/tikz/tikzbackend.kcfg:14 #. i18n: ectx: label, entry (latexargs), group (TikzBackend) #. i18n: file: backends/pstricks/pstricksbackend.kcfg:14 #. i18n: ectx: label, entry (latexargs), group (PstricksBackend) #. i18n: file: cirkuit.kcfg:38 #. i18n: ectx: label, entry (LatexArgs), group (general) #: rc.cpp:11 rc.cpp:47 rc.cpp:54 rc.cpp:106 msgid "The default arguments called in the latex executable" msgstr "" "Типові параметри, що використовуються під час виклику виконуваного файла " "latex" #. i18n: file: backends/circuitmacros/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_template) #. i18n: file: backends/circuitmacros/settings.ui:27 #. i18n: ectx: property (text), widget (QLabel, lbl_tikztemplate) #. i18n: file: backends/gnuplot/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_tikztemplate) #. i18n: file: backends/tikz/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_tikztemplate) #. i18n: file: backends/pstricks/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_pstrickstemplate) #: rc.cpp:16 rc.cpp:19 rc.cpp:38 rc.cpp:41 rc.cpp:58 msgid "Template path:" msgstr "Шлях до шаблонів:" #. i18n: file: backends/circuitmacros/settings.ui:37 #. i18n: ectx: property (text), widget (QLabel, label_4) #: rc.cpp:22 msgid "Pic interpreter" msgstr "Інтерпретатор Pic" #. i18n: file: backends/circuitmacros/settings.ui:45 #. i18n: ectx: property (text), item, widget (KComboBox, kcfg_PicInterpreter) #: rc.cpp:25 msgid "dpic + PSTricks" msgstr "dpic + PSTricks" #. i18n: file: backends/circuitmacros/settings.ui:50 #. i18n: ectx: property (text), item, widget (KComboBox, kcfg_PicInterpreter) #: rc.cpp:28 msgid "dpic + TikZ" msgstr "dpic + TikZ" #. i18n: file: backends/circuitmacros/settings.ui:55 #. i18n: ectx: property (text), item, widget (KComboBox, kcfg_PicInterpreter) #: rc.cpp:31 msgid "gpic" msgstr "gpic" #. i18n: file: backends/gnuplot/gnuplotbackend.kcfg:10 #. i18n: ectx: label, entry (templateurl), group (GnuplotBackend) #: rc.cpp:34 msgid "The location of the Gnuplot template." msgstr "Розташування шаблону Gnuplot" #. i18n: file: backends/tikz/tikzbackend.kcfg:10 #. i18n: ectx: label, entry (templateurl), group (TikzBackend) #: rc.cpp:44 msgid "The location of the TikZ template." msgstr "Розташування шаблону TikZ" #. i18n: file: backends/pstricks/pstricksbackend.kcfg:10 #. i18n: ectx: label, entry (templateurl), group (PstricksBackend) #: rc.cpp:51 msgid "The location of the PSTricks template." msgstr "Розташування шаблону PSTricks" #. i18n: file: widgets/backendchooser.ui:29 #. i18n: ectx: property (text), widget (QLabel, label) #: rc.cpp:61 msgid "Choose the Backend to use:" msgstr "Виберіть модуль обробки:" #. i18n: file: widgets/backendchooser.ui:59 #. i18n: ectx: property (text), widget (QCheckBox, makeDefault) #: rc.cpp:64 msgid "Make this the default backend" msgstr "Зробити цей модуль типовим" #. i18n: file: widgets/templatechooser.ui:17 #. i18n: ectx: property (text), widget (QLabel, label) #: rc.cpp:67 msgid "Backend:" msgstr "Модуль:" #. i18n: file: widgets/templatechooser.ui:48 #. i18n: ectx: property (text), widget (KPushButton, btnAdd) #: rc.cpp:70 msgid "New" msgstr "Створити" #. i18n: file: widgets/templatechooser.ui:55 #. i18n: ectx: property (text), widget (KPushButton, btnEdit) #: rc.cpp:73 msgid "Edit" msgstr "Змінити" #. i18n: file: widgets/templatechooser.ui:62 #. i18n: ectx: property (text), widget (KPushButton, btnRemove) #: rc.cpp:76 msgid "Remove" msgstr "Вилучити" #. i18n: file: widgets/templatechooser.ui:69 #. i18n: ectx: property (text), widget (KPushButton, btnDownload) #: rc.cpp:79 msgid "Download" msgstr "Звантажити" #. i18n: file: widgets/templatechooser.ui:76 #. i18n: ectx: property (text), widget (KPushButton, btnUpload) #: rc.cpp:82 msgid "Upload" msgstr "Вивантажити" #. i18n: file: cirkuit.kcfg:10 #. i18n: ectx: label, entry (DefaultBackend), group (general) #: rc.cpp:85 msgid "Default backend." msgstr "Типовий модуль обробки." #. i18n: file: cirkuit.kcfg:14 #. i18n: ectx: label, entry (AutoSelectBackend), group (general) #. i18n: file: cirkuit_general_settings.ui:52 #. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoSelectBackend) #: rc.cpp:88 rc.cpp:118 msgid "Automatic backend selection" msgstr "Автоматичний вибір модуля обробки" #. i18n: file: cirkuit.kcfg:18 #. i18n: ectx: label, entry (RefreshInterval), group (general) #: rc.cpp:91 msgid "Preview generation refresh timeout." msgstr "Проміжок між оновленнями попереднього перегляду." #. i18n: file: cirkuit.kcfg:22 #. i18n: ectx: label, entry (AutoRefresh), group (general) #: rc.cpp:94 msgid "Enable automatic refresh." msgstr "Увімкнути автоматичне оновлення" #. i18n: file: cirkuit.kcfg:26 #. i18n: ectx: label, entry (RefreshOnSave), group (general) #: rc.cpp:97 msgid "Refresh when document is saved." msgstr "Оновлення під час збереження документа." #. i18n: file: cirkuit.kcfg:30 #. i18n: ectx: label, entry (ZoomToFit), group (general) #: rc.cpp:100 msgid "Automatically zoom the preview to fit the preview widget" msgstr "" "Автоматично змінювати розміри зображення перегляду відповідно до розмірів " "віджета перегляду" #. i18n: file: cirkuit.kcfg:34 #. i18n: ectx: label, entry (ResolutionPpm), group (general) #: rc.cpp:103 msgid "PNG and JPEG resolution." msgstr "Роздільна здатність PNG і JPEG" #. i18n: file: cirkuit_general_settings.ui:14 #. i18n: ectx: property (windowTitle), widget (QWidget, CirkuitGeneralForm) #: rc.cpp:109 msgid "General settings" msgstr "Загальні параметри" #. i18n: file: cirkuit_general_settings.ui:23 #. i18n: ectx: property (title), widget (QGroupBox, groupBackend) #: rc.cpp:112 msgid "Backends" msgstr "Сервери" #. i18n: file: cirkuit_general_settings.ui:29 #. i18n: ectx: property (text), widget (QLabel, label_3) #: rc.cpp:115 msgid "Default backend:" msgstr "Типовий модуль обробки:" #. i18n: file: cirkuit_general_settings.ui:71 #. i18n: ectx: property (text), widget (QLabel, label) #: rc.cpp:124 msgid "Preview refresh interval (sec):" msgstr "Проміжок між оновленнями перегляду (у сек):" #. i18n: file: cirkuit_general_settings.ui:103 #. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoRefresh) #: rc.cpp:127 msgid "Automatic preview generation" msgstr "Автоматичне створення попереднього перегляду" #. i18n: file: cirkuit_general_settings.ui:113 #. i18n: ectx: property (text), widget (QCheckBox, kcfg_RefreshOnSave) #: rc.cpp:130 msgid "Refresh the preview when saving the document" msgstr "Оновлювати зображення після збереження документа" #. i18n: file: cirkuit_general_settings.ui:129 #. i18n: ectx: property (text), widget (QLabel, label_2) #: rc.cpp:133 msgid "PNG and JPEG resolution (DPI):" msgstr "Роздільна здатність PNG і JPEG (у т./д. (DPI)):" #. i18n: file: cirkuitui.rc:5 #. i18n: ectx: Menu (file) #: rc.cpp:136 msgid "&File" msgstr "&Файл" #. i18n: file: cirkuitui.rc:26 #. i18n: ectx: Menu (build) #: rc.cpp:139 msgid "&Preview" msgstr "&Переглянути" #. i18n: file: cirkuitui.rc:33 #. i18n: ectx: Menu (view) #: rc.cpp:142 msgid "&View" msgstr "П&ерегляд" #. i18n: file: cirkuitui.rc:46 #. i18n: ectx: Menu (help) #: rc.cpp:145 msgid "&Help" msgstr "&Довідка" #. i18n: file: cirkuitui.rc:54 #. i18n: ectx: ToolBar (mainToolBar) #: rc.cpp:148 msgid "Main Toolbar" msgstr "Головна панель"cirkuit-0.4.3/po/uk/CMakeLists.txt000644 001750 001750 00000000163 11677602452 020503 0ustar00scarlettscarlett000000 000000 file(GLOB _po_files *.po) GETTEXT_PROCESS_PO_FILES(uk ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} ${_po_files} ) cirkuit-0.4.3/po/cs/000755 001750 001750 00000000000 11677601554 015733 5ustar00scarlettscarlett000000 000000 cirkuit-0.4.3/po/cs/cirkuit.po000644 001750 001750 00000034650 11677601554 017755 0ustar00scarlettscarlett000000 000000 # Copyright (C) YEAR This_file_is_part_of_KDE # This file is distributed under the same license as the PACKAGE package. # Vít Pelčák , 2010, 2011. # msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2011-11-18 05:01+0100\n" "PO-Revision-Date: 2011-10-19 10:26+0200\n" "Last-Translator: Vít Pelčák \n" "Language-Team: Czech \n" "Language: csX-Generator: Lokalize 1.1\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" "X-Generator: Lokalize 1.2\n" #: widgets/imageview.cpp:81 #, fuzzy msgid "Zoom to fit" msgstr "Přizpůsobit velikost" #: widgets/templatechoosedialog.cpp:103 mainwindow.cpp:174 #, fuzzy msgid "Template manager" msgstr "Správce předloh" #: widgets/templatechoosedialog.cpp:193 #, fuzzy msgid "Template name" msgstr "Název předlohy" #: widgets/templatechoosedialog.cpp:193 #, fuzzy msgid "Insert the template name" msgstr "Vložit název předlohy" #: widgets/templatechoosedialog.cpp:217 #, fuzzy msgid "Do you really want to delete the selected template?" msgstr "Opravdu chcete smazat vybranou předlohu?" #: widgets/templatechoosedialog.cpp:218 #, fuzzy msgid "Confirm deletion" msgstr "Potvrdit smazání" #: widgets/backendchoosedialog.cpp:26 #, kde-format msgid "" "

%1

%2

See %3 for more " "information
" msgstr "" "

%1

%2

Podívejte se na %3 " "kvůli dalším informacím
" #: widgets/backendchoosedialog.cpp:33 #, fuzzy #| msgid "Backends" msgid "Backend selection" msgstr "Výběr jádra" #: main.cpp:30 #, fuzzy msgid "Cirkuit" msgstr "Cirkuit" #: main.cpp:30 #, fuzzy msgid "" "An application to generate publication-ready figures. It is a KDE frontend " "for Circuit Macros by J. D. Aplevich, TikZ and Gnuplot.

Visit the Circuit Macros " "and TikZ websites for further " "information." msgstr "" "Program na vytváření obrázků připravených pro publikování. Jde o rozhraní " "KDE pro Circuit Macros od J. D. Apleviche, TikZ a Gnuplotu.

Navštivte " "stránky Circuit " "Macros a TikZ pro další " "informace." #: main.cpp:30 #, fuzzy #| msgid "(c) 2010 Matteo Agostinelli" msgid "(c) 2011 Matteo Agostinelli" msgstr "(c) 2011 Matteo Agostinelli" #: main.cpp:31 msgid "Matteo Agostinelli" msgstr "Matteo Agostinelli" #: main.cpp:31 msgid "Maintainer" msgstr "Správce" #: main.cpp:36 msgid "Document to open" msgstr "Dokument k otevření" #: generatorthread.cpp:55 #, fuzzy msgid "No backend could be selected!" msgstr "Nepodařilo se vybrat žádné jádro" #: mainwindow.cpp:81 msgid "" "A KDE text-editor component could not be found;\n" "please check your KDE installation." msgstr "" "Nepodařilo se nalézt součást textový editor KDE.\n" "Prověřte, prosím, svou instalaci KDE." #. i18n: file: cirkuit_general_settings.ui:65 #. i18n: ectx: property (title), widget (QGroupBox, groupBox) #: mainwindow.cpp:90 rc.cpp:121 msgid "Preview" msgstr "Náhled" #: mainwindow.cpp:96 msgid "Log" msgstr "Záznam" #: mainwindow.cpp:158 msgid "Export..." msgstr "Exportovat..." #: mainwindow.cpp:162 #, fuzzy msgid "Build preview" msgstr "Sestavit náhled" #: mainwindow.cpp:168 #, fuzzy msgid "Open preview" msgstr "Otevřít náhled" #: mainwindow.cpp:178 #, fuzzy msgid "Show manual" msgstr "Ukázat příručku" #: mainwindow.cpp:182 #, fuzzy msgid "Show examples" msgstr "Ukázat příklady" #: mainwindow.cpp:190 #, fuzzy msgid "Download Examples" msgstr "Stáhnout příklady" #: mainwindow.cpp:195 #, fuzzy msgid "Upload Example" msgstr "Nahrát příklad" #: mainwindow.cpp:200 msgid "&Open Example" msgstr "&Otevřít příklad" #: mainwindow.cpp:238 #, fuzzy msgid "Open file - Cirkuit" msgstr "Otevřít soubor - Cirkuit" #: mainwindow.cpp:281 #, fuzzy msgid "Save file - Cirkuit" msgstr "Uložit soubor - Cirkuit" #: mainwindow.cpp:313 #, fuzzy msgid "Export image - Cirkuit" msgstr "Vyvést obrázek - Cirkuit" #: mainwindow.cpp:402 #, fuzzy, kde-format msgid "Backend %1 not found" msgstr "Jádro %1 nenalezeno" #: mainwindow.cpp:411 #, fuzzy msgid "No valid backend selected." msgstr "Není vybráno žádné platné jádro." #: mainwindow.cpp:460 msgid "General" msgstr "Obecné" #: mainwindow.cpp:519 #, fuzzy msgid "" "Circuit Macros could not be found on your system. The application will not " "work if the macros are not installed. Do you want to proceed with the " "installation?" msgstr "" "Makra Circuit (Circuit Macros) se ve vašem systému najít nepodařilo. Program " "nebude pracovat, pokud makra nebudou nainstalována. Chcete pokračovat v " "instalaci?" #: mainwindow.cpp:519 #, fuzzy msgid "Installation needed" msgstr "Instalace je nezbytná" #: mainwindow.cpp:524 #, fuzzy msgid "Downloading Circuit Macros. Please wait..." msgstr "Stahují se Circuit Macros. Počkejte, prosím, ..." #: mainwindow.cpp:532 #, fuzzy, kde-format msgid "" "A new version of Circuit Macros (version %1) is available. Do you want to " "upgrade?" msgstr "" "Je dostupná nová verze Circuit Macros (verze %1). Chcete provést povýšení " "verze?" #: mainwindow.cpp:532 msgid "Upgrade" msgstr "Aktualizovat" #: mainwindow.cpp:550 #, fuzzy msgid "Unable to generate a preview for the current input" msgstr "Pro současný vstup nelze vytvořit náhled" #: mainwindow.cpp:577 #, fuzzy msgid "" "No working backend has been found. Cirkuit is unable to generate any figure." msgstr "" "Nebylo nalezeno žádné pracující jádro. Cirkuit není schopen vytvořit žádný " "obrázek." #: mainwindow.cpp:577 #, fuzzy msgid "No backends found" msgstr "Nenalezena žádná jádra" #: mainwindow.cpp:610 #, fuzzy, kde-format msgid "%1 manual" msgstr "%1 ruční" #: mainwindow.cpp:611 #, fuzzy, kde-format msgid "%1 examples" msgstr "%1 příklady" #: mainwindow.cpp:630 #, fuzzy msgid "Save the current document before uploading it" msgstr "Uložit nynější dokument před jeho nahráním" #: rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Vít Pelčák" #: rc.cpp:2 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "vit@pelcak.org" #. i18n: file: backends/circuitmacros/circuitmacrosbackend.kcfg:18 #. i18n: ectx: label, entry (templateurl), group (CircuitMacrosBackend) #: rc.cpp:5 #, fuzzy msgid "The location of the Circuit Macros template." msgstr "Umístění předlohy Circuit Macros." #. i18n: file: backends/circuitmacros/circuitmacrosbackend.kcfg:22 #. i18n: ectx: label, entry (tikztemplateurl), group (CircuitMacrosBackend) #: rc.cpp:8 #, fuzzy msgid "The location of the Circuit Macros template with TikZ backend." msgstr "Umístění předlohy Circuit Macros s jádrem TikZ." #. i18n: file: backends/circuitmacros/circuitmacrosbackend.kcfg:26 #. i18n: ectx: label, entry (latexargs), group (CircuitMacrosBackend) #. i18n: file: backends/tikz/tikzbackend.kcfg:14 #. i18n: ectx: label, entry (latexargs), group (TikzBackend) #. i18n: file: backends/pstricks/pstricksbackend.kcfg:14 #. i18n: ectx: label, entry (latexargs), group (PstricksBackend) #. i18n: file: cirkuit.kcfg:38 #. i18n: ectx: label, entry (LatexArgs), group (general) #: rc.cpp:11 rc.cpp:47 rc.cpp:54 rc.cpp:106 #, fuzzy msgid "The default arguments called in the latex executable" msgstr "Výchozí argumenty volané v latexovém spustitelném souboru" #. i18n: file: backends/circuitmacros/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_template) #. i18n: file: backends/circuitmacros/settings.ui:27 #. i18n: ectx: property (text), widget (QLabel, lbl_tikztemplate) #. i18n: file: backends/gnuplot/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_tikztemplate) #. i18n: file: backends/tikz/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_tikztemplate) #. i18n: file: backends/pstricks/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_pstrickstemplate) #: rc.cpp:16 rc.cpp:19 rc.cpp:38 rc.cpp:41 rc.cpp:58 #, fuzzy msgid "Template path:" msgstr "Cesta k předloze:" #. i18n: file: backends/circuitmacros/settings.ui:37 #. i18n: ectx: property (text), widget (QLabel, label_4) #: rc.cpp:22 #, fuzzy msgid "Pic interpreter" msgstr "Překladač fotek" #. i18n: file: backends/circuitmacros/settings.ui:45 #. i18n: ectx: property (text), item, widget (KComboBox, kcfg_PicInterpreter) #: rc.cpp:25 #, fuzzy msgid "dpic + PSTricks" msgstr "dpic + PSTricks" #. i18n: file: backends/circuitmacros/settings.ui:50 #. i18n: ectx: property (text), item, widget (KComboBox, kcfg_PicInterpreter) #: rc.cpp:28 #, fuzzy msgid "dpic + TikZ" msgstr "dpic + TikZ" #. i18n: file: backends/circuitmacros/settings.ui:55 #. i18n: ectx: property (text), item, widget (KComboBox, kcfg_PicInterpreter) #: rc.cpp:31 #, fuzzy msgid "gpic" msgstr "gpic" #. i18n: file: backends/gnuplot/gnuplotbackend.kcfg:10 #. i18n: ectx: label, entry (templateurl), group (GnuplotBackend) #: rc.cpp:34 #, fuzzy msgid "The location of the Gnuplot template." msgstr "Umístění předlohy pro Gnuplot." #. i18n: file: backends/tikz/tikzbackend.kcfg:10 #. i18n: ectx: label, entry (templateurl), group (TikzBackend) #: rc.cpp:44 #, fuzzy msgid "The location of the TikZ template." msgstr "Umístění předlohy pro TikZ." #. i18n: file: backends/pstricks/pstricksbackend.kcfg:10 #. i18n: ectx: label, entry (templateurl), group (PstricksBackend) #: rc.cpp:51 #, fuzzy msgid "The location of the PSTricks template." msgstr "Umístění předlohy pro PSTricks." #. i18n: file: widgets/backendchooser.ui:29 #. i18n: ectx: property (text), widget (QLabel, label) #: rc.cpp:61 msgid "Choose the Backend to use:" msgstr "Vybrat podpůrnou vrstvu, která se bude používat:" #. i18n: file: widgets/backendchooser.ui:59 #. i18n: ectx: property (text), widget (QCheckBox, makeDefault) #: rc.cpp:64 msgid "Make this the default backend" msgstr "Nastavit toto jako vychozí podpůdnou vrstvu" #. i18n: file: widgets/templatechooser.ui:17 #. i18n: ectx: property (text), widget (QLabel, label) #: rc.cpp:67 msgid "Backend:" msgstr "Podpůrná vrstva:" #. i18n: file: widgets/templatechooser.ui:48 #. i18n: ectx: property (text), widget (KPushButton, btnAdd) #: rc.cpp:70 msgid "New" msgstr "Nový" #. i18n: file: widgets/templatechooser.ui:55 #. i18n: ectx: property (text), widget (KPushButton, btnEdit) #: rc.cpp:73 msgid "Edit" msgstr "Upravit" #. i18n: file: widgets/templatechooser.ui:62 #. i18n: ectx: property (text), widget (KPushButton, btnRemove) #: rc.cpp:76 msgid "Remove" msgstr "Odstranit" #. i18n: file: widgets/templatechooser.ui:69 #. i18n: ectx: property (text), widget (KPushButton, btnDownload) #: rc.cpp:79 msgid "Download" msgstr "Stáhnout" #. i18n: file: widgets/templatechooser.ui:76 #. i18n: ectx: property (text), widget (KPushButton, btnUpload) #: rc.cpp:82 msgid "Upload" msgstr "Odeslat" #. i18n: file: cirkuit.kcfg:10 #. i18n: ectx: label, entry (DefaultBackend), group (general) #: rc.cpp:85 #, fuzzy msgid "Default backend." msgstr "Výchozí jádro." #. i18n: file: cirkuit.kcfg:14 #. i18n: ectx: label, entry (AutoSelectBackend), group (general) #. i18n: file: cirkuit_general_settings.ui:52 #. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoSelectBackend) #: rc.cpp:88 rc.cpp:118 #, fuzzy msgid "Automatic backend selection" msgstr "Automatický výběr jádra" #. i18n: file: cirkuit.kcfg:18 #. i18n: ectx: label, entry (RefreshInterval), group (general) #: rc.cpp:91 #, fuzzy msgid "Preview generation refresh timeout." msgstr "Přestávka pro obnovu vytvoření náhledu." #. i18n: file: cirkuit.kcfg:22 #. i18n: ectx: label, entry (AutoRefresh), group (general) #: rc.cpp:94 #, fuzzy msgid "Enable automatic refresh." msgstr "Povolit automatickou obnovu." #. i18n: file: cirkuit.kcfg:26 #. i18n: ectx: label, entry (RefreshOnSave), group (general) #: rc.cpp:97 #, fuzzy msgid "Refresh when document is saved." msgstr "Obnovit při uložení dokumentu." #. i18n: file: cirkuit.kcfg:30 #. i18n: ectx: label, entry (ZoomToFit), group (general) #: rc.cpp:100 #, fuzzy msgid "Automatically zoom the preview to fit the preview widget" msgstr "Automaticky zvětšit náhled tak, aby se přizpůsobil oknu s náhledem" #. i18n: file: cirkuit.kcfg:34 #. i18n: ectx: label, entry (ResolutionPpm), group (general) #: rc.cpp:103 #, fuzzy msgid "PNG and JPEG resolution." msgstr "Rozlišení PNG a JPEG." #. i18n: file: cirkuit_general_settings.ui:14 #. i18n: ectx: property (windowTitle), widget (QWidget, CirkuitGeneralForm) #: rc.cpp:109 msgid "General settings" msgstr "Obecná nastavení" #. i18n: file: cirkuit_general_settings.ui:23 #. i18n: ectx: property (title), widget (QGroupBox, groupBackend) #: rc.cpp:112 msgid "Backends" msgstr "Podpůrné vrstvy" #. i18n: file: cirkuit_general_settings.ui:29 #. i18n: ectx: property (text), widget (QLabel, label_3) #: rc.cpp:115 #, fuzzy msgid "Default backend:" msgstr "Výchozí jádro:" #. i18n: file: cirkuit_general_settings.ui:71 #. i18n: ectx: property (text), widget (QLabel, label) #: rc.cpp:124 #, fuzzy msgid "Preview refresh interval (sec):" msgstr "Interval pro obnovu náhledu (s):" #. i18n: file: cirkuit_general_settings.ui:103 #. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoRefresh) #: rc.cpp:127 #, fuzzy msgid "Automatic preview generation" msgstr "Automatické vytvoření náhledu" #. i18n: file: cirkuit_general_settings.ui:113 #. i18n: ectx: property (text), widget (QCheckBox, kcfg_RefreshOnSave) #: rc.cpp:130 #, fuzzy msgid "Refresh the preview when saving the document" msgstr "Obnovit náhled při uložení dokumentu" #. i18n: file: cirkuit_general_settings.ui:129 #. i18n: ectx: property (text), widget (QLabel, label_2) #: rc.cpp:133 #, fuzzy msgid "PNG and JPEG resolution (DPI):" msgstr "Rozlišení PNG a JPEG (DPI):" #. i18n: file: cirkuitui.rc:5 #. i18n: ectx: Menu (file) #: rc.cpp:136 msgid "&File" msgstr "&Soubor" #. i18n: file: cirkuitui.rc:26 #. i18n: ectx: Menu (build) #: rc.cpp:139 msgid "&Preview" msgstr "Náhle&d" #. i18n: file: cirkuitui.rc:33 #. i18n: ectx: Menu (view) #: rc.cpp:142 msgid "&View" msgstr "Po&hled" #. i18n: file: cirkuitui.rc:46 #. i18n: ectx: Menu (help) #: rc.cpp:145 msgid "&Help" msgstr "Nápo&věda" #. i18n: file: cirkuitui.rc:54 #. i18n: ectx: ToolBar (mainToolBar) #: rc.cpp:148 msgid "Main Toolbar" msgstr "Hlavní nástrojová lišta" #, fuzzycirkuit-0.4.3/po/cs/CMakeLists.txt000644 001750 001750 00000000163 11677601554 020473 0ustar00scarlettscarlett000000 000000 file(GLOB _po_files *.po) GETTEXT_PROCESS_PO_FILES(cs ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} ${_po_files} ) cirkuit-0.4.3/po/ug/000755 001750 001750 00000000000 11677602444 015740 5ustar00scarlettscarlett000000 000000 cirkuit-0.4.3/po/ug/cirkuit.po000644 001750 001750 00000027702 11677602444 017762 0ustar00scarlettscarlett000000 000000 # Uyghur translation for cirkuit. # Copyright (C) YEAR This_file_is_part_of_KDE # This file is distributed under the same license as the PACKAGE package. # Sahran , 2011. # msgid "" msgstr "" "Project-Id-Version: cirkuit\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2011-11-18 05:01+0100\n" "PO-Revision-Date: 2011-05-09 19:00+0900\n" "Last-Translator: Sahran \n" "Language-Team: Uyghur Computer Science Association \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" #: widgets/imageview.cpp:81 msgid "Zoom to fit" msgstr "" #: widgets/templatechoosedialog.cpp:103 mainwindow.cpp:174 msgid "Template manager" msgstr "" #: widgets/templatechoosedialog.cpp:193 msgid "Template name" msgstr "" #: widgets/templatechoosedialog.cpp:193 msgid "Insert the template name" msgstr "" #: widgets/templatechoosedialog.cpp:217 msgid "Do you really want to delete the selected template?" msgstr "" #: widgets/templatechoosedialog.cpp:218 msgid "Confirm deletion" msgstr "ئۆچۈرۈش جەزملە" #: widgets/backendchoosedialog.cpp:26 #, kde-format msgid "" "

%1

%2

See %3 for more " "information
" msgstr "" "

%1

%2

تېخىمۇ كوپ ئۆچۈر ئۈچۈن%3 قاراڭ
" #: widgets/backendchoosedialog.cpp:33 msgid "Backend selection" msgstr "" #: main.cpp:30 msgid "Cirkuit" msgstr "" #: main.cpp:30 msgid "" "An application to generate publication-ready figures. It is a KDE frontend " "for Circuit Macros by J. D. Aplevich, TikZ and Gnuplot.

Visit the Circuit Macros " "and TikZ websites for further " "information." msgstr "" #: main.cpp:30 msgid "(c) 2011 Matteo Agostinelli" msgstr "" #: main.cpp:31 msgid "Matteo Agostinelli" msgstr "" #: main.cpp:31 msgid "Maintainer" msgstr "مەسئۇل كىشى" #: main.cpp:36 msgid "Document to open" msgstr "ئاچىدىغان پۈتۈك" #: generatorthread.cpp:55 msgid "No backend could be selected!" msgstr "" #: mainwindow.cpp:81 msgid "" "A KDE text-editor component could not be found;\n" "please check your KDE installation." msgstr "" "ك د ئې(KDE) تەھرىرلىگۈچ بۆلىكى تېپىلمىدى؛\n" " ك د ئې(KDE) نىڭ ئورنىتىلىشىنى تەكشۈرۈڭ." #. i18n: file: cirkuit_general_settings.ui:65 #. i18n: ectx: property (title), widget (QGroupBox, groupBox) #: mainwindow.cpp:90 rc.cpp:121 msgid "Preview" msgstr "ئالدىن كۆزەت" #: mainwindow.cpp:96 msgid "Log" msgstr "خاتىرە" #: mainwindow.cpp:158 msgid "Export..." msgstr "چىقار…" #: mainwindow.cpp:162 msgid "Build preview" msgstr "" #: mainwindow.cpp:168 msgid "Open preview" msgstr "" #: mainwindow.cpp:178 msgid "Show manual" msgstr "" #: mainwindow.cpp:182 msgid "Show examples" msgstr "" #: mainwindow.cpp:190 msgid "Download Examples" msgstr "" #: mainwindow.cpp:195 msgid "Upload Example" msgstr "" #: mainwindow.cpp:200 msgid "&Open Example" msgstr "مىسالنى ئاچ(&O)" #: mainwindow.cpp:238 msgid "Open file - Cirkuit" msgstr "" #: mainwindow.cpp:281 msgid "Save file - Cirkuit" msgstr "" #: mainwindow.cpp:313 msgid "Export image - Cirkuit" msgstr "" #: mainwindow.cpp:402 #, kde-format msgid "Backend %1 not found" msgstr "" #: mainwindow.cpp:411 msgid "No valid backend selected." msgstr "" #: mainwindow.cpp:460 msgid "General" msgstr "ئادەتتىكى" #: mainwindow.cpp:519 msgid "" "Circuit Macros could not be found on your system. The application will not " "work if the macros are not installed. Do you want to proceed with the " "installation?" msgstr "" #: mainwindow.cpp:519 msgid "Installation needed" msgstr "" #: mainwindow.cpp:524 msgid "Downloading Circuit Macros. Please wait..." msgstr "" #: mainwindow.cpp:532 #, kde-format msgid "" "A new version of Circuit Macros (version %1) is available. Do you want to " "upgrade?" msgstr "" #: mainwindow.cpp:532 msgid "Upgrade" msgstr "Upgrade قىل" #: mainwindow.cpp:550 msgid "Unable to generate a preview for the current input" msgstr "" #: mainwindow.cpp:577 msgid "" "No working backend has been found. Cirkuit is unable to generate any figure." msgstr "" #: mainwindow.cpp:577 msgid "No backends found" msgstr "" #: mainwindow.cpp:610 #, kde-format msgid "%1 manual" msgstr "" #: mainwindow.cpp:611 #, kde-format msgid "%1 examples" msgstr "" #: mainwindow.cpp:630 msgid "Save the current document before uploading it" msgstr "" #: rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "ئابدۇقادىر ئابلىز, غەيرەت كەنجى" #: rc.cpp:2 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "sahran.ug@gmail.com, gheyret@gmail.com" #. i18n: file: backends/circuitmacros/circuitmacrosbackend.kcfg:18 #. i18n: ectx: label, entry (templateurl), group (CircuitMacrosBackend) #: rc.cpp:5 msgid "The location of the Circuit Macros template." msgstr "" #. i18n: file: backends/circuitmacros/circuitmacrosbackend.kcfg:22 #. i18n: ectx: label, entry (tikztemplateurl), group (CircuitMacrosBackend) #: rc.cpp:8 msgid "The location of the Circuit Macros template with TikZ backend." msgstr "" #. i18n: file: backends/circuitmacros/circuitmacrosbackend.kcfg:26 #. i18n: ectx: label, entry (latexargs), group (CircuitMacrosBackend) #. i18n: file: backends/tikz/tikzbackend.kcfg:14 #. i18n: ectx: label, entry (latexargs), group (TikzBackend) #. i18n: file: backends/pstricks/pstricksbackend.kcfg:14 #. i18n: ectx: label, entry (latexargs), group (PstricksBackend) #. i18n: file: cirkuit.kcfg:38 #. i18n: ectx: label, entry (LatexArgs), group (general) #: rc.cpp:11 rc.cpp:47 rc.cpp:54 rc.cpp:106 msgid "The default arguments called in the latex executable" msgstr "" #. i18n: file: backends/circuitmacros/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_template) #. i18n: file: backends/circuitmacros/settings.ui:27 #. i18n: ectx: property (text), widget (QLabel, lbl_tikztemplate) #. i18n: file: backends/gnuplot/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_tikztemplate) #. i18n: file: backends/tikz/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_tikztemplate) #. i18n: file: backends/pstricks/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_pstrickstemplate) #: rc.cpp:16 rc.cpp:19 rc.cpp:38 rc.cpp:41 rc.cpp:58 msgid "Template path:" msgstr "" #. i18n: file: backends/circuitmacros/settings.ui:37 #. i18n: ectx: property (text), widget (QLabel, label_4) #: rc.cpp:22 msgid "Pic interpreter" msgstr "" #. i18n: file: backends/circuitmacros/settings.ui:45 #. i18n: ectx: property (text), item, widget (KComboBox, kcfg_PicInterpreter) #: rc.cpp:25 msgid "dpic + PSTricks" msgstr "" #. i18n: file: backends/circuitmacros/settings.ui:50 #. i18n: ectx: property (text), item, widget (KComboBox, kcfg_PicInterpreter) #: rc.cpp:28 msgid "dpic + TikZ" msgstr "" #. i18n: file: backends/circuitmacros/settings.ui:55 #. i18n: ectx: property (text), item, widget (KComboBox, kcfg_PicInterpreter) #: rc.cpp:31 msgid "gpic" msgstr "" #. i18n: file: backends/gnuplot/gnuplotbackend.kcfg:10 #. i18n: ectx: label, entry (templateurl), group (GnuplotBackend) #: rc.cpp:34 msgid "The location of the Gnuplot template." msgstr "" #. i18n: file: backends/tikz/tikzbackend.kcfg:10 #. i18n: ectx: label, entry (templateurl), group (TikzBackend) #: rc.cpp:44 msgid "The location of the TikZ template." msgstr "" #. i18n: file: backends/pstricks/pstricksbackend.kcfg:10 #. i18n: ectx: label, entry (templateurl), group (PstricksBackend) #: rc.cpp:51 msgid "The location of the PSTricks template." msgstr "" #. i18n: file: widgets/backendchooser.ui:29 #. i18n: ectx: property (text), widget (QLabel, label) #: rc.cpp:61 msgid "Choose the Backend to use:" msgstr "" #. i18n: file: widgets/backendchooser.ui:59 #. i18n: ectx: property (text), widget (QCheckBox, makeDefault) #: rc.cpp:64 msgid "Make this the default backend" msgstr "" #. i18n: file: widgets/templatechooser.ui:17 #. i18n: ectx: property (text), widget (QLabel, label) #: rc.cpp:67 msgid "Backend:" msgstr "" #. i18n: file: widgets/templatechooser.ui:48 #. i18n: ectx: property (text), widget (KPushButton, btnAdd) #: rc.cpp:70 msgid "New" msgstr "يېڭى" #. i18n: file: widgets/templatechooser.ui:55 #. i18n: ectx: property (text), widget (KPushButton, btnEdit) #: rc.cpp:73 msgid "Edit" msgstr "تەھرىر" #. i18n: file: widgets/templatechooser.ui:62 #. i18n: ectx: property (text), widget (KPushButton, btnRemove) #: rc.cpp:76 msgid "Remove" msgstr "چىقىرىۋەت" #. i18n: file: widgets/templatechooser.ui:69 #. i18n: ectx: property (text), widget (KPushButton, btnDownload) #: rc.cpp:79 msgid "Download" msgstr "چۈشۈر" #. i18n: file: widgets/templatechooser.ui:76 #. i18n: ectx: property (text), widget (KPushButton, btnUpload) #: rc.cpp:82 msgid "Upload" msgstr "يۈكلە" #. i18n: file: cirkuit.kcfg:10 #. i18n: ectx: label, entry (DefaultBackend), group (general) #: rc.cpp:85 msgid "Default backend." msgstr "" #. i18n: file: cirkuit.kcfg:14 #. i18n: ectx: label, entry (AutoSelectBackend), group (general) #. i18n: file: cirkuit_general_settings.ui:52 #. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoSelectBackend) #: rc.cpp:88 rc.cpp:118 msgid "Automatic backend selection" msgstr "" #. i18n: file: cirkuit.kcfg:18 #. i18n: ectx: label, entry (RefreshInterval), group (general) #: rc.cpp:91 msgid "Preview generation refresh timeout." msgstr "" #. i18n: file: cirkuit.kcfg:22 #. i18n: ectx: label, entry (AutoRefresh), group (general) #: rc.cpp:94 msgid "Enable automatic refresh." msgstr "" #. i18n: file: cirkuit.kcfg:26 #. i18n: ectx: label, entry (RefreshOnSave), group (general) #: rc.cpp:97 msgid "Refresh when document is saved." msgstr "" #. i18n: file: cirkuit.kcfg:30 #. i18n: ectx: label, entry (ZoomToFit), group (general) #: rc.cpp:100 msgid "Automatically zoom the preview to fit the preview widget" msgstr "" #. i18n: file: cirkuit.kcfg:34 #. i18n: ectx: label, entry (ResolutionPpm), group (general) #: rc.cpp:103 msgid "PNG and JPEG resolution." msgstr "" #. i18n: file: cirkuit_general_settings.ui:14 #. i18n: ectx: property (windowTitle), widget (QWidget, CirkuitGeneralForm) #: rc.cpp:109 msgid "General settings" msgstr "ئادەتتىكى تەڭشەك" #. i18n: file: cirkuit_general_settings.ui:23 #. i18n: ectx: property (title), widget (QGroupBox, groupBackend) #: rc.cpp:112 msgid "Backends" msgstr "" #. i18n: file: cirkuit_general_settings.ui:29 #. i18n: ectx: property (text), widget (QLabel, label_3) #: rc.cpp:115 msgid "Default backend:" msgstr "" #. i18n: file: cirkuit_general_settings.ui:71 #. i18n: ectx: property (text), widget (QLabel, label) #: rc.cpp:124 msgid "Preview refresh interval (sec):" msgstr "" #. i18n: file: cirkuit_general_settings.ui:103 #. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoRefresh) #: rc.cpp:127 msgid "Automatic preview generation" msgstr "" #. i18n: file: cirkuit_general_settings.ui:113 #. i18n: ectx: property (text), widget (QCheckBox, kcfg_RefreshOnSave) #: rc.cpp:130 msgid "Refresh the preview when saving the document" msgstr "" #. i18n: file: cirkuit_general_settings.ui:129 #. i18n: ectx: property (text), widget (QLabel, label_2) #: rc.cpp:133 msgid "PNG and JPEG resolution (DPI):" msgstr "" #. i18n: file: cirkuitui.rc:5 #. i18n: ectx: Menu (file) #: rc.cpp:136 msgid "&File" msgstr "ھۆججەت(&F)" #. i18n: file: cirkuitui.rc:26 #. i18n: ectx: Menu (build) #: rc.cpp:139 msgid "&Preview" msgstr "ئالدىن كۆزەت(&P)" #. i18n: file: cirkuitui.rc:33 #. i18n: ectx: Menu (view) #: rc.cpp:142 msgid "&View" msgstr "كۆرۈنۈش(&V)" #. i18n: file: cirkuitui.rc:46 #. i18n: ectx: Menu (help) #: rc.cpp:145 msgid "&Help" msgstr "ياردەم(&H)" #. i18n: file: cirkuitui.rc:54 #. i18n: ectx: ToolBar (mainToolBar) #: rc.cpp:148 msgid "Main Toolbar" msgstr "ئاساسىي قورال بالداق"cirkuit-0.4.3/po/ug/CMakeLists.txt000644 001750 001750 00000000163 11677602444 020500 0ustar00scarlettscarlett000000 000000 file(GLOB _po_files *.po) GETTEXT_PROCESS_PO_FILES(ug ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} ${_po_files} ) cirkuit-0.4.3/po/sv/000755 001750 001750 00000000000 11677602404 015751 5ustar00scarlettscarlett000000 000000 cirkuit-0.4.3/po/sv/cirkuit.po000644 001750 001750 00000033424 11677602404 017771 0ustar00scarlettscarlett000000 000000 # Copyright (C) YEAR This_file_is_part_of_KDE # This file is distributed under the same license as the PACKAGE package. # # Stefan Asserhall , 2010, 2011. msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2011-11-18 05:01+0100\n" "PO-Revision-Date: 2011-11-17 18:20+0100\n" "Last-Translator: Stefan Asserhall \n" "Language-Team: Swedish \n" "Language: svX-Generator: Lokalize 1.1\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Lokalize 1.2\n" #: widgets/imageview.cpp:81 msgid "Zoom to fit" msgstr "Anpassa" #: widgets/templatechoosedialog.cpp:103 mainwindow.cpp:174 msgid "Template manager" msgstr "Mallhantering" #: widgets/templatechoosedialog.cpp:193 msgid "Template name" msgstr "Mallnamn" #: widgets/templatechoosedialog.cpp:193 msgid "Insert the template name" msgstr "Infoga mallnamnet" #: widgets/templatechoosedialog.cpp:217 msgid "Do you really want to delete the selected template?" msgstr "Vill du verkligen ta bort markerad mall?" #: widgets/templatechoosedialog.cpp:218 msgid "Confirm deletion" msgstr "Bekräfta borttagning" #: widgets/backendchoosedialog.cpp:26 #, kde-format msgid "" "

%1

%2

See %3 for more " "information
" msgstr "" "

%1

%2

Se %3 för mer " "information
" #: widgets/backendchoosedialog.cpp:33 msgid "Backend selection" msgstr "Gränssnittsval" #: main.cpp:30 msgid "Cirkuit" msgstr "Cirkuit" #: main.cpp:30 msgid "" "An application to generate publication-ready figures. It is a KDE frontend " "for Circuit Macros by J. D. Aplevich, TikZ and Gnuplot.

Visit the Circuit Macros " "and TikZ websites for further " "information." msgstr "" "Ett program för att skapa publiceringsklara figurer. Det är ett KDE-" "gränssnitt för Circuit Macros av J. D. Aplevich, TikZ och Gnuplot.

Besök " "webbplatserna Circuit Macros och TikZ för ytterligare information." #: main.cpp:30 msgid "(c) 2011 Matteo Agostinelli" msgstr "© 2011 Matteo Agostinelli" #: main.cpp:31 msgid "Matteo Agostinelli" msgstr "Matteo Agostinelli" #: main.cpp:31 msgid "Maintainer" msgstr "Underhåll" #: main.cpp:36 msgid "Document to open" msgstr "Dokument att öppna" #: generatorthread.cpp:55 msgid "No backend could be selected!" msgstr "Inget gränssnitt kunde väljas." #: mainwindow.cpp:81 msgid "" "A KDE text-editor component could not be found;\n" "please check your KDE installation." msgstr "" "En KDE-texteditorkomponent kunde inte hittas.\n" "Kontrollera installationen av KDE." #. i18n: file: cirkuit_general_settings.ui:65 #. i18n: ectx: property (title), widget (QGroupBox, groupBox) #: mainwindow.cpp:90 rc.cpp:121 msgid "Preview" msgstr "Förhandsgranskning" #: mainwindow.cpp:96 msgid "Log" msgstr "Logg" #: mainwindow.cpp:158 msgid "Export..." msgstr "Exportera..." #: mainwindow.cpp:162 msgid "Build preview" msgstr "Skapa förhandsgranskning" #: mainwindow.cpp:168 msgid "Open preview" msgstr "Öppna förhandsgranskning" #: mainwindow.cpp:178 msgid "Show manual" msgstr "Visa handbok" #: mainwindow.cpp:182 msgid "Show examples" msgstr "Visa exempel" #: mainwindow.cpp:190 msgid "Download Examples" msgstr "Ladda ner exempel" #: mainwindow.cpp:195 msgid "Upload Example" msgstr "Ladda upp exempel" #: mainwindow.cpp:200 msgid "&Open Example" msgstr "Ö&ppna exempel" #: mainwindow.cpp:238 msgid "Open file - Cirkuit" msgstr "Öppna fil - Cirkuit" #: mainwindow.cpp:281 msgid "Save file - Cirkuit" msgstr "Spara fil - Cirkuit" #: mainwindow.cpp:313 msgid "Export image - Cirkuit" msgstr "Exportera bild - Cirkuit" #: mainwindow.cpp:402 #, kde-format msgid "Backend %1 not found" msgstr "Gränssnitt %1 hittades inte" #: mainwindow.cpp:411 msgid "No valid backend selected." msgstr "Inget giltigt gränssnitt valt." #: mainwindow.cpp:460 msgid "General" msgstr "Allmänt" #: mainwindow.cpp:519 msgid "" "Circuit Macros could not be found on your system. The application will not " "work if the macros are not installed. Do you want to proceed with the " "installation?" msgstr "" "Circuit Macros kunde inte hittas på systemet. Programmet fungerar inte om " "inte makrona är installerade. Vill du fortsätta med att installera dem?" #: mainwindow.cpp:519 msgid "Installation needed" msgstr "Installation nödvändig" #: mainwindow.cpp:524 msgid "Downloading Circuit Macros. Please wait..." msgstr "Laddar ner Circuit Macros. Vänta ..." #: mainwindow.cpp:532 #, kde-format msgid "" "A new version of Circuit Macros (version %1) is available. Do you want to " "upgrade?" msgstr "" "En ny version av Circuit Macros (version %1) är tillgänglig. Vill du " "uppgradera till den?" #: mainwindow.cpp:532 msgid "Upgrade" msgstr "Uppgradera" #: mainwindow.cpp:550 msgid "Unable to generate a preview for the current input" msgstr "Kan inte skapa förhandsgranskning av nuvarande indata" #: mainwindow.cpp:577 msgid "" "No working backend has been found. Cirkuit is unable to generate any figure." msgstr "" "Inget fungerande gränssnitt har hittats. Cirkuit kan inte skapa någon figur." #: mainwindow.cpp:577 msgid "No backends found" msgstr "Inga gränssnitt hittades" #: mainwindow.cpp:610 #, kde-format msgid "%1 manual" msgstr "Handbok %1" #: mainwindow.cpp:611 #, kde-format msgid "%1 examples" msgstr "Exempel %1" #: mainwindow.cpp:630 msgid "Save the current document before uploading it" msgstr "Spara nuvarande dokument innan det laddas upp" #: rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Stefan Asserhäll" #: rc.cpp:2 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "stefan.asserhall@comhem.se" #. i18n: file: backends/circuitmacros/circuitmacrosbackend.kcfg:18 #. i18n: ectx: label, entry (templateurl), group (CircuitMacrosBackend) #: rc.cpp:5 msgid "The location of the Circuit Macros template." msgstr "Platsen för Circuit Macros-mallen." #. i18n: file: backends/circuitmacros/circuitmacrosbackend.kcfg:22 #. i18n: ectx: label, entry (tikztemplateurl), group (CircuitMacrosBackend) #: rc.cpp:8 msgid "The location of the Circuit Macros template with TikZ backend." msgstr "Platsen för Circuit Macros-mallen. med TikZ-gränssnitt." #. i18n: file: backends/circuitmacros/circuitmacrosbackend.kcfg:26 #. i18n: ectx: label, entry (latexargs), group (CircuitMacrosBackend) #. i18n: file: backends/tikz/tikzbackend.kcfg:14 #. i18n: ectx: label, entry (latexargs), group (TikzBackend) #. i18n: file: backends/pstricks/pstricksbackend.kcfg:14 #. i18n: ectx: label, entry (latexargs), group (PstricksBackend) #. i18n: file: cirkuit.kcfg:38 #. i18n: ectx: label, entry (LatexArgs), group (general) #: rc.cpp:11 rc.cpp:47 rc.cpp:54 rc.cpp:106 msgid "The default arguments called in the latex executable" msgstr "Standardargument anropade i det körbara Latex-programmet" #. i18n: file: backends/circuitmacros/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_template) #. i18n: file: backends/circuitmacros/settings.ui:27 #. i18n: ectx: property (text), widget (QLabel, lbl_tikztemplate) #. i18n: file: backends/gnuplot/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_tikztemplate) #. i18n: file: backends/tikz/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_tikztemplate) #. i18n: file: backends/pstricks/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_pstrickstemplate) #: rc.cpp:16 rc.cpp:19 rc.cpp:38 rc.cpp:41 rc.cpp:58 msgid "Template path:" msgstr "Mallsökväg:" #. i18n: file: backends/circuitmacros/settings.ui:37 #. i18n: ectx: property (text), widget (QLabel, label_4) #: rc.cpp:22 msgid "Pic interpreter" msgstr "Pic-tolk" #. i18n: file: backends/circuitmacros/settings.ui:45 #. i18n: ectx: property (text), item, widget (KComboBox, kcfg_PicInterpreter) #: rc.cpp:25 msgid "dpic + PSTricks" msgstr "dpic + PSTricks" #. i18n: file: backends/circuitmacros/settings.ui:50 #. i18n: ectx: property (text), item, widget (KComboBox, kcfg_PicInterpreter) #: rc.cpp:28 msgid "dpic + TikZ" msgstr "dpic + TikZ" #. i18n: file: backends/circuitmacros/settings.ui:55 #. i18n: ectx: property (text), item, widget (KComboBox, kcfg_PicInterpreter) #: rc.cpp:31 msgid "gpic" msgstr "gpic" #. i18n: file: backends/gnuplot/gnuplotbackend.kcfg:10 #. i18n: ectx: label, entry (templateurl), group (GnuplotBackend) #: rc.cpp:34 msgid "The location of the Gnuplot template." msgstr "Platsen för Gnuplot-mallen." #. i18n: file: backends/tikz/tikzbackend.kcfg:10 #. i18n: ectx: label, entry (templateurl), group (TikzBackend) #: rc.cpp:44 msgid "The location of the TikZ template." msgstr "Platsen för TikZ-mallen." #. i18n: file: backends/pstricks/pstricksbackend.kcfg:10 #. i18n: ectx: label, entry (templateurl), group (PstricksBackend) #: rc.cpp:51 msgid "The location of the PSTricks template." msgstr "Platsen för PSTricks-mallen." #. i18n: file: widgets/backendchooser.ui:29 #. i18n: ectx: property (text), widget (QLabel, label) #: rc.cpp:61 msgid "Choose the Backend to use:" msgstr "Välj gränssnitt att använda:" #. i18n: file: widgets/backendchooser.ui:59 #. i18n: ectx: property (text), widget (QCheckBox, makeDefault) #: rc.cpp:64 msgid "Make this the default backend" msgstr "Gör detta till standardgränssnitt" #. i18n: file: widgets/templatechooser.ui:17 #. i18n: ectx: property (text), widget (QLabel, label) #: rc.cpp:67 msgid "Backend:" msgstr "Gränssnitt:" #. i18n: file: widgets/templatechooser.ui:48 #. i18n: ectx: property (text), widget (KPushButton, btnAdd) #: rc.cpp:70 msgid "New" msgstr "Ny" #. i18n: file: widgets/templatechooser.ui:55 #. i18n: ectx: property (text), widget (KPushButton, btnEdit) #: rc.cpp:73 msgid "Edit" msgstr "Redigera" #. i18n: file: widgets/templatechooser.ui:62 #. i18n: ectx: property (text), widget (KPushButton, btnRemove) #: rc.cpp:76 msgid "Remove" msgstr "Ta bort" #. i18n: file: widgets/templatechooser.ui:69 #. i18n: ectx: property (text), widget (KPushButton, btnDownload) #: rc.cpp:79 msgid "Download" msgstr "Ladda ner" #. i18n: file: widgets/templatechooser.ui:76 #. i18n: ectx: property (text), widget (KPushButton, btnUpload) #: rc.cpp:82 msgid "Upload" msgstr "Ladda upp" #. i18n: file: cirkuit.kcfg:10 #. i18n: ectx: label, entry (DefaultBackend), group (general) #: rc.cpp:85 msgid "Default backend." msgstr "Standardgränssnitt." #. i18n: file: cirkuit.kcfg:14 #. i18n: ectx: label, entry (AutoSelectBackend), group (general) #. i18n: file: cirkuit_general_settings.ui:52 #. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoSelectBackend) #: rc.cpp:88 rc.cpp:118 msgid "Automatic backend selection" msgstr "Automatiskt gränssnittsval." #. i18n: file: cirkuit.kcfg:18 #. i18n: ectx: label, entry (RefreshInterval), group (general) #: rc.cpp:91 msgid "Preview generation refresh timeout." msgstr "Tidsgräns för uppdatering när förhandsgranskning skapas." #. i18n: file: cirkuit.kcfg:22 #. i18n: ectx: label, entry (AutoRefresh), group (general) #: rc.cpp:94 msgid "Enable automatic refresh." msgstr "Aktivera automatisk uppdatering." #. i18n: file: cirkuit.kcfg:26 #. i18n: ectx: label, entry (RefreshOnSave), group (general) #: rc.cpp:97 msgid "Refresh when document is saved." msgstr "Uppdatera när dokument sparas." #. i18n: file: cirkuit.kcfg:30 #. i18n: ectx: label, entry (ZoomToFit), group (general) #: rc.cpp:100 msgid "Automatically zoom the preview to fit the preview widget" msgstr "Zooma automatiskt förhandsgranskning att passa i grafisk komponent" #. i18n: file: cirkuit.kcfg:34 #. i18n: ectx: label, entry (ResolutionPpm), group (general) #: rc.cpp:103 msgid "PNG and JPEG resolution." msgstr "Upplösning för PNG och JPEG." #. i18n: file: cirkuit_general_settings.ui:14 #. i18n: ectx: property (windowTitle), widget (QWidget, CirkuitGeneralForm) #: rc.cpp:109 msgid "General settings" msgstr "Allmänna inställningar" #. i18n: file: cirkuit_general_settings.ui:23 #. i18n: ectx: property (title), widget (QGroupBox, groupBackend) #: rc.cpp:112 msgid "Backends" msgstr "Gränssnitt" #. i18n: file: cirkuit_general_settings.ui:29 #. i18n: ectx: property (text), widget (QLabel, label_3) #: rc.cpp:115 msgid "Default backend:" msgstr "Standardgränssnitt:" #. i18n: file: cirkuit_general_settings.ui:71 #. i18n: ectx: property (text), widget (QLabel, label) #: rc.cpp:124 msgid "Preview refresh interval (sec):" msgstr "Uppdateringsintervall för förhandsgranskning (sek):" #. i18n: file: cirkuit_general_settings.ui:103 #. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoRefresh) #: rc.cpp:127 msgid "Automatic preview generation" msgstr "Skapa förhandsgranskning automatiskt" #. i18n: file: cirkuit_general_settings.ui:113 #. i18n: ectx: property (text), widget (QCheckBox, kcfg_RefreshOnSave) #: rc.cpp:130 msgid "Refresh the preview when saving the document" msgstr "Uppdatera förhandsgranskning när dokumentet sparas" #. i18n: file: cirkuit_general_settings.ui:129 #. i18n: ectx: property (text), widget (QLabel, label_2) #: rc.cpp:133 msgid "PNG and JPEG resolution (DPI):" msgstr "Upplösning för PNG och JPEG (i punkter/tum):" #. i18n: file: cirkuitui.rc:5 #. i18n: ectx: Menu (file) #: rc.cpp:136 msgid "&File" msgstr "&Arkiv" #. i18n: file: cirkuitui.rc:26 #. i18n: ectx: Menu (build) #: rc.cpp:139 msgid "&Preview" msgstr "&Förhandsgranskning" #. i18n: file: cirkuitui.rc:33 #. i18n: ectx: Menu (view) #: rc.cpp:142 msgid "&View" msgstr "&Visa" #. i18n: file: cirkuitui.rc:46 #. i18n: ectx: Menu (help) #: rc.cpp:145 msgid "&Help" msgstr "&Hjälp" #. i18n: file: cirkuitui.rc:54 #. i18n: ectx: ToolBar (mainToolBar) #: rc.cpp:148 msgid "Main Toolbar" msgstr "Huvudverktygsrad"cirkuit-0.4.3/po/sv/CMakeLists.txt000644 001750 001750 00000000163 11677602404 020511 0ustar00scarlettscarlett000000 000000 file(GLOB _po_files *.po) GETTEXT_PROCESS_PO_FILES(sv ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} ${_po_files} ) cirkuit-0.4.3/po/pt_BR/000755 001750 001750 00000000000 11677602304 016326 5ustar00scarlettscarlett000000 000000 cirkuit-0.4.3/po/pt_BR/cirkuit.po000644 001750 001750 00000034322 11677602304 020344 0ustar00scarlettscarlett000000 000000 # Tradução do cirkuit.po para Brazilian Portuguese # Copyright (C) YEAR This_file_is_part_of_KDE # This file is distributed under the same license as the PACKAGE package. # # André Marcelo Alvarenga , 2010, 2011. # Aracele Torres , 2010. # Marcus Gama , 2011. msgid "" msgstr "" "Project-Id-Version: cirkuit\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2011-11-18 05:01+0100\n" "PO-Revision-Date: 2011-11-17 20:27-0300\n" "Last-Translator: Marcus Gama \n" "Language-Team: Brazilian Portuguese \n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Lokalize 1.2\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #: widgets/imageview.cpp:81 msgid "Zoom to fit" msgstr "Zoom para ajustar" #: widgets/templatechoosedialog.cpp:103 mainwindow.cpp:174 msgid "Template manager" msgstr "Gerenciador de modelos" #: widgets/templatechoosedialog.cpp:193 msgid "Template name" msgstr "Nome do modelo" #: widgets/templatechoosedialog.cpp:193 msgid "Insert the template name" msgstr "Insira o nome do modelo" #: widgets/templatechoosedialog.cpp:217 msgid "Do you really want to delete the selected template?" msgstr "Deseja realmente excluir o modelo selecionado?" #: widgets/templatechoosedialog.cpp:218 msgid "Confirm deletion" msgstr "Confirmar exclusão" #: widgets/backendchoosedialog.cpp:26 #, kde-format msgid "" "

%1

%2

See %3 for more " "information
" msgstr "" "

%1

%2

Veja em %3 para mais " "informações
" #: widgets/backendchoosedialog.cpp:33 msgid "Backend selection" msgstr "Seleção de infraestrutura" #: main.cpp:30 msgid "Cirkuit" msgstr "Cirkuit" #: main.cpp:30 msgid "" "An application to generate publication-ready figures. It is a KDE frontend " "for Circuit Macros by J. D. Aplevich, TikZ and Gnuplot.

Visit the Circuit Macros " "and TikZ websites for further " "information." msgstr "" "Um aplicativo para gerar figuras prontas para publicação. É uma interface do " "Circuit Macros para o KDE de J. D. Aplevich, TikZ e Gnuplot.

Visite as " "páginas Web do Circuit Macros e do TikZ para obter mais informações." #: main.cpp:30 msgid "(c) 2011 Matteo Agostinelli" msgstr "(c) 2011 Matteo Agostinelli" #: main.cpp:31 msgid "Matteo Agostinelli" msgstr "Matteo Agostinelli" #: main.cpp:31 msgid "Maintainer" msgstr "Mantenedor" #: main.cpp:36 msgid "Document to open" msgstr "Documento a ser aberto" #: generatorthread.cpp:55 msgid "No backend could be selected!" msgstr "Nenhuma infraestrutura pôde ser selecionada!" #: mainwindow.cpp:81 msgid "" "A KDE text-editor component could not be found;\n" "please check your KDE installation." msgstr "" "Não foi possível encontrar um componente de edição de texto para o KDE.\n" "Verifique a sua instalação do KDE." #. i18n: file: cirkuit_general_settings.ui:65 #. i18n: ectx: property (title), widget (QGroupBox, groupBox) #: mainwindow.cpp:90 rc.cpp:121 msgid "Preview" msgstr "Visualização" #: mainwindow.cpp:96 msgid "Log" msgstr "Registro" #: mainwindow.cpp:158 msgid "Export..." msgstr "Exportar..." #: mainwindow.cpp:162 msgid "Build preview" msgstr "Criar a visualização" #: mainwindow.cpp:168 msgid "Open preview" msgstr "Abrir visualização" #: mainwindow.cpp:178 msgid "Show manual" msgstr "Mostrar o manual" #: mainwindow.cpp:182 msgid "Show examples" msgstr "Mostrar exemplos" #: mainwindow.cpp:190 msgid "Download Examples" msgstr "Baixar exemplos" #: mainwindow.cpp:195 msgid "Upload Example" msgstr "Enviar exemplo" #: mainwindow.cpp:200 msgid "&Open Example" msgstr "&Abrir exemplo" #: mainwindow.cpp:238 msgid "Open file - Cirkuit" msgstr "Abrir arquivo - Cirkuit" #: mainwindow.cpp:281 msgid "Save file - Cirkuit" msgstr "Salvar arquivo - Cirkuit" #: mainwindow.cpp:313 msgid "Export image - Cirkuit" msgstr "Exportar imagem - Cirkuit" #: mainwindow.cpp:402 #, kde-format msgid "Backend %1 not found" msgstr "A infraestrutura %1 não foi encontrada" #: mainwindow.cpp:411 msgid "No valid backend selected." msgstr "Nenhuma infraestrutura válida selecionada." #: mainwindow.cpp:460 msgid "General" msgstr "Geral" #: mainwindow.cpp:519 msgid "" "Circuit Macros could not be found on your system. The application will not " "work if the macros are not installed. Do you want to proceed with the " "installation?" msgstr "" "Não foi possível encontrar o Circuit Macros no seu sistema. O aplicativo não " "funcionará se as macros não forem instaladas. Deseja continuar com a " "instalação?" #: mainwindow.cpp:519 msgid "Installation needed" msgstr "Instalação necessária" #: mainwindow.cpp:524 msgid "Downloading Circuit Macros. Please wait..." msgstr "Baixando o Circuit Macros. Por favor, aguarde..." #: mainwindow.cpp:532 #, kde-format msgid "" "A new version of Circuit Macros (version %1) is available. Do you want to " "upgrade?" msgstr "" "Está disponível uma nova versão do Circuit Macros (versão %1). Deseja " "atualizá-la?" #: mainwindow.cpp:532 msgid "Upgrade" msgstr "Atualizar" #: mainwindow.cpp:550 msgid "Unable to generate a preview for the current input" msgstr "" "Não foi possível gerar uma visualização para os dados de entrada atuais" #: mainwindow.cpp:577 msgid "" "No working backend has been found. Cirkuit is unable to generate any figure." msgstr "" "Não foi encontrada uma infraestrutura funcional. O Cirkuit não consegue " "gerar nenhuma imagem." #: mainwindow.cpp:577 msgid "No backends found" msgstr "Nenhuma infraestrutura encontrada" #: mainwindow.cpp:610 #, kde-format msgid "%1 manual" msgstr "Manual do %1" #: mainwindow.cpp:611 #, kde-format msgid "%1 examples" msgstr "Exemplos do %1" #: mainwindow.cpp:630 msgid "Save the current document before uploading it" msgstr "Salvar o documento atual antes de enviá-lo" #: rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "André Marcelo Alvarenga" #: rc.cpp:2 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "andrealvarenga@gmx.net" #. i18n: file: backends/circuitmacros/circuitmacrosbackend.kcfg:18 #. i18n: ectx: label, entry (templateurl), group (CircuitMacrosBackend) #: rc.cpp:5 msgid "The location of the Circuit Macros template." msgstr "A localização do modelo do Circuit Macros." #. i18n: file: backends/circuitmacros/circuitmacrosbackend.kcfg:22 #. i18n: ectx: label, entry (tikztemplateurl), group (CircuitMacrosBackend) #: rc.cpp:8 msgid "The location of the Circuit Macros template with TikZ backend." msgstr "" "A localização do modelo do Circuit Macros com a infraestrutura do TikZ." #. i18n: file: backends/circuitmacros/circuitmacrosbackend.kcfg:26 #. i18n: ectx: label, entry (latexargs), group (CircuitMacrosBackend) #. i18n: file: backends/tikz/tikzbackend.kcfg:14 #. i18n: ectx: label, entry (latexargs), group (TikzBackend) #. i18n: file: backends/pstricks/pstricksbackend.kcfg:14 #. i18n: ectx: label, entry (latexargs), group (PstricksBackend) #. i18n: file: cirkuit.kcfg:38 #. i18n: ectx: label, entry (LatexArgs), group (general) #: rc.cpp:11 rc.cpp:47 rc.cpp:54 rc.cpp:106 msgid "The default arguments called in the latex executable" msgstr "Os argumentos predefinidos carregados no executável latex" #. i18n: file: backends/circuitmacros/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_template) #. i18n: file: backends/circuitmacros/settings.ui:27 #. i18n: ectx: property (text), widget (QLabel, lbl_tikztemplate) #. i18n: file: backends/gnuplot/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_tikztemplate) #. i18n: file: backends/tikz/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_tikztemplate) #. i18n: file: backends/pstricks/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_pstrickstemplate) #: rc.cpp:16 rc.cpp:19 rc.cpp:38 rc.cpp:41 rc.cpp:58 msgid "Template path:" msgstr "Caminho do modelo:" #. i18n: file: backends/circuitmacros/settings.ui:37 #. i18n: ectx: property (text), widget (QLabel, label_4) #: rc.cpp:22 msgid "Pic interpreter" msgstr "Interpretador pic" #. i18n: file: backends/circuitmacros/settings.ui:45 #. i18n: ectx: property (text), item, widget (KComboBox, kcfg_PicInterpreter) #: rc.cpp:25 msgid "dpic + PSTricks" msgstr "dpic + PSTricks" #. i18n: file: backends/circuitmacros/settings.ui:50 #. i18n: ectx: property (text), item, widget (KComboBox, kcfg_PicInterpreter) #: rc.cpp:28 msgid "dpic + TikZ" msgstr "dpic + TikZ" #. i18n: file: backends/circuitmacros/settings.ui:55 #. i18n: ectx: property (text), item, widget (KComboBox, kcfg_PicInterpreter) #: rc.cpp:31 msgid "gpic" msgstr "gpic" #. i18n: file: backends/gnuplot/gnuplotbackend.kcfg:10 #. i18n: ectx: label, entry (templateurl), group (GnuplotBackend) #: rc.cpp:34 msgid "The location of the Gnuplot template." msgstr "A localização do modelo do Gnuplot." #. i18n: file: backends/tikz/tikzbackend.kcfg:10 #. i18n: ectx: label, entry (templateurl), group (TikzBackend) #: rc.cpp:44 msgid "The location of the TikZ template." msgstr "A localização do modelo do TikZ." #. i18n: file: backends/pstricks/pstricksbackend.kcfg:10 #. i18n: ectx: label, entry (templateurl), group (PstricksBackend) #: rc.cpp:51 msgid "The location of the PSTricks template." msgstr "A localização do modelo do PSTricks." #. i18n: file: widgets/backendchooser.ui:29 #. i18n: ectx: property (text), widget (QLabel, label) #: rc.cpp:61 msgid "Choose the Backend to use:" msgstr "Escolha a infraestrutura a usar:" #. i18n: file: widgets/backendchooser.ui:59 #. i18n: ectx: property (text), widget (QCheckBox, makeDefault) #: rc.cpp:64 msgid "Make this the default backend" msgstr "Usar esta infraestrutura por padrão" #. i18n: file: widgets/templatechooser.ui:17 #. i18n: ectx: property (text), widget (QLabel, label) #: rc.cpp:67 msgid "Backend:" msgstr "Infraestrutura:" #. i18n: file: widgets/templatechooser.ui:48 #. i18n: ectx: property (text), widget (KPushButton, btnAdd) #: rc.cpp:70 msgid "New" msgstr "Novo" #. i18n: file: widgets/templatechooser.ui:55 #. i18n: ectx: property (text), widget (KPushButton, btnEdit) #: rc.cpp:73 msgid "Edit" msgstr "Editar" #. i18n: file: widgets/templatechooser.ui:62 #. i18n: ectx: property (text), widget (KPushButton, btnRemove) #: rc.cpp:76 msgid "Remove" msgstr "Remover" #. i18n: file: widgets/templatechooser.ui:69 #. i18n: ectx: property (text), widget (KPushButton, btnDownload) #: rc.cpp:79 msgid "Download" msgstr "Baixar" #. i18n: file: widgets/templatechooser.ui:76 #. i18n: ectx: property (text), widget (KPushButton, btnUpload) #: rc.cpp:82 msgid "Upload" msgstr "Enviar" #. i18n: file: cirkuit.kcfg:10 #. i18n: ectx: label, entry (DefaultBackend), group (general) #: rc.cpp:85 msgid "Default backend." msgstr "Infraestrutura padrão." #. i18n: file: cirkuit.kcfg:14 #. i18n: ectx: label, entry (AutoSelectBackend), group (general) #. i18n: file: cirkuit_general_settings.ui:52 #. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoSelectBackend) #: rc.cpp:88 rc.cpp:118 msgid "Automatic backend selection" msgstr "Seleção automática de infraestrutura" #. i18n: file: cirkuit.kcfg:18 #. i18n: ectx: label, entry (RefreshInterval), group (general) #: rc.cpp:91 msgid "Preview generation refresh timeout." msgstr "Expirou o tempo-limite de atualização da visualização." #. i18n: file: cirkuit.kcfg:22 #. i18n: ectx: label, entry (AutoRefresh), group (general) #: rc.cpp:94 msgid "Enable automatic refresh." msgstr "Habilitar a atualização automática." #. i18n: file: cirkuit.kcfg:26 #. i18n: ectx: label, entry (RefreshOnSave), group (general) #: rc.cpp:97 msgid "Refresh when document is saved." msgstr "Atualizar ao salvar o documento." #. i18n: file: cirkuit.kcfg:30 #. i18n: ectx: label, entry (ZoomToFit), group (general) #: rc.cpp:100 msgid "Automatically zoom the preview to fit the preview widget" msgstr "Ampliar automaticamente a visualização para ajustar-se ao widget" #. i18n: file: cirkuit.kcfg:34 #. i18n: ectx: label, entry (ResolutionPpm), group (general) #: rc.cpp:103 msgid "PNG and JPEG resolution." msgstr "Resolução do PNG e do JPEG." #. i18n: file: cirkuit_general_settings.ui:14 #. i18n: ectx: property (windowTitle), widget (QWidget, CirkuitGeneralForm) #: rc.cpp:109 msgid "General settings" msgstr "Configurações gerais" #. i18n: file: cirkuit_general_settings.ui:23 #. i18n: ectx: property (title), widget (QGroupBox, groupBackend) #: rc.cpp:112 msgid "Backends" msgstr "Infraestruturas" #. i18n: file: cirkuit_general_settings.ui:29 #. i18n: ectx: property (text), widget (QLabel, label_3) #: rc.cpp:115 msgid "Default backend:" msgstr "Infraestrutura padrão:" #. i18n: file: cirkuit_general_settings.ui:71 #. i18n: ectx: property (text), widget (QLabel, label) #: rc.cpp:124 msgid "Preview refresh interval (sec):" msgstr "Intervalo de atualização da visualização (s):" #. i18n: file: cirkuit_general_settings.ui:103 #. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoRefresh) #: rc.cpp:127 msgid "Automatic preview generation" msgstr "Geração automática da visualização" #. i18n: file: cirkuit_general_settings.ui:113 #. i18n: ectx: property (text), widget (QCheckBox, kcfg_RefreshOnSave) #: rc.cpp:130 msgid "Refresh the preview when saving the document" msgstr "Atualizar a visualização ao salvar o documento" #. i18n: file: cirkuit_general_settings.ui:129 #. i18n: ectx: property (text), widget (QLabel, label_2) #: rc.cpp:133 msgid "PNG and JPEG resolution (DPI):" msgstr "Resolução do PNG e JPEG (em PPP):" #. i18n: file: cirkuitui.rc:5 #. i18n: ectx: Menu (file) #: rc.cpp:136 msgid "&File" msgstr "&Arquivo" #. i18n: file: cirkuitui.rc:26 #. i18n: ectx: Menu (build) #: rc.cpp:139 msgid "&Preview" msgstr "&Visualização" #. i18n: file: cirkuitui.rc:33 #. i18n: ectx: Menu (view) #: rc.cpp:142 msgid "&View" msgstr "E&xibir" #. i18n: file: cirkuitui.rc:46 #. i18n: ectx: Menu (help) #: rc.cpp:145 msgid "&Help" msgstr "Aj&uda" #. i18n: file: cirkuitui.rc:54 #. i18n: ectx: ToolBar (mainToolBar) #: rc.cpp:148 msgid "Main Toolbar" msgstr "Barra de ferramentas principal"cirkuit-0.4.3/po/pt_BR/CMakeLists.txt000644 001750 001750 00000000166 11677602304 021071 0ustar00scarlettscarlett000000 000000 file(GLOB _po_files *.po) GETTEXT_PROCESS_PO_FILES(pt_BR ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} ${_po_files} ) cirkuit-0.4.3/po/es/000755 001750 001750 00000000000 11677601633 015733 5ustar00scarlettscarlett000000 000000 cirkuit-0.4.3/po/es/cirkuit.po000644 001750 001750 00000033654 11677601633 017760 0ustar00scarlettscarlett000000 000000 # Copyright (C) YEAR This_file_is_part_of_KDE # This file is distributed under the same license as the PACKAGE package. # # Eloy Cuadra , 2011. msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2011-11-18 05:01+0100\n" "PO-Revision-Date: 2011-12-17 13:13+0100\n" "Last-Translator: Eloy Cuadra \n" "Language-Team: Spanish \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Lokalize 1.2\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #: widgets/imageview.cpp:81 msgid "Zoom to fit" msgstr "Ampliar para ajustar" #: widgets/templatechoosedialog.cpp:103 mainwindow.cpp:174 msgid "Template manager" msgstr "Gestor de plantillas" #: widgets/templatechoosedialog.cpp:193 msgid "Template name" msgstr "Nombre de la plantilla" #: widgets/templatechoosedialog.cpp:193 msgid "Insert the template name" msgstr "Inserte el nombre de la plantilla" #: widgets/templatechoosedialog.cpp:217 msgid "Do you really want to delete the selected template?" msgstr "¿Realmente desea borrar la plantilla seleccionada?" #: widgets/templatechoosedialog.cpp:218 msgid "Confirm deletion" msgstr "Confirme el borrado" #: widgets/backendchoosedialog.cpp:26 #, kde-format msgid "" "

%1

%2

See %3 for more " "information
" msgstr "" "

%1

%2

Consulte %3 para más " "información
" #: widgets/backendchoosedialog.cpp:33 msgid "Backend selection" msgstr "Selección del motor" #: main.cpp:30 msgid "Cirkuit" msgstr "Cirkuit" #: main.cpp:30 msgid "" "An application to generate publication-ready figures. It is a KDE frontend " "for Circuit Macros by J. D. Aplevich, TikZ and Gnuplot.

Visit the Circuit Macros " "and TikZ websites for further " "information." msgstr "" "Una aplicación para generar figuras listas para su publicación. Se trata de " "una interfaz de KDE para Circuit Macros, por J. D. Aplevich, TikZ y Gnuplot. " "

Visite los sitios web Circuit Macros y TikZ para obtener más información." #: main.cpp:30 msgid "(c) 2011 Matteo Agostinelli" msgstr "© 2011 Matteo Agostinelli" #: main.cpp:31 msgid "Matteo Agostinelli" msgstr "Matteo Agostinelli" #: main.cpp:31 msgid "Maintainer" msgstr "Encargado" #: main.cpp:36 msgid "Document to open" msgstr "Documento a abrir" #: generatorthread.cpp:55 msgid "No backend could be selected!" msgstr "No se puede seleccionar ningún motor." #: mainwindow.cpp:81 msgid "" "A KDE text-editor component could not be found;\n" "please check your KDE installation." msgstr "" "No fue posible encontrar un componente de edición de texto de KDE\n" "Compruebe su instalación de KDE." #. i18n: file: cirkuit_general_settings.ui:65 #. i18n: ectx: property (title), widget (QGroupBox, groupBox) #: mainwindow.cpp:90 rc.cpp:121 msgid "Preview" msgstr "Vista previa" #: mainwindow.cpp:96 msgid "Log" msgstr "Registro" #: mainwindow.cpp:158 msgid "Export..." msgstr "Exportar..." #: mainwindow.cpp:162 msgid "Build preview" msgstr "Construir vista previa" #: mainwindow.cpp:168 msgid "Open preview" msgstr "Abrir vista previa" #: mainwindow.cpp:178 msgid "Show manual" msgstr "Mostrar manual" #: mainwindow.cpp:182 msgid "Show examples" msgstr "Mostrar ejemplos" #: mainwindow.cpp:190 msgid "Download Examples" msgstr "Descargar ejemplos" #: mainwindow.cpp:195 msgid "Upload Example" msgstr "Enviar ejemplo" #: mainwindow.cpp:200 msgid "&Open Example" msgstr "&Abrir ejemplo" #: mainwindow.cpp:238 msgid "Open file - Cirkuit" msgstr "Abrir archivo - Cirkuit" #: mainwindow.cpp:281 msgid "Save file - Cirkuit" msgstr "Guardar archivo - Cirkuit" #: mainwindow.cpp:313 msgid "Export image - Cirkuit" msgstr "Exportar imagen - Cirkuit" #: mainwindow.cpp:402 #, kde-format msgid "Backend %1 not found" msgstr "No se encuentra el motor %1" #: mainwindow.cpp:411 msgid "No valid backend selected." msgstr "No se ha seleccionado un motor válido." #: mainwindow.cpp:460 msgid "General" msgstr "General" #: mainwindow.cpp:519 msgid "" "Circuit Macros could not be found on your system. The application will not " "work if the macros are not installed. Do you want to proceed with the " "installation?" msgstr "" "No se puede encontrar Circuit Macros en su sistema. La aplicación no " "funcionará si las macros no están instaladas. ¿Desea continuar con la " "instalación?" #: mainwindow.cpp:519 msgid "Installation needed" msgstr "Instalación necesaria" #: mainwindow.cpp:524 msgid "Downloading Circuit Macros. Please wait..." msgstr "Descargando Circuit Macros. Espere, por favor..." #: mainwindow.cpp:532 #, kde-format msgid "" "A new version of Circuit Macros (version %1) is available. Do you want to " "upgrade?" msgstr "" "Está disponible una nueva versión de Circuit Macros (versión %1). ¿Desea " "actualizarse a ella?" #: mainwindow.cpp:532 msgid "Upgrade" msgstr "Actualizar" #: mainwindow.cpp:550 msgid "Unable to generate a preview for the current input" msgstr "No ha sido posible generar una vista previa para la entrada actual" #: mainwindow.cpp:577 msgid "" "No working backend has been found. Cirkuit is unable to generate any figure." msgstr "" "No se ha encontrado un motor funcional. Cirkuit no puede generar ninguna " "figura." #: mainwindow.cpp:577 msgid "No backends found" msgstr "No se han encontrado motores" #: mainwindow.cpp:610 #, kde-format msgid "%1 manual" msgstr "Manual %1" #: mainwindow.cpp:611 #, kde-format msgid "%1 examples" msgstr "%1 ejemplos" #: mainwindow.cpp:630 msgid "Save the current document before uploading it" msgstr "Guardar el documento actual antes de enviarlo" #: rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Eloy Cuadra" #: rc.cpp:2 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "ecuadra@eloihr.net" #. i18n: file: backends/circuitmacros/circuitmacrosbackend.kcfg:18 #. i18n: ectx: label, entry (templateurl), group (CircuitMacrosBackend) #: rc.cpp:5 msgid "The location of the Circuit Macros template." msgstr "La ubicación de la plantilla de Circuit Macros." #. i18n: file: backends/circuitmacros/circuitmacrosbackend.kcfg:22 #. i18n: ectx: label, entry (tikztemplateurl), group (CircuitMacrosBackend) #: rc.cpp:8 msgid "The location of the Circuit Macros template with TikZ backend." msgstr "La ubicación de la plantilla de Circuit Macros con el motor TikZ." #. i18n: file: backends/circuitmacros/circuitmacrosbackend.kcfg:26 #. i18n: ectx: label, entry (latexargs), group (CircuitMacrosBackend) #. i18n: file: backends/tikz/tikzbackend.kcfg:14 #. i18n: ectx: label, entry (latexargs), group (TikzBackend) #. i18n: file: backends/pstricks/pstricksbackend.kcfg:14 #. i18n: ectx: label, entry (latexargs), group (PstricksBackend) #. i18n: file: cirkuit.kcfg:38 #. i18n: ectx: label, entry (LatexArgs), group (general) #: rc.cpp:11 rc.cpp:47 rc.cpp:54 rc.cpp:106 msgid "The default arguments called in the latex executable" msgstr "Los argumentos por omisión usados con el ejecutable «latex»" #. i18n: file: backends/circuitmacros/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_template) #. i18n: file: backends/circuitmacros/settings.ui:27 #. i18n: ectx: property (text), widget (QLabel, lbl_tikztemplate) #. i18n: file: backends/gnuplot/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_tikztemplate) #. i18n: file: backends/tikz/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_tikztemplate) #. i18n: file: backends/pstricks/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_pstrickstemplate) #: rc.cpp:16 rc.cpp:19 rc.cpp:38 rc.cpp:41 rc.cpp:58 msgid "Template path:" msgstr "Ruta de la plantilla:" #. i18n: file: backends/circuitmacros/settings.ui:37 #. i18n: ectx: property (text), widget (QLabel, label_4) #: rc.cpp:22 msgid "Pic interpreter" msgstr "Intérprete PIC" #. i18n: file: backends/circuitmacros/settings.ui:45 #. i18n: ectx: property (text), item, widget (KComboBox, kcfg_PicInterpreter) #: rc.cpp:25 msgid "dpic + PSTricks" msgstr "dpic + PSTricks" #. i18n: file: backends/circuitmacros/settings.ui:50 #. i18n: ectx: property (text), item, widget (KComboBox, kcfg_PicInterpreter) #: rc.cpp:28 msgid "dpic + TikZ" msgstr "dpic + TikZ" #. i18n: file: backends/circuitmacros/settings.ui:55 #. i18n: ectx: property (text), item, widget (KComboBox, kcfg_PicInterpreter) #: rc.cpp:31 msgid "gpic" msgstr "gpic" #. i18n: file: backends/gnuplot/gnuplotbackend.kcfg:10 #. i18n: ectx: label, entry (templateurl), group (GnuplotBackend) #: rc.cpp:34 msgid "The location of the Gnuplot template." msgstr "La ubicación de la plantilla de Gnuplot." #. i18n: file: backends/tikz/tikzbackend.kcfg:10 #. i18n: ectx: label, entry (templateurl), group (TikzBackend) #: rc.cpp:44 msgid "The location of the TikZ template." msgstr "La ubicación de la plantilla de TikZ." #. i18n: file: backends/pstricks/pstricksbackend.kcfg:10 #. i18n: ectx: label, entry (templateurl), group (PstricksBackend) #: rc.cpp:51 msgid "The location of the PSTricks template." msgstr "La ubicación de la plantilla de PSTricks." #. i18n: file: widgets/backendchooser.ui:29 #. i18n: ectx: property (text), widget (QLabel, label) #: rc.cpp:61 msgid "Choose the Backend to use:" msgstr "Escoja el motor a usar:" #. i18n: file: widgets/backendchooser.ui:59 #. i18n: ectx: property (text), widget (QCheckBox, makeDefault) #: rc.cpp:64 msgid "Make this the default backend" msgstr "Hacer que este sea el motor por omisión" #. i18n: file: widgets/templatechooser.ui:17 #. i18n: ectx: property (text), widget (QLabel, label) #: rc.cpp:67 msgid "Backend:" msgstr "Motor:" #. i18n: file: widgets/templatechooser.ui:48 #. i18n: ectx: property (text), widget (KPushButton, btnAdd) #: rc.cpp:70 msgid "New" msgstr "Nuevo" #. i18n: file: widgets/templatechooser.ui:55 #. i18n: ectx: property (text), widget (KPushButton, btnEdit) #: rc.cpp:73 msgid "Edit" msgstr "Editar" #. i18n: file: widgets/templatechooser.ui:62 #. i18n: ectx: property (text), widget (KPushButton, btnRemove) #: rc.cpp:76 msgid "Remove" msgstr "Eliminar" #. i18n: file: widgets/templatechooser.ui:69 #. i18n: ectx: property (text), widget (KPushButton, btnDownload) #: rc.cpp:79 msgid "Download" msgstr "Descargar" #. i18n: file: widgets/templatechooser.ui:76 #. i18n: ectx: property (text), widget (KPushButton, btnUpload) #: rc.cpp:82 msgid "Upload" msgstr "Enviar" #. i18n: file: cirkuit.kcfg:10 #. i18n: ectx: label, entry (DefaultBackend), group (general) #: rc.cpp:85 msgid "Default backend." msgstr "Motor por omisión." #. i18n: file: cirkuit.kcfg:14 #. i18n: ectx: label, entry (AutoSelectBackend), group (general) #. i18n: file: cirkuit_general_settings.ui:52 #. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoSelectBackend) #: rc.cpp:88 rc.cpp:118 msgid "Automatic backend selection" msgstr "Selección automática del motor" #. i18n: file: cirkuit.kcfg:18 #. i18n: ectx: label, entry (RefreshInterval), group (general) #: rc.cpp:91 msgid "Preview generation refresh timeout." msgstr "Intervalo de refresco de la generación de la vista previa." #. i18n: file: cirkuit.kcfg:22 #. i18n: ectx: label, entry (AutoRefresh), group (general) #: rc.cpp:94 msgid "Enable automatic refresh." msgstr "Activar el refresco automático." #. i18n: file: cirkuit.kcfg:26 #. i18n: ectx: label, entry (RefreshOnSave), group (general) #: rc.cpp:97 msgid "Refresh when document is saved." msgstr "Refrescar cuando se guarda el documento." #. i18n: file: cirkuit.kcfg:30 #. i18n: ectx: label, entry (ZoomToFit), group (general) #: rc.cpp:100 msgid "Automatically zoom the preview to fit the preview widget" msgstr "Ampliar automáticamente la vista previa para ajustarse a su ventana" #. i18n: file: cirkuit.kcfg:34 #. i18n: ectx: label, entry (ResolutionPpm), group (general) #: rc.cpp:103 msgid "PNG and JPEG resolution." msgstr "Resolución PNG y JPEG." #. i18n: file: cirkuit_general_settings.ui:14 #. i18n: ectx: property (windowTitle), widget (QWidget, CirkuitGeneralForm) #: rc.cpp:109 msgid "General settings" msgstr "Preferencias generales" #. i18n: file: cirkuit_general_settings.ui:23 #. i18n: ectx: property (title), widget (QGroupBox, groupBackend) #: rc.cpp:112 msgid "Backends" msgstr "Motores" #. i18n: file: cirkuit_general_settings.ui:29 #. i18n: ectx: property (text), widget (QLabel, label_3) #: rc.cpp:115 msgid "Default backend:" msgstr "Motor por omisión:" #. i18n: file: cirkuit_general_settings.ui:71 #. i18n: ectx: property (text), widget (QLabel, label) #: rc.cpp:124 msgid "Preview refresh interval (sec):" msgstr "Intervalo de refresco de la vista previa (seg):" #. i18n: file: cirkuit_general_settings.ui:103 #. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoRefresh) #: rc.cpp:127 msgid "Automatic preview generation" msgstr "Generación automática de vista previa" #. i18n: file: cirkuit_general_settings.ui:113 #. i18n: ectx: property (text), widget (QCheckBox, kcfg_RefreshOnSave) #: rc.cpp:130 msgid "Refresh the preview when saving the document" msgstr "Refrescar la vista previa cuando se guarda el documento" #. i18n: file: cirkuit_general_settings.ui:129 #. i18n: ectx: property (text), widget (QLabel, label_2) #: rc.cpp:133 msgid "PNG and JPEG resolution (DPI):" msgstr "Resolución (PPP) de PNG y JPEG:" #. i18n: file: cirkuitui.rc:5 #. i18n: ectx: Menu (file) #: rc.cpp:136 msgid "&File" msgstr "&Archivo" #. i18n: file: cirkuitui.rc:26 #. i18n: ectx: Menu (build) #: rc.cpp:139 msgid "&Preview" msgstr "Vista &previa" #. i18n: file: cirkuitui.rc:33 #. i18n: ectx: Menu (view) #: rc.cpp:142 msgid "&View" msgstr "&Vista" #. i18n: file: cirkuitui.rc:46 #. i18n: ectx: Menu (help) #: rc.cpp:145 msgid "&Help" msgstr "A&yuda" #. i18n: file: cirkuitui.rc:54 #. i18n: ectx: ToolBar (mainToolBar) #: rc.cpp:148 msgid "Main Toolbar" msgstr "Barra de herramientas principal"cirkuit-0.4.3/po/es/CMakeLists.txt000644 001750 001750 00000000163 11677601633 020473 0ustar00scarlettscarlett000000 000000 file(GLOB _po_files *.po) GETTEXT_PROCESS_PO_FILES(es ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} ${_po_files} ) cirkuit-0.4.3/po/km/000755 001750 001750 00000000000 11677602103 015724 5ustar00scarlettscarlett000000 000000 cirkuit-0.4.3/po/km/cirkuit.po000644 001750 001750 00000044736 11677602103 017754 0ustar00scarlettscarlett000000 000000 # translation of cirkuit.po to Khmer # Copyright (C) YEAR This_file_is_part_of_KDE # This file is distributed under the same license as the PACKAGE package. # Khoem Sokhem , 2011. msgid "" msgstr "" "Project-Id-Version: cirkuit\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2011-11-18 05:01+0100\n" "PO-Revision-Date: 2011-06-28 07:39+0700\n" "Last-Translator: Khoem Sokhem \n" "Language-Team: Khmer \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.11.4\n" "X-Language: km-KH\n" "Plural-Forms: nplurals=1; plural=0;\n" #: widgets/imageview.cpp:81 msgid "Zoom to fit" msgstr "ពង្រីក​ឲ្យ​សម" #: widgets/templatechoosedialog.cpp:103 mainwindow.cpp:174 msgid "Template manager" msgstr "កម្មវិធី​គ្រប់គ្រង​ពុម្ព" #: widgets/templatechoosedialog.cpp:193 msgid "Template name" msgstr "ឈ្មោះពុម្ព​" #: widgets/templatechoosedialog.cpp:193 msgid "Insert the template name" msgstr "បញ្ចូល​ឈ្មោះ​ពុម្ព" #: widgets/templatechoosedialog.cpp:217 msgid "Do you really want to delete the selected template?" msgstr "តើ​អ្នក​ពិតជា​ចង់​លុប​ពុម្ព​ដែល​បាន​ជ្រើស​នេះ​មែន​ទេ ?" #: widgets/templatechoosedialog.cpp:218 msgid "Confirm deletion" msgstr "អះអាង​ការ​លុប" #: widgets/backendchoosedialog.cpp:26 #, kde-format msgid "" "

%1

%2

See %3 for more " "information
" msgstr "" "

%1

%2

មើល %3 សម្រាប់​ព័ត៌មាន​បន្ថែម" #: widgets/backendchoosedialog.cpp:33 msgid "Backend selection" msgstr "ការ​ជ្រើស​កម្មវិធី​ខាងក្រោយ" #: main.cpp:30 msgid "Cirkuit" msgstr "Cirkuit" #: main.cpp:30 msgid "" "An application to generate publication-ready figures. It is a KDE frontend " "for Circuit Macros by J. D. Aplevich, TikZ and Gnuplot.

Visit the Circuit Macros " "and TikZ websites for further " "information." msgstr "" "កម្មវិធី​សម្រាប់​បង្កើត​រូបភាព​ពន្យល់​ការ​បោះពុម្ព​រួចហើយ ។ វា​គឺជា​កម្មវិធី​ខាងមុខ​របស់​ KDE សម្រាប់ " "Circuit Macros by J. D. Aplevich, TikZ and Gnuplot.

ចូល​មើល​តំបន់​បណ្ដាញ Circuit Macros " "និង TikZ សម្រាប់​ព័ត៌មាន​លម្អិត ។" #: main.cpp:30 #, fuzzy #| msgid "(c) 2010 Matteo Agostinelli" msgid "(c) 2011 Matteo Agostinelli" msgstr "(c) 2010 Matteo Agostinelli" #: main.cpp:31 msgid "Matteo Agostinelli" msgstr "Matteo Agostinelli" #: main.cpp:31 msgid "Maintainer" msgstr "អ្នក​ថែទាំ" #: main.cpp:36 msgid "Document to open" msgstr "ឯកសារ​ដែល​ត្រូវ​បើក" #: generatorthread.cpp:55 msgid "No backend could be selected!" msgstr "គ្មាន​កម្មវិធី​ខាងក្រោយ​ត្រូវ​បាន​ជ្រើស​ទេ !" #: mainwindow.cpp:81 msgid "" "A KDE text-editor component could not be found;\n" "please check your KDE installation." msgstr "" "មិន​អាច​រក​ឃើញ​សមាសភាគ​កម្មវិធី​និពន្ធ​អត្ថបទ​របស់ KDE \n" "សូម​ពិនិត្យ​ការ​ដំឡើង​ KDE របស់​អ្នក ។" #. i18n: file: cirkuit_general_settings.ui:65 #. i18n: ectx: property (title), widget (QGroupBox, groupBox) #: mainwindow.cpp:90 rc.cpp:121 msgid "Preview" msgstr "មើល​ជាមុន" #: mainwindow.cpp:96 msgid "Log" msgstr "ចុះ​កំណត់ហេតុ" #: mainwindow.cpp:158 msgid "Export..." msgstr "នាំចេញ..." #: mainwindow.cpp:162 msgid "Build preview" msgstr "ស្ថាបនា​ការ​មើល​ជាមុន" #: mainwindow.cpp:168 msgid "Open preview" msgstr "បើក​ការ​មើល​ជាមុន" #: mainwindow.cpp:178 msgid "Show manual" msgstr "បង្ហាញ​សៀវភៅ​ដៃ" #: mainwindow.cpp:182 msgid "Show examples" msgstr "បង្ហាញ​ឧទាហរណ៍" #: mainwindow.cpp:190 msgid "Download Examples" msgstr "ទាញ​យក​ឧទាហរណ៍" #: mainwindow.cpp:195 msgid "Upload Example" msgstr "ផ្ទុក​ឧទាហរណ៍​ឡើង" #: mainwindow.cpp:200 msgid "&Open Example" msgstr "បើក​ឧទាហរណ៍" #: mainwindow.cpp:238 msgid "Open file - Cirkuit" msgstr "បើក​ឯកសារ Cirkuit" #: mainwindow.cpp:281 msgid "Save file - Cirkuit" msgstr "រក្សាទុក​ឯកសារ Cirkuit" #: mainwindow.cpp:313 msgid "Export image - Cirkuit" msgstr "នាំចេញ​រូបភាព Cirkuit" #: mainwindow.cpp:402 #, kde-format msgid "Backend %1 not found" msgstr "រក​មិន​ឃើញ​កម្មវិធី​ខាងក្រោយ %1" #: mainwindow.cpp:411 msgid "No valid backend selected." msgstr "មិន​បាន​ជ្រើស​កម្មវិធី​ខាងក្រោយ​ដែល​ត្រឹមត្រូវ​ទេ ។" #: mainwindow.cpp:460 msgid "General" msgstr "ទូទៅ" #: mainwindow.cpp:519 msgid "" "Circuit Macros could not be found on your system. The application will not " "work if the macros are not installed. Do you want to proceed with the " "installation?" msgstr "" "មិន​អាច​រក​ឃើញ ​Circuit​ ម៉ាក្រូ​​នៅ​លើ​ប្រព័ន្ធ​របស់​អ្នក ។ កម្មវិធី​នឹង​មិន​ដំណើរការ​ទេ ប្រសិនបើ​មិន​បាន​ដំឡើង​" "ម៉ាក្រូ​ ។ តើ​អ្នក​ចង់​បន្ត​ការ​ដំឡើង​ដែរ ឬ​ទេ ?" #: mainwindow.cpp:519 msgid "Installation needed" msgstr "តម្រូវ​ឲ្យ​មាន​ការ​ដំឡើង" #: mainwindow.cpp:524 #, fuzzy #| msgid "Download Circuit Macros. Please wait..." msgid "Downloading Circuit Macros. Please wait..." msgstr "កំពុង​ទាញ​យក​ Circuit ​ម៉ាក្រូ ។ សូម​រង់ចាំ..." #: mainwindow.cpp:532 #, kde-format msgid "" "A new version of Circuit Macros (version %1) is available. Do you want to " "upgrade?" msgstr "មាន​កំណែ​ថ្មី​របស់​ Circuit ​ម៉ាក្រូ (កំណែ %1) ។ តើ​អ្នក​ចង់​ធ្វើ​ឲ្យ​ប្រសើរ​ដែរ ឬ​ទេ ?" #: mainwindow.cpp:532 msgid "Upgrade" msgstr "ធ្វើ​ឲ្យ​ប្រសើរ" #: mainwindow.cpp:550 msgid "Unable to generate a preview for the current input" msgstr "មិន​អាច​បង្កើត​ការ​មើល​ជាមុន​សម្រាប់​ការ​បញ្ចូល​បច្ចុប្បន្ន" #: mainwindow.cpp:577 msgid "" "No working backend has been found. Cirkuit is unable to generate any figure." msgstr "" "រក​មិន​ឃើញ​កម្មវិធី​​ខាងក្រោយ​ដែល​កំពុង​ធ្វើការ​ទេ ។ Cirkuit មិន​អាច​បង្កើត​រូបភាព​ពន្យល់​ណាមួយ​ឡើយ ។" #: mainwindow.cpp:577 msgid "No backends found" msgstr "រក​មិន​ឃើញ​កម្មវិធី​ខាងក្រោយ" #: mainwindow.cpp:610 #, kde-format msgid "%1 manual" msgstr "សៀវភៅ​ដៃ %1" #: mainwindow.cpp:611 #, kde-format msgid "%1 examples" msgstr "ឧទាហរណ៍ %1" #: mainwindow.cpp:630 msgid "Save the current document before uploading it" msgstr "រក្សាទុក​ឯកសារ​បច្ចុប្បន្ន​មុន​ពេល​ផ្ទុក​វា​ឡើង" #: rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "ខឹម សុខែម, ម៉ន ម៉េត, សេង សុត្ថា, ចាន់ សម្បត្តិរតនៈ, សុខ សុភា" #: rc.cpp:2 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "" "khoemsokhem@khmeros.info,​​mornmet@khmeros.info,sutha@khmeros.info," "ratanak@khmeros.info,sophea@khmeros.info" #. i18n: file: backends/circuitmacros/circuitmacrosbackend.kcfg:18 #. i18n: ectx: label, entry (templateurl), group (CircuitMacrosBackend) #: rc.cpp:5 msgid "The location of the Circuit Macros template." msgstr "ទីតាំង​របស់​ពុម្ព Circuit ម៉ាក្រូ ។" #. i18n: file: backends/circuitmacros/circuitmacrosbackend.kcfg:22 #. i18n: ectx: label, entry (tikztemplateurl), group (CircuitMacrosBackend) #: rc.cpp:8 msgid "The location of the Circuit Macros template with TikZ backend." msgstr "ទីតាំង​របស់​ពុម្ព Circuit ម៉ាក្រូ​ដែល​មាន​កម្មវិធី​ខាងក្រោយ TikZ ។" #. i18n: file: backends/circuitmacros/circuitmacrosbackend.kcfg:26 #. i18n: ectx: label, entry (latexargs), group (CircuitMacrosBackend) #. i18n: file: backends/tikz/tikzbackend.kcfg:14 #. i18n: ectx: label, entry (latexargs), group (TikzBackend) #. i18n: file: backends/pstricks/pstricksbackend.kcfg:14 #. i18n: ectx: label, entry (latexargs), group (PstricksBackend) #. i18n: file: cirkuit.kcfg:38 #. i18n: ectx: label, entry (LatexArgs), group (general) #: rc.cpp:11 rc.cpp:47 rc.cpp:54 rc.cpp:106 msgid "The default arguments called in the latex executable" msgstr "អាគុយម៉ង់​លំនាំដើម​ដែល​បាន​ហៅ​នៅ​ក្នុង​ឯកសារ​ប្រតិបត្តិ latex" #. i18n: file: backends/circuitmacros/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_template) #. i18n: file: backends/circuitmacros/settings.ui:27 #. i18n: ectx: property (text), widget (QLabel, lbl_tikztemplate) #. i18n: file: backends/gnuplot/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_tikztemplate) #. i18n: file: backends/tikz/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_tikztemplate) #. i18n: file: backends/pstricks/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_pstrickstemplate) #: rc.cpp:16 rc.cpp:19 rc.cpp:38 rc.cpp:41 rc.cpp:58 msgid "Template path:" msgstr "ផ្លូវ​ពុម្ព ៖" #. i18n: file: backends/circuitmacros/settings.ui:37 #. i18n: ectx: property (text), widget (QLabel, label_4) #: rc.cpp:22 msgid "Pic interpreter" msgstr "កម្មវិធី​បកប្រែ​រូបភាព" #. i18n: file: backends/circuitmacros/settings.ui:45 #. i18n: ectx: property (text), item, widget (KComboBox, kcfg_PicInterpreter) #: rc.cpp:25 msgid "dpic + PSTricks" msgstr "dpic + PSTricks" #. i18n: file: backends/circuitmacros/settings.ui:50 #. i18n: ectx: property (text), item, widget (KComboBox, kcfg_PicInterpreter) #: rc.cpp:28 msgid "dpic + TikZ" msgstr "dpic + TikZ" #. i18n: file: backends/circuitmacros/settings.ui:55 #. i18n: ectx: property (text), item, widget (KComboBox, kcfg_PicInterpreter) #: rc.cpp:31 msgid "gpic" msgstr "gpic" #. i18n: file: backends/gnuplot/gnuplotbackend.kcfg:10 #. i18n: ectx: label, entry (templateurl), group (GnuplotBackend) #: rc.cpp:34 msgid "The location of the Gnuplot template." msgstr "ទីតាំង​របស់​ពុម្ព Gnuplot ។" #. i18n: file: backends/tikz/tikzbackend.kcfg:10 #. i18n: ectx: label, entry (templateurl), group (TikzBackend) #: rc.cpp:44 msgid "The location of the TikZ template." msgstr "ទីតាំង​របស់​ពុម្ព TikZ ។" #. i18n: file: backends/pstricks/pstricksbackend.kcfg:10 #. i18n: ectx: label, entry (templateurl), group (PstricksBackend) #: rc.cpp:51 msgid "The location of the PSTricks template." msgstr "ទីតាំង​របស់​ពុម្ព PSTricks ។" #. i18n: file: widgets/backendchooser.ui:29 #. i18n: ectx: property (text), widget (QLabel, label) #: rc.cpp:61 msgid "Choose the Backend to use:" msgstr "ជ្រើស​កម្មវិធី​ខាងក្រោយ​ដែល​ត្រូវ​ប្រើ ៖" #. i18n: file: widgets/backendchooser.ui:59 #. i18n: ectx: property (text), widget (QCheckBox, makeDefault) #: rc.cpp:64 msgid "Make this the default backend" msgstr "ដាក់​វា​ជា​កម្មវិធី​ខាងក្រោយ​លំនាំដើម" #. i18n: file: widgets/templatechooser.ui:17 #. i18n: ectx: property (text), widget (QLabel, label) #: rc.cpp:67 msgid "Backend:" msgstr "កម្មវិធី​ខាងក្រោយ ៖" #. i18n: file: widgets/templatechooser.ui:48 #. i18n: ectx: property (text), widget (KPushButton, btnAdd) #: rc.cpp:70 msgid "New" msgstr "ថ្មី" #. i18n: file: widgets/templatechooser.ui:55 #. i18n: ectx: property (text), widget (KPushButton, btnEdit) #: rc.cpp:73 msgid "Edit" msgstr "កែសម្រួល" #. i18n: file: widgets/templatechooser.ui:62 #. i18n: ectx: property (text), widget (KPushButton, btnRemove) #: rc.cpp:76 msgid "Remove" msgstr "យកចេញ" #. i18n: file: widgets/templatechooser.ui:69 #. i18n: ectx: property (text), widget (KPushButton, btnDownload) #: rc.cpp:79 msgid "Download" msgstr "ទាញ​យក" #. i18n: file: widgets/templatechooser.ui:76 #. i18n: ectx: property (text), widget (KPushButton, btnUpload) #: rc.cpp:82 msgid "Upload" msgstr "ផ្ទុក​ឡើង" #. i18n: file: cirkuit.kcfg:10 #. i18n: ectx: label, entry (DefaultBackend), group (general) #: rc.cpp:85 msgid "Default backend." msgstr "កម្មវិធី​ខាងក្រោយ​លំនាំដើម ។" #. i18n: file: cirkuit.kcfg:14 #. i18n: ectx: label, entry (AutoSelectBackend), group (general) #. i18n: file: cirkuit_general_settings.ui:52 #. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoSelectBackend) #: rc.cpp:88 rc.cpp:118 msgid "Automatic backend selection" msgstr "ការ​ជ្រើស​កម្មវិធី​ខាងក្រោយ​ដោយ​ស្វ័យប្រវត្តិ" #. i18n: file: cirkuit.kcfg:18 #. i18n: ectx: label, entry (RefreshInterval), group (general) #: rc.cpp:91 msgid "Preview generation refresh timeout." msgstr "អស់​ពេល​ធ្វើ​ឲ្យ​ស្រស់​​ការ​បង្កើត​មើល​ជា​មុន" #. i18n: file: cirkuit.kcfg:22 #. i18n: ectx: label, entry (AutoRefresh), group (general) #: rc.cpp:94 msgid "Enable automatic refresh." msgstr "បើក​ការ​ធ្វើ​ឲ្យ​ស្រស់​ដោយ​ស្វ័យប្រវត្តិ ។" #. i18n: file: cirkuit.kcfg:26 #. i18n: ectx: label, entry (RefreshOnSave), group (general) #: rc.cpp:97 msgid "Refresh when document is saved." msgstr "ធ្វើ​ឲ្យ​ស្រស់​ពេល​ឯកសារ​ត្រូវ​បាន​រក្សាទុក ។" #. i18n: file: cirkuit.kcfg:30 #. i18n: ectx: label, entry (ZoomToFit), group (general) #: rc.cpp:100 msgid "Automatically zoom the preview to fit the preview widget" msgstr "ពង្រីក​ការ​មើល​ជាមុន​ដោយ​ស្វ័យប្រវត្តិ​ឲ្យ​សម​ទៅ​នឹង​ការ​មើល​ជាមុន​ធាតុ​ក្រាហ្វិក" #. i18n: file: cirkuit.kcfg:34 #. i18n: ectx: label, entry (ResolutionPpm), group (general) #: rc.cpp:103 msgid "PNG and JPEG resolution." msgstr "គុណភាព​បង្ហាញ PNG និង JPEG ។" #. i18n: file: cirkuit_general_settings.ui:14 #. i18n: ectx: property (windowTitle), widget (QWidget, CirkuitGeneralForm) #: rc.cpp:109 msgid "General settings" msgstr "ការ​កំណត់​ទូទៅ" #. i18n: file: cirkuit_general_settings.ui:23 #. i18n: ectx: property (title), widget (QGroupBox, groupBackend) #: rc.cpp:112 msgid "Backends" msgstr "កម្មវិធី​ខាងក្រោយ" #. i18n: file: cirkuit_general_settings.ui:29 #. i18n: ectx: property (text), widget (QLabel, label_3) #: rc.cpp:115 msgid "Default backend:" msgstr "កម្មវិធី​ខាងក្រោយ​លំនាំដើម ៖" #. i18n: file: cirkuit_general_settings.ui:71 #. i18n: ectx: property (text), widget (QLabel, label) #: rc.cpp:124 msgid "Preview refresh interval (sec):" msgstr "ចន្លោះ​ពេល​ការ​ធ្វើ​ឲ្យ​ស្រស់​មើល​ជាមុន (វិ.) ៖" #. i18n: file: cirkuit_general_settings.ui:103 #. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoRefresh) #: rc.cpp:127 msgid "Automatic preview generation" msgstr "ការ​បង្កើត​មើល​ជាមុន​ដោយ​ស្វ័យប្រវត្តិ" #. i18n: file: cirkuit_general_settings.ui:113 #. i18n: ectx: property (text), widget (QCheckBox, kcfg_RefreshOnSave) #: rc.cpp:130 msgid "Refresh the preview when saving the document" msgstr "ធ្វើ​ឲ្យ​ស្រស់​ការ​មើល​ជាមុន​ពេល​កំពុង​រក្សាទុក​ឯកសារ" #. i18n: file: cirkuit_general_settings.ui:129 #. i18n: ectx: property (text), widget (QLabel, label_2) #: rc.cpp:133 msgid "PNG and JPEG resolution (DPI):" msgstr "គុណភាព​បង្ហាញ PNG និង JPEG (DPI) ៖" #. i18n: file: cirkuitui.rc:5 #. i18n: ectx: Menu (file) #: rc.cpp:136 msgid "&File" msgstr "ឯកសារ" #. i18n: file: cirkuitui.rc:26 #. i18n: ectx: Menu (build) #: rc.cpp:139 msgid "&Preview" msgstr "មើល​ជាមុន" #. i18n: file: cirkuitui.rc:33 #. i18n: ectx: Menu (view) #: rc.cpp:142 msgid "&View" msgstr "មើល" #. i18n: file: cirkuitui.rc:46 #. i18n: ectx: Menu (help) #: rc.cpp:145 msgid "&Help" msgstr "ជំនួយ" #. i18n: file: cirkuitui.rc:54 #. i18n: ectx: ToolBar (mainToolBar) #: rc.cpp:148 msgid "Main Toolbar" msgstr "របារ​ឧបករណ៍​មេ"cirkuit-0.4.3/po/km/CMakeLists.txt000644 001750 001750 00000000163 11677602103 020464 0ustar00scarlettscarlett000000 000000 file(GLOB _po_files *.po) GETTEXT_PROCESS_PO_FILES(km ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} ${_po_files} ) cirkuit-0.4.3/po/fr/000755 001750 001750 00000000000 11677601664 015737 5ustar00scarlettscarlett000000 000000 cirkuit-0.4.3/po/fr/cirkuit.po000644 001750 001750 00000034340 11677601664 017755 0ustar00scarlettscarlett000000 000000 # translation of cirkuit.po to Français # Copyright (C) YEAR This_file_is_part_of_KDE # This file is distributed under the same license as the PACKAGE package. # # Joëlle Cornavin , 2011. msgid "" msgstr "" "Project-Id-Version: cirkuit\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2011-11-18 05:01+0100\n" "PO-Revision-Date: 2011-09-28 12:05+0200\n" "Last-Translator: Joëlle Cornavin \n" "Language-Team: French \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #: widgets/imageview.cpp:81 msgid "Zoom to fit" msgstr "Adapter à la taille" #: widgets/templatechoosedialog.cpp:103 mainwindow.cpp:174 msgid "Template manager" msgstr "Gestionnaire de modèles" #: widgets/templatechoosedialog.cpp:193 msgid "Template name" msgstr "Nom du modèle" #: widgets/templatechoosedialog.cpp:193 msgid "Insert the template name" msgstr "Insérez le nom du modèle" #: widgets/templatechoosedialog.cpp:217 msgid "Do you really want to delete the selected template?" msgstr "Voulez-vous vraiment supprimer le modèle sélectionné ?" #: widgets/templatechoosedialog.cpp:218 msgid "Confirm deletion" msgstr "Confirmer la suppression" #: widgets/backendchoosedialog.cpp:26 #, kde-format msgid "" "

%1

%2

See %3 for more " "information
" msgstr "" "

%1

%2

Consultez %3 pour " "plusieurs d'informations
" #: widgets/backendchoosedialog.cpp:33 msgid "Backend selection" msgstr "Sélection du moteur" #: main.cpp:30 msgid "Cirkuit" msgstr "Cirkuit" #: main.cpp:30 msgid "" "An application to generate publication-ready figures. It is a KDE frontend " "for Circuit Macros by J. D. Aplevich, TikZ and Gnuplot.

Visit the Circuit Macros " "and TikZ websites for further " "information." msgstr "" "Une application pour générer des figures prêtes pour la publication. Il " "s'agit d'une interface KDE pour Circuit Macros de J. D. Aplevich, TikZ et " "Gnuplot.

Consultez les sites web Circuit Macros et TikZ pour plus d'informations." #: main.cpp:30 msgid "(c) 2011 Matteo Agostinelli" msgstr "(c) 2011 Matteo Agostinelli" #: main.cpp:31 msgid "Matteo Agostinelli" msgstr "Matteo Agostinelli" #: main.cpp:31 msgid "Maintainer" msgstr "Mainteneur" #: main.cpp:36 msgid "Document to open" msgstr "Document à ouvrir" #: generatorthread.cpp:55 msgid "No backend could be selected!" msgstr "Impossible de sélectionner un moteur !" #: mainwindow.cpp:81 msgid "" "A KDE text-editor component could not be found;\n" "please check your KDE installation." msgstr "" "Impossible de trouver un composant éditeur de texte pour KDE.\n" "Veuillez vérifier votre installation KDE." #. i18n: file: cirkuit_general_settings.ui:65 #. i18n: ectx: property (title), widget (QGroupBox, groupBox) #: mainwindow.cpp:90 rc.cpp:121 msgid "Preview" msgstr "Aperçu" #: mainwindow.cpp:96 msgid "Log" msgstr "Journal" #: mainwindow.cpp:158 msgid "Export..." msgstr "Exporter..." #: mainwindow.cpp:162 msgid "Build preview" msgstr "Créer un aperçu" #: mainwindow.cpp:168 msgid "Open preview" msgstr "Ouvrir un aperçu" #: mainwindow.cpp:178 msgid "Show manual" msgstr "Afficher un manuel" #: mainwindow.cpp:182 msgid "Show examples" msgstr "Afficher des exemples" #: mainwindow.cpp:190 msgid "Download Examples" msgstr "Télécharger des exemples" #: mainwindow.cpp:195 msgid "Upload Example" msgstr "Envoyer un exemple" #: mainwindow.cpp:200 msgid "&Open Example" msgstr "&Ouvrir un exemple" #: mainwindow.cpp:238 msgid "Open file - Cirkuit" msgstr "Ouvrir un fichier - Cirkuit" #: mainwindow.cpp:281 msgid "Save file - Cirkuit" msgstr "Enregistrer un fichier - Cirkuit" #: mainwindow.cpp:313 msgid "Export image - Cirkuit" msgstr "Exporter une image - Cirkuit" #: mainwindow.cpp:402 #, kde-format msgid "Backend %1 not found" msgstr "Moteur %1 introuvable" #: mainwindow.cpp:411 msgid "No valid backend selected." msgstr "Aucun moteur valable n'a été sélectionné." #: mainwindow.cpp:460 msgid "General" msgstr "Général" #: mainwindow.cpp:519 msgid "" "Circuit Macros could not be found on your system. The application will not " "work if the macros are not installed. Do you want to proceed with the " "installation?" msgstr "" "Impossible de trouver Circuit Macros sur votre système. L'application ne " "fonctionnera pas si les macros ne sont pas installées. Voulez-vous " "poursuivre l'installation ?" #: mainwindow.cpp:519 msgid "Installation needed" msgstr "Installation nécessaire" #: mainwindow.cpp:524 #, fuzzy #| msgid "Download Circuit Macros. Please wait..." msgid "Downloading Circuit Macros. Please wait..." msgstr "Téléchargement de Circuit Macros. Veuillez patienter..." #: mainwindow.cpp:532 #, kde-format msgid "" "A new version of Circuit Macros (version %1) is available. Do you want to " "upgrade?" msgstr "" "Une nouvelle version de Circuit Macros (version %1) est disponible. Voulez-" "vous effectuer une mise à niveau ?" #: mainwindow.cpp:532 msgid "Upgrade" msgstr "Mettre à niveau" #: mainwindow.cpp:550 msgid "Unable to generate a preview for the current input" msgstr "Impossible de générer un aperçu pour les données d'entrée actuelles" #: mainwindow.cpp:577 msgid "" "No working backend has been found. Cirkuit is unable to generate any figure." msgstr "" "Aucun moteur opérationnel n'a été trouvé. Cirkuit n'est pas en mesure de " "générer un quelconque schéma." #: mainwindow.cpp:577 msgid "No backends found" msgstr "Aucun moteur n'a été trouvé" #: mainwindow.cpp:610 #, kde-format msgid "%1 manual" msgstr "%1 manuel" #: mainwindow.cpp:611 #, kde-format msgid "%1 examples" msgstr "%1 exemples" #: mainwindow.cpp:630 msgid "Save the current document before uploading it" msgstr "Enregistrer le document actuel avant de l'envoyer" #: rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Joëlle Cornavin" #: rc.cpp:2 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "jcorn@free.fr" #. i18n: file: backends/circuitmacros/circuitmacrosbackend.kcfg:18 #. i18n: ectx: label, entry (templateurl), group (CircuitMacrosBackend) #: rc.cpp:5 msgid "The location of the Circuit Macros template." msgstr "L'emplacement du modèle de Circuit Macros." #. i18n: file: backends/circuitmacros/circuitmacrosbackend.kcfg:22 #. i18n: ectx: label, entry (tikztemplateurl), group (CircuitMacrosBackend) #: rc.cpp:8 msgid "The location of the Circuit Macros template with TikZ backend." msgstr "L'emplacement du modèle de Circuit Macros avec le moteur TikZ." #. i18n: file: backends/circuitmacros/circuitmacrosbackend.kcfg:26 #. i18n: ectx: label, entry (latexargs), group (CircuitMacrosBackend) #. i18n: file: backends/tikz/tikzbackend.kcfg:14 #. i18n: ectx: label, entry (latexargs), group (TikzBackend) #. i18n: file: backends/pstricks/pstricksbackend.kcfg:14 #. i18n: ectx: label, entry (latexargs), group (PstricksBackend) #. i18n: file: cirkuit.kcfg:38 #. i18n: ectx: label, entry (LatexArgs), group (general) #: rc.cpp:11 rc.cpp:47 rc.cpp:54 rc.cpp:106 msgid "The default arguments called in the latex executable" msgstr "Les arguments par défaut appelés dans l'exécutable latex" #. i18n: file: backends/circuitmacros/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_template) #. i18n: file: backends/circuitmacros/settings.ui:27 #. i18n: ectx: property (text), widget (QLabel, lbl_tikztemplate) #. i18n: file: backends/gnuplot/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_tikztemplate) #. i18n: file: backends/tikz/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_tikztemplate) #. i18n: file: backends/pstricks/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_pstrickstemplate) #: rc.cpp:16 rc.cpp:19 rc.cpp:38 rc.cpp:41 rc.cpp:58 msgid "Template path:" msgstr "Emplacement des modèles :" #. i18n: file: backends/circuitmacros/settings.ui:37 #. i18n: ectx: property (text), widget (QLabel, label_4) #: rc.cpp:22 msgid "Pic interpreter" msgstr "Interpréteur « pic »" #. i18n: file: backends/circuitmacros/settings.ui:45 #. i18n: ectx: property (text), item, widget (KComboBox, kcfg_PicInterpreter) #: rc.cpp:25 msgid "dpic + PSTricks" msgstr "dpic + PSTricks" #. i18n: file: backends/circuitmacros/settings.ui:50 #. i18n: ectx: property (text), item, widget (KComboBox, kcfg_PicInterpreter) #: rc.cpp:28 msgid "dpic + TikZ" msgstr "dpic + TikZ" #. i18n: file: backends/circuitmacros/settings.ui:55 #. i18n: ectx: property (text), item, widget (KComboBox, kcfg_PicInterpreter) #: rc.cpp:31 msgid "gpic" msgstr "gpic" #. i18n: file: backends/gnuplot/gnuplotbackend.kcfg:10 #. i18n: ectx: label, entry (templateurl), group (GnuplotBackend) #: rc.cpp:34 msgid "The location of the Gnuplot template." msgstr "L'emplacement du modèle de Gnuplot." #. i18n: file: backends/tikz/tikzbackend.kcfg:10 #. i18n: ectx: label, entry (templateurl), group (TikzBackend) #: rc.cpp:44 msgid "The location of the TikZ template." msgstr "L'emplacement du modèle de TikZ." #. i18n: file: backends/pstricks/pstricksbackend.kcfg:10 #. i18n: ectx: label, entry (templateurl), group (PstricksBackend) #: rc.cpp:51 msgid "The location of the PSTricks template." msgstr "L'emplacement du modèle de PSTricks." #. i18n: file: widgets/backendchooser.ui:29 #. i18n: ectx: property (text), widget (QLabel, label) #: rc.cpp:61 msgid "Choose the Backend to use:" msgstr "Choisissez le moteur à utiliser :" #. i18n: file: widgets/backendchooser.ui:59 #. i18n: ectx: property (text), widget (QCheckBox, makeDefault) #: rc.cpp:64 msgid "Make this the default backend" msgstr "Faire de ce moteur le moteur par défaut" #. i18n: file: widgets/templatechooser.ui:17 #. i18n: ectx: property (text), widget (QLabel, label) #: rc.cpp:67 msgid "Backend:" msgstr "Programme principal :" #. i18n: file: widgets/templatechooser.ui:48 #. i18n: ectx: property (text), widget (KPushButton, btnAdd) #: rc.cpp:70 msgid "New" msgstr "Nouveau" #. i18n: file: widgets/templatechooser.ui:55 #. i18n: ectx: property (text), widget (KPushButton, btnEdit) #: rc.cpp:73 msgid "Edit" msgstr "Modifier" #. i18n: file: widgets/templatechooser.ui:62 #. i18n: ectx: property (text), widget (KPushButton, btnRemove) #: rc.cpp:76 msgid "Remove" msgstr "Supprimer" #. i18n: file: widgets/templatechooser.ui:69 #. i18n: ectx: property (text), widget (KPushButton, btnDownload) #: rc.cpp:79 msgid "Download" msgstr "Télécharger" #. i18n: file: widgets/templatechooser.ui:76 #. i18n: ectx: property (text), widget (KPushButton, btnUpload) #: rc.cpp:82 msgid "Upload" msgstr "Envoyer" #. i18n: file: cirkuit.kcfg:10 #. i18n: ectx: label, entry (DefaultBackend), group (general) #: rc.cpp:85 msgid "Default backend." msgstr "Moteur par défaut." #. i18n: file: cirkuit.kcfg:14 #. i18n: ectx: label, entry (AutoSelectBackend), group (general) #. i18n: file: cirkuit_general_settings.ui:52 #. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoSelectBackend) #: rc.cpp:88 rc.cpp:118 msgid "Automatic backend selection" msgstr "Sélection automatique du moteur" #. i18n: file: cirkuit.kcfg:18 #. i18n: ectx: label, entry (RefreshInterval), group (general) #: rc.cpp:91 msgid "Preview generation refresh timeout." msgstr "" "Le temps imparti au rafraîchissement de la génération d'aperçu a expiré." #. i18n: file: cirkuit.kcfg:22 #. i18n: ectx: label, entry (AutoRefresh), group (general) #: rc.cpp:94 msgid "Enable automatic refresh." msgstr "Active le rafraîchissement automatique." #. i18n: file: cirkuit.kcfg:26 #. i18n: ectx: label, entry (RefreshOnSave), group (general) #: rc.cpp:97 msgid "Refresh when document is saved." msgstr "Rafraîchir lorsqu'un document est enregistré." #. i18n: file: cirkuit.kcfg:30 #. i18n: ectx: label, entry (ZoomToFit), group (general) #: rc.cpp:100 msgid "Automatically zoom the preview to fit the preview widget" msgstr "" "Adapter automatiquement l'aperçu à la taille de l'aperçu du composant " "graphique" #. i18n: file: cirkuit.kcfg:34 #. i18n: ectx: label, entry (ResolutionPpm), group (general) #: rc.cpp:103 msgid "PNG and JPEG resolution." msgstr "Résolution de PNG et JPEG." #. i18n: file: cirkuit_general_settings.ui:14 #. i18n: ectx: property (windowTitle), widget (QWidget, CirkuitGeneralForm) #: rc.cpp:109 msgid "General settings" msgstr "Réglages généraux" #. i18n: file: cirkuit_general_settings.ui:23 #. i18n: ectx: property (title), widget (QGroupBox, groupBackend) #: rc.cpp:112 msgid "Backends" msgstr "Moteurs" #. i18n: file: cirkuit_general_settings.ui:29 #. i18n: ectx: property (text), widget (QLabel, label_3) #: rc.cpp:115 msgid "Default backend:" msgstr "Moteur par défaut :" #. i18n: file: cirkuit_general_settings.ui:71 #. i18n: ectx: property (text), widget (QLabel, label) #: rc.cpp:124 msgid "Preview refresh interval (sec):" msgstr "Intervalle de rafraîchissement de l'aperçu (sec) :" #. i18n: file: cirkuit_general_settings.ui:103 #. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoRefresh) #: rc.cpp:127 msgid "Automatic preview generation" msgstr "Génération automatique de l'aperçu" #. i18n: file: cirkuit_general_settings.ui:113 #. i18n: ectx: property (text), widget (QCheckBox, kcfg_RefreshOnSave) #: rc.cpp:130 msgid "Refresh the preview when saving the document" msgstr "Rafraîchir l'aperçu lors de l'enregistrement du document" #. i18n: file: cirkuit_general_settings.ui:129 #. i18n: ectx: property (text), widget (QLabel, label_2) #: rc.cpp:133 msgid "PNG and JPEG resolution (DPI):" msgstr "Résolution de PNG et JPEG (en DPI) :" #. i18n: file: cirkuitui.rc:5 #. i18n: ectx: Menu (file) #: rc.cpp:136 msgid "&File" msgstr "&Fichier" #. i18n: file: cirkuitui.rc:26 #. i18n: ectx: Menu (build) #: rc.cpp:139 msgid "&Preview" msgstr "A&perçu" #. i18n: file: cirkuitui.rc:33 #. i18n: ectx: Menu (view) #: rc.cpp:142 msgid "&View" msgstr "&Affichage" #. i18n: file: cirkuitui.rc:46 #. i18n: ectx: Menu (help) #: rc.cpp:145 msgid "&Help" msgstr "&Aide" #. i18n: file: cirkuitui.rc:54 #. i18n: ectx: ToolBar (mainToolBar) #: rc.cpp:148 msgid "Main Toolbar" msgstr "Barre principale"cirkuit-0.4.3/po/fr/CMakeLists.txt000644 001750 001750 00000000163 11677601664 020477 0ustar00scarlettscarlett000000 000000 file(GLOB _po_files *.po) GETTEXT_PROCESS_PO_FILES(fr ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} ${_po_files} ) cirkuit-0.4.3/po/pt/000755 001750 001750 00000000000 11677602277 015754 5ustar00scarlettscarlett000000 000000 cirkuit-0.4.3/po/pt/cirkuit.po000644 001750 001750 00000033760 11677602277 017777 0ustar00scarlettscarlett000000 000000 msgid "" msgstr "" "Project-Id-Version: cirkuit\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2011-11-18 05:01+0100\n" "PO-Revision-Date: 2011-11-17 11:10+0000\n" "Last-Translator: José Nuno Coelho Pires \n" "Language-Team: Portuguese \n" "Language: pt\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-POFile-SpellExtra: Aplevich TikZ Agostinelli Gnuplot pic Matteo dpic\n" "X-POFile-SpellExtra: PSTricks gpic Circuit Cirkuit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #: widgets/imageview.cpp:81 msgid "Zoom to fit" msgstr "Ampliar para caber" #: widgets/templatechoosedialog.cpp:103 mainwindow.cpp:174 msgid "Template manager" msgstr "Gestor de modelos" #: widgets/templatechoosedialog.cpp:193 msgid "Template name" msgstr "Nome do modelo" #: widgets/templatechoosedialog.cpp:193 msgid "Insert the template name" msgstr "Inserir o nome do modelo" #: widgets/templatechoosedialog.cpp:217 msgid "Do you really want to delete the selected template?" msgstr "Deseja mesmo apagar o modelo seleccionado?" #: widgets/templatechoosedialog.cpp:218 msgid "Confirm deletion" msgstr "Confirmar a remoção" #: widgets/backendchoosedialog.cpp:26 #, kde-format msgid "" "

%1

%2

See %3 for more " "information
" msgstr "" "

%1

%2

Veja %3 para mais " "informações
" #: widgets/backendchoosedialog.cpp:33 msgid "Backend selection" msgstr "Selecção da infra-estrutura" #: main.cpp:30 msgid "Cirkuit" msgstr "Cirkuit" #: main.cpp:30 msgid "" "An application to generate publication-ready figures. It is a KDE frontend " "for Circuit Macros by J. D. Aplevich, TikZ and Gnuplot.

Visit the Circuit Macros " "and TikZ websites for further " "information." msgstr "" "Uma aplicação para gerar figuras prontas para publicação. É uma interface em " "KDE para o Circuit Macros de J. D. Aplevich, TikZ e Gnuplot.

Visite as " "páginas Web do Circuit Macros e do TikZ para obter mais informações." #: main.cpp:30 msgid "(c) 2011 Matteo Agostinelli" msgstr "(c) 2011 Matteo Agostinelli" #: main.cpp:31 msgid "Matteo Agostinelli" msgstr "Matteo Agostinelli" #: main.cpp:31 msgid "Maintainer" msgstr "Manutenção" #: main.cpp:36 msgid "Document to open" msgstr "O documento a abrir" #: generatorthread.cpp:55 msgid "No backend could be selected!" msgstr "Não foi possível seleccionar nenhuma infra-estrutura!" #: mainwindow.cpp:81 msgid "" "A KDE text-editor component could not be found;\n" "please check your KDE installation." msgstr "" "Não foi possível encontrar um componente de edição de texto para o KDE;\n" "verifique por favor a sua instalação do KDE." #. i18n: file: cirkuit_general_settings.ui:65 #. i18n: ectx: property (title), widget (QGroupBox, groupBox) #: mainwindow.cpp:90 rc.cpp:121 msgid "Preview" msgstr "Antevisão" #: mainwindow.cpp:96 msgid "Log" msgstr "Registo" #: mainwindow.cpp:158 msgid "Export..." msgstr "Exportar..." #: mainwindow.cpp:162 msgid "Build preview" msgstr "Criar a antevisão" #: mainwindow.cpp:168 msgid "Open preview" msgstr "Abrir a antevisão" #: mainwindow.cpp:178 msgid "Show manual" msgstr "Mostrar o manual" #: mainwindow.cpp:182 msgid "Show examples" msgstr "Mostrar os exemplos" #: mainwindow.cpp:190 msgid "Download Examples" msgstr "Obter Exemplos" #: mainwindow.cpp:195 msgid "Upload Example" msgstr "Enviar o Exemplo" #: mainwindow.cpp:200 msgid "&Open Example" msgstr "Abrir &o Exemplo" #: mainwindow.cpp:238 msgid "Open file - Cirkuit" msgstr "Abrir um ficheiro - Cirkuit" #: mainwindow.cpp:281 msgid "Save file - Cirkuit" msgstr "Gravar o ficheiro - Cirkuit" #: mainwindow.cpp:313 msgid "Export image - Cirkuit" msgstr "Exportar a imagem - Cirkuit" #: mainwindow.cpp:402 #, kde-format msgid "Backend %1 not found" msgstr "A infra-estrutura %1 não foi encontrada" #: mainwindow.cpp:411 msgid "No valid backend selected." msgstr "Não foi seleccionada nenhuma infra-estrutura válida." #: mainwindow.cpp:460 msgid "General" msgstr "Geral" #: mainwindow.cpp:519 msgid "" "Circuit Macros could not be found on your system. The application will not " "work if the macros are not installed. Do you want to proceed with the " "installation?" msgstr "" "Não foi possível encontrar o Circuit Macros no seu sistema. A aplicação não " "irá funcionar se as macros não forem instaladas. Deseja continuar com a " "instalação?" #: mainwindow.cpp:519 msgid "Installation needed" msgstr "Instalação necessária" #: mainwindow.cpp:524 msgid "Downloading Circuit Macros. Please wait..." msgstr "A obter o Circuit Macros. Espere por favor..." #: mainwindow.cpp:532 #, kde-format msgid "" "A new version of Circuit Macros (version %1) is available. Do you want to " "upgrade?" msgstr "" "Está disponível uma nova versão do Circuit Macros (versão %1). Deseja " "actualizá-la?" #: mainwindow.cpp:532 msgid "Upgrade" msgstr "Actualizar" #: mainwindow.cpp:550 msgid "Unable to generate a preview for the current input" msgstr "Não foi possível gerar uma antevisão para os dados de entrada actuais" #: mainwindow.cpp:577 msgid "" "No working backend has been found. Cirkuit is unable to generate any figure." msgstr "" "Não foi encontrada nenhuma infra-estrutura funcional. O Cirkuit não consegue " "gerar nenhuma imagem." #: mainwindow.cpp:577 msgid "No backends found" msgstr "Não foram encontradas infra-estruturas" #: mainwindow.cpp:610 #, kde-format msgid "%1 manual" msgstr "manual do %1" #: mainwindow.cpp:611 #, kde-format msgid "%1 examples" msgstr "exemplos do %1" #: mainwindow.cpp:630 msgid "Save the current document before uploading it" msgstr "Gravar o documento actual antes de o enviar" #: rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "José Nuno Pires" #: rc.cpp:2 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "zepires@gmail.com" #. i18n: file: backends/circuitmacros/circuitmacrosbackend.kcfg:18 #. i18n: ectx: label, entry (templateurl), group (CircuitMacrosBackend) #: rc.cpp:5 msgid "The location of the Circuit Macros template." msgstr "A localização do modelo do Circuit Macros." #. i18n: file: backends/circuitmacros/circuitmacrosbackend.kcfg:22 #. i18n: ectx: label, entry (tikztemplateurl), group (CircuitMacrosBackend) #: rc.cpp:8 msgid "The location of the Circuit Macros template with TikZ backend." msgstr "" "A localização do modelo do Circuit Macros com a infra-estrutura do TikZ." #. i18n: file: backends/circuitmacros/circuitmacrosbackend.kcfg:26 #. i18n: ectx: label, entry (latexargs), group (CircuitMacrosBackend) #. i18n: file: backends/tikz/tikzbackend.kcfg:14 #. i18n: ectx: label, entry (latexargs), group (TikzBackend) #. i18n: file: backends/pstricks/pstricksbackend.kcfg:14 #. i18n: ectx: label, entry (latexargs), group (PstricksBackend) #. i18n: file: cirkuit.kcfg:38 #. i18n: ectx: label, entry (LatexArgs), group (general) #: rc.cpp:11 rc.cpp:47 rc.cpp:54 rc.cpp:106 msgid "The default arguments called in the latex executable" msgstr "Os argumentos predefinidos invocados no executável 'latex'" #. i18n: file: backends/circuitmacros/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_template) #. i18n: file: backends/circuitmacros/settings.ui:27 #. i18n: ectx: property (text), widget (QLabel, lbl_tikztemplate) #. i18n: file: backends/gnuplot/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_tikztemplate) #. i18n: file: backends/tikz/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_tikztemplate) #. i18n: file: backends/pstricks/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_pstrickstemplate) #: rc.cpp:16 rc.cpp:19 rc.cpp:38 rc.cpp:41 rc.cpp:58 msgid "Template path:" msgstr "Localização do modelo:" #. i18n: file: backends/circuitmacros/settings.ui:37 #. i18n: ectx: property (text), widget (QLabel, label_4) #: rc.cpp:22 msgid "Pic interpreter" msgstr "Interpretador 'pic'" #. i18n: file: backends/circuitmacros/settings.ui:45 #. i18n: ectx: property (text), item, widget (KComboBox, kcfg_PicInterpreter) #: rc.cpp:25 msgid "dpic + PSTricks" msgstr "dpic + PSTricks" #. i18n: file: backends/circuitmacros/settings.ui:50 #. i18n: ectx: property (text), item, widget (KComboBox, kcfg_PicInterpreter) #: rc.cpp:28 msgid "dpic + TikZ" msgstr "dpic + TikZ" #. i18n: file: backends/circuitmacros/settings.ui:55 #. i18n: ectx: property (text), item, widget (KComboBox, kcfg_PicInterpreter) #: rc.cpp:31 msgid "gpic" msgstr "gpic" #. i18n: file: backends/gnuplot/gnuplotbackend.kcfg:10 #. i18n: ectx: label, entry (templateurl), group (GnuplotBackend) #: rc.cpp:34 msgid "The location of the Gnuplot template." msgstr "A localização do modelo do Gnuplot." #. i18n: file: backends/tikz/tikzbackend.kcfg:10 #. i18n: ectx: label, entry (templateurl), group (TikzBackend) #: rc.cpp:44 msgid "The location of the TikZ template." msgstr "A localização do modelo do TikZ." #. i18n: file: backends/pstricks/pstricksbackend.kcfg:10 #. i18n: ectx: label, entry (templateurl), group (PstricksBackend) #: rc.cpp:51 msgid "The location of the PSTricks template." msgstr "A localização do modelo do PSTricks." #. i18n: file: widgets/backendchooser.ui:29 #. i18n: ectx: property (text), widget (QLabel, label) #: rc.cpp:61 msgid "Choose the Backend to use:" msgstr "Escolha a infra-estrutura a usar:" #. i18n: file: widgets/backendchooser.ui:59 #. i18n: ectx: property (text), widget (QCheckBox, makeDefault) #: rc.cpp:64 msgid "Make this the default backend" msgstr "Usar esta infra-estrutura por omissão" #. i18n: file: widgets/templatechooser.ui:17 #. i18n: ectx: property (text), widget (QLabel, label) #: rc.cpp:67 msgid "Backend:" msgstr "Infra-estrutura:" #. i18n: file: widgets/templatechooser.ui:48 #. i18n: ectx: property (text), widget (KPushButton, btnAdd) #: rc.cpp:70 msgid "New" msgstr "Nova" #. i18n: file: widgets/templatechooser.ui:55 #. i18n: ectx: property (text), widget (KPushButton, btnEdit) #: rc.cpp:73 msgid "Edit" msgstr "Editar" #. i18n: file: widgets/templatechooser.ui:62 #. i18n: ectx: property (text), widget (KPushButton, btnRemove) #: rc.cpp:76 msgid "Remove" msgstr "Remover" #. i18n: file: widgets/templatechooser.ui:69 #. i18n: ectx: property (text), widget (KPushButton, btnDownload) #: rc.cpp:79 msgid "Download" msgstr "Obter" #. i18n: file: widgets/templatechooser.ui:76 #. i18n: ectx: property (text), widget (KPushButton, btnUpload) #: rc.cpp:82 msgid "Upload" msgstr "Enviar" #. i18n: file: cirkuit.kcfg:10 #. i18n: ectx: label, entry (DefaultBackend), group (general) #: rc.cpp:85 msgid "Default backend." msgstr "A infra-estrutura por omissão." #. i18n: file: cirkuit.kcfg:14 #. i18n: ectx: label, entry (AutoSelectBackend), group (general) #. i18n: file: cirkuit_general_settings.ui:52 #. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoSelectBackend) #: rc.cpp:88 rc.cpp:118 msgid "Automatic backend selection" msgstr "Selecção automática da infra-estrutura" #. i18n: file: cirkuit.kcfg:18 #. i18n: ectx: label, entry (RefreshInterval), group (general) #: rc.cpp:91 msgid "Preview generation refresh timeout." msgstr "Expirou o tempo-limite de actualização da antevisão." #. i18n: file: cirkuit.kcfg:22 #. i18n: ectx: label, entry (AutoRefresh), group (general) #: rc.cpp:94 msgid "Enable automatic refresh." msgstr "Activar a actualização automática." #. i18n: file: cirkuit.kcfg:26 #. i18n: ectx: label, entry (RefreshOnSave), group (general) #: rc.cpp:97 msgid "Refresh when document is saved." msgstr "Actualizar ao gravar o documento." #. i18n: file: cirkuit.kcfg:30 #. i18n: ectx: label, entry (ZoomToFit), group (general) #: rc.cpp:100 msgid "Automatically zoom the preview to fit the preview widget" msgstr "Ampliar automaticamente a antevisão para caber no item respectivo" #. i18n: file: cirkuit.kcfg:34 #. i18n: ectx: label, entry (ResolutionPpm), group (general) #: rc.cpp:103 msgid "PNG and JPEG resolution." msgstr "Resolução do PNG e do JPEG." #. i18n: file: cirkuit_general_settings.ui:14 #. i18n: ectx: property (windowTitle), widget (QWidget, CirkuitGeneralForm) #: rc.cpp:109 msgid "General settings" msgstr "Configuração geral" #. i18n: file: cirkuit_general_settings.ui:23 #. i18n: ectx: property (title), widget (QGroupBox, groupBackend) #: rc.cpp:112 msgid "Backends" msgstr "Infra-Estruturas" #. i18n: file: cirkuit_general_settings.ui:29 #. i18n: ectx: property (text), widget (QLabel, label_3) #: rc.cpp:115 msgid "Default backend:" msgstr "Infra-estrutura por omissão:" #. i18n: file: cirkuit_general_settings.ui:71 #. i18n: ectx: property (text), widget (QLabel, label) #: rc.cpp:124 msgid "Preview refresh interval (sec):" msgstr "Intervalo de actualização da antevisão (s):" #. i18n: file: cirkuit_general_settings.ui:103 #. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoRefresh) #: rc.cpp:127 msgid "Automatic preview generation" msgstr "Geração automática da antevisão" #. i18n: file: cirkuit_general_settings.ui:113 #. i18n: ectx: property (text), widget (QCheckBox, kcfg_RefreshOnSave) #: rc.cpp:130 msgid "Refresh the preview when saving the document" msgstr "Actualizar a antevisão ao gravar o documento" #. i18n: file: cirkuit_general_settings.ui:129 #. i18n: ectx: property (text), widget (QLabel, label_2) #: rc.cpp:133 msgid "PNG and JPEG resolution (DPI):" msgstr "Resolução do PNG e JPEG (PPP):" #. i18n: file: cirkuitui.rc:5 #. i18n: ectx: Menu (file) #: rc.cpp:136 msgid "&File" msgstr "&Ficheiro" #. i18n: file: cirkuitui.rc:26 #. i18n: ectx: Menu (build) #: rc.cpp:139 msgid "&Preview" msgstr "Ante&visão" #. i18n: file: cirkuitui.rc:33 #. i18n: ectx: Menu (view) #: rc.cpp:142 msgid "&View" msgstr "&Ver" #. i18n: file: cirkuitui.rc:46 #. i18n: ectx: Menu (help) #: rc.cpp:145 msgid "&Help" msgstr "A&juda" #. i18n: file: cirkuitui.rc:54 #. i18n: ectx: ToolBar (mainToolBar) #: rc.cpp:148 msgid "Main Toolbar" msgstr "Barra Principal"cirkuit-0.4.3/po/pt/CMakeLists.txt000644 001750 001750 00000000163 11677602277 020514 0ustar00scarlettscarlett000000 000000 file(GLOB _po_files *.po) GETTEXT_PROCESS_PO_FILES(pt ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} ${_po_files} ) cirkuit-0.4.3/po/et/000755 001750 001750 00000000000 11677601640 015732 5ustar00scarlettscarlett000000 000000 cirkuit-0.4.3/po/et/cirkuit.po000644 001750 001750 00000033373 11677601640 017755 0ustar00scarlettscarlett000000 000000 # Copyright (C) YEAR This_file_is_part_of_KDE # This file is distributed under the same license as the PACKAGE package. # # Marek Laane , 2011. msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2011-11-18 05:01+0100\n" "PO-Revision-Date: 2011-03-14 20:39+0200\n" "Last-Translator: Marek Laane \n" "Language-Team: Estonian \n" "Language: et\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Lokalize 1.2\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #: widgets/imageview.cpp:81 msgid "Zoom to fit" msgstr "Suurendus sobivaks" #: widgets/templatechoosedialog.cpp:103 mainwindow.cpp:174 msgid "Template manager" msgstr "Mallide haldur" #: widgets/templatechoosedialog.cpp:193 msgid "Template name" msgstr "Malli nimi" #: widgets/templatechoosedialog.cpp:193 msgid "Insert the template name" msgstr "Lisa malli nimi" #: widgets/templatechoosedialog.cpp:217 msgid "Do you really want to delete the selected template?" msgstr "Kas tõesti kustutada valitud mall?" #: widgets/templatechoosedialog.cpp:218 msgid "Confirm deletion" msgstr "Kustutamise kinnitus" #: widgets/backendchoosedialog.cpp:26 #, kde-format msgid "" "

%1

%2

See %3 for more " "information
" msgstr "" "

%1

%2

Täpsemalt räägib sellest " "%3
" #: widgets/backendchoosedialog.cpp:33 msgid "Backend selection" msgstr "Taustaprogrammi valik" #: main.cpp:30 msgid "Cirkuit" msgstr "Cirkuit" #: main.cpp:30 msgid "" "An application to generate publication-ready figures. It is a KDE frontend " "for Circuit Macros by J. D. Aplevich, TikZ and Gnuplot.

Visit the Circuit Macros " "and TikZ websites for further " "information." msgstr "" "Rakendus avaldamiskõlblike jooniste loomiseks. See kujutab endast J. D. " "Aplevichi, TikZi ja Gnuploti vooluringimakrode KDE kasutajaliidest. " "

Täpsemat teavet leiab vooluringimakrode ja TikZi veebilehekülgedelt." #: main.cpp:30 #, fuzzy #| msgid "(c) 2010 Matteo Agostinelli" msgid "(c) 2011 Matteo Agostinelli" msgstr "(c) 2010: Matteo Agostinelli" #: main.cpp:31 msgid "Matteo Agostinelli" msgstr "Matteo Agostinelli" #: main.cpp:31 msgid "Maintainer" msgstr "Hooldaja" #: main.cpp:36 msgid "Document to open" msgstr "Avatav dokument" #: generatorthread.cpp:55 msgid "No backend could be selected!" msgstr "Ühtegi taustaprogrammi ei õnnestu valida!" #: mainwindow.cpp:81 msgid "" "A KDE text-editor component could not be found;\n" "please check your KDE installation." msgstr "" "KDE tekstiredaktori komponenti ei leitud.\n" "Palun kontrolli oma KDE paigaldust." #. i18n: file: cirkuit_general_settings.ui:65 #. i18n: ectx: property (title), widget (QGroupBox, groupBox) #: mainwindow.cpp:90 rc.cpp:121 msgid "Preview" msgstr "Eelvaatlus" #: mainwindow.cpp:96 msgid "Log" msgstr "Logi" #: mainwindow.cpp:158 msgid "Export..." msgstr "Ekspordi..." #: mainwindow.cpp:162 msgid "Build preview" msgstr "Loo eelvaatlus" #: mainwindow.cpp:168 msgid "Open preview" msgstr "Ava eelvaatlus" #: mainwindow.cpp:178 msgid "Show manual" msgstr "Ava käsiraamat" #: mainwindow.cpp:182 msgid "Show examples" msgstr "Ava näidised" #: mainwindow.cpp:190 msgid "Download Examples" msgstr "Laadi alla näidiseid" #: mainwindow.cpp:195 msgid "Upload Example" msgstr "Laadi näidis üles" #: mainwindow.cpp:200 msgid "&Open Example" msgstr "&Ava näidis" #: mainwindow.cpp:238 msgid "Open file - Cirkuit" msgstr "Faili avamine - Cirkuit" #: mainwindow.cpp:281 msgid "Save file - Cirkuit" msgstr "Faili salvestamine - Cirkuit" #: mainwindow.cpp:313 msgid "Export image - Cirkuit" msgstr "Pildi eksport - Cirkuit" #: mainwindow.cpp:402 #, kde-format msgid "Backend %1 not found" msgstr "Taustaprogrammi %1 ei leitud" #: mainwindow.cpp:411 msgid "No valid backend selected." msgstr "Sobivat taustaprogrammi pole valitud." #: mainwindow.cpp:460 msgid "General" msgstr "Üldine" #: mainwindow.cpp:519 msgid "" "Circuit Macros could not be found on your system. The application will not " "work if the macros are not installed. Do you want to proceed with the " "installation?" msgstr "" "Vooluringimakrosid sinu süsteemist ei leitud. Rakendus ei tööta, kui makrod " "pole paigaldatud. Kas asuda neid paigaldama?" #: mainwindow.cpp:519 msgid "Installation needed" msgstr "Vajalik on paigaldamine" #: mainwindow.cpp:524 #, fuzzy #| msgid "Download Circuit Macros. Please wait..." msgid "Downloading Circuit Macros. Please wait..." msgstr "Vooluringimakrode allalaadimine. Palun oota..." #: mainwindow.cpp:532 #, kde-format msgid "" "A new version of Circuit Macros (version %1) is available. Do you want to " "upgrade?" msgstr "Saadaval on uus vooluringimakrode versioon (%1). Kas soovid uuendada?" #: mainwindow.cpp:532 msgid "Upgrade" msgstr "Uuenda" #: mainwindow.cpp:550 msgid "Unable to generate a preview for the current input" msgstr "Aktiivse sisendi eelvaatluse loomine nurjus" #: mainwindow.cpp:577 msgid "" "No working backend has been found. Cirkuit is unable to generate any figure." msgstr "" "Ühtegi töötavat taustaprogrammi ei leitud. Cirkuit ei suuda jooniseid " "genereerida." #: mainwindow.cpp:577 msgid "No backends found" msgstr "Ühtegi taustaprogrammi ei leitud" #: mainwindow.cpp:610 #, kde-format msgid "%1 manual" msgstr "Taustaprogrammi %1 käsiraamat" #: mainwindow.cpp:611 #, kde-format msgid "%1 examples" msgstr "Taustaprogrammi %1 näidised" #: mainwindow.cpp:630 msgid "Save the current document before uploading it" msgstr "Salvesta aktiivne dokument enne selle üleslaadimist" #: rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Marek Laane" #: rc.cpp:2 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "bald@smail.ee" #. i18n: file: backends/circuitmacros/circuitmacrosbackend.kcfg:18 #. i18n: ectx: label, entry (templateurl), group (CircuitMacrosBackend) #: rc.cpp:5 msgid "The location of the Circuit Macros template." msgstr "Vooluringimakrode malli asukoht." #. i18n: file: backends/circuitmacros/circuitmacrosbackend.kcfg:22 #. i18n: ectx: label, entry (tikztemplateurl), group (CircuitMacrosBackend) #: rc.cpp:8 msgid "The location of the Circuit Macros template with TikZ backend." msgstr "TikZi taustaprogrammiga vooluringimakrode asukoht." #. i18n: file: backends/circuitmacros/circuitmacrosbackend.kcfg:26 #. i18n: ectx: label, entry (latexargs), group (CircuitMacrosBackend) #. i18n: file: backends/tikz/tikzbackend.kcfg:14 #. i18n: ectx: label, entry (latexargs), group (TikzBackend) #. i18n: file: backends/pstricks/pstricksbackend.kcfg:14 #. i18n: ectx: label, entry (latexargs), group (PstricksBackend) #. i18n: file: cirkuit.kcfg:38 #. i18n: ectx: label, entry (LatexArgs), group (general) #: rc.cpp:11 rc.cpp:47 rc.cpp:54 rc.cpp:106 msgid "The default arguments called in the latex executable" msgstr "LaTeXi teostusfailile vaikimisi edastatavad argumendid" #. i18n: file: backends/circuitmacros/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_template) #. i18n: file: backends/circuitmacros/settings.ui:27 #. i18n: ectx: property (text), widget (QLabel, lbl_tikztemplate) #. i18n: file: backends/gnuplot/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_tikztemplate) #. i18n: file: backends/tikz/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_tikztemplate) #. i18n: file: backends/pstricks/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_pstrickstemplate) #: rc.cpp:16 rc.cpp:19 rc.cpp:38 rc.cpp:41 rc.cpp:58 msgid "Template path:" msgstr "Malli asukoht:" #. i18n: file: backends/circuitmacros/settings.ui:37 #. i18n: ectx: property (text), widget (QLabel, label_4) #: rc.cpp:22 msgid "Pic interpreter" msgstr "Pildi interpretaator:" #. i18n: file: backends/circuitmacros/settings.ui:45 #. i18n: ectx: property (text), item, widget (KComboBox, kcfg_PicInterpreter) #: rc.cpp:25 msgid "dpic + PSTricks" msgstr "dpic + PSTricks" #. i18n: file: backends/circuitmacros/settings.ui:50 #. i18n: ectx: property (text), item, widget (KComboBox, kcfg_PicInterpreter) #: rc.cpp:28 msgid "dpic + TikZ" msgstr "dpic + TikZ" #. i18n: file: backends/circuitmacros/settings.ui:55 #. i18n: ectx: property (text), item, widget (KComboBox, kcfg_PicInterpreter) #: rc.cpp:31 msgid "gpic" msgstr "gpic" #. i18n: file: backends/gnuplot/gnuplotbackend.kcfg:10 #. i18n: ectx: label, entry (templateurl), group (GnuplotBackend) #: rc.cpp:34 msgid "The location of the Gnuplot template." msgstr "Gnuploti malli asukoht." #. i18n: file: backends/tikz/tikzbackend.kcfg:10 #. i18n: ectx: label, entry (templateurl), group (TikzBackend) #: rc.cpp:44 msgid "The location of the TikZ template." msgstr "TikZi malli asukoht." #. i18n: file: backends/pstricks/pstricksbackend.kcfg:10 #. i18n: ectx: label, entry (templateurl), group (PstricksBackend) #: rc.cpp:51 msgid "The location of the PSTricks template." msgstr "PSTricksi malli asukoht." #. i18n: file: widgets/backendchooser.ui:29 #. i18n: ectx: property (text), widget (QLabel, label) #: rc.cpp:61 msgid "Choose the Backend to use:" msgstr "Kasutatav taustaprogramm:" #. i18n: file: widgets/backendchooser.ui:59 #. i18n: ectx: property (text), widget (QCheckBox, makeDefault) #: rc.cpp:64 msgid "Make this the default backend" msgstr "Määramine vaikimisi taustaprogrammiks" #. i18n: file: widgets/templatechooser.ui:17 #. i18n: ectx: property (text), widget (QLabel, label) #: rc.cpp:67 msgid "Backend:" msgstr "Taustaprogramm:" #. i18n: file: widgets/templatechooser.ui:48 #. i18n: ectx: property (text), widget (KPushButton, btnAdd) #: rc.cpp:70 msgid "New" msgstr "Uus" #. i18n: file: widgets/templatechooser.ui:55 #. i18n: ectx: property (text), widget (KPushButton, btnEdit) #: rc.cpp:73 msgid "Edit" msgstr "Muuda" #. i18n: file: widgets/templatechooser.ui:62 #. i18n: ectx: property (text), widget (KPushButton, btnRemove) #: rc.cpp:76 msgid "Remove" msgstr "Eemalda" #. i18n: file: widgets/templatechooser.ui:69 #. i18n: ectx: property (text), widget (KPushButton, btnDownload) #: rc.cpp:79 msgid "Download" msgstr "Laadi alla" #. i18n: file: widgets/templatechooser.ui:76 #. i18n: ectx: property (text), widget (KPushButton, btnUpload) #: rc.cpp:82 msgid "Upload" msgstr "Laadi üles" #. i18n: file: cirkuit.kcfg:10 #. i18n: ectx: label, entry (DefaultBackend), group (general) #: rc.cpp:85 msgid "Default backend." msgstr "Vaikimisi taustaprogramm." #. i18n: file: cirkuit.kcfg:14 #. i18n: ectx: label, entry (AutoSelectBackend), group (general) #. i18n: file: cirkuit_general_settings.ui:52 #. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoSelectBackend) #: rc.cpp:88 rc.cpp:118 msgid "Automatic backend selection" msgstr "Automaatne taustaprogrammi valik" #. i18n: file: cirkuit.kcfg:18 #. i18n: ectx: label, entry (RefreshInterval), group (general) #: rc.cpp:91 msgid "Preview generation refresh timeout." msgstr "Eelvaatluse loomise värskendamise ajaületus." #. i18n: file: cirkuit.kcfg:22 #. i18n: ectx: label, entry (AutoRefresh), group (general) #: rc.cpp:94 msgid "Enable automatic refresh." msgstr "Automaatse värskendamise lubamine." #. i18n: file: cirkuit.kcfg:26 #. i18n: ectx: label, entry (RefreshOnSave), group (general) #: rc.cpp:97 msgid "Refresh when document is saved." msgstr "Värskendamine dokumendi salvestamisel." #. i18n: file: cirkuit.kcfg:30 #. i18n: ectx: label, entry (ZoomToFit), group (general) #: rc.cpp:100 msgid "Automatically zoom the preview to fit the preview widget" msgstr "Eelvaatluse suuruse automaatne muutmine sobivaks eelvaatlusvidinaga" #. i18n: file: cirkuit.kcfg:34 #. i18n: ectx: label, entry (ResolutionPpm), group (general) #: rc.cpp:103 msgid "PNG and JPEG resolution." msgstr "PNG ja JPEG lahutus." #. i18n: file: cirkuit_general_settings.ui:14 #. i18n: ectx: property (windowTitle), widget (QWidget, CirkuitGeneralForm) #: rc.cpp:109 msgid "General settings" msgstr "Üldised seadistused" #. i18n: file: cirkuit_general_settings.ui:23 #. i18n: ectx: property (title), widget (QGroupBox, groupBackend) #: rc.cpp:112 msgid "Backends" msgstr "Taustaprogrammid" #. i18n: file: cirkuit_general_settings.ui:29 #. i18n: ectx: property (text), widget (QLabel, label_3) #: rc.cpp:115 msgid "Default backend:" msgstr "Vaikimisi taustaprogramm:" #. i18n: file: cirkuit_general_settings.ui:71 #. i18n: ectx: property (text), widget (QLabel, label) #: rc.cpp:124 msgid "Preview refresh interval (sec):" msgstr "Eelvaatluse värskendamise intervall (sek):" #. i18n: file: cirkuit_general_settings.ui:103 #. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoRefresh) #: rc.cpp:127 msgid "Automatic preview generation" msgstr "Eelvaatluse automaatne loomine" #. i18n: file: cirkuit_general_settings.ui:113 #. i18n: ectx: property (text), widget (QCheckBox, kcfg_RefreshOnSave) #: rc.cpp:130 msgid "Refresh the preview when saving the document" msgstr "Eelvaatluse värskendamine dokumendi salvestamisel" #. i18n: file: cirkuit_general_settings.ui:129 #. i18n: ectx: property (text), widget (QLabel, label_2) #: rc.cpp:133 msgid "PNG and JPEG resolution (DPI):" msgstr "PNG ja JPEG lahutus (DPI):" #. i18n: file: cirkuitui.rc:5 #. i18n: ectx: Menu (file) #: rc.cpp:136 msgid "&File" msgstr "&Fail" #. i18n: file: cirkuitui.rc:26 #. i18n: ectx: Menu (build) #: rc.cpp:139 msgid "&Preview" msgstr "&Eelvaatlus" #. i18n: file: cirkuitui.rc:33 #. i18n: ectx: Menu (view) #: rc.cpp:142 msgid "&View" msgstr "&Vaade" #. i18n: file: cirkuitui.rc:46 #. i18n: ectx: Menu (help) #: rc.cpp:145 msgid "&Help" msgstr "&Abi" #. i18n: file: cirkuitui.rc:54 #. i18n: ectx: ToolBar (mainToolBar) #: rc.cpp:148 msgid "Main Toolbar" msgstr "Peamine tööriistariba"cirkuit-0.4.3/po/et/CMakeLists.txt000644 001750 001750 00000000163 11677601640 020472 0ustar00scarlettscarlett000000 000000 file(GLOB _po_files *.po) GETTEXT_PROCESS_PO_FILES(et ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} ${_po_files} ) cirkuit-0.4.3/po/nl/000755 001750 001750 00000000000 11677602224 015732 5ustar00scarlettscarlett000000 000000 cirkuit-0.4.3/po/nl/cirkuit.po000644 001750 001750 00000033522 11677602224 017751 0ustar00scarlettscarlett000000 000000 # Copyright (C) YEAR This_file_is_part_of_KDE # This file is distributed under the same license as the PACKAGE package. # # Freek de Kruijf , 2010, 2011. msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2011-11-18 05:01+0100\n" "PO-Revision-Date: 2011-11-18 18:28+0100\n" "Last-Translator: Freek de Kruijf \n" "Language-Team: Dutch \n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Lokalize 1.2\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #: widgets/imageview.cpp:81 msgid "Zoom to fit" msgstr "Passend maken" #: widgets/templatechoosedialog.cpp:103 mainwindow.cpp:174 msgid "Template manager" msgstr "Sjabloonbeheerder" #: widgets/templatechoosedialog.cpp:193 msgid "Template name" msgstr "Naam sjabloon" #: widgets/templatechoosedialog.cpp:193 msgid "Insert the template name" msgstr "De sjabloonnaam invoegen" #: widgets/templatechoosedialog.cpp:217 msgid "Do you really want to delete the selected template?" msgstr "Wilt u het geselecteerde sjabloon verwijderen?" #: widgets/templatechoosedialog.cpp:218 msgid "Confirm deletion" msgstr "Verwijderen bevestigen" #: widgets/backendchoosedialog.cpp:26 #, kde-format msgid "" "

%1

%2

See %3 for more " "information
" msgstr "" "

%1

%2

Zie %3 voor meer " "informatie
" #: widgets/backendchoosedialog.cpp:33 msgid "Backend selection" msgstr "Backend-selectie" #: main.cpp:30 msgid "Cirkuit" msgstr "Cirkuit" #: main.cpp:30 msgid "" "An application to generate publication-ready figures. It is a KDE frontend " "for Circuit Macros by J. D. Aplevich, TikZ and Gnuplot.

Visit the Circuit Macros " "and TikZ websites for further " "information." msgstr "" "Een toepassing om figuren klaar te maken voor publicatie. Het is een KDE " "frontend voor 'Circuit Macros' door J. D. Aplevich, TikZ en Gnuplot. " "

Bezoek de websites Circuit Macros en TikZ voor verdere informatie." #: main.cpp:30 msgid "(c) 2011 Matteo Agostinelli" msgstr "(c) 2011 Matteo Agostinelli" #: main.cpp:31 msgid "Matteo Agostinelli" msgstr "Matteo Agostinelli" #: main.cpp:31 msgid "Maintainer" msgstr "Onderhouder" #: main.cpp:36 msgid "Document to open" msgstr "Te openen document" #: generatorthread.cpp:55 msgid "No backend could be selected!" msgstr "Er kon geen backend geselecteerd worden!" #: mainwindow.cpp:81 msgid "" "A KDE text-editor component could not be found;\n" "please check your KDE installation." msgstr "" "Er is geen KDE-tekstbewerkingscomponent gevonden.\n" "Controleer de installatie van KDE." #. i18n: file: cirkuit_general_settings.ui:65 #. i18n: ectx: property (title), widget (QGroupBox, groupBox) #: mainwindow.cpp:90 rc.cpp:121 msgid "Preview" msgstr "Voorbeeld" #: mainwindow.cpp:96 msgid "Log" msgstr "Log" #: mainwindow.cpp:158 msgid "Export..." msgstr "Exporteren..." #: mainwindow.cpp:162 msgid "Build preview" msgstr "Bouwvoorbeeld" #: mainwindow.cpp:168 msgid "Open preview" msgstr "Voorbeeld openen" #: mainwindow.cpp:178 msgid "Show manual" msgstr "Handleiding tonen" #: mainwindow.cpp:182 msgid "Show examples" msgstr "Voorbeelden tonen" #: mainwindow.cpp:190 msgid "Download Examples" msgstr "Voorbeelden downloaden" #: mainwindow.cpp:195 msgid "Upload Example" msgstr "Voorbeeld uploaden" #: mainwindow.cpp:200 msgid "&Open Example" msgstr "Voorbeeld &openen" #: mainwindow.cpp:238 msgid "Open file - Cirkuit" msgstr "Bestand openen - Cirkuit" #: mainwindow.cpp:281 msgid "Save file - Cirkuit" msgstr "Bestand opslaan - Cirkuit" #: mainwindow.cpp:313 msgid "Export image - Cirkuit" msgstr "Afbeelding exporteren - Cirkuit" #: mainwindow.cpp:402 #, kde-format msgid "Backend %1 not found" msgstr "Backend %1 niet gevonden" #: mainwindow.cpp:411 msgid "No valid backend selected." msgstr "Geen geldige backend geselecteerd." #: mainwindow.cpp:460 msgid "General" msgstr "Algemeen" #: mainwindow.cpp:519 msgid "" "Circuit Macros could not be found on your system. The application will not " "work if the macros are not installed. Do you want to proceed with the " "installation?" msgstr "" "Circuit Macros konden niet op uw systeem worden gevonden. De toepassing zal " "niet werken als de macros niet zijn geïnstalleerd. Wilt u doorgaan met de " "installatie?" #: mainwindow.cpp:519 msgid "Installation needed" msgstr "Installatie is nodig" #: mainwindow.cpp:524 msgid "Downloading Circuit Macros. Please wait..." msgstr "Circuit Macros downloaden. Even geduld a.u.b..." #: mainwindow.cpp:532 #, kde-format msgid "" "A new version of Circuit Macros (version %1) is available. Do you want to " "upgrade?" msgstr "" "Er is een nieuwe versie van Circuit Macros (versie %1) beschikbaar. Wilt u " "opwaarderen?" #: mainwindow.cpp:532 msgid "Upgrade" msgstr "Opwaarderen" #: mainwindow.cpp:550 msgid "Unable to generate a preview for the current input" msgstr "Kan geen voorbeeld van de huidige invoer aanmaken" #: mainwindow.cpp:577 msgid "" "No working backend has been found. Cirkuit is unable to generate any figure." msgstr "" "Er is geen werkende backend gevonden. Cirkuit kan geen enkel figuur " "genereren." #: mainwindow.cpp:577 msgid "No backends found" msgstr "Geen backends gevonden" #: mainwindow.cpp:610 #, kde-format msgid "%1 manual" msgstr "%1 handleiding" #: mainwindow.cpp:611 #, kde-format msgid "%1 examples" msgstr "%1 voorbeelden" #: mainwindow.cpp:630 msgid "Save the current document before uploading it" msgstr "Het huidige document opslaan alvorens het te uploaden" #: rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Freek de Kruijf" #: rc.cpp:2 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "freekdekruijf@kde.nl" #. i18n: file: backends/circuitmacros/circuitmacrosbackend.kcfg:18 #. i18n: ectx: label, entry (templateurl), group (CircuitMacrosBackend) #: rc.cpp:5 msgid "The location of the Circuit Macros template." msgstr "De locatie van het sjabloon van Circuit Macros." #. i18n: file: backends/circuitmacros/circuitmacrosbackend.kcfg:22 #. i18n: ectx: label, entry (tikztemplateurl), group (CircuitMacrosBackend) #: rc.cpp:8 msgid "The location of the Circuit Macros template with TikZ backend." msgstr "De locatie van het sjabloon van Circuit Macros met TikZ-backend." #. i18n: file: backends/circuitmacros/circuitmacrosbackend.kcfg:26 #. i18n: ectx: label, entry (latexargs), group (CircuitMacrosBackend) #. i18n: file: backends/tikz/tikzbackend.kcfg:14 #. i18n: ectx: label, entry (latexargs), group (TikzBackend) #. i18n: file: backends/pstricks/pstricksbackend.kcfg:14 #. i18n: ectx: label, entry (latexargs), group (PstricksBackend) #. i18n: file: cirkuit.kcfg:38 #. i18n: ectx: label, entry (LatexArgs), group (general) #: rc.cpp:11 rc.cpp:47 rc.cpp:54 rc.cpp:106 msgid "The default arguments called in the latex executable" msgstr "De standaard argumenten aangeroepen in het uitvoerbare programma latex" #. i18n: file: backends/circuitmacros/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_template) #. i18n: file: backends/circuitmacros/settings.ui:27 #. i18n: ectx: property (text), widget (QLabel, lbl_tikztemplate) #. i18n: file: backends/gnuplot/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_tikztemplate) #. i18n: file: backends/tikz/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_tikztemplate) #. i18n: file: backends/pstricks/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_pstrickstemplate) #: rc.cpp:16 rc.cpp:19 rc.cpp:38 rc.cpp:41 rc.cpp:58 msgid "Template path:" msgstr "Pad van sjabloon:" #. i18n: file: backends/circuitmacros/settings.ui:37 #. i18n: ectx: property (text), widget (QLabel, label_4) #: rc.cpp:22 msgid "Pic interpreter" msgstr "Pic-interpreter" #. i18n: file: backends/circuitmacros/settings.ui:45 #. i18n: ectx: property (text), item, widget (KComboBox, kcfg_PicInterpreter) #: rc.cpp:25 msgid "dpic + PSTricks" msgstr "dpic + PSTricks" #. i18n: file: backends/circuitmacros/settings.ui:50 #. i18n: ectx: property (text), item, widget (KComboBox, kcfg_PicInterpreter) #: rc.cpp:28 msgid "dpic + TikZ" msgstr "dpic + TikZ" #. i18n: file: backends/circuitmacros/settings.ui:55 #. i18n: ectx: property (text), item, widget (KComboBox, kcfg_PicInterpreter) #: rc.cpp:31 msgid "gpic" msgstr "gpic" #. i18n: file: backends/gnuplot/gnuplotbackend.kcfg:10 #. i18n: ectx: label, entry (templateurl), group (GnuplotBackend) #: rc.cpp:34 msgid "The location of the Gnuplot template." msgstr "De locatie van het sjabloon van Gnuplot." #. i18n: file: backends/tikz/tikzbackend.kcfg:10 #. i18n: ectx: label, entry (templateurl), group (TikzBackend) #: rc.cpp:44 msgid "The location of the TikZ template." msgstr "De locatie van het sjabloon van TikZ." #. i18n: file: backends/pstricks/pstricksbackend.kcfg:10 #. i18n: ectx: label, entry (templateurl), group (PstricksBackend) #: rc.cpp:51 msgid "The location of the PSTricks template." msgstr "De locatie van het sjabloon van PSTricks." #. i18n: file: widgets/backendchooser.ui:29 #. i18n: ectx: property (text), widget (QLabel, label) #: rc.cpp:61 msgid "Choose the Backend to use:" msgstr "Kies het te gebruiken backend:" #. i18n: file: widgets/backendchooser.ui:59 #. i18n: ectx: property (text), widget (QCheckBox, makeDefault) #: rc.cpp:64 msgid "Make this the default backend" msgstr "Dit backend standaard maken" #. i18n: file: widgets/templatechooser.ui:17 #. i18n: ectx: property (text), widget (QLabel, label) #: rc.cpp:67 msgid "Backend:" msgstr "Backend:" #. i18n: file: widgets/templatechooser.ui:48 #. i18n: ectx: property (text), widget (KPushButton, btnAdd) #: rc.cpp:70 msgid "New" msgstr "Nieuw" #. i18n: file: widgets/templatechooser.ui:55 #. i18n: ectx: property (text), widget (KPushButton, btnEdit) #: rc.cpp:73 msgid "Edit" msgstr "Bewerken" #. i18n: file: widgets/templatechooser.ui:62 #. i18n: ectx: property (text), widget (KPushButton, btnRemove) #: rc.cpp:76 msgid "Remove" msgstr "Verwijderen" #. i18n: file: widgets/templatechooser.ui:69 #. i18n: ectx: property (text), widget (KPushButton, btnDownload) #: rc.cpp:79 msgid "Download" msgstr "Downloaden" #. i18n: file: widgets/templatechooser.ui:76 #. i18n: ectx: property (text), widget (KPushButton, btnUpload) #: rc.cpp:82 msgid "Upload" msgstr "Uploaden" #. i18n: file: cirkuit.kcfg:10 #. i18n: ectx: label, entry (DefaultBackend), group (general) #: rc.cpp:85 msgid "Default backend." msgstr "Standaard backend." #. i18n: file: cirkuit.kcfg:14 #. i18n: ectx: label, entry (AutoSelectBackend), group (general) #. i18n: file: cirkuit_general_settings.ui:52 #. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoSelectBackend) #: rc.cpp:88 rc.cpp:118 msgid "Automatic backend selection" msgstr "Automatische backend-selectie" #. i18n: file: cirkuit.kcfg:18 #. i18n: ectx: label, entry (RefreshInterval), group (general) #: rc.cpp:91 msgid "Preview generation refresh timeout." msgstr "Verversingtijdslimiet voor het maken van een voorbeeld." #. i18n: file: cirkuit.kcfg:22 #. i18n: ectx: label, entry (AutoRefresh), group (general) #: rc.cpp:94 msgid "Enable automatic refresh." msgstr "Automatisch verversen inschakelen." #. i18n: file: cirkuit.kcfg:26 #. i18n: ectx: label, entry (RefreshOnSave), group (general) #: rc.cpp:97 msgid "Refresh when document is saved." msgstr "Verversen wanneer document is opgeslagen." #. i18n: file: cirkuit.kcfg:30 #. i18n: ectx: label, entry (ZoomToFit), group (general) #: rc.cpp:100 msgid "Automatically zoom the preview to fit the preview widget" msgstr "Automatisch het voorbeeld zoomen om te passen in het voorbeeldwidget" #. i18n: file: cirkuit.kcfg:34 #. i18n: ectx: label, entry (ResolutionPpm), group (general) #: rc.cpp:103 msgid "PNG and JPEG resolution." msgstr "PNG en JPEG-resolutie." #. i18n: file: cirkuit_general_settings.ui:14 #. i18n: ectx: property (windowTitle), widget (QWidget, CirkuitGeneralForm) #: rc.cpp:109 msgid "General settings" msgstr "Algemene instellingen" #. i18n: file: cirkuit_general_settings.ui:23 #. i18n: ectx: property (title), widget (QGroupBox, groupBackend) #: rc.cpp:112 msgid "Backends" msgstr "Backends" #. i18n: file: cirkuit_general_settings.ui:29 #. i18n: ectx: property (text), widget (QLabel, label_3) #: rc.cpp:115 msgid "Default backend:" msgstr "Standaard backend:" #. i18n: file: cirkuit_general_settings.ui:71 #. i18n: ectx: property (text), widget (QLabel, label) #: rc.cpp:124 msgid "Preview refresh interval (sec):" msgstr "Verversingsinterval van voorbeeld (sec):" #. i18n: file: cirkuit_general_settings.ui:103 #. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoRefresh) #: rc.cpp:127 msgid "Automatic preview generation" msgstr "Automatisch voorbeeld aanmaken" #. i18n: file: cirkuit_general_settings.ui:113 #. i18n: ectx: property (text), widget (QCheckBox, kcfg_RefreshOnSave) #: rc.cpp:130 msgid "Refresh the preview when saving the document" msgstr "Het voorbeeld verversen wanneer document wordt opgeslagen" #. i18n: file: cirkuit_general_settings.ui:129 #. i18n: ectx: property (text), widget (QLabel, label_2) #: rc.cpp:133 msgid "PNG and JPEG resolution (DPI):" msgstr "PNG- en JPEG-resolutie (DPI):" #. i18n: file: cirkuitui.rc:5 #. i18n: ectx: Menu (file) #: rc.cpp:136 msgid "&File" msgstr "&Bestand" #. i18n: file: cirkuitui.rc:26 #. i18n: ectx: Menu (build) #: rc.cpp:139 msgid "&Preview" msgstr "&Voorbeeld" #. i18n: file: cirkuitui.rc:33 #. i18n: ectx: Menu (view) #: rc.cpp:142 msgid "&View" msgstr "Beel&d" #. i18n: file: cirkuitui.rc:46 #. i18n: ectx: Menu (help) #: rc.cpp:145 msgid "&Help" msgstr "&Help" #. i18n: file: cirkuitui.rc:54 #. i18n: ectx: ToolBar (mainToolBar) #: rc.cpp:148 msgid "Main Toolbar" msgstr "Hoofdwerkbalk" #, fuzzycirkuit-0.4.3/po/nl/CMakeLists.txt000644 001750 001750 00000000163 11677602224 020472 0ustar00scarlettscarlett000000 000000 file(GLOB _po_files *.po) GETTEXT_PROCESS_PO_FILES(nl ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} ${_po_files} ) cirkuit-0.4.3/po/it/000755 001750 001750 00000000000 11677602055 015737 5ustar00scarlettscarlett000000 000000 cirkuit-0.4.3/po/it/cirkuit.po000644 001750 001750 00000034565 11677602055 017766 0ustar00scarlettscarlett000000 000000 # translation of cirkuit.po to Italian # Matteo Agostinelli , 2011. msgid "" msgstr "" "Project-Id-Version: cirkuit\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2011-11-18 05:01+0100\n" "PO-Revision-Date: 2011-01-04 16:19+0100\n" "Last-Translator: Matteo Agostinelli \n" "Language-Team: Italian \n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #: widgets/imageview.cpp:81 msgid "Zoom to fit" msgstr "Ridimensiona automaticamente" #: widgets/templatechoosedialog.cpp:103 mainwindow.cpp:174 #, fuzzy #| msgid "Template path:" msgid "Template manager" msgstr "Percorso del template:" #: widgets/templatechoosedialog.cpp:193 #, fuzzy #| msgid "Template path:" msgid "Template name" msgstr "Percorso del template:" #: widgets/templatechoosedialog.cpp:193 msgid "Insert the template name" msgstr "Inserire il nome del template" #: widgets/templatechoosedialog.cpp:217 msgid "Do you really want to delete the selected template?" msgstr "Sei sicuro di voler eliminare il template selezionato?" #: widgets/templatechoosedialog.cpp:218 msgid "Confirm deletion" msgstr "Conferma cancellazione" #: widgets/backendchoosedialog.cpp:26 #, kde-format msgid "" "

%1

%2

See %3 for more " "information
" msgstr "" #: widgets/backendchoosedialog.cpp:33 #, fuzzy #| msgid "No valid backend selected!" msgid "Backend selection" msgstr "Nessun backend valido!" #: main.cpp:30 msgid "Cirkuit" msgstr "Cirkuit" #: main.cpp:30 msgid "" "An application to generate publication-ready figures. It is a KDE frontend " "for Circuit Macros by J. D. Aplevich, TikZ and Gnuplot.

Visit the Circuit Macros " "and TikZ websites for further " "information." msgstr "" "Un'applicazione per generare figure di qualità elevata. È un'interfaccia KDE " "per Circuit Macros di J. D. Aplevich, TikZ e Gnuplot.

Visita i siti di Circuit Macros " "e TikZ per maggiori informazioni." #: main.cpp:30 #, fuzzy #| msgid "(c) 2010 Matteo Agostinelli" msgid "(c) 2011 Matteo Agostinelli" msgstr "© 2010 Matteo Agostinelli" #: main.cpp:31 msgid "Matteo Agostinelli" msgstr "Matteo Agostinelli" #: main.cpp:31 msgid "Maintainer" msgstr "Sviluppatore principale" #: main.cpp:36 msgid "Document to open" msgstr "Documento da aprire" #: generatorthread.cpp:55 #, fuzzy #| msgid "No backend could be selected!" msgid "No backend could be selected!" msgstr "Non è possibile selezionare alcun backend" #: mainwindow.cpp:81 msgid "" "A KDE text-editor component could not be found;\n" "please check your KDE installation." msgstr "" "Non è possibile trovare il componente editor di testo KDE;\n" "prego controllare la propria installazione KDE" #. i18n: file: cirkuit_general_settings.ui:65 #. i18n: ectx: property (title), widget (QGroupBox, groupBox) #: mainwindow.cpp:90 rc.cpp:121 #, fuzzy #| msgid "&Preview" msgid "Preview" msgstr "&Anteprima" #: mainwindow.cpp:96 msgid "Log" msgstr "Log" #: mainwindow.cpp:158 msgid "Export..." msgstr "Esporta..." #: mainwindow.cpp:162 msgid "Build preview" msgstr "Crea anteprima" #: mainwindow.cpp:168 msgid "Open preview" msgstr "Apri anteprima" #: mainwindow.cpp:178 msgid "Show manual" msgstr "Mostra manuale" #: mainwindow.cpp:182 #, fuzzy #| msgid "Show Circuit Macros examples" msgid "Show examples" msgstr "Mostra degli esempi di Circuit Macros" #: mainwindow.cpp:190 #, fuzzy #| msgid "Show Circuit Macros examples" msgid "Download Examples" msgstr "Mostra degli esempi di Circuit Macros" #: mainwindow.cpp:195 msgid "Upload Example" msgstr "Carica esempio" #: mainwindow.cpp:200 msgid "&Open Example" msgstr "Apri esempio" #: mainwindow.cpp:238 msgid "Open file - Cirkuit" msgstr "Apri file - Cirkuit" #: mainwindow.cpp:281 msgid "Save file - Cirkuit" msgstr "Salva file - Cirkuit" #: mainwindow.cpp:313 msgid "Export image - Cirkuit" msgstr "Esporta immagine - Cirkuit" #: mainwindow.cpp:402 #, kde-format msgid "Backend %1 not found" msgstr "Backend %1 non trovato" #: mainwindow.cpp:411 #, fuzzy #| msgid "No valid backend selected!" msgid "No valid backend selected." msgstr "Nessun backend valido!" #: mainwindow.cpp:460 msgid "General" msgstr "Generale" #: mainwindow.cpp:519 msgid "" "Circuit Macros could not be found on your system. The application will not " "work if the macros are not installed. Do you want to proceed with the " "installation?" msgstr "" "Circuit Macros non è stato trovato nel tuo sistema. L'applicazione non " "funzionerà a meno che Circuit Macros non sia installato. Vuoi procedere con " "l'installazione?" #: mainwindow.cpp:519 msgid "Installation needed" msgstr "Necessaria installazione" #: mainwindow.cpp:524 #, fuzzy #| msgid "Download Circuit Macros. Please wait..." msgid "Downloading Circuit Macros. Please wait..." msgstr "Scarico Circuit Macros. Prego attendere..." #: mainwindow.cpp:532 #, kde-format msgid "" "A new version of Circuit Macros (version %1) is available. Do you want to " "upgrade?" msgstr "" "Una nuova versione di Circuit Macros (versione %1) è disponibile. Vuoi " "aggiornare?" #: mainwindow.cpp:532 msgid "Upgrade" msgstr "Aggiorna" #: mainwindow.cpp:550 msgid "Unable to generate a preview for the current input" msgstr "Impossibile generare un'anteprima per l'input attuale" #: mainwindow.cpp:577 msgid "" "No working backend has been found. Cirkuit is unable to generate any figure." msgstr "" #: mainwindow.cpp:577 #, fuzzy #| msgid "Backend %1 not found" msgid "No backends found" msgstr "Backend %1 non trovato" #: mainwindow.cpp:610 #, kde-format msgid "%1 manual" msgstr "Manuale di %1" #: mainwindow.cpp:611 #, kde-format msgid "%1 examples" msgstr "Esempi di %1" #: mainwindow.cpp:630 msgid "Save the current document before uploading it" msgstr "Salvare il documento prima di caricarlo" #: rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Matteo Agostinelli" #: rc.cpp:2 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "agostinelli@gmail.com" #. i18n: file: backends/circuitmacros/circuitmacrosbackend.kcfg:18 #. i18n: ectx: label, entry (templateurl), group (CircuitMacrosBackend) #: rc.cpp:5 msgid "The location of the Circuit Macros template." msgstr "La locazione del template per Circuit Macros" #. i18n: file: backends/circuitmacros/circuitmacrosbackend.kcfg:22 #. i18n: ectx: label, entry (tikztemplateurl), group (CircuitMacrosBackend) #: rc.cpp:8 msgid "The location of the Circuit Macros template with TikZ backend." msgstr "La locazione del template per Circuit Macros con il backend TikZ" #. i18n: file: backends/circuitmacros/circuitmacrosbackend.kcfg:26 #. i18n: ectx: label, entry (latexargs), group (CircuitMacrosBackend) #. i18n: file: backends/tikz/tikzbackend.kcfg:14 #. i18n: ectx: label, entry (latexargs), group (TikzBackend) #. i18n: file: backends/pstricks/pstricksbackend.kcfg:14 #. i18n: ectx: label, entry (latexargs), group (PstricksBackend) #. i18n: file: cirkuit.kcfg:38 #. i18n: ectx: label, entry (LatexArgs), group (general) #: rc.cpp:11 rc.cpp:47 rc.cpp:54 rc.cpp:106 msgid "The default arguments called in the latex executable" msgstr "" #. i18n: file: backends/circuitmacros/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_template) #. i18n: file: backends/circuitmacros/settings.ui:27 #. i18n: ectx: property (text), widget (QLabel, lbl_tikztemplate) #. i18n: file: backends/gnuplot/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_tikztemplate) #. i18n: file: backends/tikz/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_tikztemplate) #. i18n: file: backends/pstricks/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_pstrickstemplate) #: rc.cpp:16 rc.cpp:19 rc.cpp:38 rc.cpp:41 rc.cpp:58 msgid "Template path:" msgstr "Percorso del template:" #. i18n: file: backends/circuitmacros/settings.ui:37 #. i18n: ectx: property (text), widget (QLabel, label_4) #: rc.cpp:22 msgid "Pic interpreter" msgstr "Interprete pic:" #. i18n: file: backends/circuitmacros/settings.ui:45 #. i18n: ectx: property (text), item, widget (KComboBox, kcfg_PicInterpreter) #: rc.cpp:25 msgid "dpic + PSTricks" msgstr "dpic + PSTricks" #. i18n: file: backends/circuitmacros/settings.ui:50 #. i18n: ectx: property (text), item, widget (KComboBox, kcfg_PicInterpreter) #: rc.cpp:28 msgid "dpic + TikZ" msgstr "dpic + TikZ" #. i18n: file: backends/circuitmacros/settings.ui:55 #. i18n: ectx: property (text), item, widget (KComboBox, kcfg_PicInterpreter) #: rc.cpp:31 msgid "gpic" msgstr "gpic" #. i18n: file: backends/gnuplot/gnuplotbackend.kcfg:10 #. i18n: ectx: label, entry (templateurl), group (GnuplotBackend) #: rc.cpp:34 msgid "The location of the Gnuplot template." msgstr "La locazione del template Gnuplot" #. i18n: file: backends/tikz/tikzbackend.kcfg:10 #. i18n: ectx: label, entry (templateurl), group (TikzBackend) #: rc.cpp:44 msgid "The location of the TikZ template." msgstr "La locazione del template TikZ" #. i18n: file: backends/pstricks/pstricksbackend.kcfg:10 #. i18n: ectx: label, entry (templateurl), group (PstricksBackend) #: rc.cpp:51 #, fuzzy #| msgid "The location of the Circuit Macros template." msgid "The location of the PSTricks template." msgstr "La locazione del template per Circuit Macros" #. i18n: file: widgets/backendchooser.ui:29 #. i18n: ectx: property (text), widget (QLabel, label) #: rc.cpp:61 msgid "Choose the Backend to use:" msgstr "Selezionare il backend che si intende usare:" #. i18n: file: widgets/backendchooser.ui:59 #. i18n: ectx: property (text), widget (QCheckBox, makeDefault) #: rc.cpp:64 #, fuzzy #| msgid "Default backend:" msgid "Make this the default backend" msgstr "Backend predefinito:" #. i18n: file: widgets/templatechooser.ui:17 #. i18n: ectx: property (text), widget (QLabel, label) #: rc.cpp:67 msgid "Backend:" msgstr "" #. i18n: file: widgets/templatechooser.ui:48 #. i18n: ectx: property (text), widget (KPushButton, btnAdd) #: rc.cpp:70 #, fuzzy #| msgid "&New" msgid "New" msgstr "&Nuovo" #. i18n: file: widgets/templatechooser.ui:55 #. i18n: ectx: property (text), widget (KPushButton, btnEdit) #: rc.cpp:73 msgid "Edit" msgstr "Modifica" #. i18n: file: widgets/templatechooser.ui:62 #. i18n: ectx: property (text), widget (KPushButton, btnRemove) #: rc.cpp:76 msgid "Remove" msgstr "Elimina" #. i18n: file: widgets/templatechooser.ui:69 #. i18n: ectx: property (text), widget (KPushButton, btnDownload) #: rc.cpp:79 #, fuzzy #| msgid "Show Circuit Macros examples" msgid "Download" msgstr "Mostra degli esempi di Circuit Macros" #. i18n: file: widgets/templatechooser.ui:76 #. i18n: ectx: property (text), widget (KPushButton, btnUpload) #: rc.cpp:82 #, fuzzy #| msgid "Upgrade" msgid "Upload" msgstr "Aggiorna" #. i18n: file: cirkuit.kcfg:10 #. i18n: ectx: label, entry (DefaultBackend), group (general) #: rc.cpp:85 msgid "Default backend." msgstr "Backend predefinito." #. i18n: file: cirkuit.kcfg:14 #. i18n: ectx: label, entry (AutoSelectBackend), group (general) #. i18n: file: cirkuit_general_settings.ui:52 #. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoSelectBackend) #: rc.cpp:88 rc.cpp:118 #, fuzzy #| msgid "No valid backend selected!" msgid "Automatic backend selection" msgstr "Nessun backend valido!" #. i18n: file: cirkuit.kcfg:18 #. i18n: ectx: label, entry (RefreshInterval), group (general) #: rc.cpp:91 msgid "Preview generation refresh timeout." msgstr "Intervallo di generazione automatica dell'anteprima" #. i18n: file: cirkuit.kcfg:22 #. i18n: ectx: label, entry (AutoRefresh), group (general) #: rc.cpp:94 msgid "Enable automatic refresh." msgstr "Generazione automatica dell'anteprima" #. i18n: file: cirkuit.kcfg:26 #. i18n: ectx: label, entry (RefreshOnSave), group (general) #: rc.cpp:97 msgid "Refresh when document is saved." msgstr "Risoluzione dei file PNG e JPEG" #. i18n: file: cirkuit.kcfg:30 #. i18n: ectx: label, entry (ZoomToFit), group (general) #: rc.cpp:100 msgid "Automatically zoom the preview to fit the preview widget" msgstr "Larghezza della finestra principale" #. i18n: file: cirkuit.kcfg:34 #. i18n: ectx: label, entry (ResolutionPpm), group (general) #: rc.cpp:103 msgid "PNG and JPEG resolution." msgstr "Altezza della finestra principale" #. i18n: file: cirkuit_general_settings.ui:14 #. i18n: ectx: property (windowTitle), widget (QWidget, CirkuitGeneralForm) #: rc.cpp:109 msgid "General settings" msgstr "Impostazioni generali" #. i18n: file: cirkuit_general_settings.ui:23 #. i18n: ectx: property (title), widget (QGroupBox, groupBackend) #: rc.cpp:112 msgid "Backends" msgstr "" #. i18n: file: cirkuit_general_settings.ui:29 #. i18n: ectx: property (text), widget (QLabel, label_3) #: rc.cpp:115 msgid "Default backend:" msgstr "Backend predefinito:" #. i18n: file: cirkuit_general_settings.ui:71 #. i18n: ectx: property (text), widget (QLabel, label) #: rc.cpp:124 msgid "Preview refresh interval (sec):" msgstr "Intervallo di generazione dell'anteprima (sec):" #. i18n: file: cirkuit_general_settings.ui:103 #. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoRefresh) #: rc.cpp:127 #, fuzzy #| msgid "Enable automatic preview generation" msgid "Automatic preview generation" msgstr "Abilita generazione automatica dell'anteprima" #. i18n: file: cirkuit_general_settings.ui:113 #. i18n: ectx: property (text), widget (QCheckBox, kcfg_RefreshOnSave) #: rc.cpp:130 msgid "Refresh the preview when saving the document" msgstr "Aggiorna l'anteprima quando si salva il documento" #. i18n: file: cirkuit_general_settings.ui:129 #. i18n: ectx: property (text), widget (QLabel, label_2) #: rc.cpp:133 #, fuzzy #| msgid "PNG and JPEG resolution (in DPI)" msgid "PNG and JPEG resolution (DPI):" msgstr "Risoluzione dei file PNG e JPG (in DPI)" #. i18n: file: cirkuitui.rc:5 #. i18n: ectx: Menu (file) #: rc.cpp:136 msgid "&File" msgstr "&File" #. i18n: file: cirkuitui.rc:26 #. i18n: ectx: Menu (build) #: rc.cpp:139 msgid "&Preview" msgstr "&Anteprima" #. i18n: file: cirkuitui.rc:33 #. i18n: ectx: Menu (view) #: rc.cpp:142 msgid "&View" msgstr "&Visualizza" #. i18n: file: cirkuitui.rc:46 #. i18n: ectx: Menu (help) #: rc.cpp:145 msgid "&Help" msgstr "&Aiuto" #. i18n: file: cirkuitui.rc:54 #. i18n: ectx: ToolBar (mainToolBar) #: rc.cpp:148 msgid "Main Toolbar" msgstr "Barra dgli strumenti" #, fuzzycirkuit-0.4.3/po/it/CMakeLists.txt000644 001750 001750 00000000163 11677602055 020477 0ustar00scarlettscarlett000000 000000 file(GLOB _po_files *.po) GETTEXT_PROCESS_PO_FILES(it ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} ${_po_files} ) cirkuit-0.4.3/po/pl/000755 001750 001750 00000000000 11677602262 015736 5ustar00scarlettscarlett000000 000000 cirkuit-0.4.3/po/pl/cirkuit.po000644 001750 001750 00000033750 11677602262 017760 0ustar00scarlettscarlett000000 000000 # Copyright (C) YEAR This_file_is_part_of_KDE # This file is distributed under the same license as the PACKAGE package. # # Łukasz Wojniłowicz , 2011. msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2011-11-18 05:01+0100\n" "PO-Revision-Date: 2011-07-25 17:57+0200\n" "Last-Translator: Łukasz Wojniłowicz \n" "Language-Team: Polish \n" "Language: pl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Lokalize 1.2\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2);\n" #: widgets/imageview.cpp:81 msgid "Zoom to fit" msgstr "Powiększ tak, aby dopasować" #: widgets/templatechoosedialog.cpp:103 mainwindow.cpp:174 msgid "Template manager" msgstr "Menadżer szablonów" #: widgets/templatechoosedialog.cpp:193 msgid "Template name" msgstr "Nazwa szablonu" #: widgets/templatechoosedialog.cpp:193 msgid "Insert the template name" msgstr "Wstaw nazwę szablonu" #: widgets/templatechoosedialog.cpp:217 msgid "Do you really want to delete the selected template?" msgstr "Czy na pewno chcesz usunąć wybrany szablon?" #: widgets/templatechoosedialog.cpp:218 msgid "Confirm deletion" msgstr "Potwierdź usunięcie" #: widgets/backendchoosedialog.cpp:26 #, kde-format msgid "" "

%1

%2

See %3 for more " "information
" msgstr "" "

%1

%2

Zobacz %3 po więcej " "informacji
" #: widgets/backendchoosedialog.cpp:33 msgid "Backend selection" msgstr "Wybór silnika" #: main.cpp:30 msgid "Cirkuit" msgstr "Cirkuit" #: main.cpp:30 msgid "" "An application to generate publication-ready figures. It is a KDE frontend " "for Circuit Macros by J. D. Aplevich, TikZ and Gnuplot.

Visit the Circuit Macros " "and TikZ websites for further " "information." msgstr "" "Program generujący rysunki gotowe do publikacji. Jest to nakładka dla KDE " "dla Circuit Macros napisanych przez J. D. Aplevich, TikZ i Gnuplot. " "

Odwiedź stronyCircuit Macros i TikZ po dalsze informacje." #: main.cpp:30 #, fuzzy #| msgid "(c) 2010 Matteo Agostinelli" msgid "(c) 2011 Matteo Agostinelli" msgstr "(c) 2010 Matteo Agostinelli" #: main.cpp:31 msgid "Matteo Agostinelli" msgstr "Matteo Agostinelli" #: main.cpp:31 msgid "Maintainer" msgstr "Opiekun" #: main.cpp:36 msgid "Document to open" msgstr "Dokument do otwarcia" #: generatorthread.cpp:55 msgid "No backend could be selected!" msgstr "Nie można wybrać żadnego silnika!" #: mainwindow.cpp:81 msgid "" "A KDE text-editor component could not be found;\n" "please check your KDE installation." msgstr "" "Nie znaleziono komponentu edytora tekstowego dla KDE;\n" "proszę sprawdzić swoją instalację KDE." #. i18n: file: cirkuit_general_settings.ui:65 #. i18n: ectx: property (title), widget (QGroupBox, groupBox) #: mainwindow.cpp:90 rc.cpp:121 msgid "Preview" msgstr "Podgląd" #: mainwindow.cpp:96 msgid "Log" msgstr "Dziennik" #: mainwindow.cpp:158 msgid "Export..." msgstr "Eksportuj..." #: mainwindow.cpp:162 msgid "Build preview" msgstr "Zbuduj podgląd" #: mainwindow.cpp:168 msgid "Open preview" msgstr "Otwórz podgląd" #: mainwindow.cpp:178 msgid "Show manual" msgstr "Pokaż instrukcję" #: mainwindow.cpp:182 msgid "Show examples" msgstr "Pokaż przykłady" #: mainwindow.cpp:190 msgid "Download Examples" msgstr "Pobierz przykłady" #: mainwindow.cpp:195 msgid "Upload Example" msgstr "Wyślij przykłady" #: mainwindow.cpp:200 msgid "&Open Example" msgstr "&Otwórz przykład" #: mainwindow.cpp:238 msgid "Open file - Cirkuit" msgstr "Otwórz plik - Cirkuit" #: mainwindow.cpp:281 msgid "Save file - Cirkuit" msgstr "Zapisz plik - Cirkuit" #: mainwindow.cpp:313 msgid "Export image - Cirkuit" msgstr "Eksportuj obraz - Cirkuit" #: mainwindow.cpp:402 #, kde-format msgid "Backend %1 not found" msgstr "Nie znaleziono silnika %1" #: mainwindow.cpp:411 msgid "No valid backend selected." msgstr "Nie wybrano poprawnego silnika." #: mainwindow.cpp:460 msgid "General" msgstr "Ogólne" #: mainwindow.cpp:519 msgid "" "Circuit Macros could not be found on your system. The application will not " "work if the macros are not installed. Do you want to proceed with the " "installation?" msgstr "" "Nie można znaleźć Circuit Macros na twoim systemie. Program nie zadziała, " "jeśli te makra nie zostaną zainstalowane. Czy chcesz kontynuować z " "instalacją?" #: mainwindow.cpp:519 msgid "Installation needed" msgstr "Potrzebna instalacja" #: mainwindow.cpp:524 #, fuzzy #| msgid "Download Circuit Macros. Please wait..." msgid "Downloading Circuit Macros. Please wait..." msgstr "Pobierz Circuit Macros. Proszę czekać..." #: mainwindow.cpp:532 #, kde-format msgid "" "A new version of Circuit Macros (version %1) is available. Do you want to " "upgrade?" msgstr "" "Jest dostępna nowa wersja Circuit Macros (wersja %1). Czy chcesz uaktualnić?" #: mainwindow.cpp:532 msgid "Upgrade" msgstr "Uaktualnij" #: mainwindow.cpp:550 msgid "Unable to generate a preview for the current input" msgstr "Nie można wygenerować podglądu dla bieżącego wejścia" #: mainwindow.cpp:577 msgid "" "No working backend has been found. Cirkuit is unable to generate any figure." msgstr "" "Nie znaleziono działającego silnika. Cirkuit nie może wygenerować " "jakiegokolwiek rysunku." #: mainwindow.cpp:577 msgid "No backends found" msgstr "Nie znaleziono żadnego silnika" #: mainwindow.cpp:610 #, kde-format msgid "%1 manual" msgstr "Instrukcja %1" #: mainwindow.cpp:611 #, kde-format msgid "%1 examples" msgstr "Przykłady %1" #: mainwindow.cpp:630 msgid "Save the current document before uploading it" msgstr "Zapisz bieżący dokument przed jego wysłaniem" #: rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Łukasz Wojniłowicz" #: rc.cpp:2 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "lukasz.wojnilowicz@gmail.com" #. i18n: file: backends/circuitmacros/circuitmacrosbackend.kcfg:18 #. i18n: ectx: label, entry (templateurl), group (CircuitMacrosBackend) #: rc.cpp:5 msgid "The location of the Circuit Macros template." msgstr "Położenie szablonu Circuit Macros." #. i18n: file: backends/circuitmacros/circuitmacrosbackend.kcfg:22 #. i18n: ectx: label, entry (tikztemplateurl), group (CircuitMacrosBackend) #: rc.cpp:8 msgid "The location of the Circuit Macros template with TikZ backend." msgstr "Położenie szablonu Circuit Macros z silnikiem TikZ." #. i18n: file: backends/circuitmacros/circuitmacrosbackend.kcfg:26 #. i18n: ectx: label, entry (latexargs), group (CircuitMacrosBackend) #. i18n: file: backends/tikz/tikzbackend.kcfg:14 #. i18n: ectx: label, entry (latexargs), group (TikzBackend) #. i18n: file: backends/pstricks/pstricksbackend.kcfg:14 #. i18n: ectx: label, entry (latexargs), group (PstricksBackend) #. i18n: file: cirkuit.kcfg:38 #. i18n: ectx: label, entry (LatexArgs), group (general) #: rc.cpp:11 rc.cpp:47 rc.cpp:54 rc.cpp:106 msgid "The default arguments called in the latex executable" msgstr "Domyślne argumenty wywoływane w pliku wykonywalnym latex" #. i18n: file: backends/circuitmacros/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_template) #. i18n: file: backends/circuitmacros/settings.ui:27 #. i18n: ectx: property (text), widget (QLabel, lbl_tikztemplate) #. i18n: file: backends/gnuplot/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_tikztemplate) #. i18n: file: backends/tikz/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_tikztemplate) #. i18n: file: backends/pstricks/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_pstrickstemplate) #: rc.cpp:16 rc.cpp:19 rc.cpp:38 rc.cpp:41 rc.cpp:58 msgid "Template path:" msgstr "Ścieżka szablonu:" #. i18n: file: backends/circuitmacros/settings.ui:37 #. i18n: ectx: property (text), widget (QLabel, label_4) #: rc.cpp:22 msgid "Pic interpreter" msgstr "Program interpretujący pic" #. i18n: file: backends/circuitmacros/settings.ui:45 #. i18n: ectx: property (text), item, widget (KComboBox, kcfg_PicInterpreter) #: rc.cpp:25 msgid "dpic + PSTricks" msgstr "dpic + PSTricks" #. i18n: file: backends/circuitmacros/settings.ui:50 #. i18n: ectx: property (text), item, widget (KComboBox, kcfg_PicInterpreter) #: rc.cpp:28 msgid "dpic + TikZ" msgstr "dpic + TikZ" #. i18n: file: backends/circuitmacros/settings.ui:55 #. i18n: ectx: property (text), item, widget (KComboBox, kcfg_PicInterpreter) #: rc.cpp:31 msgid "gpic" msgstr "gpic" #. i18n: file: backends/gnuplot/gnuplotbackend.kcfg:10 #. i18n: ectx: label, entry (templateurl), group (GnuplotBackend) #: rc.cpp:34 msgid "The location of the Gnuplot template." msgstr "Położenie szablonu Gnuplot." #. i18n: file: backends/tikz/tikzbackend.kcfg:10 #. i18n: ectx: label, entry (templateurl), group (TikzBackend) #: rc.cpp:44 msgid "The location of the TikZ template." msgstr "Położenie szablonu TikZ." #. i18n: file: backends/pstricks/pstricksbackend.kcfg:10 #. i18n: ectx: label, entry (templateurl), group (PstricksBackend) #: rc.cpp:51 msgid "The location of the PSTricks template." msgstr "Położenie szablonu PSTricks." #. i18n: file: widgets/backendchooser.ui:29 #. i18n: ectx: property (text), widget (QLabel, label) #: rc.cpp:61 msgid "Choose the Backend to use:" msgstr "Wybierz wykorzystywany silnik:" #. i18n: file: widgets/backendchooser.ui:59 #. i18n: ectx: property (text), widget (QCheckBox, makeDefault) #: rc.cpp:64 msgid "Make this the default backend" msgstr "Uczyń ten silnik domyślnym" #. i18n: file: widgets/templatechooser.ui:17 #. i18n: ectx: property (text), widget (QLabel, label) #: rc.cpp:67 msgid "Backend:" msgstr "Silnik:" #. i18n: file: widgets/templatechooser.ui:48 #. i18n: ectx: property (text), widget (KPushButton, btnAdd) #: rc.cpp:70 msgid "New" msgstr "Nowy" #. i18n: file: widgets/templatechooser.ui:55 #. i18n: ectx: property (text), widget (KPushButton, btnEdit) #: rc.cpp:73 msgid "Edit" msgstr "Edytuj" #. i18n: file: widgets/templatechooser.ui:62 #. i18n: ectx: property (text), widget (KPushButton, btnRemove) #: rc.cpp:76 msgid "Remove" msgstr "Usuń" #. i18n: file: widgets/templatechooser.ui:69 #. i18n: ectx: property (text), widget (KPushButton, btnDownload) #: rc.cpp:79 msgid "Download" msgstr "Pobierz" #. i18n: file: widgets/templatechooser.ui:76 #. i18n: ectx: property (text), widget (KPushButton, btnUpload) #: rc.cpp:82 msgid "Upload" msgstr "Wyślij" #. i18n: file: cirkuit.kcfg:10 #. i18n: ectx: label, entry (DefaultBackend), group (general) #: rc.cpp:85 msgid "Default backend." msgstr "Domyślny silnik." #. i18n: file: cirkuit.kcfg:14 #. i18n: ectx: label, entry (AutoSelectBackend), group (general) #. i18n: file: cirkuit_general_settings.ui:52 #. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoSelectBackend) #: rc.cpp:88 rc.cpp:118 msgid "Automatic backend selection" msgstr "Automatyczny wybór silnika" #. i18n: file: cirkuit.kcfg:18 #. i18n: ectx: label, entry (RefreshInterval), group (general) #: rc.cpp:91 msgid "Preview generation refresh timeout." msgstr "Czas oczekiwania na odświeżenie generowania podglądu." #. i18n: file: cirkuit.kcfg:22 #. i18n: ectx: label, entry (AutoRefresh), group (general) #: rc.cpp:94 msgid "Enable automatic refresh." msgstr "Włącz automatyczne odświeżanie." #. i18n: file: cirkuit.kcfg:26 #. i18n: ectx: label, entry (RefreshOnSave), group (general) #: rc.cpp:97 msgid "Refresh when document is saved." msgstr "Odśwież, gdy dokument zostanie zapisany." #. i18n: file: cirkuit.kcfg:30 #. i18n: ectx: label, entry (ZoomToFit), group (general) #: rc.cpp:100 msgid "Automatically zoom the preview to fit the preview widget" msgstr "" "Automatycznie powiększ podgląd, aby dopasować do elementu interfejsu podglądu" #. i18n: file: cirkuit.kcfg:34 #. i18n: ectx: label, entry (ResolutionPpm), group (general) #: rc.cpp:103 msgid "PNG and JPEG resolution." msgstr "Rozdzielczość PNG i JPEG." #. i18n: file: cirkuit_general_settings.ui:14 #. i18n: ectx: property (windowTitle), widget (QWidget, CirkuitGeneralForm) #: rc.cpp:109 msgid "General settings" msgstr "Ustawienia ogólne" #. i18n: file: cirkuit_general_settings.ui:23 #. i18n: ectx: property (title), widget (QGroupBox, groupBackend) #: rc.cpp:112 msgid "Backends" msgstr "Silniki" #. i18n: file: cirkuit_general_settings.ui:29 #. i18n: ectx: property (text), widget (QLabel, label_3) #: rc.cpp:115 msgid "Default backend:" msgstr "Domyślny silnik:" #. i18n: file: cirkuit_general_settings.ui:71 #. i18n: ectx: property (text), widget (QLabel, label) #: rc.cpp:124 msgid "Preview refresh interval (sec):" msgstr "Przedział odświeżania podglądu (sek):" #. i18n: file: cirkuit_general_settings.ui:103 #. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoRefresh) #: rc.cpp:127 msgid "Automatic preview generation" msgstr "Automatyczna generacja podglądu" #. i18n: file: cirkuit_general_settings.ui:113 #. i18n: ectx: property (text), widget (QCheckBox, kcfg_RefreshOnSave) #: rc.cpp:130 msgid "Refresh the preview when saving the document" msgstr "Odśwież podgląd przy zapisywaniu dokumentu" #. i18n: file: cirkuit_general_settings.ui:129 #. i18n: ectx: property (text), widget (QLabel, label_2) #: rc.cpp:133 msgid "PNG and JPEG resolution (DPI):" msgstr "Rozdzielczości PNG i JPEG (DPI):" #. i18n: file: cirkuitui.rc:5 #. i18n: ectx: Menu (file) #: rc.cpp:136 msgid "&File" msgstr "&Plik" #. i18n: file: cirkuitui.rc:26 #. i18n: ectx: Menu (build) #: rc.cpp:139 msgid "&Preview" msgstr "&Podgląd" #. i18n: file: cirkuitui.rc:33 #. i18n: ectx: Menu (view) #: rc.cpp:142 msgid "&View" msgstr "&Widok" #. i18n: file: cirkuitui.rc:46 #. i18n: ectx: Menu (help) #: rc.cpp:145 msgid "&Help" msgstr "&Pomoc" #. i18n: file: cirkuitui.rc:54 #. i18n: ectx: ToolBar (mainToolBar) #: rc.cpp:148 msgid "Main Toolbar" msgstr "Główny pasek narzędzi"cirkuit-0.4.3/po/pl/CMakeLists.txt000644 001750 001750 00000000163 11677602262 020476 0ustar00scarlettscarlett000000 000000 file(GLOB _po_files *.po) GETTEXT_PROCESS_PO_FILES(pl ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} ${_po_files} ) cirkuit-0.4.3/po/ga/000755 001750 001750 00000000000 11677601707 015715 5ustar00scarlettscarlett000000 000000 cirkuit-0.4.3/po/ga/cirkuit.po000644 001750 001750 00000027125 11677601707 017736 0ustar00scarlettscarlett000000 000000 # Irish translation of cirkuit # Copyright (C) 2011 This_file_is_part_of_KDE # This file is distributed under the same license as the cirkuit package. # Kevin Scannell , 2011. msgid "" msgstr "" "Project-Id-Version: cirkuit\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2011-11-18 05:01+0100\n" "PO-Revision-Date: 2011-12-28 12:28-0500\n" "Last-Translator: Kevin Scannell \n" "Language-Team: Irish \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=5; plural=n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n < 11 ? " "3 : 4\n" #: widgets/imageview.cpp:81 msgid "Zoom to fit" msgstr "" #: widgets/templatechoosedialog.cpp:103 mainwindow.cpp:174 msgid "Template manager" msgstr "" #: widgets/templatechoosedialog.cpp:193 msgid "Template name" msgstr "" #: widgets/templatechoosedialog.cpp:193 msgid "Insert the template name" msgstr "" #: widgets/templatechoosedialog.cpp:217 msgid "Do you really want to delete the selected template?" msgstr "" #: widgets/templatechoosedialog.cpp:218 msgid "Confirm deletion" msgstr "Dearbhaigh an scriosadh" #: widgets/backendchoosedialog.cpp:26 #, kde-format msgid "" "

%1

%2

See %3 for more " "information
" msgstr "" #: widgets/backendchoosedialog.cpp:33 msgid "Backend selection" msgstr "" #: main.cpp:30 msgid "Cirkuit" msgstr "" #: main.cpp:30 msgid "" "An application to generate publication-ready figures. It is a KDE frontend " "for Circuit Macros by J. D. Aplevich, TikZ and Gnuplot.

Visit the Circuit Macros " "and TikZ websites for further " "information." msgstr "" #: main.cpp:30 msgid "(c) 2011 Matteo Agostinelli" msgstr "" #: main.cpp:31 msgid "Matteo Agostinelli" msgstr "" #: main.cpp:31 msgid "Maintainer" msgstr "Cothaitheoir" #: main.cpp:36 msgid "Document to open" msgstr "Cáipéis le hoscailt" #: generatorthread.cpp:55 msgid "No backend could be selected!" msgstr "" #: mainwindow.cpp:81 msgid "" "A KDE text-editor component could not be found;\n" "please check your KDE installation." msgstr "" "Níor aimsíodh comhpháirt eagarthóra KDE;\n" "seiceáil do shuiteáil KDE le do thoil." #. i18n: file: cirkuit_general_settings.ui:65 #. i18n: ectx: property (title), widget (QGroupBox, groupBox) #: mainwindow.cpp:90 rc.cpp:121 msgid "Preview" msgstr "Réamhamharc" #: mainwindow.cpp:96 msgid "Log" msgstr "Logáil" #: mainwindow.cpp:158 msgid "Export..." msgstr "Easpórtáil..." #: mainwindow.cpp:162 msgid "Build preview" msgstr "" #: mainwindow.cpp:168 msgid "Open preview" msgstr "" #: mainwindow.cpp:178 msgid "Show manual" msgstr "" #: mainwindow.cpp:182 msgid "Show examples" msgstr "" #: mainwindow.cpp:190 msgid "Download Examples" msgstr "Íosluchtaigh Samplaí" #: mainwindow.cpp:195 msgid "Upload Example" msgstr "" #: mainwindow.cpp:200 msgid "&Open Example" msgstr "" #: mainwindow.cpp:238 msgid "Open file - Cirkuit" msgstr "" #: mainwindow.cpp:281 msgid "Save file - Cirkuit" msgstr "" #: mainwindow.cpp:313 msgid "Export image - Cirkuit" msgstr "" #: mainwindow.cpp:402 #, kde-format msgid "Backend %1 not found" msgstr "" #: mainwindow.cpp:411 msgid "No valid backend selected." msgstr "" #: mainwindow.cpp:460 msgid "General" msgstr "Ginearálta" #: mainwindow.cpp:519 msgid "" "Circuit Macros could not be found on your system. The application will not " "work if the macros are not installed. Do you want to proceed with the " "installation?" msgstr "" #: mainwindow.cpp:519 msgid "Installation needed" msgstr "" #: mainwindow.cpp:524 msgid "Downloading Circuit Macros. Please wait..." msgstr "" #: mainwindow.cpp:532 #, kde-format msgid "" "A new version of Circuit Macros (version %1) is available. Do you want to " "upgrade?" msgstr "" #: mainwindow.cpp:532 msgid "Upgrade" msgstr "Uasghrádú" #: mainwindow.cpp:550 msgid "Unable to generate a preview for the current input" msgstr "" #: mainwindow.cpp:577 msgid "" "No working backend has been found. Cirkuit is unable to generate any figure." msgstr "" #: mainwindow.cpp:577 msgid "No backends found" msgstr "" #: mainwindow.cpp:610 #, kde-format msgid "%1 manual" msgstr "" #: mainwindow.cpp:611 #, kde-format msgid "%1 examples" msgstr "" #: mainwindow.cpp:630 msgid "Save the current document before uploading it" msgstr "" #: rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "" #: rc.cpp:2 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "" #. i18n: file: backends/circuitmacros/circuitmacrosbackend.kcfg:18 #. i18n: ectx: label, entry (templateurl), group (CircuitMacrosBackend) #: rc.cpp:5 msgid "The location of the Circuit Macros template." msgstr "" #. i18n: file: backends/circuitmacros/circuitmacrosbackend.kcfg:22 #. i18n: ectx: label, entry (tikztemplateurl), group (CircuitMacrosBackend) #: rc.cpp:8 msgid "The location of the Circuit Macros template with TikZ backend." msgstr "" #. i18n: file: backends/circuitmacros/circuitmacrosbackend.kcfg:26 #. i18n: ectx: label, entry (latexargs), group (CircuitMacrosBackend) #. i18n: file: backends/tikz/tikzbackend.kcfg:14 #. i18n: ectx: label, entry (latexargs), group (TikzBackend) #. i18n: file: backends/pstricks/pstricksbackend.kcfg:14 #. i18n: ectx: label, entry (latexargs), group (PstricksBackend) #. i18n: file: cirkuit.kcfg:38 #. i18n: ectx: label, entry (LatexArgs), group (general) #: rc.cpp:11 rc.cpp:47 rc.cpp:54 rc.cpp:106 msgid "The default arguments called in the latex executable" msgstr "" #. i18n: file: backends/circuitmacros/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_template) #. i18n: file: backends/circuitmacros/settings.ui:27 #. i18n: ectx: property (text), widget (QLabel, lbl_tikztemplate) #. i18n: file: backends/gnuplot/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_tikztemplate) #. i18n: file: backends/tikz/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_tikztemplate) #. i18n: file: backends/pstricks/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_pstrickstemplate) #: rc.cpp:16 rc.cpp:19 rc.cpp:38 rc.cpp:41 rc.cpp:58 msgid "Template path:" msgstr "" #. i18n: file: backends/circuitmacros/settings.ui:37 #. i18n: ectx: property (text), widget (QLabel, label_4) #: rc.cpp:22 msgid "Pic interpreter" msgstr "" #. i18n: file: backends/circuitmacros/settings.ui:45 #. i18n: ectx: property (text), item, widget (KComboBox, kcfg_PicInterpreter) #: rc.cpp:25 msgid "dpic + PSTricks" msgstr "" #. i18n: file: backends/circuitmacros/settings.ui:50 #. i18n: ectx: property (text), item, widget (KComboBox, kcfg_PicInterpreter) #: rc.cpp:28 msgid "dpic + TikZ" msgstr "" #. i18n: file: backends/circuitmacros/settings.ui:55 #. i18n: ectx: property (text), item, widget (KComboBox, kcfg_PicInterpreter) #: rc.cpp:31 msgid "gpic" msgstr "" #. i18n: file: backends/gnuplot/gnuplotbackend.kcfg:10 #. i18n: ectx: label, entry (templateurl), group (GnuplotBackend) #: rc.cpp:34 msgid "The location of the Gnuplot template." msgstr "" #. i18n: file: backends/tikz/tikzbackend.kcfg:10 #. i18n: ectx: label, entry (templateurl), group (TikzBackend) #: rc.cpp:44 msgid "The location of the TikZ template." msgstr "" #. i18n: file: backends/pstricks/pstricksbackend.kcfg:10 #. i18n: ectx: label, entry (templateurl), group (PstricksBackend) #: rc.cpp:51 msgid "The location of the PSTricks template." msgstr "" #. i18n: file: widgets/backendchooser.ui:29 #. i18n: ectx: property (text), widget (QLabel, label) #: rc.cpp:61 msgid "Choose the Backend to use:" msgstr "" #. i18n: file: widgets/backendchooser.ui:59 #. i18n: ectx: property (text), widget (QCheckBox, makeDefault) #: rc.cpp:64 msgid "Make this the default backend" msgstr "" #. i18n: file: widgets/templatechooser.ui:17 #. i18n: ectx: property (text), widget (QLabel, label) #: rc.cpp:67 msgid "Backend:" msgstr "" #. i18n: file: widgets/templatechooser.ui:48 #. i18n: ectx: property (text), widget (KPushButton, btnAdd) #: rc.cpp:70 msgid "New" msgstr "Nua" #. i18n: file: widgets/templatechooser.ui:55 #. i18n: ectx: property (text), widget (KPushButton, btnEdit) #: rc.cpp:73 msgid "Edit" msgstr "Eagar" #. i18n: file: widgets/templatechooser.ui:62 #. i18n: ectx: property (text), widget (KPushButton, btnRemove) #: rc.cpp:76 msgid "Remove" msgstr "Bain" #. i18n: file: widgets/templatechooser.ui:69 #. i18n: ectx: property (text), widget (KPushButton, btnDownload) #: rc.cpp:79 msgid "Download" msgstr "Íosluchtaigh" #. i18n: file: widgets/templatechooser.ui:76 #. i18n: ectx: property (text), widget (KPushButton, btnUpload) #: rc.cpp:82 msgid "Upload" msgstr "Uasluchtaigh" #. i18n: file: cirkuit.kcfg:10 #. i18n: ectx: label, entry (DefaultBackend), group (general) #: rc.cpp:85 msgid "Default backend." msgstr "" #. i18n: file: cirkuit.kcfg:14 #. i18n: ectx: label, entry (AutoSelectBackend), group (general) #. i18n: file: cirkuit_general_settings.ui:52 #. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoSelectBackend) #: rc.cpp:88 rc.cpp:118 msgid "Automatic backend selection" msgstr "" #. i18n: file: cirkuit.kcfg:18 #. i18n: ectx: label, entry (RefreshInterval), group (general) #: rc.cpp:91 msgid "Preview generation refresh timeout." msgstr "" #. i18n: file: cirkuit.kcfg:22 #. i18n: ectx: label, entry (AutoRefresh), group (general) #: rc.cpp:94 msgid "Enable automatic refresh." msgstr "" #. i18n: file: cirkuit.kcfg:26 #. i18n: ectx: label, entry (RefreshOnSave), group (general) #: rc.cpp:97 msgid "Refresh when document is saved." msgstr "" #. i18n: file: cirkuit.kcfg:30 #. i18n: ectx: label, entry (ZoomToFit), group (general) #: rc.cpp:100 msgid "Automatically zoom the preview to fit the preview widget" msgstr "" #. i18n: file: cirkuit.kcfg:34 #. i18n: ectx: label, entry (ResolutionPpm), group (general) #: rc.cpp:103 msgid "PNG and JPEG resolution." msgstr "" #. i18n: file: cirkuit_general_settings.ui:14 #. i18n: ectx: property (windowTitle), widget (QWidget, CirkuitGeneralForm) #: rc.cpp:109 msgid "General settings" msgstr "Socruithe ginearálta" #. i18n: file: cirkuit_general_settings.ui:23 #. i18n: ectx: property (title), widget (QGroupBox, groupBackend) #: rc.cpp:112 msgid "Backends" msgstr "Innill" #. i18n: file: cirkuit_general_settings.ui:29 #. i18n: ectx: property (text), widget (QLabel, label_3) #: rc.cpp:115 msgid "Default backend:" msgstr "" #. i18n: file: cirkuit_general_settings.ui:71 #. i18n: ectx: property (text), widget (QLabel, label) #: rc.cpp:124 msgid "Preview refresh interval (sec):" msgstr "" #. i18n: file: cirkuit_general_settings.ui:103 #. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoRefresh) #: rc.cpp:127 msgid "Automatic preview generation" msgstr "" #. i18n: file: cirkuit_general_settings.ui:113 #. i18n: ectx: property (text), widget (QCheckBox, kcfg_RefreshOnSave) #: rc.cpp:130 msgid "Refresh the preview when saving the document" msgstr "" #. i18n: file: cirkuit_general_settings.ui:129 #. i18n: ectx: property (text), widget (QLabel, label_2) #: rc.cpp:133 msgid "PNG and JPEG resolution (DPI):" msgstr "" #. i18n: file: cirkuitui.rc:5 #. i18n: ectx: Menu (file) #: rc.cpp:136 msgid "&File" msgstr "&Comhad" #. i18n: file: cirkuitui.rc:26 #. i18n: ectx: Menu (build) #: rc.cpp:139 msgid "&Preview" msgstr "&Réamhamharc" #. i18n: file: cirkuitui.rc:33 #. i18n: ectx: Menu (view) #: rc.cpp:142 msgid "&View" msgstr "&Amharc" #. i18n: file: cirkuitui.rc:46 #. i18n: ectx: Menu (help) #: rc.cpp:145 msgid "&Help" msgstr "" #. i18n: file: cirkuitui.rc:54 #. i18n: ectx: ToolBar (mainToolBar) #: rc.cpp:148 msgid "Main Toolbar" msgstr "Príomhbharra Uirlisí"cirkuit-0.4.3/po/ga/CMakeLists.txt000644 001750 001750 00000000163 11677601707 020455 0ustar00scarlettscarlett000000 000000 file(GLOB _po_files *.po) GETTEXT_PROCESS_PO_FILES(ga ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} ${_po_files} ) cirkuit-0.4.3/po/ja/000755 001750 001750 00000000000 11677602064 015715 5ustar00scarlettscarlett000000 000000 cirkuit-0.4.3/po/ja/cirkuit.po000644 001750 001750 00000026116 11677602064 017735 0ustar00scarlettscarlett000000 000000 msgid "" msgstr "" "Project-Id-Version: cirkuit\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2011-11-18 05:01+0100\n" "PO-Revision-Date: 2010-12-12 15:04-0800\n" "Last-Translator: Japanese KDE translation team \n" "Language-Team: Japanese \n" "Language: ja\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Accelerator-Marker: &\n" "X-Text-Markup: kde4\n" #: widgets/imageview.cpp:81 msgid "Zoom to fit" msgstr "" #: widgets/templatechoosedialog.cpp:103 mainwindow.cpp:174 msgid "Template manager" msgstr "" #: widgets/templatechoosedialog.cpp:193 msgid "Template name" msgstr "" #: widgets/templatechoosedialog.cpp:193 msgid "Insert the template name" msgstr "" #: widgets/templatechoosedialog.cpp:217 msgid "Do you really want to delete the selected template?" msgstr "" #: widgets/templatechoosedialog.cpp:218 msgid "Confirm deletion" msgstr "" #: widgets/backendchoosedialog.cpp:26 #, kde-format msgid "" "

%1

%2

See %3 for more " "information
" msgstr "" #: widgets/backendchoosedialog.cpp:33 msgid "Backend selection" msgstr "" #: main.cpp:30 msgid "Cirkuit" msgstr "" #: main.cpp:30 msgid "" "An application to generate publication-ready figures. It is a KDE frontend " "for Circuit Macros by J. D. Aplevich, TikZ and Gnuplot.

Visit the Circuit Macros " "and TikZ websites for further " "information." msgstr "" #: main.cpp:30 msgid "(c) 2011 Matteo Agostinelli" msgstr "" #: main.cpp:31 msgid "Matteo Agostinelli" msgstr "" #: main.cpp:31 msgid "Maintainer" msgstr "" #: main.cpp:36 msgid "Document to open" msgstr "" #: generatorthread.cpp:55 msgid "No backend could be selected!" msgstr "" #: mainwindow.cpp:81 msgid "" "A KDE text-editor component could not be found;\n" "please check your KDE installation." msgstr "" #. i18n: file: cirkuit_general_settings.ui:65 #. i18n: ectx: property (title), widget (QGroupBox, groupBox) #: mainwindow.cpp:90 rc.cpp:121 msgid "Preview" msgstr "" #: mainwindow.cpp:96 msgid "Log" msgstr "" #: mainwindow.cpp:158 msgid "Export..." msgstr "" #: mainwindow.cpp:162 msgid "Build preview" msgstr "" #: mainwindow.cpp:168 msgid "Open preview" msgstr "" #: mainwindow.cpp:178 msgid "Show manual" msgstr "" #: mainwindow.cpp:182 msgid "Show examples" msgstr "" #: mainwindow.cpp:190 msgid "Download Examples" msgstr "" #: mainwindow.cpp:195 msgid "Upload Example" msgstr "" #: mainwindow.cpp:200 msgid "&Open Example" msgstr "" #: mainwindow.cpp:238 msgid "Open file - Cirkuit" msgstr "" #: mainwindow.cpp:281 msgid "Save file - Cirkuit" msgstr "" #: mainwindow.cpp:313 msgid "Export image - Cirkuit" msgstr "" #: mainwindow.cpp:402 #, kde-format msgid "Backend %1 not found" msgstr "" #: mainwindow.cpp:411 msgid "No valid backend selected." msgstr "" #: mainwindow.cpp:460 msgid "General" msgstr "" #: mainwindow.cpp:519 msgid "" "Circuit Macros could not be found on your system. The application will not " "work if the macros are not installed. Do you want to proceed with the " "installation?" msgstr "" #: mainwindow.cpp:519 msgid "Installation needed" msgstr "" #: mainwindow.cpp:524 msgid "Downloading Circuit Macros. Please wait..." msgstr "" #: mainwindow.cpp:532 #, kde-format msgid "" "A new version of Circuit Macros (version %1) is available. Do you want to " "upgrade?" msgstr "" #: mainwindow.cpp:532 msgid "Upgrade" msgstr "" #: mainwindow.cpp:550 msgid "Unable to generate a preview for the current input" msgstr "" #: mainwindow.cpp:577 msgid "" "No working backend has been found. Cirkuit is unable to generate any figure." msgstr "" #: mainwindow.cpp:577 msgid "No backends found" msgstr "" #: mainwindow.cpp:610 #, kde-format msgid "%1 manual" msgstr "" #: mainwindow.cpp:611 #, kde-format msgid "%1 examples" msgstr "" #: mainwindow.cpp:630 msgid "Save the current document before uploading it" msgstr "" #: rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "" #: rc.cpp:2 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "" #. i18n: file: backends/circuitmacros/circuitmacrosbackend.kcfg:18 #. i18n: ectx: label, entry (templateurl), group (CircuitMacrosBackend) #: rc.cpp:5 msgid "The location of the Circuit Macros template." msgstr "" #. i18n: file: backends/circuitmacros/circuitmacrosbackend.kcfg:22 #. i18n: ectx: label, entry (tikztemplateurl), group (CircuitMacrosBackend) #: rc.cpp:8 msgid "The location of the Circuit Macros template with TikZ backend." msgstr "" #. i18n: file: backends/circuitmacros/circuitmacrosbackend.kcfg:26 #. i18n: ectx: label, entry (latexargs), group (CircuitMacrosBackend) #. i18n: file: backends/tikz/tikzbackend.kcfg:14 #. i18n: ectx: label, entry (latexargs), group (TikzBackend) #. i18n: file: backends/pstricks/pstricksbackend.kcfg:14 #. i18n: ectx: label, entry (latexargs), group (PstricksBackend) #. i18n: file: cirkuit.kcfg:38 #. i18n: ectx: label, entry (LatexArgs), group (general) #: rc.cpp:11 rc.cpp:47 rc.cpp:54 rc.cpp:106 msgid "The default arguments called in the latex executable" msgstr "" #. i18n: file: backends/circuitmacros/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_template) #. i18n: file: backends/circuitmacros/settings.ui:27 #. i18n: ectx: property (text), widget (QLabel, lbl_tikztemplate) #. i18n: file: backends/gnuplot/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_tikztemplate) #. i18n: file: backends/tikz/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_tikztemplate) #. i18n: file: backends/pstricks/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_pstrickstemplate) #: rc.cpp:16 rc.cpp:19 rc.cpp:38 rc.cpp:41 rc.cpp:58 msgid "Template path:" msgstr "" #. i18n: file: backends/circuitmacros/settings.ui:37 #. i18n: ectx: property (text), widget (QLabel, label_4) #: rc.cpp:22 msgid "Pic interpreter" msgstr "" #. i18n: file: backends/circuitmacros/settings.ui:45 #. i18n: ectx: property (text), item, widget (KComboBox, kcfg_PicInterpreter) #: rc.cpp:25 msgid "dpic + PSTricks" msgstr "" #. i18n: file: backends/circuitmacros/settings.ui:50 #. i18n: ectx: property (text), item, widget (KComboBox, kcfg_PicInterpreter) #: rc.cpp:28 msgid "dpic + TikZ" msgstr "" #. i18n: file: backends/circuitmacros/settings.ui:55 #. i18n: ectx: property (text), item, widget (KComboBox, kcfg_PicInterpreter) #: rc.cpp:31 msgid "gpic" msgstr "" #. i18n: file: backends/gnuplot/gnuplotbackend.kcfg:10 #. i18n: ectx: label, entry (templateurl), group (GnuplotBackend) #: rc.cpp:34 msgid "The location of the Gnuplot template." msgstr "" #. i18n: file: backends/tikz/tikzbackend.kcfg:10 #. i18n: ectx: label, entry (templateurl), group (TikzBackend) #: rc.cpp:44 msgid "The location of the TikZ template." msgstr "" #. i18n: file: backends/pstricks/pstricksbackend.kcfg:10 #. i18n: ectx: label, entry (templateurl), group (PstricksBackend) #: rc.cpp:51 msgid "The location of the PSTricks template." msgstr "" #. i18n: file: widgets/backendchooser.ui:29 #. i18n: ectx: property (text), widget (QLabel, label) #: rc.cpp:61 msgid "Choose the Backend to use:" msgstr "" #. i18n: file: widgets/backendchooser.ui:59 #. i18n: ectx: property (text), widget (QCheckBox, makeDefault) #: rc.cpp:64 msgid "Make this the default backend" msgstr "" #. i18n: file: widgets/templatechooser.ui:17 #. i18n: ectx: property (text), widget (QLabel, label) #: rc.cpp:67 msgid "Backend:" msgstr "" #. i18n: file: widgets/templatechooser.ui:48 #. i18n: ectx: property (text), widget (KPushButton, btnAdd) #: rc.cpp:70 msgid "New" msgstr "" #. i18n: file: widgets/templatechooser.ui:55 #. i18n: ectx: property (text), widget (KPushButton, btnEdit) #: rc.cpp:73 msgid "Edit" msgstr "" #. i18n: file: widgets/templatechooser.ui:62 #. i18n: ectx: property (text), widget (KPushButton, btnRemove) #: rc.cpp:76 msgid "Remove" msgstr "" #. i18n: file: widgets/templatechooser.ui:69 #. i18n: ectx: property (text), widget (KPushButton, btnDownload) #: rc.cpp:79 msgid "Download" msgstr "" #. i18n: file: widgets/templatechooser.ui:76 #. i18n: ectx: property (text), widget (KPushButton, btnUpload) #: rc.cpp:82 msgid "Upload" msgstr "" #. i18n: file: cirkuit.kcfg:10 #. i18n: ectx: label, entry (DefaultBackend), group (general) #: rc.cpp:85 msgid "Default backend." msgstr "" #. i18n: file: cirkuit.kcfg:14 #. i18n: ectx: label, entry (AutoSelectBackend), group (general) #. i18n: file: cirkuit_general_settings.ui:52 #. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoSelectBackend) #: rc.cpp:88 rc.cpp:118 msgid "Automatic backend selection" msgstr "" #. i18n: file: cirkuit.kcfg:18 #. i18n: ectx: label, entry (RefreshInterval), group (general) #: rc.cpp:91 msgid "Preview generation refresh timeout." msgstr "" #. i18n: file: cirkuit.kcfg:22 #. i18n: ectx: label, entry (AutoRefresh), group (general) #: rc.cpp:94 msgid "Enable automatic refresh." msgstr "" #. i18n: file: cirkuit.kcfg:26 #. i18n: ectx: label, entry (RefreshOnSave), group (general) #: rc.cpp:97 msgid "Refresh when document is saved." msgstr "" #. i18n: file: cirkuit.kcfg:30 #. i18n: ectx: label, entry (ZoomToFit), group (general) #: rc.cpp:100 msgid "Automatically zoom the preview to fit the preview widget" msgstr "" #. i18n: file: cirkuit.kcfg:34 #. i18n: ectx: label, entry (ResolutionPpm), group (general) #: rc.cpp:103 msgid "PNG and JPEG resolution." msgstr "" #. i18n: file: cirkuit_general_settings.ui:14 #. i18n: ectx: property (windowTitle), widget (QWidget, CirkuitGeneralForm) #: rc.cpp:109 msgid "General settings" msgstr "" #. i18n: file: cirkuit_general_settings.ui:23 #. i18n: ectx: property (title), widget (QGroupBox, groupBackend) #: rc.cpp:112 msgid "Backends" msgstr "" #. i18n: file: cirkuit_general_settings.ui:29 #. i18n: ectx: property (text), widget (QLabel, label_3) #: rc.cpp:115 msgid "Default backend:" msgstr "" #. i18n: file: cirkuit_general_settings.ui:71 #. i18n: ectx: property (text), widget (QLabel, label) #: rc.cpp:124 msgid "Preview refresh interval (sec):" msgstr "" #. i18n: file: cirkuit_general_settings.ui:103 #. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoRefresh) #: rc.cpp:127 msgid "Automatic preview generation" msgstr "" #. i18n: file: cirkuit_general_settings.ui:113 #. i18n: ectx: property (text), widget (QCheckBox, kcfg_RefreshOnSave) #: rc.cpp:130 msgid "Refresh the preview when saving the document" msgstr "" #. i18n: file: cirkuit_general_settings.ui:129 #. i18n: ectx: property (text), widget (QLabel, label_2) #: rc.cpp:133 msgid "PNG and JPEG resolution (DPI):" msgstr "" #. i18n: file: cirkuitui.rc:5 #. i18n: ectx: Menu (file) #: rc.cpp:136 msgid "&File" msgstr "" #. i18n: file: cirkuitui.rc:26 #. i18n: ectx: Menu (build) #: rc.cpp:139 msgid "&Preview" msgstr "" #. i18n: file: cirkuitui.rc:33 #. i18n: ectx: Menu (view) #: rc.cpp:142 msgid "&View" msgstr "" #. i18n: file: cirkuitui.rc:46 #. i18n: ectx: Menu (help) #: rc.cpp:145 msgid "&Help" msgstr "" #. i18n: file: cirkuitui.rc:54 #. i18n: ectx: ToolBar (mainToolBar) #: rc.cpp:148 msgid "Main Toolbar" msgstr ""cirkuit-0.4.3/po/ja/CMakeLists.txt000644 001750 001750 00000000163 11677602064 020455 0ustar00scarlettscarlett000000 000000 file(GLOB _po_files *.po) GETTEXT_PROCESS_PO_FILES(ja ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} ${_po_files} ) cirkuit-0.4.3/po/lt/000755 001750 001750 00000000000 11677602132 015736 5ustar00scarlettscarlett000000 000000 cirkuit-0.4.3/po/lt/cirkuit.po000644 001750 001750 00000027005 11677602132 017754 0ustar00scarlettscarlett000000 000000 # Lithuanian translations for l package. # Copyright (C) 2011 This_file_is_part_of_KDE # This file is distributed under the same license as the l package. # # Automatically generated, 2011. # Remigijus Jarmalavičius , 2011. msgid "" msgstr "" "Project-Id-Version: cirkuit\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2011-11-18 05:01+0100\n" "PO-Revision-Date: 2011-10-20 18:45+0300\n" "Last-Translator: Remigijus Jarmalavičius \n" "Language-Team: Lithuanian \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=(n==1 ? 0 : n%10>=2 && (n%100<10 || n" "%100>=20) ? 1 : n%10==0 || (n%100>10 && n%100<20) ? 2 : 3);\n" "X-Generator: Lokalize 1.2\n" #: widgets/imageview.cpp:81 msgid "Zoom to fit" msgstr "Talpinti visą" #: widgets/templatechoosedialog.cpp:103 mainwindow.cpp:174 msgid "Template manager" msgstr "" #: widgets/templatechoosedialog.cpp:193 msgid "Template name" msgstr "Šablono pavadinimas" #: widgets/templatechoosedialog.cpp:193 msgid "Insert the template name" msgstr "" #: widgets/templatechoosedialog.cpp:217 msgid "Do you really want to delete the selected template?" msgstr "" #: widgets/templatechoosedialog.cpp:218 msgid "Confirm deletion" msgstr "" #: widgets/backendchoosedialog.cpp:26 #, kde-format msgid "" "

%1

%2

See %3 for more " "information
" msgstr "" #: widgets/backendchoosedialog.cpp:33 msgid "Backend selection" msgstr "" #: main.cpp:30 msgid "Cirkuit" msgstr "" #: main.cpp:30 msgid "" "An application to generate publication-ready figures. It is a KDE frontend " "for Circuit Macros by J. D. Aplevich, TikZ and Gnuplot.

Visit the Circuit Macros " "and TikZ websites for further " "information." msgstr "" #: main.cpp:30 msgid "(c) 2011 Matteo Agostinelli" msgstr "(c) 2011 Matteo Agostinelli" #: main.cpp:31 msgid "Matteo Agostinelli" msgstr "Matteo Agostinelli" #: main.cpp:31 msgid "Maintainer" msgstr "Prižiūrėtojas" #: main.cpp:36 msgid "Document to open" msgstr "Atidaryti dokumentą" #: generatorthread.cpp:55 msgid "No backend could be selected!" msgstr "" #: mainwindow.cpp:81 msgid "" "A KDE text-editor component could not be found;\n" "please check your KDE installation." msgstr "" #. i18n: file: cirkuit_general_settings.ui:65 #. i18n: ectx: property (title), widget (QGroupBox, groupBox) #: mainwindow.cpp:90 rc.cpp:121 msgid "Preview" msgstr "" #: mainwindow.cpp:96 msgid "Log" msgstr "" #: mainwindow.cpp:158 msgid "Export..." msgstr "" #: mainwindow.cpp:162 msgid "Build preview" msgstr "" #: mainwindow.cpp:168 msgid "Open preview" msgstr "" #: mainwindow.cpp:178 msgid "Show manual" msgstr "" #: mainwindow.cpp:182 msgid "Show examples" msgstr "" #: mainwindow.cpp:190 msgid "Download Examples" msgstr "" #: mainwindow.cpp:195 msgid "Upload Example" msgstr "" #: mainwindow.cpp:200 msgid "&Open Example" msgstr "" #: mainwindow.cpp:238 msgid "Open file - Cirkuit" msgstr "" #: mainwindow.cpp:281 msgid "Save file - Cirkuit" msgstr "" #: mainwindow.cpp:313 msgid "Export image - Cirkuit" msgstr "" #: mainwindow.cpp:402 #, kde-format msgid "Backend %1 not found" msgstr "" #: mainwindow.cpp:411 msgid "No valid backend selected." msgstr "" #: mainwindow.cpp:460 msgid "General" msgstr "" #: mainwindow.cpp:519 msgid "" "Circuit Macros could not be found on your system. The application will not " "work if the macros are not installed. Do you want to proceed with the " "installation?" msgstr "" #: mainwindow.cpp:519 msgid "Installation needed" msgstr "" #: mainwindow.cpp:524 msgid "Downloading Circuit Macros. Please wait..." msgstr "" #: mainwindow.cpp:532 #, kde-format msgid "" "A new version of Circuit Macros (version %1) is available. Do you want to " "upgrade?" msgstr "" #: mainwindow.cpp:532 msgid "Upgrade" msgstr "" #: mainwindow.cpp:550 msgid "Unable to generate a preview for the current input" msgstr "" #: mainwindow.cpp:577 msgid "" "No working backend has been found. Cirkuit is unable to generate any figure." msgstr "" #: mainwindow.cpp:577 msgid "No backends found" msgstr "" #: mainwindow.cpp:610 #, kde-format msgid "%1 manual" msgstr "" #: mainwindow.cpp:611 #, kde-format msgid "%1 examples" msgstr "" #: mainwindow.cpp:630 msgid "Save the current document before uploading it" msgstr "" #: rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "" #: rc.cpp:2 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "" #. i18n: file: backends/circuitmacros/circuitmacrosbackend.kcfg:18 #. i18n: ectx: label, entry (templateurl), group (CircuitMacrosBackend) #: rc.cpp:5 msgid "The location of the Circuit Macros template." msgstr "" #. i18n: file: backends/circuitmacros/circuitmacrosbackend.kcfg:22 #. i18n: ectx: label, entry (tikztemplateurl), group (CircuitMacrosBackend) #: rc.cpp:8 msgid "The location of the Circuit Macros template with TikZ backend." msgstr "" #. i18n: file: backends/circuitmacros/circuitmacrosbackend.kcfg:26 #. i18n: ectx: label, entry (latexargs), group (CircuitMacrosBackend) #. i18n: file: backends/tikz/tikzbackend.kcfg:14 #. i18n: ectx: label, entry (latexargs), group (TikzBackend) #. i18n: file: backends/pstricks/pstricksbackend.kcfg:14 #. i18n: ectx: label, entry (latexargs), group (PstricksBackend) #. i18n: file: cirkuit.kcfg:38 #. i18n: ectx: label, entry (LatexArgs), group (general) #: rc.cpp:11 rc.cpp:47 rc.cpp:54 rc.cpp:106 msgid "The default arguments called in the latex executable" msgstr "" #. i18n: file: backends/circuitmacros/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_template) #. i18n: file: backends/circuitmacros/settings.ui:27 #. i18n: ectx: property (text), widget (QLabel, lbl_tikztemplate) #. i18n: file: backends/gnuplot/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_tikztemplate) #. i18n: file: backends/tikz/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_tikztemplate) #. i18n: file: backends/pstricks/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_pstrickstemplate) #: rc.cpp:16 rc.cpp:19 rc.cpp:38 rc.cpp:41 rc.cpp:58 msgid "Template path:" msgstr "" #. i18n: file: backends/circuitmacros/settings.ui:37 #. i18n: ectx: property (text), widget (QLabel, label_4) #: rc.cpp:22 msgid "Pic interpreter" msgstr "" #. i18n: file: backends/circuitmacros/settings.ui:45 #. i18n: ectx: property (text), item, widget (KComboBox, kcfg_PicInterpreter) #: rc.cpp:25 msgid "dpic + PSTricks" msgstr "" #. i18n: file: backends/circuitmacros/settings.ui:50 #. i18n: ectx: property (text), item, widget (KComboBox, kcfg_PicInterpreter) #: rc.cpp:28 msgid "dpic + TikZ" msgstr "" #. i18n: file: backends/circuitmacros/settings.ui:55 #. i18n: ectx: property (text), item, widget (KComboBox, kcfg_PicInterpreter) #: rc.cpp:31 msgid "gpic" msgstr "" #. i18n: file: backends/gnuplot/gnuplotbackend.kcfg:10 #. i18n: ectx: label, entry (templateurl), group (GnuplotBackend) #: rc.cpp:34 msgid "The location of the Gnuplot template." msgstr "" #. i18n: file: backends/tikz/tikzbackend.kcfg:10 #. i18n: ectx: label, entry (templateurl), group (TikzBackend) #: rc.cpp:44 msgid "The location of the TikZ template." msgstr "" #. i18n: file: backends/pstricks/pstricksbackend.kcfg:10 #. i18n: ectx: label, entry (templateurl), group (PstricksBackend) #: rc.cpp:51 msgid "The location of the PSTricks template." msgstr "" #. i18n: file: widgets/backendchooser.ui:29 #. i18n: ectx: property (text), widget (QLabel, label) #: rc.cpp:61 msgid "Choose the Backend to use:" msgstr "" #. i18n: file: widgets/backendchooser.ui:59 #. i18n: ectx: property (text), widget (QCheckBox, makeDefault) #: rc.cpp:64 msgid "Make this the default backend" msgstr "" #. i18n: file: widgets/templatechooser.ui:17 #. i18n: ectx: property (text), widget (QLabel, label) #: rc.cpp:67 msgid "Backend:" msgstr "" #. i18n: file: widgets/templatechooser.ui:48 #. i18n: ectx: property (text), widget (KPushButton, btnAdd) #: rc.cpp:70 msgid "New" msgstr "" #. i18n: file: widgets/templatechooser.ui:55 #. i18n: ectx: property (text), widget (KPushButton, btnEdit) #: rc.cpp:73 msgid "Edit" msgstr "" #. i18n: file: widgets/templatechooser.ui:62 #. i18n: ectx: property (text), widget (KPushButton, btnRemove) #: rc.cpp:76 msgid "Remove" msgstr "" #. i18n: file: widgets/templatechooser.ui:69 #. i18n: ectx: property (text), widget (KPushButton, btnDownload) #: rc.cpp:79 msgid "Download" msgstr "" #. i18n: file: widgets/templatechooser.ui:76 #. i18n: ectx: property (text), widget (KPushButton, btnUpload) #: rc.cpp:82 msgid "Upload" msgstr "" #. i18n: file: cirkuit.kcfg:10 #. i18n: ectx: label, entry (DefaultBackend), group (general) #: rc.cpp:85 msgid "Default backend." msgstr "" #. i18n: file: cirkuit.kcfg:14 #. i18n: ectx: label, entry (AutoSelectBackend), group (general) #. i18n: file: cirkuit_general_settings.ui:52 #. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoSelectBackend) #: rc.cpp:88 rc.cpp:118 msgid "Automatic backend selection" msgstr "" #. i18n: file: cirkuit.kcfg:18 #. i18n: ectx: label, entry (RefreshInterval), group (general) #: rc.cpp:91 msgid "Preview generation refresh timeout." msgstr "" #. i18n: file: cirkuit.kcfg:22 #. i18n: ectx: label, entry (AutoRefresh), group (general) #: rc.cpp:94 msgid "Enable automatic refresh." msgstr "" #. i18n: file: cirkuit.kcfg:26 #. i18n: ectx: label, entry (RefreshOnSave), group (general) #: rc.cpp:97 msgid "Refresh when document is saved." msgstr "" #. i18n: file: cirkuit.kcfg:30 #. i18n: ectx: label, entry (ZoomToFit), group (general) #: rc.cpp:100 msgid "Automatically zoom the preview to fit the preview widget" msgstr "" #. i18n: file: cirkuit.kcfg:34 #. i18n: ectx: label, entry (ResolutionPpm), group (general) #: rc.cpp:103 msgid "PNG and JPEG resolution." msgstr "" #. i18n: file: cirkuit_general_settings.ui:14 #. i18n: ectx: property (windowTitle), widget (QWidget, CirkuitGeneralForm) #: rc.cpp:109 msgid "General settings" msgstr "" #. i18n: file: cirkuit_general_settings.ui:23 #. i18n: ectx: property (title), widget (QGroupBox, groupBackend) #: rc.cpp:112 msgid "Backends" msgstr "" #. i18n: file: cirkuit_general_settings.ui:29 #. i18n: ectx: property (text), widget (QLabel, label_3) #: rc.cpp:115 msgid "Default backend:" msgstr "" #. i18n: file: cirkuit_general_settings.ui:71 #. i18n: ectx: property (text), widget (QLabel, label) #: rc.cpp:124 msgid "Preview refresh interval (sec):" msgstr "" #. i18n: file: cirkuit_general_settings.ui:103 #. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoRefresh) #: rc.cpp:127 msgid "Automatic preview generation" msgstr "" #. i18n: file: cirkuit_general_settings.ui:113 #. i18n: ectx: property (text), widget (QCheckBox, kcfg_RefreshOnSave) #: rc.cpp:130 msgid "Refresh the preview when saving the document" msgstr "" #. i18n: file: cirkuit_general_settings.ui:129 #. i18n: ectx: property (text), widget (QLabel, label_2) #: rc.cpp:133 msgid "PNG and JPEG resolution (DPI):" msgstr "" #. i18n: file: cirkuitui.rc:5 #. i18n: ectx: Menu (file) #: rc.cpp:136 msgid "&File" msgstr "" #. i18n: file: cirkuitui.rc:26 #. i18n: ectx: Menu (build) #: rc.cpp:139 msgid "&Preview" msgstr "" #. i18n: file: cirkuitui.rc:33 #. i18n: ectx: Menu (view) #: rc.cpp:142 msgid "&View" msgstr "" #. i18n: file: cirkuitui.rc:46 #. i18n: ectx: Menu (help) #: rc.cpp:145 msgid "&Help" msgstr "" #. i18n: file: cirkuitui.rc:54 #. i18n: ectx: ToolBar (mainToolBar) #: rc.cpp:148 msgid "Main Toolbar" msgstr ""cirkuit-0.4.3/po/lt/CMakeLists.txt000644 001750 001750 00000000163 11677602132 020476 0ustar00scarlettscarlett000000 000000 file(GLOB _po_files *.po) GETTEXT_PROCESS_PO_FILES(lt ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} ${_po_files} ) cirkuit-0.4.3/po/de/000755 001750 001750 00000000000 11677601600 015706 5ustar00scarlettscarlett000000 000000 cirkuit-0.4.3/po/de/cirkuit.po000644 001750 001750 00000032737 11677601600 017734 0ustar00scarlettscarlett000000 000000 # Copyright (C) YEAR This_file_is_part_of_KDE # This file is distributed under the same license as the PACKAGE package. # # Panagiotis Papadopoulos , 2010. # Burkhard Lück , 2011. msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2011-11-18 05:01+0100\n" "PO-Revision-Date: 2011-11-12 19:30+0100\n" "Last-Translator: Burkhard Lück \n" "Language-Team: German \n" "Language: deX-Generator: Lokalize 1.1\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Lokalize 1.2\n" #: widgets/imageview.cpp:81 msgid "Zoom to fit" msgstr "Auf Ansichtsgröße zoomen" #: widgets/templatechoosedialog.cpp:103 mainwindow.cpp:174 msgid "Template manager" msgstr "Vorlagenverwaltung" #: widgets/templatechoosedialog.cpp:193 msgid "Template name" msgstr "Name der Vorlage" #: widgets/templatechoosedialog.cpp:193 msgid "Insert the template name" msgstr "Geben Sie den Namen der Vorlage ein" #: widgets/templatechoosedialog.cpp:217 msgid "Do you really want to delete the selected template?" msgstr "Möchten Sie die ausgewählte Vorlage wirklich löschen?" #: widgets/templatechoosedialog.cpp:218 msgid "Confirm deletion" msgstr "Löschen bestätigen" #: widgets/backendchoosedialog.cpp:26 #, kde-format msgid "" "

%1

%2

See %3 for more " "information
" msgstr "" "

%1

%2

Weitere Informationen finden Sie auf %3
" #: widgets/backendchoosedialog.cpp:33 msgid "Backend selection" msgstr "Modulauswahl" #: main.cpp:30 msgid "Cirkuit" msgstr "Cirkuit" #: main.cpp:30 msgid "" "An application to generate publication-ready figures. It is a KDE frontend " "for Circuit Macros by J. D. Aplevich, TikZ and Gnuplot.

Visit the Circuit Macros " "and TikZ websites for further " "information." msgstr "" #: main.cpp:30 msgid "(c) 2011 Matteo Agostinelli" msgstr "(c) 2011 Matteo Agostinelli" #: main.cpp:31 msgid "Matteo Agostinelli" msgstr "Matteo Agostinelli" #: main.cpp:31 msgid "Maintainer" msgstr "Betreuer" #: main.cpp:36 msgid "Document to open" msgstr "Zu öffnendes Dokument" #: generatorthread.cpp:55 msgid "No backend could be selected!" msgstr "Es konnte kein Modul ausgewählt werden." #: mainwindow.cpp:81 msgid "" "A KDE text-editor component could not be found;\n" "please check your KDE installation." msgstr "" "Es wurde keine KDE-Editorkomponente gefunden\n" "Bitte überprüfen Sie Ihre KDE-Installation." #. i18n: file: cirkuit_general_settings.ui:65 #. i18n: ectx: property (title), widget (QGroupBox, groupBox) #: mainwindow.cpp:90 rc.cpp:121 msgid "Preview" msgstr "Vorschau" #: mainwindow.cpp:96 msgid "Log" msgstr "Protokoll" #: mainwindow.cpp:158 msgid "Export..." msgstr "Exportieren ..." #: mainwindow.cpp:162 msgid "Build preview" msgstr "Vorschau erstellen" #: mainwindow.cpp:168 msgid "Open preview" msgstr "Vorschau öffnen" #: mainwindow.cpp:178 msgid "Show manual" msgstr "Handbuch anzeigen" #: mainwindow.cpp:182 msgid "Show examples" msgstr "Beispiele anzeigen" #: mainwindow.cpp:190 msgid "Download Examples" msgstr "Beispiele herunterladen" #: mainwindow.cpp:195 msgid "Upload Example" msgstr "Beispiele hochladen" #: mainwindow.cpp:200 msgid "&Open Example" msgstr "&Beispiele öffnen " #: mainwindow.cpp:238 msgid "Open file - Cirkuit" msgstr "Datei öffnen – Cirkuit" #: mainwindow.cpp:281 msgid "Save file - Cirkuit" msgstr "Datei speichern – Cirkuit" #: mainwindow.cpp:313 msgid "Export image - Cirkuit" msgstr "Bild exportieren – Cirkuit" #: mainwindow.cpp:402 #, kde-format msgid "Backend %1 not found" msgstr "Modul %1 wurde nicht gefunden" #: mainwindow.cpp:411 msgid "No valid backend selected." msgstr "Kein gültiges Modul ausgewählt." #: mainwindow.cpp:460 msgid "General" msgstr "Allgemein" #: mainwindow.cpp:519 msgid "" "Circuit Macros could not be found on your system. The application will not " "work if the macros are not installed. Do you want to proceed with the " "installation?" msgstr "" #: mainwindow.cpp:519 msgid "Installation needed" msgstr "Installation erforderlich" #: mainwindow.cpp:524 #, fuzzy #| msgid "Download Circuit Macros. Please wait..." msgid "Downloading Circuit Macros. Please wait..." msgstr "Circuit-Makros werden heruntergeladen, bitte warten ..." #: mainwindow.cpp:532 #, kde-format msgid "" "A new version of Circuit Macros (version %1) is available. Do you want to " "upgrade?" msgstr "" "Eine neue Version der Circuit-Makros (Version %1) ist verfügbar. Möchten Sie " "sie aktualisieren?" #: mainwindow.cpp:532 msgid "Upgrade" msgstr "Aktualisieren" #: mainwindow.cpp:550 msgid "Unable to generate a preview for the current input" msgstr "Die Vorschau für die aktuelle Eingabe kann nicht erstellt werden" #: mainwindow.cpp:577 msgid "" "No working backend has been found. Cirkuit is unable to generate any figure." msgstr "" "Es wurden keine funktionsfähigen Module gefunden. Cirkuit kann keine " "Grafiken generieren." #: mainwindow.cpp:577 msgid "No backends found" msgstr "Keine Module gefunden" #: mainwindow.cpp:610 #, kde-format msgid "%1 manual" msgstr "%1 Handbuch" #: mainwindow.cpp:611 #, kde-format msgid "%1 examples" msgstr "%1 Beispiele" #: mainwindow.cpp:630 msgid "Save the current document before uploading it" msgstr "Das aktuelle Dokument vor dem Hochladen speichern" #: rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Panagiotis Papadopoulos" #: rc.cpp:2 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "pano_90@gmx.net" #. i18n: file: backends/circuitmacros/circuitmacrosbackend.kcfg:18 #. i18n: ectx: label, entry (templateurl), group (CircuitMacrosBackend) #: rc.cpp:5 msgid "The location of the Circuit Macros template." msgstr "Der Speicherort der Circuit-Makros-Vorlage." #. i18n: file: backends/circuitmacros/circuitmacrosbackend.kcfg:22 #. i18n: ectx: label, entry (tikztemplateurl), group (CircuitMacrosBackend) #: rc.cpp:8 msgid "The location of the Circuit Macros template with TikZ backend." msgstr "Der Speicherort der Circuit-Makros-Vorlage mit dem TikZ-Modul." #. i18n: file: backends/circuitmacros/circuitmacrosbackend.kcfg:26 #. i18n: ectx: label, entry (latexargs), group (CircuitMacrosBackend) #. i18n: file: backends/tikz/tikzbackend.kcfg:14 #. i18n: ectx: label, entry (latexargs), group (TikzBackend) #. i18n: file: backends/pstricks/pstricksbackend.kcfg:14 #. i18n: ectx: label, entry (latexargs), group (PstricksBackend) #. i18n: file: cirkuit.kcfg:38 #. i18n: ectx: label, entry (LatexArgs), group (general) #: rc.cpp:11 rc.cpp:47 rc.cpp:54 rc.cpp:106 msgid "The default arguments called in the latex executable" msgstr "Das Standardargument zu Aufruf des Programms LaTex" #. i18n: file: backends/circuitmacros/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_template) #. i18n: file: backends/circuitmacros/settings.ui:27 #. i18n: ectx: property (text), widget (QLabel, lbl_tikztemplate) #. i18n: file: backends/gnuplot/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_tikztemplate) #. i18n: file: backends/tikz/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_tikztemplate) #. i18n: file: backends/pstricks/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_pstrickstemplate) #: rc.cpp:16 rc.cpp:19 rc.cpp:38 rc.cpp:41 rc.cpp:58 msgid "Template path:" msgstr "Pfad zur Vorlage:" #. i18n: file: backends/circuitmacros/settings.ui:37 #. i18n: ectx: property (text), widget (QLabel, label_4) #: rc.cpp:22 msgid "Pic interpreter" msgstr "Pic-Interpreter" #. i18n: file: backends/circuitmacros/settings.ui:45 #. i18n: ectx: property (text), item, widget (KComboBox, kcfg_PicInterpreter) #: rc.cpp:25 msgid "dpic + PSTricks" msgstr "dpic + PSTricks" #. i18n: file: backends/circuitmacros/settings.ui:50 #. i18n: ectx: property (text), item, widget (KComboBox, kcfg_PicInterpreter) #: rc.cpp:28 msgid "dpic + TikZ" msgstr "dpic + TikZ" #. i18n: file: backends/circuitmacros/settings.ui:55 #. i18n: ectx: property (text), item, widget (KComboBox, kcfg_PicInterpreter) #: rc.cpp:31 msgid "gpic" msgstr "gpic" #. i18n: file: backends/gnuplot/gnuplotbackend.kcfg:10 #. i18n: ectx: label, entry (templateurl), group (GnuplotBackend) #: rc.cpp:34 msgid "The location of the Gnuplot template." msgstr "Der Speicherort der Gnuplot-Vorlage." #. i18n: file: backends/tikz/tikzbackend.kcfg:10 #. i18n: ectx: label, entry (templateurl), group (TikzBackend) #: rc.cpp:44 msgid "The location of the TikZ template." msgstr "Der Speicherort der TikZ-Vorlage." #. i18n: file: backends/pstricks/pstricksbackend.kcfg:10 #. i18n: ectx: label, entry (templateurl), group (PstricksBackend) #: rc.cpp:51 msgid "The location of the PSTricks template." msgstr "Der Speicherort der PSTricks-Vorlage." #. i18n: file: widgets/backendchooser.ui:29 #. i18n: ectx: property (text), widget (QLabel, label) #: rc.cpp:61 msgid "Choose the Backend to use:" msgstr "Wählen Sie das zu verwendende Modul:" #. i18n: file: widgets/backendchooser.ui:59 #. i18n: ectx: property (text), widget (QCheckBox, makeDefault) #: rc.cpp:64 msgid "Make this the default backend" msgstr "Ausgewähltes als Standard-Modul einstellen" #. i18n: file: widgets/templatechooser.ui:17 #. i18n: ectx: property (text), widget (QLabel, label) #: rc.cpp:67 msgid "Backend:" msgstr "Modul:" #. i18n: file: widgets/templatechooser.ui:48 #. i18n: ectx: property (text), widget (KPushButton, btnAdd) #: rc.cpp:70 msgid "New" msgstr "Neu" #. i18n: file: widgets/templatechooser.ui:55 #. i18n: ectx: property (text), widget (KPushButton, btnEdit) #: rc.cpp:73 msgid "Edit" msgstr "Bearbeiten" #. i18n: file: widgets/templatechooser.ui:62 #. i18n: ectx: property (text), widget (KPushButton, btnRemove) #: rc.cpp:76 msgid "Remove" msgstr "Entfernen" #. i18n: file: widgets/templatechooser.ui:69 #. i18n: ectx: property (text), widget (KPushButton, btnDownload) #: rc.cpp:79 msgid "Download" msgstr "Herunterladen" #. i18n: file: widgets/templatechooser.ui:76 #. i18n: ectx: property (text), widget (KPushButton, btnUpload) #: rc.cpp:82 msgid "Upload" msgstr "Hochladen" #. i18n: file: cirkuit.kcfg:10 #. i18n: ectx: label, entry (DefaultBackend), group (general) #: rc.cpp:85 msgid "Default backend." msgstr "Standard-Modul." #. i18n: file: cirkuit.kcfg:14 #. i18n: ectx: label, entry (AutoSelectBackend), group (general) #. i18n: file: cirkuit_general_settings.ui:52 #. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoSelectBackend) #: rc.cpp:88 rc.cpp:118 msgid "Automatic backend selection" msgstr "Automatische Wahl des Moduls" #. i18n: file: cirkuit.kcfg:18 #. i18n: ectx: label, entry (RefreshInterval), group (general) #: rc.cpp:91 msgid "Preview generation refresh timeout." msgstr "" #. i18n: file: cirkuit.kcfg:22 #. i18n: ectx: label, entry (AutoRefresh), group (general) #: rc.cpp:94 msgid "Enable automatic refresh." msgstr "Automatisches Aktualisieren aktivieren" #. i18n: file: cirkuit.kcfg:26 #. i18n: ectx: label, entry (RefreshOnSave), group (general) #: rc.cpp:97 msgid "Refresh when document is saved." msgstr "Aktualisieren wenn das Dokument gespeichert ist." #. i18n: file: cirkuit.kcfg:30 #. i18n: ectx: label, entry (ZoomToFit), group (general) #: rc.cpp:100 msgid "Automatically zoom the preview to fit the preview widget" msgstr "" #. i18n: file: cirkuit.kcfg:34 #. i18n: ectx: label, entry (ResolutionPpm), group (general) #: rc.cpp:103 msgid "PNG and JPEG resolution." msgstr "PNG- und JPEG-Auflösung." #. i18n: file: cirkuit_general_settings.ui:14 #. i18n: ectx: property (windowTitle), widget (QWidget, CirkuitGeneralForm) #: rc.cpp:109 msgid "General settings" msgstr "Allgemeine Einstellungen" #. i18n: file: cirkuit_general_settings.ui:23 #. i18n: ectx: property (title), widget (QGroupBox, groupBackend) #: rc.cpp:112 msgid "Backends" msgstr "Module" #. i18n: file: cirkuit_general_settings.ui:29 #. i18n: ectx: property (text), widget (QLabel, label_3) #: rc.cpp:115 msgid "Default backend:" msgstr "Standard-Modul:" #. i18n: file: cirkuit_general_settings.ui:71 #. i18n: ectx: property (text), widget (QLabel, label) #: rc.cpp:124 msgid "Preview refresh interval (sec):" msgstr "Aktualisierungsintervall der Vorschau (in Sekunden):" #. i18n: file: cirkuit_general_settings.ui:103 #. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoRefresh) #: rc.cpp:127 msgid "Automatic preview generation" msgstr "Automatisches Erstellen von Vorschauen" #. i18n: file: cirkuit_general_settings.ui:113 #. i18n: ectx: property (text), widget (QCheckBox, kcfg_RefreshOnSave) #: rc.cpp:130 msgid "Refresh the preview when saving the document" msgstr "Beim Speichern des Dokuments Vorschau aktualisieren" #. i18n: file: cirkuit_general_settings.ui:129 #. i18n: ectx: property (text), widget (QLabel, label_2) #: rc.cpp:133 msgid "PNG and JPEG resolution (DPI):" msgstr "PNG- und JPEG-Auflösung (DPI):" #. i18n: file: cirkuitui.rc:5 #. i18n: ectx: Menu (file) #: rc.cpp:136 msgid "&File" msgstr "&Datei" #. i18n: file: cirkuitui.rc:26 #. i18n: ectx: Menu (build) #: rc.cpp:139 msgid "&Preview" msgstr "&Vorschau" #. i18n: file: cirkuitui.rc:33 #. i18n: ectx: Menu (view) #: rc.cpp:142 msgid "&View" msgstr "&Ansicht" #. i18n: file: cirkuitui.rc:46 #. i18n: ectx: Menu (help) #: rc.cpp:145 msgid "&Help" msgstr "&Hilfe" #. i18n: file: cirkuitui.rc:54 #. i18n: ectx: ToolBar (mainToolBar) #: rc.cpp:148 msgid "Main Toolbar" msgstr "Haupt-Werkzeugleiste" #, fuzzycirkuit-0.4.3/po/de/CMakeLists.txt000644 001750 001750 00000000163 11677601600 020446 0ustar00scarlettscarlett000000 000000 file(GLOB _po_files *.po) GETTEXT_PROCESS_PO_FILES(de ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} ${_po_files} ) cirkuit-0.4.3/po/ru/000755 001750 001750 00000000000 11677602316 015751 5ustar00scarlettscarlett000000 000000 cirkuit-0.4.3/po/ru/cirkuit.po000644 001750 001750 00000037220 11677602316 017767 0ustar00scarlettscarlett000000 000000 # Copyright (C) YEAR This_file_is_part_of_KDE # This file is distributed under the same license as the PACKAGE package. # # Артем Назаров Алексеевич , 2011. # Yuri Efremov , 2011. msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2011-11-18 05:01+0100\n" "PO-Revision-Date: 2011-03-01 21:48+0300\n" "Last-Translator: Yuri Efremov \n" "Language-Team: Russian \n" "Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Lokalize 1.2\n" "Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n" "%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "X-Environment: kde\n" "X-Accelerator-Marker: &\n" "X-Text-Markup: kde4\n" #: widgets/imageview.cpp:81 msgid "Zoom to fit" msgstr "Вместить в окно" #: widgets/templatechoosedialog.cpp:103 mainwindow.cpp:174 msgid "Template manager" msgstr "Управление шаблонами" #: widgets/templatechoosedialog.cpp:193 #, fuzzy #| msgid "Template manager" msgid "Template name" msgstr "Управление шаблонами" #: widgets/templatechoosedialog.cpp:193 msgid "Insert the template name" msgstr "" #: widgets/templatechoosedialog.cpp:217 msgid "Do you really want to delete the selected template?" msgstr "" #: widgets/templatechoosedialog.cpp:218 msgid "Confirm deletion" msgstr "" #: widgets/backendchoosedialog.cpp:26 #, kde-format msgid "" "

%1

%2

See %3 for more " "information
" msgstr "" "

%1

%2

Дополнительную информацию можно узнать по " "адресу %3
" #: widgets/backendchoosedialog.cpp:33 msgid "Backend selection" msgstr "Выбор механизмов обработки" #: main.cpp:30 msgid "Cirkuit" msgstr "Circuit" #: main.cpp:30 msgid "" "An application to generate publication-ready figures. It is a KDE frontend " "for Circuit Macros by J. D. Aplevich, TikZ and Gnuplot.

Visit the Circuit Macros " "and TikZ websites for further " "information." msgstr "" "Приложение для создания графики для публикаций и презентаций. Это интерфейс " "KDE для Circuit Macros от j.D.Aplevich, Tikz и Gnuplot.

Для " "дополнительной информации посетите сайты Circuit Macros и Tikz." #: main.cpp:30 #, fuzzy #| msgid "(c) 2010 Matteo Agostinelli" msgid "(c) 2011 Matteo Agostinelli" msgstr "© Matteo Agostinelli, 2010" #: main.cpp:31 msgid "Matteo Agostinelli" msgstr "Matteo Agostinelli" #: main.cpp:31 msgid "Maintainer" msgstr "Сопровождающий" #: main.cpp:36 msgid "Document to open" msgstr "Открываемый документ" #: generatorthread.cpp:55 msgid "No backend could be selected!" msgstr "Не удалось выбрать механизм обработки." #: mainwindow.cpp:81 msgid "" "A KDE text-editor component could not be found;\n" "please check your KDE installation." msgstr "" "Не удалось найти компонент текстового редактора KDE.\n" "Проверьте правильность установки KDE." #. i18n: file: cirkuit_general_settings.ui:65 #. i18n: ectx: property (title), widget (QGroupBox, groupBox) #: mainwindow.cpp:90 rc.cpp:121 msgid "Preview" msgstr "Просмотр" #: mainwindow.cpp:96 msgid "Log" msgstr "Журнал" #: mainwindow.cpp:158 msgid "Export..." msgstr "Экспорт..." #: mainwindow.cpp:162 msgid "Build preview" msgstr "Создать просмотр" #: mainwindow.cpp:168 msgid "Open preview" msgstr "Открыть просмотр" #: mainwindow.cpp:178 msgid "Show manual" msgstr "Показать руководство" #: mainwindow.cpp:182 msgid "Show examples" msgstr "Показать примеры" #: mainwindow.cpp:190 msgid "Download Examples" msgstr "Загрузить примеры" #: mainwindow.cpp:195 msgid "Upload Example" msgstr "Опубликовать примеры" #: mainwindow.cpp:200 msgid "&Open Example" msgstr "&Открыть пример" #: mainwindow.cpp:238 msgid "Open file - Cirkuit" msgstr "Открытие файла — Cirkuit" #: mainwindow.cpp:281 msgid "Save file - Cirkuit" msgstr "Сохранение файла — Cirkuit" #: mainwindow.cpp:313 msgid "Export image - Cirkuit" msgstr "Экспорт изображения — Cirkuit" #: mainwindow.cpp:402 #, kde-format msgid "Backend %1 not found" msgstr "Механизм обработки %1 не найден" #: mainwindow.cpp:411 msgid "No valid backend selected." msgstr "Выбран недопустимый механизм обработки." #: mainwindow.cpp:460 msgid "General" msgstr "Основное" #: mainwindow.cpp:519 msgid "" "Circuit Macros could not be found on your system. The application will not " "work if the macros are not installed. Do you want to proceed with the " "installation?" msgstr "" "Circuit Macros не найден в вашей системе. Приложение не будет работать без " "установленных макросов. Приступить к установке?" #: mainwindow.cpp:519 msgid "Installation needed" msgstr "Требуется установка" #: mainwindow.cpp:524 #, fuzzy #| msgid "Download Circuit Macros. Please wait..." msgid "Downloading Circuit Macros. Please wait..." msgstr "Загрузка Cirkuit Macros. Подождите..." #: mainwindow.cpp:532 #, kde-format msgid "" "A new version of Circuit Macros (version %1) is available. Do you want to " "upgrade?" msgstr "Доступна новая версия Cirkuit Macros (версия %1). Обновить программу?" #: mainwindow.cpp:532 msgid "Upgrade" msgstr "Обновление" #: mainwindow.cpp:550 msgid "Unable to generate a preview for the current input" msgstr "Не удалось создать предварительный просмотр для текущих входных данных" #: mainwindow.cpp:577 msgid "" "No working backend has been found. Cirkuit is unable to generate any figure." msgstr "" #: mainwindow.cpp:577 #, fuzzy #| msgid "Backend %1 not found" msgid "No backends found" msgstr "Механизм обработки %1 не найден" #: mainwindow.cpp:610 #, kde-format msgid "%1 manual" msgstr "%1 руководство" #: mainwindow.cpp:611 #, kde-format msgid "%1 examples" msgstr "%1 примеры" #: mainwindow.cpp:630 msgid "Save the current document before uploading it" msgstr "Сохранить текущий документ перед публикацией" #: rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Артём Назаров" #: rc.cpp:2 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "nazarov-1990@bk.ru" #. i18n: file: backends/circuitmacros/circuitmacrosbackend.kcfg:18 #. i18n: ectx: label, entry (templateurl), group (CircuitMacrosBackend) #: rc.cpp:5 msgid "The location of the Circuit Macros template." msgstr "Расположение шаблона Circuit Macros." #. i18n: file: backends/circuitmacros/circuitmacrosbackend.kcfg:22 #. i18n: ectx: label, entry (tikztemplateurl), group (CircuitMacrosBackend) #: rc.cpp:8 msgid "The location of the Circuit Macros template with TikZ backend." msgstr "Расположение шаблона Circuit Macros с модулем TikZ." #. i18n: file: backends/circuitmacros/circuitmacrosbackend.kcfg:26 #. i18n: ectx: label, entry (latexargs), group (CircuitMacrosBackend) #. i18n: file: backends/tikz/tikzbackend.kcfg:14 #. i18n: ectx: label, entry (latexargs), group (TikzBackend) #. i18n: file: backends/pstricks/pstricksbackend.kcfg:14 #. i18n: ectx: label, entry (latexargs), group (PstricksBackend) #. i18n: file: cirkuit.kcfg:38 #. i18n: ectx: label, entry (LatexArgs), group (general) #: rc.cpp:11 rc.cpp:47 rc.cpp:54 rc.cpp:106 msgid "The default arguments called in the latex executable" msgstr "" "Параметры по умолчанию, используемые при вызове исполняемого файла latex" #. i18n: file: backends/circuitmacros/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_template) #. i18n: file: backends/circuitmacros/settings.ui:27 #. i18n: ectx: property (text), widget (QLabel, lbl_tikztemplate) #. i18n: file: backends/gnuplot/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_tikztemplate) #. i18n: file: backends/tikz/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_tikztemplate) #. i18n: file: backends/pstricks/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_pstrickstemplate) #: rc.cpp:16 rc.cpp:19 rc.cpp:38 rc.cpp:41 rc.cpp:58 msgid "Template path:" msgstr "Путь к шаблонам:" #. i18n: file: backends/circuitmacros/settings.ui:37 #. i18n: ectx: property (text), widget (QLabel, label_4) #: rc.cpp:22 msgid "Pic interpreter" msgstr "Интерпретатор Pic" #. i18n: file: backends/circuitmacros/settings.ui:45 #. i18n: ectx: property (text), item, widget (KComboBox, kcfg_PicInterpreter) #: rc.cpp:25 msgid "dpic + PSTricks" msgstr "dpic + PSTricks" #. i18n: file: backends/circuitmacros/settings.ui:50 #. i18n: ectx: property (text), item, widget (KComboBox, kcfg_PicInterpreter) #: rc.cpp:28 msgid "dpic + TikZ" msgstr "dpic + Tikz" #. i18n: file: backends/circuitmacros/settings.ui:55 #. i18n: ectx: property (text), item, widget (KComboBox, kcfg_PicInterpreter) #: rc.cpp:31 msgid "gpic" msgstr "gpic" #. i18n: file: backends/gnuplot/gnuplotbackend.kcfg:10 #. i18n: ectx: label, entry (templateurl), group (GnuplotBackend) #: rc.cpp:34 msgid "The location of the Gnuplot template." msgstr "Расположение шаблона Gnuplot." #. i18n: file: backends/tikz/tikzbackend.kcfg:10 #. i18n: ectx: label, entry (templateurl), group (TikzBackend) #: rc.cpp:44 msgid "The location of the TikZ template." msgstr "Расположение шаблона Tikz." #. i18n: file: backends/pstricks/pstricksbackend.kcfg:10 #. i18n: ectx: label, entry (templateurl), group (PstricksBackend) #: rc.cpp:51 #, fuzzy #| msgid "The location of the TikZ template." msgid "The location of the PSTricks template." msgstr "Расположение шаблона Tikz." #. i18n: file: widgets/backendchooser.ui:29 #. i18n: ectx: property (text), widget (QLabel, label) #: rc.cpp:61 msgid "Choose the Backend to use:" msgstr "Выбор механизма обработки:" #. i18n: file: widgets/backendchooser.ui:59 #. i18n: ectx: property (text), widget (QCheckBox, makeDefault) #: rc.cpp:64 msgid "Make this the default backend" msgstr "Сделать этот механизм по умолчанию" #. i18n: file: widgets/templatechooser.ui:17 #. i18n: ectx: property (text), widget (QLabel, label) #: rc.cpp:67 msgid "Backend:" msgstr "Механизм:" #. i18n: file: widgets/templatechooser.ui:48 #. i18n: ectx: property (text), widget (KPushButton, btnAdd) #: rc.cpp:70 msgid "New" msgstr "" #. i18n: file: widgets/templatechooser.ui:55 #. i18n: ectx: property (text), widget (KPushButton, btnEdit) #: rc.cpp:73 msgid "Edit" msgstr "Изменить" #. i18n: file: widgets/templatechooser.ui:62 #. i18n: ectx: property (text), widget (KPushButton, btnRemove) #: rc.cpp:76 msgid "Remove" msgstr "" #. i18n: file: widgets/templatechooser.ui:69 #. i18n: ectx: property (text), widget (KPushButton, btnDownload) #: rc.cpp:79 msgid "Download" msgstr "Загрузить" #. i18n: file: widgets/templatechooser.ui:76 #. i18n: ectx: property (text), widget (KPushButton, btnUpload) #: rc.cpp:82 msgid "Upload" msgstr "Опубликовать" #. i18n: file: cirkuit.kcfg:10 #. i18n: ectx: label, entry (DefaultBackend), group (general) #: rc.cpp:85 msgid "Default backend." msgstr "Механизм обработки по умолчанию." #. i18n: file: cirkuit.kcfg:14 #. i18n: ectx: label, entry (AutoSelectBackend), group (general) #. i18n: file: cirkuit_general_settings.ui:52 #. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoSelectBackend) #: rc.cpp:88 rc.cpp:118 msgid "Automatic backend selection" msgstr "Автоматический выбор механизма обработки" #. i18n: file: cirkuit.kcfg:18 #. i18n: ectx: label, entry (RefreshInterval), group (general) #: rc.cpp:91 msgid "Preview generation refresh timeout." msgstr "Интервал обновления просмотра." #. i18n: file: cirkuit.kcfg:22 #. i18n: ectx: label, entry (AutoRefresh), group (general) #: rc.cpp:94 msgid "Enable automatic refresh." msgstr "Включить автоматическое обновление." #. i18n: file: cirkuit.kcfg:26 #. i18n: ectx: label, entry (RefreshOnSave), group (general) #: rc.cpp:97 msgid "Refresh when document is saved." msgstr "Обновлять при сохранении документа." #. i18n: file: cirkuit.kcfg:30 #. i18n: ectx: label, entry (ZoomToFit), group (general) #: rc.cpp:100 msgid "Automatically zoom the preview to fit the preview widget" msgstr "Автоматически изменять размер просмотра до размера окна" #. i18n: file: cirkuit.kcfg:34 #. i18n: ectx: label, entry (ResolutionPpm), group (general) #: rc.cpp:103 msgid "PNG and JPEG resolution." msgstr "Разрешение PNG и JPEG." #. i18n: file: cirkuit_general_settings.ui:14 #. i18n: ectx: property (windowTitle), widget (QWidget, CirkuitGeneralForm) #: rc.cpp:109 msgid "General settings" msgstr "Основные параметры" #. i18n: file: cirkuit_general_settings.ui:23 #. i18n: ectx: property (title), widget (QGroupBox, groupBackend) #: rc.cpp:112 msgid "Backends" msgstr "Механизмы обработки" #. i18n: file: cirkuit_general_settings.ui:29 #. i18n: ectx: property (text), widget (QLabel, label_3) #: rc.cpp:115 msgid "Default backend:" msgstr "Механизм по умолчанию:" #. i18n: file: cirkuit_general_settings.ui:71 #. i18n: ectx: property (text), widget (QLabel, label) #: rc.cpp:124 msgid "Preview refresh interval (sec):" msgstr "Интервал обновления просмотра (сек):" #. i18n: file: cirkuit_general_settings.ui:103 #. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoRefresh) #: rc.cpp:127 msgid "Automatic preview generation" msgstr "Автоматическое создание просмотра" #. i18n: file: cirkuit_general_settings.ui:113 #. i18n: ectx: property (text), widget (QCheckBox, kcfg_RefreshOnSave) #: rc.cpp:130 msgid "Refresh the preview when saving the document" msgstr "Обновление просмотра при сохранении документа" #. i18n: file: cirkuit_general_settings.ui:129 #. i18n: ectx: property (text), widget (QLabel, label_2) #: rc.cpp:133 msgid "PNG and JPEG resolution (DPI):" msgstr "Разрешение PNG и JPEG (dpi):" #. i18n: file: cirkuitui.rc:5 #. i18n: ectx: Menu (file) #: rc.cpp:136 msgid "&File" msgstr "&Файл" #. i18n: file: cirkuitui.rc:26 #. i18n: ectx: Menu (build) #: rc.cpp:139 msgid "&Preview" msgstr "&Просмотр" #. i18n: file: cirkuitui.rc:33 #. i18n: ectx: Menu (view) #: rc.cpp:142 msgid "&View" msgstr "&Вид" #. i18n: file: cirkuitui.rc:46 #. i18n: ectx: Menu (help) #: rc.cpp:145 msgid "&Help" msgstr "&Справка" #. i18n: file: cirkuitui.rc:54 #. i18n: ectx: ToolBar (mainToolBar) #: rc.cpp:148 msgid "Main Toolbar" msgstr "Основная панель инструментов"cirkuit-0.4.3/po/ru/CMakeLists.txt000644 001750 001750 00000000163 11677602316 020511 0ustar00scarlettscarlett000000 000000 file(GLOB _po_files *.po) GETTEXT_PROCESS_PO_FILES(ru ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} ${_po_files} ) cirkuit-0.4.3/po/CMakeLists.txt000644 001750 001750 00000001264 11677602522 020065 0ustar00scarlettscarlett000000 000000 find_package(Gettext REQUIRED) if (NOT GETTEXT_MSGMERGE_EXECUTABLE) MESSAGE(FATAL_ERROR "Please install msgmerge binary") endif (NOT GETTEXT_MSGMERGE_EXECUTABLE) if (NOT GETTEXT_MSGFMT_EXECUTABLE) MESSAGE(FATAL_ERROR "Please install msgmerge binary") endif (NOT GETTEXT_MSGFMT_EXECUTABLE) add_subdirectory(lt) add_subdirectory(ug) add_subdirectory(ga) add_subdirectory(fr) add_subdirectory(sv) add_subdirectory(ru) add_subdirectory(it) add_subdirectory(ja) add_subdirectory(pl) add_subdirectory(es) add_subdirectory(cs) add_subdirectory(pt) add_subdirectory(km) add_subdirectory(nds) add_subdirectory(pt_BR) add_subdirectory(uk) add_subdirectory(nl) add_subdirectory(de) add_subdirectory(et) cirkuit-0.4.3/po/nds/000755 001750 001750 00000000000 11677602211 016101 5ustar00scarlettscarlett000000 000000 cirkuit-0.4.3/po/nds/cirkuit.po000644 001750 001750 00000030466 11677602211 020124 0ustar00scarlettscarlett000000 000000 # translation of cirkuit.po to Low Saxon # Copyright (C) YEAR This_file_is_part_of_KDE # This file is distributed under the same license as the PACKAGE package. # Manfred Wiese , 2010, 2011. # msgid "" msgstr "" "Project-Id-Version: cirkuit\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2011-11-18 05:01+0100\n" "PO-Revision-Date: 2011-06-05 06:16+0200\n" "Last-Translator: Manfred Wiese \n" "Language-Team: Low Saxon \n" "Language: nds\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Lokalize 1.0\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #: widgets/imageview.cpp:81 msgid "Zoom to fit" msgstr "Grött topassen" #: widgets/templatechoosedialog.cpp:103 mainwindow.cpp:174 msgid "Template manager" msgstr "" #: widgets/templatechoosedialog.cpp:193 msgid "Template name" msgstr "Vörlaagnaam" #: widgets/templatechoosedialog.cpp:193 msgid "Insert the template name" msgstr "" #: widgets/templatechoosedialog.cpp:217 msgid "Do you really want to delete the selected template?" msgstr "" #: widgets/templatechoosedialog.cpp:218 msgid "Confirm deletion" msgstr "Wegdoon beglöven" #: widgets/backendchoosedialog.cpp:26 #, kde-format msgid "" "

%1

%2

See %3 for more " "information
" msgstr "" "

%1

%2

Op %3 laat sik mehr " "Informatschonen finnen.
" #: widgets/backendchoosedialog.cpp:33 #, fuzzy #| msgid "Backends" msgid "Backend selection" msgstr "Hülpprogrammen" #: main.cpp:30 msgid "Cirkuit" msgstr "Cirkuit" #: main.cpp:30 msgid "" "An application to generate publication-ready figures. It is a KDE frontend " "for Circuit Macros by J. D. Aplevich, TikZ and Gnuplot.

Visit the Circuit Macros " "and TikZ websites for further " "information." msgstr "" #: main.cpp:30 #, fuzzy #| msgid "(c) 2010 Matteo Agostinelli" msgid "(c) 2011 Matteo Agostinelli" msgstr "© 2010: Matteo Agostinelli" #: main.cpp:31 msgid "Matteo Agostinelli" msgstr "Matteo Agostinelli" #: main.cpp:31 msgid "Maintainer" msgstr "Pleger" #: main.cpp:36 msgid "Document to open" msgstr "Dokment, dat Du opmaken wullt" #: generatorthread.cpp:55 msgid "No backend could be selected!" msgstr "" #: mainwindow.cpp:81 msgid "" "A KDE text-editor component could not be found;\n" "please check your KDE installation." msgstr "" "Dor lett sik keen KDE-Texteditorkomponent finnen.\n" "Prööv bitte Dien KDE-Installatschoon." #. i18n: file: cirkuit_general_settings.ui:65 #. i18n: ectx: property (title), widget (QGroupBox, groupBox) #: mainwindow.cpp:90 rc.cpp:121 msgid "Preview" msgstr "Vöransicht" #: mainwindow.cpp:96 msgid "Log" msgstr "Logbook" #: mainwindow.cpp:158 msgid "Export..." msgstr "Exporteren..." #: mainwindow.cpp:162 msgid "Build preview" msgstr "" #: mainwindow.cpp:168 msgid "Open preview" msgstr "Vöransicht opmaken" #: mainwindow.cpp:178 msgid "Show manual" msgstr "Handbook wiesen" #: mainwindow.cpp:182 msgid "Show examples" msgstr "Bispelen wiesen" #: mainwindow.cpp:190 msgid "Download Examples" msgstr "Bispillen daalladen" #: mainwindow.cpp:195 msgid "Upload Example" msgstr "Bispill hoochladen" #: mainwindow.cpp:200 msgid "&Open Example" msgstr "Bispill &opmaken" #: mainwindow.cpp:238 msgid "Open file - Cirkuit" msgstr "Datei opmaken - Cirkuit" #: mainwindow.cpp:281 msgid "Save file - Cirkuit" msgstr "Datei sekern - Cirkuit" #: mainwindow.cpp:313 msgid "Export image - Cirkuit" msgstr "Bild exporteren - Cirkuit" #: mainwindow.cpp:402 #, kde-format msgid "Backend %1 not found" msgstr "Hülpprogramm \"%1\" lett sik nich finnen." #: mainwindow.cpp:411 msgid "No valid backend selected." msgstr "" #: mainwindow.cpp:460 msgid "General" msgstr "Allgemeen" #: mainwindow.cpp:519 msgid "" "Circuit Macros could not be found on your system. The application will not " "work if the macros are not installed. Do you want to proceed with the " "installation?" msgstr "" #: mainwindow.cpp:519 msgid "Installation needed" msgstr "Installeren deit noot" #: mainwindow.cpp:524 msgid "Downloading Circuit Macros. Please wait..." msgstr "" #: mainwindow.cpp:532 #, kde-format msgid "" "A new version of Circuit Macros (version %1) is available. Do you want to " "upgrade?" msgstr "" #: mainwindow.cpp:532 msgid "Upgrade" msgstr "Opgraderen" #: mainwindow.cpp:550 msgid "Unable to generate a preview for the current input" msgstr "" #: mainwindow.cpp:577 msgid "" "No working backend has been found. Cirkuit is unable to generate any figure." msgstr "" #: mainwindow.cpp:577 msgid "No backends found" msgstr "" #: mainwindow.cpp:610 #, kde-format msgid "%1 manual" msgstr "%1 Handbook" #: mainwindow.cpp:611 #, kde-format msgid "%1 examples" msgstr "%1 Bispelen" #: mainwindow.cpp:630 msgid "Save the current document before uploading it" msgstr "" #: rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Manfred Wiese" #: rc.cpp:2 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "m.j.wiese@web.de" #. i18n: file: backends/circuitmacros/circuitmacrosbackend.kcfg:18 #. i18n: ectx: label, entry (templateurl), group (CircuitMacrosBackend) #: rc.cpp:5 msgid "The location of the Circuit Macros template." msgstr "" #. i18n: file: backends/circuitmacros/circuitmacrosbackend.kcfg:22 #. i18n: ectx: label, entry (tikztemplateurl), group (CircuitMacrosBackend) #: rc.cpp:8 msgid "The location of the Circuit Macros template with TikZ backend." msgstr "" #. i18n: file: backends/circuitmacros/circuitmacrosbackend.kcfg:26 #. i18n: ectx: label, entry (latexargs), group (CircuitMacrosBackend) #. i18n: file: backends/tikz/tikzbackend.kcfg:14 #. i18n: ectx: label, entry (latexargs), group (TikzBackend) #. i18n: file: backends/pstricks/pstricksbackend.kcfg:14 #. i18n: ectx: label, entry (latexargs), group (PstricksBackend) #. i18n: file: cirkuit.kcfg:38 #. i18n: ectx: label, entry (LatexArgs), group (general) #: rc.cpp:11 rc.cpp:47 rc.cpp:54 rc.cpp:106 msgid "The default arguments called in the latex executable" msgstr "" #. i18n: file: backends/circuitmacros/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_template) #. i18n: file: backends/circuitmacros/settings.ui:27 #. i18n: ectx: property (text), widget (QLabel, lbl_tikztemplate) #. i18n: file: backends/gnuplot/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_tikztemplate) #. i18n: file: backends/tikz/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_tikztemplate) #. i18n: file: backends/pstricks/settings.ui:17 #. i18n: ectx: property (text), widget (QLabel, lbl_pstrickstemplate) #: rc.cpp:16 rc.cpp:19 rc.cpp:38 rc.cpp:41 rc.cpp:58 msgid "Template path:" msgstr "" #. i18n: file: backends/circuitmacros/settings.ui:37 #. i18n: ectx: property (text), widget (QLabel, label_4) #: rc.cpp:22 msgid "Pic interpreter" msgstr "" #. i18n: file: backends/circuitmacros/settings.ui:45 #. i18n: ectx: property (text), item, widget (KComboBox, kcfg_PicInterpreter) #: rc.cpp:25 msgid "dpic + PSTricks" msgstr "dpic un PSTricks" #. i18n: file: backends/circuitmacros/settings.ui:50 #. i18n: ectx: property (text), item, widget (KComboBox, kcfg_PicInterpreter) #: rc.cpp:28 msgid "dpic + TikZ" msgstr "dpic un TikZ" #. i18n: file: backends/circuitmacros/settings.ui:55 #. i18n: ectx: property (text), item, widget (KComboBox, kcfg_PicInterpreter) #: rc.cpp:31 msgid "gpic" msgstr "gpic" #. i18n: file: backends/gnuplot/gnuplotbackend.kcfg:10 #. i18n: ectx: label, entry (templateurl), group (GnuplotBackend) #: rc.cpp:34 msgid "The location of the Gnuplot template." msgstr "" #. i18n: file: backends/tikz/tikzbackend.kcfg:10 #. i18n: ectx: label, entry (templateurl), group (TikzBackend) #: rc.cpp:44 msgid "The location of the TikZ template." msgstr "" #. i18n: file: backends/pstricks/pstricksbackend.kcfg:10 #. i18n: ectx: label, entry (templateurl), group (PstricksBackend) #: rc.cpp:51 msgid "The location of the PSTricks template." msgstr "" #. i18n: file: widgets/backendchooser.ui:29 #. i18n: ectx: property (text), widget (QLabel, label) #: rc.cpp:61 msgid "Choose the Backend to use:" msgstr "" #. i18n: file: widgets/backendchooser.ui:59 #. i18n: ectx: property (text), widget (QCheckBox, makeDefault) #: rc.cpp:64 msgid "Make this the default backend" msgstr "" #. i18n: file: widgets/templatechooser.ui:17 #. i18n: ectx: property (text), widget (QLabel, label) #: rc.cpp:67 msgid "Backend:" msgstr "Hülpprogramm:" #. i18n: file: widgets/templatechooser.ui:48 #. i18n: ectx: property (text), widget (KPushButton, btnAdd) #: rc.cpp:70 msgid "New" msgstr "Nieg" #. i18n: file: widgets/templatechooser.ui:55 #. i18n: ectx: property (text), widget (KPushButton, btnEdit) #: rc.cpp:73 msgid "Edit" msgstr "Bewerken" #. i18n: file: widgets/templatechooser.ui:62 #. i18n: ectx: property (text), widget (KPushButton, btnRemove) #: rc.cpp:76 msgid "Remove" msgstr "Wegmaken" #. i18n: file: widgets/templatechooser.ui:69 #. i18n: ectx: property (text), widget (KPushButton, btnDownload) #: rc.cpp:79 msgid "Download" msgstr "Daalladen" #. i18n: file: widgets/templatechooser.ui:76 #. i18n: ectx: property (text), widget (KPushButton, btnUpload) #: rc.cpp:82 msgid "Upload" msgstr "Hoochladen" #. i18n: file: cirkuit.kcfg:10 #. i18n: ectx: label, entry (DefaultBackend), group (general) #: rc.cpp:85 msgid "Default backend." msgstr "Standard-Hülpprogramm" #. i18n: file: cirkuit.kcfg:14 #. i18n: ectx: label, entry (AutoSelectBackend), group (general) #. i18n: file: cirkuit_general_settings.ui:52 #. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoSelectBackend) #: rc.cpp:88 rc.cpp:118 msgid "Automatic backend selection" msgstr "" #. i18n: file: cirkuit.kcfg:18 #. i18n: ectx: label, entry (RefreshInterval), group (general) #: rc.cpp:91 msgid "Preview generation refresh timeout." msgstr "" #. i18n: file: cirkuit.kcfg:22 #. i18n: ectx: label, entry (AutoRefresh), group (general) #: rc.cpp:94 msgid "Enable automatic refresh." msgstr "Automaatsch Opfrischen anmaken" #. i18n: file: cirkuit.kcfg:26 #. i18n: ectx: label, entry (RefreshOnSave), group (general) #: rc.cpp:97 msgid "Refresh when document is saved." msgstr "" #. i18n: file: cirkuit.kcfg:30 #. i18n: ectx: label, entry (ZoomToFit), group (general) #: rc.cpp:100 msgid "Automatically zoom the preview to fit the preview widget" msgstr "" #. i18n: file: cirkuit.kcfg:34 #. i18n: ectx: label, entry (ResolutionPpm), group (general) #: rc.cpp:103 msgid "PNG and JPEG resolution." msgstr "Oplösen för PNG un JPEG" #. i18n: file: cirkuit_general_settings.ui:14 #. i18n: ectx: property (windowTitle), widget (QWidget, CirkuitGeneralForm) #: rc.cpp:109 msgid "General settings" msgstr "Allgemeen Instellen" #. i18n: file: cirkuit_general_settings.ui:23 #. i18n: ectx: property (title), widget (QGroupBox, groupBackend) #: rc.cpp:112 msgid "Backends" msgstr "Hülpprogrammen" #. i18n: file: cirkuit_general_settings.ui:29 #. i18n: ectx: property (text), widget (QLabel, label_3) #: rc.cpp:115 msgid "Default backend:" msgstr "Standard-Hülpprogramm" #. i18n: file: cirkuit_general_settings.ui:71 #. i18n: ectx: property (text), widget (QLabel, label) #: rc.cpp:124 msgid "Preview refresh interval (sec):" msgstr "" #. i18n: file: cirkuit_general_settings.ui:103 #. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoRefresh) #: rc.cpp:127 msgid "Automatic preview generation" msgstr "" #. i18n: file: cirkuit_general_settings.ui:113 #. i18n: ectx: property (text), widget (QCheckBox, kcfg_RefreshOnSave) #: rc.cpp:130 msgid "Refresh the preview when saving the document" msgstr "" #. i18n: file: cirkuit_general_settings.ui:129 #. i18n: ectx: property (text), widget (QLabel, label_2) #: rc.cpp:133 msgid "PNG and JPEG resolution (DPI):" msgstr "Oplösen för PNG un JPEG (in DPI)" #. i18n: file: cirkuitui.rc:5 #. i18n: ectx: Menu (file) #: rc.cpp:136 msgid "&File" msgstr "&Datei" #. i18n: file: cirkuitui.rc:26 #. i18n: ectx: Menu (build) #: rc.cpp:139 msgid "&Preview" msgstr "&Vöransicht" #. i18n: file: cirkuitui.rc:33 #. i18n: ectx: Menu (view) #: rc.cpp:142 msgid "&View" msgstr "&Ansicht" #. i18n: file: cirkuitui.rc:46 #. i18n: ectx: Menu (help) #: rc.cpp:145 msgid "&Help" msgstr "&Hülp" #. i18n: file: cirkuitui.rc:54 #. i18n: ectx: ToolBar (mainToolBar) #: rc.cpp:148 msgid "Main Toolbar" msgstr "Hööft-Warktüüchbalken" #, fuzzycirkuit-0.4.3/po/nds/CMakeLists.txt000644 001750 001750 00000000164 11677602211 020642 0ustar00scarlettscarlett000000 000000 file(GLOB _po_files *.po) GETTEXT_PROCESS_PO_FILES(nds ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} ${_po_files} ) cirkuit-0.4.3/src/000755 001750 001750 00000000000 11677601442 015473 5ustar00scarlettscarlett000000 000000 cirkuit-0.4.3/src/.directory000644 001750 001750 00000000061 11677601442 017475 0ustar00scarlettscarlett000000 000000 [Dolphin] Timestamp=2009,1,20,15,33,3 ViewMode=1 cirkuit-0.4.3/src/circuitmacrosmanager.h000644 001750 001750 00000003766 11677601442 022062 0ustar00scarlettscarlett000000 000000 /*************************************************************************** * Copyright (C) 2011 by Matteo Agostinelli * * agostinelli@gmail.com * * * * 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. * ***************************************************************************/ #ifndef CIRCUITMACROSMANAGER_H #define CIRCUITMACROSMANAGER_H #include class CircuitMacrosManager : public QObject { Q_OBJECT public: CircuitMacrosManager(); bool checkExistence() const; void downloadLatest(); QString installedVersion() const; void checkOnlineVersion(); private slots: void unpackCircuitMacros(); void configureCircuitMacros(); void readVersion(); QString findVersion(const QString& filename) const; signals: void newVersionAvailable(const QString&); void configured(); }; #endif // CIRCUITMACROSMANAGER_H cirkuit-0.4.3/src/main.cpp000644 001750 001750 00000005165 11677601442 017132 0ustar00scarlettscarlett000000 000000 /*************************************************************************** * Copyright (C) 2011 by Matteo Agostinelli * * agostinelli@gmail.com * * * * 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. * ***************************************************************************/ #include #include #include #include "cirkuitconfig.h" #include "mainwindow.h" int main (int argc, char *argv[]) { KAboutData aboutData( "cirkuit", "cirkuit", ki18n("Cirkuit"), VERSION, ki18n("An application to generate publication-ready figures. It is a KDE frontend for Circuit Macros by J. D. Aplevich, TikZ and Gnuplot.

Visit the Circuit Macros and TikZ websites for further information."), KAboutData::License_GPL, ki18n("(c) 2011 Matteo Agostinelli")); aboutData.addAuthor(ki18n("Matteo Agostinelli"), ki18n("Maintainer"), "matteo@agostinelli.me", "http://agostinelli.me"); aboutData.setHomepage("http://projects.kde.org/cirkuit"); KCmdLineArgs::init( argc, argv, &aboutData ); KCmdLineOptions options; options.add("+[file]", ki18n("Document to open")); KCmdLineArgs::addCmdLineOptions( options ); KApplication app; MainWindow* window = new MainWindow(); KCmdLineArgs *args = KCmdLineArgs::parsedArgs(); if (args->count()) { window->loadFile(args->url(0).url()); } window->show(); return app.exec(); } cirkuit-0.4.3/src/cirkuit.kcfg000644 001750 001750 00000003357 11677601442 020011 0ustar00scarlettscarlett000000 000000 kstandarddirs.h Circuit Macros true 10000 true true true 300 -file-line-error,-halt-on-error cirkuit-0.4.3/src/circuitmacrosmanager.cpp000644 001750 001750 00000012465 11677601442 022411 0ustar00scarlettscarlett000000 000000 /*************************************************************************** * Copyright (C) 2011 by Matteo Agostinelli * * agostinelli@gmail.com * * * * 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. * ***************************************************************************/ #include "circuitmacrosmanager.h" #include #include #include #include #include #include #include #include CircuitMacrosManager::CircuitMacrosManager(): QObject() { } bool CircuitMacrosManager::checkExistence() const { QStringList paths; paths << KStandardDirs::locateLocal("data", "cirkuit/circuit_macros/libcct.m4", true) << KStandardDirs::locate("data", "cirkuit/circuit_macros/libcct.m4"); foreach(const QString& cm_path, paths) { if (QFile::exists(cm_path)) { return true; } } return false; } void CircuitMacrosManager::downloadLatest() { KUrl origin = KUrl("http://www.ece.uwaterloo.ca/~aplevich/Circuit_macros/Circuit_macros.tar.gz"); KUrl dest = KStandardDirs::locateLocal("data", "cirkuit/Circuit_macros.tar.gz", true); KIO::Job* getJob = KIO::file_copy(origin, dest, -1, KIO::Overwrite | KIO::HideProgressInfo); connect( getJob, SIGNAL(result(KJob*)), this, SLOT(unpackCircuitMacros()) ); } void CircuitMacrosManager::unpackCircuitMacros() { KTar tarfile(KStandardDirs::locateLocal("data", "cirkuit/Circuit_macros.tar.gz", true)); tarfile.open(QIODevice::ReadOnly); const KArchiveDirectory* root = tarfile.directory(); const KArchiveDirectory* mainDir = (KArchiveDirectory*) root->entry(root->entries().at(0)); mainDir->copyTo(KStandardDirs::locateLocal("data", "cirkuit/circuit_macros/", true), true); configureCircuitMacros(); } void CircuitMacrosManager::configureCircuitMacros() { QString homelibFilename = KStandardDirs::locateLocal("data", "cirkuit/circuit_macros/homelib.txt", false); QString defineString = QString("`define(`HOMELIB_',`%1')')").arg(KStandardDirs::locateLocal("data", "cirkuit/circuit_macros/", false)); QFile homelibFile(homelibFilename); if (!homelibFile.open(QIODevice::WriteOnly | QIODevice::Text)) { return; } QTextStream out(&homelibFile); out << defineString << "\n"; homelibFile.close(); QStringList args; args << "homelib"; KProcess configProcess; configProcess.setProgram("make", args); configProcess.setWorkingDirectory(KStandardDirs::locateLocal("data", "cirkuit/circuit_macros/")); configProcess.startDetached(); QFile::remove(KStandardDirs::locateLocal("data", "cirkuit/Circuit_macros.tar.gz", false)); kDebug() << "Circuit macros configured"; emit(configured()); } QString CircuitMacrosManager::installedVersion() const { if (!checkExistence()) { return ""; } QString filename = KStandardDirs::locateLocal("data", "cirkuit/circuit_macros/README", false); return findVersion(filename); } void CircuitMacrosManager::checkOnlineVersion() { KUrl origin = KUrl("http://www.ece.uwaterloo.ca/~aplevich/Circuit_macros/README"); KUrl dest = KStandardDirs::locateLocal("tmp", "cirkuit/README", true); KIO::Job* getJob = KIO::file_copy(origin, dest, -1, KIO::Overwrite | KIO::HideProgressInfo); connect( getJob, SIGNAL(result(KJob*)), this, SLOT(readVersion()) ); } void CircuitMacrosManager::readVersion() { QString onlineVersion = findVersion(KStandardDirs::locateLocal("tmp", "cirkuit/README", false)); QString installVersion = installedVersion(); kDebug() << "ONLINE version: " << onlineVersion; kDebug() << "INSTALLED version: " << installVersion; if (onlineVersion > installVersion) { emit newVersionAvailable(onlineVersion); } } QString CircuitMacrosManager::findVersion(const QString& filename) const { QFile file(filename); if (!file.open(QFile::ReadOnly)) { return ""; } QByteArray byteArray = file.readAll(); QRegExp rx("Version (\\d\\.\\d+)"); QString version = ""; QString content(byteArray); if (content.contains(rx)) { version = rx.cap(1); } return version; } cirkuit-0.4.3/src/cirkuit_general_settings.ui000644 001750 001750 00000012456 11677601442 023131 0ustar00scarlettscarlett000000 000000 CirkuitGeneralForm 0 0 357 274 General settings QFormLayout::ExpandingFieldsGrow Backends Default backend: Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter 0 0 true Automatic backend selection true Preview Preview refresh interval (sec): Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter 0 0 1 60 1 1 Automatic preview generation true Refresh the preview when saving the document 0 0 PNG and JPEG resolution (DPI): Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter 0 0 10 9990 100 300 KComboBox QComboBox

kcombobox.h
kcfg_AutoRefresh toggled(bool) kcfg_RefreshInterval setEnabled(bool) 137 69 365 148 cirkuit-0.4.3/src/Messages.sh000755 001750 001750 00000000227 11677601442 017602 0ustar00scarlettscarlett000000 000000 #!/bin/sh $EXTRACTRC `find . -name \*.rc -o -name \*.ui -o -name \*.kcfg` >> rc.cpp $XGETTEXT `find . -name \*.cpp` -o $podir/cirkuit.pot rm -f rc.cpp cirkuit-0.4.3/src/generatorthread.h000644 001750 001750 00000005166 11677601442 021032 0ustar00scarlettscarlett000000 000000 /*************************************************************************** * Copyright (C) 2011 by Matteo Agostinelli * * agostinelli@gmail.com * * * * 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. * ***************************************************************************/ #ifndef GENERATORTHREAD_H #define GENERATORTHREAD_H #include "format.h" #include #include class RenderThread; namespace Cirkuit { class Generator; class Document; class Backend; } class GeneratorThread : public QThread { Q_OBJECT public: GeneratorThread(QObject* parent = 0); ~GeneratorThread(); QString previewUrl() const; protected: Cirkuit::Format m_input, m_output; void run(); public slots: void generate(const Cirkuit::Format& in, const Cirkuit::Format& out, Cirkuit::Backend* backend = 0, Cirkuit::Document* doc = 0, bool saveToFile = false, double scaleFactor=1.0); void setScaleFactor(double scaleFactor); signals: void previewReady(const QImage); void previewUrl(const QString); void fileReady(const QString); void error(const QString& appname, const QString& msg); void output(const QString& appname, const QString& msg); void fail(); void success(); void backendChanged(QString); private: Cirkuit::Document* m_doc; Cirkuit::Backend* m_backend; RenderThread* m_render; bool m_saveToFile; double m_scaleFactor; QString m_previewUrl; }; #endif // GENERATORTHREAD_H cirkuit-0.4.3/src/syntax/000755 001750 001750 00000000000 11677601442 017021 5ustar00scarlettscarlett000000 000000 cirkuit-0.4.3/src/syntax/m4cm.xml000644 001750 001750 00000034504 11677601442 020411 0ustar00scarlettscarlett000000 000000 &per;PS &per;PE changequote define divert divnum dnl dumpdef errprint eval ifdef ifelse include incr index len maketemp sinclude substr syscmd translit undefine undivert 1st 2nd 3rd 4th 5th 6th 7th 8th 9th Here above and arc arrow arrowhead arrowht arrowwid at atan2 below between box by ccw chop circle color colour colored coloured command cos cw dashed diam do dotted down ellipse else end exp fill for from height ht if invis last left line ljust max min move outline outlined rad reset right rjust scale shaded sin spline sprintf sqrt start tan then thick to up wid width with AND_gate AND_gen AND_ht AND_wd BOX_gate BUFFER_gate BUFFER_gen BUF_ht BUF_wd Cos Cosine Darlington E_ Equidist3 FF_ht FF_wid Fector FlipFlop FlipFlop6 FlipFlopJK G_hht_ HOMELIB_ H_ht Int_ IOdefs Intersect_ LH_symbol Loopover_ LT_symbol L_unit Max Min Mux Mux_ht Mux_wid Mx_pins NAND_gate NOR_gate NOT_circle NOT_gate NOT_rad NXOR_gate N_diam N_rad OR_gate OR_gen OR_rad Point_ Rect_ Sin View3D Vperp XOR_gate XOR_off above_ abs_ adc amp along_ antenna arca arcd arcr arcto arrowline b_ b_current battery beginshade bell below_ bi_tr bi_trans boxcoord boxdim bp__ bswitch buzzer c_fet capacitor cbreaker cct_init cintersect clabel consource contact contline cosd cross cross3D crossover crosswd_ csdim_ dac d_fet dabove darrow darrow_init dashline dbelow dcosine3D def_bisect delay delay_rad_ deleminit_ dend diff3D diff_ dimen_ dimension_ diode dir_ distance direction_ distance dlabel dleft dline dlinewid dn_ dljust dn_ dna_ dnm_ dot dot3D dotrad_ down_ dright drjust dswitch dtee dtor_ dturn e_ e_fet earphone ebox elchop eleminit_ elen_ em_arrows endshade expe f_box fill_ fitcurve for_ fuse g_ gap gen_init glabel_ gpar_ gpolyline_ grid_ ground gshade hoprad_ ht_ ifdpic ifgpic ifinstr ifmfpic ifmpost ifpgf ifpostscript ifpstricks ifroff ifxfig igbt in__ inductor inner_prod integrator intersect_ j_fet larrow lbox left_ length3D lg_bartxt lg_pin lg_pintxt lg_plen lin_leng linethick_ ljust_ llabel loc_ log10E_ log_init loge lp_xy lpop lswitch lt_ manhattan microphone mm__ mosfet m4xpand m4lstring m4_arrow m4xtract n_ ne_ neg_ nport nw_ opamp open_arrow par_ pc__ pi_ pmod point_ polar_ potentiometer print3D prod_ project psset_ pt__ r_ rarrow rect_ relay resetrgb resistor reversed rgbdraw rgbfill right_ rjust_ rlabel rot3Dx rot3Dy rot3Dz rpoint_ rpos_ rrot_ rs_box rsvec_ rt_ rtod_ rtod__ rvec_ s_ s_box s_dp s_ht s_init s_name s_wd sc_draw se_ setrgb setview sfg_init sfgabove sfgarc sfgbelow sfgline sfgnode sfgself shade shadebox sign_ sinc sind sinusoid source sourcerad_ sp_ speaker sprod3D sum3D sum_ svec_ sw_ switch ta_xy thicklines_ thinlines_ thyristor tline tr_xy tr_xy_init transformer ttmotor twopi_ ujt unit3D up_ up__ variable vec_ vlength vperp vrot_ vscal_ w_ wid_ winding xtal xtract cirkuit-0.4.3/src/syntax/gnuplot.xml000644 001750 001750 00000116445 11677601442 021246 0ustar00scarlettscarlett000000 000000 noarrow noborder noclabel noclip nocontour nodgrid3d nogrid nohidden3d nokey nolabel nolinestyle nomultiplot nomx2tics nomxtics nomy2tics nomytics nomztics nooffsets noparametric nopolar nosurface notimestamp nox2dtics nox2mtics nox2tics nox2zeroaxis noxdtics noxmtics noxtics noxzeroaxis noy2dtics noy2mtics noy2tics noy2zeroaxis noydtics noymtics noytics noyzeroaxis nozdtics nozeroaxis nozmtics noztics grid parametric angles arrow bar border boxwidth clip cntrparam data dgrid3d dummy encoding format function functions hidden3d isosamples label linestyle mapping margin mx2tics mxtics my2tics mytics mztics offsets origin parametric pointsize polar samples size data style function style surface tics ticscale ticslevel timefmt timestamp variables version view x2data x2dtics x2label x2mtics x2tics x2zeroaxis xdata xdtics xmtics xtics xzeroaxis y2data y2dtics y2mtics y2tics y2zeroaxis ydata ydtics ymtics ytics yzeroaxis zdata zdtics zero zeroaxis zmtics ztics clabel title xlabel x2label ylabel y2label zlabel rrange trange urange vrange x2range xrange y2range yrange zrange base surface both left right top bottom outside below Left Right noreverse reverse noautoscale autoscale nologscale x y z x2 y2 xy aed512 aed767 aifm bitgraph cgm dumb dxf dxy800a eepic epson-180dpi epson-60dpi epson-lx800 excl gpic hp2623a hp2648 kc-tek40xx km-tek40xx kyo mf mif mp nec-cp6 okidata prescribe pstricks qms regis rgip selanar starc table tandy-60dpi tek40xx tek410x texdraw uniplex unixplot vttek vx384 x11 landscape portrait eps default enhanced noenhanced solid dashed defaultplex simplex duplex courier roman default color monochrome dashed rotate norotate auxfile transparent notransparent small medium large monochrome gray color landscape portrait solid dashed monochrome color small big pointsmax landscape portrait metric inches fontsize size thickness depth monochrome color FNT5X9 FNT9X17 FNT13X25 mode landscape portrait monochrome color solid dashed letter legal noextended extended stick univers cg_times zapf_dingbats antique_olive arial courier garamond_antigua letter_gothic cg_omega albertus times_new_roman clarendon coronet marigold truetype_symbols wingdings 75 100 150 300 landscape portrait acsplines bezier csplines sbezier unique x1y1 x2y1 x1y2 x2y2 lines l points p linespoints linesp impulses i dots d steps fsteps histeps errorbars xerrorbars yerrorbars xyerrorbars boxes boxerrorbars boxxyerrorbars financebars candlesticks vector linestyle ls linetype lt linewidth lw pointtype pt pointsize ps replot exit quit clear reset cirkuit-0.4.3/src/syntax/CMakeLists.txt000644 001750 001750 00000000126 11677601442 021560 0ustar00scarlettscarlett000000 000000 install( FILES m4cm.xml gnuplot.xml DESTINATION ${DATA_INSTALL_DIR}/katepart/syntax ) cirkuit-0.4.3/src/renderthread.cpp000644 001750 001750 00000003673 11677601442 020657 0ustar00scarlettscarlett000000 000000 /* Copyright (C) 2011 Matteo Agostinelli 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. */ #include "renderthread.h" #include #include #include #include RenderThread::RenderThread(QObject* parent): QThread(parent) { } RenderThread::~RenderThread() { } void RenderThread::generatePreview(const QString& pdfUrl, double zoomFactor) { m_pdfUrl = pdfUrl; m_zoomFactor = zoomFactor; start(LowPriority); } void RenderThread::run() { double factor = qBound(0.01, m_zoomFactor, 10.0); if (!QFile::exists(m_pdfUrl)) return; Poppler::Document* document = Poppler::Document::load(m_pdfUrl); if (!document || document->isLocked()) { delete document; return; } // Access page of the PDF file document->setRenderHint(Poppler::Document::Antialiasing, true); document->setRenderHint(Poppler::Document::TextAntialiasing, true); Poppler::Page* pdfPage = document->page(0); // Document starts at page 0 if (pdfPage == 0) { return; } // Generate a QImage of the rendered page QImage image = pdfPage->renderToImage(factor*200.0, factor*200.0); emit previewReady(image); delete pdfPage; delete document; } cirkuit-0.4.3/src/generatorthread.cpp000644 001750 001750 00000007604 11677601442 021364 0ustar00scarlettscarlett000000 000000 /*************************************************************************** * Copyright (C) 2011 by Matteo Agostinelli * * agostinelli@gmail.com * * * * 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. * ***************************************************************************/ #include "generatorthread.h" #include "backend.h" #include "generator.h" #include "document.h" #include "command.h" #include "cirkuitsettings.h" #include "renderthread.h" #include #include using namespace Cirkuit; GeneratorThread::GeneratorThread(QObject* parent): QThread(parent) { m_previewUrl.clear(); m_backend = 0; m_doc = 0; m_scaleFactor = 1.0; m_render = new RenderThread; connect(m_render, SIGNAL(previewReady(QImage)), this, SIGNAL(previewReady(QImage))); } void GeneratorThread::run() { Cirkuit::Backend* bestBackend = Backend::autoChooseBackend(m_doc); if (CirkuitSettings::autoSelectBackend()) { if (bestBackend->id() != m_backend->id()) { m_backend = bestBackend; emit backendChanged(m_backend->name()); } } if (!m_backend) { kError() << i18n("No backend could be selected!"); return; } else { kDebug() << m_backend->id(); kDebug() << m_backend->name(); kDebug() << m_backend->description(); } Cirkuit::Generator* gen = m_backend->generator(); connect(gen, SIGNAL(error(QString,QString)), this, SIGNAL(error(QString,QString))); connect(gen, SIGNAL(error(QString,QString)), this, SLOT(quit())); connect(gen, SIGNAL(output(QString,QString)), this, SIGNAL(output(QString,QString))); connect(gen, SIGNAL(fail()), this, SIGNAL(fail())); gen->setDocument(m_doc); gen->setResolution(CirkuitSettings::resolutionPpm()); if (!gen->convert(m_input, m_output)) { emit fail(); return; } m_previewUrl = gen->formatPath(Format::Pdf); emit previewUrl(m_previewUrl); if (m_output == Format::QtImage) { m_render->generatePreview(gen->formatPath(Format::Pdf), m_scaleFactor); } if (m_saveToFile) { emit fileReady(gen->formatPath(m_output)); } emit success(); } GeneratorThread::~GeneratorThread() { delete m_render; } void GeneratorThread::setScaleFactor(double scaleFactor) { m_scaleFactor = scaleFactor; } void GeneratorThread::generate(const Cirkuit::Format& in, const Cirkuit::Format& out, Cirkuit::Backend* backend, Cirkuit::Document* doc, bool saveToFile, double scaleFactor) { m_input = in; m_output = out; m_doc = doc; m_saveToFile = saveToFile; m_backend = backend; setScaleFactor(scaleFactor); start(LowPriority); } QString GeneratorThread::previewUrl() const { return m_previewUrl; } cirkuit-0.4.3/src/cirkuit.desktop000644 001750 001750 00000003310 11677601442 020535 0ustar00scarlettscarlett000000 000000 # KDE Config File [Desktop Entry] Name=Cirkuit Name[cs]=Cirkuit Name[de]=Cirkuit Name[es]=Cirkuit Name[et]=Cirkuit Name[fr]=Cirkuit Name[km]=Cirkuit Name[nds]=Cirkuit Name[nl]=Cirkuit Name[pl]=Cirkuit Name[pt]=Cirkuit Name[pt_BR]=Cirkuit Name[sv]=Cirkuit Name[uk]=Cirkuit Name[x-test]=xxCirkuitxx GenericName=Circuit drawer GenericName[es]=Dibujar circuitos GenericName[et]=Vooluringide joonistaja GenericName[fr]=Outil de tracé de circuits GenericName[km]=កម្មវិធី​គូរ​រូប Circuit GenericName[nl]=Schema tekenprogramma GenericName[pl]=Rysownik obwodów GenericName[pt]=Desenhador de circuitos GenericName[pt_BR]=Desenho de circuitos GenericName[sv]=Kretsritare GenericName[uk]=Малювання ланцюгів GenericName[x-test]=xxCircuit drawerxx Comment=A program to draw circuits and diagrams Comment[es]=Un programa para dibujar circuitos y diagramas Comment[et]=Programm vooluringide ja skeemide joonistamiseks Comment[fr]=Un programme pour tracer des circuits et des diagrammes Comment[km]=កម្មវិធី​គូរ​រូប​សៀគ្វី និង​ដ្យាក្រាម Comment[nl]=Een programma om schema's en diagrammen te tekenen Comment[pl]=Program do rysowania obwodów i diagramów Comment[pt]=Um programa para desenhar circuitos e diagramas Comment[pt_BR]=Um programa para desenhar circuitos e diagramas Comment[sv]=Ett program för att rita kretsar och diagram Comment[uk]=Програма для малювання ланцюгів та діаграм Comment[x-test]=xxA program to draw circuits and diagramsxx Type=Application Exec=cirkuit Icon=cirkuit Terminal=false MimeType=application/x-cirkuit; Categories=Qt;KDE;Graphics;VectorGraphics;Science; cirkuit-0.4.3/src/mimetypes/000755 001750 001750 00000000000 11677603101 017501 5ustar00scarlettscarlett000000 000000 cirkuit-0.4.3/src/mimetypes/cirkuit.xml000644 001750 001750 00000000752 11677601442 021707 0ustar00scarlettscarlett000000 000000 Cirkuit drawing Disegno Cirkuit cirkuit-0.4.3/src/mimetypes/CMakeLists.txt000644 001750 001750 00000000224 11677601442 022245 0ustar00scarlettscarlett000000 000000 find_package(SharedMimeInfo REQUIRED) install(FILES cirkuit.xml DESTINATION ${XDG_MIME_INSTALL_DIR}) update_xdg_mimetypes(${XDG_MIME_INSTALL_DIR}) cirkuit-0.4.3/src/cirkuitui.rc000644 001750 001750 00000004670 11677601442 020040 0ustar00scarlettscarlett000000 000000 &File &Preview &View &Help Main Toolbar cirkuit-0.4.3/src/renderthread.h000644 001750 001750 00000002414 11677601442 020314 0ustar00scarlettscarlett000000 000000 /* Copyright (C) 2011 Matteo Agostinelli 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. */ #ifndef RENDERTHREAD_H #define RENDERTHREAD_H #include class QImage; class RenderThread : public QThread { Q_OBJECT public: explicit RenderThread(QObject* parent = 0); virtual ~RenderThread(); public slots: void generatePreview(const QString& pdfUrl, double zoomFactor = 1.0); signals: void previewReady(const QImage& image); protected: void run(); private: QString m_pdfUrl; double m_zoomFactor; }; #endif // RENDERTHREAD_H cirkuit-0.4.3/src/cirkuit_example.knsrc000644 001750 001750 00000000205 11677601442 021717 0ustar00scarlettscarlett000000 000000 [KNewStuff3] Categories=Cirkuit Example UploadCategories=Cirkuit Example TargetDir=cirkuit/examples Uncompress=never CustomName=true cirkuit-0.4.3/src/cirkuit.notifyrc000644 001750 001750 00000007276 11677601442 020740 0ustar00scarlettscarlett000000 000000 [Global] Comment=Cirkuit Comment[cs]=Cirkuit Comment[de]=Cirkuit Comment[es]=Cirkuit Comment[et]=Cirkuit Comment[fr]=Cirkuit Comment[km]=Cirkuit Comment[nds]=Cirkuit Comment[nl]=Cirkuit Comment[pl]=Cirkuit Comment[pt]=Cirkuit Comment[pt_BR]=Cirkuit Comment[sv]=Cirkuit Comment[uk]=Cirkuit Comment[x-test]=xxCirkuitxx [Event/Preview Generated] Name=Preview generated Name[es]=Vista previa generada Name[et]=Eelvaatlus on loodud Name[fr]=Aperçu généré Name[km]=​បាន​បង្កើត​​ការ​មើល​ជាមុន Name[nds]=Vöransicht opstellt... Name[nl]=Voorbeeld aangemaakt Name[pl]=Podgląd wygenerowany Name[pt]=Antevisão gerada Name[pt_BR]=Visualização gerada Name[sv]=Förhandsgranskning skapades Name[uk]=Створено зображення попереднього перегляду Name[x-test]=xxPreview generatedxx Comment=The preview has been generated Comment[es]=Se ha generado la vista previa Comment[et]=Eelvaatlus on loodud Comment[fr]=L'aperçu a été généré Comment[km]=​បាន​បង្កើត​​ការ​មើល​ជាមុន Comment[nds]=De Vöransicht wöör opstellt... Comment[nl]=Het voorbeeld is aangemaakt Comment[pl]=Podgląd został wygenerowany Comment[pt]=A antevisão foi gerada Comment[pt_BR]=A visualização foi gerada Comment[sv]=Förhandsgranskningen har skapats Comment[uk]=Завершено створення зображення попереднього перегляду Comment[x-test]=xxThe preview has been generatedxx Action=Popup [Event/Download progress] Name=Download progress Name[de]=Fortschritt des Herunterladens Name[es]=Progreso de la descarga Name[et]=Allalaadimise edenemine Name[fr]=Progression du téléchargement Name[km]=វឌ្ឍនភាព​ទាញ​យក Name[nds]=Daalladen-Vörankamen Name[nl]=Downloadvoortgang Name[pl]=Postęp pobierania Name[pt]=Transferência em curso Name[pt_BR]=Progresso do download Name[sv]=Nerladdning pågår Name[uk]=Поступ звантаження Name[x-test]=xxDownload progressxx Comment=Download progress Comment[de]=Fortschritt des Herunterladens Comment[es]=Progreso de la descarga Comment[et]=Allalaadimise edenemine Comment[fr]=Progression du téléchargement Comment[km]=វឌ្ឍនភាព​ទាញ​យក Comment[nds]=Daalladen-Vörankamen Comment[nl]=Downloadvoortgang Comment[pl]=Postęp pobierania Comment[pt]=Transferência em curso Comment[pt_BR]=Progresso do download Comment[sv]=Nerladdning pågår Comment[uk]=Поступ звантаження Comment[x-test]=xxDownload progressxx Action=Popup [Event/Download finished] Name=Download finished Name[de]=Herunterladen abgeschlossen Name[es]=Descarga terminada Name[et]=Allalaadimine lõpetatud Name[fr]=Téléchargement terminé Name[km]=បាន​បញ្ចប់​ការ​ទាញ​យក Name[nds]=Daalladen afslaten Name[nl]=Download voltooid Name[pl]=Pobieranie zakończone Name[pt]=Transferência terminada Name[pt_BR]=Download concluído Name[sv]=Nerladdning klar Name[ug]=چۈشۈرۈش تاماملاندى Name[uk]=Звантаження завершено Name[x-test]=xxDownload finishedxx Comment=Download finished Comment[de]=Herunterladen abgeschlossen Comment[es]=La descarga ha terminado Comment[et]=Allalaadimine lõpetatud Comment[fr]=Téléchargement terminé Comment[km]=បាន​បញ្ចប់​ការ​ទាញ​យក Comment[nds]=Daalladen afslaten Comment[nl]=Download voltooid Comment[pl]=Pobieranie zakończone Comment[pt]=Transferência terminada Comment[pt_BR]=Download concluído Comment[sv]=Nerladdning klar Comment[ug]=چۈشۈرۈش تاماملاندى Comment[uk]=Звантаження завершено Comment[x-test]=xxDownload finishedxx Action=Popup cirkuit-0.4.3/src/widgets/000755 001750 001750 00000000000 11677601442 017141 5ustar00scarlettscarlett000000 000000 cirkuit-0.4.3/src/widgets/logviewwidget.h000644 001750 001750 00000003700 11677601442 022172 0ustar00scarlettscarlett000000 000000 /*************************************************************************** * Copyright (C) 2011 by Matteo Agostinelli * * agostinelli@gmail.com * * * * 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. * ***************************************************************************/ #ifndef LOGVIEWWIDGET_H #define LOGVIEWWIDGET_H #include #include class LogViewWidget : public QDockWidget { Q_OBJECT public: explicit LogViewWidget ( const QString & title, QWidget* parent = 0, Qt::WindowFlags flags = 0 ); virtual QSize sizeHint() const; public slots: void displayError(const QString& app, const QString& msg); void displayMessage(const QString& app, const QString& msg); void clear(); private: KTextEdit* m_textEdit; }; #endif // LOGVIEWWIDGET_H cirkuit-0.4.3/src/widgets/previewwidget.h000644 001750 001750 00000003556 11677601442 022210 0ustar00scarlettscarlett000000 000000 /*************************************************************************** * Copyright (C) 2011 by Matteo Agostinelli * * agostinelli@gmail.com * * * * 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. * ***************************************************************************/ #ifndef PREVIEWWIDGET_H #define PREVIEWWIDGET_H #include class ImageView; class QImage; class PreviewWidget : public QDockWidget { Q_OBJECT public: explicit PreviewWidget(const QString & title, QWidget * parent = 0, Qt::WindowFlags flags = 0); ImageView* view() const; virtual QSize sizeHint() const; private: ImageView* m_imageView; public slots: void setImage(const QImage&); void clear(); }; #endif cirkuit-0.4.3/src/widgets/templatechooser.ui000644 001750 001750 00000005300 11677601442 022674 0ustar00scarlettscarlett000000 000000 TemplateChooseBase 0 0 433 332 Backend: Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter false 150 0 true New Edit Remove Download Upload Qt::Vertical 20 128 KPushButton QPushButton
kpushbutton.h
KComboBox QComboBox
kcombobox.h
cirkuit-0.4.3/src/widgets/previewwidget.cpp000644 001750 001750 00000004043 11677601442 022533 0ustar00scarlettscarlett000000 000000 /*************************************************************************** * Copyright (C) 2011 by Matteo Agostinelli * * agostinelli@gmail.com * * * * 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. * ***************************************************************************/ #include "previewwidget.h" #include "imageview.h" #include #include PreviewWidget::PreviewWidget(const QString & title, QWidget * parent, Qt::WindowFlags flags) : QDockWidget(title, parent, flags) { m_imageView = new ImageView(this); setWidget(m_imageView); setMinimumHeight(100); setMinimumWidth(150); } void PreviewWidget::setImage(const QImage& image) { m_imageView->setImage(image); } QSize PreviewWidget::sizeHint() const { return QSize(300,150); } void PreviewWidget::clear() { m_imageView->clear(); } ImageView* PreviewWidget::view() const { return m_imageView; } cirkuit-0.4.3/src/widgets/imageview.h000644 001750 001750 00000005014 11677601442 021267 0ustar00scarlettscarlett000000 000000 /* Copyright (C) 2011 Matteo Agostinelli 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. */ #ifndef IMAGEVIEW_H #define IMAGEVIEW_H #include #include class KActionCollection; class RenderThread; class QGraphicsPixmapItem; class QTimer; class KAction; class KToggleAction; class ImageView: public QGraphicsView { Q_OBJECT public: ImageView(QWidget* parent = 0); virtual ~ImageView(); double scaleFactor() const; bool fitMode() const; public slots: void setImage(const QImage& image, bool firstTime = false); void setPdfUrl(const QString& pdfUrl); void setFitMode(bool enabled); void clear(); void zoomIn(); void zoomOut(); void zoomFit(); void zoomFit(const QPixmap& pixmap); void normalSize(); KAction* zoomFitPageAction() const; KAction* zoomFitAction() const; KAction* zoomInAction() const; KAction* zoomOutAction() const; KAction* actualSizeAction() const; void setupActions(KActionCollection* actionCollection); void updateZoomToFit(); private slots: void scaleImage(double factor); void trigger(); signals: void enableZoomIn(bool); void enableZoomOut(bool); void fitModeChanged(bool); protected: virtual void contextMenuEvent(QContextMenuEvent* event); virtual void resizeEvent(QResizeEvent*); virtual void wheelEvent(QWheelEvent* event); private: QImage m_image; QString m_pdfUrl; QGraphicsScene* m_scene; QGraphicsPixmapItem* m_pixmap; RenderThread* m_render; QTimer* m_timer; double m_ratio; bool m_fitMode; double m_scaleFactor, m_scaleMin, m_scaleMax; KToggleAction* m_zoomFitPageAction; KAction* m_zoomFitAction, *m_zoomInAction, *m_zoomOutAction, *m_actualSizeAction; }; #endif // IMAGEVIEW_H cirkuit-0.4.3/src/widgets/widgetfloater.h000644 001750 001750 00000003032 11677601442 022150 0ustar00scarlettscarlett000000 000000 // vim: set tabstop=4 shiftwidth=4 noexpandtab: /* Gwenview: an image viewer Copyright 2008 Aurélien Gâteau 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, Cambridge, MA 02110-1301, USA. */ #ifndef WIDGETFLOATER_H #define WIDGETFLOATER_H // Qt #include struct WidgetFloaterPrivate; /** * This helper object makes it possible to place a widget (the child) over * another (the parent), ensuring the child remains aligned as specified by * setAlignment() whenever either widget get resized. */ class WidgetFloater : public QObject { Q_OBJECT public: WidgetFloater(QWidget* parent); ~WidgetFloater(); void setChildWidget(QWidget*); void setAlignment(Qt::Alignment); void setHorizontalMargin(int); int horizontalMargin() const; void setVerticalMargin(int); int verticalMargin() const; protected: bool eventFilter(QObject*, QEvent*); private: WidgetFloaterPrivate* const d; }; #endif /* WIDGETFLOATER_H */ cirkuit-0.4.3/src/widgets/backendchoosedialog.cpp000644 001750 001750 00000006217 11677601442 023623 0ustar00scarlettscarlett000000 000000 /* 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. --- Copyright (C) 2009 Alexander Rieder Copyright (C) 2011 Matteo Agostinelli */ #include "backendchoosedialog.h" #include "lib/backend.h" const char* BackendChooseDialog::descriptionTemplate = I18N_NOOP("

%1

" \ "
%2

" \ "
See %3 for more information
"); BackendChooseDialog::BackendChooseDialog(const QString& backendName, QWidget* parent) : KDialog(parent) { setBackend(backendName); setWindowTitle(i18n("Backend selection")); QWidget* w=new QWidget(this); m_ui.setupUi(w); m_ui.backendList->setIconSize(QSize(KIconLoader::SizeMedium, KIconLoader::SizeMedium)); connect(m_ui.backendList, SIGNAL(currentItemChanged(QListWidgetItem*,QListWidgetItem*)), this, SLOT(updateDescription())); connect(m_ui.backendList, SIGNAL(itemDoubleClicked(QListWidgetItem*)), this, SLOT(accept())); foreach(Cirkuit::Backend* backend, Cirkuit::Backend::availableBackends()) { if (!backend->checkRequirements()) { continue; } QListWidgetItem* item=new QListWidgetItem(m_ui.backendList); item->setText(backend->name()); item->setIcon(KIcon(backend->icon())); m_ui.backendList->addItem(item); if (m_ui.backendList->currentItem() == 0) { m_ui.backendList->setCurrentItem(item); } if (*backend == m_backend) { m_ui.backendList->setCurrentItem(item); } } setMainWidget(w); connect(this, SIGNAL(accepted()), this, SLOT(onAccept())); } BackendChooseDialog::~BackendChooseDialog() { } void BackendChooseDialog::setBackend(const QString& backendName) { m_backend = backendName; } void BackendChooseDialog::onAccept() { m_backend = m_ui.backendList->currentItem()->text(); emit backendSelected(m_backend); if (m_ui.makeDefault->isChecked()) { emit defaultBackendSelected(m_backend); } } void BackendChooseDialog::updateDescription() { Cirkuit::Backend* current=Cirkuit::Backend::getBackend( m_ui.backendList->currentItem()->text() ); m_ui.descriptionView->setHtml(i18n(BackendChooseDialog::descriptionTemplate, current->name(), current->description(), current->url().url())); } QString BackendChooseDialog::backendName() { return m_backend; } cirkuit-0.4.3/src/widgets/imageview.cpp000644 001750 001750 00000015764 11677601442 021637 0ustar00scarlettscarlett000000 000000 /* Copyright (C) 2011 Matteo Agostinelli 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. */ #include "imageview.h" #include "renderthread.h" #include #include #include #include #include #include #include #include #include #include #include #include ImageView::ImageView(QWidget* parent): QGraphicsView(parent), m_image(QImage()), m_pdfUrl(QString()) { m_scene = new QGraphicsScene(this); m_pixmap = m_scene->addPixmap(QPixmap::fromImage(m_image)); setBackgroundRole(QPalette::Base); setScene(m_scene); setTransformationAnchor(QGraphicsView::AnchorViewCenter); setRenderHints(QPainter::Antialiasing | QPainter::HighQualityAntialiasing); setDragMode(QGraphicsView::ScrollHandDrag); setMinimumWidth(100); setMinimumHeight(50); m_render = new RenderThread; connect(m_render, SIGNAL(previewReady(QImage)), this, SLOT(setImage(QImage))); m_timer = new QTimer(); connect(m_timer, SIGNAL(timeout()), this, SLOT(zoomFit())); setFitMode(false); normalSize(); m_scaleMin = 0.1; m_scaleMax = 5.0; } ImageView::~ImageView() { delete m_render; delete m_timer; delete m_pixmap; } void ImageView::setupActions(KActionCollection* actionCollection) { m_zoomInAction = KStandardAction::zoomIn(this, SLOT(zoomIn()), actionCollection); m_zoomOutAction = KStandardAction::zoomOut(this, SLOT(zoomOut()), actionCollection); m_zoomFitAction = KStandardAction::fitToPage(this, SLOT(zoomFit()), actionCollection); m_zoomFitAction->setIcon(KIcon("zoom-fit-best")); m_actualSizeAction = KStandardAction::actualSize(this, SLOT(normalSize()), actionCollection); connect(this, SIGNAL(enableZoomIn(bool)), m_zoomInAction, SLOT(setEnabled(bool))); connect(this, SIGNAL(enableZoomOut(bool)), m_zoomOutAction, SLOT(setEnabled(bool))); m_zoomFitPageAction = new KToggleAction(i18n("Zoom to fit"), 0); m_zoomFitPageAction->setShortcut(Qt::CTRL + Qt::Key_0); m_zoomFitPageAction->setIcon(KIcon("zoom-fit-best")); actionCollection->addAction( "view_zoom_to_fit", m_zoomFitPageAction); connect(m_zoomFitPageAction, SIGNAL(triggered()), this, SLOT(updateZoomToFit())); connect(this, SIGNAL(fitModeChanged(bool)), m_zoomFitPageAction, SLOT(setChecked(bool))); connect(this, SIGNAL(fitModeChanged(bool)), this, SLOT(updateZoomToFit())); updateZoomToFit(); // add actions to the widget's list for the popup menu addAction(m_zoomInAction); addAction(m_zoomOutAction); addAction(m_actualSizeAction); addAction(m_zoomFitAction); addAction(m_zoomFitPageAction); } KAction* ImageView::zoomFitAction() const { return m_zoomFitAction; } KAction* ImageView::zoomFitPageAction() const { return m_zoomFitPageAction; } KAction* ImageView::zoomInAction() const { return m_zoomInAction; } KAction* ImageView::zoomOutAction() const { return m_zoomOutAction; } KAction* ImageView::actualSizeAction() const { return m_actualSizeAction; } void ImageView::updateZoomToFit() { m_zoomFitAction->setEnabled(!m_zoomFitPageAction->isChecked()); setFitMode(m_zoomFitPageAction->isChecked()); } void ImageView::setImage(const QImage& image, bool firstTime) { if (fitMode() && firstTime) { // if the image should fit to page then the first time resize it // and then display it zoomFit(QPixmap::fromImage(image)); } else { m_pixmap->setPixmap(QPixmap::fromImage(image)); m_pixmap->update(); setSceneRect(m_scene->itemsBoundingRect()); } } void ImageView::setPdfUrl(const QString& pdfUrl) { m_pdfUrl = pdfUrl; } void ImageView::clear() { m_image = QImage(); m_pixmap->setPixmap(QPixmap()); m_pixmap->update(); m_scaleFactor = 1.0; m_ratio = 1.0; } void ImageView::scaleImage(double factor) { m_timer->stop(); m_scaleFactor *= factor; qBound(m_scaleMin, m_scaleFactor, m_scaleMax); m_render->generatePreview(m_pdfUrl, m_scaleFactor); emit enableZoomIn(m_scaleFactor <= m_scaleMax); emit enableZoomOut(m_scaleFactor >= m_scaleMin); } void ImageView::normalSize() { setFitMode(false); m_scaleFactor = 1.0; m_ratio = 1.0; scaleImage(1.0); } void ImageView::zoomIn() { if (m_scaleFactor >= m_scaleMax) { return; } setFitMode(false); scaleImage(1.25); } void ImageView::zoomOut() { if (m_scaleFactor <= m_scaleMin) { return; } setFitMode(false); scaleImage(0.8); } void ImageView::zoomFit() { zoomFit(m_pixmap->pixmap()); } void ImageView::zoomFit(const QPixmap& pixmap) { if (pixmap.height() == 0 || viewport()->height() == 0) { return; } double hRatio = 1.00 * viewport()->width() / pixmap.width(); double vRatio = 1.00 * viewport()->height() / pixmap.height(); double ratio = qMin(hRatio, vRatio); double fraction = 1.0 * ratio / m_ratio; m_ratio = ratio; if (fraction > 0.99 && fraction < 1.01) { // no resize is needed but re-center the pixmap anyway setSceneRect(m_scene->itemsBoundingRect()); return; } scaleImage(ratio); } double ImageView::scaleFactor() const { return m_scaleFactor; } void ImageView::resizeEvent(QResizeEvent* event) { if (event->oldSize().height() > 0 && !m_render->isRunning() && m_fitMode) { trigger(); return; } QGraphicsView::resizeEvent(event); } void ImageView::setFitMode(bool enabled) { if (m_fitMode != enabled) { m_fitMode = enabled; if (m_fitMode) zoomFit(); emit fitModeChanged(enabled); } } bool ImageView::fitMode() const { return m_fitMode; } void ImageView::trigger() { m_timer->start(50); } void ImageView::wheelEvent(QWheelEvent* event) { if (event->modifiers() == Qt::ControlModifier) { if (event->delta() > 0) { zoomIn(); } else { zoomOut(); } } } void ImageView::contextMenuEvent(QContextMenuEvent* event) { QMenu *menu = new QMenu(this); menu->addActions(actions()); menu->exec(event->globalPos()); menu->deleteLater(); } cirkuit-0.4.3/src/widgets/backendchooser.ui000644 001750 001750 00000004002 11677601442 022446 0ustar00scarlettscarlett000000 000000 BackendChooserBase 0 0 620 461 587 0 587 16777215 Choose the Backend to use: QListView::TopToBottom QListView::Adjust QListView::ListMode 2 1 Make this the default backend KListWidget QListWidget
klistwidget.h
KTextBrowser QTextBrowser
ktextbrowser.h
cirkuit-0.4.3/src/widgets/templatechoosedialog.h000644 001750 001750 00000004075 11677601442 023514 0ustar00scarlettscarlett000000 000000 /* Copyright (C) 2011 Matteo Agostinelli 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. */ #ifndef TEMPLATECHOOSEDIALOG_H #define TEMPLATECHOOSEDIALOG_H #include "ui_templatechooser.h" #include #include namespace Cirkuit { } class TemplateModel : public QAbstractListModel { Q_OBJECT public: explicit TemplateModel(QObject* parent = 0); virtual int rowCount(const QModelIndex& parent = QModelIndex()) const; virtual QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const; void applyBackendFilter(const QString& backendName = QString()); void refresh(); private: QString m_backendFilter; }; class TemplateChooseDialog : public KDialog { Q_OBJECT public: explicit TemplateChooseDialog(const QString& backendName = QString(), QWidget* parent = 0, Qt::WFlags flags = 0); KUrl selectedFile() const; protected: TemplateModel* m_model; Ui::TemplateChooseBase m_ui; QString m_backend; KUrl m_selected; protected slots: void changeCurrent(const QModelIndex& index); void copyTempFile(const QString& fileName); void update(); void readUrlSelected(const QModelIndex& index); void downloadTemplate(); void uploadTemplate(); void editTemplate(); void addTemplate(); void removeTemplate(); }; #endif // TEMPLATECHOOSEDIALOG_H cirkuit-0.4.3/src/widgets/templatechoosedialog.cpp000644 001750 001750 00000015616 11677601442 024052 0ustar00scarlettscarlett000000 000000 /* Copyright (C) 2011 Matteo Agostinelli 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. */ #include "templatechoosedialog.h" #include #include #include #include #include "lib/documenttemplate.h" #include #include #include #include #include #include #include #include using namespace Cirkuit; TemplateModel::TemplateModel(QObject* parent): QAbstractListModel(parent) { m_backendFilter.clear(); } int TemplateModel::rowCount(const QModelIndex& parent) const { Q_UNUSED(parent) return TemplateManager::availableTemplates(m_backendFilter).count(); } QVariant TemplateModel::data(const QModelIndex& index, int role) const { if (!index.isValid() || index.row() > TemplateManager::availableTemplates(m_backendFilter).count()) { return QVariant(); } switch (role) { case Qt::DisplayRole: return TemplateManager::availableTemplates(m_backendFilter).at(index.row())->name(); case Qt::UserRole: return TemplateManager::availableTemplates(m_backendFilter).at(index.row())->path(); default: return QVariant(); } } void TemplateModel::applyBackendFilter(const QString& backendName) { if (m_backendFilter == backendName) { return; } m_backendFilter = backendName; reset(); } void TemplateModel::refresh() { TemplateManager::scanTemplates(); reset(); } TemplateChooseDialog::TemplateChooseDialog(const QString& backendName, QWidget* parent, Qt::WFlags flags): KDialog(parent, flags) { kDebug() << "FILTERING " << backendName; m_model = new TemplateModel(this); m_model->applyBackendFilter(backendName); QWidget* w=new QWidget(this); m_ui.setupUi(w); m_ui.listView->setModel(m_model); m_ui.btnAdd->setIcon(KIcon("list-add")); m_ui.btnRemove->setIcon(KIcon("list-remove")); m_ui.btnEdit->setIcon(KIcon("document-edit")); m_ui.btnDownload->setIcon(KIcon("get-hot-new-stuff")); m_ui.btnUpload->setIcon(KIcon("get-hot-new-stuff")); m_ui.btnEdit->setEnabled(false); m_ui.btnUpload->setEnabled(false); m_ui.btnRemove->setEnabled(false); m_ui.comboBackend->setCurrentItem(backendName, true); setMainWidget(w); setWindowTitle(i18n("Template manager")); connect(m_ui.listView, SIGNAL(clicked(QModelIndex)), this, SLOT(changeCurrent(QModelIndex))); connect(m_ui.btnDownload, SIGNAL(clicked(bool)), this, SLOT(downloadTemplate())); connect(m_ui.btnUpload, SIGNAL(clicked(bool)), this, SLOT(uploadTemplate())); connect(m_ui.btnEdit, SIGNAL(clicked(bool)), this, SLOT(editTemplate())); connect(m_ui.btnAdd, SIGNAL(clicked(bool)), this, SLOT(addTemplate())); connect(m_ui.btnRemove, SIGNAL(clicked(bool)), this, SLOT(removeTemplate())); } void TemplateChooseDialog::changeCurrent(const QModelIndex& index) { m_ui.btnEdit->setEnabled(index.isValid()); m_ui.btnUpload->setEnabled(index.isValid()); m_ui.btnRemove->setEnabled(index.isValid()); if (index.isValid()) { readUrlSelected(index); } else { m_selected = KUrl(); } } KUrl TemplateChooseDialog::selectedFile() const { return m_selected; } void TemplateChooseDialog::readUrlSelected(const QModelIndex& index) { if (!index.isValid()) { return; } m_selected = m_model->data(index, Qt::UserRole).value(); } void TemplateChooseDialog::downloadTemplate() { QPointer dialog = new KNS3::DownloadDialog("cirkuit_template.knsrc"); dialog->exec(); foreach (const KNS3::Entry& e, dialog->changedEntries()) { kDebug() << "Changed Entry: " << e.name(); } } void TemplateChooseDialog::uploadTemplate() { if (!m_ui.listView->currentIndex().isValid()) return; KNS3::UploadDialog dialog("cirkuit_template.knsrc"); dialog.setUploadFile(m_selected); dialog.setUploadName("A template for Cirkuit"); dialog.exec(); } void TemplateChooseDialog::editTemplate() { if (!m_selected.isValid()) return; KTemporaryFile* tempFile = new KTemporaryFile; tempFile->setPrefix(KStandardDirs::locateLocal("tmp", "cirkuit/templates/", true)); tempFile->open(); QFileInfo tempFileInfo(tempFile->fileName()); tempFile->close(); tempFile->remove(); delete tempFile; if (KIO::NetAccess::file_copy(m_selected, tempFileInfo.absoluteFilePath(), this)) { KDirWatch* dirWatch = new KDirWatch; dirWatch->addFile(tempFileInfo.absoluteFilePath()); connect(dirWatch, SIGNAL(dirty(QString)), this, SLOT(copyTempFile(QString))); KRun::runUrl(tempFileInfo.absoluteFilePath(), "text/plain", 0); } } void TemplateChooseDialog::copyTempFile(const QString& fileName) { KUrl dest = KStandardDirs::locateLocal("appdata", QString("templates/%1").arg(m_selected.fileName())); if (KIO::NetAccess::exists(dest, KIO::NetAccess::DestinationSide, this)) { KIO::NetAccess::del(dest, this); } KIO::NetAccess::file_copy(fileName, dest, this); update(); } void TemplateChooseDialog::addTemplate() { bool ok = false; QString name = KInputDialog::getText(i18n("Template name"), i18n("Insert the template name"), "template.ckt", &ok); if (!ok || name.isEmpty()) return; KUrl newUrl = KStandardDirs::locateLocal("appdata", QString("templates/%1").arg(name)); QFile newTemplate(newUrl.path()); if (!newTemplate.open(QIODevice::WriteOnly | QIODevice::Text)) { return; } QTextStream out(&newTemplate); out << "%%backend=%%\n"; newTemplate.close(); m_selected = newUrl; editTemplate(); update(); } void TemplateChooseDialog::removeTemplate() { readUrlSelected(m_ui.listView->currentIndex()); if (KMessageBox::warningContinueCancel(this, i18n("Do you really want to delete the selected template?"), i18n("Confirm deletion"), KStandardGuiItem::remove()) != KMessageBox::Continue) { return; } KIO::NetAccess::del(m_selected, this); update(); } void TemplateChooseDialog::update() { m_model->refresh(); } cirkuit-0.4.3/src/widgets/logviewwidget.cpp000644 001750 001750 00000005231 11677601442 022526 0ustar00scarlettscarlett000000 000000 /*************************************************************************** * Copyright (C) 2011 by Matteo Agostinelli * * agostinelli@gmail.com * * * * 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. * ***************************************************************************/ #include "logviewwidget.h" #include LogViewWidget::LogViewWidget ( const QString & title, QWidget* parent, Qt::WindowFlags flags ) : QDockWidget ( title, parent, flags ) { m_textEdit = new KTextEdit(this); m_textEdit->setReadOnly(true); QPalette palette; palette.setColor(QPalette::Background, Qt::white); m_textEdit->setPalette(palette); setWidget(m_textEdit); } void LogViewWidget::clear() { m_textEdit->clear(); } QSize LogViewWidget::sizeHint() const { return QSize(300, 50);; } void LogViewWidget::displayError ( const QString& app, const QString& msg ) { if (msg.isEmpty()) return; m_textEdit->setFontWeight(QFont::Bold); m_textEdit->setTextColor(Qt::red); m_textEdit->insertPlainText(QString("[%1]\n").arg(app)); m_textEdit->setFontWeight(QFont::Normal); m_textEdit->insertPlainText(msg + "\n\n"); m_textEdit->setTextColor(Qt::black); show(); } void LogViewWidget::displayMessage ( const QString& app, const QString& msg ) { if (msg.isEmpty()) return; m_textEdit->setFontWeight(QFont::Bold); m_textEdit->insertPlainText(QString("[%1]\n").arg(app)); m_textEdit->setFontWeight(QFont::Normal); m_textEdit->insertPlainText(msg + "\n\n"); } cirkuit-0.4.3/src/widgets/backendchoosedialog.h000644 001750 001750 00000003066 11677601442 023267 0ustar00scarlettscarlett000000 000000 /* 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. --- Copyright (C) 2009 Alexander Rieder Copyright (C) 2011 Matteo Agostinelli */ #ifndef BACKENDCHOOSEDIALOG_H #define BACKENDCHOOSEDIALOG_H #include #include "ui_backendchooser.h" class BackendChooseDialog : public KDialog { Q_OBJECT public: explicit BackendChooseDialog(const QString& backendName = QString(), QWidget* parent = 0); ~BackendChooseDialog(); QString backendName(); public slots: void setBackend(const QString&); signals: void backendSelected(const QString&); void defaultBackendSelected(const QString&); protected slots: void updateDescription(); void onAccept(); private: static const char* descriptionTemplate; Ui::BackendChooserBase m_ui; QString m_backend; }; #endif /* BACKENDCHOOSEDIALOG_H */ cirkuit-0.4.3/src/widgets/widgetfloater.cpp000644 001750 001750 00000007153 11677601442 022513 0ustar00scarlettscarlett000000 000000 // vim: set tabstop=4 shiftwidth=4 noexpandtab: /* Gwenview: an image viewer Copyright 2008 Aurélien Gâteau 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, Cambridge, MA 02110-1301, USA. */ // Self #include "widgetfloater.h" // Qt #include #include #include // KDE #include #include struct WidgetFloaterPrivate { QWidget* mParent; QPointer mChild; Qt::Alignment mAlignment; int mHorizontalMargin; int mVerticalMargin; bool mInsideUpdateChildGeometry; void updateChildGeometry() { if (!mChild) { return; } if (mInsideUpdateChildGeometry) { return; } mInsideUpdateChildGeometry = true; int posX, posY; int childWidth, childHeight; int parentWidth, parentHeight; childWidth = mChild->width(); childHeight = mChild->height(); parentWidth = mParent->width(); parentHeight = mParent->height(); if (mAlignment & Qt::AlignLeft) { posX = mHorizontalMargin; } else if (mAlignment & Qt::AlignHCenter) { posX = (parentWidth - childWidth) / 2; } else if (mAlignment & Qt::AlignJustify) { posX = mHorizontalMargin; childWidth = parentWidth - 2 * mHorizontalMargin; QRect childGeometry = mChild->geometry(); childGeometry.setWidth(childWidth); mChild->setGeometry(childGeometry); } else { posX = parentWidth - childWidth - mHorizontalMargin; } if (mAlignment & Qt::AlignTop) { posY = mVerticalMargin; } else if (mAlignment & Qt::AlignVCenter) { posY = (parentHeight - childHeight) / 2; } else { posY = parentHeight - childHeight - mVerticalMargin; } mChild->move(posX, posY); mInsideUpdateChildGeometry = false; } }; WidgetFloater::WidgetFloater(QWidget* parent) : QObject(parent) , d(new WidgetFloaterPrivate) { Q_ASSERT(parent); d->mParent = parent; d->mParent->installEventFilter(this); d->mChild = 0; d->mAlignment = Qt::AlignCenter; d->mHorizontalMargin = KDialog::marginHint(); d->mVerticalMargin = KDialog::marginHint(); d->mInsideUpdateChildGeometry = false; } WidgetFloater::~WidgetFloater() { delete d; } void WidgetFloater::setChildWidget(QWidget* child) { if (d->mChild) { d->mChild->removeEventFilter(this); } d->mChild = child; d->mChild->setParent(d->mParent); d->mChild->installEventFilter(this); d->updateChildGeometry(); d->mChild->raise(); d->mChild->show(); } void WidgetFloater::setAlignment(Qt::Alignment alignment) { d->mAlignment = alignment; d->updateChildGeometry(); } bool WidgetFloater::eventFilter(QObject*, QEvent* event) { switch (event->type()) { case QEvent::Resize: case QEvent::Show: d->updateChildGeometry(); break; default: break; } return false; } void WidgetFloater::setHorizontalMargin(int value) { d->mHorizontalMargin = value; d->updateChildGeometry(); } int WidgetFloater::horizontalMargin() const { return d->mHorizontalMargin; } void WidgetFloater::setVerticalMargin(int value) { d->mVerticalMargin = value; d->updateChildGeometry(); } int WidgetFloater::verticalMargin() const { return d->mVerticalMargin; } cirkuit-0.4.3/src/widgets/CMakeLists.txt000644 001750 001750 00000000550 11677601442 021701 0ustar00scarlettscarlett000000 000000 include_directories(${CMAKE_CURRENT_BINARY_DIR} ..) set (cirkuitwidgets_SRCS templatechoosedialog.cpp imageview.cpp previewwidget.cpp logviewwidget.cpp backendchoosedialog.cpp widgetfloater.cpp ) kde4_add_ui_files( cirkuitwidgets_SRCS backendchooser.ui templatechooser.ui) kde4_add_library( cirkuitwidgets STATIC ${cirkuitwidgets_SRCS} ) cirkuit-0.4.3/src/config.h.cmake000644 001750 001750 00000000222 11677601442 020164 0ustar00scarlettscarlett000000 000000 #cmakedefine ENABLE_KMESSAGEWIDGET #ifdef ENABLE_KMESSAGEWIDGET #define ENABLE_KMESSAGEWIDGET #else #undef ENABLE_KMESSAGEWIDGET #endif cirkuit-0.4.3/src/backends/000755 001750 001750 00000000000 11677601442 017245 5ustar00scarlettscarlett000000 000000 cirkuit-0.4.3/src/backends/tikz/000755 001750 001750 00000000000 11677601442 020226 5ustar00scarlettscarlett000000 000000 cirkuit-0.4.3/src/backends/tikz/tikzgenerator.cpp000644 001750 001750 00000005534 11677601442 023631 0ustar00scarlettscarlett000000 000000 /* Copyright (C) 2011 Matteo Agostinelli 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. */ #include "tikzgenerator.h" #include "document.h" #include "documenttemplate.h" #include "command.h" #include "settings.h" #include "logparser.h" #include #include #include #include #include using namespace Cirkuit; TikzGenerator::TikzGenerator(Backend* backend, QObject* parent): Generator(backend, parent) { } TikzGenerator::~TikzGenerator() { } bool TikzGenerator::convert(const Cirkuit::Format& in, const Cirkuit::Format& out) { // Check if the conversion can be handled by the super-class bool done = Generator::convert(in, out); if (done) { return true; } kDebug() << "Inside the TikZ backend..."; if (in == Format::Source) { DocumentTemplate tikzTemplate(TikzSettings::templateurl().path()); QString latexDoc = tikzTemplate.insert(document()->text()); if (out == Format::Tex) { QFile fileout(formatPath(Format::Tex)); fileout.open(QFile::WriteOnly); QTextStream stream(&fileout); stream << document()->text(); fileout.close(); return true; } QStringList environment = QProcess::systemEnvironment(); // the following environment variable is needed to find boxdims.sty in the circuit maaros distribution QString dirString = QString("TEXINPUTS=.:%1:").arg(QDir(document()->directory()).absolutePath()); environment << dirString; QStringList latexArgs; foreach (const QString& arg, TikzSettings::latexargs()) { latexArgs << arg; } latexArgs << QString("-jobname=%1").arg(tempFileInfo()->baseName()); Command* latexCmd = new Command("pdflatex", latexDoc, latexArgs); latexCmd->setWorkingDirectory(workingDir().path()); latexCmd->setEnvironment(environment); latexCmd->setLogParser(new LatexLogParser); if (!execute(latexCmd)) return false; return convert(Format::Pdf, out); } return convert(Format::Pdf, out); } cirkuit-0.4.3/src/backends/tikz/tikzbackend.kcfg000644 001750 001750 00000001462 11677601442 023356 0ustar00scarlettscarlett000000 000000 kstandarddirs.h KStandardDirs::locate("data", "cirkuit/templates/tikz_latex.ckt") -halt-on-error,-file-line-error cirkuit-0.4.3/src/backends/tikz/tikzbackend.cpp000644 001750 001750 00000004354 11677601442 023231 0ustar00scarlettscarlett000000 000000 /* 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. --- Copyright (C) 2011 Matteo Agostinelli */ #include "tikzbackend.h" #include "tikzgenerator.h" #include "tikzdocumentsettings.h" #include "settings.h" #include "ui_settings.h" #include "kdebug.h" #include "cirkuit_macros.h" #include TikzBackend::TikzBackend( QObject* parent, const QList args ) : Cirkuit::Backend( parent ) { Q_UNUSED(args) kDebug()<<"Creating TikzBackend"; } TikzBackend::~TikzBackend() { kDebug()<<"Destroying TikzBackend"; } bool TikzBackend::checkRequirements() const { return true; } QString TikzBackend::id() const { return QString("tikz"); } Cirkuit::DocumentSettings* TikzBackend::documentSettings() const { return new TikzDocumentSettings(); } Cirkuit::Generator* TikzBackend::generator() const { return new TikzGenerator(); } KConfigSkeleton* TikzBackend::config() const { return TikzSettings::self(); } QWidget* TikzBackend::settingsWidget(QWidget* parent) const { QWidget* widget=new QWidget(parent); Ui::TikzSettingsBase s; s.setupUi(widget); return widget; } QStringList TikzBackend::identifyingWords() const { QStringList words; words << "\\path" << "tikzpicture" << "\\draw" << "node"; return words; } KUrl TikzBackend::examplesUrl() const { return KUrl("http://www.texample.net/tikz/"); } KUrl TikzBackend::helpUrl() const { return KUrl("http://tug.org/svn/texlive/trunk/Master/texmf-dist/doc/generic/pgf/pgfmanual.pdf"); } K_EXPORT_CIRKUIT_PLUGIN(tikzbackend, TikzBackend) cirkuit-0.4.3/src/backends/tikz/tikzdocumentsettings.h000644 001750 001750 00000001770 11677601442 024705 0ustar00scarlettscarlett000000 000000 /* Copyright (C) 2011 Matteo Agostinelli 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. */ #ifndef TIKZDOCUMENT_H #define TIKZDOCUMENT_H #include class TikzDocumentSettings : public Cirkuit::DocumentSettings { public: explicit TikzDocumentSettings(); }; #endif // CIRCUITMACROSDOCUMENT_H cirkuit-0.4.3/src/backends/tikz/settings.kcfgc000644 001750 001750 00000000111 11677601442 023056 0ustar00scarlettscarlett000000 000000 File=tikzbackend.kcfg ClassName=TikzSettings Singleton=true Mutators=truecirkuit-0.4.3/src/backends/tikz/tikzdocumentsettings.cpp000644 001750 001750 00000001717 11677601442 025241 0ustar00scarlettscarlett000000 000000 /* Copyright (C) 2011 Matteo Agostinelli 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. */ #include "tikzdocumentsettings.h" TikzDocumentSettings::TikzDocumentSettings() { initialLineNumber = 1; initialText = "\\begin{tikzpicture}\n\n\\end{tikzpicture}"; } cirkuit-0.4.3/src/backends/tikz/tikzbackend.h000644 001750 001750 00000003140 11677601442 022666 0ustar00scarlettscarlett000000 000000 /* 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. --- Copyright (C) 2011 Matteo Agostinelli */ #ifndef TIKZBACKEND_H #define TIKZBACKEND_H #include "backend.h" #include #include namespace Cirkuit { class DocumentSettings; class Generator; } class TikzBackend : public Cirkuit::Backend { Q_OBJECT public: explicit TikzBackend( QObject* parent = 0, const QList args = QList()); ~TikzBackend(); virtual bool checkRequirements() const; Cirkuit::DocumentSettings* documentSettings() const; Cirkuit::Generator* generator() const; virtual KConfigSkeleton* config() const; virtual QWidget* settingsWidget(QWidget* parent) const; virtual KUrl helpUrl() const; virtual KUrl examplesUrl() const; QString id() const; protected: virtual QStringList identifyingWords() const; }; #endif /* TIKZBACKEND_H */ cirkuit-0.4.3/src/backends/tikz/settings.ui000644 001750 001750 00000001513 11677601442 022425 0ustar00scarlettscarlett000000 000000 TikzSettingsBase 0 0 414 231 Template path: KUrlRequester QFrame
kurlrequester.h
cirkuit-0.4.3/src/backends/tikz/tikzgenerator.h000644 001750 001750 00000002231 11677601442 023265 0ustar00scarlettscarlett000000 000000 /* Copyright (C) 2011 Matteo Agostinelli 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. */ #ifndef TIKZGENERATOR_H #define TIKZGENERATOR_H #include "generator.h" #include "format.h" class TikzGenerator : public Cirkuit::Generator { public: explicit TikzGenerator(Cirkuit::Backend* backend = 0, QObject* parent = 0); virtual ~TikzGenerator(); virtual bool convert(const Cirkuit::Format& in, const Cirkuit::Format& out); }; #endif // TIKZGENERATOR_H cirkuit-0.4.3/src/backends/tikz/tikzbackend.desktop000644 001750 001750 00000001612 11677601442 024112 0ustar00scarlettscarlett000000 000000 [Desktop Entry] Type=Service Icon=tikzbackend Name=TikZ Name[de]=TikZ Name[es]=TikZ Name[et]=TikZ Name[fr]=TikZ Name[km]=TikZ Name[nds]=TikZ Name[nl]=TikZ Name[pl]=TikZ Name[pt]=TikZ Name[pt_BR]=TikZ Name[sv]=TikZ Name[uk]=TikZ Name[x-test]=xxTikZxx X-KDE-ServiceTypes=Cirkuit/Backend X-KDE-Library=cirkuit_tikzbackend X-KDE-PluginInfo-Name=tikzbackend X-KDE-PluginInfo-Depends= X-KDE-PluginInfo-License=GPL X-KDE-PluginInfo-Website=http://www.texample.net/tikz Comment=Backend for TikZ Comment[es]=Motor para TikZ Comment[et]=TikZi taustaprogramm Comment[fr]=Moteur pour TikZ Comment[km]=កម្មវិធី​ខាងក្រោយ​របស់ TikZ Comment[nl]=Backend voor TikZ Comment[pl]=Silnik dla TikZ Comment[pt]=Infra-Estrutura do TikZ Comment[pt_BR]=Infraestrutura para o TikZ Comment[sv]=Gränssnitt för TikZ Comment[uk]=Модуль для TikZ Comment[x-test]=xxBackend for TikZxx cirkuit-0.4.3/src/backends/tikz/templates/000755 001750 001750 00000000000 11677601442 022224 5ustar00scarlettscarlett000000 000000 cirkuit-0.4.3/src/backends/tikz/templates/tikz_latex.ckt000644 001750 001750 00000000761 11677601442 025111 0ustar00scarlettscarlett000000 000000 %%backend=tikz%% \documentclass{article} \usepackage[utf8x]{inputenc} \usepackage{tikz,amsmath} \usepackage[siunitx]{circuitikz} \usetikzlibrary{arrows,snakes,backgrounds,patterns,matrix,shapes,fit,calc,shadows,plotmarks} \usepackage[graphics,tightpage,active]{preview} \PreviewEnvironment{tikzpicture} \PreviewEnvironment{equation} \PreviewEnvironment{equation*} \newlength{\imagewidth} \newlength{\imagescale} \pagestyle{empty} \begin{document} \thispagestyle{empty} %%SOURCE%% \end{document} cirkuit-0.4.3/src/backends/tikz/templates/CMakeLists.txt000644 001750 001750 00000000122 11677601442 024757 0ustar00scarlettscarlett000000 000000 install( FILES tikz_latex.ckt DESTINATION ${DATA_INSTALL_DIR}/cirkuit/templates ) cirkuit-0.4.3/src/backends/tikz/CMakeLists.txt000644 001750 001750 00000001237 11677601442 022771 0ustar00scarlettscarlett000000 000000 include_directories(${KDE4_INCLUDES} ${CMAKE_CURRENT_BINARY_DIR}) add_subdirectory (templates) set( TikzBackend_SRCS tikzbackend.cpp tikzdocumentsettings.cpp tikzgenerator.cpp ) kde4_add_kcfg_files(TikzBackend_SRCS GENERATE_MOC settings.kcfgc) install(FILES tikzbackend.kcfg DESTINATION ${KCFG_INSTALL_DIR}) kde4_add_ui_files(TikzBackend_SRCS settings.ui) kde4_add_plugin( cirkuit_tikzbackend ${TikzBackend_SRCS} ) target_link_libraries( cirkuit_tikzbackend ${KDE4_KDEUI_LIBS} ${KDE4_KIO_LIBS} cirkuitlibs) install( FILES tikzbackend.desktop DESTINATION ${SERVICES_INSTALL_DIR}/cirkuit) install(TARGETS cirkuit_tikzbackend DESTINATION ${PLUGIN_INSTALL_DIR}) cirkuit-0.4.3/src/backends/null/000755 001750 001750 00000000000 11677601442 020217 5ustar00scarlettscarlett000000 000000 cirkuit-0.4.3/src/backends/null/nulldocumentsettings.h000644 001750 001750 00000001757 11677601442 024674 0ustar00scarlettscarlett000000 000000 /* Copyright (C) 2011 Matteo Agostinelli 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. */ #ifndef NULLDOCUMENT_H #define NULLDOCUMENT_H #include class NullDocumentSettings : public Cirkuit::DocumentSettings { public: explicit NullDocumentSettings(); }; #endif // NULLDOCUMENT_H cirkuit-0.4.3/src/backends/null/nullbackend.desktop000644 001750 001750 00000002402 11677601442 024072 0ustar00scarlettscarlett000000 000000 [Desktop Entry] Type=Service Icon=nullbackend Name=Nullbackend Name[es]=Nullbackend Name[et]=Nullbackend Name[fr]=Nullbackend Name[km]=Nullbackend Name[nds]=Leddig Hülpprogramm Name[nl]=Nullbackend Name[pl]=Zerowy silnik Name[pt]=Infra-Estrutura Nula Name[pt_BR]=Nullbackend Name[sv]=Testgränssnitt Name[uk]=Тестовий модуль Name[x-test]=xxNullbackendxx X-KDE-ServiceTypes=Cirkuit/Backend X-KDE-Library=cirkuit_nullbackend X-KDE-PluginInfo-Name=nullbackend X-KDE-PluginInfo-Depends= X-KDE-PluginInfo-License=GPL Comment=Backend for Cirkuit for testing purposes Comment[es]=Motor para Cirkuit con propósito de pruebas Comment[et]=Cirkuiti taustaprogramm testimiseks Comment[fr]=Moteur pour Cirkuit à des fins de tests Comment[km]=កម្មវិធី​ខាងក្រោយ​របស់​ Cirkuit for សម្រាប់​គោលបំណង​សាកល្បង Comment[nl]=Backend voor Cirkuit voor testdoeleinden Comment[pl]=Silnik dla Cirkuit do celów testowych Comment[pt]=Infra-estrutura do Cirkuit para fins de testes Comment[pt_BR]=Infraestrutura do Cirkuit para testes Comment[sv]=Gränssnitt för Cirkuit i testsyfte Comment[uk]=Тестовий модуль для Cirkuit Comment[x-test]=xxBackend for Cirkuit for testing purposesxx cirkuit-0.4.3/src/backends/null/nullbackend.h000644 001750 001750 00000002660 11677601442 022656 0ustar00scarlettscarlett000000 000000 /* 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. --- Copyright (C) 2009 Alexander Rieder Copyright (C) 2011 Matteo Agostinelli */ #ifndef _NULLBACKEND_H #define _NULLBACKEND_H #include "backend.h" #include #include namespace Cirkuit { class DocumentSettings; class Generator; } class NullBackend : public Cirkuit::Backend { Q_OBJECT public: explicit NullBackend( QObject* parent = 0, const QList args = QList()); ~NullBackend(); virtual bool checkRequirements() const; Cirkuit::DocumentSettings* documentSettings() const; Cirkuit::Generator* generator() const; QString id() const; }; #endif /* _NULLBACKEND_H */ cirkuit-0.4.3/src/backends/null/nullgenerator.cpp000644 001750 001750 00000002124 11677601442 023603 0ustar00scarlettscarlett000000 000000 /* Copyright (C) 2011 Matteo Agostinelli 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. */ #include "nullgenerator.h" NullGenerator::NullGenerator(Cirkuit::Backend* backend, QObject* parent): Generator(backend, parent) { } NullGenerator::~NullGenerator() { } bool NullGenerator::convert(const Cirkuit::Format& in, const Cirkuit::Format& out) { return Cirkuit::Generator::convert(in, out); } cirkuit-0.4.3/src/backends/null/CMakeLists.txt000644 001750 001750 00000000571 11677601442 022762 0ustar00scarlettscarlett000000 000000 set( NullBackend_SRCS nullbackend.cpp nulldocumentsettings.cpp nullgenerator.cpp ) kde4_add_plugin( cirkuit_nullbackend ${NullBackend_SRCS} ) target_link_libraries( cirkuit_nullbackend ${KDE4_KDEUI_LIBS} cirkuitlibs) install( FILES nullbackend.desktop DESTINATION ${SERVICES_INSTALL_DIR}/cirkuit) install(TARGETS cirkuit_nullbackend DESTINATION ${PLUGIN_INSTALL_DIR}) cirkuit-0.4.3/src/backends/null/nullbackend.cpp000644 001750 001750 00000003131 11677601442 023203 0ustar00scarlettscarlett000000 000000 /* 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. --- Copyright (C) 2009 Alexander Rieder Copyright (C) 2011 Matteo Agostinelli */ #include "nullbackend.h" #include "nullgenerator.h" #include "nulldocumentsettings.h" #include "kdebug.h" #include "cirkuit_macros.h" NullBackend::NullBackend( QObject* parent, const QList args ) : Cirkuit::Backend( parent ) { Q_UNUSED(args) kDebug()<<"Creating NullBackend"; } NullBackend::~NullBackend() { kDebug()<<"Destroying NullBackend"; } bool NullBackend::checkRequirements() const { return false; } QString NullBackend::id() const { return "null"; } Cirkuit::DocumentSettings* NullBackend::documentSettings() const { return new NullDocumentSettings(); } Cirkuit::Generator* NullBackend::generator() const { return new NullGenerator(); } K_EXPORT_CIRKUIT_PLUGIN(nullbackend, NullBackend) cirkuit-0.4.3/src/backends/null/nullgenerator.h000644 001750 001750 00000002224 11677601442 023251 0ustar00scarlettscarlett000000 000000 /* Copyright (C) 2011 Matteo Agostinelli 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. */ #ifndef NULLGENERATOR_H #define NULLGENERATOR_H #include "generator.h" #include "format.h" class NullGenerator : public Cirkuit::Generator { public: explicit NullGenerator(Cirkuit::Backend* backend = 0, QObject* parent = 0); virtual ~NullGenerator(); virtual bool convert(const Cirkuit::Format& in, const Cirkuit::Format& out); }; #endif // NULLGENERATOR_H cirkuit-0.4.3/src/backends/null/nulldocumentsettings.cpp000644 001750 001750 00000001764 11677601442 025225 0ustar00scarlettscarlett000000 000000 /* Copyright (C) 2011 Matteo Agostinelli 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. */ #include "nulldocumentsettings.h" NullDocumentSettings::NullDocumentSettings(): DocumentSettings() { initialLineNumber = 1; initialText = "If you see this, something is wrong (null backend active) :)"; } cirkuit-0.4.3/src/backends/pstricks/000755 001750 001750 00000000000 11677601442 021107 5ustar00scarlettscarlett000000 000000 cirkuit-0.4.3/src/backends/pstricks/pstricksbackend.h000644 001750 001750 00000003170 11677601442 024433 0ustar00scarlettscarlett000000 000000 /* 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. --- Copyright (C) 2011 Matteo Agostinelli */ #ifndef PSTRICKSBACKEND_H #define PSTRICKSBACKEND_H #include "backend.h" #include #include namespace Cirkuit { class DocumentSettings; class Generator; } class PstricksBackend : public Cirkuit::Backend { Q_OBJECT public: explicit PstricksBackend( QObject* parent = 0, const QList args = QList()); ~PstricksBackend(); virtual bool checkRequirements() const; Cirkuit::DocumentSettings* documentSettings() const; Cirkuit::Generator* generator() const; virtual KConfigSkeleton* config() const; virtual QWidget* settingsWidget(QWidget* parent) const; virtual KUrl helpUrl() const; virtual KUrl examplesUrl() const; QString id() const; protected: virtual QStringList identifyingWords() const; }; #endif /* PSTRICKSBACKEND_H */ cirkuit-0.4.3/src/backends/pstricks/pstricksdocumentsettings.cpp000644 001750 001750 00000001736 11677601442 027004 0ustar00scarlettscarlett000000 000000 /* Copyright (C) 2011 Matteo Agostinelli 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. */ #include "pstricksdocumentsettings.h" PstricksDocumentSettings::PstricksDocumentSettings() { initialLineNumber = 1; initialText = "\\begin{pspicture}(1,1)\n\n\\end{pspicture}"; } cirkuit-0.4.3/src/backends/pstricks/settings.kcfgc000644 001750 001750 00000000121 11677601442 023740 0ustar00scarlettscarlett000000 000000 File=pstricksbackend.kcfg ClassName=PstricksSettings Singleton=true Mutators=truecirkuit-0.4.3/src/backends/pstricks/pstricksgenerator.h000644 001750 001750 00000002260 11677601442 025031 0ustar00scarlettscarlett000000 000000 /* Copyright (C) 2011 Matteo Agostinelli 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. */ #ifndef PSTRICKSGENERATOR_H #define PSTRICKSGENERATOR_H #include "generator.h" #include "format.h" class PstricksGenerator : public Cirkuit::Generator { public: explicit PstricksGenerator(Cirkuit::Backend* backend = 0, QObject* parent = 0); virtual ~PstricksGenerator(); virtual bool convert(const Cirkuit::Format& in, const Cirkuit::Format& out); }; #endif // PSTRICKSGENERATOR_H cirkuit-0.4.3/src/backends/pstricks/pstricksbackend.kcfg000644 001750 001750 00000001471 11677601442 025120 0ustar00scarlettscarlett000000 000000 kstandarddirs.h KStandardDirs::locate("data", "cirkuit/templates/pst_latex.ckt") -halt-on-error,-file-line-error cirkuit-0.4.3/src/backends/pstricks/settings.ui000644 001750 001750 00000001527 11677601442 023313 0ustar00scarlettscarlett000000 000000 PstricksSettingsBase 0 0 414 231 Template path: KUrlRequester QFrame
kurlrequester.h
cirkuit-0.4.3/src/backends/pstricks/pstricksbackend.cpp000644 001750 001750 00000004516 11677601442 024773 0ustar00scarlettscarlett000000 000000 /* 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. --- Copyright (C) 2011 Matteo Agostinelli */ #include "pstricksbackend.h" #include "pstricksdocumentsettings.h" #include "pstricksgenerator.h" #include "settings.h" #include "ui_settings.h" #include #include "cirkuit_macros.h" PstricksBackend::PstricksBackend(QObject* parent, const QList< QVariant > args): Backend(parent, args) { Q_UNUSED(args) kDebug() << "Creating PstricksBackend"; } PstricksBackend::~PstricksBackend() { kDebug() << "Destroying Pstricksbackend"; } QString PstricksBackend::id() const { return QString("pstricks"); } bool PstricksBackend::checkRequirements() const { return true; } QStringList PstricksBackend::identifyingWords() const { QStringList words; words << "pspicture" << "psline" << "psset" << "pscurve" << "\\begin" << "\\end"; return words; } KUrl PstricksBackend::helpUrl() const { return KUrl("http://mirror.ctan.org/graphics/pstricks/base/doc/pstricks-doc.pdf"); } KUrl PstricksBackend::examplesUrl() const { return KUrl("http://tug.org/PSTricks/main.cgi?file=examples"); } Cirkuit::DocumentSettings* PstricksBackend::documentSettings() const { return new PstricksDocumentSettings; } KConfigSkeleton* PstricksBackend::config() const { return PstricksSettings::self(); } QWidget* PstricksBackend::settingsWidget(QWidget* parent) const { QWidget* widget=new QWidget(parent); Ui::PstricksSettingsBase s; s.setupUi(widget); return widget; } Cirkuit::Generator* PstricksBackend::generator() const { return new PstricksGenerator(); } K_EXPORT_CIRKUIT_PLUGIN(pstricksbackend, PstricksBackend) cirkuit-0.4.3/src/backends/pstricks/pstricksdocumentsettings.h000644 001750 001750 00000002003 11677601442 026435 0ustar00scarlettscarlett000000 000000 /* Copyright (C) 2011 Matteo Agostinelli 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. */ #ifndef PSTRICKSDOCUMENT_H #define PSTRICKSDOCUMENT_H #include class PstricksDocumentSettings : public Cirkuit::DocumentSettings { public: explicit PstricksDocumentSettings(); }; #endif // PSTRICKSDOCUMENT_H cirkuit-0.4.3/src/backends/pstricks/templates/000755 001750 001750 00000000000 11677601442 023105 5ustar00scarlettscarlett000000 000000 cirkuit-0.4.3/src/backends/pstricks/templates/pst_latex.ckt000644 001750 001750 00000000421 11677601442 025610 0ustar00scarlettscarlett000000 000000 %%backend=pstricks%% \documentclass{article} \usepackage[utf8x]{inputenc} \usepackage{pstricks,pst-eps,graphicx,pst-grad,amsmath} \pagestyle{empty} \thispagestyle{empty} \begin{document} \newbox\graph \begin{TeXtoEPS} %%SOURCE%% \box \graph \end{TeXtoEPS} \end{document} cirkuit-0.4.3/src/backends/pstricks/templates/CMakeLists.txt000644 001750 001750 00000000121 11677601442 025637 0ustar00scarlettscarlett000000 000000 install( FILES pst_latex.ckt DESTINATION ${DATA_INSTALL_DIR}/cirkuit/templates ) cirkuit-0.4.3/src/backends/pstricks/CMakeLists.txt000644 001750 001750 00000001316 11677601442 023650 0ustar00scarlettscarlett000000 000000 include_directories(${KDE4_INCLUDES} ${CMAKE_CURRENT_BINARY_DIR}) add_subdirectory (templates) set( PstricksBackend_SRCS pstricksbackend.cpp pstricksdocumentsettings.cpp pstricksgenerator.cpp ) kde4_add_kcfg_files(PstricksBackend_SRCS GENERATE_MOC settings.kcfgc) install(FILES pstricksbackend.kcfg DESTINATION ${KCFG_INSTALL_DIR}) kde4_add_ui_files(PstricksBackend_SRCS settings.ui) kde4_add_plugin( cirkuit_pstricksbackend ${PstricksBackend_SRCS} ) target_link_libraries( cirkuit_pstricksbackend ${KDE4_KDEUI_LIBS} ${KDE4_KIO_LIBS} cirkuitlibs) install( FILES pstricksbackend.desktop DESTINATION ${SERVICES_INSTALL_DIR}/cirkuit) install(TARGETS cirkuit_pstricksbackend DESTINATION ${PLUGIN_INSTALL_DIR})cirkuit-0.4.3/src/backends/pstricks/pstricksgenerator.cpp000644 001750 001750 00000005537 11677601442 025376 0ustar00scarlettscarlett000000 000000 /* Copyright (C) 2011 Matteo Agostinelli 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. */ #include "pstricksgenerator.h" #include "document.h" #include "documenttemplate.h" #include "command.h" #include "settings.h" #include "logparser.h" #include #include #include #include #include using namespace Cirkuit; PstricksGenerator::PstricksGenerator(Backend* backend, QObject* parent): Generator(backend, parent) { } PstricksGenerator::~PstricksGenerator() { } bool PstricksGenerator::convert(const Cirkuit::Format& in, const Cirkuit::Format& out) { // Check if the conversion can be handled by the super-class bool done = Generator::convert(in, out); if (done) { return true; } kDebug() << "Inside the PsTricks backend..."; if (in == Format::Source) { DocumentTemplate pstTemplate(PstricksSettings::templateurl().path()); QString latexDoc = pstTemplate.insert(document()->text()); if (out == Format::Tex) { QFile fileout(formatPath(Format::Tex)); fileout.open(QFile::WriteOnly); QTextStream stream(&fileout); stream << document()->text(); fileout.close(); return true; } QStringList environment = QProcess::systemEnvironment(); // the following environment variable is needed to find boxdims.sty in the circuit maaros distribution QString dirString = QString("TEXINPUTS=.:%1:").arg(QDir(document()->directory()).absolutePath()); environment << dirString; QStringList latexArgs; foreach (const QString& arg, PstricksSettings::latexargs()) { latexArgs << arg; } latexArgs << QString("-jobname=%1").arg(tempFileInfo()->baseName()); Command* latexCmd = new Command("latex", latexDoc, latexArgs); latexCmd->setWorkingDirectory(workingDir().path()); latexCmd->setEnvironment(environment); latexCmd->setLogParser(new LatexLogParser); if (!execute(latexCmd)) return false; return convert(Format::Dvi, out); } return false; } cirkuit-0.4.3/src/backends/pstricks/pstricksbackend.desktop000644 001750 001750 00000001773 11677601442 025664 0ustar00scarlettscarlett000000 000000 [Desktop Entry] Type=Service Icon=pstricks Name=PSTricks Name[de]=PSTricks Name[es]=PSTricks Name[et]=PSTricks Name[fr]=PSTricks Name[km]=PSTricks Name[nds]=PSTricks Name[nl]=PSTricks Name[pl]=PSTricks Name[pt]=PSTricks Name[pt_BR]=PSTricks Name[sv]=PSTricks Name[uk]=PSTricks Name[x-test]=xxPSTricksxx X-KDE-ServiceTypes=Cirkuit/Backend X-KDE-Library=cirkuit_pstricksbackend X-KDE-PluginInfo-Name=pstricksbackend X-KDE-PluginInfo-Depends= X-KDE-PluginInfo-License=GPL X-KDE-PluginInfo-Website=http://tug.org/PSTricks/main.cgi Comment=Backend for PSTricks Comment[es]=Motor para PSTricks Comment[et]=PSTricksi taustaprogramm Comment[fr]=Moteur pour PSTricks Comment[km]=កម្មវិធី​ខាងក្រោយ​របស់ PSTricks Comment[nl]=Backend voor PSTricks Comment[pl]=Silnik dla PSTricks Comment[pt]=Infra-Estrutura do PSTricks Comment[pt_BR]=Infraestrutura para o PSTricks Comment[sv]=Gränssnitt för PSTricks Comment[uk]=Модуль для PSTricks Comment[x-test]=xxBackend for PSTricksxx cirkuit-0.4.3/src/backends/gnuplot/000755 001750 001750 00000000000 11677601442 020735 5ustar00scarlettscarlett000000 000000 cirkuit-0.4.3/src/backends/gnuplot/gnuplotbackend.desktop000644 001750 001750 00000001733 11677601442 025334 0ustar00scarlettscarlett000000 000000 [Desktop Entry] Type=Service Icon=gnuplotbackend Name=Gnuplot Name[de]=Gnuplot Name[es]=Gnuplot Name[et]=Gnuplot Name[fr]=Gnuplot Name[km]=Gnuplot Name[nds]=Gnuplot Name[nl]=Gnuplot Name[pl]=Gnuplot Name[pt]=Gnuplot Name[pt_BR]=Gnuplot Name[sv]=Gnuplot Name[uk]=Gnuplot Name[x-test]=xxGnuplotxx X-KDE-ServiceTypes=Cirkuit/Backend X-KDE-Library=cirkuit_gnuplotbackend X-KDE-PluginInfo-Name=gnuplotbackend X-KDE-PluginInfo-Depends= X-KDE-PluginInfo-License=GPL X-KDE-PluginInfo-Website=http://www.gnuplot.org Comment=Backend for Gnuplot Comment[es]=Motor para Gnuplot Comment[et]=Gnuploti taustaprogramm Comment[fr]=Moteur pour Gnuplot Comment[km]=កម្មវិធី​ខាងក្រោយ​របស់ Gnuplot Comment[nl]=Backend voor Gnuplot Comment[pl]=Silnik dla Gnuplot Comment[pt]=Infra-Estrutura do Gnuplot Comment[pt_BR]=Infraestrutura para o Gnuplot Comment[sv]=Gränssnitt för Gnuplot Comment[uk]=Модуль для Gnuplot Comment[x-test]=xxBackend for Gnuplotxx cirkuit-0.4.3/src/backends/gnuplot/gnuplotbackend.cpp000644 001750 001750 00000004403 11677601442 024442 0ustar00scarlettscarlett000000 000000 /* 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. --- Copyright (C) 2011 Matteo Agostinelli */ #include "gnuplotbackend.h" #include "gnuplotgenerator.h" #include "gnuplotdocumentsettings.h" #include "settings.h" #include "ui_settings.h" #include "kdebug.h" #include "cirkuit_macros.h" #include GnuplotBackend::GnuplotBackend( QObject* parent, const QList args ) : Cirkuit::Backend( parent ) { Q_UNUSED(args) kDebug()<<"Creating GnuplotBackend"; } GnuplotBackend::~GnuplotBackend() { kDebug()<<"Destroying GnuplotBackend"; } bool GnuplotBackend::checkRequirements() const { return true; } QString GnuplotBackend::id() const { return "gnuplot"; } Cirkuit::DocumentSettings* GnuplotBackend::documentSettings() const { return new GnuplotDocumentSettings(); } Cirkuit::Generator* GnuplotBackend::generator() const { return new GnuplotGenerator(); } KConfigSkeleton* GnuplotBackend::config() const { return GnuplotSettings::self(); } QWidget* GnuplotBackend::settingsWidget(QWidget* parent) const { QWidget* widget=new QWidget(parent); Ui::GnuplotSettingsBase s; s.setupUi(widget); return widget; } QStringList GnuplotBackend::identifyingWords() const { QStringList words; words << "set terminal" << "plot" << "using"; return words; } KUrl GnuplotBackend::helpUrl() const { return KUrl("http://www.gnuplot.info/documentation.html"); } KUrl GnuplotBackend::examplesUrl() const { return KUrl("http://gnuplot.sourceforge.net/demo/"); } K_EXPORT_CIRKUIT_PLUGIN(gnuplotbackend, GnuplotBackend) cirkuit-0.4.3/src/backends/gnuplot/gnuplotbackend.h000644 001750 001750 00000003155 11677601442 024112 0ustar00scarlettscarlett000000 000000 /* 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. --- Copyright (C) 2011 Matteo Agostinelli */ #ifndef GNUPLOTBACKEND_H #define GNUPLOTBACKEND_H #include "backend.h" #include #include namespace Cirkuit { class DocumentSettings; class Generator; } class GnuplotBackend : public Cirkuit::Backend { Q_OBJECT public: explicit GnuplotBackend( QObject* parent = 0, const QList args = QList()); ~GnuplotBackend(); virtual bool checkRequirements() const; Cirkuit::DocumentSettings* documentSettings() const; Cirkuit::Generator* generator() const; virtual KConfigSkeleton* config() const; virtual QWidget* settingsWidget(QWidget* parent) const; virtual KUrl helpUrl() const; virtual KUrl examplesUrl() const; QString id() const; protected: virtual QStringList identifyingWords() const; }; #endif /* GNUPLOTBACKEND_H */ cirkuit-0.4.3/src/backends/gnuplot/gnuplotgenerator.h000644 001750 001750 00000002253 11677601442 024507 0ustar00scarlettscarlett000000 000000 /* Copyright (C) 2011 Matteo Agostinelli 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. */ #ifndef GNUPLOTGENERATOR_H #define GNUPLOTGENERATOR_H #include "generator.h" #include "format.h" class GnuplotGenerator : public Cirkuit::Generator { public: explicit GnuplotGenerator(Cirkuit::Backend* backend = 0, QObject* parent = 0); virtual ~GnuplotGenerator(); virtual bool convert(const Cirkuit::Format& in, const Cirkuit::Format& out); }; #endif // GNUPLOTGENERATOR_H cirkuit-0.4.3/src/backends/gnuplot/gnuplotdocumentsettings.h000644 001750 001750 00000001776 11677601442 026131 0ustar00scarlettscarlett000000 000000 /* Copyright (C) 2011 Matteo Agostinelli 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. */ #ifndef GNUPLOTDOCUMENT_H #define GNUPLOTDOCUMENT_H #include class GnuplotDocumentSettings : public Cirkuit::DocumentSettings { public: explicit GnuplotDocumentSettings(); }; #endif // GNUPLOTDOCUMENT_H cirkuit-0.4.3/src/backends/gnuplot/settings.kcfgc000644 001750 001750 00000000117 11677601442 023573 0ustar00scarlettscarlett000000 000000 File=gnuplotbackend.kcfg ClassName=GnuplotSettings Singleton=true Mutators=truecirkuit-0.4.3/src/backends/gnuplot/settings.ui000644 001750 001750 00000001521 11677601442 023133 0ustar00scarlettscarlett000000 000000 GnuplotSettingsBase 0 0 414 231 Template path: KUrlRequester QFrame
kurlrequester.h
cirkuit-0.4.3/src/backends/gnuplot/gnuplotgenerator.cpp000644 001750 001750 00000010526 11677601442 025044 0ustar00scarlettscarlett000000 000000 /* Copyright (C) 2011 Matteo Agostinelli 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. */ #include "gnuplotgenerator.h" #include "document.h" #include "documenttemplate.h" #include "command.h" #include "settings.h" #include #include #include #include #include using namespace Cirkuit; GnuplotGenerator::GnuplotGenerator(Backend* backend, QObject* parent): Generator(backend, parent) { } GnuplotGenerator::~GnuplotGenerator() { } bool GnuplotGenerator::convert(const Cirkuit::Format& in, const Cirkuit::Format& out) { // Check if the conversion can be handled by the super-class bool done = Generator::convert(in, out); if (done) { return true; } kDebug() << "Inside the Gnuplot backend..."; if (in == Format::Source) { QTextStream stream(tempFile()); QStringList args; args << tempFileInfo()->fileName(); Command* gnuplot = new Command("gnuplot", QString(), args); // Regexp to match filenames QRegExp regex1("[\'\"]([\\w\\./\\-]+)[\'\"]"); // Regexp to match math expressions QRegExp regex2("[\'\"]\\$(.+)\\$[\'\"]"); QStringList origFileNames; QStringList lines = document()->text().split('\n'); QString gnuplotOutputFile = tempFileInfo()->baseName() + ".tex"; stream << "set output '" + gnuplotOutputFile + "'\n"; foreach (QString line, lines) { int pos = 0; while ((pos = regex1.indexIn(line,pos)) != -1) { QString capture = regex1.cap(1); if (QFile::exists(QDir(document()->directory()).absolutePath() + '/' + capture)) { if (!line.startsWith(QLatin1String("set output"))) { origFileNames << capture; line = line.replace(capture, QString("%1/%2").arg(QDir(document()->directory()).absolutePath()).arg(capture)); } } if (line.simplified().startsWith(QLatin1String("set output"))) { line = QString(""); } pos += regex1.matchedLength(); } pos = 0; while ((pos = regex2.indexIn(line,pos)) != -1) { QString capture = regex2.cap(1); QString escaped = QString(capture).replace("\\", "\\\\"); line = line.replace(capture, escaped); pos += regex2.matchedLength(); } stream << line + '\n'; } tempFile()->close(); if (!execute(gnuplot)) return false; if (out == Format::Tex) { return true; } DocumentTemplate gpTemplate(GnuplotSettings::templateurl().path()); QString latexDoc = gpTemplate.insert(gnuplotOutputFile); QStringList environment = QProcess::systemEnvironment(); // the following environment variable is needed to find boxdims.sty in the circuit maaros distribution QString dirString = QString("TEXINPUTS=.:%1:").arg(QDir(document()->directory()).absolutePath()); environment << dirString; QStringList latexArgs; latexArgs << QString("-jobname=%1").arg(tempFileInfo()->baseName()); Command* latexCmd = new Command("pdflatex", latexDoc, latexArgs); latexCmd->setWorkingDirectory(workingDir().path()); latexCmd->setEnvironment(environment); if (!execute(latexCmd)) return false; return convert(Format::Pdf, out); } return convert(Format::Pdf, out); } cirkuit-0.4.3/src/backends/gnuplot/templates/000755 001750 001750 00000000000 11677601442 022733 5ustar00scarlettscarlett000000 000000 cirkuit-0.4.3/src/backends/gnuplot/templates/CMakeLists.txt000644 001750 001750 00000000125 11677601442 025471 0ustar00scarlettscarlett000000 000000 install( FILES gnuplot_latex.ckt DESTINATION ${DATA_INSTALL_DIR}/cirkuit/templates ) cirkuit-0.4.3/src/backends/gnuplot/templates/gnuplot_latex.ckt000644 001750 001750 00000000777 11677601442 026336 0ustar00scarlettscarlett000000 000000 %%backend=gnuplot%% \documentclass{article} \usepackage[utf8x]{inputenc} \usepackage{tikz,amsmath,siunitx} \usepackage{gnuplot-lua-tikz} \usetikzlibrary{arrows,snakes,backgrounds,patterns,matrix,shapes,fit,calc,shadows,plotmarks} \usepackage[graphics,tightpage,active]{preview} \PreviewEnvironment{tikzpicture} \PreviewEnvironment{equation} \PreviewEnvironment{equation*} \newlength{\imagewidth} \newlength{\imagescale} \pagestyle{empty} \begin{document} \thispagestyle{empty} \input %%SOURCE%% \end{document} cirkuit-0.4.3/src/backends/gnuplot/gnuplotdocumentsettings.cpp000644 001750 001750 00000001723 11677601442 026454 0ustar00scarlettscarlett000000 000000 /* Copyright (C) 2011 Matteo Agostinelli 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. */ #include "gnuplotdocumentsettings.h" GnuplotDocumentSettings::GnuplotDocumentSettings() { initialLineNumber = 1; initialText = "set terminal lua tikz originreset\n\n"; } cirkuit-0.4.3/src/backends/gnuplot/gnuplotbackend.kcfg000644 001750 001750 00000001170 11677601442 024570 0ustar00scarlettscarlett000000 000000 kstandarddirs.h KStandardDirs::locate("data", "cirkuit/templates/gnuplot_latex.ckt") cirkuit-0.4.3/src/backends/gnuplot/CMakeLists.txt000644 001750 001750 00000001303 11677601442 023472 0ustar00scarlettscarlett000000 000000 include_directories(${KDE4_INCLUDES} ${CMAKE_CURRENT_BINARY_DIR}) add_subdirectory (templates) set( GnuplotBackend_SRCS gnuplotbackend.cpp gnuplotdocumentsettings.cpp gnuplotgenerator.cpp ) kde4_add_kcfg_files(GnuplotBackend_SRCS GENERATE_MOC settings.kcfgc) install(FILES gnuplotbackend.kcfg DESTINATION ${KCFG_INSTALL_DIR}) kde4_add_ui_files(GnuplotBackend_SRCS settings.ui) kde4_add_plugin( cirkuit_gnuplotbackend ${GnuplotBackend_SRCS} ) target_link_libraries( cirkuit_gnuplotbackend ${KDE4_KDEUI_LIBS} ${KDE4_KIO_LIBS} cirkuitlibs) install( FILES gnuplotbackend.desktop DESTINATION ${SERVICES_INSTALL_DIR}/cirkuit) install(TARGETS cirkuit_gnuplotbackend DESTINATION ${PLUGIN_INSTALL_DIR}) cirkuit-0.4.3/src/backends/circuitmacros/000755 001750 001750 00000000000 11677601442 022114 5ustar00scarlettscarlett000000 000000 cirkuit-0.4.3/src/backends/circuitmacros/settingswidget.cpp000644 001750 001750 00000004350 11677601442 025666 0ustar00scarlettscarlett000000 000000 /*************************************************************************** * Copyright (C) 2011 by Matteo Agostinelli * * agostinelli@gmail.com * * * * 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. * ***************************************************************************/ #include "settingswidget.h" #include "settings.h" CircuitMacrosSettingsWidget::CircuitMacrosSettingsWidget(QWidget* parent, Qt::WindowFlags f): QWidget(parent, f) { setupUi(this); CircuitMacrosSettings::self()->readConfig(); kcfg_templateurl->setUrl(CircuitMacrosSettings::templateurl()); kcfg_tikztemplateurl->setUrl(CircuitMacrosSettings::tikztemplateurl()); setVisibleTemplateChooser(kcfg_PicInterpreter->currentIndex()); connect(kcfg_PicInterpreter, SIGNAL(currentIndexChanged(int)), this, SLOT(setVisibleTemplateChooser(int))); } void CircuitMacrosSettingsWidget::setVisibleTemplateChooser(int index) { kcfg_templateurl->setVisible(index != 1); lbl_template->setVisible(index != 1); kcfg_tikztemplateurl->setVisible(index == 1); lbl_tikztemplate->setVisible(index == 1); } cirkuit-0.4.3/src/backends/circuitmacros/circuitmacrosdocumentsettings.h000644 001750 001750 00000002034 11677601442 030453 0ustar00scarlettscarlett000000 000000 /* Copyright (C) 2011 Matteo Agostinelli 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. */ #ifndef CIRCUITMACROSDOCUMENT_H #define CIRCUITMACROSDOCUMENT_H #include class CircuitMacrosDocumentSettings : public Cirkuit::DocumentSettings { public: explicit CircuitMacrosDocumentSettings(); }; #endif // CIRCUITMACROSDOCUMENT_H cirkuit-0.4.3/src/backends/circuitmacros/settings.kcfgc000644 001750 001750 00000000133 11677601442 024750 0ustar00scarlettscarlett000000 000000 File=circuitmacrosbackend.kcfg ClassName=CircuitMacrosSettings Singleton=true Mutators=truecirkuit-0.4.3/src/backends/circuitmacros/circuitmacrosbackend.h000644 001750 001750 00000003321 11677601442 026443 0ustar00scarlettscarlett000000 000000 /* 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. --- Copyright (C) 2011 Matteo Agostinelli */ #ifndef CIRCUITMACROSBACKEND_H #define CIRCUITMACROSBACKEND_H #include "backend.h" #include #include namespace Cirkuit { class DocumentSettings; class Generator; } class CircuitMacrosBackend : public Cirkuit::Backend { Q_OBJECT public: explicit CircuitMacrosBackend( QObject* parent = 0, const QList args = QList()); ~CircuitMacrosBackend(); virtual bool checkRequirements() const; Cirkuit::DocumentSettings* documentSettings() const; Cirkuit::Generator* generator() const; virtual KConfigSkeleton* config() const; virtual KConfigSkeletonItem* configTemplateUrl() const; virtual QWidget* settingsWidget(QWidget* parent) const; virtual KUrl helpUrl() const; virtual KUrl examplesUrl() const; QString id() const; protected: virtual QStringList identifyingWords() const; }; #endif /* CIRCUITMACROSBACKEND_H */ cirkuit-0.4.3/src/backends/circuitmacros/circuitmacrosgenerator.cpp000644 001750 001750 00000014015 11677601442 027377 0ustar00scarlettscarlett000000 000000 /* Copyright (C) 2011 Matteo Agostinelli 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. */ #include "circuitmacrosgenerator.h" #include "document.h" #include "documenttemplate.h" #include "command.h" #include "settings.h" #include "logparser.h" #include "dpiclogparser.h" #include #include #include #include #include using namespace Cirkuit; CircuitMacrosGenerator::CircuitMacrosGenerator(Cirkuit::Backend* backend, QObject* parent): Generator(backend, parent) { createTempFiles(".m4"); } CircuitMacrosGenerator::~CircuitMacrosGenerator() { } bool CircuitMacrosGenerator::convert(const Cirkuit::Format& in, const Cirkuit::Format& out) { kDebug() << "Inside the CircuitMacros generator..."; // Check if the conversion can be handled by the super-class bool done = Cirkuit::Generator::convert(in, out); if (done) return true; if (in == Format::Source) { tempFile()->open(); QTextStream tmpStream(tempFile()); tmpStream << document()->text(); tempFile()->close(); QStringList env = KProcess::systemEnvironment(); env << QString("M4PATH=%1:%2").arg(KStandardDirs::locate("data", "cirkuit/circuit_macros/")).arg(QDir(document()->directory()).absolutePath()); QStringList m4args; if (CircuitMacrosSettings::picInterpreter() == CircuitMacrosSettings::EnumPicInterpreter::dpic_ps) { m4args << KStandardDirs::locate("data", "cirkuit/circuit_macros/pstricks.m4"); } else if (CircuitMacrosSettings::picInterpreter() == CircuitMacrosSettings::EnumPicInterpreter::dpic_pgf) { m4args << KStandardDirs::locate("data", "cirkuit/circuit_macros/pgf.m4"); } else if (CircuitMacrosSettings::picInterpreter() == CircuitMacrosSettings::EnumPicInterpreter::gpic) { m4args << KStandardDirs::locate("data", "cirkuit/circuit_macros/gpic.m4"); } m4args << KStandardDirs::locate("data", "cirkuit/circuit_macros/libcct.m4") << tempFileInfo()->fileName(); Command* m4command = new Command("m4", "", m4args); m4command->setEnvironment(env); m4command->setWorkingDirectory(workingDir().path()); if (!execute(m4command)) return false; QString m4out = m4command->stdOutput(); Command* picCommand; QStringList picArgs; if (CircuitMacrosSettings::picInterpreter() == CircuitMacrosSettings::EnumPicInterpreter::dpic_ps) { picArgs << "-p"; picCommand = new Command("dpic", m4out, picArgs); picCommand->setLogParser(new DpicLogParser); } else if (CircuitMacrosSettings::picInterpreter() == CircuitMacrosSettings::EnumPicInterpreter::dpic_pgf) { picArgs << "-g"; picCommand = new Command("dpic", m4out, picArgs); picCommand->setLogParser(new DpicLogParser); } else { picArgs << "-t"; picCommand = new Command("pic", m4out, picArgs); } if (!execute(picCommand)) return false; QString picout = picCommand->stdOutput(); // if the desired output is the TeX source, dump it if (out == Format::Tex) { QFile fileout(formatPath(Format::Tex)); fileout.open(QFile::WriteOnly); QTextStream stream(&fileout); stream << picout; fileout.close(); return true; } QStringList environment = QProcess::systemEnvironment(); // the following environment variable is needed to find boxdims.sty in the circuit maaros distribution QString dirString = QString("TEXINPUTS=.:%1:%2:").arg(KStandardDirs::locate("data", "cirkuit/circuit_macros/")).arg(QDir(document()->directory()).absolutePath()); environment << dirString; QStringList latexArgs; foreach (const QString& arg, CircuitMacrosSettings::latexargs()) { latexArgs << arg; } latexArgs << QString("-jobname=%1").arg(tempFileInfo()->baseName()); QString latexDoc; Command* latexCmd; if (CircuitMacrosSettings::picInterpreter() == CircuitMacrosSettings::EnumPicInterpreter::dpic_pgf) { DocumentTemplate latexTemplate(CircuitMacrosSettings::tikztemplateurl().path()); latexDoc = latexTemplate.insert(picout); latexCmd = new Command("pdflatex", latexDoc, latexArgs); } else { DocumentTemplate latexTemplate(CircuitMacrosSettings::templateurl().path()); latexDoc = latexTemplate.insert(picout); latexCmd = new Command("latex", latexDoc, latexArgs); } latexCmd->setWorkingDirectory(workingDir().path()); latexCmd->setEnvironment(environment); latexCmd->setLogParser(new LatexLogParser); if (!execute(latexCmd)) return false; // Now that a DVI has been generated, convert it to the // desired output format if (CircuitMacrosSettings::picInterpreter() == CircuitMacrosSettings::EnumPicInterpreter::dpic_pgf) { return Generator::convert(Format::Pdf, out); } else { return Generator::convert(Format::Dvi, out); } return true; } return false; } cirkuit-0.4.3/src/backends/circuitmacros/settingswidget.h000644 001750 001750 00000003430 11677601442 025331 0ustar00scarlettscarlett000000 000000 /*************************************************************************** * Copyright (C) 2011 by Matteo Agostinelli * * agostinelli@gmail.com * * * * 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. * ***************************************************************************/ #ifndef SETTINGSWIDGET_H #define SETTINGSWIDGET_H #include "ui_settings.h" class CircuitMacrosSettingsWidget : public QWidget, public Ui::CircuitMacrosSettingsBase { Q_OBJECT private slots: void setVisibleTemplateChooser(int index); public: explicit CircuitMacrosSettingsWidget(QWidget* parent = 0, Qt::WindowFlags f = 0); }; #endif cirkuit-0.4.3/src/backends/circuitmacros/settings.ui000644 001750 001750 00000003543 11677601442 024320 0ustar00scarlettscarlett000000 000000 CircuitMacrosSettingsBase 0 0 414 231 Template path: Template path: Pic interpreter dpic + PSTricks dpic + TikZ gpic KUrlRequester QFrame
kurlrequester.h
KComboBox QComboBox
kcombobox.h
cirkuit-0.4.3/src/backends/circuitmacros/circuitmacrosbackend.kcfg000644 001750 001750 00000002462 11677601442 027133 0ustar00scarlettscarlett000000 000000 kstandarddirs.h dpic_ps KStandardDirs::locate("data", "cirkuit/templates/cm_latex.ckt") KStandardDirs::locate("data", "cirkuit/templates/cm_tikz.ckt") -file-line-error,-halt-on-error cirkuit-0.4.3/src/backends/circuitmacros/circuitmacrosbackend.cpp000644 001750 001750 00000005272 11677601442 027005 0ustar00scarlettscarlett000000 000000 /* 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. --- Copyright (C) 2011 Matteo Agostinelli */ #include "circuitmacrosbackend.h" #include "circuitmacrosgenerator.h" #include "circuitmacrosdocumentsettings.h" #include "settings.h" #include "settingswidget.h" #include "kdebug.h" #include "cirkuit_macros.h" #include CircuitMacrosBackend::CircuitMacrosBackend( QObject* parent, const QList args ) : Cirkuit::Backend( parent ) { Q_UNUSED(args) kDebug()<<"Creating CircuitMacrosBackend"; } CircuitMacrosBackend::~CircuitMacrosBackend() { kDebug()<<"Destroying CircuitMacrosBackend"; } bool CircuitMacrosBackend::checkRequirements() const { return true; } QString CircuitMacrosBackend::id() const { return "circuitmacros"; } Cirkuit::DocumentSettings* CircuitMacrosBackend::documentSettings() const { return new CircuitMacrosDocumentSettings(); } Cirkuit::Generator* CircuitMacrosBackend::generator() const { return new CircuitMacrosGenerator(); } KConfigSkeleton* CircuitMacrosBackend::config() const { return CircuitMacrosSettings::self(); } QWidget* CircuitMacrosBackend::settingsWidget(QWidget* parent) const { return new CircuitMacrosSettingsWidget(parent); } QStringList CircuitMacrosBackend::identifyingWords() const { QStringList words; words << ".PS" << ".PE" << "cct_init" << "resistor"; return words; } KUrl CircuitMacrosBackend::examplesUrl() const { return KStandardDirs::locateLocal("data", "cirkuit/circuit_macros/examples/examples.ps"); } KUrl CircuitMacrosBackend::helpUrl() const { return KStandardDirs::locateLocal("data", "cirkuit/circuit_macros/doc/CMman.pdf"); } KConfigSkeletonItem* CircuitMacrosBackend::configTemplateUrl() const { if (CircuitMacrosSettings::picInterpreter() == CircuitMacrosSettings::EnumPicInterpreter::dpic_pgf) { return config()->findItem("tikztemplateurl"); } return Backend::configTemplateUrl(); } K_EXPORT_CIRKUIT_PLUGIN(circuitmacrosbackend, CircuitMacrosBackend) cirkuit-0.4.3/src/backends/circuitmacros/dpiclogparser.h000644 001750 001750 00000002133 11677601442 025122 0ustar00scarlettscarlett000000 000000 /* Copyright (C) 2011 Matteo Agostinelli 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. */ #ifndef DPICLOGPARSER_H #define DPICLOGPARSER_H #include "logparser.h" class DpicLogParser: public Cirkuit::LogParser { Q_OBJECT public: explicit DpicLogParser(QObject* parent = 0); public slots: bool parse(const QString& stdout, const QString& stderr = QString()); }; #endif // DPICLOGPARSER_H cirkuit-0.4.3/src/backends/circuitmacros/circuitmacrosdocumentsettings.cpp000644 001750 001750 00000001724 11677601442 031013 0ustar00scarlettscarlett000000 000000 /* Copyright (C) 2011 Matteo Agostinelli 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. */ #include "circuitmacrosdocumentsettings.h" CircuitMacrosDocumentSettings::CircuitMacrosDocumentSettings() { initialLineNumber = 3; initialText = ".PS\ncct_init\n\n\n.PE"; } cirkuit-0.4.3/src/backends/circuitmacros/circuitmacrosbackend.desktop000644 001750 001750 00000002275 11677601442 027674 0ustar00scarlettscarlett000000 000000 [Desktop Entry] Type=Service Icon=cirkuit Name=Circuit Macros Name[de]=Circuit-Makros Name[es]=Circuit Macros Name[et]=Vooluringimakrod Name[fr]=Circuit Macros Name[km]=Circuit Macros Name[nl]=Circuit Macros Name[pl]=Circuit Macros Name[pt]=Circuit Macros Name[pt_BR]=Circuit Macros Name[sv]=Circuit Macros Name[uk]=Макрос Circuit Name[x-test]=xxCircuit Macrosxx X-KDE-ServiceTypes=Cirkuit/Backend X-KDE-Library=cirkuit_circuitmacrosbackend X-KDE-PluginInfo-Name=circuitmacrosbackend X-KDE-PluginInfo-Depends= X-KDE-PluginInfo-License=GPL X-KDE-PluginInfo-Website=http://www.ece.uwaterloo.ca/~aplevich/Circuit_macros Comment=Backend for Circuit Macros Comment[es]=Motor para Circuit Macros Comment[et]=Vooluringimakrode taustaprogramm Comment[fr]=Moteur pour Circuit Macros Comment[km]=កម្មវិធី​ខាងក្រោយ​របស់ Circuit Macros Comment[nl]=Backend voor Circuit Macros Comment[pl]=Silnik dla Circuit Macros Comment[pt]=Infra-Estrutura do Circuit Macros Comment[pt_BR]=Infraestrutura para o Circuit Macros Comment[sv]=Gränssnitt för Circuit Macros Comment[uk]=Модуль обробки для макроса Circuit Comment[x-test]=xxBackend for Circuit Macrosxx cirkuit-0.4.3/src/backends/circuitmacros/dpiclogparser.cpp000644 001750 001750 00000003021 11677601442 025452 0ustar00scarlettscarlett000000 000000 /* Copyright (C) 2011 Matteo Agostinelli 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. */ #include "dpiclogparser.h" #include "command.h" using namespace Cirkuit; DpicLogParser::DpicLogParser(QObject* parent): LogParser(parent) { } bool DpicLogParser::parse(const QString& stdout, const QString& stderr) { Q_UNUSED(stderr); QRegExp pattern = QRegExp("dpic:.+ERROR.+"); QStringList logLines = stdout.split(QChar('\n')); int i = 0; QString logLine; while (i < logLines.count()) { logLine = logLines[i++]; if (logLine.contains(pattern)) { appendError(logLine + '\n'); appendError(logLines[i-3] + '\n'); break; } } if (!stdError().isEmpty()) { emit error(stdError()); return false; } return true; } cirkuit-0.4.3/src/backends/circuitmacros/templates/000755 001750 001750 00000000000 11677601442 024112 5ustar00scarlettscarlett000000 000000 cirkuit-0.4.3/src/backends/circuitmacros/templates/cm_latex.ckt000644 001750 001750 00000000434 11677601442 026412 0ustar00scarlettscarlett000000 000000 %%backend=circuitmacros%% \documentclass{article} \usepackage[utf8x]{inputenc} \usepackage{pstricks,pst-eps,graphicx,ifpdf,pst-grad,amsmath} \pagestyle{empty} \thispagestyle{empty} \begin{document} \newbox\graph \begin{TeXtoEPS} %%SOURCE%% \box \graph \end{TeXtoEPS} \end{document} cirkuit-0.4.3/src/backends/circuitmacros/templates/cm_tikz.ckt000644 001750 001750 00000000731 11677601442 026256 0ustar00scarlettscarlett000000 000000 %%backend=circuitmacros%% \documentclass{article} \usepackage[utf8x]{inputenc} \usepackage{tikz,amsmath} \usetikzlibrary{arrows,snakes,backgrounds,patterns,matrix,shapes,fit,calc,shadows,plotmarks} \usepackage[graphics,tightpage,active]{preview} \PreviewEnvironment{tikzpicture} \PreviewEnvironment{equation} \PreviewEnvironment{equation*} \newlength{\imagewidth} \newlength{\imagescale} \pagestyle{empty} \begin{document} \thispagestyle{empty} %%SOURCE%% \end{document} cirkuit-0.4.3/src/backends/circuitmacros/templates/CMakeLists.txt000644 001750 001750 00000000134 11677601442 026650 0ustar00scarlettscarlett000000 000000 install( FILES cm_tikz.ckt cm_latex.ckt DESTINATION ${DATA_INSTALL_DIR}/cirkuit/templates ) cirkuit-0.4.3/src/backends/circuitmacros/CMakeLists.txt000644 001750 001750 00000001461 11677601442 024656 0ustar00scarlettscarlett000000 000000 include_directories(${KDE4_INCLUDES} ${CMAKE_CURRENT_BINARY_DIR}) add_subdirectory (templates) set( CircuitMacrosBackend_SRCS dpiclogparser.cpp circuitmacrosbackend.cpp circuitmacrosdocumentsettings.cpp circuitmacrosgenerator.cpp settingswidget.cpp ) kde4_add_kcfg_files(CircuitMacrosBackend_SRCS GENERATE_MOC settings.kcfgc) install(FILES circuitmacrosbackend.kcfg DESTINATION ${KCFG_INSTALL_DIR}) kde4_add_ui_files(CircuitMacrosBackend_SRCS settings.ui) kde4_add_plugin( cirkuit_circuitmacrosbackend ${CircuitMacrosBackend_SRCS} ) target_link_libraries( cirkuit_circuitmacrosbackend ${KDE4_KDEUI_LIBS} ${KDE4_KIO_LIBS} cirkuitlibs) install( FILES circuitmacrosbackend.desktop DESTINATION ${SERVICES_INSTALL_DIR}/cirkuit) install(TARGETS cirkuit_circuitmacrosbackend DESTINATION ${PLUGIN_INSTALL_DIR}) cirkuit-0.4.3/src/backends/circuitmacros/circuitmacrosgenerator.h000644 001750 001750 00000002333 11677601442 027044 0ustar00scarlettscarlett000000 000000 /* Copyright (C) 2011 Matteo Agostinelli 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. */ #ifndef CIRCUITMACROSGENERATOR_H #define CIRCUITMACROSGENERATOR_H #include "generator.h" #include "format.h" class CircuitMacrosGenerator : public Cirkuit::Generator { Q_OBJECT public: explicit CircuitMacrosGenerator(Cirkuit::Backend* backend = 0, QObject* parent = 0); virtual ~CircuitMacrosGenerator(); virtual bool convert(const Cirkuit::Format& in, const Cirkuit::Format& out); }; #endif // CIRCUITMACROSGENERATOR_H cirkuit-0.4.3/src/backends/CMakeLists.txt000644 001750 001750 00000000202 11677601442 021777 0ustar00scarlettscarlett000000 000000 add_subdirectory(null) add_subdirectory(circuitmacros) add_subdirectory(tikz) add_subdirectory(gnuplot) add_subdirectory(pstricks)cirkuit-0.4.3/src/mainwindow.cpp000644 001750 001750 00000057001 11677601442 020356 0ustar00scarlettscarlett000000 000000 /************************************************************************** * Copyright (C) 2011 by Matteo Agostinelli * * agostinelli@gmail.com * * * * 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. * ***************************************************************************/ #include "mainwindow.h" #include "cirkuitsettings.h" #include "circuitmacrosmanager.h" #include "generatorthread.h" #include "ui_cirkuit_general_settings.h" #include "lib/document.h" #include "lib/backend.h" #include "lib/format.h" #include "lib/generator.h" #include "lib/documenttemplate.h" #include "widgets/previewwidget.h" #include "widgets/imageview.h" #include "widgets/logviewwidget.h" #include "widgets/backendchoosedialog.h" #include "widgets/templatechoosedialog.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 #ifdef ENABLE_KMESSAGEWIDGET #include "widgets/widgetfloater.h" #include #else #include #endif #include #include #include #include #include #include MainWindow::MainWindow(QWidget *) { KTextEditor::Editor *editor = KTextEditor::EditorChooser::editor(); if (!editor) { KMessageBox::error(this, i18n("A KDE text-editor component could not be found;\n" "please check your KDE installation.")); kapp->exit(1); } m_doc = (Cirkuit::Document*) (editor->createDocument(0)); m_doc->initialize(); m_view = qobject_cast(m_doc->createView(this)); m_previewWidget = new PreviewWidget(i18n("Preview"), this); m_previewWidget->setObjectName("preview-dock"); m_imageView = m_previewWidget->view(); addDockWidget(Qt::TopDockWidgetArea, m_previewWidget); #ifdef ENABLE_KMESSAGEWIDGET m_messageWidget = 0; #else statusBar()->showMessage(i18n("Ready"), 3000); #endif m_logViewWidget = new LogViewWidget(i18n("Log"), this); m_logViewWidget->setObjectName("log-dock"); addDockWidget(Qt::BottomDockWidgetArea, m_logViewWidget); m_logViewWidget->hide(); mimeTypes << "application/x-cirkuit" << "text/x-tex" << "application/x-gnuplot"; m_currentFile = KUrl(""); updateTitle(); setCentralWidget(m_view); setAutoSaveSettings(); setupActions(); setXMLFile("cirkuitui.rc"); createShellGUI(true); guiFactory()->addClient(m_view); m_view->setContextMenu(qobject_cast (factory()->container("ktexteditor_popup", this))); m_generator = new GeneratorThread; m_updateTimer = 0; updateConfiguration(); connect(m_generator, SIGNAL(success()), this, SLOT(builtNotification())); connect(m_generator, SIGNAL(fail()), this, SLOT(failedNotification())); connect(m_doc, SIGNAL(modifiedChanged(KTextEditor::Document*)), this, SLOT(documentModified(KTextEditor::Document*))); connect(m_generator, SIGNAL(previewReady(QImage)), this, SLOT(showPreview(QImage))); connect(m_generator, SIGNAL(fileReady(QString)), this, SLOT(saveFileToDisk(QString))); connect(m_generator, SIGNAL(error(QString,QString)), m_logViewWidget, SLOT(displayError(QString,QString))); connect(m_generator, SIGNAL(output(QString,QString)), m_logViewWidget, SLOT(displayMessage(QString,QString))); connect(m_generator, SIGNAL(previewUrl(QString)), m_imageView, SLOT(setPdfUrl(QString))); connect(m_generator, SIGNAL(backendChanged(QString)), this, SLOT(backendChanged(QString))); checkCircuitMacros(); initializeBackend(); newDocument(); } void MainWindow::setupActions() { // re-connect save and save as QAction* action = m_view->actionCollection()->action(KStandardAction::name(KStandardAction::Save)); action->disconnect(SIGNAL(triggered(bool))); connect(action, SIGNAL(triggered()), this, SLOT(save())); action = m_view->actionCollection()->action(KStandardAction::name(KStandardAction::SaveAs)); action->disconnect(SIGNAL(triggered(bool))); connect(action, SIGNAL(triggered()), this, SLOT(saveAs())); KStandardAction::openNew(this, SLOT(newFile()), actionCollection()); KStandardAction::quit(this, SLOT(close()), actionCollection()); KStandardAction::open(this, SLOT(openFile()), actionCollection()); KStandardAction::close(this, SLOT(newDocument()), actionCollection()); KStandardAction::clear(this, SLOT(clear()), actionCollection()); KStandardAction::preferences(this, SLOT(configure()), actionCollection()); KStandardAction::keyBindings(this, SLOT(configureKeyBindings()), actionCollection()); KStandardAction::configureToolbars(this, SLOT(configureToolbars()), actionCollection()); recentFilesAction = KStandardAction::openRecent(this, SLOT(loadFile(KUrl)), actionCollection()); KAction* exportAction = new KAction(KIcon("document-export"), i18n("Export..."), 0); actionCollection()->addAction("export", exportAction); connect(exportAction, SIGNAL(triggered()), this, SLOT(exportFile())); KAction* buildPreviewAction = new KAction(i18n("Build preview"), 0); buildPreviewAction->setShortcut(Qt::ALT + Qt::Key_1); buildPreviewAction->setIcon(KIcon("run-build")); actionCollection()->addAction("build_preview", buildPreviewAction); connect(buildPreviewAction, SIGNAL(triggered()), this, SLOT(buildPreview())); KAction* openPreviewAction = new KAction(i18n("Open preview"), 0); openPreviewAction->setShortcut(Qt::ALT + Qt::Key_2); openPreviewAction->setIcon(KIcon("document-preview")); actionCollection()->addAction("open_preview", openPreviewAction); connect(openPreviewAction, SIGNAL(triggered()), this, SLOT(openPreview())); KAction* templateManagerAction = new KAction(i18n("Template manager"), 0); actionCollection()->addAction("template_manager", templateManagerAction); connect(templateManagerAction, SIGNAL(triggered()), this, SLOT(openTemplateManager())); KAction* showManualAction = new KAction(KIcon("help-contents"), i18n("Show manual"),0); actionCollection()->addAction( "showManual", showManualAction ); connect(showManualAction, SIGNAL(triggered()), this, SLOT(showManual())); KAction* showExamplesAction = new KAction(i18n("Show examples"),0); actionCollection()->addAction( "showExamples", showExamplesAction ); connect(showExamplesAction, SIGNAL(triggered()), this, SLOT(showExamples())); QAction* showLivePreviewAction = m_previewWidget->toggleViewAction(); showLivePreviewAction->setIcon(KIcon("document-preview")); actionCollection()->addAction( "show_live_preview", showLivePreviewAction ); KAction* downloadExamples = new KAction(i18n("Download Examples"), actionCollection()); downloadExamples->setIcon(KIcon("get-hot-new-stuff")); actionCollection()->addAction("download_examples", downloadExamples); connect(downloadExamples, SIGNAL(triggered()), this, SLOT(downloadExamples())); KAction* uploadExample = new KAction(i18n("Upload Example"), actionCollection()); uploadExample->setIcon(KIcon("get-hot-new-stuff")); actionCollection()->addAction("upload_example", uploadExample); connect(uploadExample, SIGNAL(triggered()), this, SLOT(uploadExample())); KAction* openExample =new KAction(i18n("&Open Example"), actionCollection()); openExample->setIcon(KIcon("document-open")); actionCollection()->addAction("file_open_example", openExample); connect(openExample, SIGNAL(triggered()), this, SLOT(openExample())); QAction* showLogViewAction = m_logViewWidget->toggleViewAction(); actionCollection()->addAction( "show_log_view", showLogViewAction ); showLogViewAction->setIcon(KIcon("documentation")); KConfig *config = CirkuitSettings::self()->config(); recentFilesAction->loadEntries(config->group("recent_files")); m_imageView->setupActions(actionCollection()); m_imageView->zoomFitPageAction()->setChecked(CirkuitSettings::zoomToFit()); m_imageView->updateZoomToFit(); } void MainWindow::clear() { m_doc->clear(); } void MainWindow::newFile() { QPointer dlg = new BackendChooseDialog(CirkuitSettings::defaultBackend(), this); connect(dlg, SIGNAL(backendSelected(QString)), this, SLOT(newDocument(QString))); connect(dlg, SIGNAL(defaultBackendSelected(QString)), this, SLOT(setDefaultBackend(QString))); dlg->exec(); delete dlg; } void MainWindow::openFile() { QString filename; QPointer openFileDialog = new KFileDialog(KUrl(), "", this); openFileDialog->setWindowTitle(i18n("Open file - Cirkuit")); openFileDialog->setOperationMode(KFileDialog::Opening); openFileDialog->setMimeFilter(mimeTypes); if (openFileDialog->exec() == QDialog::Accepted) { filename = openFileDialog->selectedFile(); } if (!filename.isEmpty()) { m_imageView->clear(); recentFilesAction->addUrl(KUrl(filename)); loadFile(filename); } } void MainWindow::loadFile(const KUrl& url) { m_currentFile = url; m_view->document()->openUrl(url); m_imageView->clear(); m_firstRun = true; m_backend = Cirkuit::Backend::autoChooseBackend(m_doc); buildPreview(); updateTitle(); } void MainWindow::save() { if (m_currentFile.isEmpty()) { saveAs(); return; } m_doc->save(); if (CirkuitSettings::refreshOnSave()) { buildPreview(); } } void MainWindow::saveAs() { QString filename; QPointer saveFileDialog = new KFileDialog(KUrl(), "", this); saveFileDialog->setWindowTitle(i18n("Save file - Cirkuit")); saveFileDialog->setOperationMode(KFileDialog::Saving); saveFileDialog->setMimeFilter(mimeTypes, "application/x-cirkuit"); saveFileDialog->setConfirmOverwrite(true); if (saveFileDialog->exec() == QDialog::Accepted) { filename = saveFileDialog->selectedFile(); } if (!filename.isEmpty()) { saveAsFile(filename); } } void MainWindow::saveAsFile(const KUrl& url) { if (CirkuitSettings::refreshOnSave()) { buildPreview(); } m_doc->saveAs(url); recentFilesAction->addUrl(url); m_currentFile = url; updateTitle(); } void MainWindow::exportFile() { QString path; QStringList exportTypes; exportTypes << "application/pdf" << "image/x-eps" << "image/png" << "image/jpeg" << "image/svg+xml" << "image/gif" << "text/x-tex"; QPointer saveFileDialog = new KFileDialog(KUrl(), "", this); saveFileDialog->setWindowTitle(i18n("Export image - Cirkuit")); saveFileDialog->setStartDir(m_currentFile.directory()); saveFileDialog->setOperationMode(KFileDialog::Saving); saveFileDialog->setMimeFilter(exportTypes, "application/pdf"); saveFileDialog->setInlinePreviewShown(true); saveFileDialog->setConfirmOverwrite(true); if (saveFileDialog->exec() == QDialog::Accepted) { path = saveFileDialog->selectedFile(); } if (!path.isEmpty()) { QFileInfo fileinfo(path); Cirkuit::Format format = Cirkuit::Format::fromMimeType(saveFileDialog->currentFilterMimeType()); m_generator->generate(Cirkuit::Format::Source, format, m_backend, m_doc, true); m_tempSavePath = path; QFile oldFile(path); oldFile.remove(); } } void MainWindow::documentModified(KTextEditor::Document* doc) { setWindowModified(doc->isModified()); } void MainWindow::closeEvent(QCloseEvent *event) { KConfig *config = CirkuitSettings::self()->config(); recentFilesAction->saveEntries(config->group("recent_files")); CirkuitSettings::setZoomToFit(m_imageView->zoomFitPageAction()->isChecked()); CirkuitSettings::self()->writeConfig(); if (!m_doc->closeUrl()) { event->ignore(); } else { event->accept(); } } void MainWindow::buildPreview() { if (m_updateTimer) { m_updateTimer->stop(); } QString msg = i18n("Generating preview"); #ifdef ENABLE_KMESSAGEWIDGET delete m_messageWidget; m_messageWidget = new KMessageWidget; m_messageWidget->setMessageType(KMessageWidget::Information); m_messageWidget->setText(msg); showMessage(m_messageWidget); #else statusBar()->showMessage(msg); #endif m_logViewWidget->clear(); m_logViewWidget->hide(); m_generator->generate(Cirkuit::Format::Source, Cirkuit::Format::QtImage, m_backend, m_doc, false, m_imageView->scaleFactor()); kDebug() << "Preview generation in progress..."; } void MainWindow::openPreview() { connect(m_generator, SIGNAL(finished()), this, SLOT(openPreviewFile())); buildPreview(); } void MainWindow::openPreviewFile() { disconnect(m_generator, SIGNAL(finished()), this, SLOT(openPreviewFile())); KUrl url = m_generator->previewUrl(); if (!url.isLocalFile()) { return; } KRun::runUrl(url, "application/pdf", this); } void MainWindow::builtNotification() { #ifdef ENABLE_KMESSAGEWIDGET m_messageWidget->animatedHide(); #else statusBar()->showMessage(i18n("Preview built"), 3000);; #endif } void MainWindow::newDocument(const QString& backendName) { if (!backendName.isEmpty()) { Cirkuit::Backend* newBackend = Cirkuit::Backend::getBackend(backendName); if (!newBackend) { KMessageBox::error(this, i18n("Backend %1 not found", backendName)); return; } else { m_backend = newBackend; backendChanged(m_backend->name()); } } if (!m_backend) { KMessageBox::error(this, i18n("No valid backend selected.")); return; } m_doc->applySettings(m_backend->documentSettings()); if (!m_doc->closeUrl()) { return; } reset(); m_doc->setText(m_doc->initialText()); KTextEditor::Cursor cursor = m_view->cursorPosition(); cursor.setLine(m_doc->initialLineNumber()); m_view->setCursorPosition(cursor); m_doc->setModified(false); } void MainWindow::updateTitle() { m_windowTitle = "Cirkuit"; if (!m_currentFile.isEmpty()) { m_windowTitle += " - " + m_currentFile.fileName(); } m_windowTitle += "[*]"; setWindowTitle(m_windowTitle); } void MainWindow::reset() { m_currentFile = ""; m_doc->clear(); m_imageView->clear(); m_firstRun = true; updateTitle(); } void MainWindow::configure() { if ( KConfigDialog::showDialog( "settings" ) ) { return; } KConfigDialog dialog(this, "settings", CirkuitSettings::self() ); QWidget* confWdg = new QWidget(&dialog); Ui::CirkuitGeneralForm s; s.setupUi(confWdg); s.kcfg_DefaultBackend->addItems(Cirkuit::Backend::listAvailableBackends()); dialog.addPage( confWdg, i18n("General"), "configure" ); foreach (Cirkuit::Backend* b, Cirkuit::Backend::availableBackends()) { dialog.addPage(b->settingsWidget(&dialog), b->config(), b->name(), b->icon() ); } connect(&dialog, SIGNAL(settingsChanged(QString)), this, SLOT(updateConfiguration())); dialog.exec(); } void MainWindow::updateConfiguration() { delete m_updateTimer; if (CirkuitSettings::autoRefresh()) { m_updateTimer = new QTimer; m_updateTimer->setSingleShot(true); connect(m_updateTimer, SIGNAL(timeout()), this, SLOT(buildPreview())); connect(m_doc, SIGNAL(textChanged(KTextEditor::Document*)), m_updateTimer, SLOT(start())); m_updateTimer->setInterval(CirkuitSettings::refreshInterval()*1000); } else { m_updateTimer = 0; } m_backend = Cirkuit::Backend::getBackend(CirkuitSettings::defaultBackend()); } void MainWindow::showManual() { openHelpUrl(m_backend->helpUrl()); } void MainWindow::showExamples() { openHelpUrl(m_backend->examplesUrl()); } void MainWindow::openHelpUrl(const KUrl& url) { QString type; if (url.isLocalFile()) { type = KMimeType::findByUrl(url).constData()->name(); } else { type = KIO::NetAccess::mimetype(url, this); } KRun::runUrl(url, type, this); } void MainWindow::checkCircuitMacros() { cmm = new CircuitMacrosManager; connect(cmm, SIGNAL(newVersionAvailable(QString)), this, SLOT(askIfUpgrade(QString))); connect(cmm, SIGNAL(configured()), this, SLOT(circuitMacrosConfigured())); if (cmm->checkExistence()) { kDebug() << "Circuit macros found!"; kDebug() << QString("version %1").arg(cmm->installedVersion()); cmm->checkOnlineVersion(); } else { kDebug() << "Circuit macros NOT found!!!!"; if (KMessageBox::questionYesNo(this, i18n("Circuit Macros could not be found on your system. The application will not work if the macros are not installed. Do you want to proceed with the installation?"), i18n("Installation needed")) == KMessageBox::Yes) { cmm->downloadLatest(); #ifdef ENABLE_KMESSAGEWIDGET delete m_messageWidget; m_messageWidget = new KMessageWidget(m_imageView); m_messageWidget->setMessageType(KMessageWidget::Information); m_messageWidget->setText(i18n("Downloading Circuit Macros. Please wait...")); showMessage(m_messageWidget); #endif } } } void MainWindow::askIfUpgrade(const QString& version) { if (KMessageBox::questionYesNo(this, i18n("A new version of Circuit Macros (version %1) is available. Do you want to upgrade?", version), i18n("Upgrade")) == KMessageBox::Yes) { cmm->downloadLatest(); } } void MainWindow::circuitMacrosConfigured() { #ifdef ENABLE_KMESSAGEWIDGET if (m_messageWidget) { m_messageWidget->animatedHide(); } #endif } void MainWindow::failedNotification() { m_imageView->setImage(QImage()); QString msg = i18n("Unable to generate a preview for the current input"); #ifdef ENABLE_KMESSAGEWIDGET delete m_messageWidget; m_messageWidget = new KMessageWidget(m_imageView); m_messageWidget->setMessageType(KMessageWidget::Error); m_messageWidget->setText(msg); showMessage(m_messageWidget); #else statusBar()->showMessage(msg, 5000); #endif } void MainWindow::showPreview(const QImage& image) { m_imageView->setImage(image, m_firstRun); m_firstRun = false; } void MainWindow::saveFileToDisk(const QString& path) { kDebug() << "Copying " << path << " to " << m_tempSavePath; QFile::copy(path, m_tempSavePath); kDebug() << "File successfully exported"; } void MainWindow::initializeBackend() { kDebug() << Cirkuit::Backend::listAvailableBackends(); m_backend = Cirkuit::Backend::getBackend(CirkuitSettings::defaultBackend()); if (!m_backend) { kDebug() << "The default backend has not been found"; if (Cirkuit::Backend::listAvailableBackends().count() < 1) { kDebug() << "No backends available..."; KMessageBox::error(this, i18n("No working backend has been found. Cirkuit is unable to generate any figure."), i18n("No backends found")); return; } else { // try falling back to the first available backend m_backend = Cirkuit::Backend::getBackend(Cirkuit::Backend::listAvailableBackends().at(0)); if (!m_backend) { // this shouldn't happen return; } } } backendChanged(m_backend->name()); m_firstRun = true; } void MainWindow::setDefaultBackend(const QString& backend) { CirkuitSettings::setDefaultBackend(backend); } void MainWindow::configureKeyBindings() { KShortcutsDialog::configure(actionCollection()); } void MainWindow::configureToolbars() { KParts::MainWindow::configureToolbars(); } void MainWindow::backendChanged(const QString& backendName) { actionCollection()->action("showManual")->setText(i18n("%1 manual", backendName)); actionCollection()->action("showExamples")->setText(i18n("%1 examples", backendName)); } void MainWindow::downloadExamples() { QPointer dialog = new KNS3::DownloadDialog("cirkuit_example.knsrc"); dialog->exec(); foreach (const KNS3::Entry& e, dialog->changedEntries()) { kDebug() << "Changed Entry: " << e.name(); } } void MainWindow::uploadExample() { kDebug() << "Uploading to GHNS: " << m_currentFile; if (!m_currentFile.isLocalFile()) { kDebug() << "Trying to save the file first ..."; KMessageBox::error(this, i18n("Save the current document before uploading it")); return; } KNS3::UploadDialog dialog("cirkuit_example.knsrc"); dialog.setUploadFile(m_currentFile); dialog.setUploadName("A simple circuit schematic"); dialog.exec(); } void MainWindow::openExample() { QString dir = KStandardDirs::locateLocal("appdata", "examples"); if (dir.isEmpty()) return; KStandardDirs::makeDir(dir); QPointer dlg=new KDialog(this); QFileSystemModel* model = new QFileSystemModel; model->setRootPath(dir); QListView *list = new QListView(dlg); list->setModel(model); list->setRootIndex(model->index(dir)); list->setSelectionMode(QAbstractItemView::SingleSelection); dlg->setMainWidget(list); if (dlg->exec() == QDialog::Accepted && list->currentIndex().isValid()) { loadFile(model->filePath(list->currentIndex())); } delete list; delete dlg; } void MainWindow::openTemplateManager() { KConfigSkeletonItem* urlItem = m_backend->configTemplateUrl(); if (!urlItem) return; TemplateChooseDialog dlg(m_backend->id()); if (dlg.exec() == QDialog::Accepted && !dlg.selectedFile().isEmpty()) { urlItem->setProperty(dlg.selectedFile()); m_backend->config()->writeConfig(); } } #ifdef ENABLE_KMESSAGEWIDGET void MainWindow::showMessage(KMessageWidget* messageWidget) { WidgetFloater* floater = new WidgetFloater(m_imageView); floater->setChildWidget(messageWidget); floater->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter); messageWidget->animatedShow(); } #endif cirkuit-0.4.3/src/cirkuitsettings.kcfgc000644 001750 001750 00000000112 11677601442 021717 0ustar00scarlettscarlett000000 000000 File=cirkuit.kcfg ClassName=CirkuitSettings Singleton=true Mutators=truecirkuit-0.4.3/src/CMakeLists.txt000644 001750 001750 00000003443 11677601442 020237 0ustar00scarlettscarlett000000 000000 project(cirkuit) find_package(KDE4 REQUIRED) find_package(Poppler REQUIRED) include_directories(${KDE4_INCLUDES} ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_BINARY_DIR}/widgets ${QT_QTNETWORK_INCLUDE_DIR} ${POPPLER_INCLUDE_DIR}) if( ${KDE_VERSION} VERSION_EQUAL "4.7" OR ${KDE_VERSION} VERSION_GREATER "4.7" ) MESSAGE( STATUS "Configuring Message Widget for KDE SC >= 4.7" ) add_definitions(-DENABLE_KMESSAGEWIDGET) else( ${KDE_VERSION} VERSION_EQUAL "4.7" OR ${KDE_VERSION} VERSION_GREATER "4.7" ) MESSAGE( STATUS "Disabling Message Widget for KDE SC < 4.7" ) endif( ${KDE_VERSION} VERSION_EQUAL "4.7" OR ${KDE_VERSION} VERSION_GREATER "4.7" ) CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h) add_subdirectory( mimetypes ) add_subdirectory( syntax ) add_subdirectory( lib ) include_directories( lib ${CMAKE_CURRENT_BINARY_DIR}/lib) add_subdirectory( backends ) add_subdirectory( widgets ) set(cirkuit_SRCS main.cpp mainwindow.cpp circuitmacrosmanager.cpp generatorthread.cpp renderthread.cpp ) kde4_add_kcfg_files(cirkuit_SRCS GENERATE_MOC cirkuitsettings.kcfgc) kde4_add_ui_files(cirkuit_SRCS cirkuit_general_settings.ui) kde4_add_executable(cirkuit ${cirkuit_SRCS}) target_link_libraries(cirkuit ${KDE4_KDEUI_LIBS} ${KDE4_KIO_LIBS} ${KDE4_KTEXTEDITOR_LIBS} ${KDE4_KNEWSTUFF3_LIBS} ${POPPLER_LIBRARY} cirkuitlibs cirkuitwidgets) install(TARGETS cirkuit ${INSTALL_TARGETS_DEFAULT_ARGS}) install(FILES cirkuitui.rc DESTINATION ${DATA_INSTALL_DIR}/cirkuit) install(FILES cirkuit.kcfg DESTINATION ${KCFG_INSTALL_DIR}) install(FILES cirkuit_example.knsrc cirkuit_template.knsrc DESTINATION ${CONFIG_INSTALL_DIR} ) install( FILES cirkuit.notifyrc DESTINATION ${DATA_INSTALL_DIR}/cirkuit) install (PROGRAMS cirkuit.desktop DESTINATION ${XDG_APPS_INSTALL_DIR}) cirkuit-0.4.3/src/cirkuit_template.knsrc000644 001750 001750 00000000210 11677601442 022073 0ustar00scarlettscarlett000000 000000 [KNewStuff3] Categories=Cirkuit Template UploadCategories=Cirkuit Template TargetDir=cirkuit/templates Uncompress=never CustomName=true cirkuit-0.4.3/src/lib/000755 001750 001750 00000000000 11677601442 016241 5ustar00scarlettscarlett000000 000000 cirkuit-0.4.3/src/lib/backend.cpp000644 001750 001750 00000011774 11677601442 020346 0ustar00scarlettscarlett000000 000000 /* Copyright (C) 2009 Alexander Rieder Copyright (C) 2011 Matteo Agostinelli 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. */ #include "backend.h" #include "document.h" #include #include #include #include #include #include #include class Cirkuit::BackendPrivate { public: QString name; QString comment; QString icon; KUrl url; }; using namespace Cirkuit; static QList backendCache = QList(); Backend::Backend(QObject* parent, const QList& args): QObject(parent), d(new BackendPrivate) { Q_UNUSED(args); } Backend::~Backend() { delete d; } bool Backend::checkRequirements() const { return false; } QString Backend::name() const { return d->name; } QString Backend::comment() const { return d->comment; } QString Backend::description() const { return comment(); } QString Backend::icon() const { return d->icon; } KUrl Backend::url() const { return d->url; } KUrl Backend::helpUrl() const { return KUrl(); } KUrl Backend::examplesUrl() const { return KUrl(); } bool Backend::operator==(const QString& rhs) const { return QString::compare(id(), rhs, Qt::CaseInsensitive) == 0 || QString::compare(name(), rhs, Qt::CaseInsensitive) == 0; } QWidget* Backend::settingsWidget(QWidget* parent) const { Q_UNUSED(parent) return 0; } KConfigSkeleton* Backend::config() const { return 0; } KConfigSkeletonItem* Backend::configTemplateUrl() const { if (!config()) return 0; return config()->findItem("templateurl"); } QStringList Backend::listAvailableBackends() { QList backends=availableBackends(); QStringList l; foreach (Backend* b, backends) { if (b->checkRequirements()) { l << b->name(); } } return l; } QList Backend::availableBackends() { //if we already have all backends Cached, just return the cache. //otherwise create the available backends if (!backendCache.isEmpty()) { return backendCache; } KService::List services; KServiceTypeTrader* trader = KServiceTypeTrader::self(); services = trader->query("Cirkuit/Backend"); KService::List::const_iterator iter; for (iter = services.begin(); iter < services.end(); ++iter) { QString error; KService::Ptr service = *iter; KPluginFactory *factory = KPluginLoader(service->library()).factory(); if (!factory) { kError(5001) << "error: " << error; continue; } Backend* backend = factory->create(0); if (!backend) { kDebug() << "error: " << error; continue; } KPluginInfo info(service); backend->d->name = info.name(); backend->d->comment = info.comment(); backend->d->icon = info.icon(); backend->d->url = info.website(); backendCache << backend; } return backendCache; } Backend* Backend::getBackend(const QString& name) { QList backends = availableBackends(); foreach(Backend* b, backends) { if (*b == name) { return b; } } return 0; } Cirkuit::DocumentSettings* Cirkuit::Backend::documentSettings() const { return 0; } Generator* Backend::generator() const { return 0; } QStringList Backend::identifyingWords() const { QStringList words; return words; } float Backend::identifyIndex(Cirkuit::Document* doc) const { if (identifyingWords().count() < 1) { return 0.0; } int total = 0; int hits = 0; foreach (const QString& word, identifyingWords()) { if (doc->text().contains(word, Qt::CaseInsensitive)) ++hits; ++total; } return (1.00*hits)/total; } Cirkuit::Backend* Cirkuit::Backend::autoChooseBackend(Document* doc) { Backend* bb = getBackend("null"); float best = 0.0; foreach (Backend* b, availableBackends()) { float index = b->identifyIndex(doc); kDebug() << "Identify index for backend " << b->name() << " = " << index; if (index > best) { bb = b; best = index; } } kDebug() << "And the winner is ... " << bb->name(); return bb; } cirkuit-0.4.3/src/lib/generator.cpp000644 001750 001750 00000022161 11677601442 020735 0ustar00scarlettscarlett000000 000000 /*************************************************************************** * Copyright (C) 2011 by Matteo Agostinelli * * agostinelli@gmail.com * * * * 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. * ***************************************************************************/ #include "generator.h" #include "backend.h" #include "format.h" #include "document.h" #include "command.h" #include #include #include #include #include using namespace Cirkuit; class Cirkuit::GeneratorPrivate { public: GeneratorPrivate() { backend = 0; tempFile = 0; tempFileInfo = 0; resolution = 300; } Backend* backend; KTemporaryFile* tempFile; QFileInfo* tempFileInfo; Document* document; int resolution; }; Cirkuit::Generator::Generator(Cirkuit::Backend* backend, QObject* parent): QObject(parent), d(new GeneratorPrivate) { d->backend = backend; createTempFiles(); } Cirkuit::Generator::~Generator() { delete d; } KUrl Cirkuit::Generator::workingDir() { return KUrl::fromPath(KStandardDirs::locateLocal("tmp", "cirkuit/build/", true)); } void Cirkuit::Generator::createTempFiles(const QString& suffix) { delete d->tempFile; delete d->tempFileInfo; d->tempFile = new KTemporaryFile; d->tempFile->setPrefix(workingDir().path(KUrl::AddTrailingSlash)); d->tempFile->setSuffix(suffix); d->tempFile->open(); d->tempFileInfo = new QFileInfo(d->tempFile->fileName()); } bool Cirkuit::Generator::formatExists(const Cirkuit::Format& format) const { if (d->tempFileInfo == 0) { return false; } KUrl formatUrl = workingDir(); formatUrl.addPath(d->tempFileInfo->baseName() + format.extension()); return KIO::NetAccess::exists(formatUrl, KIO::NetAccess::SourceSide, 0); } QString Cirkuit::Generator::formatPath(const Cirkuit::Format& format) const { KUrl url = workingDir(); QString filename; if (format.type() == Format::Png || format.type() == Format::Jpeg || format.type() == Format::Ppm) { filename = QString("%1-1%2").arg(d->tempFileInfo->baseName()).arg(format.extension()); } else { filename = QString("%1%2").arg(d->tempFileInfo->baseName()).arg(format.extension()); } url.addPath(filename); return url.path(); } void Generator::setDocument(Document* doc) { d->document = doc; } void Generator::setResolution(int resolution) { d->resolution = resolution; } Document* Generator::document() const { return d->document; } int Generator::resolution() const { return d->resolution; } bool Generator::execute(Cirkuit::Command* c) { c->setWorkingDirectory(workingDir().path()); connect(c, SIGNAL(newStandardError(QString,QString)), this, SIGNAL(error(QString,QString))); kDebug() << "Executing " << c->name() << " with arguments " << c->args(); if (!c->execute()) { kDebug() << c->name() << " failed"; emit fail(); return false; } kDebug() << c->name() << " executed correctly"; emit output(c->name(), c->stdOutput()); return true; } bool Cirkuit::Generator::convert(const Cirkuit::Format& in, const Cirkuit::Format& out) { kDebug() << "Inside the converter..." << "in: " << in.type() << " " << in.extension() << ", out: " << out.type() << " " << out.extension(); // this class doesn't know how to convert from source if (in == Format::Source || out == Format::Source || out == Format::Dvi) { kDebug() << "Cannot convert from or to source/DVI"; return false; } // Check that input and output formats are different if (in == out) { return true; } if (out == Format::QtImage) { return convert(in, Format::Pdf); } if (in == Format::Dvi) { if (out == Format::Postscript) { QStringList args; args << formatPath(in) << "-q" << QString("-o %1").arg(formatPath(Format::Postscript)); return execute(new Command("dvips", "", args, this)); } else if (out == Format::Eps) { QStringList args; args << "-E" << formatPath(in) << "-q" << "-o" << formatPath(Format::Eps); return execute(new Command("dvips", "", args, this)); } else { bool b = true; if (!convert(in,Format::Eps)) b = false; if (!convert(Format::Eps,out)) b = false; return b; } } if (in == Format::Postscript) { if (out == Format::Eps) { QStringList args; args << formatPath(in) << formatPath(Format::Eps); return execute(new Command("ps2epsi", "", args, this)); } else if (out == Format::Pdf) { QStringList args; args << formatPath(in) << formatPath(Format::Pdf); return execute(new Command("ps2pdf", "", args, this)); } else if (out == Format::Png) { bool b = true; if (!convert(in,Format::Eps)) b = false; if (!convert(Format::Eps,Format::Png)) b = false; return b; } else { return false; } } if (in == Format::Eps) { if (out == Format::Postscript) { QStringList args; args << formatPath(in) << formatPath(Format::Postscript); return execute(new Command("ps2ps", "", args, this)); } else if (out == Format::Pdf) { QStringList args; args << formatPath(in);// << QString("--outfile=%1").arg(formatPath(Pdf)); return execute(new Command("epstopdf", "", args, this)); } else { bool b = true; if (!convert(in,Format::Pdf)) b = false; if (!convert(Format::Pdf,out)) b = false; return b; } } if (in == Format::Pdf) { if (out == Format::Svg) { QStringList args; args << formatPath(in) << formatPath(Format::Svg); return execute(new Command("pdf2svg", "", args, this)); } else if (out == Format::Png) { QStringList args; args << "-png" << "-r" << QString::number(d->resolution) << formatPath(in) << d->tempFileInfo->baseName(); return execute(new Command("pdftoppm", "", args, this)); } else if (out == Format::Jpeg) { QStringList args; args << "-jpeg" << "-r" << QString::number(d->resolution) << formatPath(in) << d->tempFileInfo->baseName(); return execute(new Command("pdftoppm", "", args, this)); } else if (out == Format::Gif) { bool b = true; if (!convert(in,Format::Ppm)) b = false; if (!convert(Format::Ppm,out)) b = false; return b; } else if (out == Format::Ppm) { QStringList args; args << "-r" << QString::number(d->resolution) << formatPath(in) << d->tempFileInfo->baseName(); return execute(new Command("pdftoppm", "", args, this)); } else if (out == Format::Eps) { QStringList args; args << "-eps" << formatPath(in) << formatPath(out); return execute(new Command("pdftops", "", args, this)); } else if (out == Format::Postscript) { QStringList args; args << formatPath(in) << formatPath(out); return execute(new Command("pdftops", "", args, this)); } } if (in == Format::Ppm) { if (out == Format::Gif) { QStringList args; args << formatPath(Format::Ppm) << formatPath(Format::Gif); return execute(new Command("convert", "", args, this)); } } return false; } bool Cirkuit::Generator::generate(Document* doc, const Cirkuit::Format& format) { setDocument(doc); return convert(Format::Source, format); } Cirkuit::Backend* Cirkuit::Generator::backend() const { return d->backend; } KTemporaryFile* Cirkuit::Generator::tempFile() const { return d->tempFile; } QFileInfo* Cirkuit::Generator::tempFileInfo() const { return d->tempFileInfo; } cirkuit-0.4.3/src/lib/logparser.h000644 001750 001750 00000005445 11677601442 020420 0ustar00scarlettscarlett000000 000000 /* Copyright (C) 2011 Matteo Agostinelli 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. */ #ifndef LOGPARSER_H #define LOGPARSER_H #include "cirkuit_export.h" #include namespace Cirkuit { class LogParserPrivate; class Command; /** * The LogParser class analyzes the output (standard output and standard error) * of a command and tries to interpret it and extract errors and messages. * * @author Matteo Agostinelli */ class CIRKUIT_EXPORT LogParser: public QObject { Q_OBJECT public: /** * Default constructor */ explicit LogParser(QObject* parent = 0); ~LogParser(); public slots: /** * Parse a command (which is already executed) * @param c the command * @returns true if there are no errors */ bool parse(Command* c); /** * Overloaded function that takes the standard output and errors as inputs * @param stdout the standard output of a command * @param stderr the standard error of a command * @returns true if there are no errors */ virtual bool parse(const QString& stdout, const QString& stderr = QString()); /** * Appends a new message to the error log * @param msg the message */ void appendError(const QString& msg); /** * Appends a new message to the output log * @param msg the message */ void appendMessage(const QString& msg); /** * Returns the current error log */ QString stdError() const; /** * Returns the current output log */ QString stdOutput() const; signals: /** * Signal emitted when a new (non critical) message is extracted */ void message(const QString&); /** * Signal emitted when a critical error has been found */ void error(const QString&); protected: LogParserPrivate* d; }; /** * The default LaTeX parser */ class CIRKUIT_EXPORT LatexLogParser: public LogParser { Q_OBJECT public: explicit LatexLogParser(QObject* parent = 0); public slots: bool parse(const QString& stdout, const QString& stderr = QString()); }; } #endif // LOGPARSER_H cirkuit-0.4.3/src/lib/backend.h000644 001750 001750 00000014574 11677601442 020014 0ustar00scarlettscarlett000000 000000 /* Copyright (C) 2009 Alexander Rieder Copyright (C) 2011 Matteo Agostinelli 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. */ #ifndef BACKEND_H #define BACKEND_H #include "cirkuit_export.h" #include #include class KConfigSkeletonItem; class KUrl; class KConfigSkeleton; namespace Cirkuit { class DocumentSettings; class Document; class Generator; class BackendPrivate; /** * The Backend class provides access to information about the backend. * It provides access the features supported by the backend, and most * notably a factory method to create a new Generator. * It needs to be subclassed by all Backends. * * @author Matteo Agostinelli * @author Alexander Rieder */ class CIRKUIT_EXPORT Backend : public QObject { Q_OBJECT protected: /** * Default constructor. Should not be invoked directly. Use the static member getBackend() instead */ explicit Backend(QObject* parent = 0, const QList& args = QList()); /** * Default destructor */ virtual ~Backend(); /** * Calculates the probabiliy that the document passed as argument can be processed by the backend * @param doc the document * @return a floating point number ranging from 0 to 1, where 0 stands for lowest probabiliy and * 1 is the maximum */ virtual float identifyIndex(Cirkuit::Document* doc) const; /** * A list of keywords that can be used to identify the backend (see code from existing backends). * This function should be re-implemented by each backend to define its own list. * @return the list of keywords */ virtual QStringList identifyingWords() const; public: /** * Checks if the requirements for the backend are met (e.g. check for runtime * dependencies * @return true if the requirements are met, false otherwise */ virtual bool checkRequirements() const; /** * Returns a unique string to identify this backend. * @return string to identify backend */ virtual QString id() const = 0; //Stuff extracted from the .desktop file /** * Returns the name of the backend * @return the backends name */ QString name() const; /** * Returns a short comment about the backend. * @return comment about the backend */ QString comment() const; /** * Returns the icon to use with this backend * @return name of the icon */ QString icon() const; /** * Returns the Url of the Homepage for the Backend * @return the url */ KUrl url() const; /** * Returns an Url pointing to the Help of the Backend * The method should be overwritten by all Backends(who have an online help) * @return Url of the help */ virtual KUrl helpUrl() const; /** * Returns an Url pointing to the Examples of the Backend * The method should be overwritten by all Backends(who have an online help) * @return Url of the examples */ virtual KUrl examplesUrl() const; /** * Returns a longer description of the Backend, e.g. purpose, strengths etc. * It should help the user to decide between the different Backends * @return a description of the backend. It can contain html */ virtual QString description() const; /** * Returns a Widget for configuring this backend * @return Widget for usage in the Settings dialog */ virtual QWidget* settingsWidget(QWidget* parent) const; /** * Returns a KConfig object, containing all the settings, * the backend might need * @return a KConfigSkeleton object, for configuring this backend */ virtual KConfigSkeleton* config() const; /** * Returns a KConfigItem object, containing the url of the * the template used by the backend. You need to override * this method only if the template url item is not named "templateurl" * or if there are multiple templates for a single backend. * @return a KConfigSkeletonItem object, for configuring the template URL */ virtual KConfigSkeletonItem* configTemplateUrl() const; /** * Returns the Document Settings for the backend * @return the Document Settings */ virtual Cirkuit::DocumentSettings* documentSettings() const; /** * Access the generator class which is responsible for the actual generation of the graphics * @return the generator */ virtual Cirkuit::Generator* generator() const; /** * Returns a list of the names of all the installed and enabled backends * @return a list of the names of all the installed and enabled backends */ static QStringList listAvailableBackends(); /** * Returns Pointers to all the installed backends * @return Pointers to all the installed backends */ static QList availableBackends(); /** * Returns the backend with the given name, or null if it isn't found * @return the backend with the given name, or null if it isn't found */ static Backend* getBackend(const QString& name); /** * Automatically choose the best backend, based on the current document * @param doc a Cirkuit document * @return the best backend for the given document */ static Backend* autoChooseBackend(Cirkuit::Document* doc); /** * Overloaded operator to check if the id or the name of the backend * corresponds to the given QString @p rhs * @param rhs a backend id or name * @return @p true if the name or id corresponds */ bool operator==(const QString& rhs) const; private: BackendPrivate* d; }; } #endif // BACKEND_H cirkuit-0.4.3/src/lib/command.cpp000644 001750 001750 00000010241 11677601442 020361 0ustar00scarlettscarlett000000 000000 /*************************************************************************** * Copyright (C) 2011 by Matteo Agostinelli * * agostinelli@gmail.com * * * * 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. * ***************************************************************************/ #include "command.h" #include "logparser.h" #include #include #include #include #include #include using namespace Cirkuit; class Cirkuit::CommandPrivate { public: QString name, input; QString stderr, stdout; QStringList args; LogParser* logParser; CommandPrivate() { logParser = 0; } }; Command::Command(const QString& name, const QString& input, const QStringList& args, QObject* parent): KProcess(parent), d(new CommandPrivate) { d->name = name; setLogParser(new LogParser); setOutputChannelMode(SeparateChannels); setInput(input); setArgs(args); } Command::~Command() { delete d->logParser; // destroy the d-pointer delete d; } QStringList Command::args() const { return d->args; } QString Command::input() const { return d->input; } QString Command::name() const { return d->name; } void Command::setArgs(const QStringList& args) { d->args = args; } void Command::setInput(const QString& input) { d->input = input; } void Command::setLogParser(LogParser* parser) { delete d->logParser; d->logParser = parser; connect(d->logParser, SIGNAL(message(QString)), this, SLOT(newMessage(QString))); connect(d->logParser, SIGNAL(error(QString)), this, SLOT(newError(QString))); } bool Command::execute(const QString& input, const QStringList& args) { if (!input.isEmpty()) setInput(input); if (!args.isEmpty()) setArgs(args); if (!checkExistence()) { kError() << "Program not found!!"; return false; } setProgram(d->name, d->args); start(); if (!waitForStarted()) { return false; } write(d->input.toLatin1()); closeWriteChannel(); if (!waitForFinished()) { return false; } if (!parseLog()) return false; if (!d->stdout.isEmpty()) emit newStandardOutput(d->name, d->stderr); if (!d->stderr.isEmpty()) { emit newStandardError(d->name, d->stderr); return false; } return true; } bool Command::checkExistence() const { return !KStandardDirs::findExe(d->name).isEmpty(); } QString Command::stdError() const { return d->stderr; } QString Command::stdOutput() const { return d->stdout; } bool Command::checkExistence(const QString& name) { return !KStandardDirs::findExe(name).isEmpty(); } bool Command::parseLog() { d->stdout = readAllStandardOutput(); d->stderr = readAllStandardError(); return d->logParser->parse(d->stdout, d->stderr); } void Command::newError(const QString& msg) { emit newStandardError(d->name, msg); } void Command::newMessage(const QString& msg) { emit newStandardOutput(d->name, msg); } cirkuit-0.4.3/src/lib/cirkuit_macros.h000644 001750 001750 00000003525 11677601442 021435 0ustar00scarlettscarlett000000 000000 /*************************************************************************** * Copyright (C) 2011 by Matteo Agostinelli * * agostinelli@gmail.com * * * * 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. * ***************************************************************************/ #ifndef CIRKUIT_MACROS_H #define CIRKUIT_MACROS_H #include #include #include #define CIRKUIT_VERSION 1 /** Exports Backend plugin. */ #define K_EXPORT_CIRKUIT_PLUGIN(libname, classname) \ K_PLUGIN_FACTORY(factory, registerPlugin();) \ K_EXPORT_PLUGIN(factory("cirkuit_" #libname)) \ K_EXPORT_PLUGIN_VERSION(CIRKUIT_VERSION) #endif /* CIRKUIT_MACROS_H */ cirkuit-0.4.3/src/lib/cirkuit_export.h000644 001750 001750 00000003603 11677601442 021467 0ustar00scarlettscarlett000000 000000 /*************************************************************************** * Copyright (C) 2011 by Matteo Agostinelli * * agostinelli@gmail.com * * * * 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. * ***************************************************************************/ #ifndef CIRKUIT_EXPORT_H #define CIRKUIT_EXPORT_H // needed for KDE_EXPORT and KDE_IMPORT macros #include #ifndef CIRKUIT_EXPORT # if defined(MAKE_CIRKUITLIBS_LIB) // We are building this library # define CIRKUIT_EXPORT KDE_EXPORT # else // We are using this library # define CIRKUIT_EXPORT KDE_IMPORT # endif #endif # ifndef CIRKUIT_EXPORT_DEPRECATED # define CIRKUIT_EXPORT_DEPRECATED KDE_DEPRECATED CIRKUIT_EXPORT # endif #endif /* CIRKUIT_EXPORT_H */ cirkuit-0.4.3/src/lib/Mainpage.dox000644 001750 001750 00000001623 11677601442 020500 0ustar00scarlettscarlett000000 000000 /* 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. --- Copyright (C) 2011 Matteo Agostinelli */ /** @mainpage Cirkuit This is the documentation for the helper library for the application Cirkuit */ cirkuit-0.4.3/src/lib/format.h000644 001750 001750 00000004307 11677601442 017706 0ustar00scarlettscarlett000000 000000 /* Copyright (C) 2011 Matteo Agostinelli 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. */ #ifndef FORMAT_H #define FORMAT_H #include "cirkuit_export.h" #include #include namespace Cirkuit { class FormatPrivate; /** * A class that is used to model the different graphic/text formats used in the application */ class CIRKUIT_EXPORT Format : public QObject { public: //! An enum of the supported formats enum Type { Source, Dvi, Postscript, Pdf, Eps, QtImage, Png, Jpeg, Svg, Ppm, Gif, Tex, Unknown }; //! Default constructor Format(); /** * Constructor with initialization * @param type the type */ Format(const Type& type); Format(const Format& other); virtual ~Format(); virtual Format& operator=(const Format& other); virtual bool operator==(const Format& other) const; //! The format type Type type() const; //! The default extension QString extension() const; /** * Create a format based on its main extension * @param extension the main extension * @return the corresponding format */ static Format fromExtension(const QString& extension); /** * Create a format based on its mimetype * @param mime the mime type * @return the corresponding format */ static Format fromMimeType(KMimeType::Ptr mime); private: FormatPrivate* d; }; } #endif // FORMAT_H cirkuit-0.4.3/src/lib/logparser.cpp000644 001750 001750 00000010300 11677601442 020735 0ustar00scarlettscarlett000000 000000 /* Copyright (C) 2011 Matteo Agostinelli 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. */ #include "logparser.h" #include "command.h" #include using namespace Cirkuit; class Cirkuit::LogParserPrivate { public: QString stderr; QString stdout; }; LogParser::LogParser(QObject* parent): QObject(parent), d(new LogParserPrivate) { } LogParser::~LogParser() { delete d; } bool LogParser::parse(Command* c) { return parse(c->stdOutput(), c->stdError()); } bool LogParser::parse(const QString& stdout, const QString& stderr) { d->stderr = stderr; d->stdout = stdout; emit message(stdout); emit error(stderr); return d->stderr.isEmpty(); } LatexLogParser::LatexLogParser(QObject* parent): LogParser(parent) { } bool LatexLogParser::parse(const QString& stdout, const QString& stderr) { kDebug() << "Parsing LaTeX log"; QList keywordPatterns; keywordPatterns << QRegExp("(\\S*):(\\d+): (.*$)") << QRegExp("Undefined control sequence") << QRegExp("LaTeX Warning:") << QRegExp("LaTeX Error:") << QRegExp("Runaway argument?") << QRegExp("Missing character: .*!") << QRegExp("Error:"); QStringList logLines = stdout.split(QChar('\n')); int i = 0; QString logLine; while (i < logLines.count()) { logLine = logLines[i++]; if (keywordPatterns.at(0).indexIn(logLine) > -1) { // show error message and correct line number // QString lineNum = QString::number(keywordPatterns[0].cap(2).toInt() - m_templateStartLineNumber); QString lineNum = QString::number(keywordPatterns[0].cap(2).toInt()); const QString errorMsg = keywordPatterns[0].cap(3); d->stderr += "[LaTeX] Line " + lineNum + ": " + errorMsg; // while we don't get a line starting with "l. ...", we have to add the line to the first error message QRegExp rx("^l\\.(\\d+)(.*)"); logLine = logLines[++i]; while (rx.indexIn(logLine) < 0 && i < logLines.count()) { if (logLine.isEmpty()) d->stderr += "\n[LaTeX] Line " + lineNum + ": "; if (!logLine.startsWith(QLatin1String("Type"))) // don't add lines that invite the user to type a command, since we are not in the console d->stderr += logLine; logLine = logLines[++i]; } d->stderr += '\n'; if (i >- logLines.count()) break; // add the line starting with "l. ..." and the next line lineNum = QString::number(rx.cap(1).toInt() - 7); logLine = "l." + lineNum + rx.cap(2); d->stderr += logLine + '\n'; d->stderr += logLines[++i] + '\n'; } else { for (int j = 1; j < keywordPatterns.size(); ++j) { if (logLine.contains(keywordPatterns.at(j))) { d->stderr += logLine + '\n'; d->stderr += logLines[++i] + '\n'; d->stderr += logLines[++i] + '\n'; break; } } } } if (!d->stderr.isEmpty()) { emit error(d->stderr); } return d->stderr.isEmpty(); } void LogParser::appendError(const QString& msg) { d->stderr.append(msg); } void LogParser::appendMessage(const QString& msg) { d->stdout.append(msg); } QString LogParser::stdError() const { return d->stderr; } QString LogParser::stdOutput() const { return d->stdout; } cirkuit-0.4.3/src/lib/cirkuit_backend.desktop000644 001750 001750 00000001100 11677601442 022745 0ustar00scarlettscarlett000000 000000 [Desktop Entry] Type=ServiceType X-KDE-ServiceType=Cirkuit/Backend Comment=A Backend for Cirkuit Comment[es]=Un motor para Cirkuit Comment[et]=Cirkuiti taustaprogramm Comment[fr]=Un moteur pour Cirkuit Comment[km]=កម្មវិធី​ខាងក្រោយ​របស់ Cirkuit Comment[nl]=Een backend voor Cirkuit Comment[pl]=Silnik dla Cirkuit Comment[pt]=Uma infra-estrutura para o Cirkuit Comment[pt_BR]=Uma infraestrutura para o Cirkuit Comment[sv]=Ett gränssnitt för Cirkuit Comment[uk]=Модуль для Cirkuit Comment[x-test]=xxA Backend for Cirkuitxx cirkuit-0.4.3/src/lib/command.h000644 001750 001750 00000012335 11677601442 020034 0ustar00scarlettscarlett000000 000000 /*************************************************************************** * Copyright (C) 2011 by Matteo Agostinelli * * agostinelli@gmail.com * * * * 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. * ***************************************************************************/ #ifndef COMMAND_H #define COMMAND_H #include "cirkuit_export.h" #include /** * Namespace collecting classes of the Cirkuit Libraries */ namespace Cirkuit { class CommandPrivate; class LogParser; /** * The Command class is a wrapper around KProcess with additional * functions to handle standard input and output and checks for the * existence of the main executable * * @author Matteo Agostinelli */ class CIRKUIT_EXPORT Command : public KProcess { Q_OBJECT public: /** * Create a new Command. * @param name the name of the command to call * @param input optional input to the command * @param args optional arguments * @param parent optional parent */ explicit Command(const QString& name, const QString& input = "", const QStringList& args = QStringList(), QObject* parent = 0); /** * Destructor */ virtual ~Command(); /** * Checks for the existence of the executable command in the system path * @return true if the executable is found, false otherwise */ bool checkExistence() const; /** * Access the name of the executable command * @return a string with the name */ QString name() const; /** * Access the (optional) input of the command * @return the input to the command (empty if no input is given) */ QString input() const; /** * The arguments provided to the command * @return a list with the arguments */ QStringList args() const; /** * Sets the input to be given to the command * @param input a string containing the input */ void setInput(const QString& input); /** * Sets the arguments to the command * @param args a list of arguments */ void setArgs(const QStringList& args); /** * Sets the log parser * @param parser the log parser */ void setLogParser(LogParser* parser); /** * Return the standard error. Can be called multiple times without re-reading the standard error of the command * @return the standard error of the last execution of the command */ QString stdError() const; /** * Return the standard output. Can be called multiple times without re-reading the standard output of the command * @return the standard output of the last execution of the command */ QString stdOutput() const; public slots: /** * Executes the command, waits for the end of the execution and reads the standard error and output * @param input optional input * @param args optional arguments * @return true if the command has executed correctly, false otherwise */ bool execute(const QString& input = QString(), const QStringList& args = QStringList()); /** * Checks the existence of a certain command in the system * @param name the name of the command * @return true if the command is found, false otherwise */ static bool checkExistence(const QString& name); protected slots: bool parseLog(); void newMessage(const QString& msg); void newError(const QString& msg); signals: /** * This signal is emitted when there is new data made available * by the command through the standard error * @param name the name of the command * @param msg the message available through standard error */ void newStandardError(const QString& name, const QString& msg); /** * This signal is emitted when there is new data made available * by the command through the standard output * @param name the name of the command * @param msg the message available through standard output */ void newStandardOutput(const QString& name, const QString& msg); private: CommandPrivate* d; }; } #endif // COMMAND_H cirkuit-0.4.3/src/lib/document.cpp000644 001750 001750 00000004264 11677601442 020571 0ustar00scarlettscarlett000000 000000 /*************************************************************************** * Copyright (C) 2011 by Matteo Agostinelli * * agostinelli@gmail.com * * * * 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. * ***************************************************************************/ #include "document.h" #include "backend.h" using namespace Cirkuit; class Cirkuit::DocumentPrivate { public: DocumentPrivate() { directory.clear(); settings = new DocumentSettings; } QString directory; DocumentSettings* settings; }; Cirkuit::Document::Document(QObject* parent): KTextEditor::Document(parent) { } Document::~Document() { delete d; } QString Document::directory() const { return url().directory(); } int Document::initialLineNumber() const { return d->settings->initialLineNumber; } QString Document::initialText() const { return d->settings->initialText; } void Document::initialize() { d = new DocumentPrivate; } void Document::applySettings(DocumentSettings* settings) { d->settings = settings; } cirkuit-0.4.3/src/lib/document.h000644 001750 001750 00000006125 11677601442 020234 0ustar00scarlettscarlett000000 000000 /*************************************************************************** * Copyright (C) 2011 by Matteo Agostinelli * * agostinelli@gmail.com * * * * 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. * ***************************************************************************/ #ifndef DOCUMENT_H #define DOCUMENT_H #include "cirkuit_export.h" #include namespace Cirkuit { class DocumentPrivate; /** * A class containing the initial settings of a document. This * class should be reimplemented by each backend to define * appropriate initial conditions. * * @author Matteo Agostinelli */ class DocumentSettings { public: /** * Default constructor. Initial text is an empty string */ DocumentSettings() { initialText.clear(); initialLineNumber = 0; } //! The initial text, inserted when a new document is created QString initialText; //! The line where the cursor will be placed when a new document is created int initialLineNumber; }; /** * The Document class represent a document of the text editor. * The creation of the class is managed by the Kate Part, therefore * the constructor should not be called directly. For the same reason * a separate DocumentSettings class has been added to personalize * the initial settings of the document, depending on the selected * backend. * * @author Matteo Agostinelli */ class CIRKUIT_EXPORT Document : public KTextEditor::Document { Q_OBJECT public: /** * Destructor */ virtual ~Document(); /** * The initial text of the document. It is set by the * DocumentSettings, */ QString initialText() const; int initialLineNumber() const; QString directory() const; public slots: void applySettings(DocumentSettings* settings); void initialize(); protected: explicit Document(QObject* parent = 0); DocumentPrivate* d; }; } #endif // DOCUMENT_H cirkuit-0.4.3/src/lib/documenttemplate.h000644 001750 001750 00000006144 11677601442 021771 0ustar00scarlettscarlett000000 000000 /*************************************************************************** * Copyright (C) 2011 by Matteo Agostinelli * * agostinelli@gmail.com * * * * 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. * ***************************************************************************/ #ifndef DOCUMENTTEMPLATE_H #define DOCUMENTTEMPLATE_H #include "cirkuit_export.h" #include #include namespace Cirkuit { class DocumentTemplatePrivate; /** * A class for managing the templates used during the * creation of the graphic object */ class CIRKUIT_EXPORT DocumentTemplate : public QObject { Q_OBJECT public: /** * Default constructor. * @param path is the path of the template file */ explicit DocumentTemplate(const KUrl& path, QObject* parent = 0); ~DocumentTemplate(); /** * Inserts the code into the template. The point of insertion * should be denoted by keyword in the template itself. * @param code the code to be inserted * @param keyword the keyword in the template that will be substituted by the code. The default value is * @return the resulting text */ QString insert(const QString& code, const QString& keyword = "%%source%%"); KUrl path() const; QString name() const; bool operator==(const DocumentTemplate& rhs) const; QString backend() const; protected slots: void readBackend() const; private: DocumentTemplatePrivate* d; }; class CIRKUIT_EXPORT TemplateManager : public QObject { Q_OBJECT protected: explicit TemplateManager(QObject* parent = 0); static QList backendFilter(const QList& list, const QString& backend = QString()); static bool checkDuplicate(DocumentTemplate* t); public: static QList availableTemplates(const QString& backend = QString(), bool forceRescan = false); static void scanTemplates(); }; } #endif // DOCUMENTTEMPLATE_H cirkuit-0.4.3/src/lib/documenttemplate.cpp000644 001750 001750 00000011536 11677601442 022325 0ustar00scarlettscarlett000000 000000 /*************************************************************************** * Copyright (C) 2011 by Matteo Agostinelli * * agostinelli@gmail.com * * * * 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. * ***************************************************************************/ #include "documenttemplate.h" #include #include #include #include #include #include #include using namespace Cirkuit; class Cirkuit::DocumentTemplatePrivate { public: KUrl path; QString backend; }; DocumentTemplate::DocumentTemplate(const KUrl& path, QObject* parent): QObject(parent), d(new DocumentTemplatePrivate) { d->path = path; readBackend(); } DocumentTemplate::~DocumentTemplate() { delete d; } KUrl DocumentTemplate::path() const { return d->path; } void DocumentTemplate::readBackend() const { d->backend.clear(); QFile file(d->path.path()); file.open(QIODevice::ReadOnly); QTextStream stream(&file); QString line = stream.readLine().toLower(); QRegExp regExp("%%backend=(\\w+)%%"); while (!line.isEmpty()) { if (regExp.indexIn(line) > -1) { d->backend = regExp.cap(1); } line = stream.readLine().toLower(); } } QString DocumentTemplate::backend() const { return d->backend; } QString DocumentTemplate::name() const { return d->path.fileName(); } QString DocumentTemplate::insert(const QString& code, const QString& keyword) { QFile file(d->path.path()); file.open(QIODevice::ReadOnly); QTextStream stream(&file); QString output = stream.readAll().replace(keyword, code, Qt::CaseInsensitive); file.close(); return output; } bool DocumentTemplate::operator==(const Cirkuit::DocumentTemplate& rhs) const { return this->path().fileName() == rhs.path().fileName(); } static QList templateCache = QList(); TemplateManager::TemplateManager(QObject* parent): QObject(parent) { } QList< DocumentTemplate* > TemplateManager::availableTemplates(const QString& backend, bool forceRescan) { //if we already have all templates cached, just return the cache. //otherwise create the available templates if (!templateCache.isEmpty() && !forceRescan) { return backendFilter(templateCache, backend); } scanTemplates(); return backendFilter(templateCache, backend); } bool TemplateManager::checkDuplicate(DocumentTemplate* t) { bool duplicate = false; foreach(DocumentTemplate* item, templateCache) { if (*item == *t) { duplicate = true; } } return duplicate; } QList< DocumentTemplate* > TemplateManager::backendFilter(const QList& list, const QString& backend) { if (backend.isEmpty()) { return list; } QList filtered; foreach(DocumentTemplate* item, list) { if (QString::compare(item->backend(), backend, Qt::CaseInsensitive) == 0) { filtered << item; } } return filtered; } void TemplateManager::scanTemplates() { templateCache.clear(); QDir templates; DocumentTemplate* t; QStringList dirs = KGlobal::dirs()->findDirs("appdata", "templates"); for(QStringList::iterator i = dirs.begin(); i != dirs.end(); ++i) { templates = QDir(*i); for (uint j = 0; j < templates.count(); ++j) { KUrl fileUrl(templates.path() + '/' + templates[j]); t = new DocumentTemplate(fileUrl); if (t->backend().isEmpty() || checkDuplicate(t)) { delete t; continue; } templateCache.append(t); } } } cirkuit-0.4.3/src/lib/format.cpp000644 001750 001750 00000006000 11677601442 020231 0ustar00scarlettscarlett000000 000000 /* Copyright (C) 2011 Matteo Agostinelli 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. */ #include "format.h" using namespace Cirkuit; class Cirkuit::FormatPrivate { public: Format::Type type; }; Format::Format(): d(new FormatPrivate) { } Format::Format(const Type& type): QObject(), d(new FormatPrivate) { d->type = type; } Format::Format(const Format& other): QObject(), d(new FormatPrivate) { d->type = other.d->type; } Format::~Format() { delete d; } Format& Format::operator=(const Format& other) { this->d->type = other.d->type; return *this; } bool Format::operator==(const Format& other) const { return type() == other.type(); } Format::Type Cirkuit::Format::type() const { return d->type; } QString Format::extension() const { switch (d->type) { case Source: return ".cir"; case Dvi: return ".dvi"; case Postscript: return ".ps"; case Pdf: return ".pdf"; case Eps: return ".eps"; case Png: return ".png"; case Jpeg: return ".jpg"; case Svg: return ".svg"; case Gif: return ".gif"; case Tex: return ".tex"; case Ppm: return ".ppm"; case QtImage: case Unknown: default: return ""; } } Format Format::fromExtension(const QString& extension) { if (extension.contains("pdf")) { return Format(Pdf); } else if (extension.contains("cir")) { return Format(Source); } else if (extension.contains("dvi")) { return Format(Dvi); } else if (extension.contains("eps")) { return Format(Eps); } else if (extension.contains("ps")) { return Format(Postscript); } else if (extension.contains("png")) { return Format(Png); } else if (extension.contains("jpg") || extension.contains("jpeg")) { return Format(Jpeg); } else if (extension.contains("svg")) { return Format(Svg); } else if (extension.contains("gif")) { return Format(Gif); } else if (extension.contains("tex")) { return Format(Tex); } return Format(Unknown); } Format Format::fromMimeType(KMimeType::Ptr mime) { return Format::fromExtension(mime->mainExtension()); } cirkuit-0.4.3/src/lib/CMakeLists.txt000644 001750 001750 00000001240 11677601442 020776 0ustar00scarlettscarlett000000 000000 set(GENERIC_LIB_VERSION "1.0.0") set(GENERIC_LIB_SOVERSION "1") set ( cirkuit_LIB_SRCS backend.cpp command.cpp document.cpp generator.cpp format.cpp documenttemplate.cpp logparser.cpp ) set( cirkuit_LIB_HDRS cirkuit_export.h ) kde4_add_library( cirkuitlibs SHARED ${cirkuit_LIB_SRCS} ) target_link_libraries( cirkuitlibs ${KDE4_KDECORE_LIBS} ${KDE4_KTEXTEDITOR_LIBS} ) set_target_properties( cirkuitlibs PROPERTIES VERSION ${GENERIC_LIB_VERSION} SOVERSION ${GENERIC_LIB_SOVERSION} ) install( TARGETS cirkuitlibs ${INSTALL_TARGETS_DEFAULT_ARGS} ) install( FILES cirkuit_backend.desktop DESTINATION ${SERVICETYPES_INSTALL_DIR}) cirkuit-0.4.3/src/lib/generator.h000644 001750 001750 00000013632 11677601442 020405 0ustar00scarlettscarlett000000 000000 /*************************************************************************** * Copyright (C) 2011 by Matteo Agostinelli * * agostinelli@gmail.com * * * * 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. * ***************************************************************************/ #ifndef GENERATOR_H #define GENERATOR_H #include "cirkuit_export.h" #include "format.h" #include class QFileInfo; class KTemporaryFile; namespace Cirkuit { class Document; class Command; class Backend; class GeneratorPrivate; /** * The Generator class is responsible for the generation of the graphical output. * It provides instructions on how to generate a desired Format from the source * code entered by the user. The Generator is also able to convert among different * graphical formats via external tools. * * The Generator must be redefined by each Backend in order to produce the * desired output from the source code. * * @author Matteo Agostinelli */ class CIRKUIT_EXPORT Generator : public QObject { Q_OBJECT public: /** * Default constructor, with an optional pointer to the backend * @param backend a pointer to a backend */ explicit Generator(Cirkuit::Backend* backend = 0, QObject* parent = 0); /** * Default destructor */ virtual ~Generator(); /** * This function returns the temporary working directory where all the * conversions will take place. * @return the url of the working directory */ static KUrl workingDir(); /** * Check if a format is present in the working directory * @param format the desired format * @return true if the specified format is found in the working directory */ bool formatExists(const Format& format) const; /** * Return the full path to the file representing the specified format * @param format the desired format * @return the path to the file corresponding to the format */ QString formatPath(const Format& format) const; protected slots: /** * Create the initial temporary files where the source code will be written * @param suffix the suffix of the temporary files */ void createTempFiles(const QString& suffix = QString(".tmp")); /** * Executes a Command * @param command the command * @return true if the command is executed successfully, false otherwise */ bool execute(Cirkuit::Command* command); public slots: /** * Convert a format into another. Note that this function only generate the command queue. * You need to call start() to actually execute the queue * @param input the input format * @param output the output format * @return true if the operation is successful */ virtual bool convert(const Format& input, const Format& output); /** * Similar to convert, but the starting point is the source code defined in the document * @param doc the document holding the source code * @param output the output format * @return true if the operation is successful */ virtual bool generate(Document* doc, const Format& output = Format::Pdf); /** * Sets the current document * @param doc the document */ void setDocument(Document* doc); /** * Gets the current document * @return the current document */ Document* document() const; /** * Sets the resolution of the graphic (when applicable) * @param resolution the resolution */ void setResolution(int resolution); /** * Returns the resolution * @return the resolution */ int resolution() const; signals: /** * Signal emitted if the generation was successful */ void success(); /** * Signal emitted if the generation failed */ void fail(); /** * Signal emitted when an error occurs * @param appname the application that caused the error * @param msg the error message */ void error(const QString& appname, const QString& msg); /** * Signal emitted when an output is generated * @param appname the application that generated the output * @param msg the output of the application */ void output(const QString& appname, const QString& msg); /** * This signal is emitted when the preview has been generated and * it is ready * @param image the rendered image */ void previewReady(const QImage& image); protected: /** * A temporary file */ KTemporaryFile* tempFile() const; /** * Information about the temporary file */ QFileInfo* tempFileInfo() const; /** * A pointer to the current backend */ Cirkuit::Backend* backend() const; GeneratorPrivate* d; }; } #endif // DOCUMENT_H cirkuit-0.4.3/src/mainwindow.h000644 001750 001750 00000007474 11677601442 020034 0ustar00scarlettscarlett000000 000000 /*************************************************************************** * Copyright (C) 2011 by Matteo Agostinelli * * agostinelli@gmail.com * * * * 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. * ***************************************************************************/ #ifndef MAINWINDOW_H #define MAINWINDOW_H #include #include #include class ImageView; class LogViewWidget; namespace KTextEditor { class Document; class View; } namespace Cirkuit { class Document; class Backend; } class PreviewWidget; class GeneratorThread; class QTimer; class KRecentFilesAction; #ifdef ENABLE_KMESSAGEWIDGET class KMessageWidget; #endif class CircuitMacrosManager; class MainWindow : public KParts::MainWindow { Q_OBJECT public: MainWindow(QWidget *parent=0); private slots: void clear(); void openFile(); void newFile(); void saveAsFile(const KUrl& url); void saveAs(); void save(); void exportFile(); void documentModified(KTextEditor::Document*); void buildPreview(); void showPreview(const QImage& image); void saveFileToDisk(const QString& path); void openPreview(); void openPreviewFile(); void openTemplateManager(); void newDocument(const QString& backendName = QString()); void updateTitle(); void updateConfiguration(); void configure(); void configureKeyBindings(); void configureToolbars(); void builtNotification(); void failedNotification(); void showManual(); void showExamples(); void downloadExamples(); void uploadExample(); void openExample(); void checkCircuitMacros(); void circuitMacrosConfigured(); void askIfUpgrade(const QString&); void reset(); void openHelpUrl(const KUrl& url); void initializeBackend(); void setDefaultBackend(const QString& backend); void backendChanged(const QString& backendName); #ifdef ENABLE_KMESSAGEWIDGET void showMessage(KMessageWidget*); #endif private: void setupActions(); KTextEditor::View *m_view; Cirkuit::Document *m_doc; Cirkuit::Backend *m_backend; QTimer* m_updateTimer; QStringList mimeTypes; KUrl m_currentFile; #ifdef ENABLE_KMESSAGEWIDGET KMessageWidget* m_messageWidget; #endif KRecentFilesAction* recentFilesAction; CircuitMacrosManager* cmm; QString m_tempSavePath; QString m_windowTitle; PreviewWidget *m_previewWidget; ImageView* m_imageView; LogViewWidget* m_logViewWidget; GeneratorThread* m_generator; bool m_firstRun; public slots: void loadFile(const KUrl& url); protected: void closeEvent(QCloseEvent *event); }; #endif cirkuit-0.4.3/cirkuitconfig.h.in000644 001750 001750 00000000043 11677601442 020317 0ustar00scarlettscarlett000000 000000 #define VERSION "@CIRKUIT_VERSION@"cirkuit-0.4.3/Changelog000644 001750 001750 00000004672 11677601442 016527 0ustar00scarlettscarlett000000 000000 - 0.4.2 More informative messages Fixed wrong reassignment of Save and Save as actions Fixed bug in upload dialog - 0.4.1 Include translations in the release Fixed a crash that could occur on startup Bugfixes by Laurent Montel (mainly memory leaks) Other bugfixes - 0.4 New backend system (heavily inspired by Cantor) New template system with GHNS (Get Hot New Stuff) support Added Get Hot New Stuff support Configurable keyboard shortcuts and toolbars Much improved preview widget with variable zoom levels Manuals and examples of each backend can be accessed in the main interface Improved multi-threading -> Cirkuit generates the previews faster Improved parsing of log files and error handling Increased usage of K* instead of Q* classes for a better Improved integration with the KDE environment Redesigned configuration dialog Other bug fixes / improvements - 0.3.2 Switch from QProcess to KProcess Download of remote data the KDE way with KIO Fixed a bug when opening the Circuit Macros manual and examples - 0.3.1.1 Integration with bugs.kde.org - 0.3.1 Added possiblity to export to TeX source Can export to GIF Fixed a bug that caused wrong syntax highlighting detection in Kate Correct escaping of mathematical expressions in Gnuplot Fixed a bug that prevented the user to overwrite an exported file even when the user has confirmed that he wants to overwrite it Fixed compilation issues Improved localization Various minor bugfixes - 0.3 A lot of new features, pointing out just the most important ones Multi-thread support Full Gnuplot support (Lua terminal needed) Support for different pic interpreters Support for custom document templates Improved handling of mime types Improved error handling Added more options in the settings - 0.2.2 Fixed failed configuration of Circuit Macros - 0.2.1 Experimental support for Gnuplot epslatex terminal Fixed bug in generation of TikZ previews Should be compatible with KDE 4.2 - 0.2 Improved text editor, now based on the Kate part Support for syntax highlighting Preview generated directly from PDF with LibPoppler Reworked preview generation Improved handling of error messages Added TikZ support Added CircuiTikz support - 0.1.2 Faster preview generation Export to SVG Line number visualization Fixed cutting of figures when exporting to EPS/PDF Fixed CMakeLists.txt Various bug fixes - 0.1.1 Fixed a bug which prevented the generation of the preview Improved auto-configuration of the macros - 0.1 Initial version cirkuit-0.4.3/icons/000755 001750 001750 00000000000 11677601442 016017 5ustar00scarlettscarlett000000 000000 cirkuit-0.4.3/icons/hi48-app-cirkuit.png000644 001750 001750 00000005037 11677601442 021534 0ustar00scarlettscarlett000000 000000 PNG  IHDR00WsRGB pHYs a aJ%tIME2b@bKGD IDATxYYl{{ls(!,b\r\ )*"!"+l^eCu\^``>g3ݝcfj"~Tj= w:zvMJObN4+WʎD@ \,pޱ EsZaayر֙3gb`6+$&[:uM: Vb+,3A@ľ0q> `CCS:oFI~Mq0Ka>|UVVa!ߞ") a~s inHzvKڟ%S)%[1NPsyfў4~x+^"Βy$/&~Z?]zMRU Stɓ'I-}74F*탴|j]UUqiv]՟#H8[CWϛ7RB={6Qb7o nѢET]NC)F7l@|@gWqxa`U>'4d^G:wH^9u4͙3@YP؀$$K &'B8+b83 {adaąK!|(CL9ƻ)qc8G K+W и1X4K@c0)5p4/I0"}2'ܹs`ɤN/7PIIrN!?4D!iKa |ҟ\1Ek`h0HPӧOaߞ߻ReKo a,mk.\Hׯ' [IW* rhb|k,6'E/&kh=ߓxӦMl2Ϝ9k$Hpď\<ɻ>iIL߿Onݢӧ]"$ '1Qqv ߀F\ğoh+?(#Mĉ~ƌʎ˅e.\@XeE:{,۷WDh mEX /!N~!L&9r\dd$2CIVXƍq\#ޥ!ǠT&>vbw;FL !ivUf` ߱hɒ% &sD5:'z% Ogbtk6Y0uQ}F1M[(T1*h:$@ x3X+*v_XG9P 'LcpƲe(';Ǿh SoӪ}U1kD JhSL' w CȒgo{a_fHY?B|;w.1CK.E M@ zen8XIS քaپqda'V; bBA}0CG2gBr7S8!߅\)a\ެgl}Bh JmBA,/)Mh6|N6ylj+V=miPLP@` cB &d21ΛDBmf}11DIHȵ{\=w\{VF*k_V2\pjٵkDzK5JlܸQZqоg?{drd"Be]x9r$=4e'/_xbkTW GUUQ1Μ9RJ(//yQկ )<3W^￁*ٳ-WyS~L&#|q|>̜0aݻv}+qe˖!#.!^HSKPP)?/Z)/j%U70r0u; }JqM3AxV<={T< ~mBO>]&rĉ- :Ԙ{3rӌ.rbue ˚ Ba[T_Euʼn2VX N=uTs=֭[m6tg]I篸1**.Eu6{ZhxV|74]\,#lvJB { bS]_\f2:! in~=OSdm ~}P 37 >k^Z屢^p#;wglZC&͐g-L-sijii`ƚs~5@2Ӫ!aN(/9wp~8F55gbUTIJ0}h ;h0X5cۄqW]yG1y;ou )tSWZ+,ݻwӼy̦\| .М9s4Gq#u4ex L8@Ŕ b9̒{:b*))<+ Qz>,Ubu16aɔj(JIe?CcRvZf Gh);PHXRpWTcm Jي JO@XJcX#Njժ7{-:tRrPiM5l[iӂ={Pq*/I l5jT93ڇJgұi^sM:M,ntttѠ&p bv%eGF~,\pD4ƦlM+ތK~"?,Os =,,\WWG'O)2e ?~jk/ѬY|.oϧs*yqəʰ-Q+J$b&ݞ1c;wNXѣTY~Gxv/rb 3EuY3@`m cJ0ʄD9ԬQo0}=Dhr.~JW8qQ;:)7'W+;,_d %ةyG}D*S1CEECTCw|&i\]|˯ +~YFUdFQ)1aXMDZ- %RScqփN9'M5K/QUUsT%.XZCaU\%2:j4VRv?X:Xcy.F@D\7Xwo:\_r(V,؃ :&X@c:p,`LK$9-ǭ Jkq? G+H SuMn@0&$5u&l/Q|<" US:TLF Ol8W%z ϮFQzkR8J9^DӠ+`@͠LD9{,ݻwUYn׮]KUG/XB]]] 8ʑ*$Wr# tFjYO쳧<!~-+ވ@9arsc{Z9{,"wou]${(9CW5\wqxϐU2\~BW IENDB`cirkuit-0.4.3/icons/hi32-app-cirkuit.png000644 001750 001750 00000003003 11677601442 021514 0ustar00scarlettscarlett000000 000000 PNG  IHDR szzsRGB pHYs7]7]F]tIME ?%bKGDIDATxVKLTg̝ e:`)4nlIji4]a㪉1j]5nHMIlSct 5h BK( 2O܉E?s= ;L1;;sxqa|&tjOp\0 C..Cn{#xH/).Akk'nݪڳg;N™3glX4ZaiP]G"*~k `ܼyǎC:AssH$c(8{,N< C442$J<}Ӓ3v\r#;?=hzw8y3Lx$KR)K!LJbNNMJPrʾɃgii) FnXʕ+PS=_+CuF H"TUݻw6 辌20aGAAU]]GTJ>_'%X\\ĶMq=bo8̞ȠF TTT(j ϟ)$s Y)ʙhiiaNU= W ';44rCD۷P(DBJPj"XLb.Iw>(9'GZ)2d*\bI>ݳ Ĩ؝;y{{;|.T[v@YנAv+YsvxxXPuaxje(?g6"bhܹS/--I(ޱuȑ#bƍnB1ݻhkk3eDa:8sss##QR K,2A-΂i#iY,g\ڐ 133yN֓57g7$xm3P=rQ_P%󛩴PG|(F<lKsKTay}XLe1Q6;;+6'J[{?155r|55Y6#efL]vIR)x*{(//{IV.]}N6jPy_ P=&l`E6l۷Oش!:o"d*IIENDB`cirkuit-0.4.3/icons/application-x-cirkuit.svgz000644 001750 001750 00001046071 11677601442 023163 0ustar00scarlettscarlett000000 000000 wYڑ;p;bb8y֯ov>{k9|eØ/'(n6ʛO[|o"jOMϟ!)n+6KUMa g aajN?_7{̯ BܜWDa$}? #f?|ʦ \qECUySdiSw|rQel!3Oh~sſ;_~#׃!ȣ>U&YhyM??/yr'B! ;}|);OK>A=`th+~{ w)S_G1〆,ih8̾|noS|B_wk E1C Moɏ?>4McOxo ïN;ٷC|4¯dccE~V|L{s[ :pAS^UO)oϷH)gb8,(??/i5{y7c} tD`frdO]8;|E.Nc|"B`KO\VP#}!`^c}+3`Y<_C X@{_\\nXrL8"X ևākSRM<~ [ niyO*g[ 2IHp$e+adlF#ǥG&օnAp)B+UJl=1$gG,X |j: ~/X$6hqPjMg<#f;xAI o^] tlEs дԭ[>8~^r :LM0BNe!ZP-{HiTRS9dj]euevX̖!%w\bQ=Q608B6I/'1T(v.5xbQsֆC6k M#-O;궼ݒW02{oyJJxy}3)?gW3 c.yjw}\fV??CIR<'o`hu,];sha{Ze|lxե7vuO*jMFUhADrƗJx!u=_zp\^jB⁉qʮL~Ш^56Om:/S]eX_-._Qjtu>&wڅ|iާsOɝp},#:ԕE'v5(? s&IXk,)qޠ3ҷh[M4XJsziCN{r8^e/2vN,  e9Q,R,P$G~9/ɶ|K껒Rw1C"GǭUynzw,3I]` V}|*y] <$R8%7+& .Su=7}b"omkn812ȭ Gc-0leFSX UռWS:D&2y>[,_[bޛEV2sJ㓸vQ6Tƚ`#1qīn]5J.$I:zydmUrdI4'CD}PGC.v@z djolfVDr@+\Np'mE[\!˹]PI ןϡqztӔno@Z$w`fƘؤNR%9G',bzˋAHQ%`;\^ʍXZ%q\Z)žhR&W }^1H.̝=}B`nTb dӚ4oAF^vݘXpC+g7*F Rqpĺ$]IE3e#%nڔt|Ocln7Ãְ]F +5^%l= gN~Gy| >wO#K,ɵdNsCtIUY V$~SftJBdt'Mf N{G~-xtٌAi8Z )#2OxC/{)w{ ˨doe6]*׻52(tU|݃ׄW>WM|vݔk(vOb=i~,Kx)D::h5#=Pn_RRMN1ҭt}...YQ\S3O>cDUTeɋm? ц4UX2z& >hF; Lk7ݘ} utn3IvŶB,uն,ۓ_fНbc}1d"@^g^*"S.lw7 d^î%M:dRpsr X2:})k{9lf3,7Z\4=pM49} NlMt1xU'Q<83^j|f{A՞O|4â-Vuvid䐕i9B4Y-p{N+WVFa v#íՖ7c,32"4Fe.oft, u#\IZ^3f%!ߟy6bEYғEhrSFwl%GTJp'9BKekb2S Him'b&)N0L71= v ENq~e`Iywr:G#)},vOUe3:c6^zyS=isO:Y᥹>Xp܉w7CUm5W}$Fy`gЇj}@ge*η W .sp0FQ)ɞ"xfn/|W\ƀ8pp.Y& $TU/A܏m{ _^(Y+g?A?8hh*"llϻ`}|d~SS2n f"3UrZqT 洴619U_c%_^!?gC\0DC|GR\nUJEHd8d!jnxVo[i"x%n@/iMBdo\Un+5bWbCuu0"ݧ, "T0\Dǘ<<[Lpa∳v33vCfm]ZxqV 6DOP>myY1gҌnJ9UX3~2f+!5H|N4bϟ)px~V]&B,+(ӉoQRD1[ISN8/TH9a_;Y-<8h# >i>r%穒rF29P8+E3Fm{Ɠp16QosHɳ x+& +FUt@Q٫Wu'T:* vnQ0{eC;YؽsE RJ. M黐A$Vb‰lgHtpθFE)}6ʖ|-]+[\N7 4HSi3[rN#JwI WmI_.^\FdtNp(y-]+I$Y"{ݪSڲ#Eɳ{Hͣ q9Q^TPw%/t*yllfFFD </$|jwXjn4$'ADa-mr4sGS>`U}}o g3o0 :~[ xRK0)yuPVK/kl,SwU,vZ$̆E`p8n5 k:#/'f9tIp+#fLKW42f5&7ԛ5L-#]%(P1\\HT#R)d@!)O*e(8Lx#02ƫ X5̏j3b KVvƭBpn,i>=]GSFyV,^b? 8A-Ts9R=mrb ƋM(MelФtMt6%3fx ӣ7ӂ\ 3=o%*u q^1cMW2,3e56NZM$C+n x򓖴ٸMcfͷ%Iv_`t *ϭX1"Ҧ[(F6v}*H'~ZNzxiΙ=h%tL~5 vҙ_6P)3z"LUjö'H v0gTےʄ:6cjd=+O MGi'VdKL9{oQV<_Eu{YY7꺿uw˦:izkצ6Ϭgh}Y:D0#8Ȃ<nSAJ ٣벺xÌM=*c20=G߼7wdt; um1p[ 84ki( 9n!d~n[X2bӫ~fBLSLT{mT/Ug$fz$SO,|bkXcUSgASqvU ]:'}s긌Z0 Ѱ6{z 6/ZPI-KR7ߎɥXkkx{@K:qcZ]͞=vZnk& =PIf#WXU[6Z) 4lIh*~ҩ|bZC=~8}.&D;?9 L6;үFi%9F1p H>j@.{(E/2o:vGW*3/8~0ҁH:]i?6ej?;ro&= e|~M@B!iR#q2Nd7sRť砟 u@V4|+1c!eh(Mg Rp0hbS/v[Zb09 N5Xw3FǑ,1u$[pu3ԝ6 [PSUM&r7j*~^=f=z|?lP˥`q՗{2U9S/ܲjL^J%BwzFLZt:3-xᚮ%LaU6E$4wy+7f!vi,?Uzr\T433{TɴkH͗š M-QE tj_!d٪vAk~,z!h}߀wTy9ZF%6F11,+խ_ Ýb9'wpD7+ObY{G{Rbg󌚇%eox,~rSF]w1sLNIΞsfz;dޒyFdD6"i2C6pQ`WRugp @[ۥP%K)1A]"Kӈڌ VX*8+tZw)::ЛGPցu+3 |i~53H,sHvʨ^aT%P8!N?4Hc=S 7ӿ<9o40ߏp1B|ө=!O@fT!`5~xIBi&nO2?9^+-,=~౫~-'js.*M{1Xd/WXz;+yQ~>qH{C-7HR ]߮Y!|iw;Ŀoq  Qv)2&߷jö<}CmetQ1 ^4*iBw$ҁcY_mU(Bϸ,OoL\&AX7I+;~`s3rh9*A@p > i ʊʽ_o%%v@X9^֜pE['}Fm0ɚC椀:]OXW (wܷY\C+s!w1s4r)i%j;Ki-HE6W{ɩ;; r.Z-qbE }UN7 WtŒ5"n> u|e6vlU_ 3{ciW®͋@N]b,y4Aje\bKs4fF}>Ǘ jDuÿ'nY¼e\pAñ^ʁܒeb#shtVw $vG[yZGUD*jƅQ6]RUKGM_)7015gӏvu)$;éq83|#]Fs 1ed[[3;P2 u`JG(gj9y}~*C}ލAdYD קڈM[R7WU[?,tⓝ^ 7nA(9cЧhS뤬E4!<CڰGN.s:ޖ=az57ܮX+": rW,zRQc+"j.Ik4LTb{ьVRʯ.BOuDOUlԓj.+13TD+KqG'ƨkCt9>'K;SMW8ONM3M %4}sUĝKq=+R4{樅?r⁙噤o5LGBg}AhFFEf:o$7vadX6>FxN[GL"50E_cvooɸl*m##ΡZWȏ"@t;XpO_/Mtsjfy.(|>NCΥ\쭿nϿpӊN1_o ! x?]W_4pBfwlϜ{3Y+Fq8Y=gk:r 3xC*eb ugyj$dِ}݃~Ͽ+dZHfFK!2B>> W*wNgUnV_U,N;%U2)0FXUP]N-**cnSO[zV1Y\aE{wL_Cyl*㥰UpiX1i 8P-S_EVhEr)9XCVcU*@[ m:i )X.r,9OW_VN*qDs5zU!ónIh&sdɗ6q::l%a݇ ~j _M,=$D. vo^{)5h(]N^AU3O\{7if(v0W'{ _n=zmZӷZ-c${pJ r(%4 FGO)aSSHtBᗛջx&d^*Y f_=yPޤ<@ 8R?13 _n2"waTfg 8P2^bD)-L߅:nj]@wMjh&n)϶vs\z^H[=tka0aM`ᨢ {*0{q=T6Pu2U+,zYb. {/"PfuVn"7 x_7* -$Ly[3W +5@6sM'`luM Nf4t_.N6{fY$X~0O7ঽeJ>kOݘ*fX-&lpJMJZl}DA_i)JxY̓ ff3:M#k`W0kXL)P4rp^r$nXs~됫@>y΅V,7ϖZZ(sw۹8(uhD4sF"y !}rH=Ib?4*̏}p|ȓ)N+ ] ˲S5DR.y?ُI8=&&O]C^wA!I, )ZuLK7yI~4~L!t; rռv[,(Igt;GM+E:)pFÔ4FkruWfQX^LG\"@G 6Sʼ|3 DHKQX~_I>BZѱJ~2 phs!{ t*HvQgpnex#[F:u4&qr;bz5T3QQQo}V՗Br(M}ڀ5ܟ(㕯-3^_%t 1N(V!2fgX}~N-=c .SܑLՂy/H˱|K@JE?u8k|o9BH1?7 B)'LK  5v!2B/p5}'V@@*/d#NG e\:9d!;bjz8p|$P' pGr~b[(4ܯQiF7/b|9d-ܐhl`(rJqh#:O R 1l뉣,NVWߞBN*V8]j8m:q֒SȾɟOɒ)A o{^ut P1Ks(}77dvc o|'s?gbWjjfC qjpi.~Qh>qhʲ"A|  &ZA xh5_m;NGde(R+qΓ?>{ OF%L$;t׸a{88܉,x&g68ϲq^J{W4!ʙXZ̥fzl Ml#i|$ChSYirOxq?JM0_m|aAX:>-Pwl2פÜԳMjl:C"=B?ùwf0O1j|7uw/rRނ [HVE}hKn,myN˖˰"*w\" 6 Nj 9mK%Lm6Q~Kcu5%5xҶ6;0%#;Yƴ)6+Fzsapl((EGxi%) ? 'hR)@b6OΩTpt;_WaO[6H6.Y6uOZz_uK#H_S%)Wa=l71߭)*5Z \UɅ ڋy-Hbb1gY(Kj}X\Y%ʼl Suqw66"q_CLLQcb)iKd 'W /Cc%+wMI> jo ,.inz {~KCbj%s;-Fƅf9ƽs6)=DRA?Η$?pze^_l/6vɝty!@=upu5z|{qtt0Jd &IrONO'[C֋EhNŲ׿+ˌ6v«κگa~}d~kJW_t`$hׯ1>+)\LP곮&t0>^r1TdRirVNJ/j.|U$sz̊j*:6L{*OA'{&teet+`:?35a]LnG`!v@sċbf/%]bYv<zke~jSU@B~rsxzdm4^ tGf +$t ⦴abJdJtN1ݞ㍹jY>FyohJKd((;v7B:q6/YvPٸ\ ]w Fx`jnӑ#ˣ!'bdF&ut Y蠻e7qRI1?-,ØO-h^ʗ<(ZT6 Ӟ@#35Yzxv0GO3߭ BS|Lib[ 9_~X8D#e*(+u=x3Nt(9 'xI孛yvtpleRwm%"CJCV ~|)Ύlor>ǟ†f:ʱjʜicWXAf*0&;Kvhn Bm fG&U]|@T%_ZMD^7ҙ;UŖ[_ΰXD}QK9\T stE d;WJ@S_[tm~ +.oj!FQ1| xC}1IbTr%ԛ2{v#>v`0ܬOʽyhrسHɭÑG5Qq xptog">ZL%)^-UP|uàBJrkȨavS@'GRR|hXVU%}{)syL-C ?&YUxYjBeR q4N#9m\ : {N]U_ #$ j{^/NJD^M1,URd8'<w(㶝C15ޑK+JF'Ž_. q@ة8f$PKq7n,n=xx?+؁j72Ds{H}dLnvKBZ0PA uA+*ha@H&[<]UB 5Uv^EF`TvV8AH &{DLA0&k6[-Պi;7<dx٦]be;hv=6Z8ŀ9+LÀ wHo/b~&v?RDuw#8}e1"K)E!8W%a<1nj/>]oR}6CVT'QQSPXA8 #V/V/^>ئOQ~PHy(cSww-L69 ;G1%/ n)[,_bHx,(|"(Xz<ʰᛟRPl7/*bNPcr|(=̍z`Ž泥y!ώ@~o =ᒷl{!a3W?0#iV\Sؾg3BBM޷,zdDgL;RvDyGtjji;FUdGV>)ž iYJSx|{z3YRq7GkT ^ ;}wꮞ)YI$=Bg\bxHF N${F}6WOHv 8Kck5j!A뙓}fFgݷ24: Je~Lt/hs- JW)#͋ {qUc-V:`4)v@m+cb'<_g68 `N06#?<$^Oyzps󑋝tmCbmb8M݉,Dl 2|0oWsjzʸ},q 5^>C[,B.g"FAYźɢ@_і~W Ȱre؋ TV9|7NTU /E},h"zyȖgbZm{#Wd+A7tSNftdp?; /{i.4jV)A)k!ʌnq.%o>>^Yٓup5_Zf0q΁\ZG}j5 N> FVa%PI<>>8ર5A{WS}%C׿ ĬںE#% t _ˬyDȶc)r%ƻʒ,e)[:7arDAU4_d`EƓQ7Nd9pj֞R3Vn2lM3U=H%ӺFM2'%ٵq#Eo߱T6n}>,+'9 մ=56$M{oŽB[!xjk #N¯^e1O;C¨c-r>q]JVl?4D:gE^ ŴDIBB+:.]ư/C4G HY-XT0nv*F95i,c H Z֚kR>c#)HCYIX!e~Zr𠔄*[Ŏ>}i gD!ؙwKǨrV^ߺYxvəҥ{`X&u$fc T:'v~@?mu5R 4 PUM+WE]$ qHoIƭ}OkcxsVuhU8_5̥3X~\DD[QM>ϺyWKpxQQ7N_ۼj(R= s]FD{} feCIā&[9c_ ȠDmZՋlF˷uyйB4P>V`azduB5.5/_h?!/;7V#fu(&|CfR?Ht[ͩز˻8ID)VBL= e>qy*9!= d-jqMgyR'7Sd|B(HwaRγ! fGR;sOK (of+Dd[+o&8@n+tT;kÊċ) cV9%_)*;3JhEMi2S꣐e6!!oYs:cMeر$0tv>| 3Su/ڮ ctHtlUrN>vY]ҼI0bti0.0rr5Eq4+_8m4>KbR,/ecb`;7sA*&^ 9*\Eؚ9n+ ~]" g-kc209/Ǹu@*Wg:|c)U(g]".31 x4stq4Z@@K'aKӭltaNZPt٘=r71 B+zyu'߀MZycP"ή[jg|ȱҮapEExR bZ̬XoVk:sO!<PQ{4ԍ2Hv]=<J-@2PGDU;%`߽Af.y)xI<7U!dZ+aL{ZlA<0.O7% -0k[Me8NCIHn/C11_V9GT3@KK:8Ev Y}.*ŃRDJp?ç ۖ+_?WhrIմk`RyrVee@񘶳3ia&tW`鮸7vA-jN*Ë aȚ,[SKK0:$mݸi#?]Jw+Z4<1E=s O" %m B"ec]# 7MJ6Y)>LR?H=} ]`\ߕQΙZ"Q &YĿJDր-.SjQ|Gy XeE ~g65C$er{D;SH4,<"G5%:짵:q`:`t m`wjm&b4(F ]͗E|DžW檠EWLYCمrFGg<,7.qqhJx?qh+"jȸV/5,=t_ 41 ex^ѱ~ah'dDe>OI*[.-IyU b?[+V?Hp6&+#s֠4 hِiH7 $G^֌D;ܑQh~ b#=4DoVշHJJ.MY]gUsɺiXܼ-\_ۂƛퟋ@q&֐xC~L#X 6Qyp|?9wdܪAtVwLDDo=Fs-NyFwa`Vg518N. _)xȡ/)P[;; ci>o*`DEaw^Už2;y7}ΛJ+ok9~$fy9wWf_VR{/KlTztv!YxU^ o}|جEZGGy,&uZq<;!El<?UTڶ_ L'DYxގ>qNC[%-/8!8f&f5gx_x2,6H.i=Ƽ6rv]yy[mSbZ/c$RTa/T-CzdbqaõƁdOo9X#IS8$;ΔFǏQbaY3v~$ ^ P@߅C>A]gBEiM|¸ ] R <"m^.  7#? G#d!e(|2!D!r?K.C/}!]Ekۀ=t6{yG,ymn232) rk\xVޔIU(Cwk~@ ^ȳڐd)\U.g|"3R4X蕀H_ѩQqK1 CS ^jUxo&W|A-X OT -SrPo8H~6qv-th{]P_Kլmc PCԅo÷`p@SiyFbYNZHSAR?5cEEa:>*h6"ࢾ+Ra)UPb ,Z@IZ4)BjFGa);GF1e'@_V,}'"/Ȑt>q8 [dgQ|WkACV,s1TErF{* ILyV%@KVx?Ū"P]_>m%pL/ųi ?w8GrdMJW;Vl0^$HkߒQ}z>Cӂ8.0s'"ڜe@ks? w6[rݪP) ʰ* y d: :TUH1œ3~GYt TTU/e]#'ԇ`|$eWD$1?e+V4\wqgFF(b㷺#^m `!`/pnvcf?S*VXc{м\AxܟE LSB7\gEZͷ~/._do 73klM{t[ lD'4,# ~%u]A>%K; f[ikyQ!ӷjRwd]EU+ Z~o{IeIy.Q>e+gqXD~YY1S|^tv*ҰGgi.-9DYJXhY`#h0*oc<܃<ѝ%D0;kޯ.G]JJ>G?{nA53N _eݍPUXW$/_7aZO7_h""TuL7˶q.{xl^H۵gH UaI{XC'8fz>ۢ`_w DpQ\';w|e!/L.|Hں+:{mzƂڒV }(8ʧz}1ك):׭1wR'hhZa)Thm$<<@͊ʋye<^ ((@^*o*r#inVZ.Ɍ A:a,,qe9BKnG>  /95\CiB%)*u_ܿnҚ%"=nf('$0##`xI"3*0QP_NYN#tJ qNůž~Q[x49,Cr(@whOeԔ׼[Βqfc[`MV'NGM[=2R쑧R NWK+U&Ġr>Bj@Z)vfp~\F g^ZndzԢ}b O ׫.՜%TV k7VdyUײ*5zU101SS81ojXwd\Mc Xs%;zU%ۊ,CN)9 |Y6.&Z\f, J2[lғaq&#@IC`wU4߽u{UI;asH\tU~ w?_D z ݃k̞' Z=G9aJ ?5@c.Xt0 `LY!_cxs\sx6’+Ύ-!I䳪LB##M-!Qk3.L=t Nl<^ 쇽pŊGȆS!h$@khp).)#_ff7vx=9(}5和:]y!x-%)] t47^rtzɨghE!fh^dEe ~nhą4߮8 Vo~]{,1g,ażXPt]fWVB_56)O\_ 3?O`ٻ;n(Vk"~1 UeVhv?C5 `k#`}L8wXXw9@z.:{WIQt+eO^ZH=^E%T\~cL6pڳ7`'ת= g,%2uk,/x+/"1(w2Ĝ?l(<~߽(~M_~B\#TJ׷,~~LܸTz×H}>n{҃:^4#Rh=kCbϑa\7 B|h&{w#pc t{mlĜРQ}>t8׬-l.Ɍ L Τ4`1.׳ES2єOmE]tW7lQL_7K"zhrYg4h5Zi2+gqYiNm@VYA#J(qf1^w\k io/wc(y AŘJl[L9fKC[xJ:$EbU [VdU]~ێmPIS7ԌGQ"P6ɹ`sFY-ʻR xwNU[#N{Tݾ Tٮ u d5*vϳ:0ƫ*#oc6&[> QȉegiE2 KATg, :m-.sOZ_]Yt}ZH^+Rh!(baQ*'ZڪxsGJ^:}r[~vҜK?Zl4Ҟs@ ^%Q,Aᅳ_jV;+pr~V%}) 7jܯ=]0|_F ʬ,$?`Hk_g#U1 Rrp2y@Bt߳]HL 7Ջ[Å z?2n ˞(['-:vKwxwhR G*;Op"odZIAнV>482G>-Nux%\ȘA<&!ӁbT%.Sz3e ~P'qC oI`֟r8' ?_{j{i}yqF""pd_%Ƕv<_ e;j͔w]?~Q&qLٌF*(ͥD's eŠVN}Ŕ䁶CƧ8JɟyMvn.03+w#onf+#)B,6>dKv]}ޖlgC_OW)P [.Rb!Ͳ~nP]u)SakgavV(5ouK s([ @#,1H:B$e),7'H \DŽq"Ӳ7lp;BKG`}0ysM7|\"kzb}$[Sm6Uв8g/`]}Bc}Q=894e^[Z _jFvP 5lY&)D'{%hIgyoQ(nNaݕ?p6 m)yQ?zpW>SC/gxM9y ;ulXy}3ȁ6}W9QGabn-%P~;/Z'e^ה+IH8%O=SڐkfF+b,1./P- cYZ: #NC5K\W+`M~:s!~nHSÑ7F}r}0N?%{P^pJXCS ~MZ`?ҍ2D\sIv2z"qgD9tꯙn1^t'EvQUȜ'f+FJ\WAW="/ʍ<oxC A1YD_aݑJW#KLB& R{r,\vxhA̋KѐVcmq/K"+Z71hԔCAzXfUҪu&\u$BRT:sB qڅhG ?gرMS|9{̀z5{/Ϝd ![΄alP[@M֌딛)V$ϬTI=uݞX3lupŭsOv[-mxn$`\e [bV,TKz'4 P 4纕!up0\ɗ!m(X0J́ꍳYiK:s+oygL2C>Yxa\^]wRA+vNuu5f@?$%&ʽSQZ ЧKM,ϧƠ:z3 ^k},pvi gL2#;U9u1Ǫ4ٷ1|#^xYl')RZ"`j'\FaOYBj8?Sl ӯ\d aʬV`"ɶ^%" P͢li>HaP ќD[&U\7W$!XXSX Tnq(ͷ_v-$|On6 Mq?8:˯X,,e@3. EpȿrcNK0ϧfWT<$ JxVԃ3NGЈi:^)F374BP9?ǥ84->7WJxɦ;( +h;ӯ?',p,$R𓽓8 _59؁#Dt굇`0DnZ3> ~}jZpN6S<\(cA(K͌+?QeD-Nǖ~qGQ_ރn`y)%҄eO@BŀbGW; ŀNt"|״s:ռ{WةUuEf'9D hsW6^3aSPl5h) }e$M tX2UE@4\*(?B!@x8 Ӳhw9o2Yw8|0[)*5cΩGYuź0d1V[r>5R6 ̀${Qq;ӎJf3_4+EQďMRuf"K~>֩o4/"yXUw#ʓZ;s - UH;.I2`mE6U^7K~h\ip[wVOf@FR׋0*֞IIy?E,oV 5_QP+ ָ!;5oL CA ¯ c-w$v]SB]5}Kq¦Ӆf8g=*8x^QNˢh9X8Æ?_Q+QuAzb]\^;6~qBUdJ޹Nk@MW?00 c@>f]Ootws"<5 f{EjHc[ ն~sr2C$@U艃T {YYQVp`L%*qC&iBSgE$A4ٳMU_?X Bre}*&ł):RM5j ,h&/zif_'7mc0oz'fl4oWY{KCE( KcPtI7lUT: Bb!8R?Yh!S TZk";-C8y'n[‘6,-Ty@5*Q!]D$e^szNT0deð,91=xAru@sꩻk F8d-<>ac3沃qBГmۧJJbNrnևm#k(Wo݊Ө'  hwr5+T٤uy E:Tj?u7eWׁAwL7qD~*d z u]iWTNnMEtBUnv!_ATC~O"5>zQ܋ҽw96}ue4#4#~`˔/[Y]e0MH?^ޱ}[%z5qTq VI4W 8H@W$_Zv1]s;K.eǙTDI|L%Kզ w! =;(`M|TX/Vܺ9pb.&ibY 8yIoܯμ)X]#G V.a}FT&/ "01 5jAխT@st:w1ã3KI& dYr/wUIO$U3+ Ø+dC/7A1tuQੇͻB\Yq €E~v*Y=;co-3JoP_Ta._ L^maYAh YzZ+q(]^Kɒ5.;]6 F@ O7.ȅa(cBԇx9P\^% m0xxVc׏hUP&Fs^vߦQ0xOдûѢ$ؘ݂<&􇰓coUO8`X74n""̟»8PV% |JnLv֏!qgmj\%ךkr,ڢNX~zXG\s1n 6ŐŒ+G\_R˴K;F@6 QfwLTF "R[pcH0w9/@VU ɾ8WÛ$f3(uXi1@#o?QI/aCd(TĽ?<_?ꑋφuo(F*F. urQ DQuK5o}-@݌.pF3q/Kat:*1}z r*%:2 ,9=ߑ죣)F@sŕRFyFPDLtQ@R&@k٪#Cw!_TCjy %gHJ!8*g}(#nrvAW܌9Q=t{-OG.G.KJ0 T(_fٶȆjj~dg&(PZS9B\#ehge)w 8E"U[#ɻCx~xe SϬtg~JAug7."'`O58~!)EA"(c$'B Cțz%V֚޵?rRۉ>fK avStkɝG$!6>N;Uį}[iIf]x4afVcK/厞\2Bkll 3d5[ 'u6XԬeLzyqўpg^IdhD%%V&g$~ L#oLa|1ֵu&co46ɍŔ3i\P5o͗4}PҕL E;QSw_X47Ҩ)UHSyJ?Ĩ[ž-XH.-nST<ӲU:ObfZosѮd*6,=ޱ4t;x0kF?#/o+g<+ruRDsFVnCDg&hsl ̟;iy(뢤-94xh'KrNj*l @ dK>  \WcdS˪T9oa fO߄4{tIᛣs/@|ptye{=ԾV!_goXpA3qbkم:"M>|Cb~sZ6DuzIx?:G08ٰH&ܚ]JXx{} =t~Fؚ}ZK#Tnҷ=IհV+60&RX{C9J/{ƽ8n.gs"[8QWˈirR@1 F!ыqq,nZjÔ.!e17⭤8P:# _q`gm 2Oߕ1cgp6~1Kk39@ ht(D ch,toQ9KN}7T? {1|~;jIUQ"ehq[ybRu-=oRW֪< ͓A" vBڷ,v٦K3rKY @[ pl~>-4\cD,UDAc%l7!!tj}76m hX&mYFLT.(l. Tm{s[YĈ4Ӈ|șKu-3)4nHaĄgF./W~PfةDRyuekd+RTnMD_Z g'g' ǣXJ!RZo~ףc9kd9"ĚG-@[.hf@]ݪIvEQ[ɗMU0WɩdM |h?P`g#uJuתb7661^#*"zΕK/ |q .Z鸋L"8\3õr2a!$Ί'*2Ύ%KHyioAWaֲKض `݋/eQYjvcV Eoʎ EIKEOr];_`B:>Zʞ)oh1[y4(U:o~po.m;wjȞP/de'Dr%02Vr u}}]&rmQ)+8)0*ȥ Yڛ`=:Mzmٌ 4su2 )dnSF'*igj t #$@T ˮV؋MḺ6Lv O&}1}8_/G/7[K _E}7WS+Otrr_V)`.uR#͈{dꫡA!74>=_-> b:OpK \5-{עβ&K9drT†#/h%S@\3u~pԆ9Sw~ȰA۞%ê!_LjA/CVZ{!(!_PcRڨᡉל^h}f IH}tespb0ϓAŚO 84DsȎڧuذO@6?I2ф]D[ ٌMThO4nk R?EwE ђ7<-{W$9{eRlXOj!n R71 < ´Ę*IDJC{yw TkU/e+~T,h;!:?p%sGp ɍMWzq2B~U*ulɋ8sRу,:BMk}6]o+tpD$*ɉ@\gd b6O{U^Yի.fI 2ڄ;3MsS7mHSi@f!X4S;Ւ"M}cKYVIM$Z Ƽ-_ۏϕ L=4eȊ~ʹi#Z'6KgC,we%i'WbϞ!xp@L|"\RXnƅM po U!S];³ _ʚ/R*㈑ X=3F)_w1̱Hih*F~MH,3Ϲӟ!pPHrg}P3XNv8\j!!#=;l]rWis:]YI$ 7,hk0}(oBݘW:Xa۽a\ -4k)}1ī\f2 Hk.%|eb8DU^c d|@̗\=DT 3d)d8x#R ^۝7Gf_@+{|',Ey9mA]E)O!s@2 ZgHb5s1@dKNQnW?S6/CYF+ses y@=jEV !rf: ym];‹R,&m3ǾĨeO&ά [fͶm:K%^j!kFKqw#dFh!+B_IxVI azزJrgHeZifg.&P!|sfaܡ*7T-AT/Qhm/h pAf>~wYZӂrd"&*zL5}t;SDzeՏHh'yDfQ/3O:#$YǪjDhr2#v.f\?fRO@!,H~j GK= $Z Uwz,Bl5uKY eZ M],{KфR!E n9֙'ʑJ; c0bWEl9cOOB\ݖaƆ(kw*7h%C؟#BXʍGPWeMߓd H%sCc0Eq}7Pfoyx '?xuo!csDٝw3‡wB]r#I"S\A烊 5;?L59?'YʵIQ_[$Ʊoҏ$ϓBzJoB!%@,T-oIz[BV/6YQv ǃBx㧱t`V/YuFn+f4lYфlrl]:K / S+\ 8^K\y~->Mp+Vۼ}zԅrd_z:a'9a8"t7V(#Ar 5a|=AxGR*A je@kRRBc(>mo+ JmG䑄]wP66718<,TLVl7j-㘪>p5AynM2ΐlH Y}NMŠ6ȣSZ%{ !aZFy#4v]RajX]5iQ~ߨM+8*N$e3mp MOyN|oF+% 옚i WgvFu63) _wn3Dwm(=_d4(`Z嗝{kv2tWKӄ(hDzW'=j]W͢sQ& bk6Kc%Tv{0ѷ x}UABve=&U_YXcۘ1J+=!{ɬ3bxb b)P<,vrUd)VP r}6^M]х8og BO &K&cRGΘ|/H<4[ F*`jyU;;,85ƿ8i7qKaR|U3?`m#"6|cV WfoJ ZzƵH ߁- l>%R}b`:ƫtvt( ܧ[e*ϰ9ar_FSW7#]ӏNʸ_P 0K};@0M?/fݏEwdp *M̰_L~x 87`"@K-ePه?V"QHլ~l䩊v"rp<9A5wbQx/~sشvq2%Cgʈ9S#cOyN>zy;No7磛 $ুS_|r4S vٴ˂8 6(];{{ @ҩ'r&\}s_~̸|PݓR%uA±,VeGHm?N׊br_#˧na 6,өb m>V 8dqIqk띗SЯ w-ʤդځk3f`^?n~ȾZo8aCГ"a%vvꏀ2`hGY؉ȟ~$2(L\B1׸C(q1jZ!@+jn{%9K 1#-q v.~ ]/Ut4Q+mE-ʈ"ҲiL c7S;|W6YZ!G+u.>$a5o1=[Lja@S: KW:/}s=Rrp㸡O|lAM1N4#,Vh,an~ԟ!䉥dN9,ş:fխE+, RBڂ($ݑ 4~Dc3(N[sWZ/n)$yeSwĞ t?J?cZaFb'fwk8cB,*B+7U)}88g @*`Q.N +U}z>W?!y)Fe˺t}ǯ@z'ZG:gDѢFYͱZY0S#rPuMUsAfn >j3 u`M=}UVH1v[lznyq BԡwL;aNeDZ5O(S,v֦{#8Ϋz؁Y >!+mCj .~R\j0JA2@>)b!c9uO#Lin6IQHb ܂0(MA.5ZW ug*Zu(Vr,egj8۲L܌-α[YW=E =gK ^{Fct锋yG9crZ%uy8W;o:Z9g)Nq%@I+6Ƿ+X/y+m$䪉XiTŞCbwN{#h]̔!`O۾t\GFW:v)2[kg)4blO\P_ZOx9󔏡W<%餾҆y CW_NnFȾB k;,z}pGǛf:Wb;ɳek .C488j;Ħ-|,ead#G"<#GwZjy߄-Eeŗ,|Ac,ɫt +|+ kao3_Ri'Ŝwg!=&`X/sX!3QŊUMWoYߌHztjL6J^cku ^iugDC,Do#OM~PvӹB qj&]7=id.]ȈkAa:}'kMVӜ#ӻIєr䋋BNfWHJ$D`p4 drJ#\Z. ömPYC~ahX_ujPcM ^|M/}>f\y!3SJ̠=J3l9R'5z"[Nr[e)8ؕ}ڔijP YxG⦗U$bjT]d jx;S{xW,$ۿ%5:&E/ J;de`d9ɼ3o0Z 'RXG:O:m-]ٺ Y^oefЋ2 )㢤A҅>wnXGO[KqFMєI=x݅jʱ8,ю-@@)L`}%tYqCR՘  AExb+ݼ1'9l߱Nk!/Ȫ)a1^_̯>Rz0M47$} PӐ&M:ʳ}3="!q/4*Ѫ:c+D\B* {ڕB<1p6̈њݙx wN.9KBPk9޼6`;ܑd_Lt]f1 ~K`lY6'E>|PU^P\Ǫkd)<'=uO>o"o} ~CE5il-%Hwc}~z1KdW$Jbڜdɵky!\lyUQQ53EA62 '\6BaUM4qZMDd<#Fu?FJI l>~F&:s4zMbvuNwnbiQ=e)`7n*d8 ;\r.'1S)8 h&~ԢvРܩCHm> Z{%Ri_uڄJxQ,Vk&ϗR5"AB,:5Z*5#'ۗ[tws{1\'r<`a%LÛN-7-v3b dD# ? kgJ~F˝vH"3j>!ؼ9jsIm󆧏RoBQߜ嶝Mš=Mw\et`B?iQ=~y&6S nkCa  h$p*T ĪE-/ 5,/)[Wi[LiPB!PΖl&y-oD8>8l<*8I:.6nKʞN1/d; [~~xf8ѭX<*QN˒¶j:.`|UB AoMw94vs{'R"9v\Du&W5nAd졮_x$m0)taw|DSNm$>-}XIkj«؃5_Z-rrɯhn3RB.l1e^N&fܸ lAx(5:=譊biZb}AP1Ir}O-cߟ|h Ճ G[킷.O!:lLJ_ "UIDJ&7⛸#Ar{Tz8} ,|`D依EENpCGj{ }rmg{E9]ӄo;?d%JN%k~O*)YQJKY O&֒/%2ywK2diY@Qb8JBSݘKD+)uFuÒ =Nߧ3U$pB?Ƴj0!|"\J#J*}=Fܰ\7:,F羆\.u?TV*6Dߪ[w#ɨ`]M: L˗Gk_mJ?M-B(nы8y0l2 Wlp,릖Zg7D ~lxYf =gV".=Ew P.C~mG\iH'S82[~C/s_do1+oʀdj~T)#HE@kSOo|p®F,f!Lή8ӒN7"gML!0: T?JQ]m4Ulkjgjcn^ߴ]e~ "R/؋%>9YR60;.2Ov*&tVdKlj[x T];1S[PR vR0[(Vnw==ZYH7 Dkoy8k:"1^hL(#9-mpcfꌰ/+~.lz-mUUbp=#w< 8(JbD{0c =+sSR& 5ZH*4m[}%/3;+66~.k2 zw;bo I A}]b:97ՔL8Q7M/&>fi06L~hi82f$CjqT⠸Kj;&q)/HYX{YiΏ X}pԲ~um;'ޯG}lP΀,ixLdN+CoC.y:KORv|}=L}uH9}tjn_)ǟ hC6FLv^N "rkî] w8L)]FTѷN91'gbhrYg|Kg}6ӵJs-^E`Xh[bdeq~i Ɔ-|3EEUh1絛XrC(.#&{E]P6AuQ3>S82eߘ> Spj {PF(nڼUF%AY!O,D%k>|?>f;#4";J&eVJȦpwL| z+_H!<)ώ&[ Z#o8>͗iM8z!2d?`Zd tV/Q{M|?+Js-QJlVyٗt &m@E-Âdd{ˎ"#n}OYU $m,dHLWrיoѻ87zx*[6[IS`MAp 0 T=DŻNIlKeqPNOEst\.2O2au),qG$j$Xje{iqlQX} s["TEU h;˫kZg gSťF|D4<%%?|!'_<P!2ў$2P.ԇ.9LBAQp6f~㧤HS `7RЭg)Ci^ek$sW+rɵi1~-hD9.څZy?Aȯ&n7#jZ3 E/:RWcl| YzpTqO # {!HtY>|U)W;D>>z]Z)95e7{1h\B%hz-+Y_{^@-475H`lIF')h7=C-zMAkB:a]"r3'4BMo_OL;эvjTTyC{gdwPDw_I0*$\-B&@Rhpwh^EyD:8VxgAܔqi|La~46$F>FbVR{g _c9Ugeg,!R3U|I3mҠ+wk(pG(xдF03PF@X CPS7&d=@ȻTj-͸FNRnP7u!V-tp"o3ȍwYul?=W6Y CV?F^ #K#$9jj˘`D}aR[z0^r- 36J?jk_~<5~%J>p_ӴKឱZ^josW{#{q%,gO0)$n R](omnk,uT9FeY_{a:ȴ2L"UtK+ ѻYӛqZx^d%Њ+TᕂAْ5t, 3FϣɸAF%, I{J@듾۠,,Sg+V<2-K(WκUˆ/NbĀ`" A#3dZʎPDL"B1V|KaK4Ja:(wnxmجml=ADiUrNIۦ S?8G# HuSV䁺 ,AV6ޝI}jf^gHmV_vblY <G.i? 3~O{ɦkg*frK#7-J4˞ b )(˷HR:jv*M4zqjzu9~}[ٍRj~O%LP?XqXdzڢ7$V?]k9pH}t 6h&kA4GVän ry"6Ti&5x y]EB|QA%X,|3P9߰)w.r&5dG z#+P Q;-_]27 >$ƛ8ha_aCCp>z'!RذiNAFYVoJJEF 5S¯8nS ,!oA*a+v0L_ +N?13rE_BX;$10Th9K.ش)qJwD,`C'yy8Z@8b̃Cj[zA$#}t0sZK폫_q1pN)/|S2W6DPxpّZZ%U_&=3G'OuIr[ e;TpjX:_zQ/gf_rvM."SlҪ./9Co>pn #[;ƓY~&lg ө3|A/P7D(0O{AW&`h{e$t )HQF$IpIf SlʹO~f]3h6^4ɷ\d/h'`)bhuc=opx+5S@Չ+_ %" Qy7ov =DaskXkS,^CX gh>1ɼ8u]Z x1i(҉͆&@rͬ_Pab) 7{`^ψ+{i_2v*AԠL*.]Gb@@,Iey>$ȆfVʟ](*E7f]f [}#tq_3F[skF-Dֲ1;ZP*12Ihlp&2`0=@J^h /KbwIY(F٬TSj }N6>s3S5?b!5!(®}H!9Lﴏ}r)rAZ.[ `c|cō=gm%iֲomQm*^B2< v8bȬ;P_VA(c+zfJ[kS4zeKիo>yظvxm!i8;i+HOɥK|(xN|/ZikE% ̿ MKYbY p1'f -*s2=Z֤E;s<-~!n 2vidΒއƠ$'Õ,2m&](Ba)"ZonC $;R}i k.я,dz( *AcdݿH [d9EeR=2s "Bn /l$+S~nwDw N7gl6=~ 7 a2МDrao۝?2DN1yS+J]L %Tp Xyu9ڪdL$r*FYT%O<ed>1=C{GST܊+_>'7bI[i#vD#w4W8 W{W[B5 \U2H+(1q-O!YG)x?ղ pU3: U-.|P #cM! o,r2^YfJ]/6@IJ("c*5" ,_f%gH&ݹFzfO 7L/2bkl5놀|)]iA-=]Rv)ӏL>Oe`Iq}ЛNoB Ki?lP ZfxOb2r7VjN.;&Uc0O7#"oK ,)>[(V F)W ^dY|nӑܽE#IYԝ'HH`$Akmмr"|.c@9JOiCaK)B.ֿcRRH}N2mT/]ړ][{7:ug~M_3tVxiDk9( <9%)eU֠duT,ͻ㭦}Xk!xNo/|D-KY0)uޥNUi3 ݧGkν}Z(#堾ABRR̥>gG,DW .{n y7S uk.ܫ [ͽ?>f7r _^E>. RZS%h+3 &B,y?8 9/ׄ%F(sQ!_[`E15ts9)7W'(}MmNsE-.yw\ =M..u)S<[.Z~Ne|%jm 7][tt8:`,Q7M7'|Fz#N,SYf;qik YFm'.-ZB_5(qT]'kiSmFdh1w%뙃4̔@hh6uhdo$,fn{GCD;p`YDCY.șQ{ڍL|QquRlM3ORUHnnGN+6RjWɡD96AIw]"7K%}|wȬ^m؂9r"Gg#)}︒{U&0|Eh9?5ޙ" +\dP%ȉ]uJЅ .~;@w|:A? &W4 $? TCG6&<.#he0eQyC|e0Q-!EN(+Q2֛7 ܗ{6v҄+b_t6px5?`%Gz)v<pr'M"c.FPNEz 2u,W |9p>7Z9Iԗ٧(j/Sncm]qf,"^+f2y|0:oz޻~R:=r{ʉ&G(5iAwʸQ#;rX !Uq&ʀĒMc*4vjp.CsXi]Q-qleQh:rYrJ@{m:*9k_=rmN,HMBǙݽ _Ƕ:/3:鯼})UnX WZ]*+匎a?潴8˶w-g<@;PY*|a8.5gaIƜmW%(, `k]fԍXzj8ںD!_oc;/.d {MZEI_iG@c/ Jz9GX+hB~o6[\,@0b\=\5 j;d=/梬{Tښs,rVqh:<^%ی7 @[wE&!A$F3PiG֗:jPμS%" lUȚ`'KX^+PQh,&CP LEҨkWzf<}v`u|(`zFL6u-cNX0 \gnazN[#h-@ɹX`!z#D!DP*|fK GP9nP"@Vxd%ܛh':RZ&7g ad?&0cp ,q<knt/{Zr C|uX^#XfXp~%PK5 Y׿L.fSfODt*EӁ򙤕veȭ7q _>*qpeG?GNG]IqNPﭨE!c}E#: m2 tMAjR?'5J tib!{cxuʐIxgqG%xfGuהw~!ѣosf֠6(a}Vam3{C+O (VI ~;G+^َ 7u.N+wܜ&]UaVYts#C@oGB{B>+yvSt˙ *3*ьE,Xe.aRȇUڲn-dt.nĉkYt D}QkW so)YbMIF˳uQs[<@NϋgW`{n Zђ5|ҵ͊UKpMBki7Vr7r'$w0!|F]#ҩT%Uo7 6*妻IJ̩Î{b˛%zfш;|/>G +j܊J1.x0}~EU?g|0hlP.fMr1|pPsft)k6$Gx ROg1Z~I@x X[m(ZVV\4ZKE,!?eˢx,"bɨt?ڔw% r:l>κqq9zb}RO}ݽx(*zO-%hIAgWΔu9 ]vW3+M?kkׁ=Q-z渏~?o|z@\M N*IwI`/" f[?"~f+7jWQLVXVë\J+<5Ҧl. H{{c~yog*oevqDKbjXxyJ^Jg;suaЉrY—:ٗ (i iLPkARGq)ZkÃ÷|E2Y6m=kr9%\gV)so !dcauU q'}')sT4q`_H=%#f5Ae) 1 uYr[c8ϸB؇v2aVPE2ܐvYŠ.iHg۱r;f&ttt,A̵0ӑۯ?.haEL9ag0_&{2yb{W]]n+M 'cД (T?E0 J)A7$?Ǟ.x1Ǩ]U3xcP\$fL v!'{Y6͏ѿ8tFT0,ϙkYCuHchiͽ7k&U1aJrvx=d_o'(3Ӗ8`FYGɺ>u4q}Ԏg=ͮ :|f']jT@(V.DI.}̲1i`Wv/ cغVNߕ%M]o ?3n7 E?9qNiFH! '*\Aزzƈp;LBպuP=2o%A},V=9pp{ 'ώt6af J0{G.6J%d?]^h3_H'SO3!)MY0 lӷ(o;\hߪ˽a~. v(>Ck @!. e30.bandD' iR,3?&A=;): l 94fXvWm1GrRVM9;R˚ٹb@@G4vE}|_ 7Mn ( OXx&7Xj9օuSrlRIZT[P|Ű{Xhd>skeK]b  r )?%𲕶{t/㾯WcPS*|5Q+N:"GwE} DXdg9f?r E:n;ǣ㮽ݘ??*B[5gH' %3je3kP1ܸeY~QO,b'ka}:Hoe3tڪ7JI[ћq Eq-ˁXbЌtEX o3~m幩#c%DjV.LO ny14V"ڰ IJ@V-~c(ߏ0h( Z'&VgZSm|M+ʙYHn[b$}K u=4֖`r PX1*U8) /tJJOqXh4؄Sθ(.,BnGX ʓ?c] SpϐrF ؙSyCUi2EtIq1}M_|߱}~fh w{|Db/RH% *ìcSnhSf[h|^c=eN^l hڠ3WېYtO(/# 4GTX'iH_P…PLCjg5)eNyhݰ^  t[QFͮgB"neHIʌc-p@{'/C d `HqT UՎ-K쾐}`ɽ1v-=Qfa48 {sko1ޙd=[~L@]&ߖ>ǘL슾QFG^ٞJB3+f%ZEV8 L.4'Wc@\1(>ԧ-_rtyƫƷT:f)䵃J5_nQ_a.(ފ%A=Z!4lë3kDP(\H*G%@_f!jlw $"k%LU#`Zx(G.l^g$WLr .QI*Gg&hT;uZ9Bҷd)cEG;ӱ W>cv/}rբ.:&a9$|-A7|,E4~Jz4@#k'j{f.:!Ϯ|;k|"xD,ŝSəUnbYX׌(p+sN|ʓ#y%@ 9Risj?O[Vp 9zy,RQyaR=hWÏ4=O/Z<yӱD_ACsI`>8eŏf8:ki( 9n!68 :￝t vjU׎<85~}<]A; kVs{Z|\>|s!3f/ `|v9Ofއ')j$51`Y~10w{X;vVy@ο+kEl7ћR:,(B83ҽa7 @.w0JZU4.648lc`M>>ffAc s~W(EGmw:h=QTL1~{)5,};9%񐖈  Z5}pA%ysZB%hxV^H*<_)&K A;/`G՚uNSf+iH4{;x2o9Eò]U3Xsg9< dE/l71ПSHpB}&_37MA]@2!G+X Q_ ( $@p )H DTϋǬm9^۾le!yVB6vFJ30MJɭ5/S ssUpK!Th_~ڨ[a뜦UOҷ˳ѨW<>m4ٹ|)ykDČ\N*80L6Aor_զ9?& 3XgU |OBR tA\L5%^l" r`'Q  /h;eƍEԬ$;MOvX(0g6׳\u Dsv)45|Y5c PcVUdR䤄Y%jae\¾>TYB޾P*4k] q2 ?DeAZ~:-q<aj87 Tu\ۼ#iARLsC+3BPݑqLOhԣ4o§ iHG^ugߌ'}vc `m.HCԚ " A8t4":hoͯ}s2mN51Jׇs{CV-9r?fY]:XkrZ ` < ~Ny[BdJMot1 mS}=6z3=Nw|rPG?™,/L?c5! :FA!ɠlg@͍EDl-f Pt蠼1q^o[Z^Vhj F٨Jq߂T [9ldFйo8|Ƃh|ScL3S qq{xDSWs5@9;Db8J6w 1oGi`C HD7Y):=577{@ A[ooW45J¨ʝUTm6Q!'%OZ3a>uDMyHl]8XkhW *J@Da5%aZ|陂 ̰i5ۆx%;qE-kt~.\ XP:~^%H !;߷IڂO!I䙪j9pxR%W.(fMy,Lsߨ)?׼ ;SbFphϨ򽋍@11hANvfB^&砺H9XoNp/s_DY~ypS&:GQhL'`G* 2 Rk/8!>84(8|/._y4h݈ ]lYU$\^6Z˯Yѵ&YǴ="ee z3{}!/u ȅ{CMJGڿ[hSVrDAվj.Z_[V/ZT'1m(2+#D0CL/=7V`c)|B4[bl #h&IcSÿ$~l{K)b:cb @_>\Oe]&\ִ>-(s6j`Db}O[Y8{Kt*y_3A`WQ}+Ю{wB\s@si-ҁS7}tze2IYiIQҙIZcĭ㡘s @w_r By6{lkw!A<6*<405#i@?'|ZDʂ؂LGȀqo Q,vd?~>TrǮyUhAʾצ@RGj)ps(8;^!ȩ:s&R%]i ދ`Dg5Zvmgh${`e|ߪ8UFd{ lnF֦ٖѵaO™-m L1o8؜+${w`"l33SC(\ p,aSjje;4۹$Gn Uԛz/Ytu"\jt臥RZ!ZWͦT&)4OP `[@fC,Ϙ`zCr$Cˑ5qVH.+ӕL#?;;=^>j6tol}:O0L {Pr7Ie}/(fW !cV\ꛗq:fEk M݀7!W+ׯwyѼ GAfzD&@ /\oKr/>9ʋFΓ]!dy:"`yH46Ԟ_ê^=H Q D!e!#t:٬(7ۅBNS׾2lh<@f^q}fSĦO.4#ES ..Upr޷@j/E*'>zzDɨ|&6g5ubqi5ŻBdPBa/9hI(TF5Go넍XUeg].EeyWnyZgx3X5FKԂxӯO3Q>;a>ykbxJ^>(PIjvthf* Hڻ$Jg믰p_C5Uj!XleuVrC?RE,س*]NW%.ԲBs ?,?n.fgDIu2F# !f݋ǵL2"T}^UaiW;|nqRS@f =nJ$'a'',TS-E:=4f#Qd_*%jI**WfMn"K}\t_DDր0H2n\P4 @}OO>mJ}d7>LGW,#c >n={2419V7d)> βRaei8E~8K87EI.=z&Tca2pUXnl^.8[S. -ôY1~O9s3L q;+RDaeVlb地 XLUqV$H+!Eyv]+fsKEybwZcsf@׍c `7+yz MSD+h!eχA;ST'oUoC! 0R{,H1`1yBփ{gTΆ;=b?kc}" {}lc;1+Dt9њJV|jh>s S8T%QD/INU.^F$ּL:/ǻ;}>TufUօݱ0'6zM˸FEݶvCw@UR|QdvSڏ-\4MzNY,7aj7 G!LhOMM' "+ PIdiMgIX*7禷Y'gJ^~W~P:>@o0QW\B/V;Q1{OmrѸ!4~r)S.L#H`E> a7hfyMe1xD޾aYSTᠿr pUlNp@hQ ݬ:%|QkW av!*lQr4d* 3>ДTKx]d:}̺+SQ+CZtc1cCVGt:YS%WDǕ)H28$<Ϣ,˺NzHwɘ#Tvd?>ycᔗ3\ȾX`Q[K ΁.~e܄귞Upm}.TbXP"3kmrEqL, }ﵟ,^e^l¹aT}eO, RWk0z 1fsZ &2r;1MҙH{ \s}S8N )9Q{q͏帏,_{@lФlfq^]MCr/e8ohIl_wX&~tg$&]u 3 .'H|ag6[5JZ.k--8ܯ:^2CWk<27}:2|s=`0NLYkjD,d`b2 mb)ѝuH庮󂤎03ٺ+jCD9{8R1_OBG%ѝjSUb5Tcno&h AdʇQ~RQ2fD%O;/l6{[EI{l&f6IƗ\;8&}qq8Hv|'P_tL1N!jY\:4SnΠ zF;\<_;+;YcH|0ܡie3kl9Y=m }MU0PQ872I ϑ} ᩹]g8AkQ5f~``')WMp@@r2^my#ˑ$Z1pAT'q2'bG /߱n6vVzĄK1k͚T P9 ar߰^A\Lg\.gT"(M`, Tjg3]Uw"aشnƄIWV\8 qjD L^'.hT'(5YYA_0ɫ GsNR-jB&mb^(+hj+u${H`[mˮEVCsx8ʥgu:RZ-=F Y T{+\zƅo!*HjW@ ْmȊy&̀8 ^:[ żZpt5Xszóa`hPS-'47;K mWb<~S2\LVǷVР|4`~C1S`!\]syń| QBUJp^zI>F߽Y= iRֶwNh9_yxFVe&b],:AQ6(])+ 9K}t!.nK(r-J0{GV42Rk9G.m^*GښRQexD5k$@剓u/Qu\P`}M]`[G 0`-۾((ڕ1u4 .p )+LRZsSi꧝C:J;tzKY=|jL8 8ZKDGVvhMϘKt #PXO맒p l1 ?1OTᷯ^"md;H;&a-Dld/׷K?Tf+ͪJIq60;P@Docug͖ kXXN1Wc>?AkY~[qZ]pClB:qR-՘u#w աvrPSjE~pC %FL?ġ.S%6.f~ 9ق.xR[Bo;ZĠr]$D&y1ʼxhz0tx!AR%6 x~_.6/FOGG<.*0<V΂KDjE˷yΝ|ݽ1 (9a~. FFBP[tgnIN}_"!!5͝{F5I\JqtNwao~;YKUyb}2D>qDܲi5V_N({<7+ܒUo+V6:>mU;3jsNYW,O_Waݡ]0Y ^9ޒWtK=>Zv)Z9wt - 54*y?O{B6 Iެfvo+cۥZ)ѳѲ04d3e(@DI"h I?w5xLȟz[ 8GJ~Z^6k#TM32k(}/EFi PE-mJ&r']jCq~'47%t>%~I 5lh6 aRWmfz;8URX#‹+_{/S6{PI{TZv8m'.OvUl1!*LH;evQ<+~e/]zY茸GSM|yYL]l3'o&j$&uڀW[ HTq_~4 Mmܻm@~oϛwH q2{g)]s^*QPIkߢ!6:mK*T^ dW#(VSvOܵ9:d-)Eќ _]puZBm+!8Oȴk{vLC;)¨c %8hM ZQEE^O>m ޢ'7EC@axE-I %*ۜʑo*Tv:KQw}6ye T'U|:1`; JT]k_ 3;("#ff^\eZ)se01}zA In[J3ُ:oWpRw.W-ь-Dlϸ QSUG?~эfV߹sSُSrQڕț'm2aͣ o1C`&2eXі.>. Enϧ$p =HJ @?0zixa)-?.^#ʖkBfRZt]D J=@;ms7H25,5YuxYe+E4[ C QzN&DFN+1v"4/*=H}r{!9^qeLQߌގ:x!Q285r's[HX4HX}n24!,yI[K[_ ic? )N[ *@H)I:@rz/RNv91FBǹB? A/إEb38xm3эb#F9EPĨ`3Y:|fQ,gL-.0J,\wȖVȒ0K2K9RmToPu+9 k -AIK=4.tC#Z{UȲ.#.8IL߼+ʖ#;% Q.IkIכgBF쉪m! 6.bbV=k$:Ak+Ly'_hA7역V`3釐QǨ<|l/"_:(HzO4KuppZkzCWrɐ {.5$vqS !((:,u ')0a+~J$' 3e/e&2`@7#}>1䞬p @V[^Ytcc-me+ͫqܕg ґY%{str}n ?-/W2lq'}/uXrDed l[DjHA8tϧTCIX.}~=q.(lh*Yk%hVW$8&5jbdY>&| }S'~yݸiTvuk9ɠs1%hh :J?ѷyGΒJ .+"" G6e(v]wߝ O d+mXT̊ӟr>P.\'pꦫCHG*('<i1_Bt) ˔p$w_-8_o^O؁0 ~lh=kQ @px/>d~hrʼ?z^|pz-)͜/[}g7!k^\Q=R@u;\A_wEQk3nt'c+ 2kM5L5˦Hbã3yO;?f?/SGʝ`ӋjGաPoE+(tspxP6',=Cu+y_*W%r4C!9=\F97gdi>Ze  QbuP~7뛪25̴|Q-ړ8:xqJPT*|c,JqvF"G W;}͟!+*:)d%ݼ [O+C?Ե(+zAQ0:0ViTi,hѮHbrT鰠v&t7Jz/SV+..ٛ[ 3.@_C; أF3ſ{d%i'50W1l  S!:]OZ"&a?9DJIrj?[渽y&u& fl]ꁐcͽ{Zـ5=.)8ib˚!>y $vO ^ #R4S89www!LI)§~㒰eTC?(|<&+ t+ 9aMtʏgs ZLgNU`<U,+yi}7|eG=-[˫ "":>M?i}1V^F FDPT_A~ l]$oˈU " wL:%þt}U;1(IP/#"wEUSaFc _:EAzUNc#w'ը ad=^eХY?3tjN։M3b!:Ql?(鎇Qkz0/PX5<OPټ9H,6 7lMFHb@(^4vix~'տiNѦ_ zE266JxF^ ion.;}y5Zƒ7]%gG,vH4YbE]9;mTUXzwf8X&|ʱ 5wIhPXm(1a>H;0<HZ_g[ҥhb1sHs)cdxh:'/73"5T [5pI{? !F4!|6ۣ{o-vZ<ӟM,DW1 hh塵|"ƯJkEU62Ю@Ω1Mg= CeRa۞5lفOEt˵O@"IQ@a4K8G6\ B{Kfڤ4gPg3#PNL|Snx4[~͸W/diJkL`A:? ;ϱ񏌖ƘnG!#8{(]AA5A1-S7h%_Ե]T/@cqFq/kMQ/Y폵aV08. c3S bvcASjO;k3Q_Ez~[Y2(fMA҇N{t*r[`_A G:_Cg|2{C:WV;2eBZg-3 Sqw9aK}7ƦX)"eJ/yDeTmt=8 ÝjU._,G!d`S{n|17c h|!ƃ<v<饰xR,sӯc:'`UvIX4 s`9edUIn 0銔,>\ ^1ʻn]Ĩ/o#( &OS Es]ТsUn\rʭ>ET+i@~8X\Ot'}z {1ݮ(sX[U]6*⎏n!Ӈd^bJ \2|A wqŏ\H$/hL"lQIT;zqXý},F,O_ko /Ϊ$u&UJc# F˦>X8C16A|*+3h@Z.WO_z(I*9_׼ΰJU_髽fTlY4󑂊Gqy%K\ߝ?4E36<=$չ9\Ōò`~V? Y_ڴ^zb kTw SPpCח^Ek5㲗ΣTR.V`EUFZf])),HD ׾[ÏO*J˂Ј|Z9kJ6_WhW7Kq%Hfɐ/Y$+9.ةVzfE 3Bwf6` DMδT !IC9cR6]汘6iׅ ^*#ֲC̀H*4 1SUd|0zSXᱱ{A8p3i'sP!?`)Zopd@?mhFQ[HmRknٱwԏȾ)+BC$ .,ˊ+b.E᮳^[i7&Ju;t:ggJ")c;w 7Bj OyRxqα~W["rvrl;|g ‡K䘩)IҘ=;gS/ tLt"M ˏtɔU$EebP$[fD§?y|́+C'ΰHcyxfŪŤ-{U<<E7GL(J8KVÊ6'A&])X!by[E'szd '?/o`%"9&J `L"|K5b/&ZC"o ,Bn4*&Кb'ImM p Z%Ig}ѝ$"7/k5_逄W#9N֒oKI#/{vD8\0mppi MT sSƂr{DDgIc|#i-As.)>f8!Tx _W K-[s u-Ѕ%[qֶĉx ^kT@1D'|ɀ!Ս^GX |"jPO¸z?q(JQ2 hN6IZ*DeIʯKrԋ)dxtߚ<™Q~.BeOՖC2&8<ӹʍ֎,q%JhdVrM}R!]y=<2(d]]Ii6:ZiOaZlAKJ16+ leby4v7f/;B EbȈ阓5$1.`:4y_,s<|9 /ú'PdT=~pfs@"'? i:,3WP!xGQ1nt%5b;4Knڳ]3CU2:] n<ΫTU\@a!ۖç+Tɸ m3`tq 3U ĐFs +xm^'g n;܇'*b,!׌'³av1 Ð> b~G[cyʎ{Ƌaвgpb^y#r~eY`ߦuD2(t+۪/9LcmWT`Y1Ϥzsw(j@fUS(ʋ{xKr*}Yv ӌ;қȞg4#Zez`SeY$i #f|{$ڎП?9C,W }8,tl޹Ӵ'dOQ겗cyH^4Qw7cd,ǧ>bpecQ @ufL'U謮+%*J:.'9;2Aurq~&M)CTf-!JϴU?K@_@}7e's^,hNv=fL"TCFK"˧4T*D%o_4~OWEUSQ7G?E4ڮFـN_bsљ!cnJ;%XTrKZgFHO{3H;vɗ| (@"V>ACVG À%}<tg< [38:r0-n?uZոDP,_mX*fuH{`EbLPo ;Y )?n ȹHpRnp Rpg{Ւ?xOYGwZRtҌ>=Ͼ^ <,_OE4i`le 0,!X\#cw!=NR]Yor;uH #ؼ| ^l>л_/Gg)M1 #[Xxj:w^¸;nn³05;=wPl. -HœNYP#}kYߔQ|TOޤ՟wfF&|W[P_y:SW%o.v(ke;ˤP wO^>e{*^V@c#&7G0u07[}!],<~|CzJӘZ8vF *4sjzJHuQ؏ [i ğwt/v|tSCTtŴk0 Q%/OS%nɪ!3j@?}RHD{_ 9# x,UV3zdXY\qK16Por*ZCbOHzfw}CUE?j@"yR2)V#xnq,ﲥZ'D="ǹb: m#y])/~h)` f`,dT/x0y<5I*PۖnJV)6V|`"t] nF`oi?{km3Z]++-7UM!I:aFIW2٪ TK/ Hx"PI^MNDM|\T'72oz&QJ=T޹a&vQFNQ]e' Pfʂ9;V5j署Ӛ䔷b [ӸfXI]#NNdYcK öNMsPٶ6#{Y,q|dAO.=uC! 98 ǥ0̷n=rZK;_-hq [5<~ECƽ:h箅ͅjKbitR'1`ƥ6LNx tݷ6 %}Ctl*"BKZhvC'}AR0C:N]1f-{AF}Z`RYy%^i@.&u4wD|0Oig(I}M@upHˈh%U!!V V^@ HDH:Og9s7o}\y?SGDz{,2C@;s^vs_RLcy 9opgLaJ2{aUnCi\MP" i8d"PҸa7$ZQXıy~PȩͰ(Q^$vH1@}mb{R*U".<Jzy6 2qǁ6Wz@r*e;ғ*8by]V3o V5*QmnGWa_G{_9Jad5 P,kY`؈ܚhKȔL,4qBC1z |}k߁U|DTs8`9&MX.z5 6m{'$|!C-Kѧ?cLL+1LhdB 5kWNX~vM5)2$1'w8*Yvft،o<@б/ 0MB t1jvY JFENIJ-oBXׯh'LjNp6{EG+h`.J':8F/8PȽV0-iU49b,XH6t#wBzXz.pK_]@ {|Ha]b\#8'wShHX;\h6oEģk;,3r2xs9-b|yPcǝc ^}?FI[~ ( )i⋶eIX4z+e}Z&tZM`^؟dFC6{_qlE,+C̿#؟fMa 7S0|߽{3 kUZhVEC F䢘1!8wŎ 5e>9_% k/|'/)2Bϲ7Te?"UZ먃J_° :H1"PPnwTiodlѡ<W_Թݠ^gXNCF ?AA[9?-yk+iA*k_ u,ѹW<2Xem͹v IJ+ 86tHZ;D' )U 0rKN'x&V|O4qC%68:tN>׿QbtcxEx_!Im?ķQL}@`:I֝rدQeL0rSʹr6`aJ ko1hT .#O[{+X[-̼\[L&@LU㗤_i,CCڢwv-֛]>ڇzarZ9+Az^nmEmx=kmIH~ŀ:z]mjqb,[<OEX|+*܄"/Ch3ӥ鳣J {؀݈},3qj)Uw5YKۺ?=I,GxFFOz bk ]4!3ۜ =T #bv[4Σ&o:d ` \R Ѵ֘.v,,'N2z_h|ĸja /t\2(Ds}+ g[augj>)*tTRºba:[܀e+ˉ\s31"8S3 s_I ׈"o>#hȽvn>$rPI@(˙9*X-kNq x0X|i ׍է3ATU,y!jg2ro;;A9AWCW8N:Kժ @;-D_q8﹈o9ݱ5c=;S5HWSFHOoo~9`?y~NkI<ɴ>44B- ƩZ:;CYVGԴ~! f{qRF# ݌i{z ŕxLT\Awy 3[ew0Dz.!z<5\.]Q3"krL'Fkl\gipD~-@ߣzۡ a/@T !o }b3ܻs7mpʀSm}-Cn&m9;3KZ>EN$3.4BfL]LHYm =06uCTS%G(&rHuMdO;n1Mr5A /E!궑4?U E8xW\*cj<9~)!7Y!EecfŔYдFRk #ƱXZ7l"6JNCTU{멭{.j?ph%BG=9y' d3p?z{$)«lOlσ{yf )Hz흑\MVy6),<\i.vV{\5AZ(fSF4Ё.хuuVn;˰I0yQL7OOU M[?E_龆T*Loꕱ碃rZ\P5@*Hjf9(0Pv~o-c1V_,JUk]._s>xQI '{g_C&7^{|״(8T€_?Mh`ǁ7m9,=:OoJS1}*]5_2;^>g,XL=ئP6pD^BXʧY*C@/ͅmD@/[OC-uc2&;ln־',6~>n@ QL|B(ibWƗ#x$d-*Y\&RJ8t&L8'{'r Y? 7t<@D!w!? f4ge2_ߔP'A'ğ.=)|OyfڦfTTP0 dmD"`E/i1&gͤy6ׁV'"xNݕam-WQ&;rKOK@NI>IH=IwO?nݲG吐+V @:yG} Zv,z3m|qNZ*7Cg{ͯ@^|}GS<Bdоt{St]jyZLX3G۶|kIw ]"`*kJWvXYPtMGL0۪"Y'sLߡo?\\u_TDW[OBߐ)ٶb柼ЮY2nc&Co(^r _ֿm_ŝZ"b]})i_^PzCR3lV뿬_l)wПl?+ykoh^˓-df*;ME_ $p}ON@.8]b}D87@'q8@q%*x8??87ί́gKUhx{HbI|DS&IX9:J qHtW[o1ZtR !"Rr~&,ܔSE ~aKA`Th@Ә*gQ[[L34%)QQz_ pˤ0ЀlPwWN„߾n'!Θog|E~Xn5U KJB`ľPcD;|Vf{隆(/VW+5h%.|#)X9lbw@U/Kb|5YjX |`7Kx~,t+BSxsG$1wۖk-}܉=?L)xR UDnD$Vq.׎4Y'"sh+ⱇcoX0?&6;iѦ*?v~86)J2wJef65>GApHX^&jL0kd%%LdeTb)Jp5Ҷ0fhL1G{*j+Pc+o}J|fqso(y.h[-9;dkԂ 3lN 6 =>M}l rE]ߘuy~&mf|^P tȦg1ĠXvhQE=/a_˷V4/LOz0B1?(5vi2C0]^-Rp/`0Wܫ'QOUP 0`Wy$4}'hfV-p]ιPSȔ2dDO {AoLux|e Gtɨ j4~o=\N7B:PY6z*yiAwto{K\73שۼouR:5^Cvk/ǏZuy}sMgMLA;Vdceꇍg3|PH6aҩD ŠfKzlzL"W6oSi ,+K.*Jw^ۙ ]d Ff瓒P +HLze(~ņ>*$$=Vx1‹O m6JOe*|ĂYclNɄϱx|8鷂b.@ rFIS>).)pmODҪ:uW5E=WkaFb +(fkqrmLiDl ˱*Ea=VV䔥ē[4錄pve@%PaRmep>}=vg {cš\Wh*=(ie.AZz,Ks'#뻂;6+kh^nV-̀owwGU* 64V/_;/-d~֝ J+=iT W(BDJ8G,\֣9oo؉1mwB}l:siWᷣJ6NJCNYgi=|kW ;qqϪݪ͝ 0L~?$ `O{~~ؘ Zp9eI7D](S{).^Ucv"ڐͶ{$5 ` *.0&fPJ#5%T߲s%NU[ϒdKǶ/KBڋD3c^q?[{@K.eCZ oO|D&B (To~~ƽQڧ?P|fӶU'fzWP62콋ޮ{]*&5G9J>Gpd{?79BR[<n%?N["**B>ei=蟊bCTSO<8%՘pkլ|HKW \$tf@BHRyDi[QbJVM)O 3W\˻ ɽH}K+{e<{D i ޖM0okW^Qq˗6[A)= ڌ5G[ |~bhmT^806' Xz S 4vx)28E+l4;ash=qm V :MonhwCO!s~73Y!0[G+bo{H26$16=Z ?4tL=#?7PnUFr t6mRmWQB"PQ7MZ([?ZpCx鉦"ΔR;16\ih8}BUq@Ue.cYKP;RhcZ{<ϒs~$ne,넲]M5W͘w5xX̠Xi;l@h5|LK~f |}eH"Q8} & ñcMmX+֋#' =9j j8ÐK#7)gy?|pf$H^GQzT| %Kxk(<3PwיyΛPl[^i& #Y9m=G V7kL ny2PMƝS.f,fgW% òU]B=!_י~xLdxqOmXEE(&p]+FPDVdCX3w-ZσoʻΔ@Xdӱ^G*H HZ^)ek:$x 𓌷F־9H(Mr/~'M*Kq +~/+)3]ni:[wQn ؇Fi W8)ɽHg;MϠ+,L +߫ry\No I["=}``:Or>y)ipVoY5 %v](o/ɓzDnJ1?7,0O(/S (t+&vS^~h5Y 1z\.z^;yG"[UE Lk@[.yЊ0Q`n# h҂QP'n4/ڔ.~Nub u\gGΗ_=3M|O=,}=:X2,}bbl&}3E9wr] ݸ_UXbxZGox}O"B6z,l=D12{s=>cX5v2,N /dެ=nHO+_&i)"NvMcn]p <)Al^mIdҥ*֍HmB:FVTB[0)X` k_^}sBcmN"yn+`;_(0$Ey,b ()CBI]Q A)W!3kncR0MWAi ta>]ޭ{̈D{i4zrQdF2.K?R>{>]k73Ӓ_c?) YP۪o;m`Qi7r6SߑRz?A2(YRPfiR9$t۰Xhg̚l=gx!n#Y*HcVj^a$ܵtA(Rζi;m:۶؟21 @iftr"~W$IWWJݔSIs.&89iM[*Kxhf71C;bAMv"E_1Ax _[36WF"7; cڮ#fR&,O~Lilfa/ GO"e媴Z\nF S: Rvߊ3QrAν/[5k;k=m^v#>֒܆{\C3 JgseM+%| bT׺RZ^GX; ;YP9_E]y֝FF@K"Ys ?]cj;Qjdk  ¸tU$6Ir7X>ޫ 9/ŢqcokSpt*ŔEk:'ZX'Ș{QWe[O_o.P`]}҉Ç}*4CɈ;g~I9#}tቱ=C2HOxPrtωWΐ+ڢx=x17p;-NMQWQ:dt]!6&l+_t~OMFjڠ`\$E_/eEgBPk9(lH;PaVX@qckW`mVpLY=:)ߺA5\Brtu+Xt0XSt.]=6bT`zyI#>6qieS[uۍ 9Q/̦ͿTNCLI4%c#!'?l9}XD],(TׁPQםG[U?<.H[S#6$v`gc9ހieF (k bH|lk8+HH 0]Q Im8V5x'd'1y.7f)(m'?0Sq2wpN<b[c/BިyN$Oᘍ$p7ãzBTU|X@ås+rl?qtIou`ZuʫKl}{IQ5I_z懅1trO]v?ftL.M_ 뙙fLC^ 砈 |F8ȬDӗ[$G]\m4CU3{:Y` c G@2z|7V+vj$߬?k8M0DZ$AŌOɰEO*U'6#ve2 |b؏;[Y8ڴ? EĞkCMn% [0Q3&Se\Мxh5ԍ'-^UԬ.,I*^|3Ɨbb5!&@dN0|X#ob4@ 6#'4Jt:D2忢69мJLɆlOR_UؕY՟q-'@I)7xxv88Rc^5Lփۗ R_4h\-vrcc$}*@6ؼ[:0Ǥz-ԝ–|"4i8cy{|gZMWoF~g 3h.RnnD+PvV`Bt S#P5{ hZ''eh\)L)[d+ { 5H?g Án: sŷdnIehIJo_8/kZ7gqLlr~`)`{sKCCtt{3V$Az Й632 T^^}>7Q_?#kg9J7j' , Y9XnQXVygwPA9zR. X[UvXSΥԱH) ½+<㋒fYքTpW2ѩIW^ЁDK@פ>e^h5eY=,2h% X,($tj2MkВ! L5O»\pɺm) k@&IR=!{hll3$D^ΆShxߊ2;#[`U{|4 ~R5wQ8`aৢyZH mttu6<" n.u3%%ZS#uO)=do , $q6ΕT/ ә$~x" ~4/bx9uJg]S8_aB*3nwу#@acYɺ 0ɍ:|_M;oVD,s.5(MVu+rQlN"R&zDbte.6[NMboqM*J"n1]%kFJvZ[c; @\׽CSBdh[E®Fv3ЄFa uA?LgW+IJ}!6K)_ȍ+Nt=@#^`wgpk=&8x>c)]ٵG`[,R% 3C)Dc̐qXU νTezv]L-"PkuՖ77c:D0%! G嶥sve my5Z~)_gls#)ZT}h_o~qzE:N Zh@urRbG$byJZnR~W-t5f~}=L[2zL+rԔE a=Uk9xIBa'spDe`zߍ mX/ؕ?Qjʈ~z {a4 GeTsi˛ЧryxLv]B-cP8CxU<)K2d$#:1^ |Ü}X]R,D~d iKtD< SICGX(qX{ۤWd_f՝9\1W]jqM[i[#gH U)>K,oי5HEe"c{,W£P2Zfr:(k^-Gv 3TGaW7k-9@Hu)׺ÖfN!\`PVY<|&2@si%TF0< W9'C%H|FCcnC%ڏ1ro¾[ VP(veB9\TqJ!eZ*u5b8Dz@zPՍ"?o(aILS#`n!#L"j1"6ն?DbsklhU5z3Cj'ڒU9OX (!wܷ_C+sՁ!%2}4r)}x}STw/VGXhp=_-Tf05Pks{Xm@4;cm A*Ԗbg3vMݙZ?,]*iJ;,Ħ7zkS9ΓY@GMr?Z*̏z|f{I'vrA.rSe)wOu(ek֣:|L{G| O6w7M;KPSNI]ts|0>8fHY]m@ W^ga‚bIW| |أU"wH!*b8_:],WA!(Hpe,tg"8`Ǖ֔-lh嶀C՞~*;MOt}$Ԫ"t$06=YPZyɲfŲ9 Y6 g~6+ޭ}֭PB6h5||_e_זCK>DAlmH̘iGB7b"cߚw܉CYo*""Dɝ7ض'.+Eш ~DK~>ΌMaX|V3tQ.:{<:Rj^Dg ̌g_!52[)-:)Z'(w.Výт+a h2q v'-'7~L 2OS49y$55nF}NGo{ ;Fm@*[sFkM~|9>Š' {Y nr6.9K`T ,q`ڪXYS| %HL|d?JQU}-?Qu{q?͉"ep-89o2r&1#"j|FF:4 < }ve63jw ,2X̝@MWw,5ns50ә]<7O|1=<Ѫ/rHhgU^X4U-geMHqqO>2jO:+jȑ}׋EoX)e[@F: YVYlOSzG4}\ sv#'T~zxOg8HeO0x8m 3ӲYOlLVEJܪhg%gM=Yٲ`zV"x|ֽ*֟?r2^]i[0\&&p`pXߖT4{oo@MN<~َl*/i]#D)6'̧&8\Y [a΀a5 wh\V*&s. N 午XbN*;ϏO *^9HLᓇ[jX8ain{l{Jp-$T\OW wݱҎtRETI.TX Ay*vk.y?.bYckoż$"\ ٦eT8@ :6Wafɀ6o%_4w}岍XܗSi&e媥X SY\CBP2t}]QU#rvA^&@KhNtͯI! In:* -Ar1TlRYzNJ/j-|]$7.;" S +l#tlO_ubIt8ߖ4'Ҳ#EW ErOȝ'6wQ qيpiw~!dgw6J7Xt}ǥH#0W։= #zWru2z8K q=xXБԐ ρ*ȗjoؓ/"X%u !I@[v@(i%T /N7 MjiQ+o\bJrVU-CwG$lڽ%,Xg4tFA8̴ ,Dޒ!f& 1|66ǣ IoysG^.K@sGB/%z5q?~F|ф?s(KrѵvY^q.!-3SG.Sf?pU9ބKv)gƁ>@?wC{Ip<$ghp< `GMz8q nBo8q.H:R;<rpbn[IB-6#EUJM="oa9|f&@Wt]BաWpiķ%_DhO`[A1] )L8!p~=P  0lɻ|JgA#7Ծζcʐ}kM(oCpCdC+3h+iRR%a0-0M+HMqvl|[V?s66 xp97j(s_uPG«Ęד'\շTs3Rl{Pp7{7x *WuQb#*xK?+{ @,| Yaqt࡜iªiQQ7a[G|3(8MKp'0?+pv*s]n +Qe\q%[{8TPZu/+QaΗnFSD4MW6bM#TmEw*5$ْ 2mLr%ԛsiv'>v`0եܬOʃyhrسHɭñG qytptNWg">uZЧ^/UP|=BJrMkȨav[U@/WGRR|Ѳu%%}{)syC#?tyfBoq4N#m\ |kA<=z^$]Uo^ cJJj{^/N+D^M1,U2d8's=q7m;ˇ|%SfV TN'͋{!ȣQ.; I@Tث8v"Pp7i-n=x<ŻE6ab7BZM \t6SQV]} KҎptw/̤O" S!,0}0KbK6`Bȋ1e$L%Jq= 9!;cPcA]*^?l`gvkq03|kO+g'|&UL"-4+6Q؝Qu꫏0q1A&oU&O$.3-'oͦݒb{.؂l2?L~IoLN=|`\sНh0>D* r!C8ن_\(&J*L![~!'p c< 7T`? ^9ĴؾINYOs>D;ARS aT }$d,S%>G+2@Ck!dIIܙ=Mǘ@~zi8q+Yru5kcD>PӐF2q-FGKBGn_T:sg]hN1t9>'^]Ľy!kΞA~ =ҷGm{!a#0'ia+w`KcW\X涰][vEOLcWv7^F6mǃJlʇ0eYس!=M8hbhL״Rq-P2ƂW@o~Ł$V?\bxXF N{CZWOIv 8k5jA;K 9'w݉o?s8A]h@.TB, 4d{Ɠ\nEND^ ׺" Ok^pMxVuXN{8Ѥ@ 富m|yTabrRaW";jqTd_˝lBb6"3%b r>,byH<m)*@+^dACq"᠚O)V"}n{l,';zJ,ق\V"8qWe|x]b$O}vd7bLY^k>[fdp ~%L/ }6_kOr^jtڞ7O<$EFe6jZhYF /(^?_62>y tN1"fD#RZ{W|$uMwpU䠋kssT{1GQ5|~݂Aª+8?yߤ!kHvLP_`0EbcqH_%|܈5 eJsL67[V{ءn9D]|h|{ TMuiM.=j=1C 8}9Zb 4($rڮ.&0~ ʗ)m# ~G&vayK 7]P}|.Tpwϝk=n1_<8_d.LDɦ0%i<B ^6prcPrFdl+vW)5Ud,PRrq7fj$ L{X{d}o)" $g12;וDy) ;?)M+N\$N6rM6FYj*@SvG@&wea>f8ہ1Q5Y"NڌcUi;+I23K4D\Tre U9ykg]7A a\'j9{0K%Cx'r邼obYhDX-B (nC}On{Z{Z]en=]a! F'"J,ڊRnƏȯ}cOwquWO AXa0MKKHu?ͫ!:eO7b^[j4y(8d`MKfVmu]uch#9ߎ#JVgT2s`bXs{4r!짺 %eT3x9WRXpyrJ2mZg)^S^Ĩ _i! PJ2tbO_],l5Y\u3p^K_V$^A > /sKxge@'jy`3F7 ىK.>tGƩGKҮMrnDRņ{K>s |,k,|#Mcq.˘#m*{z!c@Ʈ1z@_)_@|[93b=Zҩ!]UaSIȏswwRy7nO|.Xk@\椚 ˴./G v+{ X?okńzJG&02NWbY-FӦ`(ښ1760GNx4Cʥ@uKTvfLer,@ m#2ْȳgI+ѭ0g@h␜Ss&o\.\ Qy-Cgp?М#eIvF~׷xiN b#џ{[h l]u%3 pWPLc/..OWҩvUnW5Uu1,pDT88{ }ƀB[ӂRI5Jg+bOso{zd~Jbmz kOOPnQ_uʈ䲞F6!{o^!t̰ޯR|0NX5@U+g6'z=)[qL+dN@f_S8 rnj!vh}NPDzcUN*ۘb߷ӡ`Mw"^S~J Őq:j֟~o?#9Ml8]|n/|2Wr>?ʮ^<3=?4cᨾ9&p^F 14QCAVLIZ,'G9#$` 6Sf喾=a18q|kh?e&Fhal,VM PU3U|>' ҆R !$ֵ8?Mw%jLPH[(XYҮ G11|¬ $w'/vo'"?`|ܕQhԿ-'b[9hG h.Q {eR"+({tX&Ҋ(WmHhծڨXk5ٽ3d F] 뱗.) N'HkLX \l!h1EmIH+ܢ#VV<𹕳밪B [eF=J!69卲̕/OPiௗiBY4ȧˆA:Iѷ E{}S#ͤ1>,Yjί'~(v&ZF ί3My-#VSp .];s-4Y&dtUú<7$uY~*'7B] B[ Éb[6G#I=,j=*//ćG$]/W02y``| Y!W@"U[}_U+@ϨnO_v-',_{#EӠB΅hD$`V'.9𬯺fUVqwU{ݐT> \WRmc\T,=DjGjg-CpLj[|aк% 2CcH~eXPm$ۤ75MHGd&rxNoMU&jj'"*{1 XЋgI|7nKdeI硔ʡ @SC({ǣcC| KVv}IICHJN $%= 6hxW3H^YR`fGV( V=;'DyLs'wº<+Ο+7GLO'l&:o#qtz}_[QTXvv@>#q{\cvdjs`Oﭜo'lq±3Iv!߳ PbeʑZE\r~55HW QjL2;|۬K΂ʞ-ƿ)raJqiލ-vM@p8>jǁ tRHRS}OWy!:Y#nNMGJ'bagn#ccwWf88BoSTeEmйGҺP< 98moaD^ȷ t)<Ut/Yc73t\鍀X1IrKU1 CSy ]jtP)FM@ t1y [3@  W : @cTqQk@D߽)Z0op靬|O'l#݌8´giSM!=YIF=F VpX{*2dg9w#br CxOBT86dN섕D!( }Cb,D2{Ef;M@N7tar `H%&!I! [ƌ9h?iM+hdlup ^?xcQdZVybhbgCWs'd*!&7,&X.jk.S<Ƭ9O:KWɾpU%7 U  o.In҈ށl"U$o2cǷB AL5Jm [g bC|C&7̇ KRveI" h'$|Oڄ!M[]$4]zl&9NDiWXIq=&\8 wWt3I3c!5~EP,߉hQmm9 ]23v@܅D@Xc]~GwRmU{dv9腔 $-Roi* {J`M4+*{I:.kJb{Ӻ󘫞ʔcS/W}!ȍxKbJ}u@Zkq/+'J)Cxk5.I&+p9fY|."3&a PJwڑ%.zR,+ J2[lT=ѳcy#@ƞH`N`Œ,}LLuƷ_TIzaلDU\ʍS7 ӋCE[F0~=k̟+-ڔGiUJN ? H= :S9RįV~Yʢ$ʴU ,hxbu4G 3WXmS7 NZna̘HK#7K*YK;N;BI/^3K#}SВE~!ƖK1)S~ dۡQa ]b;Ύ鋧%cn[L4˼xm젋 ՑW,(ir3{>?~? ra:f3k&SPL횑4y8ZgD8UKP5(~5DvѰU2ZQŋa}̈́|yGժ}߃}\#bw@65ɧgl¾0]GzL*@WLC$`x B=c%"YjWznTȫA{A`_F8ؐȯbATjAy㐞[̃8:dWa( n9r 09L29[$:Olעޗ["r~(ڳu)+BˇvtmoLsT^d3$WMC,]$"IǚjM_n_H1"ÚBbRȿ^ھ\z`a |?JpZٷ = BEn.#<\]vW\.$0[9Yg?TX,PE"0^or 㼃:#]6 ε!Jjb3e ~|gutn_)5\;ew"fAXv(lvAJrnSluMǼmyHV3{OBOt>YoH*+rbꏲƵO*K{M¾o:;"qGہ$ _ޯb2HÏr'}Y/_JZ'-}5R\DA:&!˅ T#.W{3 TA mj4DoE^ާ$'?:bwэ3K 8c @l82| ;y{1 } _4vJ; (B lGb#Urlejiq xa '2"%^жA^n={*KrUB\VF;u=(ngk$_8C 4$pc ~CϸRZcˣ5P|bdQ#.d5]$% Vu4Wp)ӌ칱n&o,Zh[Sywj7?IŠ瓀Kt벗dbFڕs\!gKI TX%~] K等jZGyDgk (zcB$$~YDb\|b$LdcY҆weg ǦKxҶ/lJj CՓ42("/||]|=aH)i׽֊U;Y4m4v#r!Y *#p?]&zob.@9͜XܭLbFiϷ8'C"9L+޽I 8rl4}ҌdGP.skm,MMbЦEr{1-8ꏇ&]^T?sZPm0ti[FGZĭ_̎a0aBT'Trc)p,ɪnMAAoWI!M}Zi*. g*r|R?]ƫH?6M&z#H}n˂li;kWW=ҖE0V!"6+yM2c8T.&p&`w eTkz'lvoOT!E#*l֚P/t?i4Y5cLF+x9:~{*koQ<>d _w#{(Ꝙ}61MP-^nH|bľ,+?v/ NXy%6B?T:M3|FؔW]Wys'Ug'Qja:z.kSB~^8QA\\R Kr3SodxE<=ju&AдA$Ah̰X $sNπizz-(wEm ySDRآשRr,I9s:{y=!rեfui&qyK[\|ɗqhBZ IPpE}[\i 'F'_Jw>34ۓ3Dol57_QzJ(W y1"ςQb5ξ3qWfWdL?Sa'23a&JstjN ^'LWey04~]3C]q0н7I=ꥅL2$"/XɡzߕeGFb6Q6`P#_4ڥ ] bmZl?,XI N࿐# k~FU΁? +v7:Buʨ3VȪa3"h=f],҈7N}"3 Sno K_? YHBݮW[N% toD,,7!;rQ2V&MeŒx!wgKjR[DHC n<3E Y~7ZT~f QoJ>qOPPw;6aɭs8d AN|CKyA_ C:dHGoGj3H:lg Ձء1۲ڬ YR!jk|C<*D-Og\og 6dNti hTT0w*6? 7m˨L'G 7%Å6tIΘ£H,~]fĽEϧ{}ؙoQ^|_2P<0;}U[PYcܾ>S8Щݫ&N _fJ͔s;r!NDěraGMaq :.GK? 8L B$!li(bwd=uyT]q̼ŚCq4xg0:w5o Rt8 |[[ k!iYu% 0dM1[+J= R&,kQBe:k ~7xwuMI#50yn?l4m` fK] O N{IqAO*TF>w^dG0rݩܬÂD XP| ,X-V g޺XƲ.vIa2Lyn:(A YܹVsibyqjԯmCWOe:"b$p V 3X0괢 _1^H(!֧rR\BrYtQ9y'H8xiH56"IYIIL j2%[t/m UziпϮBj+ Jhݒ/>̨g;<>]CNb+f @u=ѱ;_푩2X(nb]i[&QjpFW}Ya73DA%6 ]T{Y]QNq`Lepb@6p.Fp" ;&)֯4WjzYzc aC?~*i3&~lKDKtOחZ4Zs~4ء6,m krM8 3'Q핑03J$S+Va%TCVo%3WW U7ZU?%OE5U) 꿬+$n%'Bdl' jPA'bI|0Cr ɋ~ u]h0WvaGA-#<^0[ 5rhEB[ž` L%j~ڎM +0SWj +r_Fȼ}3dt^6 вS|򏜚7,͓K톞)Һ%i>mR⿓nYP1իomDӱaw%՚n:3E"aZ$* IMHSqþSA;-u84j8 +gY).:6YX "Z*ʝT"]t_ʙ&O<̹Gl'kdErULoҘĒeye;\o5eU'Uz "LNC}T?{>Se/lo ^GY%K!̥Rơz9w#"O3wnƎHꕿlYr:Jb;ӱ5&Kyl NT<^21LEjiG:݋c'6ugtt4^5T~.,URb4~~/oOCRA Q-4Cfe׈~sYNb\ؗ9i[юq{`IcOc< /4qԎygյ:IUV H@W,'&m`;X5L\M+8Sh9DH27R8~tR`vba@vK|ڏ$$:qðok N,0(s c,,τ3/6y#uѝx%x|7ond2IPEţ\_4kFl1oKۅlSA>yUעMC6V㪽;_6 b\~4܋=nKwx/@nJх˘ ;A@oy-" Ī擿hm~A}qVHv]yTE`Q%ׯcN&3bRA)2-@/3^ {lj!aqvbv1Ewk"JUƟB?imP2k\TN0.oy5ؚ4`iK yPxlr&:1[#`2Jf%j~4_})"@v3%9wpV|ǽ,%)'o\JΈ˧%Y&jnӪ `$+KƇxyEZZVC I)+ k 1*ɷ3Ҿlf ѦmA[4>K#cQSOa#ju('ɶȆjj~`xg&*',荩!k.>MZYHI3NHQr/kO佇)@n_ά4۔?*MA5gV.U#'`O;"] /hP0ԉN󄲞V>$h֚x\]R?|ifs avS`͛lț!6|6WhjS~lޙGuQDEm6Lk*ܚ;Hv Uس@xX6!$?sN>W4^%:T~"t}xi,j2{s] lzcμULT}\X-h4By9=L܇1ֵvd@G9Fjs"Osȸʦ?١Y  @5S~dKA f$\W`c`b"()g'MW{fuI᪣q>8A?¹Q})BBݻc_ِdܟqBS  _Ov6 !17^u`Ο:$:T9KvO#")/NCvw$ZnM.{y=Tzetߠ!ۚ=ZKUo{_FCwX-hLwX0 j>A,&װfZJÔ.!㓐mVbR>]cqf\,g4vK-_psj_nces*QVہtL@v |$3*LFF叻ͽ_^<;v9}IU^tYLthq[~bRe)=ZH"? H ۷,vݦK3>R,@`W~k17iLzP _+ ,:fwA9S[ C%PuT>l%y->G|yш/moӶ F?ClWn"`Op~»J1Baa]H~)f5'1\ݚ.ffOSN!B1Bv.[=kZEn׃C9(k cs(J-&^OyxPV3\ o.nUJE$@J~2(%b*2Z)) 6_9/&2&kU8B+> $teQDuJ%F׏P`=Z##~?Zpj<"@&s}GND}yeokoǸi7ɟ1| . e gT[#Z2i^$q۶r]f)DŽWfV17Z8P$h+96)-fY4w48wڃ bOYd9S| #Kc@ +iwZse w4 Iےt * e`Y=L6m{xrƸG_L֓~2]˃#Yj˴Nyt!:׿H[wSJ|_/r1):f>buE_A4=R8tf'vs#tsqi|Mr5h"gKe/?Ҍ2Qz0lP_-f=Nj?4w ^K$d ڋW-Z$GAr~^s"oG멃0;@Ov!!<(Xɴldz+<'Wd~REihu"\QբK ϔrn{bEJ0(JNܤs&򠯹LXXV;$LkַM'̜1?n"9N*(4c C7ld tt:?XӜJ!bbHbf8I M1;%A4/Y@ѹ0,/u ilz4,v?9kV@ /[9eīG`,hwo?܆jhPeڛ :6G&'%FNb^+K-[JL(g~+[E.9Tr Xy+# oCT4=o~:R&4 eJAil'nj)@@U^:캔 ImpSua^i՞5qÓڵo/,NQ{>)< D'2CN(C$)۱ ;U~I*_3] ,*EOH}.vTp'\>zB!щq4ʼװeMp:ZH7;?pTwVjȶ+N7T/3xj۵~4MW+fDF)^ j asTܻs/~zpEi<)~Vq|'i׹Mcʃ.i XvjzN[gS|)*bOIޯpltko#>//U>)T&1z_8מ;͂ z樉IRi e-(κm? wg:D6{_R.$f}ڽBM _pa|9oT3`}#<1q0zx-=dNFKgT(rܻ>s7K?TNQ\Yhh^R{ R!HƆG `x2bŋ_S"eY7r\3ss 0;3P&Bp7WLwJW-(y ]\n]b\t?WBr̦c^d}^'.d2lg|M?3 Xo7fT^LG+dž-D4kFjRg_=?h!tCءUnzѵsqtuC\ph1Z&^jJLtT\6(k|)Ҏ+3۞Y {kT~JG vHDk,h3V#1^dFGC"=P l`pt]K!zk{6#`gOm$b@E]g ԍ=؎@ffD;ȉUʖTfX)@ƭ,!U&sy ̈PfHF䇯Ll6'|&0:g:gXah@~pL-4K(]8ĩlbҤMk~Kg\DaEU{sۛ x 'ߑ5ȧ]j;CnTt:%B1gs/DEX]YsTuWvaV1ܪSHLT~"gwϫ'sPW DɮW" uU/sjN b` -Q3;I ;/?:kߠ{B%o0` Cp%;Om=QW22̭L%r{Y-qt=\sX (I G9!LQkb}n'Glvk@R~U=;'%Pn78ѶerQjuÔĖ:$C<&ƌ$ms6q"\=O2yԮk  %N+LM-{;^ф\!E co9[`#96ev@BaN?㹱^_XLaRRGThĹ`e$3 VTn!^Kaǫ’oL? c^G! "i)  [[ɬXϿxp [~[ͤB3s;um5—6bk.9?A";*bvTA}ͫ;L19&Yµ V1Aah WFYtqРSfKZk8bϙZsgj1aC<%Av5qg9PT-vKc fASՒ Jq# cmy'2 Eɰ_6B&%I5~z~V Оnv`*auS1ue }JNR8[(HT/$jz]4S4ݟ,G68^qHіD Cͭqfiq }*DVo7rÐ,^e|Aa&c>8lkݒ&  `,|m0G'r3iq!kJ8+T6z)05-yiyP&^+#8ʎ$d3LϭpQ馦lݼo?Estz/3[VvTM_q4ͥt|g(;BȤ-mFopfr,f3tɉ-^6I(Øz]& D TG8:&׵w$8%ilPj4Fzn7v3Y={W˲gPWf"lwb22 !(yr )"\ :t؅/oU+0c+ ku`NIprG&5oMx q8+I˙r_'5U8t-Ĵ!CZMemJ#))K~nQoQȊڧ[c,J41R ~GkD&|'m]kH磐miK#{͉Bgu}`u#HmOFg{2rIh< #V$ c"X=M9Y)i rlZeA ‚A `9ξ9/pif\>(i.H8Ӫ̢~I5}ZuW Uk}|-e:UL3ᓴO!lU29 - &|L?یHV; ̌|EO聝xLD%铵K(w%N?ƚ|BM<hEMvzm ' A8#u%N?%Џ3c 3`Tq%.,S+>=G~̏#, 7fD3²m.nb>GBXJz4*Teit'\iI-itdp٩0#?1^e=X l3SV#TNN9^Gt[k@_ޱxi[1?d[ Fޗ1&~fXM`Bq)޵Fꓳ #peO*FAkk Ug,t"Ԓ|5IbVt'".6#k2|5bd^PQHʵKDygB~R_5NߦӫLk( |eM27bŌkȯ,wxiީ6}c+\S/O[Z;HU#'% f6;w{Rd?ꀚN~WzhP'HU -k tG*VʽJ@N<#ēS;Qn^kM?3̆ t?J?c>Jr0M# Qr! WyV֕iy䛪Gq ?ͨChU_OUOaHCyrt zyYŲ.]p4:V=4QjVgsl&Vs-Lz蔤?_jnW1Ȭ 5883ZDN3ixN7XeiVIgoV>҈S} c s*#JxRFb6=q^ Ymj~VKpfj]%HםhסW[ɱicAr(o2%K|s38ǖovf]A&%-fr{u5S."{9{㫎}wnrjԽ\-XĬ:òb`?ԍ\͎q-aWPw!Ua_Wh] '叡XDWl^3b%SjQz8 =lNǿIvA˻L#/gSn>;o:Z9g)Nq%@I6Ƿ+X/y+m$䪉XiTr^4iO~y{5?dTSisۃȝ5Ig]c%Y6 `ԃhX*[#U„ы"L %1KK\e+[ c651QC4ijjL?/9%@!YfU}JD.u0Rd(Gi)4(,[}ڧЈ=qB}i=`>S>J^egު. ,~KC- ]T| :; jx%J6!͔Rg[ESeT%VQ~ YL/ryUI88oi3!w0-P!n)I<*ŒǎTç?|9j}n>n$_ų$rҵ.x,r3pҮigGR[yt*k7`,~IUyVsq&v`@nتalF+V5]1^f}3OB">ҩ1(yQ(2{MZ ͆Gq<#7:eRBYL iGZ펪tP qrt##"zpTk\7LZOs"h0Nf$D[ kDSʑ/.ϗD=?Rc>X+\-e}+Y<\9DimָˤB!zT֐_4Z!FnvWql"gӿsC*rGz_WmȌ=3h [2pMļŖ*ܖGvJ-%vƊLVlϢKE_87'9@hU/'[]pPãaûbi%Lth.a7)bxIxP TdqU'99u'uyM \}Q%('b8>Q:xi+h.̠m veSEI& s}Hݰ܏=\㶍\).O{N]-o1aջ }նcqX["/TRHtrMήӡfSau0٫152g8o7 1Wy]cN>rپc#C^US b|_}n{d'aTinHZA!5S7L:Qut|g?gz;EʿcC*ThTU'ux'W>U+xbmꛙ3*53>AWDs'9KBPk9޼6`;ܑd_Lt]fI۩/btAm, nO|lI,5kJU R?xNzϖO>o"o} ~CE5iƾ~ pek/EǾk#h~(ԃU~F&:s4zMbvuNwnbiQ=e)`7n*d8 ;\r.'1S)8 h&~ԢT!c$6ZDzɒe)EMVMgAg4/:mB%J`<:x`jDR&P$HcYFK]wx}2QqNnn?D,`ixPc%\:n\Yl09dl(sD\`Aԃ\&`XzLh)]5b`Z 'd7G|.mQM(>Jtܶ8Tՠc:=K̼ڞ7TH{G7"-3/f*Mym( dNc*aXuHe]ᡆ%_6eJ"mqD@+zF%Īx҃`=$_P>ӞGG}>= VEؼmivCX "ş~'r/Z`o> 1\'gP%iY@VM%WLϵJq!?-n&. 2hʩ°g+iM\Xx5{pKEN#)'MJ1 u{ϻYx9q*8t?0vaݶu?8EBXeOQ{ԭ_`IflRG^U r̀a ,JK3c˯?]X}z^[*TM%tǃ+ 7cB?ƟZ"п?)T@AoU]빷Ctؘs YEBJ)[ Lo7q#G]@wծWNB= W>cl 0(ܷ nHm/OLs/¾(KtvU|pmTB"izP@%%81Xu)kd_ZTF_x;n [l80K(:]t^<Yi_`pj`U^Qs#Έ}wX2o=}:SEB{o kol]۬,It"g ?_OIWȼo9K~FX? 3+O\)fQ R*kY'e+δӍYc~ELN{!UbŏR}$2፯eC\W=sUCO (u$2,c~a^{3yj!JfZqPܥFȔ},,o4G?,H>bmxuuw[wjY?WXo>6(Kg@4 3uƈUkiA$ p].xu}صn\9?HJ3rr6ߩ#__t_ũُv:Q,72k_o#YP75/82eߘ> Spj {PF(nڼUF%&|-M޲j>h[ >%TP_8{J`)­"&[_%,2o!ȍRwIQ(0ԏ7޽ϤV!z,I[k=:;aB)9v I9'sDd n <|QJ=X̌+&2rJKO#DVBƨ,yzt?@ }, IE<[⅘'0!_+F&֬U7nUԏPE%q~mZ'\mjc#yxX |1</,e4]ٵGXﭶ* IxrSxSz{{fc |jW ~tу֜7/I{,}!) iy+QY9{@&ob%["__KC6 UJv+;{UOm)(AQbdLԕ0'\ޣ_={w&Y5-/(E(@BT?cL'wFЗ_߮f .O4IYt=!Tݑ} $v ~z8:klY(NF'im?n; {wmw!Aϲ{%@*imRV,/aY[Ç0>qncC?L#{oY}1al w@ }ė:˓1 h\{??Z|ȞVSi,CÑ8 MILnU 8<7x`Vhmw}KWhv )⃂ ZQ,;\ >eT˲r ~Kd2UG$݀Lӷ]~H}d%MF'`\q*jS Y!*ޥpzfObsH^f/[Zt}*JOuorY]R0J;[dk$^Ysop^ jZI+"}h@|J9'@&*]wS֑.6{;r5/<ǵz2< &p;z+m<+OIZߧn[S8^IsWk'bZ&!xr\ &x:_Mn,G\մg 9/Meu+16MA,=8tC*[8u}b$ioV,[*T+\SN = .ύ2ϛ4.!t@uP4`ؽq/ Ζb$NR6ib#\AX蛞Ypl=&pCVà5!0ծk9!܂&C÷I'쇂FImc*k!wϽH3;(Bh "e/ $|_![RˇklYW;YJ"<6NYP.7eܵcZds1ӰDx&G#h;^:ܓM^hb/]C/)AK#q)Ѝ<"-ˏȄQ3)_9/UwЍk l"3,'HA=e_B2~X—F鲟z*@\< +#MW bM09T|l8ǿi;j9_GNl?5 ԅ_+xɛE'Qr!mv%}[L~hka;['\mOgRA.@YN "|3b1rdc&} (o/Mz#,AfaJ fv쏹Ydu/%qzle{*j$lcL0J'*)ίOnWY&qsW.yGe[ ^%Qu_Zň/Dd`;FghD֝cŒ1htP+ml=ADiUrNIۦ S?8G# HuSV䁺 ,AV6ޝI}jf^gHmV_vblY <G.i??ܧdS3ueAqrre[$U W)Y;&ae8`5|ݺRtu>Q-F)e5WO& N8@F~,w^g}T2 kr\=mQ}$B>:lgd4R?Ȋ~ B} }~z\.Oss^Cf*7"غ[М^GU$a92KY@g^!"raS^]ꑫm%:Y&c0 wB` 䗬b :f{)xWP6CηI26l`ڪSPQՅ|0O.U( 5RMٞ~IpJ` yU9 X)}f:0"Y*o<8dƧR@~ aP TO RPhW]L,JtS`ęBGV*݁gFLk $qoȲ"Z7sh5eL車}S}d[X;+kry3is<$^T)ы-\f cc;iV|b2Z !Q!kR4?QMQcЀ{icQ:$B%bϖ4F;#gK:2xt=m=|=s࢛#iY&/M?~Ő9ULMP<^aB[veGjiT}e/<ױ&l5&0-NPb?AS!Nii[c }V;R봋hw1.v`Vwx)zs[,ֵXV <ޡ00g;k@N-szGǼ pF݅~klo|M !H ]3%52 ?R\։H:ˋ6~";iH=@7f ̺fl~ho>d^NfS .~ہzVj?VbKD.t(1o=k:L?@:?&yoTp+ 0FP;0):EkY1wL2/N]j4~*^_kGڅ tbᤇ 0Z *#S5L,9Af̖r 5rz2KN%Ht[ťh>H#շ=@Hq꒛ M<wuqu")/Dl!득PPK %" 8x;У%b 0U,k@WV-Z\ G̿lL s6<;1ެM٘@e&,8Y`CsɅͺ"nwV?i` wvkÉ4V5ˁ$& qN~#VlҘ4O6Y *I˹;c #0C6*#6μmӊ-~RGt4䂯B8e,J:n?GZ9K#/R#-s鳭{:,A\da3ve|@av狄ԑC?x4SF|X͇Mq0"f屽(.Pk S5vA7GӰƍ_q`˵ִ>2DN1yS+J]L %Tp Xyu9ڪdL$r*FYT2k7O>_:OL6u^ cXbڈ~&y,]9:UhކUsūO~^,l<_ r~u1],tT!b|4X'Z;wԨj'UPEIjq6J1$kJG80Vxke92'UrB_ E_l8]$Y%E}gKbz~NIn/ \.^qd۝k,`pô+#ɶ[PnёRѕF1Cߥ+e2o{ )+]~'aV-ğ;> P n͠ő+l$&1P!g}lYha_I?& t3r O;tXΒ ~Ni`E6;-/^t9Ey䋴 NbDٿv(? M/''O b9,6Xvl";A^n1V/q-m7@$#FbJ{k=}_gNockJ۾/P$ 4RF1ŧ dS3P>ӯ"I%Ƙx j+kV P7w=}gSޮtnytȻ9oV3r8W F6Md7sڨl]0EoZ p!#v6=>JۣuKr*++Z%ZF/$ѝ4!Г5BNR뉯i+s֬P0$GU2HR}UrAH;jZGX̦?2e9rpӚ zf *(U|;5u<?78޻`f 6`ǒD:93 '2G[GϨ8Mq^uOцZ* D[3LG=/Nlc Pz 쫠$3=.:/A%hbI_)1&f_،qcuJ_E*qB'R,{ŷ-P~45ۤq8 %:gKOFGw3+Qt+6ݝn 4_T*CB/S@2رSLIOab:99iya砯C"HҘ{s`w. {NeŌ=Nֺ=e#ZΏ'Ewf /;T rbOta:F)˔ۘd[yY1KH~$g5OAeR=`tߖwt" {sMfQk0}Ѡ;}eܨˑ9X8e@ bɦ1;g8O9QЮ82{(PSq4ur׎,k%6P`kGͶ؉ɳq5~+lw/ױ΀ˌ%u}h+~v_J•VW_9#lnOy/β-G,p TV#Pv KΚ\g5V-v'`auM2~YX1gU J*K8@uc,֩3n1Q99=NWc5 פ^T|A>b)js9kNph wf=bK _!J%]@N&+Cb.J[p~Enݪ9zM ucmYcQ_9"ww95$$$xa*TGʙpQvmܲ*Y|skS|%J3 ͠d*XiH5}1UlחڎNLψ\`ކ#"?uuW f _̍6WrI[? Dޟe b G?BNB gfip%f? . a:~IV"QɽɊ6m}C*`|c| VNc3,1'KP9OFٸU(0]'ˁϊY>rNLa+ ]rŽTu/%{0.3d@%]f~A>F 4USb/o>j1IՂhAh:P>R.&nKG%N5ԴGh6iK7 5t(d̡H?|DG|TTF 5ȰSMjd\)A\.~\"doױN?1 ,>@p~<<,[|/$zM~NWL:4f"*mfO{qEI!4W]Jhp`a?Qj; t: YͭSEF3!_`4׵[ UAcrKʑ Vv8f}+ KzP11nt,[nJj3TZ ge|+Qi|όѷڎ-xqTU "BCŐ+3[eq,?m [ri}]n^$mG#_i \i}ĨUI]!AS,EGtYlK'#lzL AA} Q1y)Ttoœw4&Ek+xN"~q;"JنnFd,:4T|W|C]hK(*rt7DX3Rq5B3d7Vi Y/O )B;6-zBAB#2O?:q+fPMHS  )1Qr[[6bUhvGGftF1B-*]]@ړcRxwP9߀Cm}8F8"19ΘuMzcH=BYɳۘc|^\PaTf/b*töB>Җukׄ%sYt#N\* /S ڴ 2];W{Ky8Ȃ oJ32\زbUwz^4<3h[[u VP"+eUKpMBki7Vr7r'$w0!|F]#ҩT%Uo7 6*u mzsjn}F b4s ŠR > {_l|UƏ}Y$a$w4:7T|mӄc>|9:]Jڠ"3?.TSY:_E^z=֖C19੠U> VR%"Xoޑ1 ܏OP蛫5qy}I=)8 El ]ߡʍviUT|-LeSs+T M G)',ws}^iSRkFr|4/MxlCM̎6hPLˢ/ZkZIlpgn.::W.K2זqY'6Ҙ!e\`2m$mj-hS*h#Y\VbxZ;}l{r}G/#_Q |6c[OZ\Nw ilЄ%2f:rm#lѲț)' ؤKBxjm~=dL^^pW[JC}>4,Jc1Em2L~jb ϱg ^~1j@e' ^~;XSp^֢ıMc+9E1E*=)0b2 saZP=h4RƘv(Z/&}Gsڤ eULXҽ1*^$=JG NE yD>gQO! v\EsF+IU?8Uhx%iRK)IӾ{\uҘv‡.|/qPnRtu}m齜WtQ@(iΉ˞wJc7@ 9P9 –}|փ0Fۑe*֭ÀPAOO8qu[AXz|Qᚃl<>;ۄ1zXd+h(쥻 (('tz}`~F<!mL=-.τ@7e%s0MߢMNsI~S|."!xX,ء-H0,I@F僇F"ay><ҤYf L$zv~St仄 b3,Am#9S+Φmex@ {Z̊|Nv#"nFM &7Gu`|ijz,<՛YYQ:[) 6B@--(JLHb؃=V@229>9gyG3@4I^JXr|C U6$e `ϡ8DkQ)B3UN8j` ^1l1 8?[a.byk D0cN"eϸAʈZ-Ngr>K]b  r )?%𲕶{t/㾯WcPS*|5Q+N:"GwE} DXdg9f?r E:n;ǣ㮽ݘ??*B[5v"7ۗ@ťlrFB pZ:ceWDv^>}8XT Niv0ߐ+%mEĸ΢@j1hF"lP7[ԑՒENc5+&bU7ʼfH+aWmXCn bYLNAƖen1|SLD?GCaχ|sb3)Q6KP>r&ntKxZ~Qndv-1?KhakKt0eqQ(@v*г muzbÙ_:&V /' /gySZUZ{,fq{ H\pIi>RI:N%%tV QpwƄnP8 b-(OJZH8u}x3@j~L7=C:&`g[O!WA5U%E=j4Mx|M8}džqt%L&R{òE~@.qUPfsrC2B)srG҈]gNG=(چ̢4@Q~Y9: M;GB.ebVk?qLM.Sl5t8?#fѺa;۽O(n ]τD-8ˌ[{/摒DŽ-ZẁN5^ 4}.^[*cvY}!{13v-=Qfa48 {sko1ޙd=[~L@]&ߖ>ǘL슾QFG^ٞJB3+f%ZEV8 LjUhc~.b,21JcA˗.]9:xYxjJ+y`RK06h邊XQޣ5JF="mV)GDT`׶uкͶñ1Rd4&飞#Tfgz',ER^`,->Y83BP*Q%x |.]"})~P}0ʕȨD$=/` LKE)m c8h-$}f5]4 7ռvYvqf-348,+4?ɷRB3~w5TiWkOne?0w}WJrm#Eq,%(x,p[F9ğKTȬTr+mt_6IE>PИוJ+|!Ϝ$*/ f*vR1lmg<`}UC14o>8yw_ppls¼󏖾1ne&V S^SAG֥;HD֜&R`q3A% 1g6Ol t*m_s&osn(B=ltǣg^VJ"!iVJ*:ׇs5&*oF飝w Tܣ"BipW5Ȝ3qʃǃمM|aj2|;+Wxe&Ϥ&*q53K dNX+I[]4$Q9|p8_2؄,ȁFZ0,6_7 wR j^e'?bxD2P*Q:;mޯgz^qZ.sK%-Df Hs6U! "c\&(xq 4b4Ӓ$aAMF7h u 2P/?g9*'c4GiO1o 5aАϾ!_vc `m.LC̚ +ApA ޳YL|УI&ڮ{9Ӹ֨r X$t' ?Mr'|`en+hIj'*49bSUnz?:`ko'f~ohfǩ‚~n:d{wQ:S8mt9C NJ&9o|0|JshyWoHlE]8Xf˝hhW*JHDᱩ0k-LشXΚ6oV][?8"5:?apX.r@(YW B.mЋc1<3UO*d*ڬŊwRi*熗A~yJp<$ Ԩ^NZtg& k jz^}Wh9kc6\%("ʝwH%đX.^SFhhcEYC'f >63>Wcn>=%Zdt|jAxlVb5༐ kVD|-I}f1m߽HYA"p^Gnlh_*<q] (+H f%c? 1:䔕n90DAվ.Z_[/Z\'' mg(1)St&KmؘeF_V&4IxL~jo_]o)eB^nᵗh+S˄+КvϻghAQ;'}3ܦ7rY;\ FS)Jg=}=@XvuW=)0ۼKEla-mtH6jSW.CI8+5 8)#<0u=FH:?>n<B |EP(.Ka㻷vOK(`n(I(Cz;33峲'2n-tXqY 6  /gs"[ ԍJ`9 !Xwk jEq$B?ЎىXZCIDF3ud1b4-C}{|ڣAOY5>X.÷.zաg3ý8[Ѽi;na|mp.`Kk[46J;9ʯ!%c8)ڦZ~\GA7*OxOTxW,DK:1.i6~#C Qm{a3&)4O P`[@їf#șpz#r$Cˑ 19+$E&ّbe5#:_ꞏ/T`φ=v(jx|v+pK U"V 0RJ:_}sNǬ>=L-qgnKPՕ᪁I\1 ϿɟI3 M{j./Z~V#Ȍ[$(@|c FFBpAŎ@I\O)DdE:𶠔"`WEihvm%-RUiz1B>BFt |dˠ/}eLyfZOIX;D`bSgByG_{|x:<Fuh;k# nU'K DоqLWԉA8H䠡!U? ~Em5'?z['lIk;gj.*/w L/:1-wy>ZjXǛ}|9ͤع ):+)} S0(pדNtH%%,"5jﲓ(㯴p_C5Uj!X|eZFM֠rC782E,*YOΧN]*lda:'~WY?n.fg>SWJ3YFF&+2TP8|aqRSBf ?nF##6Oʴ;OA y Z6c}\#f#{P)WKQW~G 6o6wy:% ¦ҵ@swAKѬj4=}O)H)4(UXAr-R1=ɉ!S@3 8H>(ڑ9-1Iޫ+8!l2vct:Nݛ5|^Y,3/.Xb9_)b&Orѣ-0cC ZvkrU,4Y- ^00»)irg DSvWg|aVk|b地 YLSڃ N +TO.RA*_gFΎ/?nf "$"Ǵ!5VqRhߧqTX%4˘:V ΐ>2pU-9LrGd&8KV "* y+`w{0~DZ+|c? c^p<\sqpZ)J7$g*CTbF/#k^ &D]{9>TufUօݱ0'6zM˹VEݶvģi?@]RrQd~T%G_[:hz3 Xjoz.o2Bz@@N!VƧ* >1Ͱ,UoOMon@/޷^I^XF+ ?oLT׻ h<5n :@jH?Z:mB4nM^\yHB$;"Ύ&\$s Vjح#m,r;" fۗ8_k{(WEfGK5z[!WŤQ}Uϸ!îG{MF*Ϩ{VɳKtx]d:}̺+\Sq+]@Urd#pp:1񘳑)mh:O,d0M$}D.~H18$ϲS~?R]l2Ȭ1ռԱpd_Z+0AʸWw 9.-PZ@B-G5+%$;Q -,6&W6[@>;ԅy@΂- ^i`;>%j>Α1LTŴ2W ՔGJڦM.\[lX 1dpȱO09]fye2L392.lvVv5dzƈnp#Ӗ^{g^]ע7jfRZۺf1amE;8pne$- #Ss>۟]%Ii}]jR5ЦÂLVdq~rd,upA$\Px"Iẻ8џ/v-9 BZfA* T6?}?7jWׇ-o J#p3 x>ӥ0p^MT'R,jCFмߤ}fL8qeŅ_ؚgH>F4ŸqyIe3=zk[`壴xLJmg E@54Y]ty [YӮy2w{1du;Ka]1y (dO-jGMJzJ3vWBO7iZe"0ߢA RQIbxc'Lό1Dzy UiRk5F-WQo'|0+0pBW#YhJݏa\jȳ)td#4[TS9;4WZؒe7^Zje"ʆ។.d GQʾ,-W*tMP˲,R,\쵝h;Έ}tlՠeRlr60!#q(l@_~3]J1(s.`:GFz"BVe 1gL' W]l2U6~$\L!4]w2‹/k$W<\.8 Ut,*g.U* 7~RגOCR+]% } Jw?Aˮ*&ҚkG ">c<ȡKO(`|X)x\/{Nc*ֿ!Us/w {&yUCt m,R8֛"P!`v>soIbLU鐡e*j%L0nGyʪDQt*BOҩS[{i(ayGԊ:T͑ Rlv8eew3STiRVq,BM,Tߵ~_ُ8ݫ`ޙ)D}ΤCm_ֿ뒬r&l_X[S*Ls +~@Op ' 'BE7}N)60g}_K]{G ?-/0We{먠ܿ'ar-%ާ^xo;ar/t6!=o_zaF$x5VZk} *@ !b)3e!]#C:A)qJ,:-z(8cyE#SEvz˙vT ^j6%U v[?+ΰ,VUQ Dinq'Akr-kXid.1VM1_$UF|8 {5.^8(d!B2Q|Զ})>];a Ts^89sE-,5BNe- v>pq|luJpvfJbo uvfwif^^$R}j +kpoW= Yn^_/p^c G6Ȳӗl\|~p>xs[pްRJ$\~f ipc*`Qdt)p Alga8hO }o? zQT9GcTf Ǽlڃɛ;L3ca _V|+(|5jf;oYs<8ϬB NǯSMK3n2-޲d>EX\#Гf}ރWǣvheO ا3kbFJn jfLP`8N 4<,5JLWJTjh"6; @SWg1\9qTEPC uֽrT#^TJډ˒?_ҋ:*y0ȡJE5_9~2)U 1XbFXUC4 &ôo cb>m]~[H x댣.C3w /(fƵf%*ᗀE#hp€{f!k7h_L**pWڶ?]lCߩ Yyڋj7@T#/DSpWCbXj:a=|,8!#9|5ANmg{]⍙\qVدP~1r֢jʢԩ7+$vJb= rD"]B˭/]i da 3m^qdWH5 h3X4X릹>w|_C3ZX$Ұ(AH[j͊ TYrG*15ǥ+ A#N nb~PTǑ9sN}fѷ'2uۖtł#-ئb{o1fl%{AM|0(-L4O!]5jO.ܔ3D?%0dbk6atְs7("SnC&: cYў)>oBa/Ɖp -H?0zqБc-!(*o.VS]W8>aP/vI zIl͚:qE;8"G2E~ A|O8N)דwb6S_WDnGtX_5r{uʸ3_FWZ> F*\,"h2 =V߇,㨌oUF ||$ŹGuVfBe3oIygm]p۱1RKnw^Q\cV!.]R. XR ͳ}=3Clq.>~X)jDIrd+&S}%ܮ;dk|%Q{TgJj ,Ci-P3t"#'tă>`\ vY;mḓ128 SUvo "QE%{ac3ѵz#Gz[8ppF zM\H~ʼ62n'Burab8@o^2Px4Cgc`hkT>O9ܾL4cͽ zo{";*j=V3g4.!Chv@c>L6UVṀ3`ۄVgX\USǒ1$\3j"(U<};:ؙHǻ`h)C~Ւ=c6uv-2aB JN.jPffugx!3d85|uuj=&RmEK5,.x{[ZnZ>:7>+I.1s,L\{] xRKYtg\,2Fn3dJ(Vx'9q3_IL@imXn} +y5c҅b d&v/?G.L.+}`ж46]Z׊/IpMjtͩccJ_ao*?8#9vfCىZ=x96%Wc&9D#dum?ͨ7|*D`""sc1;MYV/$VF.^r_UQ~.$ZV3/; |ɀqq7p7P9n"@B>PuLO3(;o=,-X_Q(,(C Еe<ɰjųhg# dO|ĉ6$2 TEׇgL{Ģi ]σ4f!&Ws#!jԭFk-$|t8z3r"V=!Fͯm}!g f#W\eR%g!nn)9p6 3fnXL1]dzGhEzzCI0 G3[ 8@7Y^51R_JB5GWhߙtHW{Dyscкs!UCV}{֌;;6YX8w.(΄epPb'˜3yO:f?~iÎd${|Ȥ8Dj'IsC%&f?sPQ^͓O^!B;F۲[\wF-pb3LJ&$ﰀ$jy.7Zo71|c8KaIoKj:8 ɀ8 8%c cd,ҥE@ؽ1?9bj?};dd%K@]2x[VS2\~ir]b[YQe'=Pw1xp% L@q<-`qj>ڊ f^^=M֥h)) 5B1zDxK:'i~;Rro[عp2uSYԼS2L?  F%ΘĚnu>a(3M?noQ$ɵ?jt5IE\tҚ^g "%^-k`uq؜qvo%u #bG_ͺ;ջ~'(I0[3v^6#r"48Pdu^$O`f%!ïNUb˄uw I4¨]\ nue`OͶ*2C ̺/eoR_tֽaE}#'+=h|s{ QBt¬H9NG)coM۔MO}Ɍuvg>zUR#eX *V UIdSQH\u1ԓWѫdbSri Zl:~4lhʎ{}siG 5-O6W0}T{nYϡkX$Գa|@ć:23jdMF 4^4=~p} 7H/Fyզ?xrU6v:J|G^2qDxyi&;c}2/D-͇1?㟍N)R`ɱ4XE4)l,~:\,=r~2؅ٚg%XRrjxA?8tm"{h, ^)#>D -~LNV@1nS]$?.][Esڔ9o1ZtW$a*sWH;iyl2JVc$SҤ1b֛Zyϟlcaz8zq-cmAV k3d|4/>Q #\:נYO!ҞGȨnW:- ےy=W] ZɔN;L ÄU=t~5T5#>*/[}E:rWyHwu}1}(-jݧhN Nh -uBjfa:Fݶ8~1\_(-WaJd+wmL|)t8u‚ ÈIm@>e@p**po]~ A3h6Sl:w9 t~jZ1tGG42sz),96ރi?r;+嘎{2w*$, ]qBi9 F$?]RtEJ/7_b׷{JK.>&OS Es]ТsUn\rʭ>ET+i@b?7,P~'l= ` nW_9zqGj7ڐch2K1%oƢ63՚%)_-*Tcr_"uG/kv7uMY՗ΤJilB}g qRuh:F&_e%=x @˅kS6I輁C T_5]`NLC1)xqWBC[ĩ=cCjʨ=8MnC>[]a;%'S] ZY3d}jnbzm<狑/ KR1NKNC9 ]\_Z{ee׌^:RIŻ[aV jyu!v Q4_n ?>(/ B#6^k)|)^^ 'x/eu M%C*.dqxNջ0kX,O0Xo4|3`懵#(M&jpˆ^I(pȩE["5Ŵ)H.$LR)@9@M`DRQx7@*o%۞~ƪ( *yN-r2ס:f)υo&1 ܲgEo!y%~KfYHR?+"L ג$,+Tnx=lݘ<(ױ~(O)I%6%>I9_yoڲ˱.XG .ac:&IcV'W첂+MF5YƃBo; >;gS tLt"M O).H{T \ D`ˌ(Z@";9pyCui,όX7\%qvwﲊ3 x^)g "wXb&\$ڤ++D #Ͽ2ybrkDuNp1ZߝG3oyywcSPR5E5E}Y"OxTuKB9 ˳a&;wLW*Nny`.gɏH _N]_J E.<^]ƤOLZVe>aZlAKJ16+ leby4v7f/;B EbȈ阓5$1.`:4y_,s<|s^Vu73N%Ȩ,z:Vp:EN~`49GFuXfbpecQ @ufL'U謮+%*J:.'9;2Aurq~&M)CTf-!JϴU?K@_@}7e's^,hNv=fLv% Stu]*ad / +"ϪqZ#Bwz#'tV(}3\\l{.:3dMis/2}”&_҂=4zEʾ.}sGڱKCA : /l{Pӝ!ؾj2LZF~n|+NÈ Gg|ȻAkWvӟ_mX*fuH{`EbLPo ;Y )s:/5sqx.^ɴ12q1U _ʷt4%K xs./ڹʚ!qBTQ1ݗP?u+5,g2A^A )gԦJj&%siq ,;+O ԦHMK'ꏝdÂ@ FHup2 R^b:3?M)UWCɩ6`@Åӥlbr#U+@ Ok*uEL^‰P8 d9&Mb/ {Tu?,CYAg/Im<:I Vⷪb\oAS<&u>N-Ab3QqK]IO]oq=o.(*wP.cfm[F9 Qw]H@g-g? %yxU[K|ڃwN2)S~~JFը/ИɍQ6 >qV_a= <#_c^ay4f λ6 )޻:D6u=e݁f.c;l:KF,_.ݔP'7|1B>{TIS/`T|j}Ȍڠ(0ϣνgׁ\hSLy@Mc0c!zKHϫظp,I(Pڶ$vSO mpk7{K+U^l ?:\Y!\mG&n I 3Jھ)V ]^}A'E?>#hщ2rNnd>q L2zHSsM좌jN%͔svbFkS5ہ5+)o@dqm͎V?h{/x҄%b[xŗLFxt>Gy|F*H%3.cOo7j30ƖmIȏx. YU& j0џz4g{4A >rJU0v7Pٶ6#{Y,q|dAO.=uC! 98 ǥQ 37{aby+y[V3,D_6Jq|f QGT# E |6exd%.w*+EC\4E$p.,lҗ:WX z|δya=eƘߝ)ӢUmMߍio=|χIx_EO3OHhla)<^ҤV6WA6Be.JKbiNίrsÆim4IyPS*- ,JcLJ7M {DO6S +%_I&ͪ`$eQ-S/)-߇R0̈!|(($o|0%zRJbw6Iq;F[a!ZdS]_6K c6-Ms 6+irQ/Щ N7q3K\T[Z68WlY5=MS\H/.;(5ڔJR<_RWo%'/S< 3P02x+1o5| *wEbڅվb?;g^}zkKAM/Ht$ G&g楧B\>=%$V!atkqDH3MLx.^HnĜ nx}i,T=*s@F)iH0@2g=)>s_v*PϤ{sl94^܊e^Z %\ŢcFOSog!"Z@jY3.yԐNǚS%0 1,WGQ7 /冺 KpaXWT|*lmK>b !]M:"?>0ev~hEU'PEk9N>| p U9J5nB?-dSH9 gĚ_Q[?z;11-\ \*؛"΃&t 3̓q\rɉQhj]٣keO ` 5o&H$1wgDhO6IL4q}Jqv{o=[;RYf![Qu:}di%\\:ٶ`4S:H1g ä ]ͣnӝVL6xWaKdŸw7* zSQf7[]f9^'mAz aʓʹ~*QP','b(Wx9,w,8=al9b]rxܗjg k8@v1ױpk!cҕwWVVs 2۬DCPf(Eos#ēԬ'?KUO@._[ap͒'9;~z𽳽wSh{xl !}7$=ڔʄu-tYg:%|y]ojQ 9ۊ Lnٗ-B5147#ف-] |Ag݊LzT] ^Vh(,u&૴"HK]_D\Y4]Dn!]uhbB0D,,K5䒤,NoJJoe`ƴi&2v}Eksl͙ E=hǎܳe"Ih^zc^̮UD2pZc$WqD;#Od{S:h<m3H=E^# oWjl!Q1HϲXawephT ||UFm;]A&fkk"dT3m2[5y譵o$Ds|jkjkV܄Wʽgt.Hn|eh Ur4ոL84ne"Kt[x"mj[;.Ln՚AUm"TO{+[ug7:[ o=QsW$Aލαm~!1ӎC-exGQm@ǽwFPADSg>gmg7wfnWЙ_&WfS,^dQ. 7/keWśFt˸@ 琔 wth3&`,\FVR>𺽎 Nj) ֒zWk#p­&f͊:mtđ!ZL&ۭGWJ۬5 $W-\[nkE]1,3ٍIyD=z~HŶ9kaݖ1V'_0Q?gLwn_ǡVrK85s>X2Kqp$y\f=GT- "=mv{b#+wBb9H踧{0~&t 6MD5pXI_vn,V968@AժFQ5Gqi^ R 4!+qϳfhf>EoMKi{f>u\.Y*YptepʠB!7sH L*N+ ?0&uTYF7&nb̑P=57@0Kܯ7)b׹l/X́ӧ$UqSc܊Na;ÂvUlb?V(mJ7-{E/U΁tz$ܛ*]Vڴ1zEpzܙzP{E{ R"f5굅CpQQ#m /9H0iq6`Z5R(:]_"%_\lX!fݨL0]@}}UѢ`AoEK'% V9r='leu.#1 wy_ff`MpLw+5XDPNQ7wUލ;$AU+E]B;]%o=g6D<.v7 шY5'l;0<?}Ÿkm:tp!hKA7lvݵwY%,B~G]3p~_cf<kY8^Ŭ5 c<^1+h*0)Ɠ4F0U&fum5yO7+s*Nw-zs`y73AW?^WbkrZ hY'y-\Zx :R6<FƬ@m$h6 :G6-q:Q:[󷁰}RL ԧ9";8#^ ww]1YGE1B'3zkpV(su}=鮵:*A]x?,_QmoI4u?^)6efe [lCD eD%A@vvr`?#L);u[} QxR;OQy!2.H7b^R'2Щ9+ 1KęPSk] ~4҃]#3Yƀ 7WwEUNͩqH>EU"`sD,2Jͬk1qlRMF3O}nT6[f%?\Cnj:R}֋G⢏m8\x:vHs`'^F "ގ!Tz89m|=qRƭ2WYϷ=]պOI 4QAxP\}Sx(d8KkK[HO٥R-?rcw*,9Qĵ/TRlej UmQqN0OK9:釺'p/U^=:۪_n;8ۖ/{WyK_vBm~qR(|vv/=ݸ ۗqz;ۇ]_~N*NW?+# !|->GO40}'3HyQ AQ_p #RNבȑU7]x]?y!iKJ @|?ߕ G =aϰCm||{7>K~}wRIȗOE|rDٿ|;H$4I7Ϥ/O锤1bLb$|$FbSSO?o$0Urs+BOlnqxXq>i`"i#G%hG0Fpʗuӭ~cVO?ϴuG47X?t#_y}>~A_q5BvBq\~K/ (bWm/݄*6b~ۤK_J(ۥ ؏$NBL"O>ʷȏSLTvz ߙG)?/3D1| N ĞNpesIoBH'$9c'o$>O|$A|OyW{s@WzP;fYDe?a3@qZ7kS]F:;Y!ґXJA"b]})i_^PzCR#_#{_GeŰ eK9BIqXdۖ_oq=ǟɖRZ B~X{W 4~r_Aw='o"p]|T/%rT?U p@T]T_<+ST!p~ed8+_@[A&ĒĻj?$ao,>(8!"ARe}8?p\?*oUoؘu;LԔ4Ie~)^~ 6nJ8H)kװ ^s0RSjF4iAxML/jΙk(,@/M z>ˤ0ЀjP< nj;!ΘoL53"?lºj|\Uvl%z!U0b_qPK h>S;ss(/VWi(5h%.TDbJV%PAiVb~uYjX |`7]x~l,MW {Eݻg-E=oyNqݜ4gC|M>c/=Zpd9ϦXޠl`Yi"%L+J͜^gR̖ *{.t~/Vtp.͕4Er8NE#4 L\RОk*+~ 5#sH˽}2,41Z{EGINjxYk[uT]pZB@g ZWMx0G9 _eoH+;Pt>3l,FCN`oPӭx[zvҙʲWFo}֫4-mP-|=sl| J~/6^'M?ϸ{Qui94o'y<~:mȫJ5MNp5_+jLDg äS̋I͒<2.ؾuYDlE7N+,pGQ >ХLJP_63;Ttƀ\XDg6-C/6,Q!a% Tŋ^D]guUz*kW#fkJ&|sI r/O\э,}R,]R$6>WLI5_P_- :*_(G,Z| CrEż}1OM)ݚhUr\[a6|kiENYJ"@sUK:Af2?_NKPҕLC*+xa dT ;;e Y\IV>횎6e/(p9zBq(01@OuNT7":)B\>E$Z\1€pn :-h Wjjh[Dvb};P$\:chĿMS6XEN\>gn 0-~?$ bO{X pƹeI7D](S{ LK\JSu"ڐͶ{$u” ` > T]f,<]ݤFkJ0eaKx%/Ȗm^& e3_f\䘽~o]*$, 4h ,i7o,QT~VuT7%;ٯmՉY/M9Ƽ {j;5PH=G.,Λ&GHNP"Qgމ| WdAEXȧ,gԛSQlH y XGdNY骷Q6tRdLHIYJ5(m x^Lފ! sVJy پѳi$N>cRpsJXص'r6hd?zgkW?F\3M9>23rG ? w_L1 7I×\1G6b%<歼(lӋHZ+,b&$`t"/s~w= EOgIe)n J0)`k:q^.ƿf|2Q:r"~FNs h@r/#.! cd=J >qGtQ }xyצtIs 8#8reFd{9"AZslVa029ɵN)t~=Wa=i] =!'m:,s|)HaMfO-ʴy;c *piy:ؾ!#|GXLot8uى5NvF\,d}{RP;UɤK!MLJAuGэ`QR^h+VjU:oMr*] ?]NG"n;_ѡm+Y/39/^P} ^FjKK}ӶA'eM'TڦJh4}LZ}10:Zx$Q=l7JQ h}ޢP^DM]5jv ,.+]:1Xq7EjʈIk! yKt0m/O?Qjp[4 P-VܑҒ wGܪU;Yl+'rkse/mJO=4Рz[RwP;^l/&Imz,)i uT)S ]!8Uѕgݹmd yI$usbml"LacdԾZez> .<ȫ0.g)#C+=9A>-ϡi{{@Kig8s$rF\x9)]E1fQܓPl^dL(쫱g9 T"X_1qctba߹I#Mi1.5d_RH]xbl=CHxPrt ,G+qw}Q*F|wO8^ >q&ᨫڬN *Y0]n`H+ql&v $]޻&#-mPf?\$E_/eEgBj9(H;PaVX@qckWm*v8{LXoߠ[.]!wNWx6zuTT,C{):=buT`zyI'ޚ6ȸ2M{izvc -H[ltv/s@'Ӑ2S GI 琓6Ϛm9@,,(TׁvEhN֣f@pϫ[S1"1$v`w0b9ބieF (k bI|̉~ok+HH 0? ?J߉=:Dq0jOnb]&U)c̦`_GJNýe^8E,fm-vڎy9<c6NoOLgù[UGL(K`W~ ոϦ&8zmWx1X>?ݣ뒱 ɥ߽wQXUo3h>_nD1 19 .~pg4 J|/ArEv9I:TE:7i'ѩp$sEgOWB<Є^i@ea >?;jdw}HB<3.%%P !sfS߽ǭ6_e*.O'VqDB&=sNҗX˹%|l igwew+|Q΀1Ն-50Þb\{P$E%G'Bn dI2xq b;EF[|46g7~J( s\2ׅqjI[d;Wj hyĚרVL1w 9.LQ X7ѣG CC)|{^ M$ O;B$xؙ+%;:uuEu!coiu,A{92Vxν~m:) -N-ůR&}s6j'D-AI9fY 74A94D?1qWZ7hE~T/:S};^:K [YK{op Y5!1ztaAdW8t %2֥?5{WZ}q,ijay4c[U,c:1DB4]hI̐Ea'SDd65 ?XB (̐5f6KqX"/gzxGzeEr&3Ǿbs?ה5wQ8`aৢyZH mtDGtu6<" nBs,_xSJOi)ۂ,,IsU tDtf'.6 >馜'8~0ҁHm]hO6er*Ӗo&$P}gѯ<:$|!ڮ2EOnJ椠A;A*͚W-Cg!eLh( gbIXP;-L`'ߊ8Xw= #Z ,B2$akMC n c)f Qɩ;m ʫB9Lr;~.T#Ž8{22B O$z;'&]TWO8K{i^qV8e].%[a&+;v=x=$O2%5^w3є[灀]i獗B3*p/4q*{nE.*͞IDJdZ>iKKWbStvdڕCc%*Y>v6U$К4u;t=U-DVfI;yQQ n0Y+!hdykW=M`tpP>ҕjwpvS RڛW!^S5AizDlׯmxֆeȾq$_3zrhې~Qr(:߷òb ;9Ytte(*:5f/JIFl_zD6‹{0gK?C=ơYw(u}Fg. 09DRh=Qo+, $ak.c{۸Wd_f՝9\1W]OSظ&4-!3nI{%SNc{, WP2Zf$r:(k^-Gv _g †cX_mT5BK$Ow L"AX6=K+z0D9A>*A@s5u-~{=iRpյ sBu/ s>CfT@3jňq*>vo3kETPCF?l'epis_ gj}Q aII'b[cCΨ[)[(+AN;ՖryzTG 6K徍"^Q՜7{ -لYHs[ܘW-mRT^i2ʡKgo-DtPVC+w֛#vx?(\nz27.Y|TFX&fS(l&Z$ '8)>f(|wF|fȗc ^ay5_ x"psBg̨OzH(7ZT'n{ M7qGP-S)!`vI,KO Mb탤rh6DBag~{[~irF$!U\~3s2|Yv$Z#ٜ=08~;w`~2l*FNꙆS!]trָ/l1WH3-lD~$*?vR7SeG&竕+2ݍ[IJyS~>]kǬCqC`5}6L<(65%[ vw֫g-oU @NG9+la*}eʆI='f?!U;fhZ˔T$A~VիN-Ye|zOHqv E4?!n 1`O)8dIg'3^Kx˪Xڴp8a0*(޴oqp)/&oE&cv?ߞܟp`qY"i[%0 Wvp0lX"AS78VE!C=o&jA/6s9ogʸ*g##ΦZ W G4HZ4_pW[#Mǜz/*] |d~J oR.A>NxO^*>m΋ކ9CUI+`ۀ27ڳO}9sg2W8Զ% -X5M Fb# ZL4K_( ٨#^2@k k?+xT̄{ 6TIf!xן/dHbzK!2B> *ogUnV/p_J%uHhuDJĻ$ VORS s ,5l4bUeƵwXvog!ʼvitRXGqKき8;,w[}>iK^{?H5,Hp A@D,UƢiH+tnEſ5ca{ي_m9Nv VFhFg:] D qIm8uzUY(tK(3:#MV,=݀;$D. kR_S!}b9&X/rMRȞ;tkwPқ+szW t[^o yf|S2TemcT˒DX@uZ÷x$8ECB/' sDHXUW@AL/v8{MC {D+$cKIbW{YގIO=aۅjg4C?4e᥋ W*/0mc긩ui?JPzsaCEq:~6-D$Ņ,`rE]V,WcȬ\1nu4G"hHׯUݫ%m_(OQzT龡lMiVVn N>YHHKQP~DLg.]@L YaX/ӡ ܾ@gI>bWPBi%˚>町;b?3`QH`Z$\n{CYB3p5c||_e_זCK.}~rcpF?Q+[3fڹ~ߕ 89ȘNFEX̚V!\]1^HdjNcl&r3Rr4v#2cng G. 0FZ|ҝ ^7e!@bG[/p1 \ Hy:-303B jd)-:)Z'0w.Výт+f p2qOZNE4~L 2OS4hz휿<܁$55nF}NGo{ ;Fm@c*[sFk~|9ƻ0g14{kcvyY* =b`~ ,5xY`]D{$$I P/+Aۚ~W\;Z~.9~@wÛ 2é#i]E1~o̱3!T+h5U5Yڕ ̴C?Xq4\Yjw1w5]yog!wa~ƊLgvL|P?SƧSfCbm3{N~y>ˣU)rHhgU^X4U-geMqq>4jO2+jȑEǫ# k=%l hHIGM_d>\wO/ 1߹ a}ecۮ,',UR<*ZgAIFYSsV,\ ^y;q<uopɅܥC{ 0]Ą5.L DڒfOmה hڼ8˖B+ H"'aL9`e>6lǝ GC}#7"K+qc.4pB+<3D?Lg,dR\KW |?}c,է-/l9+]C}vCQi5ya5ƪ!ĸ*0Bj|zqEYQ,\ݰk*eRB1Ovɀ2o5_\y`oocl#:d`c*G+D_!'`@IuЕJ%-F2bFBP2t}])PU%2vW /Cc%+wMI> jo?*r!.[%."m. ]U2Dluί aFB"!=B"4YfQ!G.3vF RJ*pc"CwadPo+^.O[T{Iu6=J~ Vb*OWi ɘ] }7I;L,*KҁOGw^Yx-; I_*rimAKoJ]d re%}{6GĀlڽt,X秿4tF8̴,DΒhNxQ 3l#_dC6eǣ IoY} 6]>J_ XI *'7|GFcU.A]D.|tډj`LBH' *nJ[&4LMgpT9ޘfngƁ>@?cwC;Ip,$g hp< `Nz8q nDo8v6I<;<rҜ!FƉi$QjbNPG[fm~*Ûz%A29BM|FE |骬䳁rE%mC: 4=8Sӑ癋'`1oK s4 "4'-&&Hu~PC4OZRgA#7ԮJ#ʐ}kQ޺`HWP Vf0Z/uGV*2?DkK`ZGogWn&(gs)lmsi6V|E^d c¹#ODo QQp7;7xW"* 2m*{@,- l IaqjfG P4aش_va[G|3k((Icz楷cN$|8ܩ*zw"8ؔ<_^)-hRT(bx%ہR:G+mcMXqxSc%1:TkH싁ۤJ7eS.jIG|`KY{gΓ[U#,jߣ JL+Df}Vek&IKR4Z<`x9:1A.אQ1bk},N.)Jץ;Ѱ% JvSLFZ8O~LE6&ˤoh0G6r1t}kA< qt'_lFH.^)8k.bXH p$Odg?y"Qm;ɇ|cj#V N'M{'!ȣ&\}&(1SqHn,]YzxwHEmüU. n…}gkCqOWt Ǽ(H6'-K< i^JED &~XǒxK 7bLL)ckeNӌh~[HɖlRYij./9ץ\x#!ƆM|~V9^o y#_{bҭa'2~%K! @84TSڢlbi! [%gd[aD<9=ےyVo-Y!B =c0:n9vT oaU6BwD*`U~%}_Y\jG<<-VٯpzK$]bPhYw.,TaJ5L洶e㔇ˋ&*s|hk$I;N6'K6q9eO}pdcIʚt!~-弽=@8֚ЏJ`ͻ5BW!Ibwi9"L2ّoC/ i@q25M!lwU uj0X7ç+y"#0BlyV;+YOWɠB~_=l"&ؠzzq5jŴ~w2!q*߇g)(Z\| aJP+K/el'yyT?(<BXĝɣ]p Ǘc-/y[[v$<AE>Yln,=eXOz|@(_Ybv']V1t9>^]=^Rʇ`ܼgV ptW=0~Y{`A֑L~+v`CcW\Xlc涰Y[E茗ccW(Ow7NZ-7mǃ٨Jlʇ0eYس!=M8Kib`]Cr&kR8(s aaXC]3eq=+ĠU謒b] SɈ$ىcWdҨc[ ngilB3$#h=sRS,6CƗ0aBr9b_``)'݋7\uKu~KQ Y+BEA Ϫ+ig0h;xm3mJZ0N06#?<$DNyzps󑋝tmCbmb8M݉,Dld7 2|0oWsjzʸ},q 5^?YQdi`^$fs ~(WU2\"U*1U|b@ iQ) ,B*iH^s^2{٩9֢k۞,hxiJ 1ݔ?ՠ++:|P$CD}X.X\1:[1Y( VZZ?UN#8d1kfEWᴌ7EI?PBlg62@|ڷ f_K (bhDJ*jVCQ㣮q [tweN{:`N?^Q2?s`7`j ΏSy7){MDZf#RG#M+7UdqX/KvgMmֹk#H2p!",2 q'1tiUsd1ȭr㯐הakaAL.)֕72Pm9!/ɮ!/J~ q{fY<)ٕm&AoCx.2hrQ[EV[kPq"~*_;C¨c-r>q]JVl?4D:ϊ.OċA'iR.2Vt]a+_·hf]?ZHᱨx,QC)2ɑxR( 1x~)V&W-5%A.TvyItoNr:ط>HŶ9,7u B0Tf2ߦ so H[/]^cE ~l` bNn/8ShC!ȧ|9YU M~X0()e1XFQ{Q*$ Lb 5o,=>7fgIDJ<o?2C!G}YIٿO%1;#J 3^۶ a[!||mm m6~hf 6HKI1bM',r"w_Ȳ @iDy x68.}c~Q# Ht m^m~b4LJnGMjgX!)' |p3c9ej{yڂ Q}vfb.y>1t",nV,]rt)^+և ps/ቝOd]ͤMTDrBW8) wn~Rq8E+z`*wSRit,?.D(@}ge%j r(yԨ^BR m^5Tֹ.{3}J2Vs֌$@-ל/dPZ6-[w6<\!n(+Gre(YPKmxlOaCȭYu]=J %ԏ;R#b,]Vs*8,.JbeX)TR'r=P-@ʿK@ޢfdx+)j}~c=uJ'Ďt.U<R`+}$żC)>b_^,l;&Z\y3p^I_V$^LA > Ɯ.sKx'e@'*gSK7 ]5 c9GnaW&t 9H"pbͽƥ|) FylTQD?M#q./%mJ{|!c@Ʈ!;@_1[@|[9Ps4SC1q}fŤ`Y^ 1%N hPѝ5 dV8k!x[啧{[P='cM{e^ߡxAbeu;tHJ 9f!޻=wZ֣`209/ǴMH*֛W]<|=cU*o_"Ʃ+"dY"rOVSd[=r98)/o? QLS8 rnj!vh}NPQf.y+(xI<56S!d)a,{:lQ1"(>rN7%-1{[Me~cIX.C0cj+Oo1BV" t,k5] + ̀GyB`N4>_hr Lio֞;2>刭o1뉺1Krc}71}gg,8Ư<[q?=o{s*DC. cg;rDZlLeۍ@<5ƨ{E7XZ3~z1_YW39!a+/XK"(%2 ^6Wc8ʸ ~J>~(xt}]OQ1Ѽ++s屜3=C }T6HM0[<,զP ˾)L3Zi\/N/"ZsDB+?#z wq`h mbw퐓bZ4(f]"+su!i-1XCم gGrf|,7.ish I5dtkerr}6IB  `5e\on}_z#'7#lro(b%لM1E^TϧdAYP UT<غfTy/aYı͏ Ȝv e'Šg 賞YH'I(劣O^ND\+Ш[Ķ+$r8G h.:)ނ26)nn~+({t˛&K׭ʊ,re$ri>YlJ.!FX#t0R.2i=x\`U"[ڀvGғ,漉 fAlVwLDDEzЃBgMQUHu}@3kK}w6d;M63+D$2H%;{ߵ?p3mVW;WĿ*ȥl;S0r]IΚޏqrR$\WZ to!wE໫' 7G⏞Nzgs^[yIVrą}Eu[cSaٍڕTB[]J1he̎Lmа7<^9G{"i':dG™ bt2PlL9R;s_/TءID4 T)P1zOXzu7|YPY?K>al)GkggͨJbB/U;Tا3ݕBsqq`v՟wh:{DuC 61!xe0H\n0{%|Vj^h+Fj*D',R1Gٯ5-C~ >j%o{GlKd䛖}"6bX*LK y6մ B֓QiCutXo塾שQ,C08yDL.ahIjx`́C 5e[2P/ LEo5wYi&NSn(5D{XH!%RIHpPrЦ4 WAIZW(2-<֋l䁀EOYI& /`ϭˮuM]0B߆UKyOa4]0bw nn%*1J$b^5V,[c'2x dHP*yMs5j[ ).;ݼor̅pzHwD0s=RZt B8چc,rX-l`&E(&)i 9@"{)a|k!3pP]gr+:`!=)eXUM,X8?{27iE ЩiӃ+>@TֶѝT|llٯ"k;aϋN:=3 :;gȷKש|8k!=/Cd$v-@m*'{4Gb7!:#kTR`יlxͭW[;o;T!um@$@ y*@_mnZOY=voncO~911v8Y 6$4?iR0oqn[71.JUK}s7^Zpd CU͂ ZϷuԗ[_%\eB$) N11W3Zoni^=LɾgUƶ5/J]i~3 ԮXI1^;2Tt:PdL[ɉN>d PNf, 7iՍeA ZbvW?!ltəH9TL)Nv׷9E불 \P\v>?Ş08"j]J^ ۋ}aP_GgYzئq>ɨ%E-'b6̞8u~7KANxoxB*q@g+1c: tBy9祯T`N*ګtF+E uײ* ]32;)WS9]lEGZ7ETm}1ˆ|c}PgD,@KKzYf0Ȅ9EjkхhV&20]tr!RX #- ł^q)=͂^<۞iyEOeʱFJbJ:QK>:O-=ŗf^ݡp;x2k5.I&+p9~ \ȻEtgL0f=kK\f2~V%u腕'~&$<;}I/}=;Ty w< =F؋ آM9p+VS0AYo 恵GMLÀ۸GmЏI5ڢ Kp<B<:F.Ϫ[2 ]|CXLZy'c?;}{p~ WD}$ǎ8¶|,2H W.JW">*o'-/#+P NՕK2&w՗p)&8clH]e[ke'拟M;[(uILz_]{. ,i'X?ʃ+~^Wc d}ؚE!~0RA2TӫMljڰP#M._Vh>>c)`9]4 `sL4Xַwv9D.>{WIQkeO^;|^E%RT<~c\6oOueD7~K>+~TW]D\|g"PeUI8/C>Y$}4S7V HGoe<yc.f 쐵|,>bXz+IEDlL=>Gq/5F9K=qltG`K/U C(ZjV^U| If[`MшHWΈ,.xA/K>R2hr.'N]Y&xvTm02ԭ뭣uiȅ߶4ֹ~t1S[#JBX f)8+Vt)4\aM16`KaF m/ k/U;d 8X.8I찆" 'DJ{0.R̍MAKUP[&/IĤL%uG16}8ۧ/ n]lgf2ѐ V$.Z&I.6TGd_~U>Δ0^7ȱ7 LLvBI2WkFg/:  ©*%]2, `E{Eu$I VhG/ U \6uoV}[dsYx$[H RijvI ?Rdj"Ch]Kf ?+y?\K'z_ov6ݨ$W6X{p!Q_ł(jՂzS!=o7hռ{z2c9c2~\jx);HP>S_Ek~扞>gx:lTy$CQt*iSS&`aW*I^Zpd׭ _ *j,"[Ev/yUŷ OBqT.zWXQD_څ?ڐf%z5 nx?3:bfm]~.;3 lx}6A @^{%9)ō:c޶s$Qk'Q':qyn,ek7$ wf1RglG bڧh%XJJGQznxa_7oOalpN#@Evx/iWQx1}qmdG>/%N߂_p.d" u  I|qL Ġ L6Iȷ`oSvr}ubc`Żƙ%FH 6E>҇GxY>/~Ayvz;ܝ~wcE\!ۄx#*| 925[̈́O[/@h[ˌn/7CV%{icf:_ C35_/[pH8~1!Mg܈O)BUt|yU>j~2(zzؑ ~CQ.b +:n+P.ӌ칱n&o,Zh[Sywj7?IŠ瓀Kt벗dbFڕs\!gKI TX%~] K等jZGyDgk (zcB$$~YDb\|b$LdcY҆weg ǦKxҶ/lJj CՓ42("/||]|=aH)i׽֊U;Y4m4v#r!Y *#p?]&zob.@9͜XܭLbFiϷ8'C"9L+޽I 8rl4}ҌdGP.skm,MMbЦEr{1-8ꏇ&]^T?sZPm0ti[FGZĭ_̎a0aBT'Trc)p,ɪnMAAoWI!M}Zi*. g*r|R?]ƫH?6M&z#H}n˂li;kWW=ҖE0V!"6+yM2c8T.&p&`w eTkz'lvoOT!E#*l֚P/t?i4Y5cLF+x9:~{*koQ<>d _w#{(Ꝙ}61MP-^nH|bľ,+?v/ NXy%6B?T:M3|FؔW]Wys'Ug'Qja:z.kSB~^8QA\\R Kr3SgdxE<=ju&AдA$Ah̰X $sNπizz-(wEm ySDRآשRr,I9s:{y=!rեfui&qyK[\|ɗqhBZ IPpE}[\i 'F'_Jw>34ۓ3Dol57_QzJ( y1"ςQb5ξ3qWfWdL?Sa'23a&JstjN ^'LWey04~]3C]q0н7I=ꥅL2$"/XɡzߕeGFb6Q6`P#_4ڥ ] bmZl?,XI N# k~FU΁? +v7:Buʨ3VȪa3"h=f],҈7N}"3 Sno K_? YHBݮW[N% toD,,7!;rQ2V&MeŒx!wgKjR[DHC n<3E Y~7ZT~f QoJ>qOPPw;6aɭs8d AN|CKyA_ C:dHGoGj3HL:;4f[Y> Sʢ DmqȝgQȲÓvPvF q0 |_7}Wb7M! `՜šj*\&gPmrԴ"b"d]Mԃ@ [[Bv0Uc a-#D=8K2ĐI3&zKuEAa_e%z-*?^LgsM/wo u;i$q&-R횦 abK>)i/4).>~IEԐg#SΫFn;rX_@ q_+ʾQ[XE.)L1~b]?omRG?2 P]4a֜3 =c;|Ҋ.M,/N5mjɸLGDѕnaFV6 k?  %d\VV]n\V:<]*h3A; ?h0^kFMMHfVfR4>ZL]Kw^{aZ/DhڴŊ.~u3jG.jAO:zWS0X00kBv]O-ntW{d"j5ov{XEIsT)izV~wX+ $r?~ĽA eCF&x^V/sWE?vYAFmp)|k z\H$w7~{ ͕^`Vخ-FBcOr Cڌɶ56ͯ19\1Mvh6ƨ y1K۶Z=fy>N I~{e>cFj%f sʴD|vX Ր~ jCx)pG|ϧ~S!D &nuJºƶx^Z!m}u l5p(1$Jy!ޙP_ۅ&\?mCxe&~2“8߿LP3kI!Y$^ fT$" 3xA/ְ"w(cfހ FY8Zv/<>QSsybГ8>%UQZd7͇Z\JwR|-0 j>z6|r:61<쮄v@ZӟUM^g&U(Z#_D%O\:ii 3nך:߱z#=hŽF'a%,k2ӅU#  \[+؞QEJ+\վҢΟ+@9D`iT9xr<Q*ޑ[X6,,뭦,ոDJVa:Zio Gvχr#3$p">T8UoS4vn$PIc|ؑi==XZ3+Cn\G[Ily:`)O"`@&;xH 2Hv{qĦޢ.uNnƫ5υYRJ-Ip(_*!%~> XwȬ Q܏x.;ˉs[_@Vz9g?M0c+ n6`O,iwbTwvi{~ÂGE&1/ VYp:6{* DͰ[lg˳+#i2Rgj ' AF Ǐ.=X ̰B, \.tiWvP7Ow$R'nVRz77enaB48qvF&Os$s26oo&mحz}X~}wrT #ɴE7"01Y 5A}[ͨ:s߯r$Gf!ZUxZ4>5#μ2r'cTLD2#šeUͳ f/2͔[?ތTjAsQmⱦcz~238{:eߢ oqgtRKő .;_浽"fH6>Ʌe)sBC4dyP^ZLFNoqI};S2:gtq=/JoK^Qёw2+x񢦠Ĝ"?copð>`YDX?Qj'x+fH ! ty0cY?(73Zi 5@/ ɮ+J,J6u 0dY,\*(EqC(Rۼy? ?|a4bM-$ ?.Ry.ƞq(Znސ3#[U w Tv/ JUsi!m?9[}p m $ MD';{9F~kT&CɬB͏K/ţS$nƽd\8'0kZ)u047Qtİ2+$@CY {Z#AdpEw/RK a(9OU O~;L D%51#dC'R^k`? I=i))ANU_x;E˙~Qi0Lʥjz^S$ f:щ{P3ʇ-5TZO›+}YJGO6l3|n!^q*?,yS-ty3Ć#ކS MQbϛ;4.22S5tI,0g0L0#c0V=Ui RU:Js&B=_85iV,-%$ϑ$| D[}[#1\ G.ͥ*zUjDA=NJT's ̏hWh=+nӗg8ƒ3uDbbg&V":RiNfrfq5fpOJ'̰*/(SGN P\!X;z5:j_\s#12 ƈEY|K3я`Ŧ۫Q=oIꣵ}ˡApο9aܗf8mLi y=9+m  m-8D'|=$ .^}`:$:jꗏۓCwTdۅiGnKܚ]J{u=[Tv屇t߰%[=ZKUozo{\>;_Hj' R*[W4~{l> -ng sG"Sga j!@كp}r9pB'd7&06K=rb|%J" ՠճ aLO@ n2M_?Z)o Kv/3ꤵs\6%& \(M9<[a8w[xN;C^2~Ӌ~}یl=Dǽ/>)Ңqn̋HJT|R]_zšjɪыe6]KU2_ ]emP8~AcV_]&|I z:C_#FЪ\8۪SH&"!zR?8Em@[.e Yr¥W JS<9Xwe8wUڃ >Ah sΧ,!%߿1fwKr|u|~ِk֪~r"sBIkXߥdX:tMS1\×s]'^bNTmV(͹0'N,voڒmlspq! /-4wj[CD#Q!ͲnTQ[dw/{mXB ?G_Xq ǃ55XB5U>0Q2 B]#' b,_f* =GSĢ ١C~&1ZH7w(gkj@R*ئF (iw>(lh%@T Q*WAO26[tzV }N:bH L' _ƍ0}xPw$ [Cy6Ѥ.Bfem`+I5e$g1r.%;ѳGV̮K?Po253wWɾOgtn7S{.=[~ʧ6/{Y/&,b6UB#))׀aO};:;8lӜ)*xZ/Sd8h/^mk]в 9O Sp=x fPQ) d0&> qmz~~!1!< $ytZٕrW6y)󢴴:Wjxs0$Z;۞D ?%Wa;`nzs\XXeM␪=WaV٘?ÎrMf @M25t;0Q%><4qFhcKG=l~{*dĈ?3ǖ5IjlƓ w8Ol(>\E2G*Bڈ֌W+=b,;S`fcdXy[i[ǽ##;.TF d1MđXGWJ+ ߩ}+Se9&.90r@6Ͼ_Q甊 }Z D!C쾬IT2Q,S Y8Kj* R:7UyEV7<X;)"7q'13P:ȝh9cDnb %u"%<'+ZorN_sU/0%] ?^J8xS3Gpd% N{YEg?Ƀv16|,'7dN^f 0FpNúHDi/l"q78# F8--wK]\{{LJ\5ߩaun͸i}bYy% !`6N]ONj)edym$ݯplTO~wK_^T1v/]V`$L`n.\51i_2u#-b W|J3N.bkvuzg#`8%BhV;/]j sGjpa}ϣ[t"5 p0z^-=ΛIpH8}Nߗ,TAQ\yk^Rh ) mJ,~]W5k7Q/ÒlyNx9u)R'){݈Lۡ.?37W?z' )D4\-Լ5h̦gW@˩QQS?( 1aLcty0a(F]uG)]{o4 {9@0T>h836D=˖ _pic'hN6yT.DKK!XemŠrc拨褰nsw/ qF¡h0:oOfC׎pL売fO>JbhDόJ7\58Odsdo$pZ4%-z$l8Ͼ.p^H|TKM;=| zi> =ռ=;@ombb#g5߳6)_ \3߳eYFl%ƶѺhJ`t@8~ɻ'~$9JW ΅E2;2#B!6 SXgg~i3Ic689$È==K zP> cZ`bQQ=jt]K㸲An?O^ꌃr(6J}OT5V%9S GioorT?S.t~Oc O|ʓs}wv?-=v~j _oUW6VXƋ\"zS>sDf7G<2&@+&" cTɌ0^N^쮠ن(D;4ahkLR\|,7~(dZ%<=B!X#`Wȩ5#j}͘q 'J06GǾ7!,r=DvEGF ﹳfYWj&D/TฉRmv-D\/W>n?ILý È{d8Jnsl] ߚpEg Zltf*ЀzvJn#Qg>=ye in\)!8-@l!YYvL:Rӭ9RǗmnkyQ@讬s Mזve\k -:L%b1KQU eL֡1 @GS%rSV@fp,ׁfe~9+1Ͷr*70qjl5T]Ycj!qH?^CX>hwpzG@>X?_W$(6g-Y/B25.Ll_9V߸_>{qC ϔ U_k2O? C'v|M~[mOխ 3WZVӆ=#,G $WN?9%L#s&$A'lDvsDJ:͋I /Oa>ݥ4"D-%QuIֹxvLR#rbI2s6qb\3Ooe6"}j9t%NKNVNmMk3MeW4PdH` 6HMYPAtӠ?7Xk6mʐi}&#)퓐d5Eڞ 8$IW6xu>!.,Ƅ#+0Z"ZCĒ!e¨E?ٗ׍k]&ڙίԣ(|1 t%ǰ?.?Q|Q.8sYc na Ɖt,B"ql!s01Ay6>NENL2B'_sNNŠmԑMRc!=x]šprʎTk. ӶNNE^~`QaYNh_(?-^A(14s? @zMqބKkix.JZTofjzO1x.Fv3y84RmԽ+KHHeAWF",Ovb2vWHyGO<T]6 (lo(: /]`DV pV@X7Ҽm֟s!Ժ;o߬.M]B|LVUHv[Hh=FJ4CxNMn?gooEzcO4XhYoyL˘y fdjS$8Et+Z+O5"1]wdnxB>(jg>9>^F ߸ʝaWXsU xd(4.oK-e=Qh{/؁N]On(;,k7Ҙߢy$4E-ϑ}k^o ~A11MjTw -"n /ir%bzos6Lm޷KF9tc ދwxSup,*CpXMa| 87)V TՊe"4B$274=iR%B94%h1ej\Ĉlh7.R\ܧ&HTǹ&Q--v Ks00t;Zyܩl<.D/urnBr!ca)|mE+ U /=-99Ə"t Q ?#Q WaLX 0̎19~xuW0,Z"enNK.?M ǖ4+Fbli@;3ΊDJ}O,XS>I}߭JǕ'iŭunNAn.(Wj~3wC[tUq| g6pCIВ`VvIʏ7tg13>'eѓZ`%.< #S!Cef- Fӎ&PU#jQp+ȉ Cj<ps PЏ3c A]Lj_9h( .(b.-+K0~37Zh=Olnֆռ_f@zn[{0&(Q#t)`TvD.,S9,/şfխE, RBڄ($ݑ rDc3(qJ[sVZ/n)DieS9!o- <2O%:fI(A{@ӭ hP0]MUrߺ# 8 0?ͨ]V˧0$O!\_:RW=`YP{8 oDpCG؀(ZTOU86Y3S9&^tJiUPTdk?bQ}Pqfxk"g'T<X;2Czd+'гV]iD)>R1u>s*!J޸bFB=q^ mJ~fKuK| cch0}``׌Aɔz$6fAE Ԙu}vsP.)HKٔE=-[;pg~-|3E lwE@h|X!y+$(PͩWr^4pnO~y{5?dSi{[ۅȝUI "Jd-ѰP1a~dTyF/s-@Jb]*ʈNWyiDschG<~#_r.K` B22$ҕpMXa>PoAi(zQXD8Oc{҅zl|| U)I;.X74]Et:; j*x%J!Δ*RfKESyůKT% VQ~!I4 /ryUI8o4 t;a qiXΖ|}7$vQ7?uVwހ;ɳek >Gc15\ppRvM[<$fahʱ#K<߇#GgZl=o# xUN_WVqOcVbvڵ0I~ 7΁]Esp/4Jb;n0uK9 ܨ`Ū+F7y~˨o YH$X=G:5%1 EzX3`h"̷'Rsp[g SvӸB>+.AVGLPo(zQعU:ƑH=8`4Nޝ &V|9F4w3M5Kʞ_1A\-y}+Yһfi #SJs=J3l9R'5Z-UH'o-<` Zrِ͝ E85yBno7 !IW]cL>rٺc=E^.US bx̯>R^=^ى=3HTuUfI'ng]LtǴHwlH JjNz9K[E!{O\'.ޢ̈Qٙ Qz'C<$ pY'uY^$eD_QEz{Ʌ(B{0K^|=-)fB}ܻ[_ܮ>@ђV^xUjDr#Kivht9I?[?%Zo[2Fc 1RE˾k#h~(k׃Yt!\;egP9iI@XfM%WLϵq!?-?Jc6qzw7O1'ݎ(j[G}bkkIbp|L ]2"h)°fůiM\x5{pKEN#)'MJ ez׽3!c)v<脋QÓu:~hdc)\%F zS~OTL_;9Hil-$2㏾zE.H1EdD Fy,J;K3cK]X}{^ZbiZbmFP1p6y񷖰oU4A࣭z[Uzm6%\B/~ kPP2%VMHi{k.ʉKg g% , r:RMp|nkm>Kyai"xUm&\[!%+1;4HGp.V3|*PI rb>+DYJ/k-JRR #Y/Zw|-J6fade.Ȏ:Nn,/ďk|9%\эH*QfȾ Km{;O{Hhϛݵ7U}']w$SIe(FWKN1" ] [U]Նh[u(k}x~<(v%ꐒ30LP@+_&}9"`6ͣۢq ҾaѐeN/[Y 5m 5Zk] h0zu(b[Eɷ>nj%@I|ؼ>Oһo2EaАd!|yr<%^-8$-I2a FC\a HfG҃d_>V `]XB0k՝Uq)NDȟ`'R!&^"F}wMr)*Y65q5P3GхzGn^ߤ]%~t"RZ Fli k~ eX SȍEAXDļ`8Q աqsvLTƖ-/YrW˱V_; MgQ$=ƫ}?HGNb҅uAtEp`T,ޢV[Ep 32zY ?AQ|&#ۆ\ 3qRz=7%kH͙ Ymkg\2:#~ϱbSnQ7w93-'B)\b{_׵ƫͣ"K59vvI/j= *dt>3J%JfZaFu,,D+_c&$zPnnMyL-V7Ѷsy>pcxdIe9+p2\zZ5ѥ?0ϟ%Á>ik4H9}tjn_-ǟ hCGLv^N "pk-aׂ.Wmr/= f*[{ҜA_Vw wI>}ApyoOW@]~:ycb907#-Ya_12e |b|yj=f̻뀓F6߯|A ~>Ff%y0G&Bz7Un^I+6nQѪ",_K7͚OLD鎞s_\5u- J qwuń"@BNQz}-sa!/髭d{%+>KB(KERVOLp^owtI5*;d͡[:#bhI_։=x86=Z`.^"p:F wh>|i.g#N,Xw+B"&ܺT!XCrm~I_<W=hm͹w‘YH̛ш񯟐2yc9"_Ew\춛iwzjNA &G7g2BmܽaUѬnyoD.z Ԑd=2psIzNҳKD%EqABJ%m1'>9 @do[A {kȸai85܆o^'@BAik Ғ^eoMƐu@PFts#Kx5LdR @;djj>}ްx[\YjGHtD/{_lpLZ%òYc DQt*48Nnu}~M|?+Js-QJlVyٗt &m">(Ųȥ[SV@ձ,* igD&SuDb * .0}QOlMZJD`RV8B] lvK$6X%i8E'ۧ9JTw:FX.p%!#3 E&6Nr՝0Q{n ՠU{-Rۇ4ɷcN]Xx86tE61 K{7o~4c=I$劌+kR5T}8A ҲL5/ _[[uG؎N9)Y!>rԎS_%/%|h. $OZ(~%CС82t @suS#@]퀗iQ$ q2l%" ag:^r'ξL?E|Ֆ~6y 5 !ٚ 7##^I8f`ٷ&?R؄7Xkxh&̭`fp;1>{@'@d 87+^.!Ɖkap-MkBY-%ߟz2j]\PiMcM4N@ :C(C"ROw6Q:AV`gycAع\_58]ǿNBJPywYq6~F:|iτ۽o:!̦tCQsx|kL,w(J@82؎E{#}Q~;];iKk ( V:]t2{P{zeESZӥEP{,a%DWc^5)%]2EX[ b[Qj, L%4-%Q׮I0|/Y%?˖cS_RG񪷸VjjH-EE5Q,FحUj+;YXn2H3oN_JD6iPn^(E8J7*A&7vik@b}TӃ AMݘ!>SB<#p69IAAmGȆXC}LZNͰ#7eձ\tHfa2 YM~ѯY uQSX# ݺ׃kQ%xQV[]k9^+QSmE_ *HR{Ο3o_;ok.9(dYe?;~IA'wcrFyh?u[GfKe1P( AaPPBp_e_ PuRތ2"+Vl\_ b͖?u,}= D>̰F2n9Q 9Ct➒/6(>ej,[?7~ at9XpU%YJũ] BD6!cz,QQّIdY=Ɗo)x)Fs:"KT(=eh5@@1de3ԧfk{-ohUj.ƶ+3(I=RzN΍gY}K6_?\WQ6[i-W*YLKH@YE]pQSlY֋V׭)E_2nRV{*aĊmruG ΰ&%P!j_[́G-sPqFF3)i8I 4?E04mvr.M@15 y]EB#3* Йt浼*"'6.Ez\e2f 3Xꍬ@q'Dq @~j(vܠ3o⠍} Wok<|/H-c:ueY]Gr\"iR#Մ)W} 7 ^ذ¿݇a)L!p ʃOF̌`|\,a9 @L+ "f!|%t=D7 6mqJ)ddx&h˴IrF@΁,+@~a c9V31P.΄7AG/7G< <@RhI徊En2=#f+&enq+U~L s;.?ihk+K< 6C"Ԏ^.&lIcS~.>RyQSX)! oGгږgC0 .8BH{*뜖eqtW\ 9St ߔ 㕍>&ԁAng@:\vVIWFI`L0zk\Vcs//p1"vf@5٠Wk#N|So6i7Z^8 `] ߑIj孀 ɬm?z>?z{̛ g]޽ q/`x5SR#z.!Eۿ)e؈s8i7Ɍa*tC`o q`ы&Ld[=B -of :S`e+6!ABw{?!#гͮScBͭq`NUWzc{ c`Svx$ԥviI3NZz]h~ H'6Nz㯭U225XRol)'p_#Wס(ӾdTtA癸U\C#ŠX%@<mdCRJ+.3cĿoc.-e쾑P/g9ϵi#"k:1;ZP*12Ihlp&( d(R8˒]RW#l}r5>'ZzީҚEPQ}eZa׾w}HpQw>WuN--4~G $TV| l- n͑&))66d/LC@Xn;JG1Pd/+ j _-ܵAE7x< l\;44ҕ %>yn|\zEEno\'>|z']264V.Yd6{bN̤Z4"T.!dz>Ͼs<-~!n 2vidΒއƠ$'Õ,2m&](Ba)"ZonC $;R}i k.я,dz( WG*Yo(B>iuQYT=\+i9=Z"[Ͳx torp Ɣ0`ó{4i_f͂#j<4,\۬*vjP*Jygl=X`M`UHbD[ik A=j+In(ՠ #; ;ۺR:L=cGͯj-P*/i}HhMyY1D HcG3e4|1,>ˡ#bZ;_ۋƐ:PCn}s< [nXqد]\kM)K$ 3۞11Ŵ0?]bK5 Rg\Ǟ˭JƬ?D"b5N*v#kSMQq+|2ވ%m-g-``<ޕ_(\Ջm؎_u[?\oB5 \U2H+(1q-O!YG)x?Lc|G}]UUtj[>CⱦtmVC9^,}R%W.tPņOUBi]ؗxV(_?adV2ؐ%gH&ݹFzfO 7L/2bkl5놀|)]iA-=]Rv)ӏL>Oe`Iq}ЛNoB Ki?lP ZfxOb2r7VjN.;&Uc0O7#"oK ,)>[(V F) ^dY|nӑܽE#IYԝ'HH`$Akmмr"|.c@9JOiCaK)B.ֿcRRH}N2mT/VP'nufy= :F/ftމ?rPxrKRH%&/A91ɀ &Yw[M7}>C4(gS };n.gXy:!ܫWؒ(Ct>s;kͣ\P[= UJ_Kaj2~>]A#$f1h5VϼF_0kZԆJ#P&O$y#qVdm rNSuK "M#eS|ڰ1>A&_:5Y0 93*\bx8Fj%nQ {c}׃kwV 1:AGf>#59'kdLqs;h>%SP[n鯵r$m|@5C{˄yɖ(X;fH Ͼ L8ߣ=/tQ\&mbvي͸GnM@vgV(p,wȆ=㪚6m,D*ʀ[$}673"-'M chĥF갆mn?6Q8] Uy޼(Mt޳#(&\Tڤk΀h,a>JKq'5;i1wm}w1t*ʨpSf0۰g UHˁD hxEQ{rl27+f)ZٯL0[I92LjNr۲Narb<9 b o;t{Zu9#Qg A,4Bc 29U0vՂVfjj?^n_.{%ww}Z٦J}-ȵ; yU^8δoe:.СMKrRP]+gt I4=6YenA>ځjQqʎaiYj!Tq,iVo= K2l{*AIeiǵ_2n:Sc֍7& fr!@Y_y@9rN;.[Ve kZ V/uczm$BiFԳP –?C+0MI9_ꙭ]qթ1+p<}SRQ;b2pkzцA:{GZqs,:8Bl!GIC T, $sgEV=2\'9J$ !7YѦOtH~YLo_$~L`%s)*|Yx#')^0 "2d9ؽ4YQQ;9Gi):̰p%KΡj@೮zdo~e ]ýTYo4f*|\ާ@>u=_b?zZҽ"PMgVڛEu -|by͆Z;u&9A.^9量(﶑(5AvI lԐ+%(ӥ#ҏUB9z:)CG0?&t/9a ^O^SDiCI[fیbTYi9(?)*VI ~;G[=ލ%c˃MU-bJK!zL/{e;*Թ8Brs6<1@ۑV/;آJADh(2bef,a姢 dK.o-K=Ļh+K8MrU2+4$#cs.5rɗdM)0 5}zٹ!*&<6/4 v. V&aФhme@/uGϔW:PI#P|w|ݍHqEvFགྷumRE.hXkFR=.ԽFh*m! ß})T`!VT uG†E]@h9hUh[ Gy^^g&]UaVYts#C@oGB{B>+yvSt˙ *3*ьE,Xe.aRȇUڲn-dt.nĉkYt D}QkW so)YbMIF˳uQs[<@NϋgW`{n Zђ5|U1 y _(y-mfcJpFd8֨kD:Y"jf1@.!7ݽMORbN v\|o(S4CFt{x8ZXQVTqǃx -<;Fc[jw13>mcc/Gr3K \Ty'>O |*=K珱Hk^rh#&G<TԲ*Ъp_*(d y>){?XŃWeqpNFՠ搋MyW x6Qc:y8G'֗+ݛRRK|(8~<|Rh(t_t4B\GD$^;r>&q^ }s5&./8'e'уA#2mA0;4[QӮ0 tjnaiUb\1NXc+mv_jA屾 b Q-q]`Yq_+y \W+) -E=C'e _2.f_3 S͂m0}WCmJm>J OWZkxmOVoe+@ϲ8pli\.?S?tM{S! ӬZ;~2GM3 ,Q ڔݳ^R9bQTPs R%:㩏ʊ+}h-f%P_+ 8m?)"Moǖ ѱY3LGnv-Zy3儝|~_O@ͯޓ+zrkV^ib?ۇT@i6(MiTOQm7] !9pO9F袬D`ܘo "1`PJ;AԎv>{hvW38VGqܰv $2M0v/e1i`Wv/ cغVNߕ%M]o ?3n7 E?9qNiFH! '*\Aزzƈp;LBպuP=2˒wנ>h+_}q88J=\s gG:}0FKpl %t#{ePO?/퓩噐hbwdn[.I4o o^0d?P ;ԡb  2@|0HQT7Lb2oV҇GCT"LᏉdPo|CAle7~q$'ujٔ#Uء/d/XYtDcWHȠ9 M-Tgz3+u>s\a]\g?%W&UEE)iwQ {бՊH3Vc ǧQ8'S,{f}: KURohTہ:Æ}!9Gp-/W(uc8 'Y-?Ak6M0Qg|+E~W,o BGhFNuMHõCn\ @g~ղCq?k}ާo1> 2i:mUtfr YײU-HWʹ fk=V:2ZHifTFLi%, KqA, i5ز1;ov uobNlU:x5%!*f G@dͱy5A/֍%FGҷPa)}M#lm&7, RÜzY1C[l8K$Tue8,"O ~ _ `ӴJkE1n|!7an= !6C*Bǩaa8 `N9ט Bgbz!^II T籮oHMяf{gHX9{~Lz<*fA¢UG v >v3_ w{|Db|XH% *ìcSnhSf[h|^c=eN^l hڠ3WېYtO(/# 4GTX'iH_P…PLCjg5)eN?a,Z7lw)VaQ뙐ž'cqpzz5hݥ3^555G10OMi%Wy &-]PQK55{C\i؈WOgִV YQ4'ʹ%b @UhJf_C,BJ?IEq?KlF35OP1\"66IV] ã lU>LДv$Pso Sjzя\[wc1R˗r}Ɔ_IwxE] tfM,rHZoe 1J Yid)hF*OHLs]tnC]?9aҲHwzhO%g^WyGSCAʢfo͈;2ͷ<9@_ B.6ѩ];i ~3<sj)ۨY0O+]LGKNR-X "ݯ РY$u0v2 pяÿ! VZ(w>R-VsZr4\}RJzFgle%xR&{$ y,Rj,xXxND>>%:?T(L OsǺ{_:>CGc^8x`f#;zSJ3C(G{)_݋v@D{Eqڹ)}}Eom[ i<ᚑ ?M+u.]t1*u,>1FmR -gGXJ;9%񈖈   Z{8 F7}CuJЌ,VQH*< 씓E |޽# GufSTE9pŐx4^]U<9ò_3Xs<ihAV4>?M١a m'˃,qOpTUǎDj1)h1s4U9K`Qhvg_BD qj{Kt V6kQ4k,|"wx.,/x1<_< gK\:Y<10U[|::Nq~Ip. M14H~3vNY㺄Grf)̑45|Y5 PcVU8$IJ .T+6й}}n2OMD}#eq.ֺ^:0bei7EZ~ڙ2-q<b:87dGy6mpPG$A`?Ȗ+fK놆M=Bv/| !X|Hϋ9?zn,&IuH֒A9N#c=FxM|,ikgSm!^mKV4W,+\ 6Dޯ0֫g+G8*vvA2067c#;70T}W~f/*'pe=m()Xiw!@{a|ǾS5BI/gW8rnLʐ;boa6 3"K DegeЌ~-0ve$}䏨b1"[JF$Pi*@q}eۜ(NgM=ϏQUO/BYQM]5{/kNB}f)*ٮ|?_e<6 2#P[/ݜj`ڴsHS OAԻi[FM1PU=!=kzYa[F=m$ckڛmyoS^-Ob7!ͣr*UCPL̘/>S0:-&y۰Upr'gٶ,iy~ <-mJcW4}-p1ȕ8SE)K%a2)|Awn2暓@n9Rh1D ]*߻8k TɞOedOݫ,T kߩeH13N .c@s~paۏd&lh&VVSJppcE^;b5pOŤ66SfA.1I736~pKˆAk5J<ߤ<3c\$#PN-[N_K,jvr>/+aPf%e>wFY߭Sb"#]Q Xs}EoYQ>,)+UF]`ZO)7I_jn@X+R|Ϲ(DQ'MWMԣSž( ~h{S.b*cb @_>lOe^\活=>;@\ǰ9+6um+gr`sHN9/k<}" Wۊy?bxeǑ_vs/5w5WC@*|BL:Q3Y3T8I= ],QkU>zވ?JN*?p< /6^'Dwo͞üM8=XƓaX frF$g¥E !KT̨Q; PPALk֎O"U!jS Ug/e)dZ \= f;|ipbj'ܧDDs̫gr!V6鞚bF+.(qs$#pv'c_5_)`7p'jH^ ?#,z´MD!Ly.̧!wHr^w0w%M5?HFa>R=ddq@{|XWc3fa21@瘸]} \,$P^x_A]=psp ʘ\ҋ*,58fT 7k)_f*#=mN#Y,:v\y ]bxJ^]Ƕ>qeJx{Uw+|4@䅓Zfu?~ Ϋ+B.],Ctc߰. oG*ki nwUA-967#pOqs3%dw/2g<@' sHrܨk^3B/XqR<UP? <g?9g<J)Xo5i8y'#z"1WS^VzG',&t.d5 e:P I1R s3;ݦ'G"9D|>c3,@S $|9/e!& 3'}x*dي/L a6h1pFl G:a߱&mo/m/d&i SчJWfL8JZvk͆f}jÔQ1|O)3Lt1++RʢefIl'dЇ 3 ʅ N8 -O.^,^cbZJݛ?nb1CF8<C!5Wa@%o_Wr¯E"T`RLCv#HV >RF`U 1Gt|D[@ۆC3 Ig̃*񉫮[y#(` w{Џi+峍XpƬgTbs>W?7CQK?D)U0t\{#2Ƶ|Py8s(3 <$G8hbIkl6G-S_){]ʘ6l&ST,uNaw;n81dl>ڴx6D0բ=760$N]'}"&a;a`ޜzg_o\ДzW~<\7+wPYmLh9u'g~6TҠOdWuA>1 %*=w>qŰcuFNY7C) fȀ9#uٴ8n#r pY `H|YubG!k_0 +ZE\^*gJ3fn*7e,Ւ)\5\ Xd'L0<R^ϺI@NlQxFE͔yMqZ5mcd_󙍢Rxa氋`"|q%hfU[zJz G`'3tԜ*w*. kd%\Sc>S1iP9- 6OQ Cb (4EeL>A̘L ʙ̸>ӛ^),a$Si5R\!FETffqE=0H(p&R.;;p%P&2Q|9 dIޫl|*Rܫ?O%DIi?wIzcg[|D8R$پ`/:B(Tblu7fP=JŁڅHv0 xR5 wmrYkqijxzSiVO[B]kSU $mֽ'0@$ ΍D&%asp~î}313?0f0¿_6I-*ȉxL[BkMCkS1jҘCm)|Gojnj9&Ocq3܇As~zzyqpP^1mQRV8;у3_^e3U Uw̧a4%ƅ&Qlk7zas\*#~_֋vxsRfV{$y9k[v$~X&t9M y!C ֫%i! m/9"iXQqw{j%u; `M±`My 0%O.JKNJJѺWL{4 @~~gR ɴ pqCPcݱVzgFc I>k9g+ ii8&UZ#*B?ychCl{B-Q >uS nNͽp  o'qǗ+ d!20k@9B$d,a0Zɯ<4eN5 0 @y^Yq=1j;TKRtJ":i|c`=t4ND5Iw.zR 88y>ڼ<*ҴadXbH]ͱ.![f>ヘ)\?XQàn+  g =~vQ94t,Yp@1PGj.;ɰ:`f_a#)w"Mv|U<}!?MgIv qW`$M/C)y8ܮZUo7ȭJݢox[ooc$b^=PùݧEUU&{7Q\=(G^vƷ(1;^{zfuV -~+c+ngJWQ f[y8hsŰ^xoq&C7eve>?ݹ>:8cG,;pfdvΩtSC5zKlDRLȑ}|߷콧A=fU&Hpuew\\u[?3V΁,TbLJqӇ7It;Ru~~y[]L;WUj9w_PHWZ)jbJϊB;{P=FCjkڿ'3p<{杹%^%v:N1$]J]ϡ>$Sf)  RtzR禿_4~a60>g4J-b]N2;tmP҈R]!'Q3󓢱0|~-*|r3O}G]'%8TΡ.VnU{VV+,YV 0Y(wV'~塎8u=ΐ͖>z/+8c 9a'nl'3J'ׯ%j6甓GyʪDQt*BV/ZK)d!B2Ql|Զsy)޳m;a TsNpWc`|X !5@V ;|+q)Yee{+u|a^mGaAAx:m%I"%ߧPryq{ճvB ׏561 y~'=Ef¼'ҀV"c>F6u$?HsS?{ܥ%Mk( g> ^#&]`ӧӧFU>,&듉u7 Zr:ƨLIs{y4yz2\P5w"O},bh݂G2m*~d䴵_4=I(ح qKW<̺]< e*sVߊNmM&hiTja@ yVqKm;CJ25{f%NVXΝ! U I1H9Br}ě=b'ywi~<;5oZ̓u͔:+Gsp]sU_NƉ֒9RNM^fE[ֻۃ簨kzRϻWhoGٮG‰Y[X~>&AA~|)6y'#~.!h7 %Ҽ qBI*_u`'H_|j ?f+"m͐*r *YaUַκWA7{rکoEI;qYr^zwWK0o&8B9WI&ǝ <}(aκ4\&|+ǯ)R$&qNmy)bq|ovadv-!1T|L̳簭ixrEXc$&v5֒X5T x+֮=}C}p ׫_Xy,D{sUW0sMYA \/6D}jwjM! 9o@5[s\ b8!B{rL=w|.U0f"m>ŸӌwYϋkAp6~G5oB/ʈμ1 0^ZT-\uut[Jb# r7yD"mBw˭/]i<J֯\8xlL-HMTC]cu\FBlLyf,N -|fEEN}E* 9#Lҕ K';ai1T:rdΜcWufHyv+*L%]A@m~g*6ܮ[̫m^P"_%0 J2͇'wqbWxZo6cՓ 7 'DC^;m:nwnW`YbSdmhޣtY~9+r=eۅm?ȷ987RF':r{H>0d9[˥TNUI;M$6fu=qE;8"G2E~ A|Sgc GI;1ﶛ©V:[8UDbͿn^qFw2*f)c?ܥ_Q"w/p.w 5R{,㨌oUE ||$ŹGtVfB_ˎg9 8&£8cmڸ0dcC (t^R\cV!6]R. XR zͳ}3}lq*>~WX)jDIrd+&S}%ܮgk$Q{TgJ5j5,SY롊؋:IlKHʑ#zA}kAFm7T\S,62q N”fC @̽u11EyOxpol׺B}ȑ][-]@ 8}LՄ =RԦeTJʊ^$׼62n'Burab8@odZŻu/M(0h l.imD`~$8:5{UccpSao*?8#9L;3Dp-'uX|HV`z6nb2xP:7Hj4VZ%{us^B4@R+IҾZe w/sNs_]}tT"GQ&2FzXCb}!'ς8,H}wS蘭ɪ5`0 [U\Y7S?.qHX9`$rt~kAQX tT2an!䣛1ğ9$? ip%7*~m ?K6b],r ,.!>8LY2J~qsi 2vu.e0; $L?xl%V# sX-~dyU`RJ}~Z^PfJS-JB5whךtHWyDyscкs!}/,vvl/?C, ׺Cv8#MA c`š2u;| N4a՟& M>J0<>Ʊ8hSw',Bv)ewF-pb2LJF$ﰀ$*y.7o61|5c8KaIoݚRE"u¶{4 #2N9ʢt'kP?vD<*u2v?$5d mA&_mՔ x(a"諿(ad`l!T\Wճ^dgs_<|C8ݴZn%ҽ66\^3mRc3d&u,<߂hy)9{p!Hyw6>]v=u^W2`VѢ)Fj"pA>}:5转ujFI}ɪ4e ejB(7x>qO7s˛I׊<|6sCȢaQa݅ L73H.quGt#9j.Ļ9^Oҟ\3-PK |?vG*|Ɠ:;Te0)jY O\D㮰}(߈sP!0C=RMb)2Y'&s=DӾ5mSjv)) JP+",wug>jUR#_ Ioq/߂IdSQH\ԓ5WѩdbSpi l:~4lhʎ{}shG -N&W0}P;nY!WHRLv{ǺdX%^JDY%c~?Y]5ci EU'XE4?)l,~Z\,=r&pl̃wR3P}, 9wlyAοZ'p8Y׭ZGJX%SG|$#q o[D{ى\1br#H~;]%\ r4)[sC5H|]UJfW#9a$T(YQL=HCǀYoWh=?Ňc E5[_!yǏRѾz AeԿl?GF%pt¡)#pߋA+3iz񑰛)b>|arU_5-`}d>k >T"GozH{]1l}(-*ݥhjN N uD*ffZFݶ8~1\](-1=yÔɚWzw⡌|)8U‚ ÈImS ò Bj9 [G{C0 tTG6u,F ]£呻 +k5~"\mK~0;#Ƹ/yC΃,6φ>Fdfp sJ̪̀9(5%! S]hy*,x_0 ]ǡ߁Q%%EbE<$\OL! Auk )%X\NA*U4rݓKL~}(q6wMl1D$;@#m # ֥]Zgs#T^̒;8ӼbM>48@LTYU BAuaoMpW_%_*^Eg;HÏB$A5XmȒ*!>޻E5`kFyog٦ MU|Jv~۱`G4b ))^)Ì)wz/wԙj _86O׫[$DtQؼg!?E.19kdݛnv D^/U-k\yުe8zۧ[+%x9SB 1>eggt0QA-0XV2KR/s'kʲЕdPQ` }!N {dG mH>~M!F}qc甝lDYca,SJm[AwI)+]J ]]ap-(q3jʯn5Gg/qD^f.L䙞 G ߞ*s{]_>)Oa)ӧdQbIߎE}gu b3SKZKGTRխ0yE_7ho ίBܷ/IJN: uWq*]J5m"FIw V+G 5׮^J]IkBR7ooڕa ka[2 }zS\_ S/1%δ4ISM;F;?bX~,țG^ []#u^@^g(;c 7tqCeSV\ .2Il^j Xjt]G Yb:‚DLfݙARt&D.)n()٠ޤ'd -%#*)uL7 ]^dZ}["S?0nB4pǭc(M&p^‰H(tɹCǐ"HĬ-I.$J3)D9Au5@`0b(_=gldb4W3YuA8pCNPzԥ" Ÿs<6v0 F{.8 l;nv;HGYseܔŕ!V`BVUJ1p;-oDô'B6sSgN2-uu\U_ӋFBx齝>.-;#(!b6x 0 Š@3i:{^Y5q tRFֵ>a{ ]`qH]?^6{4N>@Gq,3 *4p426DP73z"?@d."BP8z9Q(ODQGw _KI[$/gX}<7brVh=k2cD/P_,eQDU!͸IKWֈa~p?d17aq$bˈ۷sɼKqZ"^; MW\[1=;Cz2gYѧP;^^ =&ןy\f͋PM4_C1'\ 3He" tn}Œk_ٗW'FAte2\=^8TSKE/R%f)%{+'e24N((]J#z#v3Sy)x5W,u3oF]1,Rə5x]P0w)sCpyr Mi8)y<Q^6MHc %66|;j {1+?6yK\hk6Y39T)`"5E?j&%I{I0/ERorXHkb'9~8wz MPkK_4!#GL90pre -MT$; sS΂r:͗& Gצ[0V}\SFcʹi6S $B}c2,al // w@wȡ:. g) >IC%Cjd7Б7/y8X"`qHh@i5 E}ٕ"l@Tu+F9+?`!{o-WjIe`.QKGYh .(i.%bX^j(,= QA5 㢵D=!E?D%^(")OzwkP[&WḠIfg{KϞ͆Tɋ O?<hVaL^3G1/8(rv#)'BW|%nC-L"x%M%yU'œϲD`yoCB]Y}.B5Ԏ-"2!3B`[[OVP:Λo{҂1!<^>]ntO=ڈeo=SQlCkJ9?Op:]6s/ZY14]Q|Vb3YsI f;~˺,X{_0~Ifm ʼn.dY-봭BAyDż-ГԼA` AP;ј_) L _.e~)uwٟn")L6T\Aa!ǑgZ+m dޓs U Đf{++]Q?to':'֊bl!JfwqqÄ10ǐ!Xo՝)%ܱc?պO 'E/N.!%n,ai\Evxi|io ?,`Ț$zf0#ΉCQ5BIuQ$kl\v[Ͳ{ܙD_+<x:7B>Q<?{47^N,'lI*Tӧ`HC|As ~qa !])"Tn% )рyCŏ],hn?V# sMS)5ad >T&sWlg8 fJF+W oP6#kd)LڷPj2IpgEo__pp$W>=27!UƤg'tn}ڪ2ҟRR!#gy;NWR~^Ҫ7yl}I{idD9 ^y/=l.J"[zuF2O ,ܜe2acⲦ#.`o@1~g;0u27[~/c@#ɠ@yFD!ƊUml@\'ڝu2Pn2+ha,EsD(Iگkb2<܍ovzRjAjtoRe3~.V$ [ul}^AY2P4i\xKcĨ'~$1m>C Tɔ+HLO` 12֓ěmgcp`o6U`.F}zUZj?)eZ_,$%h!Tٮb4\g]mqzdaO!=u6C 8 ף<:LáS)04!csf&>%/%m(jSoWHR! [Qv/CGG\⋾C`~%q:d1*CץpFb#_ԨpAYZhM(z,;DždmW7.If8>΁׬3cA`ꉆbFw1mpG`keŮjȽ a`qMQ!&zɅ +!;S+,ɫk/>;z[/̠4K߃Ý/?Zu|163-|WˌDa)<Ζ_-ǛE5tk١*ʁ6-^J*ۜIkA$+l6 s+mܣ)/t tRm3Uee. S]%!iv@U~E`D|O[@R0kC*hO]!bOw`N"2 qOs )ҳRQ ߗkǰE9Q-#fƺ=^3v(5آכdyKhs0ƃdB?qekLd,`YBq\<@ΡLRIcF"AƯTL3<@-'Qޚ~\ކčC~w'ˣ `$&_I ,[[+q% XDC&.ZcM1ӏmN__8΂s.;lS27 BTOM9rv-I!%M⟼ZUccW/6N3's1H7bI ~xf{k/")9USuFui߅'g{zҎwjuM6p'w5%q=POJ4MȥXh&O) .bF[VW:^/#O簙5}͛ ah}]HI^Ml WSgx(uKy A'˒xY2/6t377g,]L!*䅜|ݎ'lߏU4ji:r-ȩVjL8FMQLGy#s1v1,PkX$YS-5$;ah|]:`0۷d{a3p͝KadQj#tbE M~̿e[G^Q jܹgiun>P}#&? Rb.ӆ#>XMbt*\:{0қ஼wkJ|)aފh4a9zrKfY| z5 YaU"\=e-(1UɌWke- |!o-t$)0يA 'F Ƀ`>Kiz]r$67Ю84X..T]4YR&uFB)G15GHuZ*U45ERf赗Ysً-9}UlƜ9n,{+>M/ ^I8ZYnH kWűUE}b2 !r̀#yЃVp sWR;h*aS|,Q źKۂp+KmXn Mu.TptԤQ9«V!VCk'ӾX~4M2ɚ $tPxɖ[DXyY:+jtd>vD'Ѥu80U V2]!cTxC[mW'UO65 h-;*ڨu8˲&gPtfpr6$iLԊ/TQOS `Ү|e,(A3V[VwGuK&J㋾Nywz6<9W SHsϿ)c- xxX(+ن wJY+>Ѭ-\eYeD@Ρ ظN%1ϏZDhίf T}ՈW9 9wdWbE*ʳuG<~ )#S1LJɘi2Vf-CHm01|…4m6QS'̥Sn>Ƌ68` d0b0vic3zU~TQgʃI23⇸bYr P7G' bNj*U1/gO,^%)d_r/lpDmR2L-YFj"Tq 2ξ;Ӝ! yX8`x5ks0P wr~DZ9x㐚 C0'1$A Iq9i!ԩʹk4tj*6@i7(4Ȑ=!A 1=Y~İ_}[͙vqYƾT EeS\#M Ԝ[m+zy-!yʡ,^>7DxfJC ئ~*.v *u̝􎥳4B\~ѕfL>w.MiVTI}!) ̆p8Arh8nR1b= /[\7I%yOY(Jb~ 7SD&ĪP{ĿчU # ZFjӕN<47)܊ܹDdT<ɂa-Mk]Ke96X9KZFY2x֥+oGV>}PwQ)(ĵݥJiyF_!*O ]PASںAsG`nzb]rݡt+l}BJŚ7"xՔ"96X4VG_7wHͭ*p^tH@}3ݛh =++Eu azlrIw$WC]VFs ~6Q>ޓfEՄB2h}[q [ p=F[!)Z? ڽcXVnzGc^o6ۭƌe{KTLavLگVQh $a>ΜX1(l  Akck_|lW2Ҁs8WI2[ҹݯ Da47ey7=taŌUt`SmB$ ȞcZ*- =bEr8|[z[3|a-|@w&8.\Xn[7r^cŻ/J`{^%Ὦ3B+*Ľw63uՉM>w}X9,=OC'lo сrIƭjo䶄H!g[QE0\v HcǴg0p% yoWcHýˁ٫f4#vh!8L(eN3Qlj"5e=)*Z_АVz;tVViyCpag/v\Gie#ob{/vvw{E;Xj3A*oT px/~^RoɷERH x;&x&z9$͌2l=AM|q-$o^ޓ5Ἒ' )^eh1 [NZZXO[yW&xi"4yӑe2lK'6y a)T,N2#R yjs#;^VC0sB_o¸!>5SԀ'M@!i n ܶV5)W.LgZNlbM()]/IT=_ۓuHߧ_z.Xd <]pvTDS8Ǻ?21ƊӐሼi0ZeWV ' „0 4Ɦ(+BAS\ =Xm6ތWɗIFxYҬYCB"fe2۩Y ,=Q b#u;>Puoo-Y,(kx\xd`Zt Oj&rU9 tA`L]MLZMN5аg1bQ\hl ;O1+n:g-{z\F"!)O6\Ҧݠq:D+#Pjv.hZ'{+%a}4uX}&Sy{)@n1=qν$5=2]5T3@8,qRƮ%W=;'yڶjkqҪk*' H.w6({am_8INhѵS0PoXXO'BSzt@6mN6/fqq#U8*IkΌ#*_"B2՛X.})rc4)%D,+i:c^ _ +Z[EADn2`a=(,o>Q.Us,>`|`'x&>pUHMy]IB8t@"]&-J9`@wUbUaO Eն!FARIr5/[ R.ּBdZ 4 6^3Љb\@!({s\J7tLQtQrk)>O?a|tX5Nۈ"7bAP!caߙwف*2uVɵ!^eVBqr#ҪP$]V {bywmX1h9,ޒq\@$Uw.6$~R4I:?8 HFΎLQ$VoU>$l|tnN('"fK) BԘSe-\F=6*!yL~ŗv=]wQ qi.h(U*Dݣ;n.GQmɒV;ZEC7$d07Xl1vho8[y~ͥNR>Q KgFS# ӂMtc1Ożʒח=CUaudb `:(^?P4Q0PkyNZm5^3(uyLS2o:YǸ/E]ż֧w&&? ~'2 f1"I7}G@G}s:OsQF7[}*9O/E/K ?@L/ OB`(!/z? B̈́˔3h){)hM0 C7<>JbGDOK8I}#?gOߑ79y_F'"8H/ ?` 'ue9wNUɟۮM~%i~D`!`F$M0L ~?hoi( 8F@ 0|#Dq (Jߐ:q$zIsHc(ysu!i=0~>HHഅ (b^|)꜄AΜP14A9:dH >"LɢY4KP(t|COW sf?EE!ApFPf>a0hI""iĆ>(}X7io@ =|09C>%?wO©{y\x%'Ii<ϟϭ.& (8 Y'ԗ&#uv_(4Ϡ?/$|/&\GC$Q=48 'TO.(4Yo~K}g񓿤 ZO3QB'߁¨/A}&9YgU kTKxO] PφFa o#~Ia#1!0H{9R8ˑ"/H#g iFptJ;ϟu4'"(a?G0!` _ȯM =+:M}E?NI3G&џK~ vJ#D&N~}χ/@}U8C?Ne~ZJ/ { OA~gg[>N|AĿ6;63tD9GjN$| "Iswc#!!NFxo>,F5EOl4twlf)#UBلcRTh=1$seq8L&:RJ15gG8HÅMKG/p `y:yeH|P0QI/)h E $TTiPBƵ)įhտ5!`WP~F+oQ¦'ZӢ0+$7J~bJ'.9LJI8_A?pZr_ >&C/{p%*%PwQB+AqRC8! ןH+É"'(Qƅ4IΙr3HB3F~G EPҩc4UBys{S~rl!4B66/d3(eh`V#9U،1O{-1Ғ~rL(QDŴQRZ%+*Vm8QhZq$`JUH.)HⶸPXQ BVvM(ə^7+i2<`oܔ Ib*ȘT!EJ͍epJ)vn*mcV%p([B2PHA$Va`e`qXڦ^0&)fc4V f'q?YZ+ H&ÝKI |̥&J*ڞ~1&yr⠩ \hq߬Rr#}R&]rpyWS3uR۴s!6g$̽U7@)SRb Lq*eNऎ֌ S9qS\K;JKfjƤ<**C%i;`M0M0BDqn:+ϊȚ* OF2*KCn[$gs0ͩ RHp"E(`HyhP>hc6. (@E9PhDp8فXp}z 1Vz 9Zy?,J9://[0_Bh0r^BH.;jgQ[8d -&A0EZa r(rou1֣!n8( c 6_)q ~u0] La}0)ce-i0N-($B{DSaĦZ)D/~>:ƾN&98 h)gĢHÏ-1Bs҂qiX}4qO9 HljY0lj _i©]apÉc.`֒R/H+y-C'1ʮSpA|ٱq}(M8 K@<莊'o(aP pCGd_ .P7?$Pmj4P@"DkEZ,d1ڭ֡Q}V2F}Ptڕ]C_^(F!^%3v/*SXj4u{^\U/H܌8t>euy  WQ"GOT&N- i~ł$c8~DIblL \_ pP1ćHZdBlWfyWA3BK w0:6Bs^i8R-wB?kW5?0y 1F 1ZAH(J@5!$M8bHNAlq(\^;q(X6z aAHaD9ZjeI,SC!1R[2axʉax4J7! %iHH3x}j+j7hFBq,%Ҽ^)0L!<~Э`8i +1 M;l H vB! WZiICe|mQ1)mX4m8DCrqR;F0*%H x4] Kn|3`+ o,B e$ ء4 h~(fkjVxPa1 o)!G7z›EJYG~^_<<< 8F#%7.PIG}r#[uˌ3w|؁e7PW6. Kuc`w P+WP|=?=W4E cnǾZ*?o v(P 4]u]N?4^&%6T`4xZGY>@}Z-:⛊0&wce!i3\t_~`5=`{p4Ϝh|IW }ˑGP~2y#g/#W-E(Nӡj7rA7g0Vv.`Z! 9ˇCiE2utUc?!}VZAː>gcoc$218?gs`n,hqlZ#87 @N$ Sjfu>i<iGӄjA `.{ TͤXʂ5OMYS+9MU<>AL=&<}_ v\"<`~b@"i Z(mbLĞ oeѐ+8 bĜ DџDlX}h/HP! t볪OZϸL2CK>®\a O5 p ?@.%Dҏ$"l WיJCF/^^fN !9{F4Z's^M9@ ?>PqyIGGxOb9yA>"{_;:۷yKB HR=4>;>")NRX۷yo/s7cu[sa{3).^D/P8Tb?'=9M ';D123eVzۿ:a~3RR@"cTkٿM簘O XlUF9aF|䑝OLLDe yÈ(ɔnGT79F( gGNFOPZe 8Z 4>!gFGQN ,A]%6 G25cVNzACHO#p7pDh;z6+CI!XH !Z_Emޅ܅ ~=o7Lj" .RI6p…&0`U~ܰ"H꠺ڟ1éA^PAG- "0'}Xc2C?wfh -Dr#`vp_ص( BAQڻpR1HO7 5a'wu?fܫ\Jur Ҝqþ=9MRsBiI6!抗Ă& XXXh0詘\f[( H 0'o+Pքõ,Hڌ_? `pX̕2ASZI %\IFj?c?Vk;OLtVvͯ炌EƜj%;#Ja'NY <5RϦ4zP΅9~@PCnaINOiGw=)ݴE⒫9BqF U(LPKf)A+ʴTFrvP'T$ъ+-䩮+ zʆYցFO\lq!Oo yFdɼ3G^67Q7Qʥ):W&j7W&7Q7Q`+{ZPR׊(DErMo!7Q`q5,`qa7Q/F7Q#m;1r뾻?d=5ZDžFbi.z , ︬d"J-[|0'W'ɼ{'d([z/ϑ^H>xO[pƣLPn Ny_)_y.`] t{JihFFlh1bqIG < 6 7[R1BAmXF*\q!7B߷5f9j.CΥ6$!1cu9 TP*ɔa7EnOc{6XxJ?{dEhR 0}Gsp,"m-Q~fmYFNv}tvC{9[#ʠZT) $fTԤ@zx?4O=47J[4h#Ljǽe_LIFl 2w .R+laCI_b(wyT若pڴcE)MyMi,{hJ6| l I#efFdja2*wUګJ^d^DEQ,bJR$ΛQ>6]LgHmR![v2޿m|%aL,Nu:鐜#L#eY%I=V3XG֣."@5ZW lt\6w|2 KRyWlbVu%^TOr2Lrޠ8{cju'@q84cy ƄJ.2/]~\yqWt~7LrJkIeNu aLw'nP毻zpiqoVpumEYAF]y$:In1gEa.Lwnyfz,xiR*\Zji<baX2RJR#z~מ;s8mwY̐eK/UYe6 ~#TIW_Z5-vc_lX14*V޾0kolKs&垎֣4;̶ʴT-řjVکg,l@Ck="EʳT5>-Cuz~f7a:Ar97#Uۇ_琅rjN/ih??U3xc8kxXw+қMP=Dthߙx=ݬL/>Jj*R+Wmjp;~vF 5i>ui>j&zŶRJuvvpmҕ\#:t|wsj6Yfҭ$UZLdzO2Av~XզHxW߆Z'S F}V 0&ӵ ZӥxYVYtPc够c Rd'E܂>+mg/<2-f6,ҨiquX"K$~G.i,>_wlwf^7j4԰|wf ܋{*%SQ%zvt=7+OוV+>%:Q>HT 3wSдZӧNFdKGKRS"m׌dwO@U#R긭<[l#Ƒ0ȆW4#YOi=i~H\~{^$Kb46\z߉T;̧#\ʦJdd1ls^B.-"yv26t|zLʺL%Wקu^\HZ1ẤC!HYքUjuβwA ]M>2MxO ]Y&refJOcpkySQnۚXWãn-לۖ F8eQ[zu)d4:W?F:TqBB:Ie3VmCl祬~W&SJJG*yi`D7cIz_glJ-ꆪ^|Ad:l)i;nnj]tԤ8c_IͧLӑ\&?27Mtsw( duxL퍛Pf F zpR6dt<ֆ4%&%}|U/W|?[~%t'd/5C]dM0H Ro=JȟV*j6S"^]%W6ۮE}4/vlaT-4rU7}+rS+ 垚-1i{R)u_rk^ZeRak2Ywzgl-X}fv<'1m"i%_xSfF W7~ 7ZΫ~YwAub꡹խf}ݨWƻݢV^Cg4eydJq|36(kZY-zAf%.:RWʽr$cO>YO!Ig"9b{vh.f+ ZQwLL~:l5U]8l2NbrY-E_ʝj6_F=>NKLrj1>iqP.4ѴHf0-}ލ(w8/멽Xa)ʹb`#'V0nm^xd]gANKL0ɀfGΘlïy{g5gZU՚u2.Ñ}-)] 6_nYhL or64pve N#t`ސ(a/IQ5veYi<0b 83D|+^þA1gP"b~ߙҸLPێϕ "Q`ʮO | | b?3pWxWN]YIa8|V[ђC N[s4čGb[.Йn;DOŀ"(N2:V7X ^Su4d,C8 u,Biw) (ta=pV!e|qIg(Aэ .}\Wz36O. Jr*^ k~p"!04w6"sAnd ÊkyBUWpyBsNzBU$ӏhY'1؉@:çl pq “quwp.iflGΰ|&1hBݐ T}%.8,1-ncoK)縬;`RzYLBjӼ uxWRlQA}BvoDELLap21lījTw# 5X}{A!ֵvD;Kݼ\ Xo\m$%D1dmw YM? h&{RNvx~blX3!H^`u4D%c<"@| _KN& Tޱhʨ`/BKbo_9 r($Iy?xw;D"u*nrU:m6~\!Ѐv o4E/qΖ :vs$dgٮuO5]qJ|ч8?E[C2HF0NG[@j|;StSpViVu5ktKsଜGR?IA닷xaDhFK厺<IPhC㽋a.h.:[Isv (Ev,8"Bon@ÜG,ZP;E-W)0:!p͎Q 'ML "x{QV& gH)1Q UC(S .Pr5E)84% B!Cٟͼ"v!\ME&;8'ro}*O4c_:RW ӂ(7=jZWy~ '{bBƈ}}'] .yf\YƤ5U^g;н|@o`MdEQ]eI;l1g8w|ctSeL\뭋4͗tyhF[U0Vmi' Rd2'a1xnPp>+,zY@2 "+Lp4Qy,T5֟ptY]#񳈁L$0{Y? qZiŗ)yѫr!z?Rpv-ޛ-I PC&UߋO|7* o||W:'yPTDXz7'/fx,u>~7~9k)qB-[~z{ Z@ Eݩ'@~KB3um'-lln+4K?S3TZA;c1ѻ}]SbC,fE$}iG"sJ"G[U[P_FA񽐛2ҍ&lC!F;Û :Wȕ~PF O͛ܢ.va޻\ҍ 5:nD/.n)j )ty7:͢x$++L/}C2}rx^~@ݯs@Q- B6]DzrNT\Y9_Qʵ'I@dO(4 ȱ@~Tft 5/RNٕoﰟ FO`%(A#%$XI#EfzV9M]=Fq׆Dy, ;I/7V^k20 囸D73G;]DwNbpv_3{۬!PzʪU|>Jd ٥w#\yxP)̦n7_1y-zQaRn{C@}KJӚ\9 N9NԀLgٚ,UimP zjɇ7L:S857Z<*\Pݷ;&M7++դnnP9tĒ^O 8w/eЀ_ц& ۴Rs+ m > `;#D +D1fHf_p?/>pI)BB(?araTо?)>|o w^+-2l+ 9MHm ﺙW7rn\I^Tfr0͞8DknBXM+ =ٲr׮rqR)k$h\/( }9pN0\|БT5<.y*=3Z/e:|GdKt/C`Xy+*>qʚ'3d^x|s~ OgO`TiM| ͤ#ceTl[{{cP{yM>;yi(NpexEPռ"`QAѧCl$6OA (اa }P|ॕ' 4ᰰ v/ˏÚ#Kk aźs|#32ϝkQGA5ܠcq{͇41 A/f[a%G{}eé{(8iBep{+bYuρ4p O+P<_д1yh^/vlN(U5EaĒb2W"Xthj\QA|c++ln)+ex*i5o|:|܏@RZEh jF#s5PxRst-t8\R(gΞ!;HvuRwe]7 UdOqKZ)/[j̅z6dmO44'$d03LVR O\mvi( ĎYD@*5y&甿#IHA+ pl(/2ߣuXFn@< XVH)_g`z]c)JgSc. ^J3u!:򔦣L}/Pڻ>!eTUqiߋ7/,. BWBKGYH@'!c/ͩ£ר5lmہފ_82oS9f*좚h4Ar;j_DkQO_vtx#͆+9n-<T8LJg }Yq +$6TR I70K`Q_ǵ5{5^=t3~V4&<ш@!xף_b5[<, 99'ϕ2ipSC(4ܴB&n!1bؾǷ0L4"Z0Vzgk@cSk;pmG`1f_P0bR8մxv8 ,ӧeh$Dq'1dRD)Uov JX!P uY0u_WaSD CQay?ņ#?xZIpd60|1U|>4z.BoM^M3xE4{'{ !>dRÁӫD/3}r9D$Musr ~Zzj*Uw>wFnR~,3X?7D*A_j16$w[O硜юJ\, kkCluzud ]{s hI7ʡW!m{,>L@6VIOE HfEh8׷|8Ɲɛ 7)sZw}Ϭ-.s1fĜ*:QD^)&& r;${^/Ė,heb+eEq/)s~ .*bgZFdzj߃HyiD=[E;=밸q 19k&49z$\'n*Hg-KYr2Ջ ˖)bnD AzEѳG<~m̾.[9q΂44Խ>YV(Y¯>}k>b:/{xpÿvjȯEW φD"O ɉ>秵"/vNQ:wO#횃ʾK~B|gqT Dls@BМ;+(GLg'+o#*S$Qnw}N˛uXFـG߻.\mGLSQ4YC=Lai\];pO urh|Y'[Ѻ<8,:,~UIy[SO{|S8$4|B.'w] M\<ά_9NXwdɐ)=!HTYGEoVqCb}WFϱa8uH{6yXߗhȱ R$2|jzG9(iQ'Jy͆7WC+z4*sγ-ϊUz&gC˾7ծZsf͖#ϽjFSM!+:7٘?Q ![B-p֋!y*<ߥDz%-}=-3-lMG}OP<4q*VFɖ% Z+jU\$f ;TBx8 Y24t¤J%U r19>Fw뗞oٯodվ6ԘBŘW9kʅQ*@tsFTnY8Oe96t1q*1U]Jc2;р/g4# j|uׅ,+g\(>De%i)(Ml#,AxpAN-' 1Jۻ\WIcZ=2K:b+uu397jR̿˙E %OJd~%6XaW€GUߣ199Z[ROOW]x$]&b3qq^\}3?z,Ĺ!!'Cu5"/tYozBu} (qL!PAJ HwQ(gipCl p!W$@L6&8*J>nD_` ^/?7q?)0}=a^O>ZwT=xLK#-JiI_ l%''e,&Rp&Ѩ>S>va:5)ɣÏg }eSG A<+>5S٨֢mmr9;y uW${n7T˴Ns괘3OQ8rX5 ll=;KOQRnӁ҉jgN q)H픗ʍpoʆ3OQٖ4,FfL6cڜX3lz,ś((%2Xf06dKrJq_fxr-!B|?j^&)ڜ2~Q\'k=]<&P޼%-3d>ވV敽vܷL[(=!O/-jk y,uYh6: ӿO^m06-m[M|thr&=Wz=wXU&^JNս J꽽&?3zuͻaIĕx_q5sҰmf/iӯWzM짮ygk>gl %/GE61IoX~٭${^\g}ڗ F^9Uݘq&9F+YfτX~G>矦ZC0Ȭ(+B<-*|"pLRB\ۧZB4 g)a!-k௝-[ᖺs+OϚI>>Hۊbɢr&ڬHl =^?,a7:WbCstI{^o@-Ld$z [ o8q܇[ epvXy 8 g]&xfy32O0mn)߁]5$J]$C<U]jIQb ܛ RCiȬ2; l&9͐eo&MJ:6Ș:eYnl>J8Qo'$2熨`㕔 _KU]|\aU ܿFS.[y!b}T.SЉk;G&>&56&1R:&mըMM)텛p /*4{dh=,@*zuo1!gH=*H1 |o+'!fL&FEf'7BF?ҋ5HfeEwgoj#σr:R -gR:[eyMVvU3"м(Jg YG;xV~?p'PM^;~ M:߾B`nWc5!{0F7pn fA'SJת(h]? ʰDzlv,r#˾%ȗSY%jȥu]S-5sLnXy+ו~dXmnyjcFf|Uo Ǎ h}IQhzH3kk{N_%t-u=x|`zZ+PiMH <_FibW(2ۯ 6%^[͌?ы7؞ w2נtP,8uLe5!N_"|WKFuy;пaX;4:@C BJ3[e I HB S˼܈e7RR-Le4n kՋ5bAca D V/Y6 #jdm#{Q.p; XԂϾ;A&<ѐ5Y^rF̡iq+(M7Ou{3v<_'r:t:6=g@5kˉnȞqKK 7PS,~ۛZ)ȴ7\(Ꮴ> T98Eu/|.)4Dgw^Wn ;[ ֭`HLD9"P!xDFzLrrCy_Z|*gT'qR=$!q4熣CiXPkW|MtƠG_*83A= p:bf:`^IC} ]3GqG$@:}#E_g8LruraA%T7G=(Wg>!&|m9LSAIgs&(ꚎȂ,XuAPMo(OB&nY&>K{ ^C*K$bTX7<FLYʑDv/, j]O6 *y{~˟|@:^W4EBX3V3Ͻyxrʯ(vs=L={U +D)F(\W7 ћdbq.xBrJJP2&h@E$јs,-+jsXi>pZ"ELbN u69`w! ڝThSoAx}954gX&Bk3)/ۂļMJbEvxs2 2ބ !5 ,i VL<4+`ޛTw?ƿҴcZNI<ٻםDVu%ĶqVݟl{W%CLi [oD@sM'Uh,X# Sw.w_!U !S?[! L h CWgWL/II2 M&LJ+;D))|}gV8T(Sp''k4 b'm<؁scq:>T87H&%?RʬNOEOTۈmcɤ#G6iA\8\/8a;?S|G=pJx~!U2+y}6/ǏQ;L Px ԣvb㛰JI <\B=}i~(+būr}oC5n> $>Z?yuzL"tonz<$mS<)Yڶ❌W?`+/4 G0 :u9Ƥ58C{~TF= mpy eߤ^k3 ?1@V|i5)vEM(ptY Cn7cM {8-dO9鷹K=#N=92 Z!k^J#ZM@dYl Fm*5S<+ tr B"}K2ўڧ@DW+j;ZE*hW M݊3LHW\<1*fcjJUEʯIa|'Eݛq1Lߐ. Q-6ouCwrOr !Cɧ9[L\me)Nf"f3Fh1 B03ot2@S;.b@8lA~sUAR^uBx }M$w0Z6( 7^Y 孞OKQ.㥽ɳVo-oۉoJ'AY'$d˧B Wq(oruL(p:Z/]= W:6*5;P*.ANO`wR\ًR ιp^u5HR =+8Go7䓚3b5H,P'5_E,QJ`_-?IB1k>r{K?GdjJMINW0&=KZ31= 验U|PDPCKYrkx~ێ#ͼ‚T>r9sD`2ы~(~) :_1h:&iXyϲY&{G7+kFPM>9Y&Uzz%i|}Z>a"${ v5k!xweL u9xҟ"!R,?E[P$SK)ҁ!18/tGn|9&jH U4Lx<%-\Qy'Ob8ļCу->zDbֲd>Aq-OzaV|IC+k̈I;Pi4D=_<~V-6)0G2yjO o`1;Iܲѣ)"_'Y/=)8.Cd*~LDr #>S"yD&r}5V<EBg~ +U=fg-s}]guqYM$0}ru2R߆dAsN&R{}ߠ(QLMc-λ1CIrCŀa5?5{g8*kouӦsC87(3lEIooȩ'd\i}cF> 4)H?Q%Y`o`n{ $!!bؔ1J̈Is2ުE+-M;rVj5M=ݸC-nYf!*s=4NCm}L c87nTZq>2մщp2h7{y) ;'h)\زtrg2 8o3pEzt!*oR>F&:I45rT3M8Zg?+8-p{[2Z .S]Ilr7pDց*lK=<gC!,]o}~O#KN S2"ma.;}r^JFKFrS̮KDn\'I-kxWݬ(".^%Kn9TgwSəHbno&o:RnjX)=ub٬0$ƛίLϻ.pjzj8#A ~zVO+)'~[DxoZNOsϩObX2ܥ0U?HD2ܱ7a~z"YEw+/lGu 9Άy2^MZ1,varbj oWn$i!k1K= \<|N6xuW.ALVJT2\Jg4Q(J˷Q 3-I}v(LԧG9p_+þf4yAo,W%3h2 k溾 t ;+)I2б#r(/0qO)0ˊsit'3[KN;!6ZH}s^݉[{2xX8;@P0:T6SͲO \%.8N*x0-ZN* Ѭ](s==^')'ڥIkmILS8iaާNza_UE#18x3uwdڬ*QfRq@1e`΍HCvUh4PC"}utJ*Po00L~`wC:H0F5 .[Q65=Mc*KQ˦OW9(NhBp*^ơ6j/nphk/wS %߄ku)ԨewnyH^\WS_9?^"RMʥ4Z)2PnPC5~;TDerP:vQ_8d[l"hfin˚pSBW.$ϻ3rw ýn iG)<;[I_ RIC#睅~tGA3"t%Wז'}E:+a;Wx]5k#HE3Bx\?bmJh ::NI /I3]%xk-JMS!?V*!Ǹzlv;b'pK؜v^qr$w av̍,B"ljp:$ޞfw^a=S8uSh Gw_US&-fڥ?=+SQA?ǗnuFF5hIh&N8Y0-E99KAG7BdHxRݜ,x~v4"[C7bFv74(/՛9,'ސ*5`dr LGwn >$I EUfen-qo,HT=WPS@NHEK0of{oݲ\1g\3i~<Δ.q03b%pl$ٓ4 FфUBGxGS' *\uO5H1"ct<&TU|.Ni%SM-:G \B4Θ?B[ޛ@b}mj4нVze1HǏVEƏ^B"&{ |ǷkY@3/wNpLNщBocT0U>B1Ӌnb԰7ARQ>O3]Z=.Qd p hiyŰ}DL/:Z73D( u&R:}:ӡ)_,_ƙTNϓАh)ۋ!Pu!vYN WzjN[O Y ?UiX^*c~9ϻÙ}UϠŇF ȿĹMn۪FPe*9n[Ӟ=~`z'wֱ6L2;;LA)Tk6#n qmǵS"~/ H9m8o}݊˃Qքa+vgHrVE;̰W?h9w/ʓY5X{j?W#uP#<,+i3QJKVzO1ڜ]n(nX %}}ސd0X̳~1]m,vY6XR%.R,.)7"D}v}&z\^ʌtyqlo125VgNƹI.h4vUo(Kxv` WeJw+ywD?@R k]„,QO1a˼+<зsv!JsrQ5ɽc16(ti,a0TBY">Ƒ]rQǺ="v:7CI}%L^;_D& 0d&-dh̕)˒֜j\^vAk-?qU'5wf [YT.6(xǔlXIʜMcbJ..WFwn ?\w-EyWhڿdj8üyL(Ph!*#yDDm7Beه~n[7u")mwl hk.G]fT}@eý\~i2le+JSN6=.8RxE|w-Rvv8 !3 (#iN]Oc$Q*#dk t;_ۊv|ⓕ w|0!,)+l=Aۍ7)yOe^l*&Z WVdQl[FBnrVO/ # mI{!c*qe]c]&ƪ}"p[4xήwG+ {;s).#(-^l`>ms3{f5Wy7ǖl(ȜCہoUz4v][l-zdz9b n]&Uz[뢷qШEGzG zK h~j/t4|@P,as:Τ fD_oR}B[ '8+VL|uڕT I{=Yl;p~ZxQ׌yZ9Mfv@N]<ކ,3V!6# 7 n'{K~wvۻKJ]Lx?%s RO]6p:rT7w-(Y֭{Zcu^Æfw0.Bh.a3 ~ MVz3jD kk]CgwbŊ*܇/KgL\/ԍ\GZk,aGG!YNyǀq0{gc8czc^IF8cOa_a-r:" Py\ᾕ œL"\.Z:mLiiz`AvɌ/cՐB='iCT^e3] b } }Ďb&ԍT99Eoy|,<>"@X^b73rv4ըsIa{O=< h&?x?<`>xU~iKNۄ?3?0c]ະeԷ kY?(_ ?^$Hv%Ǘr䷯~M~^xfn(0Vp& ?e)xVƾ_-~׿w? j_7;nk7^_ `%Bf)C2/yT}$"gɥ86uDZphs'z|xa-*;ߛc Yb@wn|0_?(sX,G^gbe+ӫI <X|$NpI|D Noe|dhXEd(YԱp e8ku3]Zqά,Ó"E2ڇY8!x@1̪Kꡯx%KIpk~"()6UMHJ/8BOG+ɊvJϭ@?G(HL<( E-8fьь7?H(K8n3 x[SmbG<?g+wn?F|p "g?~UwoJ0I`3`nb%%V3,.p nRu85N3R){zUJkN$`| T~F+d>6k"??woW>w5PS忦u9$W9r O5:K_>/pHXC<_Nq@~8ا~P Yĝ') 7fM`K|z<ͯ_z- @r_.uQ)y EUyRck+Mw<ܿVpϊ%@VB KR4#X!HI^f` d)sx .Ug?1 nҐxF7ܗAL#nI <穇gxsRYLCd5,LΤ? $yY$ ,iD[L~*xNIx/f_C&$&{brʱY(44gCp81pU\';~b;@  % AAQY__" ݷx8&P18L&bK8t.#4!025'Ir9]Am8cQ@#+ _dsXGk X`54|V֜FfXb9 3pZe]hwck]E@нI@̻M_0&ke2J<C3k')_,AA!⧁?6;$/Z[+3,"mҘO$q,sIi aV4 h inA!ziҾ`q?aFQ0D )3',9"s<bA2ߑ6_98A1p+q?}E6gvV;ɧ iYMŪ>ng2,mZK +#2w5VfeT6acec,jymcئa22媵dd"eO#S׬lEC#;[_6u!c)#]cz$t227N)vY?sgVz~uW?ÿ?~SC,O\uIw܈t8@iPq+k|?!}O%͐)R(Vjϑz _'̋B:\hH#*Cd'tR5#2#pu~,&O.%p4̝sv*pQr28hLB,V<ӥX-O (J{W2(Yډ`X+0|@f'kq!ۚV86~tz3$ڙ"j*a)Ջq m30&?S `e/d]8BZ,ƒP\t9lGԛ_LJ +> Ar [+ؖrIBcx;c-9mbfU;U2+Dqt,('X уViP"Wj!Wݦc܆~e n=d#xcd dL*9 1 ¹wJ|^Ӡ/9 fTTU,X\F|."{* =*q2MkAmH6tLGZ>WsUi̲My`J,;s@1"`*Uyq9)#_>9EŢŻ#|ڪj5 GJP{kXtXςUrs ? Iڝ|-)x6Nٳ#2+Q"h^d<ΎeVl=bnқ}|`.”d1C6Hj>m]yN&{ݥrBs/I 3uXN-Z16h.7꺛S Z19NBuj>߿xaPy" px++Ӆƍ*db Yc b _8fhcK0Ų!_\ b]ݼtD+CdA*SaA*5C$0A =)2^[&C߰UMQ"EI@.E.Q0h-xf L%J]9&moˊ*2. Fdi JRzxCfEҠIԹB*+j!*S3ՌwCp8$M|X1ayeF\kJ!5@t 3h4ɑȍ(yޘwn6PݱĨ3PMN`!{mK#f'woHOݭb w3zi,~o}$;M2Ed7@8/{|B?5zd̀vK+JW՛xt~bP۳}h.N i)e_(go 󻣷UIL B_9 ymf+i^İ^J TPf#95šKGWR5ދ:D!%TӲ "$2jd ,R0tf}.Xԇl 0sh"QB([Ձ"xU S64`b2p"K&,[i2JqaJEZjԨs!v\ Jw sp>Q FIIy5PN8@{N*Eauн"`Pl,p_ʬqb`H6adEKOm>Ar-c"p0ЋRr. :c5"Fa/IQRs2P1chSL4c'k&C@@ S>͒G+f3K*i2|FZ7\ԅg2vDW''Ԕ<}Gf<78rJiJ5u.:xC]M?>Η__Ѱf'j y!s}UP1UNRU?</bv;䋨] EhR"D zFj7nX=wa/kO _q䱌LHG@ ~NClDj p[/&"n>&Ѭ :ʭv"N$u$hC>Rf( AZ"22gLS;ED(|؍¬=HA[ B?Kc_$Ձ.uD¸ fTr=U#|qU?M]㍮ɕw\_ >`ë'¦be96#{ϺΑ{kA#xX,^Ay89k<0ȓF][6ȇ?3o$ϛ90ϮrI{7~w1C!?_Tcirkuit-0.4.3/icons/CMakeLists.txt000644 001750 001750 00000000254 11677601442 020560 0ustar00scarlettscarlett000000 000000 find_package(KDE4 REQUIRED) kde4_install_icons( ${ICON_INSTALL_DIR} ) install (FILES application-x-cirkuit.svgz DESTINATION ${ICON_INSTALL_DIR}/oxygen/scalable/mimetypes) cirkuit-0.4.3/README000644 001750 001750 00000002763 11677601442 015574 0ustar00scarlettscarlett000000 000000 Description ----------- Cirkuit is a KDE4 interface for LaTeX graphic tools (such as TikZ, Gnuplot, Circuit Macros) to produce publication-ready pictures. Cirkuit can also be used as a GUI for Circuit macros by Dwight Aplevich, which is a set of macros for drawing high-quality line diagrams to include in TeX, LaTeX, or similar documents. Cirkuit builds a live preview of the source code and can export the resulting images in various formats. Cirkuit supports also live preview of TikZ and Gnuplot sources. Source code ----------- Cirkuit source code is now hosted on git.kde.org. The project homepage is http://projects.kde.org/cirkuit. Requirements ------------ To run this application you need to have the following applications installed: * latex * m4 * gs * dvips * epstopdf * ps2eps On Debian-based systems (e.g. Ubuntu/Kubuntu) type the following command to install the required apps: sudo apt-get install texlive-latex-base texlive-latex-recommended texlive-pstricks texlive-base-bin texlive-extra-utils preview-latex-style m4 ghostscript pdf2svg To build Cirkuit you need CMake and the KDE4 and Qt4 dev packages. To install them on Debian-based systems, type sudo apt-get install cmake kdelibs5-dev libqt4-dev libpoppler-qt4 Packages are also available for Arch Linux (in AUR). To build the application from source, follow the usual KDE4/CMake procedure: tar xzvf cirkuit-x.y.z.tar.gz cd cirkuit-x.y.z mkdir build cd build cmake .. -DCMAKE_INSTALL_PREFIX=`kde4-config --prefix` make sudo make install cirkuit-0.4.3/cmake_modules/000755 001750 001750 00000000000 11677601442 017514 5ustar00scarlettscarlett000000 000000 cirkuit-0.4.3/cmake_modules/FindPoppler.cmake000644 001750 001750 00000007233 11677601442 022745 0ustar00scarlettscarlett000000 000000 # - Try to find the poppler PDF library # Once done this will define # # POPPLER_FOUND - system has poppler # POPPLER_INCLUDE_DIR - the poppler include directory # POPPLER_LIBRARY - Link this to use poppler # # Copyright (c) 2006-2009, Pino Toscano, # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING-CMAKE-SCRIPTS file. if(POPPLER_INCLUDE_DIR AND POPPLER_LIBRARY) # in cache already set(POPPLER_FOUND TRUE) else(POPPLER_INCLUDE_DIR AND POPPLER_LIBRARY) # use pkg-config to get the directories and then use these values # in the FIND_PATH() and FIND_LIBRARY() calls INCLUDE(FindPkgConfig) pkg_search_module(poppler-qt4 _PopplerIncDir _PopplerLinkDir _PopplerLinkFlags _PopplerCflags) if(_PopplerLinkFlags) # query pkg-config asking for a poppler-qt4 >= 0.5.4 EXEC_PROGRAM(${PKGCONFIG_EXECUTABLE} ARGS --atleast-version=0.5.4 poppler-qt4 RETURN_VALUE _return_VALUE OUTPUT_VARIABLE _pkgconfigDevNull ) if(_return_VALUE STREQUAL "0") set(POPPLER_FOUND TRUE) endif(_return_VALUE STREQUAL "0") else(_PopplerLinkFlags) # try to find poppler without pkgconfig find_library( LIBPOPPLER poppler ) find_library( LIBPOPPLER_QT4 poppler-qt4 ) find_path( INCLUDEPOPPLER_QT4 poppler/qt4/poppler-qt4.h ) find_path( INCLUDEPOPPLER poppler-qt4.h PATHS ${INCLUDEPOPPLER_QT4}/poppler/qt4 ) if( LIBPOPPLER_QT4 AND LIBPOPPLER AND INCLUDEPOPPLER ) set( POPPLER_FOUND TRUE ) set(_PopplerLinkFlags ${LIBPOPPLER} ${LIBPOPPLER_QT4}) set(POPPLER_INCLUDE_DIR ${INCLUDEPOPPLER}) endif( LIBPOPPLER_QT4 AND LIBPOPPLER AND INCLUDEPOPPLER ) endif(_PopplerLinkFlags) if (POPPLER_FOUND) set(POPPLER_LIBRARY ${_PopplerLinkFlags}) # the cflags for poppler-qt4 can contain more than one include path separate_arguments(_PopplerCflags) foreach(_includedir ${_PopplerCflags}) string(REGEX REPLACE "-I(.+)" "\\1" _includedir "${_includedir}") set(POPPLER_INCLUDE_DIR ${POPPLER_INCLUDE_DIR} ${_includedir}) endforeach(_includedir) # check whether we're using poppler 0.6 set(CMAKE_REQUIRED_INCLUDES ${POPPLER_INCLUDE_DIR} ${QT_INCLUDE_DIR}) set(CMAKE_REQUIRED_LIBRARIES ${POPPLER_LIBRARY} ${QT_QTCORE_LIBRARY} ${QT_QTGUI_LIBRARY} ${QT_QTXML_LIBRARY}) check_cxx_source_compiles(" #include int main() { Poppler::SoundObject * so = 0; (void)so; return 0; } " HAVE_POPPLER_0_6 ) check_cxx_source_compiles(" #include #include int main() { Poppler::FormFieldButton * button = 0; button->buttonType(); return 0; } " HAVE_POPPLER_0_8) set(CMAKE_REQUIRED_INCLUDES) set(CMAKE_REQUIRED_LIBRARIES) if (HAVE_POPPLER_0_8) set(popplerVersionMessage "0.8") elseif (HAVE_POPPLER_0_6) set(popplerVersionMessage "0.6") else (HAVE_POPPLER_0_8) set(popplerVersionMessage "0.5.4") endif (HAVE_POPPLER_0_8) if (NOT Poppler_FIND_QUIETLY) message(STATUS "Found Poppler-Qt4: ${POPPLER_LIBRARY}, (>= ${popplerVersionMessage})") endif (NOT Poppler_FIND_QUIETLY) else (POPPLER_FOUND) if (Poppler_FIND_REQUIRED) message(FATAL_ERROR "Could NOT find Poppler-Qt4") endif (Poppler_FIND_REQUIRED) message(STATUS "Could not find OPTIONAL package Poppler-Qt4") endif (POPPLER_FOUND) # ensure that they are cached set(POPPLER_INCLUDE_DIR ${POPPLER_INCLUDE_DIR} CACHE INTERNAL "The Poppler-Qt4 include path") set(POPPLER_LIBRARY ${POPPLER_LIBRARY} CACHE INTERNAL "The Poppler-Qt4 library") set(HAVE_POPPLER_0_6 ${HAVE_POPPLER_0_6} CACHE INTERNAL "Whether the version of Poppler-Qt4 is >= 0.6") set(HAVE_POPPLER_0_8 ${HAVE_POPPLER_0_8} CACHE INTERNAL "Whether the version of Poppler-Qt4 is >= 0.8") endif(POPPLER_INCLUDE_DIR AND POPPLER_LIBRARY) cirkuit-0.4.3/COPYING000644 001750 001750 00000043131 11677601442 015741 0ustar00scarlettscarlett000000 000000 GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 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 Library 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 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 Library General Public License instead of this License. cirkuit-0.4.3/CMakeLists.txt000644 001750 001750 00000001425 11677603101 017440 0ustar00scarlettscarlett000000 000000 PROJECT(cirkuit) cmake_minimum_required(VERSION 2.6) find_package(KDE4 REQUIRED) include(KDE4Defaults) include(MacroLibrary) MESSAGE(STATUS " KDE4 support enabled : ${KDE4_DATA_DIR}") add_definitions(${QT_DEFINITIONS} ${KDE4_DEFINITIONS}) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake_modules) SET(CIRKUIT_VERSION "0.4.3") # configure a header file to pass some of the CMake settings # to the source code configure_file ( "${PROJECT_SOURCE_DIR}/cirkuitconfig.h.in" "${PROJECT_BINARY_DIR}/cirkuitconfig.h" ) include_directories("${PROJECT_BINARY_DIR}") add_definitions(-DQT_USE_FAST_CONCATENATION -DQT_USE_FAST_OPERATOR_PLUS) add_subdirectory(src) add_subdirectory(icons) include(MacroOptionalAddSubdirectory) macro_optional_add_subdirectory( po )