diff --git a/docs/img/ar_SA.svg b/docs/img/ar_SA.svg
index 5fb85acf..93c4aaa3 100644
--- a/docs/img/ar_SA.svg
+++ b/docs/img/ar_SA.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/docs/img/cs_CZ.svg b/docs/img/cs_CZ.svg
index 5fb85acf..93c4aaa3 100644
--- a/docs/img/cs_CZ.svg
+++ b/docs/img/cs_CZ.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/docs/img/de_DE.svg b/docs/img/de_DE.svg
index 5fb85acf..93c4aaa3 100644
--- a/docs/img/de_DE.svg
+++ b/docs/img/de_DE.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/docs/img/en_US.svg b/docs/img/en_US.svg
index 5fb85acf..93c4aaa3 100644
--- a/docs/img/en_US.svg
+++ b/docs/img/en_US.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/docs/img/es_ES.svg b/docs/img/es_ES.svg
index 5fb85acf..93c4aaa3 100644
--- a/docs/img/es_ES.svg
+++ b/docs/img/es_ES.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/docs/img/fr_FR.svg b/docs/img/fr_FR.svg
index 5fb85acf..93c4aaa3 100644
--- a/docs/img/fr_FR.svg
+++ b/docs/img/fr_FR.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/docs/img/ja_JP.svg b/docs/img/ja_JP.svg
index 5fb85acf..93c4aaa3 100644
--- a/docs/img/ja_JP.svg
+++ b/docs/img/ja_JP.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/docs/img/ko_KR.svg b/docs/img/ko_KR.svg
index 5fb85acf..93c4aaa3 100644
--- a/docs/img/ko_KR.svg
+++ b/docs/img/ko_KR.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/docs/img/pt_BR.svg b/docs/img/pt_BR.svg
index 5fb85acf..93c4aaa3 100644
--- a/docs/img/pt_BR.svg
+++ b/docs/img/pt_BR.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/docs/img/ru_RU.svg b/docs/img/ru_RU.svg
index 5fb85acf..93c4aaa3 100644
--- a/docs/img/ru_RU.svg
+++ b/docs/img/ru_RU.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/docs/img/zh_CN.svg b/docs/img/zh_CN.svg
index 5fb85acf..93c4aaa3 100644
--- a/docs/img/zh_CN.svg
+++ b/docs/img/zh_CN.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/docs/img/zh_HK.svg b/docs/img/zh_HK.svg
index 5fb85acf..93c4aaa3 100644
--- a/docs/img/zh_HK.svg
+++ b/docs/img/zh_HK.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/lang/quardCRT_ar_SA.ts b/lang/quardCRT_ar_SA.ts
index 1dac90f9..14367e59 100644
--- a/lang/quardCRT_ar_SA.ts
+++ b/lang/quardCRT_ar_SA.ts
@@ -13,7 +13,7 @@
CentralWidget
-
+ Tool Barشريط الأدوات
@@ -26,21 +26,21 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Warningتحذير
@@ -285,7 +285,7 @@
-
+ Readyجاهز
@@ -464,7 +464,7 @@
-
+ Helpمساعدة
@@ -566,26 +566,27 @@
+ Enter host <Alt+R> to connectأدخل المضيف <Alt+R> للاتصال
-
+ Disconnect Allقطع الاتصال بالكل
-
+ Disconnect all sessionsقطع الاتصال بجميع الجلسات
-
+ Clone Sessionاستنساخ الجلسة
-
+ Clone current session <Ctrl+Shift+T>استنساخ الجلسة الحالية <Ctrl+Shift+T>
@@ -595,564 +596,564 @@
قفل الجلسة
-
+ Log Sessionسجل الجلسة
-
+ Create a log file for current sessionإنشاء ملف سجل للجلسة الحالية
-
+ Raw Log Sessionسجل الجلسة الخام
-
+ Create a raw log file for current sessionإنشاء ملف سجل خام للجلسة الحالية
-
+ Hex Viewعرض Hex
-
+ Show/Hide Hex View for current sessionإظهار/إخفاء عرض Hex للجلسة الحالية
-
+ Exitخروج
-
+ Quit the applicationإنهاء التطبيق
-
+ Copyنسخ
-
+ Copy the selected text to the clipboard <Command+C>نسخ النص المحدد إلى الحافظة <Command+C>
-
+ Copy the selected text to the clipboard <Ctrl+Ins>نسخ النص المحدد إلى الحافظة <Ctrl+Ins>
-
+ Pasteلصق
-
+ Paste the clipboard text to the current session <Command+V>لصق نص الحافظة في الجلسة الحالية <Command+V>
-
+ Paste the clipboard text to the current session <Shift+Ins>لصق نص الحافظة في الجلسة الحالية <Shift+Ins>
-
+ Copy and Pasteنسخ ولصق
-
+ Copy the selected text to the clipboard and paste to the current sessionنسخ النص المحدد إلى الحافظة ولصقه في الجلسة الحالية
-
+ Select Allتحديد الكل
-
+ Select all text in the current session <Ctrl+Shift+A>تحديد كل النص في الجلسة الحالية <Ctrl+Shift+A>
-
+ Find...البحث...
-
+ Find text in the current session <Ctrl+F>البحث عن نص في الجلسة الحالية <Ctrl+F>
-
+ Print Screenطباعة الشاشة
-
+ Print current screenطباعة الشاشة الحالية
-
+ Screen Shotلقطة الشاشة
-
+ Screen shot current screen <Alt+P>لقطة شاشة الشاشة الحالية <Alt+P>
-
+ Session Exportتصدير الجلسة
-
+ Export current session to a file <Alt+O>تصدير الجلسة الحالية إلى ملف <Alt+O>
-
+ Clear Scrollbackمسح السجل الراجع
-
+ Clear the contents of the scrollback rowsمسح محتويات صفوف السجل الراجع
-
+ Clear Screenمسح الشاشة
-
+ Clear the contents of the current screenمسح محتويات الشاشة الحالية
-
+ Clear Screen and Scrollbackمسح الشاشة والسجل الراجع
-
+ Clear the contents of the screen and scrollbackمسح محتويات الشاشة والسجل الراجع
-
+ Resetإعادة تعيين
-
+ Reset terminal emulatorإعادة تعيين محاكي الطرفية
-
+ Zoom Inتكبير
-
+ Zoom In <Ctrl+"=">تكبير <Ctrl+"=">
-
+ Zoom Outتصغير
-
+ Zoom Out <Ctrl+"-">تصغير <Ctrl+"-">
-
-
+
+ Zoom Resetإعادة تعيين التكبير
-
+ Layoutالتخطيط
-
+ Single Layoutتخطيط واحد
-
+ Single layoutتخطيط واحد
-
+ Two Columns Layoutتخطيط عمودين
-
+ Two columns layoutتخطيط عمودين
-
+ Three Columns Layoutتخطيط ثلاثة أعمدة
-
+ Three columns layoutتخطيط ثلاثة أعمدة
-
+ Two Rows Layoutتخطيط صفين
-
+ Two rows layoutتخطيط صفين
-
+ Three Rows Layoutتخطيط ثلاثة صفوف
-
+ Three rows layoutتخطيط ثلاثة صفوف
-
+ Grid Layoutتخطيط الشبكة
-
+ Grid layoutتخطيط الشبكة
-
+ Two Rows Right Layoutتخطيط صفين إلى اليمين
-
+ Two rows right layoutتخطيط صفين إلى اليمين
-
+ Two Columns Bottom Layoutتخطيط عمودين أسفل
-
+ Two columns bottom layoutتخطيط عمودين أسفل
-
+ Flip Layoutقلب التخطيط
-
+ Flip layoutقلب التخطيط
-
+ Menu Barشريط القائمة
-
+ Show/Hide Menu Bar <Alt+U>إظهار/إخفاء شريط القائمة <Alt+U>
-
+ Show/Hide Tool Barإظهار/إخفاء شريط الأدوات
-
+ Status Barشريط الحالة
-
+ Show/Hide Status Barإظهار/إخفاء شريط الحالة
-
+ Command Windowنافذة الأمر
-
+ Show/Hide Command Windowإظهار/إخفاء نافذة الأمر
-
+ Connect Barشريط الاتصال
-
+ Show/Hide Connect Barإظهار/إخفاء شريط الاتصال
-
+ Side Windowالنافذة الجانبية
-
+ Show/Hide Side Windowإظهار/إخفاء النافذة الجانبية
-
+ Windows Transparencyشفافية النوافذ
-
+ Enable/Disable alpha transparencyتمكين/تعطيل الشفافية ألفا
-
+ Vertical Scroll Barشريط التمرير العمودي
-
+ Show/Hide Vertical Scroll Barإظهار/إخفاء شريط التمرير العمودي
-
+ Allways On Topدائمًا في الأعلى
-
+ Show window always on topإظهار النافذة دائمًا في الأعلى
-
+ Full Screenشاشة كاملة
-
+ Toggle between full screen and normal mode <Alt+Enter>التبديل بين وضع الشاشة الكاملة والوضع العادي <Alt+Enter>
-
+ Session Options...خيارات الجلسة...
-
+ Configure session optionsتكوين خيارات الجلسة
-
+ Global Options...الخيارات العامة...
-
+ Configure global optionsتكوين الخيارات العامة
-
+ Real-time Save Optionsخيارات الحفظ في الوقت الحقيقي
-
+ Real-time save session options and global optionsحفظ خيارات الجلسة والخيارات العامة في الوقت الحقيقي
-
+ Save Settings Nowحفظ الإعدادات الآن
-
+ Save options configuration nowحفظ تكوين الخيارات الآن
-
+ Send ASCII...إرسال ASCII...
-
+ Send ASCII fileإرسال ملف ASCII
-
+ Receive ASCII...استقبال ASCII...
-
+ Receive ASCII fileاستقبال ملف ASCII
-
+ Send Binary...إرسال ثنائي...
-
+ Send Binary fileإرسال ملف ثنائي
-
+ Send Kermit...إرسال Kermit...
-
+ Send a file using Kermitإرسال ملف باستخدام Kermit
-
+ Receive Kermit...استقبال Kermit...
-
+ Receive a file using Kermitاستقبال ملف باستخدام Kermit
-
+ Send Xmodem...إرسال Xmodem...
-
+ Send a file using Xmodemإرسال ملف باستخدام Xmodem
-
+ Receive Xmodem...استقبال Xmodem...
-
+ Receive a file using Xmodemاستقبال ملف باستخدام Xmodem
-
+ Send Ymodem...إرسال Ymodem...
-
+ Send a file using Ymodemإرسال ملف باستخدام Ymodem
-
+ Receive Ymodem...استقبال Ymodem...
-
+ Receive a file using Ymodemاستقبال ملف باستخدام Ymodem
-
+ Zmodem Upload List...قائمة تحميل Zmodem...
-
+ Display Zmodem file upload listعرض قائمة تحميل ملف Zmodem
-
+ Start Zmodem Uploadبدء تحميل Zmodem
-
+ Start Zmodem file uploadبدء تحميل ملف Zmodem
-
+ Start TFTP Serverبدء خادم TFTP
-
+ Start/Stop the TFTP serverبدء/إيقاف خادم TFTP
-
+ Run...تشغيل...
-
+ Run a scriptتشغيل نصًا
-
+ Cancelإلغاء
@@ -1213,759 +1214,759 @@
تغيير اللون
-
+ Cancel script executionإلغاء تنفيذ النص
-
+ Start Recording Scriptبدء تسجيل النص
-
+ Start recording scriptبدء تسجيل النص
-
+ Stop Recording Script...إيقاف تسجيل النص...
-
+ Stop recording scriptإيقاف تسجيل النص
-
+ Cancel Recording Scriptإلغاء تسجيل النص
-
+ Cancel recording scriptإلغاء تسجيل النص
-
+ Add Bookmarkإضافة إشارة مرجعية
-
+ Add a bookmarkإضافة إشارة مرجعية
-
-
+
+ Remove Bookmarkإزالة الإشارة المرجعية
-
+ Remove a bookmarkإزالة إشارة مرجعية
-
-
+
+ Clean All Bookmarkتنظيف كل الإشارات المرجعية
-
+ Clean all bookmarkتنظيف كل الإشارات المرجعية
-
+ Keymap Managerمدير الخريطة الرئيسية
-
+ Display keymap editorعرض محرر الخريطة الرئيسية
-
+ Create Public Key...إنشاء مفتاح عام...
-
+ Create a public keyإنشاء مفتاح عام
-
+ Publickey Managerمدير المفتاح العام
-
+ Display publickey managerعرض مدير المفتاح العام
-
+ Internal Commandالأمر الداخلي
-
+ Display Internal Command windowعرض نافذة الأمر الداخلي
-
+ Tabلسان
-
+ Arrange sessions in tabsترتيب الجلسات في علامات التبويب
-
+ Tileبلاطة
-
+ Arrange sessions in non-overlapping tilesترتيب الجلسات في بلاطات غير متداخلة
-
+ Cascadeشلال
-
+ Arrange sessions to overlap each otherترتيب الجلسات لتتداخل مع بعضها البعض
-
+ Simplified Chinese简体中文
-
+ Switch to Simplified Chinese切换到简体中文
-
+ Traditional Chinese繁體中文
-
+ Switch to Traditional Chinese切換到繁體中文
-
+ RussianРусский
-
+ Switch to RussianПереключиться на русский
-
+ Portuguese (Brazil)Português (Brasil)
-
+ Switch to Portuguese (Brazil)Mudar para Português (Brasil)
-
+ Korean한국어
-
+ Switch to Korean한국어로 전환
-
+ Japanese日本語
-
+ Switch to Japanese日本語に切り替える
-
+ Frenchfrançais
-
+ Switch to FrenchPasser au français
-
+ Spanishespañol
-
+ Switch to SpanishCambiar a español
-
+ English
-
+ Switch to English
-
+ GermanDeutsch
-
+ Switch to GermanWechseln Sie zu Deutsch
-
+ Czechčeština
-
+ Switch to CzechPřepnout do češtiny
-
+ Arabicعربي
-
+ Switch to Arabicالتبديل إلى العربية
-
+ Lightخفيف
-
+ Switch to light themeالتبديل إلى السمة الفاتحة
-
+ Darkداكن
-
+ Switch to dark themeالتبديل إلى السمة الداكنة
-
+ Theme Colorلون السمة
-
+ Set theme color, cancel to use defaultتعيين لون السمة، إلغاء لاستخدام الافتراضي
-
+ Display helpعرض المساعدة
-
-
+
+ Keyborad Shortcuts Referenceمرجع اختصارات لوحة المفاتيح
-
+ Display keyborad shortcuts referenceعرض مرجع اختصارات لوحة المفاتيح
-
+ Check Updateالتحقق من التحديث
-
+ Check for updatesالتحقق من وجود تحديثات
-
-
+
+ Privacy Statementبيان الخصوصية
-
+ Display privacy statementعرض بيان الخصوصية
-
-
+
+ Aboutحول
-
+ Display about dialogعرض مربع الحوار حول
-
+ About Qtحول Qt
-
+ Display about Qt dialogعرض مربع الحوار حول Qt
-
-
+
+ About Pythonحول Python
-
+ Display about Python dialogعرض مربع الحوار حول Python
-
+ Laboratoryمختبر
-
-
+
+ SSH Scanningفحص SSH
-
+ Display SSH scanning dialogعرض مربع الحوار فحص SSH
-
+ Plugin Infoمعلومات البرنامج المساعد
-
+ Display plugin information dialogعرض مربع الحوار معلومات البرنامج المساعد
-
+ Plugin metaData not found!لم يتم العثور على بيانات البرنامج المساعد!
-
+ Plugin api version not found!لم يتم العثور على إصدار واجهة برمجة التطبيقات للبرنامج المساعد!
-
+ Plugin api version not match!إصدار واجهة برمجة التطبيقات للبرنامج المساعد لا يتطابق!
-
+ Plugin menu not found!لم يتم العثور على قائمة البرنامج المساعد!
-
+ Plugin init failed!فشل تهيئة البرنامج المساعد!
-
+ PrintScreen saved to %1تم حفظ PrintScreen في %1
-
+ Save Screenshotحفظ لقطة الشاشة
-
+ Image Files (*.jpg)ملفات الصور (*.jpg)
-
-
+
+ Screenshot saved to %1تم حفظ لقطة الشاشة في %1
-
+ Save Session Exportحفظ تصدير الجلسة
-
+ Text Files (*.txt);;HTML Files (*.html)ملفات النص (*.txt);;ملفات HTML (*.html)
-
+ Text Files (*.txt)ملفات النص (*.txt)
-
+ HTML Files (*.html)ملفات HTML (*.html)
-
+ Session Export saved to %1تم حفظ تصدير الجلسة في %1
-
+ Session Export failed to save to %1فشل حفظ تصدير الجلسة في %1
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+ Broadcast session can't transfer file!لا يمكن لجلسة البث نقل الملف!
-
+ Select Files to Send as ASCIIحدد الملفات لإرسالها كـ ASCII
-
-
+
+ Text Files (*.txt);;All Files (*)ملفات النص (*.txt);;كل الملفات (*)
-
+ Save Received Data as ASCIIحفظ البيانات المستلمة كـ ASCII
-
+ Select Files to Send as BINARYحدد الملفات لإرسالها كـ BINARY
-
-
-
-
-
-
+
+
+
+
+
+ All Files (*)كل الملفات (*)
-
+ Select Files to Send using Kermitحدد الملفات لإرسالها باستخدام Kermit
-
+ Select Files to Send using Xmodemحدد الملفات لإرسالها باستخدام Xmodem
-
+ Save Received Files using Xmodemحفظ الملفات المستلمة باستخدام Xmodem
-
+ Select Files to Send using Ymodemحدد الملفات لإرسالها باستخدام Ymodem
-
+ Select Files to Send using Zmodemحدد الملفات لإرسالها باستخدام Zmodem
-
+ Select a script fileحدد ملف نصي
-
+ Python Files (*.py);;All Files (*)ملفات Python (*.py);;كل الملفات (*)
-
+ Select a directoryحدد دليلًا
-
+ Select a bookmarkحدد إشارة مرجعية
-
+ Are you sure to clean all bookmark?هل أنت متأكد من تنظيف كل الإشارات المرجعية؟
-
+ Portمنفذ
-
+ Select colorحدد لونًا
-
+ Video background is enabled, please enable animation in global options (more system resources) or change background image.تم تمكين الخلفية المتحركة، يرجى تمكين الرسوم المتحركة في الخيارات العامة (مزيد من موارد النظام) أو تغيير صورة الخلفية.
-
+ Session information get failed.فشل الحصول على معلومات الجلسة.
-
+ Telnet - تلنت -
-
+ Telnetتلنت
-
+ Serial - تسلسلي -
-
+ Serialتسلسلي
-
+ Raw - خام -
-
+ Rawخام
-
+ NamePipe - أنبوب الاسم -
-
+ NamePipeأنبوب الاسم
-
-
+
+ Local Shellالشل المحلي
-
+ Local Shell - الشل المحلي -
-
+ This software is a terminal emulator that provides a secure shell (SSH) connection, telnet connection, serial port connection, and other functions.هذا البرنامج هو محاكي الطرفية الذي يوفر اتصالًا بالشل الآمن (SSH)، واتصالًا بالتلنت، واتصالًا بالمنفذ التسلسلي، ووظائف أخرى.
-
+ This software does not collect any personal information, and does not send any information to the server.هذا البرنامج لا يجمع أي معلومات شخصية، ولا يرسل أي معلومات إلى الخادم.
-
+ This software does not contain any malicious code, and does not contain any backdoors.هذا البرنامج لا يحتوي على أي رمز ضار، ولا يحتوي على أي أبواب خلفية.
-
+ This software is open source software, you can view the source code on the github website.هذا البرنامج هو برنامج مفتوح المصدر، يمكنك عرض الشيفرة المصدرية على موقع github.
-
+ This software is provided as is, without any warranty.يتم توفير هذا البرنامج كما هو، دون أي ضمان.
-
+ If you have any questions or suggestions, please contact the author.إذا كان لديك أي أسئلة أو اقتراحات، يرجى الاتصال بالمؤلف.
-
+ Versionالإصدار
-
+ Commitالتزام
-
+ Dateتاريخ
-
-
+
+ Authorالمؤلف
-
+ Are you sure to disconnect "هل أنت متأكد من قطع الاتصال بـ"
-
+ " session?" الجلسة؟
-
+ Websiteالموقع الإلكتروني
-
+ Global Shortcuts:اختصارات عامة:
-
+ show/hide menu barإظهار/إخفاء شريط القائمة
-
+ connect to LocalShellالاتصال بالشل المحلي
-
+ clone current sessionاستنساخ الجلسة الحالية
-
+ switch ui to STD modeتبديل واجهة المستخدم إلى وضع STD
-
+ switch ui to MINI modeتبديل واجهة المستخدم إلى وضع MINI
-
+ switch to previous sessionالتبديل إلى الجلسة السابقة
-
+ switch to next sessionالتبديل إلى الجلسة التالية
-
+ switch to session [num]التبديل إلى الجلسة [رقم]
-
+ Go to line startالانتقال إلى بداية السطر
-
+ Go to line endالانتقال إلى نهاية السطر
-
+ There are sessions that have not yet been unlocked, please unlock them first.هناك جلسات لم يتم فتحها بعد، يرجى فتحها أولاً.
-
+ Are you sure to quit?هل أنت متأكد من الخروج؟
@@ -2707,8 +2708,8 @@
-
-
+
+ Warningتحذير
@@ -2745,7 +2746,7 @@ If you need to use another shell, please create a session through [quick-connect
-
+ The Default Local Shell is not a valid file!الشل المحلي الافتراضي ليس ملفًا صالحًا!
@@ -2795,7 +2796,7 @@ If you need to use another shell, please create a session through [quick-connect
نقل
-
+ The User Plugins Path is not a directory!مسار المكونات الإضافية للمستخدم ليس دليلًا!
@@ -2869,93 +2870,36 @@ If you need to use another shell, please create a session through [quick-connect
الأمر الداخلي
-
+ Copyنسخ
-
+ Pasteلصق
-
+ Select Allتحديد الكل
-
+ Findبحث
-
+ Zoom Inتكبير
-
+ Zoom Outتصغير
-
- Session
-
-
- Bell in session '%1'
- جرس في الجلسة '%1'
-
-
-
- TerminalDisplay
-
-
- Size: XXX x XXX
- الحجم: XXX x XXX
-
-
-
- Size: %1 x %2
- الحجم: %1 x %2
-
-
-
- Paste multiline text
- لصق نص متعدد الأسطر
-
-
-
- Are you sure you want to paste this text?
- هل أنت متأكد من أنك تريد لصق هذا النص؟
-
-
-
- <qt>Output has been <a href="http://en.wikipedia.org/wiki/Flow_control">suspended</a> by pressing Ctrl+S. Press <b>Ctrl+Q</b> to resume.</qt>
- <qt>تم <a href="http://en.wikipedia.org/wiki/Flow_control">تعليق</a> الإخراج بالضغط على Ctrl+S. اضغط على <b>Ctrl+Q</b> لاستئنافه.</qt>
-
-
-
- UrlFilter
-
-
- Follow link (ctrl + click)
- اتبع الرابط (ctrl + انقر)
-
-
-
- Follow path (ctrl + click)
- اتبع المسار (ctrl + انقر)
-
-
-
- Vt102Emulation
-
-
- No keyboard translator available. The information needed to convert key presses into characters to send to the terminal is missing.
- لا يتوفر مترجم لوحة المفاتيح. المعلومات اللازمة لتحويل ضغطات المفاتيح إلى أحرف لإرسالها إلى الطرفية مفقودة.
-
-LockSessionWindow
@@ -3484,47 +3428,47 @@ If you need to use another shell, please create a session through [quick-connect
QObject
-
+ Un-named Color Schemeمخطط ألوان بدون اسم
-
+ Accessible Color Schemeمخطط ألوان قابل للوصول
-
+ Open Linkفتح الرابط
-
+ Copy Link Addressنسخ عنوان الرابط
-
+ Send Email To...إرسال بريد إلكتروني إلى...
-
+ Copy Email Addressنسخ عنوان البريد الإلكتروني
-
+ Open Pathفتح المسار
-
+ Open Containing Folderفتح المجلد الذي يحتوي عليه
-
+ Copy Pathنسخ المسار
@@ -3587,12 +3531,12 @@ If you need to use another shell, please create a session through [quick-connect
QTermWidget
-
+ Color Scheme Errorخطأ في مخطط الألوان
-
+ Cannot load color scheme: %1تعذر تحميل مخطط الألوان: %1
@@ -3897,20 +3841,20 @@ If you need to use another shell, please create a session through [quick-connect
البحث عن:
-
-
+
+ Match caseحساسية الحالة
-
-
+
+ Regular expressionتعبير منتظم
-
-
+
+ Highlight all matchesتسليط الضوء على جميع النتائج المطابقة
@@ -4252,25 +4196,25 @@ If you need to use another shell, please create a session through [quick-connect
SessionsWindow
-
+ Telnet Errorخطأ في تلنت
-
+ Telnet error:
%1.خطأ في تلنت:
%1.
-
-
+
+ Serial Errorخطأ في التسلسلي
-
+ Serial error:
%0
%1.
@@ -4279,133 +4223,133 @@ If you need to use another shell, please create a session through [quick-connect
%1.
-
+ Raw Socket Errorخطأ في المأخذ الخام
-
+ Raw Socket error:
%1.خطأ في المأخذ الخام:
%1.
-
+ Name Pipe Errorخطأ في أنبوب الاسم
-
+ Name Pipe error:
%1.خطأ في أنبوب الاسم:
%1.
-
-
+
+ SSH2 Errorخطأ في SSH2
-
-
+
+ SSH2 error:
%1.خطأ في SSH2:
%1.
-
-
+
+ Open URLفتح الرابط
-
-
+
+ Cannot open URL %1.تعذر فتح الرابط %1.
-
+ Select Files to Send using Zmodemحدد الملفات لإرسالها باستخدام Zmodem
-
+ All Files (*)كل الملفات (*)
-
+ Start Local Shellبدء الشل المحلي
-
+ Cannot start local shell:
%1.تعذر بدء الشل المحلي:
%1.
-
+ Serial port %1 has been removed.تمت إزالة المنفذ التسلسلي %1.
-
+ Save log...حفظ السجل...
-
+ log files (*.log)ملفات السجل (*.log)
-
+ Save logحفظ السجل
-
-
-
+
+
+ Cannot write file %1:
%2.تعذر كتابة الملف %1:
%2.
-
+ Save Raw log...حفظ السجل الخام...
-
+ binary files (*.bin)ملفات البيانات الثنائية (*.bin)
-
+ Save Raw logحفظ السجل الخام
-
+ Unlock Sessionفتح الجلسة
-
+ Wrong password!كلمة مرور خاطئة!
-
+ Receive ASCII Fileاستقبال ملف ASCII
@@ -4662,6 +4606,34 @@ If you need to use another shell, please create a session through [quick-connect
معلومات النقل
+
+ TerminalDisplay
+
+
+ Size: XXX x XXX
+ الحجم: XXX x XXX
+
+
+
+ Size: %1 x %2
+ الحجم: %1 x %2
+
+
+
+ Paste multiline text
+ لصق نص متعدد الأسطر
+
+
+
+ Are you sure you want to paste this text?
+ هل أنت متأكد من أنك تريد لصق هذا النص؟
+
+
+
+ <qt>Output has been <a href="http://en.wikipedia.org/wiki/Flow_control">suspended</a> by pressing Ctrl+S. Press <b>Ctrl+Q</b> to resume.</qt>
+ <qt>تم <a href="http://en.wikipedia.org/wiki/Flow_control">تعليق</a> الإخراج بالضغط على Ctrl+S. اضغط على <b>Ctrl+Q</b> لاستئنافه.</qt>
+
+UndoStack
@@ -4680,6 +4652,27 @@ If you need to use another shell, please create a session through [quick-connect
الكتابة فوق %1 حرفًا
+
+ UrlFilter
+
+
+ Follow link (ctrl + click)
+ اتبع الرابط (ctrl + انقر)
+
+
+
+ Follow path (ctrl + click)
+ اتبع المسار (ctrl + انقر)
+
+
+
+ Vt102Emulation
+
+
+ No keyboard translator available. The information needed to convert key presses into characters to send to the terminal is missing.
+ لا يتوفر مترجم لوحة المفاتيح. المعلومات اللازمة لتحويل ضغطات المفاتيح إلى أحرف لإرسالها إلى الطرفية مفقودة.
+
+keyMapManager
diff --git a/lang/quardCRT_cs_CZ.ts b/lang/quardCRT_cs_CZ.ts
index d124b968..0c566333 100644
--- a/lang/quardCRT_cs_CZ.ts
+++ b/lang/quardCRT_cs_CZ.ts
@@ -13,7 +13,7 @@
CentralWidget
-
+ Tool BarNástrojová lišta
@@ -26,21 +26,21 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ WarningVarování
@@ -285,7 +285,7 @@
-
+ ReadyPřipraveno
@@ -464,7 +464,7 @@
-
+ HelpNápověda
@@ -566,26 +566,27 @@
+ Enter host <Alt+R> to connectZadejte hosta <Alt+R> pro připojení
-
+ Disconnect AllOdpojit všechny
-
+ Disconnect all sessionsOdpojit všechny relace
-
+ Clone SessionKlonovat relaci
-
+ Clone current session <Ctrl+Shift+T>Klonovat aktuální relaci <Ctrl+Shift+T>
@@ -595,564 +596,564 @@
Zamknout relaci
-
+ Log SessionLogovat relaci
-
+ Create a log file for current sessionVytvořit logovací soubor pro aktuální relaci
-
+ Raw Log SessionRaw logovací relace
-
+ Create a raw log file for current sessionVytvořit raw logovací soubor pro aktuální relaci
-
+ Hex ViewHex zobrazení
-
+ Show/Hide Hex View for current sessionZobrazit/Skrýt Hex zobrazení pro aktuální relaci
-
+ ExitUkončit
-
+ Quit the applicationUkončit aplikaci
-
+ CopyKopírovat
-
+ Copy the selected text to the clipboard <Command+C>Kopírovat vybraný text do schránky <Command+C>
-
+ Copy the selected text to the clipboard <Ctrl+Ins>Kopírovat vybraný text do schránky <Ctrl+Ins>
-
+ PasteVložit
-
+ Paste the clipboard text to the current session <Command+V>Vložit text ze schránky do aktuální relace <Command+V>
-
+ Paste the clipboard text to the current session <Shift+Ins>Vložit text ze schránky do aktuální relace <Shift+Ins>
-
+ Copy and PasteKopírovat a vložit
-
+ Copy the selected text to the clipboard and paste to the current sessionKopírovat vybraný text do schránky a vložit do aktuální relace
-
+ Select AllVybrat vše
-
+ Select all text in the current session <Ctrl+Shift+A>Vybrat všechny text v aktuální relaci <Ctrl+Shift+A>
-
+ Find...Hledat...
-
+ Find text in the current session <Ctrl+F>Hledat text v aktuální relaci <Ctrl+F>
-
+ Print ScreenTisk obrazovky
-
+ Print current screenTisk aktuální obrazovky
-
+ Screen ShotSnímek obrazovky
-
+ Screen shot current screen <Alt+P>Snímek obrazovky aktuální obrazovky <Alt+P>
-
+ Session ExportExport relace
-
+ Export current session to a file <Alt+O>Exportovat aktuální relaci do souboru <Alt+O>
-
+ Clear ScrollbackVymazat posuvník
-
+ Clear the contents of the scrollback rowsVymazat obsah řádků posuvníku
-
+ Clear ScreenVymazat obrazovku
-
+ Clear the contents of the current screenVymazat obsah aktuální obrazovky
-
+ Clear Screen and ScrollbackVymazat obrazovku a posuvník
-
+ Clear the contents of the screen and scrollbackVymazat obsah obrazovky a posuvníku
-
+ ResetResetovat
-
+ Reset terminal emulatorResetovat emulátor terminálu
-
+ Zoom InPřiblížit
-
+ Zoom In <Ctrl+"=">Přiblížit <Ctrl+"=">
-
+ Zoom OutOddálit
-
+ Zoom Out <Ctrl+"-">Oddálit <Ctrl+"-">
-
-
+
+ Zoom ResetResetovat přiblížení
-
+ LayoutRozložení
-
+ Single LayoutJednoduché rozložení
-
+ Single layoutJednoduché rozložení
-
+ Two Columns LayoutDvou sloupcové rozložení
-
+ Two columns layoutDvou sloupcové rozložení
-
+ Three Columns LayoutTří sloupcové rozložení
-
+ Three columns layoutTří sloupcové rozložení
-
+ Two Rows LayoutDvou řádkové rozložení
-
+ Two rows layoutDvou řádkové rozložení
-
+ Three Rows LayoutTří řádkové rozložení
-
+ Three rows layoutTří řádkové rozložení
-
+ Grid LayoutRozložení mřížky
-
+ Grid layoutRozložení mřížky
-
+ Two Rows Right LayoutDvou řádkové pravé rozložení
-
+ Two rows right layoutDvou řádkové pravé rozložení
-
+ Two Columns Bottom LayoutDvou sloupcové dolní rozložení
-
+ Two columns bottom layoutDvou sloupcové dolní rozložení
-
+ Flip LayoutPřeklopit rozložení
-
+ Flip layoutPřeklopit rozložení
-
+ Menu BarMenu lišta
-
+ Show/Hide Menu Bar <Alt+U>Zobrazit/Skrýt Menu lištu <Alt+U>
-
+ Show/Hide Tool BarZobrazit/Skrýt Nástrojovou lištu
-
+ Status BarStavová lišta
-
+ Show/Hide Status BarZobrazit/Skrýt Stavovou lištu
-
+ Command WindowOkno příkazů
-
+ Show/Hide Command WindowZobrazit/Skrýt Okno příkazů
-
+ Connect BarPřipojovací lišta
-
+ Show/Hide Connect BarZobrazit/Skrýt Připojovací lištu
-
+ Side WindowBoční okno
-
+ Show/Hide Side WindowZobrazit/Skrýt Boční okno
-
+ Windows TransparencyPrůhlednost oken
-
+ Enable/Disable alpha transparencyPovolit/Zakázat alfa průhlednost
-
+ Vertical Scroll BarVertikální posuvník
-
+ Show/Hide Vertical Scroll BarZobrazit/Skrýt Vertikální posuvník
-
+ Allways On TopVždy nahoře
-
+ Show window always on topZobrazit okno vždy nahoře
-
+ Full ScreenNa celou obrazovku
-
+ Toggle between full screen and normal mode <Alt+Enter>Přepnout mezi režimem na celou obrazovku a normálním režimem <Alt+Enter>
-
+ Session Options...Možnosti relace...
-
+ Configure session optionsNastavit možnosti relace
-
+ Global Options...Globální možnosti...
-
+ Configure global optionsNastavit globální možnosti
-
+ Real-time Save OptionsMožnosti ukládání v reálném čase
-
+ Real-time save session options and global optionsMožnosti ukládání relace a globální možnosti v reálném čase
-
+ Save Settings NowUložit nastavení nyní
-
+ Save options configuration nowUložit konfiguraci možností nyní
-
+ Send ASCII...Odeslat ASCII...
-
+ Send ASCII fileOdeslat ASCII soubor
-
+ Receive ASCII...Přijmout ASCII...
-
+ Receive ASCII filePřijmout ASCII soubor
-
+ Send Binary...Odeslat binárně...
-
+ Send Binary fileOdeslat binární soubor
-
+ Send Kermit...Odeslat Kermit...
-
+ Send a file using KermitOdeslat soubor pomocí Kermitu
-
+ Receive Kermit...Přijmout Kermit...
-
+ Receive a file using KermitPřijmout soubor pomocí Kermitu
-
+ Send Xmodem...Odeslat Xmodem...
-
+ Send a file using XmodemOdeslat soubor pomocí Xmodemu
-
+ Receive Xmodem...Přijmout Xmodem...
-
+ Receive a file using XmodemPřijmout soubor pomocí Xmodemu
-
+ Send Ymodem...Odeslat Ymodem...
-
+ Send a file using YmodemOdeslat soubor pomocí Ymodemu
-
+ Receive Ymodem...Přijmout Ymodem...
-
+ Receive a file using YmodemPřijmout soubor pomocí Ymodemu
-
+ Zmodem Upload List...Seznam nahrávání Zmodemu...
-
+ Display Zmodem file upload listZobrazit seznam nahrávání souborů Zmodemu
-
+ Start Zmodem UploadSpustit nahrávání Zmodemu
-
+ Start Zmodem file uploadSpustit nahrávání souboru Zmodemu
-
+ Start TFTP ServerSpustit TFTP server
-
+ Start/Stop the TFTP serverSpustit/Zastavit TFTP server
-
+ Run...Spustit...
-
+ Run a scriptSpustit skript
-
+ CancelZrušit
@@ -1213,759 +1214,759 @@
Změnit barvu
-
+ Cancel script executionZrušit spuštění skriptu
-
+ Start Recording ScriptZačít nahrávat skript
-
+ Start recording scriptZačít nahrávat skript
-
+ Stop Recording Script...Zastavit nahrávání skriptu...
-
+ Stop recording scriptZastavit nahrávání skriptu
-
+ Cancel Recording ScriptZrušit nahrávání skriptu
-
+ Cancel recording scriptZrušit nahrávání skriptu
-
+ Add BookmarkPřidat záložku
-
+ Add a bookmarkPřidat záložku
-
-
+
+ Remove BookmarkOdstranit záložku
-
+ Remove a bookmarkOdstranit záložku
-
-
+
+ Clean All BookmarkVymazat všechny záložky
-
+ Clean all bookmarkVymazat všechny záložky
-
+ Keymap ManagerManažer klávesových zkratek
-
+ Display keymap editorZobrazit editor klávesových zkratek
-
+ Create Public Key...Vytvořit veřejný klíč...
-
+ Create a public keyVytvořit veřejný klíč
-
+ Publickey ManagerManažer veřejných klíčů
-
+ Display publickey managerZobrazit manažer veřejných klíčů
-
+ Internal CommandInterní příkaz
-
+ Display Internal Command windowZobrazit okno interního příkazu
-
+ TabZáložka
-
+ Arrange sessions in tabsUspořádat relace do záložek
-
+ TileDlaždice
-
+ Arrange sessions in non-overlapping tilesUspořádat relace do nestínajících se dlaždic
-
+ CascadeKaskáda
-
+ Arrange sessions to overlap each otherUspořádat relace tak, aby se překrývaly
-
+ Simplified Chinese简体中文
-
+ Switch to Simplified Chinese切换到简体中文
-
+ Traditional Chinese繁體中文
-
+ Switch to Traditional Chinese切換到繁體中文
-
+ RussianРусский
-
+ Switch to RussianПереключиться на русский
-
+ Portuguese (Brazil)Português (Brasil)
-
+ Switch to Portuguese (Brazil)Mudar para Português (Brasil)
-
+ Korean한국어
-
+ Switch to Korean한국어로 전환
-
+ Japanese日本語
-
+ Switch to Japanese日本語に切り替える
-
+ Frenchfrançais
-
+ Switch to FrenchPasser au français
-
+ Spanishespañol
-
+ Switch to SpanishCambiar a español
-
+ English
-
+ Switch to English
-
+ GermanDeutsch
-
+ Switch to GermanWechseln Sie zu Deutsch
-
+ Czechčeština
-
+ Switch to CzechPřepnout do češtiny
-
+ Arabicعربي
-
+ Switch to Arabicالتبديل إلى العربية
-
+ LightLehký
-
+ Switch to light themePřepnout na světlé téma
-
+ DarkTmavý
-
+ Switch to dark themePřepnout na tmavé téma
-
+ Theme ColorBarva tématu
-
+ Set theme color, cancel to use defaultNastavit barvu tématu, zrušit pro použití výchozí
-
+ Display helpZobrazit nápovědu
-
-
+
+ Keyborad Shortcuts ReferenceReference klávesových zkratek
-
+ Display keyborad shortcuts referenceZobrazit referenci klávesových zkratek
-
+ Check UpdateZkontrolovat aktualizaci
-
+ Check for updatesZkontrolovat aktualizace
-
-
+
+ Privacy StatementProhlášení o ochraně osobních údajů
-
+ Display privacy statementZobrazit prohlášení o ochraně osobních údajů
-
-
+
+ AboutO programu
-
+ Display about dialogZobrazit dialog O programu
-
+ About QtO Qt
-
+ Display about Qt dialogZobrazit dialog O Qt
-
-
+
+ About PythonO Pythonu
-
+ Display about Python dialogZobrazit dialog O Pythonu
-
+ LaboratoryLaboratoř
-
-
+
+ SSH ScanningSSH skenování
-
+ Display SSH scanning dialogZobrazit dialog SSH skenování
-
+ Plugin InfoInformace o pluginu
-
+ Display plugin information dialogZobrazit dialog s informacemi o pluginu
-
+ Plugin metaData not found!Metadata pluginu nebyla nalezena!
-
+ Plugin api version not found!Verze API pluginu nebyla nalezena!
-
+ Plugin api version not match!Verze API pluginu neodpovídá!
-
+ Plugin menu not found!Menu pluginu nebylo nalezeno!
-
+ Plugin init failed!Spouštění pluginu se nezdařilo!
-
+ PrintScreen saved to %1Tisk obrazovky uložen do %1
-
+ Save ScreenshotUložit snímek obrazovky
-
+ Image Files (*.jpg)Obrázkové soubory (*.jpg)
-
-
+
+ Screenshot saved to %1Snímek obrazovky uložen do %1
-
+ Save Session ExportUložit export relace
-
+ Text Files (*.txt);;HTML Files (*.html)Textové soubory (*.txt);;HTML soubory (*.html)
-
+ Text Files (*.txt)Textové soubory (*.txt)
-
+ HTML Files (*.html)HTML soubory (*.html)
-
+ Session Export saved to %1Export relace uložen do %1
-
+ Session Export failed to save to %1Export relace se nepodařilo uložit do %1
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+ Broadcast session can't transfer file!Relace vysílání nemůže přenášet soubory!
-
+ Select Files to Send as ASCIIVybrat soubory k odeslání jako ASCII
-
-
+
+ Text Files (*.txt);;All Files (*)Textové soubory (*.txt);;Všechny soubory (*)
-
+ Save Received Data as ASCIIUložit přijatá data jako ASCII
-
+ Select Files to Send as BINARYVybrat soubory k odeslání jako BINÁRNÍ
-
-
-
-
-
-
+
+
+
+
+
+ All Files (*)Všechny soubory (*)
-
+ Select Files to Send using KermitVybrat soubory k odeslání pomocí Kermitu
-
+ Select Files to Send using XmodemVybrat soubory k odeslání pomocí Xmodemu
-
+ Save Received Files using XmodemUložit přijaté soubory pomocí Xmodemu
-
+ Select Files to Send using YmodemVybrat soubory k odeslání pomocí Ymodemu
-
+ Select Files to Send using ZmodemVybrat soubory k odeslání pomocí Zmodemu
-
+ Select a script fileVybrat soubor skriptu
-
+ Python Files (*.py);;All Files (*)Python soubory (*.py);;Všechny soubory (*)
-
+ Select a directoryVybrat adresář
-
+ Select a bookmarkVybrat záložku
-
+ Are you sure to clean all bookmark?Opravdu chcete vymazat všechny záložky?
-
+ PortPort
-
+ Select colorVybrat barvu
-
+ Video background is enabled, please enable animation in global options (more system resources) or change background image.Video pozadí je povoleno, povolte animaci v globálních možnostech (více systémových prostředků) nebo změňte obrázek pozadí.
-
+ Session information get failed.Načtení informací o relaci se nezdařilo.
-
+ Telnet - Telnet -
-
+ TelnetTelnet
-
+ Serial - Sériový port -
-
+ SerialSériový port
-
+ Raw - Raw -
-
+ RawRaw
-
+ NamePipe - NamePipe -
-
+ NamePipeNamePipe
-
-
+
+ Local ShellLokální shell
-
+ Local Shell - Lokální shell -
-
+ This software is a terminal emulator that provides a secure shell (SSH) connection, telnet connection, serial port connection, and other functions.Tento software je emulátor terminálu, který poskytuje zabezpečené připojení shellu (SSH), připojení telnetu, připojení sériového portu a další funkce.
-
+ This software does not collect any personal information, and does not send any information to the server.Tento software nezískává žádné osobní údaje a neodesílá žádné informace na server.
-
+ This software does not contain any malicious code, and does not contain any backdoors.Tento software neobsahuje žádný škodlivý kód a neobsahuje žádné zadní vrátka.
-
+ This software is open source software, you can view the source code on the github website.Tento software je open source software, zdrojový kód můžete zobrazit na webové stránce github.
-
+ This software is provided as is, without any warranty.Tento software je poskytován tak, jak je, bez jakékoli záruky.
-
+ If you have any questions or suggestions, please contact the author.Pokud máte nějaké dotazy nebo návrhy, kontaktujte autora.
-
+ VersionVerze
-
+ CommitCommit
-
+ DateDatum
-
-
+
+ AuthorAutor
-
+ Are you sure to disconnect "Opravdu chcete odpojit "
-
+ " session?" relaci?
-
+ WebsiteWebová stránka
-
+ Global Shortcuts:Globální klávesové zkratky:
-
+ show/hide menu barzobrazit/skrýt menu
-
+ connect to LocalShellpřipojit k lokálnímu shellu
-
+ clone current sessionklonovat aktuální relaci
-
+ switch ui to STD modepřepnout UI do STD režimu
-
+ switch ui to MINI modepřepnout UI do MINI režimu
-
+ switch to previous sessionpřepnout na předchozí relaci
-
+ switch to next sessionpřepnout na další relaci
-
+ switch to session [num]přepnout na relaci [číslo]
-
+ Go to line startJít na začátek řádku
-
+ Go to line endJít na konec řádku
-
+ There are sessions that have not yet been unlocked, please unlock them first.Existují relace, které ještě nebyly odemčeny, nejprve je odemkněte.
-
+ Are you sure to quit?Opravdu chcete skončit?
@@ -2707,8 +2708,8 @@
-
-
+
+ WarningVarování
@@ -2745,7 +2746,7 @@ Pokud potřebujete použít jiný shell, vytvořte prosím relaci prostřednictv
-
+ The Default Local Shell is not a valid file!Výchozí lokální shell není platný soubor!
@@ -2795,7 +2796,7 @@ Pokud potřebujete použít jiný shell, vytvořte prosím relaci prostřednictv
Přenos
-
+ The User Plugins Path is not a directory!Cesta k uživatelským pluginům není adresářem!
@@ -2869,93 +2870,36 @@ Pokud potřebujete použít jiný shell, vytvořte prosím relaci prostřednictv
Vnitřní příkaz
-
+ CopyKopírovat
-
+ PasteVložit
-
+ Select AllVybrat vše
-
+ FindNajít
-
+ Zoom InPřiblížit
-
+ Zoom OutOddálit
-
- Session
-
-
- Bell in session '%1'
- Zvonek v relaci '%1'
-
-
-
- TerminalDisplay
-
-
- Size: XXX x XXX
- Velikost: XXX x XXX
-
-
-
- Size: %1 x %2
- Velikost: %1 x %2
-
-
-
- Paste multiline text
- Vložit víceřádkový text
-
-
-
- Are you sure you want to paste this text?
- Opravdu chcete tento text vložit?
-
-
-
- <qt>Output has been <a href="http://en.wikipedia.org/wiki/Flow_control">suspended</a> by pressing Ctrl+S. Press <b>Ctrl+Q</b> to resume.</qt>
- <qt>Výstup byl <a href="http://en.wikipedia.org/wiki/Flow_control">přerušen</a> stisknutím Ctrl+S. Stiskněte <b>Ctrl+Q</b> pro obnovení.</qt>
-
-
-
- UrlFilter
-
-
- Follow link (ctrl + click)
- Následovat odkaz (ctrl + kliknutí)
-
-
-
- Follow path (ctrl + click)
- Následovat cestu (ctrl + kliknutí)
-
-
-
- Vt102Emulation
-
-
- No keyboard translator available. The information needed to convert key presses into characters to send to the terminal is missing.
- Není k dispozici žádný překladač klávesnice. Chybí informace potřebné k převodu stisknutí kláves na znaky k odeslání do terminálu.
-
-LockSessionWindow
@@ -3484,47 +3428,47 @@ Pokud potřebujete použít jiný shell, vytvořte prosím relaci prostřednictv
QObject
-
+ Un-named Color SchemeNepojmenovaný barevný schéma
-
+ Accessible Color SchemePřístupné barevné schéma
-
+ Open LinkOtevřít odkaz
-
+ Copy Link AddressKopírovat adresu odkazu
-
+ Send Email To...Odeslat e-mail na...
-
+ Copy Email AddressKopírovat e-mailovou adresu
-
+ Open PathOtevřít cestu
-
+ Open Containing FolderOtevřít obsahující složku
-
+ Copy PathKopírovat cestu
@@ -3587,12 +3531,12 @@ Pokud potřebujete použít jiný shell, vytvořte prosím relaci prostřednictv
QTermWidget
-
+ Color Scheme ErrorChyba barevného schématu
-
+ Cannot load color scheme: %1Nelze načíst barevné schéma: %1
@@ -3897,20 +3841,20 @@ Pokud potřebujete použít jiný shell, vytvořte prosím relaci prostřednictv
Najít:
-
-
+
+ Match caseRozlišovat velikost písmen
-
-
+
+ Regular expressionRegulární výraz
-
-
+
+ Highlight all matchesZvýraznit všechny shody
@@ -4252,25 +4196,25 @@ Pokud potřebujete použít jiný shell, vytvořte prosím relaci prostřednictv
SessionsWindow
-
+ Telnet ErrorChyba Telnetu
-
+ Telnet error:
%1.Chyba Telnetu:
%1.
-
-
+
+ Serial ErrorChyba sériového portu
-
+ Serial error:
%0
%1.
@@ -4279,133 +4223,133 @@ Pokud potřebujete použít jiný shell, vytvořte prosím relaci prostřednictv
%1.
-
+ Raw Socket ErrorChyba Raw Socketu
-
+ Raw Socket error:
%1.Chyba Raw Socketu:
%1.
-
+ Name Pipe ErrorChyba pojmenované roury
-
+ Name Pipe error:
%1.Chyba pojmenované roury:
%1.
-
-
+
+ SSH2 ErrorChyba SSH2
-
-
+
+ SSH2 error:
%1.Chyba SSH2:
%1.
-
-
+
+ Open URLOtevřít URL
-
-
+
+ Cannot open URL %1.Nelze otevřít URL %1.
-
+ Select Files to Send using ZmodemVybrat soubory k odeslání pomocí Zmodemu
-
+ All Files (*)Všechny soubory (*)
-
+ Start Local ShellSpustit lokální shell
-
+ Cannot start local shell:
%1.Nelze spustit lokální shell:
%1.
-
+ Serial port %1 has been removed.Sériový port %1 byl odstraněn.
-
+ Save log...Uložit log...
-
+ log files (*.log)logovací soubory (*.log)
-
+ Save logUložit log
-
-
-
+
+
+ Cannot write file %1:
%2.Nelze zapsat soubor %1:
%2.
-
+ Save Raw log...Uložit Raw log...
-
+ binary files (*.bin)binární soubory (*.bin)
-
+ Save Raw logUložit Raw log
-
+ Unlock SessionOdemknout relaci
-
+ Wrong password!Špatné heslo!
-
+ Receive ASCII FilePřijmout ASCII soubor
@@ -4662,6 +4606,34 @@ Pokud potřebujete použít jiný shell, vytvořte prosím relaci prostřednictv
Informace o přenosu
+
+ TerminalDisplay
+
+
+ Size: XXX x XXX
+ Velikost: XXX x XXX
+
+
+
+ Size: %1 x %2
+ Velikost: %1 x %2
+
+
+
+ Paste multiline text
+ Vložit víceřádkový text
+
+
+
+ Are you sure you want to paste this text?
+ Opravdu chcete tento text vložit?
+
+
+
+ <qt>Output has been <a href="http://en.wikipedia.org/wiki/Flow_control">suspended</a> by pressing Ctrl+S. Press <b>Ctrl+Q</b> to resume.</qt>
+ <qt>Výstup byl <a href="http://en.wikipedia.org/wiki/Flow_control">přerušen</a> stisknutím Ctrl+S. Stiskněte <b>Ctrl+Q</b> pro obnovení.</qt>
+
+UndoStack
@@ -4680,6 +4652,27 @@ Pokud potřebujete použít jiný shell, vytvořte prosím relaci prostřednictv
Přepsat %1 znaků
+
+ UrlFilter
+
+
+ Follow link (ctrl + click)
+ Následovat odkaz (ctrl + kliknutí)
+
+
+
+ Follow path (ctrl + click)
+ Následovat cestu (ctrl + kliknutí)
+
+
+
+ Vt102Emulation
+
+
+ No keyboard translator available. The information needed to convert key presses into characters to send to the terminal is missing.
+ Není k dispozici žádný překladač klávesnice. Chybí informace potřebné k převodu stisknutí kláves na znaky k odeslání do terminálu.
+
+keyMapManager
diff --git a/lang/quardCRT_de_DE.ts b/lang/quardCRT_de_DE.ts
index 3ca56e17..2ddfb9f8 100644
--- a/lang/quardCRT_de_DE.ts
+++ b/lang/quardCRT_de_DE.ts
@@ -13,7 +13,7 @@
CentralWidget
-
+ Tool BarWerkzeugleiste
@@ -26,21 +26,21 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ WarningWarnung
@@ -285,7 +285,7 @@
-
+ ReadyBereit
@@ -464,7 +464,7 @@
-
+ HelpHilfe
@@ -566,26 +566,27 @@
+ Enter host <Alt+R> to connectGeben Sie <Alt+R> ein, um eine Verbindung zum Host herzustellen
-
+ Disconnect AllAlle trennen
-
+ Disconnect all sessionsAlle Sitzungen trennen
-
+ Clone SessionSitzung klonen
-
+ Clone current session <Ctrl+Shift+T>Aktuelle Sitzung klonen <Ctrl+Shift+T>
@@ -595,564 +596,564 @@
Sitzung sperren
-
+ Log SessionSitzung protokollieren
-
+ Create a log file for current sessionErstellen Sie eine Protokolldatei für die aktuelle Sitzung
-
+ Raw Log SessionRaw-Log-Sitzung
-
+ Create a raw log file for current sessionErstellen Sie eine Raw-Protokolldatei für die aktuelle Sitzung
-
+ Hex ViewHex-Ansicht
-
+ Show/Hide Hex View for current sessionHex-Ansicht für aktuelle Sitzung anzeigen/ausblenden
-
+ ExitBeenden
-
+ Quit the applicationBeenden Sie die Anwendung
-
+ CopyKopieren
-
+ Copy the selected text to the clipboard <Command+C>Kopieren Sie den ausgewählten Text in die Zwischenablage <Command+C>
-
+ Copy the selected text to the clipboard <Ctrl+Ins>Kopieren Sie den ausgewählten Text in die Zwischenablage <Ctrl+Ins>
-
+ PasteEinfügen
-
+ Paste the clipboard text to the current session <Command+V>Fügen Sie den Zwischenablage-Text in die aktuelle Sitzung ein <Command+V>
-
+ Paste the clipboard text to the current session <Shift+Ins>Fügen Sie den Zwischenablage-Text in die aktuelle Sitzung ein <Shift+Ins>
-
+ Copy and PasteKopieren und Einfügen
-
+ Copy the selected text to the clipboard and paste to the current sessionKopieren Sie den ausgewählten Text in die Zwischenablage und fügen Sie ihn in die aktuelle Sitzung ein
-
+ Select AllAlles auswählen
-
+ Select all text in the current session <Ctrl+Shift+A>Wählen Sie den gesamten Text in der aktuellen Sitzung aus <Ctrl+Shift+A>
-
+ Find...Suchen...
-
+ Find text in the current session <Ctrl+F>Suchen Sie Text in der aktuellen Sitzung <Ctrl+F>
-
+ Print ScreenBildschirm drucken
-
+ Print current screenAktuellen Bildschirm drucken
-
+ Screen ShotBildschirmfoto
-
+ Screen shot current screen <Alt+P>Aktuellen Bildschirmfoto <Alt+P>
-
+ Session ExportSitzung exportieren
-
+ Export current session to a file <Alt+O>Aktuelle Sitzung in eine Datei exportieren <Alt+O>
-
+ Clear ScrollbackScrollback löschen
-
+ Clear the contents of the scrollback rowsLöschen Sie den Inhalt der Scrollback-Reihen aus
-
+ Clear ScreenBildschirm löschen
-
+ Clear the contents of the current screenLöschen Sie den Inhalt des aktuellen Bildschirms
-
+ Clear Screen and ScrollbackBildschirm und Scrollback löschen
-
+ Clear the contents of the screen and scrollbackLöschen Sie den Inhalt des Bildschirms und des Scrollback
-
+ ResetZurücksetzen
-
+ Reset terminal emulatorTerminal-Emulator zurücksetzen
-
+ Zoom InVergrößern
-
+ Zoom In <Ctrl+"=">Vergrößern <Ctrl+"=">
-
+ Zoom OutVerkleinern
-
+ Zoom Out <Ctrl+"-">Verkleinern <Ctrl+"-">
-
-
+
+ Zoom ResetZoom zurücksetzen
-
+ LayoutLayout
-
+ Single LayoutEinzelnes Layout
-
+ Single layoutEinzelnes Layout
-
+ Two Columns LayoutZwei Spalten Layout
-
+ Two columns layoutZwei Spalten Layout
-
+ Three Columns LayoutDrei Spalten Layout
-
+ Three columns layoutDrei Spalten Layout
-
+ Two Rows LayoutZwei Reihen Layout
-
+ Two rows layoutZwei Reihen Layout
-
+ Three Rows LayoutDrei Reihen Layout
-
+ Three rows layoutDrei Reihen Layout
-
+ Grid LayoutRasterlayout
-
+ Grid layoutRasterlayout
-
+ Two Rows Right LayoutZwei Reihen rechts Layout
-
+ Two rows right layoutZwei Reihen rechts Layout
-
+ Two Columns Bottom LayoutZwei Spalten unten Layout
-
+ Two columns bottom layoutZwei Spalten unten Layout
-
+ Flip LayoutLayout umdrehen
-
+ Flip layoutLayout umdrehen
-
+ Menu BarMenüleiste
-
+ Show/Hide Menu Bar <Alt+U>Menüleiste anzeigen/ausblenden <Alt+U>
-
+ Show/Hide Tool BarWerkzeugleiste anzeigen/ausblenden
-
+ Status BarStatusleiste
-
+ Show/Hide Status BarStatusleiste anzeigen/ausblenden
-
+ Command WindowBefehlsfenster
-
+ Show/Hide Command WindowBefehlsfenster anzeigen/ausblenden
-
+ Connect BarVerbindungsleiste
-
+ Show/Hide Connect BarVerbindungsleiste anzeigen/ausblenden
-
+ Side WindowSeitenfenster
-
+ Show/Hide Side WindowSeitenfenster anzeigen/ausblenden
-
+ Windows TransparencyWindows-Transparenz
-
+ Enable/Disable alpha transparencyAlpha-Transparenz aktivieren/deaktivieren
-
+ Vertical Scroll BarVertikale Bildlaufleiste
-
+ Show/Hide Vertical Scroll BarVertikale Bildlaufleiste anzeigen/ausblenden
-
+ Allways On TopImmer im Vordergrund
-
+ Show window always on topFenster immer im Vordergrund anzeigen
-
+ Full ScreenVollbildmodus
-
+ Toggle between full screen and normal mode <Alt+Enter>Wechseln Sie zwischen Vollbild- und Normalmodus <Alt+Enter>
-
+ Session Options...Sitzungsoptionen...
-
+ Configure session optionsSitzungsoptionen konfigurieren
-
+ Global Options...Globale Optionen...
-
+ Configure global optionsGlobale Optionen konfigurieren
-
+ Real-time Save OptionsOptionen in Echtzeit speichern
-
+ Real-time save session options and global optionsSitzungsoptionen und globale Optionen in Echtzeit speichern
-
+ Save Settings NowEinstellungen jetzt speichern
-
+ Save options configuration nowSpeichern Sie die Optionenkonfiguration jetzt
-
+ Send ASCII...ASCII senden...
-
+ Send ASCII fileASCII-Datei senden
-
+ Receive ASCII...ASCII empfangen...
-
+ Receive ASCII fileASCII-Datei empfangen
-
+ Send Binary...Binär senden...
-
+ Send Binary fileBinärdatei senden
-
+ Send Kermit...Kermit senden...
-
+ Send a file using KermitSenden Sie eine Datei mit Kermit
-
+ Receive Kermit...Kermit empfangen...
-
+ Receive a file using KermitEmpfangen Sie eine Datei mit Kermit
-
+ Send Xmodem...Xmodem senden...
-
+ Send a file using XmodemSenden Sie eine Datei mit Xmodem
-
+ Receive Xmodem...Xmodem empfangen...
-
+ Receive a file using XmodemEmpfangen Sie eine Datei mit Xmodem
-
+ Send Ymodem...Ymodem senden...
-
+ Send a file using YmodemSenden Sie eine Datei mit Ymodem
-
+ Receive Ymodem...Ymodem empfangen...
-
+ Receive a file using YmodemEmpfangen Sie eine Datei mit Ymodem
-
+ Zmodem Upload List...Zmodem-Upload-Liste...
-
+ Display Zmodem file upload listZmodem-Datei-Upload-Liste anzeigen
-
+ Start Zmodem UploadZmodem-Upload starten
-
+ Start Zmodem file uploadZmodem-Datei-Upload starten
-
+ Start TFTP ServerTFTP-Server starten
-
+ Start/Stop the TFTP serverStarten/Stoppen Sie den TFTP-Server
-
+ Run...Ausführen...
-
+ Run a scriptFühren Sie ein Skript aus
-
+ CancelAbbrechen
@@ -1213,759 +1214,759 @@
Farbe ändern
-
+ Cancel script executionSkriptausführung abbrechen
-
+ Start Recording ScriptSkriptaufzeichnung starten
-
+ Start recording scriptStarten Sie die Skriptaufzeichnung
-
+ Stop Recording Script...Skriptaufzeichnung beenden...
-
+ Stop recording scriptBeenden Sie die Skriptaufzeichnung
-
+ Cancel Recording ScriptSkriptaufzeichnung abbrechen
-
+ Cancel recording scriptSkriptaufzeichnung abbrechen
-
+ Add BookmarkLesezeichen hinzufügen
-
+ Add a bookmarkFügen Sie ein Lesezeichen hinzu
-
-
+
+ Remove BookmarkLesezeichen entfernen
-
+ Remove a bookmarkEntfernen Sie ein Lesezeichen
-
-
+
+ Clean All BookmarkAlle Lesezeichen löschen
-
+ Clean all bookmarkLöschen Sie alle Lesezeichen
-
+ Keymap ManagerTastaturbelegungs-Manager
-
+ Display keymap editorTastaturbelegungs-Editor anzeigen
-
+ Create Public Key...Öffentlichen Schlüssel erstellen...
-
+ Create a public keyErstellen Sie einen öffentlichen Schlüssel
-
+ Publickey ManagerÖffentlicher Schlüssel-Manager
-
+ Display publickey managerÖffentlichen Schlüssel-Manager anzeigen
-
+ Internal CommandInterner Befehl
-
+ Display Internal Command windowInterner Befehlsfenster anzeigen
-
+ TabTab
-
+ Arrange sessions in tabsOrdnen Sie Sitzungen in Tabs an
-
+ TileFliese
-
+ Arrange sessions in non-overlapping tilesOrdnen Sie Sitzungen in nicht überlappenden Kacheln an
-
+ CascadeKaskade
-
+ Arrange sessions to overlap each otherOrdnen Sie Sitzungen so an, dass sie sich überlappen
-
+ Simplified Chinese简体中文
-
+ Switch to Simplified Chinese切换到简体中文
-
+ Traditional Chinese繁體中文
-
+ Switch to Traditional Chinese切換到繁體中文
-
+ RussianРусский
-
+ Switch to RussianПереключиться на русский
-
+ Portuguese (Brazil)Português (Brasil)
-
+ Switch to Portuguese (Brazil)Mudar para Português (Brasil)
-
+ Korean한국어
-
+ Switch to Korean한국어로 전환
-
+ Japanese日本語
-
+ Switch to Japanese日本語に切り替える
-
+ Frenchfrançais
-
+ Switch to FrenchPasser au français
-
+ Spanishespañol
-
+ Switch to SpanishCambiar a español
-
+ English
-
+ Switch to English
-
+ GermanDeutsch
-
+ Switch to GermanWechseln Sie zu Deutsch
-
+ Czechčeština
-
+ Switch to CzechPřepnout do češtiny
-
+ Arabicعربي
-
+ Switch to Arabicالتبديل إلى العربية
-
+ LightLeicht
-
+ Switch to light themeWechseln Sie zum hellen Thema
-
+ DarkDunkel
-
+ Switch to dark themeWechseln Sie zum dunklen Thema
-
+ Theme ColorThemenfarbe
-
+ Set theme color, cancel to use defaultThemenfarbe festlegen, Abbrechen, um die Standardeinstellung zu verwenden
-
+ Display helpHilfe anzeigen
-
-
+
+ Keyborad Shortcuts ReferenceTastaturkürzel-Referenz
-
+ Display keyborad shortcuts referenceTastaturkürzel-Referenz anzeigen
-
+ Check UpdateUpdate überprüfen
-
+ Check for updatesSuche nach Updates
-
-
+
+ Privacy StatementDatenschutzerklärung
-
+ Display privacy statementDatenschutzerklärung anzeigen
-
-
+
+ AboutÜber
-
+ Display about dialogÜber Dialog anzeigen
-
+ About QtÜber Qt
-
+ Display about Qt dialogÜber Qt-Dialog anzeigen
-
-
+
+ About PythonÜber Python
-
+ Display about Python dialogÜber Python-Dialog anzeigen
-
+ LaboratoryLabor
-
-
+
+ SSH ScanningSSH-Scannen
-
+ Display SSH scanning dialogSSH-Scannen-Dialog anzeigen
-
+ Plugin InfoPlugin-Info
-
+ Display plugin information dialogPlugin-Informationen anzeigen
-
+ Plugin metaData not found!Plugin-Metadaten nicht gefunden!
-
+ Plugin api version not found!Plugin-API-Version nicht gefunden!
-
+ Plugin api version not match!Plugin-API-Version stimmt nicht überein!
-
+ Plugin menu not found!Plugin-Menü nicht gefunden!
-
+ Plugin init failed!Plugin-Initialisierung fehlgeschlagen!
-
+ PrintScreen saved to %1PrintScreen gespeichert unter %1
-
+ Save ScreenshotBildschirmfoto speichern
-
+ Image Files (*.jpg)Bilddateien (*.jpg)
-
-
+
+ Screenshot saved to %1Bildschirmfoto gespeichert unter %1
-
+ Save Session ExportSitzungsexport speichern
-
+ Text Files (*.txt);;HTML Files (*.html)Textdateien (*.txt);;HTML-Dateien (*.html)
-
+ Text Files (*.txt)Textdateien (*.txt)
-
+ HTML Files (*.html)HTML-Dateien (*.html)
-
+ Session Export saved to %1Sitzungsexport gespeichert unter %1
-
+ Session Export failed to save to %1Sitzungsexport konnte nicht unter %1 gespeichert werden
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+ Broadcast session can't transfer file!Die Broadcast-Sitzung kann keine Datei übertragen!
-
+ Select Files to Send as ASCIIWählen Sie Dateien aus, die als ASCII gesendet werden sollen
-
-
+
+ Text Files (*.txt);;All Files (*)Textdateien (*.txt);;Alle Dateien (*)
-
+ Save Received Data as ASCIIEmpfangene Daten als ASCII speichern
-
+ Select Files to Send as BINARYWählen Sie Dateien aus, die als BINÄR gesendet werden sollen
-
-
-
-
-
-
+
+
+
+
+
+ All Files (*)Alle Dateien (*)
-
+ Select Files to Send using KermitWählen Sie Dateien aus, die mit Kermit gesendet werden sollen
-
+ Select Files to Send using XmodemWählen Sie Dateien aus, die mit Xmodem gesendet werden sollen
-
+ Save Received Files using XmodemEmpfangene Dateien mit Xmodem speichern
-
+ Select Files to Send using YmodemWählen Sie Dateien aus, die mit Ymodem gesendet werden sollen
-
+ Select Files to Send using ZmodemWählen Sie Dateien aus, die mit Zmodem gesendet werden sollen
-
+ Select a script fileWählen Sie eine Skriptdatei aus
-
+ Python Files (*.py);;All Files (*)Python-Dateien (*.py);;Alle Dateien (*)
-
+ Select a directoryWählen Sie ein Verzeichnis aus
-
+ Select a bookmarkWählen Sie ein Lesezeichen aus
-
+ Are you sure to clean all bookmark?Möchten Sie wirklich alle Lesezeichen löschen?
-
+ PortPort
-
+ Select colorFarbe auswählen
-
+ Video background is enabled, please enable animation in global options (more system resources) or change background image.Das Videohintergrund ist aktiviert. Aktivieren Sie die Animation in den globalen Optionen (mehr Systemressourcen) oder ändern Sie das Hintergrundbild.
-
+ Session information get failed.Sitzungsinformationen konnten nicht abgerufen werden.
-
+ Telnet - Telnet -
-
+ TelnetTelnet
-
+ Serial - Seriell -
-
+ SerialSeriell
-
+ Raw - Raw -
-
+ RawRaw
-
+ NamePipe - NamePipe -
-
+ NamePipeNamePipe
-
-
+
+ Local ShellLokale Shell
-
+ Local Shell - Lokale Shell -
-
+ This software is a terminal emulator that provides a secure shell (SSH) connection, telnet connection, serial port connection, and other functions.Diese Software ist ein Terminal-Emulator, der eine sichere Shell (SSH)-Verbindung, eine Telnet-Verbindung, eine serielle Port-Verbindung und andere Funktionen bereitstellt.
-
+ This software does not collect any personal information, and does not send any information to the server.Diese Software sammelt keine persönlichen Informationen und sendet keine Informationen an den Server.
-
+ This software does not contain any malicious code, and does not contain any backdoors.Diese Software enthält keinen bösartigen Code und enthält keine Hintertüren.
-
+ This software is open source software, you can view the source code on the github website.Diese Software ist Open-Source-Software. Sie können den Quellcode auf der GitHub-Website einsehen.
-
+ This software is provided as is, without any warranty.Diese Software wird wie sie ist, ohne jegliche Garantie, bereitgestellt.
-
+ If you have any questions or suggestions, please contact the author.Wenn Sie Fragen oder Anregungen haben, wenden Sie sich bitte an den Autor.
-
+ VersionVersion
-
+ CommitCommit
-
+ DateDatum
-
-
+
+ AuthorAutor
-
+ Are you sure to disconnect "Möchten Sie wirklich die Verbindung trennen "
-
+ " session?" Sitzung?
-
+ WebsiteWebseite
-
+ Global Shortcuts:Globale Tastenkombinationen:
-
+ show/hide menu barMenüleiste anzeigen/ausblenden
-
+ connect to LocalShellMit LocalShell verbinden
-
+ clone current sessionAktuelle Sitzung klonen
-
+ switch ui to STD modeUI in den STD-Modus umschalten
-
+ switch ui to MINI modeUI in den MINI-Modus umschalten
-
+ switch to previous sessionZur vorherigen Sitzung wechseln
-
+ switch to next sessionZur nächsten Sitzung wechseln
-
+ switch to session [num]Zur Sitzung [Nummer] wechseln
-
+ Go to line startZur Zeilenanfang gehen
-
+ Go to line endZum Zeilenende gehen
-
+ There are sessions that have not yet been unlocked, please unlock them first.Es gibt Sitzungen, die noch nicht entsperrt wurden. Bitte entsperren Sie sie zuerst.
-
+ Are you sure to quit?Möchten Sie wirklich beenden?
@@ -2707,8 +2708,8 @@
-
-
+
+ WarningWarnung
@@ -2745,7 +2746,7 @@ Wenn Sie eine andere Shell verwenden müssen, erstellen Sie bitte eine Sitzung
-
+ The Default Local Shell is not a valid file!Die Standard-Local-Shell ist keine gültige Datei!
@@ -2795,7 +2796,7 @@ Wenn Sie eine andere Shell verwenden müssen, erstellen Sie bitte eine Sitzung
Übertragen
-
+ The User Plugins Path is not a directory!Der Benutzer-Plugins-Pfad ist kein Verzeichnis!
@@ -2869,93 +2870,36 @@ Wenn Sie eine andere Shell verwenden müssen, erstellen Sie bitte eine Sitzung
Interner Befehl
-
+ CopyKopieren
-
+ PasteEinfügen
-
+ Select AllAlles auswählen
-
+ FindSuchen
-
+ Zoom InVergrößern
-
+ Zoom OutVerkleinern
-
- Session
-
-
- Bell in session '%1'
- Signalton in Sitzung '%1'
-
-
-
- TerminalDisplay
-
-
- Size: XXX x XXX
- Größe: XXX x XXX
-
-
-
- Size: %1 x %2
- Größe: %1 x %2
-
-
-
- Paste multiline text
- Mehrzeiligen Text einfügen
-
-
-
- Are you sure you want to paste this text?
- Möchten Sie diesen Text wirklich einfügen?
-
-
-
- <qt>Output has been <a href="http://en.wikipedia.org/wiki/Flow_control">suspended</a> by pressing Ctrl+S. Press <b>Ctrl+Q</b> to resume.</qt>
- <qt>Die Ausgabe wurde durch Drücken von Strg+S <a href="http://en.wikipedia.org/wiki/Flow_control">angehalten</a>. Drücken Sie <b>Strg+Q</b>, um fortzufahren.</qt>
-
-
-
- UrlFilter
-
-
- Follow link (ctrl + click)
- Link folgen (Strg + Klick)
-
-
-
- Follow path (ctrl + click)
- Pfad folgen (Strg + Klick)
-
-
-
- Vt102Emulation
-
-
- No keyboard translator available. The information needed to convert key presses into characters to send to the terminal is missing.
- Kein Tastaturübersetzer verfügbar. Die Informationen, die zum Konvertieren von Tastendrücken in Zeichen, die an das Terminal gesendet werden sollen, fehlen.
-
-LockSessionWindow
@@ -3484,47 +3428,47 @@ Wenn Sie eine andere Shell verwenden müssen, erstellen Sie bitte eine Sitzung
QObject
-
+ Un-named Color SchemeUnbenanntes Farbschema
-
+ Accessible Color SchemeZugängliches Farbschema
-
+ Open LinkLink öffnen
-
+ Copy Link AddressLink-Adresse kopieren
-
+ Send Email To...E-Mail senden an...
-
+ Copy Email AddressE-Mail-Adresse kopieren
-
+ Open PathPfad öffnen
-
+ Open Containing FolderÜbergeordneten Ordner öffnen
-
+ Copy PathPfad kopieren
@@ -3587,12 +3531,12 @@ Wenn Sie eine andere Shell verwenden müssen, erstellen Sie bitte eine Sitzung
QTermWidget
-
+ Color Scheme ErrorFarbschema-Fehler
-
+ Cannot load color scheme: %1Farbschema kann nicht geladen werden: %1
@@ -3897,20 +3841,20 @@ Wenn Sie eine andere Shell verwenden müssen, erstellen Sie bitte eine Sitzung
Suchen:
-
-
+
+ Match caseGroß-/Kleinschreibung beachten
-
-
+
+ Regular expressionRegulärer Ausdruck
-
-
+
+ Highlight all matchesAlle Treffer hervorheben
@@ -4252,25 +4196,25 @@ Wenn Sie eine andere Shell verwenden müssen, erstellen Sie bitte eine Sitzung
SessionsWindow
-
+ Telnet ErrorTelnet-Fehler
-
+ Telnet error:
%1.Telnet-Fehler:
%1.
-
-
+
+ Serial ErrorSerieller Fehler
-
+ Serial error:
%0
%1.
@@ -4279,133 +4223,133 @@ Wenn Sie eine andere Shell verwenden müssen, erstellen Sie bitte eine Sitzung
%1.
-
+ Raw Socket ErrorRaw-Socket-Fehler
-
+ Raw Socket error:
%1.Raw-Socket-Fehler:
%1.
-
+ Name Pipe ErrorName-Pipe-Fehler
-
+ Name Pipe error:
%1.Name-Pipe-Fehler:
%1.
-
-
+
+ SSH2 ErrorSSH2-Fehler
-
-
+
+ SSH2 error:
%1.SSH2-Fehler:
%1.
-
-
+
+ Open URLURL öffnen
-
-
+
+ Cannot open URL %1.URL %1 kann nicht geöffnet werden.
-
+ Select Files to Send using ZmodemWählen Sie Dateien aus, die mit Zmodem gesendet werden sollen
-
+ All Files (*)Alle Dateien (*)
-
+ Start Local ShellLokale Shell starten
-
+ Cannot start local shell:
%1.Lokale Shell kann nicht gestartet werden:
%1.
-
+ Serial port %1 has been removed.Serieller Port %1 wurde entfernt.
-
+ Save log...Log speichern...
-
+ log files (*.log)Log-Dateien (*.log)
-
+ Save logLog speichern
-
-
-
+
+
+ Cannot write file %1:
%2.Datei %1 kann nicht geschrieben werden:
%2.
-
+ Save Raw log...Raw-Log speichern...
-
+ binary files (*.bin)Binärdateien (*.bin)
-
+ Save Raw logRaw-Log speichern
-
+ Unlock SessionSitzung entsperren
-
+ Wrong password!Falsches Passwort!
-
+ Receive ASCII FileASCII-Datei empfangen
@@ -4662,6 +4606,34 @@ Wenn Sie eine andere Shell verwenden müssen, erstellen Sie bitte eine Sitzung
Übertragungs-Informationen
+
+ TerminalDisplay
+
+
+ Size: XXX x XXX
+ Größe: XXX x XXX
+
+
+
+ Size: %1 x %2
+ Größe: %1 x %2
+
+
+
+ Paste multiline text
+ Mehrzeiligen Text einfügen
+
+
+
+ Are you sure you want to paste this text?
+ Möchten Sie diesen Text wirklich einfügen?
+
+
+
+ <qt>Output has been <a href="http://en.wikipedia.org/wiki/Flow_control">suspended</a> by pressing Ctrl+S. Press <b>Ctrl+Q</b> to resume.</qt>
+ <qt>Die Ausgabe wurde durch Drücken von Strg+S <a href="http://en.wikipedia.org/wiki/Flow_control">angehalten</a>. Drücken Sie <b>Strg+Q</b>, um fortzufahren.</qt>
+
+UndoStack
@@ -4680,6 +4652,27 @@ Wenn Sie eine andere Shell verwenden müssen, erstellen Sie bitte eine Sitzung
%1 Zeichen überschreiben
+
+ UrlFilter
+
+
+ Follow link (ctrl + click)
+ Link folgen (Strg + Klick)
+
+
+
+ Follow path (ctrl + click)
+ Pfad folgen (Strg + Klick)
+
+
+
+ Vt102Emulation
+
+
+ No keyboard translator available. The information needed to convert key presses into characters to send to the terminal is missing.
+ Kein Tastaturübersetzer verfügbar. Die Informationen, die zum Konvertieren von Tastendrücken in Zeichen, die an das Terminal gesendet werden sollen, fehlen.
+
+keyMapManager
diff --git a/lang/quardCRT_en_US.ts b/lang/quardCRT_en_US.ts
index bf8f154c..a02cc2ec 100644
--- a/lang/quardCRT_en_US.ts
+++ b/lang/quardCRT_en_US.ts
@@ -13,7 +13,7 @@
CentralWidget
-
+ Tool Bar
@@ -26,21 +26,21 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Warning
@@ -285,7 +285,7 @@
-
+ Ready
@@ -464,7 +464,7 @@
-
+ Help
@@ -566,26 +566,27 @@
+ Enter host <Alt+R> to connect
-
+ Disconnect All
-
+ Disconnect all sessions
-
+ Clone Session
-
+ Clone current session <Ctrl+Shift+T>
@@ -595,564 +596,564 @@
-
+ Log Session
-
+ Create a log file for current session
-
+ Raw Log Session
-
+ Create a raw log file for current session
-
+ Hex View
-
+ Show/Hide Hex View for current session
-
+ Exit
-
+ Quit the application
-
+ Copy
-
+ Copy the selected text to the clipboard <Command+C>
-
+ Copy the selected text to the clipboard <Ctrl+Ins>
-
+ Paste
-
+ Paste the clipboard text to the current session <Command+V>
-
+ Paste the clipboard text to the current session <Shift+Ins>
-
+ Copy and Paste
-
+ Copy the selected text to the clipboard and paste to the current session
-
+ Select All
-
+ Select all text in the current session <Ctrl+Shift+A>
-
+ Find...
-
+ Find text in the current session <Ctrl+F>
-
+ Print Screen
-
+ Print current screen
-
+ Screen Shot
-
+ Screen shot current screen <Alt+P>
-
+ Session Export
-
+ Export current session to a file <Alt+O>
-
+ Clear Scrollback
-
+ Clear the contents of the scrollback rows
-
+ Clear Screen
-
+ Clear the contents of the current screen
-
+ Clear Screen and Scrollback
-
+ Clear the contents of the screen and scrollback
-
+ Reset
-
+ Reset terminal emulator
-
+ Zoom In
-
+ Zoom In <Ctrl+"=">
-
+ Zoom Out
-
+ Zoom Out <Ctrl+"-">
-
-
+
+ Zoom Reset
-
+ Layout
-
+ Single Layout
-
+ Single layout
-
+ Two Columns Layout
-
+ Two columns layout
-
+ Three Columns Layout
-
+ Three columns layout
-
+ Two Rows Layout
-
+ Two rows layout
-
+ Three Rows Layout
-
+ Three rows layout
-
+ Grid Layout
-
+ Grid layout
-
+ Two Rows Right Layout
-
+ Two rows right layout
-
+ Two Columns Bottom Layout
-
+ Two columns bottom layout
-
+ Flip Layout
-
+ Flip layout
-
+ Menu Bar
-
+ Show/Hide Menu Bar <Alt+U>
-
+ Show/Hide Tool Bar
-
+ Status Bar
-
+ Show/Hide Status Bar
-
+ Command Window
-
+ Show/Hide Command Window
-
+ Connect Bar
-
+ Show/Hide Connect Bar
-
+ Side Window
-
+ Show/Hide Side Window
-
+ Windows Transparency
-
+ Enable/Disable alpha transparency
-
+ Vertical Scroll Bar
-
+ Show/Hide Vertical Scroll Bar
-
+ Allways On Top
-
+ Show window always on top
-
+ Full Screen
-
+ Toggle between full screen and normal mode <Alt+Enter>
-
+ Session Options...
-
+ Configure session options
-
+ Global Options...
-
+ Configure global options
-
+ Real-time Save Options
-
+ Real-time save session options and global options
-
+ Save Settings Now
-
+ Save options configuration now
-
+ Send ASCII...
-
+ Send ASCII file
-
+ Receive ASCII...
-
+ Receive ASCII file
-
+ Send Binary...
-
+ Send Binary file
-
+ Send Kermit...
-
+ Send a file using Kermit
-
+ Receive Kermit...
-
+ Receive a file using Kermit
-
+ Send Xmodem...
-
+ Send a file using Xmodem
-
+ Receive Xmodem...
-
+ Receive a file using Xmodem
-
+ Send Ymodem...
-
+ Send a file using Ymodem
-
+ Receive Ymodem...
-
+ Receive a file using Ymodem
-
+ Zmodem Upload List...
-
+ Display Zmodem file upload list
-
+ Start Zmodem Upload
-
+ Start Zmodem file upload
-
+ Start TFTP Server
-
+ Start/Stop the TFTP server
-
+ Run...
-
+ Run a script
-
+ Cancel
@@ -1213,759 +1214,759 @@
-
+ Cancel script execution
-
+ Start Recording Script
-
+ Start recording script
-
+ Stop Recording Script...
-
+ Stop recording script
-
+ Cancel Recording Script
-
+ Cancel recording script
-
+ Add Bookmark
-
+ Add a bookmark
-
-
+
+ Remove Bookmark
-
+ Remove a bookmark
-
-
+
+ Clean All Bookmark
-
+ Clean all bookmark
-
+ Keymap Manager
-
+ Display keymap editor
-
+ Create Public Key...
-
+ Create a public key
-
+ Publickey Manager
-
+ Display publickey manager
-
+ Internal Command
-
+ Display Internal Command window
-
+ Portuguese (Brazil)Português (Brasil)
-
+ Switch to Portuguese (Brazil)Mudar para Português (Brasil)
-
+ GermanDeutsch
-
+ Switch to GermanWechseln Sie zu Deutsch
-
+ Czechčeština
-
+ Switch to CzechPřepnout do češtiny
-
+ Arabicعربي
-
+ Switch to Arabicالتبديل إلى العربية
-
+ Theme Color
-
+ Set theme color, cancel to use default
-
-
+
+ Keyborad Shortcuts Reference
-
+ Display keyborad shortcuts reference
-
-
+
+ Privacy Statement
-
+ Display privacy statement
-
-
+
+ About Python
-
+ Display about Python dialog
-
+ Laboratory
-
-
+
+ SSH Scanning
-
+ Display SSH scanning dialog
-
+ Plugin metaData not found!
-
+ Plugin api version not found!
-
+ Plugin api version not match!
-
+ Plugin menu not found!
-
+ Plugin init failed!
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+ Broadcast session can't transfer file!
-
+ Select Files to Send as ASCII
-
-
+
+ Text Files (*.txt);;All Files (*)
-
+ Save Received Data as ASCII
-
+ Select Files to Send as BINARY
-
-
-
-
-
-
+
+
+
+
+
+ All Files (*)
-
+ Select Files to Send using Kermit
-
+ Select Files to Send using Xmodem
-
+ Save Received Files using Xmodem
-
+ Select Files to Send using Ymodem
-
+ Select Files to Send using Zmodem
-
+ Select a script file
-
+ Python Files (*.py);;All Files (*)
-
+ Select color
-
+ Are you sure to disconnect "
-
+ " session?
-
+ This software is a terminal emulator that provides a secure shell (SSH) connection, telnet connection, serial port connection, and other functions.
-
+ This software does not collect any personal information, and does not send any information to the server.
-
+ This software does not contain any malicious code, and does not contain any backdoors.
-
+ This software is open source software, you can view the source code on the github website.
-
+ This software is provided as is, without any warranty.
-
+ If you have any questions or suggestions, please contact the author.
-
+ Version
-
+ Commit
-
+ Date
-
-
+
+ Author
-
+ Website
-
+ Tab
-
+ Arrange sessions in tabs
-
+ Tile
-
+ Arrange sessions in non-overlapping tiles
-
+ Cascade
-
+ Arrange sessions to overlap each other
-
+ Simplified Chinese简体中文
-
+ Switch to Simplified Chinese切换到简体中文
-
+ Traditional Chinese繁體中文
-
+ Switch to Traditional Chinese切換到繁體中文
-
+ RussianРусский
-
+ Switch to RussianПереключиться на русский
-
+ Korean한국어
-
+ Switch to Korean한국어로 전환
-
+ Japanese日本語
-
+ Switch to Japanese日本語に切り替える
-
+ Frenchfrançais
-
+ Switch to FrenchPasser au français
-
+ Spanishespañol
-
+ Switch to SpanishCambiar a español
-
+ English
-
+ Switch to English
-
+ Light
-
+ Switch to light theme
-
+ Dark
-
+ Switch to dark theme
-
+ Display help
-
+ Check Update
-
+ Check for updates
-
-
+
+ About
-
+ Display about dialog
-
+ About Qt
-
+ Display about Qt dialog
-
+ Plugin Info
-
+ Display plugin information dialog
-
+ PrintScreen saved to %1
-
+ Save Screenshot
-
+ Image Files (*.jpg)
-
-
+
+ Screenshot saved to %1
-
+ Save Session Export
-
+ Text Files (*.txt);;HTML Files (*.html)
-
+ Text Files (*.txt)
-
+ HTML Files (*.html)
-
+ Session Export saved to %1
-
+ Session Export failed to save to %1
-
+ Select a directory
-
+ Select a bookmark
-
+ Are you sure to clean all bookmark?
-
+ Port
-
+ Video background is enabled, please enable animation in global options (more system resources) or change background image.
-
+ Session information get failed.
-
+ Telnet -
-
+ Telnet
-
+ Serial -
-
+ Serial
-
+ Raw -
-
+ Raw
-
+ NamePipe -
-
+ NamePipe
-
-
+
+ Local Shell
-
+ Local Shell -
-
+ Global Shortcuts:
-
+ show/hide menu bar
-
+ connect to LocalShell
-
+ clone current session
-
+ switch ui to STD mode
-
+ switch ui to MINI mode
-
+ switch to previous session
-
+ switch to next session
-
+ switch to session [num]
-
+ Go to line start
-
+ Go to line end
-
+ There are sessions that have not yet been unlocked, please unlock them first.
-
+ Are you sure to quit?
@@ -2696,8 +2697,8 @@
-
-
+
+ Warning
@@ -2731,7 +2732,7 @@ If you need to use another shell, please create a session through [quick-connect
-
+ The Default Local Shell is not a valid file!
@@ -2781,7 +2782,7 @@ If you need to use another shell, please create a session through [quick-connect
-
+ The User Plugins Path is not a directory!
@@ -2865,93 +2866,36 @@ If you need to use another shell, please create a session through [quick-connect
-
+ Copy
-
+ Paste
-
+ Select All
-
+ Find
-
+ Zoom In
-
+ Zoom Out
-
- Session
-
-
- Bell in session '%1'
-
-
-
-
- TerminalDisplay
-
-
- Size: XXX x XXX
-
-
-
-
- Size: %1 x %2
-
-
-
-
- Paste multiline text
-
-
-
-
- Are you sure you want to paste this text?
-
-
-
-
- <qt>Output has been <a href="http://en.wikipedia.org/wiki/Flow_control">suspended</a> by pressing Ctrl+S. Press <b>Ctrl+Q</b> to resume.</qt>
-
-
-
-
- UrlFilter
-
-
- Follow link (ctrl + click)
-
-
-
-
- Follow path (ctrl + click)
-
-
-
-
- Vt102Emulation
-
-
- No keyboard translator available. The information needed to convert key presses into characters to send to the terminal is missing.
-
-
-LockSessionWindow
@@ -3480,47 +3424,47 @@ If you need to use another shell, please create a session through [quick-connect
QObject
-
+ Un-named Color Scheme
-
+ Accessible Color Scheme
-
+ Open Link
-
+ Copy Link Address
-
+ Send Email To...
-
+ Copy Email Address
-
+ Open Path
-
+ Open Containing Folder
-
+ Copy Path
@@ -3583,12 +3527,12 @@ If you need to use another shell, please create a session through [quick-connect
QTermWidget
-
+ Color Scheme Error
-
+ Cannot load color scheme: %1
@@ -3890,20 +3834,20 @@ If you need to use another shell, please create a session through [quick-connect
-
-
+
+ Match case
-
-
+
+ Regular expression
-
-
+
+ Highlight all matches
@@ -4242,152 +4186,152 @@ If you need to use another shell, please create a session through [quick-connect
SessionsWindow
-
+ Telnet Error
-
+ Telnet error:
%1.
-
-
+
+ Serial Error
-
+ Serial error:
%0
%1.
-
+ Raw Socket Error
-
+ Raw Socket error:
%1.
-
+ Name Pipe Error
-
+ Name Pipe error:
%1.
-
-
+
+ SSH2 Error
-
-
+
+ SSH2 error:
%1.
-
-
+
+ Open URL
-
-
+
+ Cannot open URL %1.
-
+ Select Files to Send using Zmodem
-
+ All Files (*)
-
+ Start Local Shell
-
+ Cannot start local shell:
%1.
-
+ Serial port %1 has been removed.
-
+ Save log...
-
+ log files (*.log)
-
+ Save log
-
-
-
+
+
+ Cannot write file %1:
%2.
-
+ Save Raw log...
-
+ binary files (*.bin)
-
+ Save Raw log
-
+ Unlock Session
-
+ Wrong password!
-
+ Receive ASCII File
@@ -4644,6 +4588,34 @@ If you need to use another shell, please create a session through [quick-connect
+
+ TerminalDisplay
+
+
+ Size: XXX x XXX
+
+
+
+
+ Size: %1 x %2
+
+
+
+
+ Paste multiline text
+
+
+
+
+ Are you sure you want to paste this text?
+
+
+
+
+ <qt>Output has been <a href="http://en.wikipedia.org/wiki/Flow_control">suspended</a> by pressing Ctrl+S. Press <b>Ctrl+Q</b> to resume.</qt>
+
+
+UndoStack
@@ -4662,6 +4634,27 @@ If you need to use another shell, please create a session through [quick-connect
+
+ UrlFilter
+
+
+ Follow link (ctrl + click)
+
+
+
+
+ Follow path (ctrl + click)
+
+
+
+
+ Vt102Emulation
+
+
+ No keyboard translator available. The information needed to convert key presses into characters to send to the terminal is missing.
+
+
+keyMapManager
diff --git a/lang/quardCRT_es_ES.ts b/lang/quardCRT_es_ES.ts
index ac1437a6..9207e0df 100644
--- a/lang/quardCRT_es_ES.ts
+++ b/lang/quardCRT_es_ES.ts
@@ -13,7 +13,7 @@
CentralWidget
-
+ Tool BarBarra de herramientas
@@ -26,21 +26,21 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ WarningAdvertencia
@@ -285,7 +285,7 @@
-
+ ReadyPreparado
@@ -464,7 +464,7 @@
-
+ HelpAyuda
@@ -566,26 +566,27 @@
+ Enter host <Alt+R> to connectIntroduzca el host <Alt+R> para conectar
-
+ Disconnect AllDesconectar todo
-
+ Disconnect all sessionsDesconectar todas las sesiones
-
+ Clone SessionClonar sesión
-
+ Clone current session <Ctrl+Shift+T>Clonar sesión actual <Ctrl+Shift+T>
@@ -595,564 +596,564 @@
Bloquear sesión
-
+ Log SessionRegistro de sesión
-
+ Create a log file for current sessionCrear un archivo de registro para la sesión actual
-
+ Raw Log SessionRegistro de sesión en bruto
-
+ Create a raw log file for current sessionCrear un archivo de registro en bruto para la sesión actual
-
+ Hex ViewVista hexadecimal
-
+ Show/Hide Hex View for current sessionMostrar/Ocultar vista hexadecimal para la sesión actual
-
+ ExitSalir
-
+ Quit the applicationSalir de la aplicación
-
+ CopyCopiar
-
+ Copy the selected text to the clipboard <Command+C>Copiar el texto seleccionado al portapapeles <Command+C>
-
+ Copy the selected text to the clipboard <Ctrl+Ins>Copiar el texto seleccionado al portapapeles <Ctrl+Ins>
-
+ PastePegar
-
+ Paste the clipboard text to the current session <Command+V>Pegar el texto del portapapeles a la sesión actual <Command+V>
-
+ Paste the clipboard text to the current session <Shift+Ins>Pegar el texto del portapapeles a la sesión actual <Shift+Ins>
-
+ Copy and PasteCopiar y pegar
-
+ Copy the selected text to the clipboard and paste to the current sessionCopiar el texto seleccionado al portapapeles y pegar a la sesión actual
-
+ Select AllSeleccionar todo
-
+ Select all text in the current session <Ctrl+Shift+A>Seleccionar todo el texto en la sesión actual <Ctrl+Shift+A>
-
+ Find...Buscar...
-
+ Find text in the current session <Ctrl+F>Buscar texto en la sesión actual <Ctrl+F>
-
+ Print ScreenImprimir pantalla
-
+ Print current screenImprimir pantalla actual
-
+ Screen ShotCaptura de pantalla
-
+ Screen shot current screen <Alt+P>Captura de pantalla de la pantalla actual <Alt+P>
-
+ Session ExportExportar sesión
-
+ Export current session to a file <Alt+O>Exportar sesión actual a un archivo <Alt+O>
-
+ Clear ScrollbackBorrar desplazamiento
-
+ Clear the contents of the scrollback rowsBorrar el contenido de las filas de desplazamiento
-
+ Clear ScreenBorrar pantalla
-
+ Clear the contents of the current screenBorrar el contenido de la pantalla actual
-
+ Clear Screen and ScrollbackBorrar pantalla y desplazamiento
-
+ Clear the contents of the screen and scrollbackBorrar el contenido de la pantalla y el desplazamiento
-
+ ResetReiniciar
-
+ Reset terminal emulatorReiniciar emulador de terminal
-
+ Zoom InAcercar
-
+ Zoom In <Ctrl+"=">Acercar <Ctrl+"=">
-
+ Zoom OutAlejar
-
+ Zoom Out <Ctrl+"-">Alejar <Ctrl+"-">
-
-
+
+ Zoom ResetRestablecer zoom
-
+ LayoutDiseño
-
+ Single LayoutDiseño único
-
+ Single layoutDiseño único
-
+ Two Columns LayoutDiseño de dos columnas
-
+ Two columns layoutDiseño de dos columnas
-
+ Three Columns LayoutDiseño de tres columnas
-
+ Three columns layoutDiseño de tres columnas
-
+ Two Rows LayoutDiseño de dos filas
-
+ Two rows layoutDiseño de dos filas
-
+ Three Rows LayoutDiseño de tres filas
-
+ Three rows layoutDiseño de tres filas
-
+ Grid LayoutDiseño de cuadrícula
-
+ Grid layoutDiseño de cuadrícula
-
+ Two Rows Right LayoutDiseño de dos filas a la derecha
-
+ Two rows right layoutDiseño de dos filas a la derecha
-
+ Two Columns Bottom LayoutDiseño de dos columnas en la parte inferior
-
+ Two columns bottom layoutDiseño de dos columnas en la parte inferior
-
+ Flip LayoutVoltear diseño
-
+ Flip layoutVoltear diseño
-
+ Menu BarBarra de menús
-
+ Show/Hide Menu Bar <Alt+U>Mostrar/Ocultar barra de menús <Alt+U>
-
+ Show/Hide Tool BarMostrar/Ocultar barra de herramientas
-
+ Status BarBarra de estado
-
+ Show/Hide Status BarMostrar/Ocultar barra de estado
-
+ Command WindowVentana de comandos
-
+ Show/Hide Command WindowMostrar/Ocultar ventana de comandos
-
+ Connect BarBarra de conexión
-
+ Show/Hide Connect BarMostrar/Ocultar barra de conexión
-
+ Side WindowVentana lateral
-
+ Show/Hide Side WindowMostrar/Ocultar ventana lateral
-
+ Windows TransparencyTransparencia de ventanas
-
+ Enable/Disable alpha transparencyHabilitar/Deshabilitar transparencia alfa
-
+ Vertical Scroll BarBarra de desplazamiento vertical
-
+ Show/Hide Vertical Scroll BarMostrar/Ocultar barra de desplazamiento vertical
-
+ Allways On TopSiempre encima
-
+ Show window always on topMostrar ventana siempre encima
-
+ Full ScreenPantalla completa
-
+ Toggle between full screen and normal mode <Alt+Enter>Alternar entre pantalla completa y modo normal <Alt+Enter>
-
+ Session Options...Opciones de sesión...
-
+ Configure session optionsConfigurar opciones de sesión
-
+ Global Options...Opciones globales...
-
+ Configure global optionsConfigurar opciones globales
-
+ Real-time Save OptionsOpciones de guardado en tiempo real
-
+ Real-time save session options and global optionsOpciones de guardado en tiempo real de la sesión y opciones globales
-
+ Save Settings NowGuardar configuración ahora
-
+ Save options configuration nowGuardar configuración de opciones ahora
-
+ Send ASCII...Enviar ASCII...
-
+ Send ASCII fileEnviar archivo ASCII
-
+ Receive ASCII...Recibir ASCII...
-
+ Receive ASCII fileRecibir archivo ASCII
-
+ Send Binary...Enviar binario...
-
+ Send Binary fileEnviar archivo binario
-
+ Send Kermit...Enviar Kermit...
-
+ Send a file using KermitEnviar un archivo usando Kermit
-
+ Receive Kermit...Recibir Kermit...
-
+ Receive a file using KermitRecibir un archivo usando Kermit
-
+ Send Xmodem...Enviar Xmodem...
-
+ Send a file using XmodemEnviar un archivo usando Xmodem
-
+ Receive Xmodem...Recibir Xmodem...
-
+ Receive a file using XmodemRecibir un archivo usando Xmodem
-
+ Send Ymodem...Enviar Ymodem...
-
+ Send a file using YmodemEnviar un archivo usando Ymodem
-
+ Receive Ymodem...Recibir Ymodem...
-
+ Receive a file using YmodemRecibir un archivo usando Ymodem
-
+ Zmodem Upload List...Lista de subida Zmodem...
-
+ Display Zmodem file upload listMostrar lista de subida de archivos Zmodem
-
+ Start Zmodem UploadIniciar subida Zmodem
-
+ Start Zmodem file uploadIniciar subida de archivo Zmodem
-
+ Start TFTP ServerIniciar servidor TFTP
-
+ Start/Stop the TFTP serverIniciar/Detener el servidor TFTP
-
+ Run...Ejecutar...
-
+ Run a scriptEjecutar un script
-
+ CancelCancelar
@@ -1213,759 +1214,759 @@
Cambiar color
-
+ Cancel script executionCancelar ejecución de script
-
+ Start Recording ScriptIniciar grabación de script
-
+ Start recording scriptIniciar grabación de script
-
+ Stop Recording Script...Detener grabación de script...
-
+ Stop recording scriptDetener grabación de script
-
+ Cancel Recording ScriptCancelar grabación de script
-
+ Cancel recording scriptCancelar grabación de script
-
+ Add BookmarkAñadir marcador
-
+ Add a bookmarkAñadir un marcador
-
-
+
+ Remove BookmarkEliminar marcador
-
+ Remove a bookmarkEliminar un marcador
-
-
+
+ Clean All BookmarkLimpiar todos los marcadores
-
+ Clean all bookmarkLimpiar todos los marcadores
-
+ Keymap ManagerAdministrador de mapas de teclas
-
+ Display keymap editorMostrar editor de mapas de teclas
-
+ Create Public Key...Crear clave pública...
-
+ Create a public keyCrear una clave pública
-
+ Publickey ManagerAdministrador de claves públicas
-
+ Display publickey managerMostrar administrador de claves públicas
-
+ Internal CommandComando interno
-
+ Display Internal Command windowMostrar ventana de comando interno
-
+ Portuguese (Brazil)Português (Brasil)
-
+ Switch to Portuguese (Brazil)Mudar para Português (Brasil)
-
+ GermanDeutsch
-
+ Switch to GermanWechseln Sie zu Deutsch
-
+ Czechčeština
-
+ Switch to CzechPřepnout do češtiny
-
+ Arabicعربي
-
+ Switch to Arabicالتبديل إلى العربية
-
+ Theme ColorColor del tema
-
+ Set theme color, cancel to use defaultEstablecer color del tema, cancelar para usar el predeterminado
-
-
+
+ Keyborad Shortcuts ReferenceReferencia de atajos de teclado
-
+ Display keyborad shortcuts referenceMostrar referencia de atajos de teclado
-
-
+
+ Privacy StatementDeclaración de privacidad
-
+ Display privacy statementMostrar declaración de privacidad
-
-
+
+ About PythonAcerca de Python
-
+ Display about Python dialogMostrar diálogo acerca de Python
-
+ LaboratoryLaboratorio
-
-
+
+ SSH ScanningEscaneo SSH
-
+ Display SSH scanning dialogMostrar diálogo de escaneo SSH
-
+ Plugin metaData not found!¡No se encontraron metadatos del complemento!
-
+ Plugin api version not found!¡No se encontró la versión de la API del complemento!
-
+ Plugin api version not match!¡La versión de la API del complemento no coincide!
-
+ Plugin menu not found!¡Menú del complemento no encontrado!
-
+ Plugin init failed!¡Error al inicializar el complemento!
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+ Broadcast session can't transfer file!¡La sesión de difusión no puede transferir archivos!
-
+ Select Files to Send as ASCIISeleccionar archivos para enviar como ASCII
-
-
+
+ Text Files (*.txt);;All Files (*)Archivos de texto (*.txt);;Todos los archivos (*)
-
+ Save Received Data as ASCIIGuardar datos recibidos como ASCII
-
+ Select Files to Send as BINARYSeleccionar archivos para enviar como BINARIO
-
-
-
-
-
-
+
+
+
+
+
+ All Files (*)Todos los archivos (*)
-
+ Select Files to Send using KermitSeleccionar archivos para enviar usando Kermit
-
+ Select Files to Send using XmodemSeleccionar archivos para enviar usando Xmodem
-
+ Save Received Files using XmodemGuardar archivos recibidos usando Xmodem
-
+ Select Files to Send using YmodemSeleccionar archivos para enviar usando Ymodem
-
+ Select Files to Send using ZmodemSeleccionar archivos para enviar usando Zmodem
-
+ Select a script fileSeleccionar un archivo de script
-
+ Python Files (*.py);;All Files (*)Archivos de Python (*.py);;Todos los archivos (*)
-
+ Select colorSeleccionar color
-
+ Are you sure to disconnect "¿Está seguro de desconectar "
-
+ " session?" sesión?
-
+ This software is a terminal emulator that provides a secure shell (SSH) connection, telnet connection, serial port connection, and other functions.Este software es un emulador de terminal que proporciona una conexión de shell seguro (SSH), una conexión telnet, una conexión de puerto serie y otras funciones.
-
+ This software does not collect any personal information, and does not send any information to the server.Este software no recopila ninguna información personal y no envía ninguna información al servidor.
-
+ This software does not contain any malicious code, and does not contain any backdoors.Este software no contiene ningún código malicioso y no contiene ninguna puerta trasera.
-
+ This software is open source software, you can view the source code on the github website.Este software es un software de código abierto, puede ver el código fuente en el sitio web de github.
-
+ This software is provided as is, without any warranty.Este software se proporciona tal cual, sin garantía alguna.
-
+ If you have any questions or suggestions, please contact the author.Si tiene alguna pregunta o sugerencia, póngase en contacto con el autor.
-
+ VersionVersión
-
+ CommitConfirmar
-
+ DateFecha
-
-
+
+ AuthorAutor
-
+ WebsiteSitio web
-
+ TabPestaña
-
+ Arrange sessions in tabsOrganizar sesiones en pestañas
-
+ TileMosaico
-
+ Arrange sessions in non-overlapping tilesOrganizar sesiones en mosaicos no superpuestos
-
+ CascadeCascada
-
+ Arrange sessions to overlap each otherOrganizar sesiones para que se superpongan entre sí
-
+ Simplified Chinese简体中文
-
+ Switch to Simplified Chinese切换到简体中文
-
+ Traditional Chinese繁體中文
-
+ Switch to Traditional Chinese切換到繁體中文
-
+ RussianРусский
-
+ Switch to RussianПереключиться на русский
-
+ Korean한국어
-
+ Switch to Korean한국어로 전환
-
+ Japanese日本語
-
+ Switch to Japanese日本語に切り替える
-
+ Frenchfrançais
-
+ Switch to FrenchPasser au français
-
+ Spanishespañol
-
+ Switch to SpanishCambiar a español
-
+ English
-
+ Switch to English
-
+ LightClaro
-
+ Switch to light themeCambiar a tema claro
-
+ DarkOscuro
-
+ Switch to dark themeCambiar a tema oscuro
-
+ Display helpMostrar ayuda
-
+ Check UpdateComprobar actualizaciones
-
+ Check for updatesBuscar actualizaciones
-
-
+
+ AboutAcerca de
-
+ Display about dialogMostrar diálogo acerca de
-
+ About QtAcerca de Qt
-
+ Display about Qt dialogMostrar diálogo acerca de Qt
-
+ Plugin InfoInformación del complemento
-
+ Display plugin information dialogMostrar diálogo de información del complemento
-
+ PrintScreen saved to %1Imprimir pantalla guardada en %1
-
+ Save ScreenshotGuardar captura de pantalla
-
+ Image Files (*.jpg)Archivos de imagen (*.jpg)
-
-
+
+ Screenshot saved to %1Captura de pantalla guardada en %1
-
+ Save Session ExportGuardar exportación de sesión
-
+ Text Files (*.txt);;HTML Files (*.html)Archivos de texto (*.txt);;Archivos HTML (*.html)
-
+ Text Files (*.txt)Archivos de texto (*.txt)
-
+ HTML Files (*.html)Archivos HTML (*.html)
-
+ Session Export saved to %1Exportación de sesión guardada en %1
-
+ Session Export failed to save to %1Error al guardar la exportación de sesión en %1
-
+ Select a directorySeleccionar un directorio
-
+ Select a bookmarkSeleccionar un marcador
-
+ Are you sure to clean all bookmark?¿Está seguro de limpiar todos los marcadores?
-
+ PortPuerto
-
+ Video background is enabled, please enable animation in global options (more system resources) or change background image.El fondo de video está habilitado, habilite la animación en las opciones globales (más recursos del sistema) o cambie la imagen de fondo.
-
+ Session information get failed.Error al obtener la información de la sesión.
-
+ Telnet -
-
+ Telnet
-
+ Serial - Serie -
-
+ SerialSerie
-
+ Raw - Crudo -
-
+ RawCrudo
-
+ NamePipe - Nombre de tubería -
-
+ NamePipeNombre de tubería
-
-
+
+ Local ShellShell local
-
+ Local Shell - Shell local -
-
+ Global Shortcuts:Atajos globales:
-
+ show/hide menu barmostrar/ocultar barra de menús
-
+ connect to LocalShellconectar a Shell local
-
+ clone current sessionclonar sesión actual
-
+ switch ui to STD modecambiar la interfaz de usuario al modo STD
-
+ switch ui to MINI modecambiar la interfaz de usuario al modo MINI
-
+ switch to previous sessioncambiar a la sesión anterior
-
+ switch to next sessioncambiar a la siguiente sesión
-
+ switch to session [num]cambiar a la sesión [num]
-
+ Go to line startIr al inicio de la línea
-
+ Go to line endIr al final de la línea
-
+ There are sessions that have not yet been unlocked, please unlock them first.Hay sesiones que aún no se han desbloqueado, desbloquéelas primero.
-
+ Are you sure to quit?¿Está seguro de salir?
@@ -2707,8 +2708,8 @@
-
-
+
+ WarningAdvertencia
@@ -2745,7 +2746,7 @@ Si necesita usar otro shell, cree una sesión a través de [conexión rápida &g
-
+ The Default Local Shell is not a valid file!¡El Shell local predeterminado no es un archivo válido!
@@ -2795,7 +2796,7 @@ Si necesita usar otro shell, cree una sesión a través de [conexión rápida &g
Transferir
-
+ The User Plugins Path is not a directory!¡La ruta de los complementos de usuario no es un directorio!
@@ -2869,93 +2870,36 @@ Si necesita usar otro shell, cree una sesión a través de [conexión rápida &g
Comando interno
-
+ CopyCopiar
-
+ PastePegar
-
+ Select AllSeleccionar todo
-
+ FindBuscar
-
+ Zoom InAcercar
-
+ Zoom OutAlejar
-
- Session
-
-
- Bell in session '%1'
- Campana en la sesión '%1'
-
-
-
- TerminalDisplay
-
-
- Size: XXX x XXX
- Tamaño: XXX x XXX
-
-
-
- Size: %1 x %2
- Tamaño: %1 x %2
-
-
-
- Paste multiline text
- Pegar texto de varias líneas
-
-
-
- Are you sure you want to paste this text?
- ¿Está seguro de que desea pegar este texto?
-
-
-
- <qt>Output has been <a href="http://en.wikipedia.org/wiki/Flow_control">suspended</a> by pressing Ctrl+S. Press <b>Ctrl+Q</b> to resume.</qt>
- <qt>La salida ha sido <a href="http://en.wikipedia.org/wiki/Flow_control">suspendida</a> al presionar Ctrl+S. Presione <b>Ctrl+Q</b> para reanudar.</qt>
-
-
-
- UrlFilter
-
-
- Follow link (ctrl + click)
- Seguir enlace (ctrl + clic)
-
-
-
- Follow path (ctrl + click)
- Seguir ruta (ctrl + clic)
-
-
-
- Vt102Emulation
-
-
- No keyboard translator available. The information needed to convert key presses into characters to send to the terminal is missing.
- No hay traductor de teclado disponible. Falta la información necesaria para convertir las pulsaciones de teclas en caracteres para enviar al terminal.
-
-LockSessionWindow
@@ -3484,47 +3428,47 @@ Si necesita usar otro shell, cree una sesión a través de [conexión rápida &g
QObject
-
+ Un-named Color SchemeEsquema de color sin nombre
-
+ Accessible Color SchemeEsquema de color accesible
-
+ Open LinkAbrir enlace
-
+ Copy Link AddressCopiar dirección del enlace
-
+ Send Email To...Enviar correo electrónico a...
-
+ Copy Email AddressCopiar dirección de correo electrónico
-
+ Open PathAbrir ruta
-
+ Open Containing FolderAbrir carpeta contenedora
-
+ Copy PathCopiar ruta
@@ -3587,12 +3531,12 @@ Si necesita usar otro shell, cree una sesión a través de [conexión rápida &g
QTermWidget
-
+ Color Scheme ErrorError de esquema de color
-
+ Cannot load color scheme: %1No se puede cargar el esquema de color: %1
@@ -3897,20 +3841,20 @@ Si necesita usar otro shell, cree una sesión a través de [conexión rápida &g
Buscar:
-
-
+
+ Match caseCoincidir mayúsculas y minúsculas
-
-
+
+ Regular expressionExpresión regular
-
-
+
+ Highlight all matchesResaltar todas las coincidencias
@@ -4252,25 +4196,25 @@ Si necesita usar otro shell, cree una sesión a través de [conexión rápida &g
SessionsWindow
-
+ Telnet ErrorError de Telnet
-
+ Telnet error:
%1.Error de Telnet:
%1.
-
-
+
+ Serial ErrorError de serie
-
+ Serial error:
%0
%1.
@@ -4279,133 +4223,133 @@ Si necesita usar otro shell, cree una sesión a través de [conexión rápida &g
%1.
-
+ Raw Socket ErrorError de socket sin formato
-
+ Raw Socket error:
%1.Error de socket sin formato:
%1.
-
+ Name Pipe ErrorError de nombre de tubería
-
+ Name Pipe error:
%1.Error de nombre de tubería:
%1.
-
-
+
+ SSH2 ErrorError de SSH2
-
-
+
+ SSH2 error:
%1.Error de SSH2:
%1.
-
-
+
+ Open URLAbrir URL
-
-
+
+ Cannot open URL %1.No se puede abrir la URL %1.
-
+ Select Files to Send using ZmodemSeleccionar archivos para enviar usando Zmodem
-
+ All Files (*)Todos los archivos (*)
-
+ Start Local ShellIniciar shell local
-
+ Cannot start local shell:
%1.No se puede iniciar el shell local:
%1.
-
+ Serial port %1 has been removed.El puerto serie %1 ha sido eliminado.
-
+ Save log...Guardar registro...
-
+ log files (*.log)archivos de registro (*.log)
-
+ Save logGuardar registro
-
-
-
+
+
+ Cannot write file %1:
%2.No se puede escribir el archivo %1:
%2.
-
+ Save Raw log...Guardar registro sin formato...
-
+ binary files (*.bin)archivos binarios (*.bin)
-
+ Save Raw logGuardar registro sin formato
-
+ Unlock SessionDesbloquear sesión
-
+ Wrong password!¡Contraseña incorrecta!
-
+ Receive ASCII FileRecibir archivo ASCII
@@ -4662,6 +4606,34 @@ Si necesita usar otro shell, cree una sesión a través de [conexión rápida &g
Información de transferencia
+
+ TerminalDisplay
+
+
+ Size: XXX x XXX
+ Tamaño: XXX x XXX
+
+
+
+ Size: %1 x %2
+ Tamaño: %1 x %2
+
+
+
+ Paste multiline text
+ Pegar texto de varias líneas
+
+
+
+ Are you sure you want to paste this text?
+ ¿Está seguro de que desea pegar este texto?
+
+
+
+ <qt>Output has been <a href="http://en.wikipedia.org/wiki/Flow_control">suspended</a> by pressing Ctrl+S. Press <b>Ctrl+Q</b> to resume.</qt>
+ <qt>La salida ha sido <a href="http://en.wikipedia.org/wiki/Flow_control">suspendida</a> al presionar Ctrl+S. Presione <b>Ctrl+Q</b> para reanudar.</qt>
+
+UndoStack
@@ -4680,6 +4652,27 @@ Si necesita usar otro shell, cree una sesión a través de [conexión rápida &g
Sobrescribir %1 caracteres
+
+ UrlFilter
+
+
+ Follow link (ctrl + click)
+ Seguir enlace (ctrl + clic)
+
+
+
+ Follow path (ctrl + click)
+ Seguir ruta (ctrl + clic)
+
+
+
+ Vt102Emulation
+
+
+ No keyboard translator available. The information needed to convert key presses into characters to send to the terminal is missing.
+ No hay traductor de teclado disponible. Falta la información necesaria para convertir las pulsaciones de teclas en caracteres para enviar al terminal.
+
+keyMapManager
diff --git a/lang/quardCRT_fr_FR.ts b/lang/quardCRT_fr_FR.ts
index cf39fc90..e914a73d 100644
--- a/lang/quardCRT_fr_FR.ts
+++ b/lang/quardCRT_fr_FR.ts
@@ -13,7 +13,7 @@
CentralWidget
-
+ Tool BarBarre d'outils
@@ -26,21 +26,21 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ WarningAttention
@@ -285,7 +285,7 @@
-
+ ReadyPrêt
@@ -464,7 +464,7 @@
-
+ HelpAide
@@ -566,26 +566,27 @@
+ Enter host <Alt+R> to connectEntrer l'hôte <Alt+R> pour se connecter
-
+ Disconnect AllDéconnecter tout
-
+ Disconnect all sessionsDéconnecter toutes les sessions
-
+ Clone SessionCloner la session
-
+ Clone current session <Ctrl+Shift+T>Cloner la session en cours <Ctrl+Shift+T>
@@ -595,564 +596,564 @@
Verrouiller la session
-
+ Log SessionJournaliser la session
-
+ Create a log file for current sessionCréer un fichier journal pour la session en cours
-
+ Raw Log SessionJournal brut de la session
-
+ Create a raw log file for current sessionCréer un fichier journal brut pour la session en cours
-
+ Hex ViewVue hexadécimale
-
+ Show/Hide Hex View for current sessionAfficher/Masquer la vue hexadécimale pour la session en cours
-
+ ExitQuitter
-
+ Quit the applicationQuitter l'application
-
+ CopyCopier
-
+ Copy the selected text to the clipboard <Command+C>Copier le texte sélectionné dans le presse-papiers <Command+C>
-
+ Copy the selected text to the clipboard <Ctrl+Ins>Copier le texte sélectionné dans le presse-papiers <Ctrl+Ins>
-
+ PasteColler
-
+ Paste the clipboard text to the current session <Command+V>Coller le texte du presse-papiers dans la session en cours <Command+V>
-
+ Paste the clipboard text to the current session <Shift+Ins>Coller le texte du presse-papiers dans la session en cours <Shift+Ins>
-
+ Copy and PasteCopier et coller
-
+ Copy the selected text to the clipboard and paste to the current sessionCopier le texte sélectionné dans le presse-papiers et coller dans la session en cours
-
+ Select AllTout sélectionner
-
+ Select all text in the current session <Ctrl+Shift+A>Sélectionner tout le texte dans la session en cours <Ctrl+Shift+A>
-
+ Find...Rechercher...
-
+ Find text in the current session <Ctrl+F>Rechercher du texte dans la session en cours <Ctrl+F>
-
+ Print ScreenImprimer l'écran
-
+ Print current screenImprimer l'écran en cours
-
+ Screen ShotCapture d'écran
-
+ Screen shot current screen <Alt+P>Capture d'écran de l'écran en cours <Alt+P>
-
+ Session ExportExportation de la session
-
+ Export current session to a file <Alt+O>Exporter la session en cours vers un fichier <Alt+O>
-
+ Clear ScrollbackEffacer le défilement
-
+ Clear the contents of the scrollback rowsEffacer le contenu des lignes de défilement
-
+ Clear ScreenEffacer l'écran
-
+ Clear the contents of the current screenEffacer le contenu de l'écran en cours
-
+ Clear Screen and ScrollbackEffacer l'écran et le défilement
-
+ Clear the contents of the screen and scrollbackEffacer le contenu de l'écran et du défilement
-
+ ResetRéinitialiser
-
+ Reset terminal emulatorRéinitialiser l'émulateur de terminal
-
+ Zoom InAgrandir
-
+ Zoom In <Ctrl+"=">Agrandir <Ctrl+"=">
-
+ Zoom OutRéduire
-
+ Zoom Out <Ctrl+"-">Réduire <Ctrl+"-">
-
-
+
+ Zoom ResetRéinitialiser le zoom
-
+ LayoutDisposition
-
+ Single LayoutDisposition simple
-
+ Single layoutDisposition simple
-
+ Two Columns LayoutDisposition à deux colonnes
-
+ Two columns layoutDisposition à deux colonnes
-
+ Three Columns LayoutDisposition à trois colonnes
-
+ Three columns layoutDisposition à trois colonnes
-
+ Two Rows LayoutDisposition à deux rangées
-
+ Two rows layoutDisposition à deux rangées
-
+ Three Rows LayoutDisposition à trois rangées
-
+ Three rows layoutDisposition à trois rangées
-
+ Grid LayoutDisposition en grille
-
+ Grid layoutDisposition en grille
-
+ Two Rows Right LayoutDisposition à deux rangées à droite
-
+ Two rows right layoutDisposition à deux rangées à droite
-
+ Two Columns Bottom LayoutDisposition à deux colonnes en bas
-
+ Two columns bottom layoutDisposition à deux colonnes en bas
-
+ Flip LayoutRetourner la disposition
-
+ Flip layoutRetourner la disposition
-
+ Menu BarBarre de menu
-
+ Show/Hide Menu Bar <Alt+U>Afficher/Masquer la barre de menu <Alt+U>
-
+ Show/Hide Tool BarAfficher/Masquer la barre d'outils
-
+ Status BarBarre d'état
-
+ Show/Hide Status BarAfficher/Masquer la barre d'état
-
+ Command WindowFenêtre de commande
-
+ Show/Hide Command WindowAfficher/Masquer la fenêtre de commande
-
+ Connect BarBarre de connexion
-
+ Show/Hide Connect BarAfficher/Masquer la barre de connexion
-
+ Side WindowFenêtre latérale
-
+ Show/Hide Side WindowAfficher/Masquer la fenêtre latérale
-
+ Windows TransparencyTransparence des fenêtres
-
+ Enable/Disable alpha transparencyActiver/Désactiver la transparence alpha
-
+ Vertical Scroll BarBarre de défilement verticale
-
+ Show/Hide Vertical Scroll BarAfficher/Masquer la barre de défilement verticale
-
+ Allways On TopToujours au premier plan
-
+ Show window always on topAfficher la fenêtre toujours au premier plan
-
+ Full ScreenPlein écran
-
+ Toggle between full screen and normal mode <Alt+Enter>Basculer entre le mode plein écran et le mode normal <Alt+Entrée>
-
+ Session Options...Options de la session...
-
+ Configure session optionsConfigurer les options de la session
-
+ Global Options...Options globales...
-
+ Configure global optionsConfigurer les options globales
-
+ Real-time Save OptionsOptions d'enregistrement en temps réel
-
+ Real-time save session options and global optionsEnregistrer en temps réel les options de session et les options globales
-
+ Save Settings NowEnregistrer les paramètres maintenant
-
+ Save options configuration nowEnregistrer la configuration des options maintenant
-
+ Send ASCII...Envoyer ASCII...
-
+ Send ASCII fileEnvoyer un fichier ASCII
-
+ Receive ASCII...Recevoir ASCII...
-
+ Receive ASCII fileRecevoir un fichier ASCII
-
+ Send Binary...Envoyer binaire...
-
+ Send Binary fileEnvoyer un fichier binaire
-
+ Send Kermit...Envoyer Kermit...
-
+ Send a file using KermitEnvoyer un fichier en utilisant Kermit
-
+ Receive Kermit...Recevoir Kermit...
-
+ Receive a file using KermitRecevoir un fichier en utilisant Kermit
-
+ Send Xmodem...Envoyer Xmodem...
-
+ Send a file using XmodemEnvoyer un fichier en utilisant Xmodem
-
+ Receive Xmodem...Recevoir Xmodem...
-
+ Receive a file using XmodemRecevoir un fichier en utilisant Xmodem
-
+ Send Ymodem...Envoyer Ymodem...
-
+ Send a file using YmodemEnvoyer un fichier en utilisant Ymodem
-
+ Receive Ymodem...Recevoir Ymodem...
-
+ Receive a file using YmodemRecevoir un fichier en utilisant Ymodem
-
+ Zmodem Upload List...Liste de téléchargement Zmodem...
-
+ Display Zmodem file upload listAfficher la liste de téléchargement de fichiers Zmodem
-
+ Start Zmodem UploadDémarrer le téléchargement Zmodem
-
+ Start Zmodem file uploadDémarrer le téléchargement de fichiers Zmodem
-
+ Start TFTP ServerDémarrer le serveur TFTP
-
+ Start/Stop the TFTP serverDémarrer/Arrêter le serveur TFTP
-
+ Run...Exécuter...
-
+ Run a scriptExécuter un script
-
+ CancelAnnuler
@@ -1213,759 +1214,759 @@
Changer la couleur
-
+ Cancel script executionAnnuler l'exécution du script
-
+ Start Recording ScriptCommencer l'enregistrement du script
-
+ Start recording scriptCommencer l'enregistrement du script
-
+ Stop Recording Script...Arrêter l'enregistrement du script...
-
+ Stop recording scriptArrêter l'enregistrement du script
-
+ Cancel Recording ScriptAnnuler l'enregistrement du script
-
+ Cancel recording scriptAnnuler l'enregistrement du script
-
+ Add BookmarkAjouter un marque-page
-
+ Add a bookmarkAjouter un marque-page
-
-
+
+ Remove BookmarkSupprimer un marque-page
-
+ Remove a bookmarkSupprimer un marque-page
-
-
+
+ Clean All BookmarkNettoyer tous les marque-pages
-
+ Clean all bookmarkNettoyer tous les marque-pages
-
+ Keymap ManagerGestionnaire de mappage des touches
-
+ Display keymap editorAfficher l'éditeur de mappage des touches
-
+ Create Public Key...Créer une clé publique...
-
+ Create a public keyCréer une clé publique
-
+ Publickey ManagerGestionnaire de clés publiques
-
+ Display publickey managerAfficher le gestionnaire de clés publiques
-
+ Internal CommandCommande interne
-
+ Display Internal Command windowAfficher la fenêtre de commande interne
-
+ Portuguese (Brazil)Português (Brasil)
-
+ Switch to Portuguese (Brazil)Mudar para Português (Brasil)
-
+ GermanDeutsch
-
+ Switch to GermanWechseln Sie zu Deutsch
-
+ Czechčeština
-
+ Switch to CzechPřepnout do češtiny
-
+ Arabicعربي
-
+ Switch to Arabicالتبديل إلى العربية
-
+ Theme ColorCouleur du thème
-
+ Set theme color, cancel to use defaultDéfinir la couleur du thème, annuler pour utiliser la valeur par défaut
-
-
+
+ Keyborad Shortcuts ReferenceRéférence des raccourcis clavier
-
+ Display keyborad shortcuts referenceAfficher la référence des raccourcis clavier
-
-
+
+ Privacy StatementDéclaration de confidentialité
-
+ Display privacy statementAfficher la déclaration de confidentialité
-
-
+
+ About PythonÀ propos de Python
-
+ Display about Python dialogAfficher la boîte de dialogue À propos de Python
-
+ LaboratoryLaboratoire
-
-
+
+ SSH ScanningExploration SSH
-
+ Display SSH scanning dialogAfficher la boîte de dialogue d'exploration SSH
-
+ Plugin metaData not found!Métadonnées du plugin introuvables !
-
+ Plugin api version not found!Version de l'API du plugin introuvable !
-
+ Plugin api version not match!La version de l'API du plugin ne correspond pas !
-
+ Plugin menu not found!Menu du plugin introuvable !
-
+ Plugin init failed!Échec de l'initialisation du plugin !
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+ Broadcast session can't transfer file!La session de diffusion ne peut pas transférer de fichier !
-
+ Select Files to Send as ASCIISélectionner les fichiers à envoyer en ASCII
-
-
+
+ Text Files (*.txt);;All Files (*)Fichiers texte (*.txt);;Tous les fichiers (*)
-
+ Save Received Data as ASCIIEnregistrer les données reçues en ASCII
-
+ Select Files to Send as BINARYSélectionner les fichiers à envoyer en BINAIRE
-
-
-
-
-
-
+
+
+
+
+
+ All Files (*)Tous les fichiers (*)
-
+ Select Files to Send using KermitSélectionner les fichiers à envoyer en utilisant Kermit
-
+ Select Files to Send using XmodemSélectionner les fichiers à envoyer en utilisant Xmodem
-
+ Save Received Files using XmodemEnregistrer les fichiers reçus en utilisant Xmodem
-
+ Select Files to Send using YmodemSélectionner les fichiers à envoyer en utilisant Ymodem
-
+ Select Files to Send using ZmodemSélectionner les fichiers à envoyer en utilisant Zmodem
-
+ Select a script fileSélectionner un fichier de script
-
+ Python Files (*.py);;All Files (*)Fichiers Python (*.py);;Tous les fichiers (*)
-
+ Select colorSélectionner une couleur
-
+ Are you sure to disconnect "Êtes-vous sûr de vouloir vous déconnecter de "
-
+ " session?" session ?
-
+ This software is a terminal emulator that provides a secure shell (SSH) connection, telnet connection, serial port connection, and other functions.Ce logiciel est un émulateur de terminal qui fournit une connexion shell sécurisée (SSH), une connexion telnet, une connexion de port série et d'autres fonctions.
-
+ This software does not collect any personal information, and does not send any information to the server.Ce logiciel ne collecte aucune information personnelle et n'envoie aucune information au serveur.
-
+ This software does not contain any malicious code, and does not contain any backdoors.Ce logiciel ne contient aucun code malveillant et ne contient aucune porte dérobée.
-
+ This software is open source software, you can view the source code on the github website.Ce logiciel est un logiciel open source, vous pouvez consulter le code source sur le site web de github.
-
+ This software is provided as is, without any warranty.Ce logiciel est fourni tel quel, sans aucune garantie.
-
+ If you have any questions or suggestions, please contact the author.Si vous avez des questions ou des suggestions, veuillez contacter l'auteur.
-
+ VersionVersion
-
+ CommitValidation
-
+ DateDate
-
-
+
+ AuthorAuteur
-
+ WebsiteSite web
-
+ TabOnglet
-
+ Arrange sessions in tabsOrganiser les sessions dans des onglets
-
+ TileMosaïque
-
+ Arrange sessions in non-overlapping tilesOrganiser les sessions dans des mosaïques non superposées
-
+ CascadeCascade
-
+ Arrange sessions to overlap each otherOrganiser les sessions pour qu'elles se chevauchent
-
+ Simplified Chinese简体中文
-
+ Switch to Simplified Chinese切换到简体中文
-
+ Traditional Chinese繁體中文
-
+ Switch to Traditional Chinese切換到繁體中文
-
+ RussianРусский
-
+ Switch to RussianПереключиться на русский
-
+ Korean한국어
-
+ Switch to Korean한국어로 전환
-
+ Japanese日本語
-
+ Switch to Japanese日本語に切り替える
-
+ Frenchfrançais
-
+ Switch to FrenchPasser au français
-
+ Spanishespañol
-
+ Switch to SpanishCambiar a español
-
+ English
-
+ Switch to English
-
+ LightClair
-
+ Switch to light themePasser au thème clair
-
+ DarkSombre
-
+ Switch to dark themePasser au thème sombre
-
+ Display helpAfficher l'aide
-
+ Check UpdateVérifier les mises à jour
-
+ Check for updatesVérifier les mises à jour
-
-
+
+ AboutÀ propos de
-
+ Display about dialogAfficher la boîte de dialogue À propos de
-
+ About QtÀ propos de Qt
-
+ Display about Qt dialogAfficher la boîte de dialogue À propos de Qt
-
+ Plugin InfoInformations sur le plugin
-
+ Display plugin information dialogAfficher la boîte de dialogue d'informations sur le plugin
-
+ PrintScreen saved to %1PrintScreen enregistré dans %1
-
+ Save ScreenshotEnregistrer la capture d'écran
-
+ Image Files (*.jpg)Fichiers image (*.jpg)
-
-
+
+ Screenshot saved to %1Capture d'écran enregistrée dans %1
-
+ Save Session ExportEnregistrer l'exportation de la session
-
+ Text Files (*.txt);;HTML Files (*.html)Fichiers texte (*.txt);;Fichiers HTML (*.html)
-
+ Text Files (*.txt)Fichiers texte (*.txt)
-
+ HTML Files (*.html)Fichiers HTML (*.html)
-
+ Session Export saved to %1Exportation de la session enregistrée dans %1
-
+ Session Export failed to save to %1Échec de l'enregistrement de l'exportation de la session dans %1
-
+ Select a directorySélectionner un répertoire
-
+ Select a bookmarkSélectionner un marque-page
-
+ Are you sure to clean all bookmark?Êtes-vous sûr de vouloir nettoyer tous les marque-pages ?
-
+ PortPort
-
+ Video background is enabled, please enable animation in global options (more system resources) or change background image.L'arrière-plan vidéo est activé, veuillez activer l'animation dans les options globales (plus de ressources système) ou changer l'image d'arrière-plan.
-
+ Session information get failed.Échec de l'obtention des informations de session.
-
+ Telnet - Telnet -
-
+ TelnetTelnet
-
+ Serial - Série -
-
+ SerialSérie
-
+ Raw - Brut -
-
+ RawBrut
-
+ NamePipe - Tube nommé -
-
+ NamePipeTube nommé
-
-
+
+ Local ShellShell local
-
+ Local Shell - Shell local -
-
+ Global Shortcuts:Raccourcis globaux :
-
+ show/hide menu barAfficher/Masquer la barre de menu
-
+ connect to LocalShellSe connecter à LocalShell
-
+ clone current sessionCloner la session actuelle
-
+ switch ui to STD modePasser l'interface utilisateur en mode STD
-
+ switch ui to MINI modePasser l'interface utilisateur en mode MINI
-
+ switch to previous sessionPasser à la session précédente
-
+ switch to next sessionPasser à la session suivante
-
+ switch to session [num]Passer à la session [num]
-
+ Go to line startAller au début de la ligne
-
+ Go to line endAller à la fin de la ligne
-
+ There are sessions that have not yet been unlocked, please unlock them first.Il y a des sessions qui n'ont pas encore été déverrouillées, veuillez les déverrouiller d'abord.
-
+ Are you sure to quit?Êtes-vous sûr de vouloir quitter ?
@@ -2707,8 +2708,8 @@
-
-
+
+ WarningAttention
@@ -2745,7 +2746,7 @@ Si vous avez besoin d'utiliser un autre shell, veuillez créer une session
-
+ The Default Local Shell is not a valid file!Le shell local par défaut n'est pas un fichier valide !
@@ -2795,7 +2796,7 @@ Si vous avez besoin d'utiliser un autre shell, veuillez créer une session
Transfert
-
+ The User Plugins Path is not a directory!Le chemin des plugins utilisateur n'est pas un répertoire !
@@ -2869,93 +2870,36 @@ Si vous avez besoin d'utiliser un autre shell, veuillez créer une session
Commande interne
-
+ CopyCopier
-
+ PasteColler
-
+ Select AllTout sélectionner
-
+ FindRechercher
-
+ Zoom InAgrandir
-
+ Zoom OutRéduire
-
- Session
-
-
- Bell in session '%1'
- Sonnerie dans la session '%1'
-
-
-
- TerminalDisplay
-
-
- Size: XXX x XXX
- Taille : XXX x XXX
-
-
-
- Size: %1 x %2
- Taille : %1 x %2
-
-
-
- Paste multiline text
- Coller du texte multiligne
-
-
-
- Are you sure you want to paste this text?
- Êtes-vous sûr de vouloir coller ce texte ?
-
-
-
- <qt>Output has been <a href="http://en.wikipedia.org/wiki/Flow_control">suspended</a> by pressing Ctrl+S. Press <b>Ctrl+Q</b> to resume.</qt>
- <qt>La sortie a été <a href="http://en.wikipedia.org/wiki/Flow_control">suspendue</a> en appuyant sur Ctrl+S. Appuyez sur <b>Ctrl+Q</b> pour reprendre.</qt>
-
-
-
- UrlFilter
-
-
- Follow link (ctrl + click)
- Suivre le lien (ctrl + clic)
-
-
-
- Follow path (ctrl + click)
- Suivre le chemin (ctrl + clic)
-
-
-
- Vt102Emulation
-
-
- No keyboard translator available. The information needed to convert key presses into characters to send to the terminal is missing.
- Aucun traducteur de clavier disponible. Les informations nécessaires à la conversion des frappes de touches en caractères à envoyer au terminal sont manquantes.
-
-LockSessionWindow
@@ -3484,47 +3428,47 @@ Si vous avez besoin d'utiliser un autre shell, veuillez créer une session
QObject
-
+ Un-named Color SchemeSchéma de couleur sans nom
-
+ Accessible Color SchemeSchéma de couleur accessible
-
+ Open LinkOuvrir le lien
-
+ Copy Link AddressCopier l'adresse du lien
-
+ Send Email To...Envoyer un courriel à...
-
+ Copy Email AddressCopier l'adresse de courriel
-
+ Open PathOuvrir le chemin
-
+ Open Containing FolderOuvrir le dossier contenant
-
+ Copy PathCopier le chemin
@@ -3587,12 +3531,12 @@ Si vous avez besoin d'utiliser un autre shell, veuillez créer une session
QTermWidget
-
+ Color Scheme ErrorErreur de schéma de couleur
-
+ Cannot load color scheme: %1Impossible de charger le schéma de couleur : %1
@@ -3897,20 +3841,20 @@ Si vous avez besoin d'utiliser un autre shell, veuillez créer une session
Trouver :
-
-
+
+ Match caseRespecter la casse
-
-
+
+ Regular expressionExpression régulière
-
-
+
+ Highlight all matchesSurligner toutes les correspondances
@@ -4252,25 +4196,25 @@ Si vous avez besoin d'utiliser un autre shell, veuillez créer une session
SessionsWindow
-
+ Telnet ErrorErreur Telnet
-
+ Telnet error:
%1.Erreur Telnet :
%1.
-
-
+
+ Serial ErrorErreur série
-
+ Serial error:
%0
%1.
@@ -4279,133 +4223,133 @@ Si vous avez besoin d'utiliser un autre shell, veuillez créer une session
%1.
-
+ Raw Socket ErrorErreur de socket brut
-
+ Raw Socket error:
%1.Erreur de socket brut :
%1.
-
+ Name Pipe ErrorErreur de tube nommé
-
+ Name Pipe error:
%1.Erreur de tube nommé :
%1.
-
-
+
+ SSH2 ErrorErreur SSH2
-
-
+
+ SSH2 error:
%1.Erreur SSH2 :
%1.
-
-
+
+ Open URLOuvrir l'URL
-
-
+
+ Cannot open URL %1.Impossible d'ouvrir l'URL %1.
-
+ Select Files to Send using ZmodemSélectionner les fichiers à envoyer en utilisant Zmodem
-
+ All Files (*)Tous les fichiers (*)
-
+ Start Local ShellDémarrer le shell local
-
+ Cannot start local shell:
%1.Impossible de démarrer le shell local :
%1.
-
+ Serial port %1 has been removed.Le port série %1 a été supprimé.
-
+ Save log...Enregistrer le journal...
-
+ log files (*.log)Fichiers journaux (*.log)
-
+ Save logEnregistrer le journal
-
-
-
+
+
+ Cannot write file %1:
%2.Impossible d'écrire le fichier %1 :
%2.
-
+ Save Raw log...Enregistrer le journal brut...
-
+ binary files (*.bin)Fichiers binaires (*.bin)
-
+ Save Raw logEnregistrer le journal brut
-
+ Unlock SessionDéverrouiller la session
-
+ Wrong password!Mot de passe incorrect !
-
+ Receive ASCII FileRecevoir un fichier ASCII
@@ -4662,6 +4606,34 @@ Si vous avez besoin d'utiliser un autre shell, veuillez créer une session
Informations de transfert
+
+ TerminalDisplay
+
+
+ Size: XXX x XXX
+ Taille : XXX x XXX
+
+
+
+ Size: %1 x %2
+ Taille : %1 x %2
+
+
+
+ Paste multiline text
+ Coller du texte multiligne
+
+
+
+ Are you sure you want to paste this text?
+ Êtes-vous sûr de vouloir coller ce texte ?
+
+
+
+ <qt>Output has been <a href="http://en.wikipedia.org/wiki/Flow_control">suspended</a> by pressing Ctrl+S. Press <b>Ctrl+Q</b> to resume.</qt>
+ <qt>La sortie a été <a href="http://en.wikipedia.org/wiki/Flow_control">suspendue</a> en appuyant sur Ctrl+S. Appuyez sur <b>Ctrl+Q</b> pour reprendre.</qt>
+
+UndoStack
@@ -4680,6 +4652,27 @@ Si vous avez besoin d'utiliser un autre shell, veuillez créer une session
Écraser %1 caractères
+
+ UrlFilter
+
+
+ Follow link (ctrl + click)
+ Suivre le lien (ctrl + clic)
+
+
+
+ Follow path (ctrl + click)
+ Suivre le chemin (ctrl + clic)
+
+
+
+ Vt102Emulation
+
+
+ No keyboard translator available. The information needed to convert key presses into characters to send to the terminal is missing.
+ Aucun traducteur de clavier disponible. Les informations nécessaires à la conversion des frappes de touches en caractères à envoyer au terminal sont manquantes.
+
+keyMapManager
diff --git a/lang/quardCRT_ja_JP.ts b/lang/quardCRT_ja_JP.ts
index 5dd30fde..f47805cf 100644
--- a/lang/quardCRT_ja_JP.ts
+++ b/lang/quardCRT_ja_JP.ts
@@ -13,7 +13,7 @@
CentralWidget
-
+ Tool Barツールバー
@@ -26,21 +26,21 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Warning警告
@@ -285,7 +285,7 @@
-
+ Ready準備完了
@@ -464,7 +464,7 @@
-
+ Helpヘルプ
@@ -566,26 +566,27 @@
+ Enter host <Alt+R> to connect接続するホストを入力 <Alt+R>
-
+ Disconnect All全て切断
-
+ Disconnect all sessions全てのセッションを切断
-
+ Clone Sessionセッションを複製
-
+ Clone current session <Ctrl+Shift+T>現在のセッションを複製 <Ctrl+Shift+T>
@@ -595,564 +596,564 @@
セッションをロック
-
+ Log Sessionセッションを記録
-
+ Create a log file for current session現在のセッションを記録
-
+ Raw Log Sessionセッションを生記録
-
+ Create a raw log file for current session現在のセッションを生記録
-
+ Hex View16進数ビュー
-
+ Show/Hide Hex View for current session現在のセッションの16進数ビューを表示/非表示
-
+ Exit終了
-
+ Quit the applicationアプリケーションを終了
-
+ Copyコピー
-
+ Copy the selected text to the clipboard <Command+C>選択したテキストをクリップボードにコピー <Command+C>
-
+ Copy the selected text to the clipboard <Ctrl+Ins>選択したテキストをクリップボードにコピー <Ctrl+Ins>
-
+ Paste貼り付け
-
+ Paste the clipboard text to the current session <Command+V>クリップボードのテキストを現在のセッションに貼り付け <Command+V>
-
+ Paste the clipboard text to the current session <Shift+Ins>クリップボードのテキストを現在のセッションに貼り付け <Shift+Ins>
-
+ Copy and Pasteコピーと貼り付け
-
+ Copy the selected text to the clipboard and paste to the current session選択したテキストをクリップボードにコピーして現在のセッションに貼り付け
-
+ Select All全て選択
-
+ Select all text in the current session <Ctrl+Shift+A>現在のセッションの全てのテキストを選択 <Ctrl+Shift+A>
-
+ Find...検索...
-
+ Find text in the current session <Ctrl+F>現在のセッションのテキストを検索 <Ctrl+F>
-
+ Print Screenプリントスクリーン
-
+ Print current screen現在のスクリーンを印刷
-
+ Screen Shotスクリーンショット
-
+ Screen shot current screen <Alt+P>現在の画面をスクリーンショット <Alt+P>
-
+ Session Exportセッションをエクスポート
-
+ Export current session to a file <Alt+O>現在のセッションをファイルにエクスポート <Alt+O>
-
+ Clear Scrollbackスクロールバックをクリア
-
+ Clear the contents of the scrollback rowsスクロールバックの内容をクリア
-
+ Clear Screen画面をクリア
-
+ Clear the contents of the current screen現在の画面の内容をクリア
-
+ Clear Screen and Scrollback画面とスクロールバックをクリア
-
+ Clear the contents of the screen and scrollback画面とスクロールバックの内容をクリア
-
+ Resetリセット
-
+ Reset terminal emulator端末エミュレータをリセット
-
+ Zoom In拡大
-
+ Zoom In <Ctrl+"=">拡大 <Ctrl+"=">
-
+ Zoom Out縮小
-
+ Zoom Out <Ctrl+"-">縮小 <Ctrl+"-">
-
-
+
+ Zoom Resetズームリセット
-
+ Layoutレイアウト
-
+ Single Layoutシングルレイアウト
-
+ Single layoutシングルレイアウト
-
+ Two Columns Layout2列レイアウト
-
+ Two columns layout2列レイアウト
-
+ Three Columns Layout3列レイアウト
-
+ Three columns layout3列レイアウト
-
+ Two Rows Layout2行レイアウト
-
+ Two rows layout2行レイアウト
-
+ Three Rows Layout3行レイアウト
-
+ Three rows layout3行レイアウト
-
+ Grid Layoutグリッドレイアウト
-
+ Grid layoutグリッドレイアウト
-
+ Two Rows Right Layout2行右レイアウト
-
+ Two rows right layout2行右レイアウト
-
+ Two Columns Bottom Layout2列下レイアウト
-
+ Two columns bottom layout2列下レイアウト
-
+ Flip Layoutレイアウトを反転
-
+ Flip layoutレイアウトを反転
-
+ Menu Barメニューバー
-
+ Show/Hide Menu Bar <Alt+U>メニューバーを表示/非表示 <Alt+U>
-
+ Show/Hide Tool Barツールバーを表示/非表示
-
+ Status Barステータスバー
-
+ Show/Hide Status Barステータスバーを表示/非表示
-
+ Command Windowコマンドウィンドウ
-
+ Show/Hide Command Windowコマンドウィンドウを表示/非表示
-
+ Connect Bar接続バー
-
+ Show/Hide Connect Bar接続バーを表示/非表示
-
+ Side Windowサイドウィンドウ
-
+ Show/Hide Side Windowサイドウィンドウを表示/非表示
-
+ Windows Transparencyウィンドウの透明度
-
+ Enable/Disable alpha transparencyアルファ透明度を有効/無効
-
+ Vertical Scroll Bar垂直スクロールバー
-
+ Show/Hide Vertical Scroll Bar垂直スクロールバーを表示/非表示
-
+ Allways On Top常に最前面に表示
-
+ Show window always on topウィンドウを常に最前面に表示
-
+ Full Screen全画面表示
-
+ Toggle between full screen and normal mode <Alt+Enter>全画面表示と通常表示を切り替え <Alt+Enter>
-
+ Session Options...セッションオプション...
-
+ Configure session optionsセッションオプションを設定
-
+ Global Options...グローバルオプション...
-
+ Configure global optionsグローバルオプションを設定
-
+ Real-time Save Optionsリアルタイム保存設定
-
+ Real-time save session options and global optionsセッションオプションとグローバルオプションをリアルタイムで保存
-
+ Save Settings Now設定を保存
-
+ Save options configuration nowオプション設定を保存
-
+ Send ASCII...ASCII送信...
-
+ Send ASCII fileASCIIファイルを送信
-
+ Receive ASCII...ASCII受信...
-
+ Receive ASCII fileASCIIファイルを受信
-
+ Send Binary...バイナリ送信...
-
+ Send Binary fileバイナリファイルを送信
-
+ Send Kermit...Kermit送信...
-
+ Send a file using KermitKermitでファイルを送信
-
+ Receive Kermit...Kermit受信...
-
+ Receive a file using KermitKermitでファイルを受信
-
+ Send Xmodem...Xmodem送信...
-
+ Send a file using XmodemXmodemでファイルを送信
-
+ Receive Xmodem...Xmodem受信...
-
+ Receive a file using XmodemXmodemでファイルを受信
-
+ Send Ymodem...Ymodem送信...
-
+ Send a file using YmodemYmodemでファイルを送信
-
+ Receive Ymodem...Ymodem受信...
-
+ Receive a file using YmodemYmodemでファイルを受信
-
+ Zmodem Upload List...Zmodemアップロードリスト...
-
+ Display Zmodem file upload listZmodemファイルアップロードリストを表示
-
+ Start Zmodem UploadZmodemアップロード開始
-
+ Start Zmodem file uploadZmodemファイルアップロードを開始
-
+ Start TFTP ServerTFTPサーバー開始
-
+ Start/Stop the TFTP serverTFTPサーバーを開始/停止
-
+ Run...実行...
-
+ Run a scriptスクリプトを実行
-
+ Cancelキャンセル
@@ -1213,759 +1214,759 @@
色を変更
-
+ Cancel script executionスクリプト実行をキャンセル
-
+ Start Recording Scriptスクリプト記録開始
-
+ Start recording scriptスクリプト記録を開始
-
+ Stop Recording Script...スクリプト記録停止...
-
+ Stop recording scriptスクリプト記録を停止
-
+ Cancel Recording Scriptスクリプト記録キャンセル
-
+ Cancel recording scriptスクリプト記録をキャンセル
-
+ Add Bookmarkブックマークを追加
-
+ Add a bookmarkブックマークを追加
-
-
+
+ Remove Bookmarkブックマークを削除
-
+ Remove a bookmarkブックマークを削除
-
-
+
+ Clean All Bookmark全てのブックマークをクリア
-
+ Clean all bookmark全てのブックマークをクリア
-
+ Keymap Managerキーマップマネージャー
-
+ Display keymap editorキーマップエディターを表示
-
+ Create Public Key...公開鍵を作成...
-
+ Create a public key公開鍵を作成
-
+ Publickey Manager公開鍵マネージャー
-
+ Display publickey manager公開鍵マネージャーを表示
-
+ Internal Command内部コマンド
-
+ Display Internal Command window内部コマンドウィンドウを表示
-
+ Portuguese (Brazil)Português (Brasil)
-
+ Switch to Portuguese (Brazil)Mudar para Português (Brasil)
-
+ GermanDeutsch
-
+ Switch to GermanWechseln Sie zu Deutsch
-
+ Czechčeština
-
+ Switch to CzechPřepnout do češtiny
-
+ Arabicعربي
-
+ Switch to Arabicالتبديل إلى العربية
-
+ Theme Colorテーマカラー
-
+ Set theme color, cancel to use defaultテーマカラーを設定、デフォルトを使用するにはキャンセル
-
-
+
+ Keyborad Shortcuts Referenceキーボードショートカットリファレンス
-
+ Display keyborad shortcuts referenceキーボードショートカットリファレンスを表示
-
-
+
+ Privacy Statementプライバシーステートメント
-
+ Display privacy statementプライバシーステートメントを表示
-
-
+
+ About PythonPythonについて
-
+ Display about Python dialogPythonについてのダイアログを表示
-
+ Laboratory実験室
-
-
+
+ SSH ScanningSSHスキャン
-
+ Display SSH scanning dialogSSHスキャンダイアログを表示
-
+ Plugin metaData not found!プラグインのメタデータが見つかりません!
-
+ Plugin api version not found!プラグインAPIバージョンが見つかりません!
-
+ Plugin api version not match!プラグインAPIバージョンが一致しません!
-
+ Plugin menu not found!プラグインメニューが見つかりません!
-
+ Plugin init failed!プラグインの初期化に失敗しました!
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+ Broadcast session can't transfer file!ブロードキャストセッションはファイルを転送できません!
-
+ Select Files to Send as ASCIIASCIIとして送信するファイルを選択
-
-
+
+ Text Files (*.txt);;All Files (*)テキストファイル (*.txt);;全てのファイル (*)
-
+ Save Received Data as ASCII受信データをASCIIとして保存
-
+ Select Files to Send as BINARYバイナリとして送信するファイルを選択
-
-
-
-
-
-
+
+
+
+
+
+ All Files (*)全てのファイル (*)
-
+ Select Files to Send using KermitKermitを使用して送信するファイルを選択
-
+ Select Files to Send using XmodemXmodemを使用して送信するファイルを選択
-
+ Save Received Files using XmodemXmodemを使用して受信したファイルを保存
-
+ Select Files to Send using YmodemYmodemを使用して送信するファイルを選択
-
+ Select Files to Send using ZmodemZmodemを使用して送信するファイルを選択
-
+ Select a script fileスクリプトファイルを選択
-
+ Python Files (*.py);;All Files (*)Pythonファイル (*.py);;全てのファイル (*)
-
+ Select color色を選択
-
+ Are you sure to disconnect "本当に切断しますか"
-
+ " session?" セッション?
-
+ This software is a terminal emulator that provides a secure shell (SSH) connection, telnet connection, serial port connection, and other functions.このソフトウェアは、セキュアシェル(SSH)接続、telnet接続、シリアルポート接続などを提供する端末エミュレータです。
-
+ This software does not collect any personal information, and does not send any information to the server.このソフトウェアは個人情報を収集せず、サーバーに情報を送信しません。
-
+ This software does not contain any malicious code, and does not contain any backdoors.このソフトウェアには悪意のあるコードは含まれておらず、バックドアも含まれていません。
-
+ This software is open source software, you can view the source code on the github website.このソフトウェアはオープンソースソフトウェアです。ソースコードはgithubのウェブサイトで閲覧できます。
-
+ This software is provided as is, without any warranty.このソフトウェアは無保証で提供されます。
-
+ If you have any questions or suggestions, please contact the author.質問や提案がある場合は、作者に連絡してください。
-
+ Versionバージョン
-
+ Commitコミット
-
+ Date日付
-
-
+
+ Author作者
-
+ Websiteウェブサイト
-
+ Tabタブ
-
+ Arrange sessions in tabsセッションをタブで表示
-
+ Tileタイル
-
+ Arrange sessions in non-overlapping tilesセッションを重ならないようにタイルで表示
-
+ Cascadeカスケード
-
+ Arrange sessions to overlap each otherセッションを重ねて表示
-
+ Simplified Chinese简体中文
-
+ Switch to Simplified Chinese切换到简体中文
-
+ Traditional Chinese繁體中文
-
+ Switch to Traditional Chinese切換到繁體中文
-
+ RussianРусский
-
+ Switch to RussianПереключиться на русский
-
+ Korean한국어
-
+ Switch to Korean한국어로 전환
-
+ Japanese日本語
-
+ Switch to Japanese日本語に切り替える
-
+ Frenchfrançais
-
+ Switch to FrenchPasser au français
-
+ Spanishespañol
-
+ Switch to SpanishCambiar a español
-
+ English
-
+ Switch to English
-
+ Light明るい
-
+ Switch to light theme明るいテーマに切り替える
-
+ Dark暗い
-
+ Switch to dark theme暗いテーマに切り替える
-
+ Display helpヘルプを表示
-
+ Check Update更新をチェック
-
+ Check for updates更新をチェック
-
-
+
+ Aboutについて
-
+ Display about dialogについてのダイアログを表示
-
+ About QtQtについて
-
+ Display about Qt dialogQtについてのダイアログを表示
-
+ Plugin Infoプラグイン情報
-
+ Display plugin information dialogプラグイン情報ダイアログを表示
-
+ PrintScreen saved to %1プリントスクリーンを %1 に保存
-
+ Save Screenshotスクリーンショットを保存
-
+ Image Files (*.jpg)画像ファイル (*.jpg)
-
-
+
+ Screenshot saved to %1スクリーンショットを %1 に保存
-
+ Save Session Exportセッションエクスポートを保存
-
+ Text Files (*.txt);;HTML Files (*.html)テキストファイル (*.txt);;HTMLファイル (*.html)
-
+ Text Files (*.txt)テキストファイル (*.txt)
-
+ HTML Files (*.html)HTMLファイル (*.html)
-
+ Session Export saved to %1セッションエクスポートを %1 に保存
-
+ Session Export failed to save to %1セッションエクスポートを %1 に保存できませんでした
-
+ Select a directoryディレクトリを選択
-
+ Select a bookmarkブックマークを選択
-
+ Are you sure to clean all bookmark?全てのブックマークをクリアしてもよろしいですか?
-
+ Portポート
-
+ Video background is enabled, please enable animation in global options (more system resources) or change background image.ビデオ背景が有効になっています。グローバルオプションでアニメーションを有効にするか、背景画像を変更してください(システムリソースが増えます)。
-
+ Session information get failed.セッション情報の取得に失敗しました。
-
+ Telnet -
-
+ Telnet
-
+ Serial - シリアル -
-
+ Serialシリアル
-
+ Raw -
-
+ Raw
-
+ NamePipe - 名前付きパイプ -
-
+ NamePipe名前付きパイプ
-
-
+
+ Local Shellローカル端末
-
+ Local Shell - ローカル端末 -
-
+ Global Shortcuts:グローバルショートカット:
-
+ show/hide menu barメニューバーを表示/非表示
-
+ connect to LocalShellローカル端末に接続
-
+ clone current session現在のセッションを複製
-
+ switch ui to STD modeUIを標準モードに切り替え
-
+ switch ui to MINI modeUIをミニモードに切り替え
-
+ switch to previous session前のセッションに切り替え
-
+ switch to next session次のセッションに切り替え
-
+ switch to session [num]セッション[num]に切り替え
-
+ Go to line start行頭に移動
-
+ Go to line end行末に移動
-
+ There are sessions that have not yet been unlocked, please unlock them first.ロックされていないセッションがあります。まずロックを解除して下さい。
-
+ Are you sure to quit?終了してもよろしいですか?
@@ -2697,8 +2698,8 @@
-
-
+
+ Warning警告
@@ -2735,7 +2736,7 @@ PowerShell 5以降を使用してください!
-
+ The Default Local Shell is not a valid file!デフォルトのローカル端末は有効なファイルではありません!
@@ -2785,7 +2786,7 @@ PowerShell 5以降を使用してください!
転送
-
+ The User Plugins Path is not a directory!ユーザープラグインのパスはディレクトリではありません!
@@ -2869,93 +2870,36 @@ PowerShell 5以降を使用してください!
内部コマンド
-
+ Copyコピー
-
+ Paste貼り付け
-
+ Select All全て選択
-
+ Find検索
-
+ Zoom In拡大
-
+ Zoom Out縮小
-
- Session
-
-
- Bell in session '%1'
- セッション '%1' でベル
-
-
-
- TerminalDisplay
-
-
- Size: XXX x XXX
- サイズ: XXX x XXX
-
-
-
- Size: %1 x %2
- サイズ: %1 x %2
-
-
-
- Paste multiline text
- 複数行のテキストを貼り付ける
-
-
-
- Are you sure you want to paste this text?
- このテキストを貼り付けてもよろしいですか?
-
-
-
- <qt>Output has been <a href="http://en.wikipedia.org/wiki/Flow_control">suspended</a> by pressing Ctrl+S. Press <b>Ctrl+Q</b> to resume.</qt>
- <qt>Ctrl+Sを押すと出力が<a href="http://en.wikipedia.org/wiki/Flow_control">中断</a>されます。再開するには<b>Ctrl+Q</b>を押して下さい。</qt>
-
-
-
- UrlFilter
-
-
- Follow link (ctrl + click)
- リンクを開く (ctrl + click)
-
-
-
- Follow path (ctrl + click)
- パスを開く (ctrl + click)
-
-
-
- Vt102Emulation
-
-
- No keyboard translator available. The information needed to convert key presses into characters to send to the terminal is missing.
- キーボード変換がありません。キー入力を端末に送信するための情報がありません。
-
-LockSessionWindow
@@ -3484,47 +3428,47 @@ PowerShell 5以降を使用してください!
QObject
-
+ Un-named Color Scheme名前のないカラースキーム
-
+ Accessible Color Schemeアクセシブルカラースキーム
-
+ Open Linkリンクを開く
-
+ Copy Link Addressリンクアドレスをコピー
-
+ Send Email To...メールを送信...
-
+ Copy Email Addressメールアドレスをコピー
-
+ Open Pathパスを開く
-
+ Open Containing Folder含まれるフォルダを開く
-
+ Copy Pathパスをコピー
@@ -3587,12 +3531,12 @@ PowerShell 5以降を使用してください!
QTermWidget
-
+ Color Scheme Errorカラースキームエラー
-
+ Cannot load color scheme: %1カラースキームを読み込めません: %1
@@ -3897,20 +3841,20 @@ PowerShell 5以降を使用してください!
検索:
-
-
+
+ Match case大文字と小文字を区別する
-
-
+
+ Regular expression正規表現
-
-
+
+ Highlight all matches全ての一致箇所をハイライトする
@@ -4252,25 +4196,25 @@ PowerShell 5以降を使用してください!
SessionsWindow
-
+ Telnet ErrorTELNETエラー
-
+ Telnet error:
%1.TELNETエラー:
%1.
-
-
+
+ Serial Errorシリアルエラー
-
+ Serial error:
%0
%1.
@@ -4279,133 +4223,133 @@ PowerShell 5以降を使用してください!
%1.
-
+ Raw Socket Error生ソケットエラー
-
+ Raw Socket error:
%1.生ソケットエラー:
%1.
-
+ Name Pipe Error名前付きパイプエラー
-
+ Name Pipe error:
%1.名前付きパイプエラー:
%1.
-
-
+
+ SSH2 ErrorSSH2エラー
-
-
+
+ SSH2 error:
%1.SSH2エラー:
%1.
-
-
+
+ Open URLURLを開く
-
-
+
+ Cannot open URL %1.URL %1 を開けません。
-
+ Select Files to Send using ZmodemZmodemを使用して送信するファイルを選択
-
+ All Files (*)全てのファイル (*)
-
+ Start Local Shellローカル端末を開始
-
+ Cannot start local shell:
%1.ローカル端末を開始できません:
%1.
-
+ Serial port %1 has been removed.シリアルポート %1 が削除されました。
-
+ Save log...ログを保存...
-
+ log files (*.log)ログファイル (*.log)
-
+ Save logログを保存
-
-
-
+
+
+ Cannot write file %1:
%2.ファイル %1 に書き込めません:
%2.
-
+ Save Raw log...生ログを保存...
-
+ binary files (*.bin)バイナリファイル (*.bin)
-
+ Save Raw log生ログを保存
-
+ Unlock Sessionセッションをアンロック
-
+ Wrong password!パスワードが間違っています!
-
+ Receive ASCII FileASCIIファイルを受信
@@ -4662,6 +4606,34 @@ PowerShell 5以降を使用してください!
転送情報
+
+ TerminalDisplay
+
+
+ Size: XXX x XXX
+ サイズ: XXX x XXX
+
+
+
+ Size: %1 x %2
+ サイズ: %1 x %2
+
+
+
+ Paste multiline text
+ 複数行のテキストを貼り付ける
+
+
+
+ Are you sure you want to paste this text?
+ このテキストを貼り付けてもよろしいですか?
+
+
+
+ <qt>Output has been <a href="http://en.wikipedia.org/wiki/Flow_control">suspended</a> by pressing Ctrl+S. Press <b>Ctrl+Q</b> to resume.</qt>
+ <qt>Ctrl+Sを押すと出力が<a href="http://en.wikipedia.org/wiki/Flow_control">中断</a>されます。再開するには<b>Ctrl+Q</b>を押して下さい。</qt>
+
+UndoStack
@@ -4680,6 +4652,27 @@ PowerShell 5以降を使用してください!
%1 文字を上書き
+
+ UrlFilter
+
+
+ Follow link (ctrl + click)
+ リンクを開く (ctrl + click)
+
+
+
+ Follow path (ctrl + click)
+ パスを開く (ctrl + click)
+
+
+
+ Vt102Emulation
+
+
+ No keyboard translator available. The information needed to convert key presses into characters to send to the terminal is missing.
+ キーボード変換がありません。キー入力を端末に送信するための情報がありません。
+
+keyMapManager
diff --git a/lang/quardCRT_ko_KR.ts b/lang/quardCRT_ko_KR.ts
index 3f9bf470..63864961 100644
--- a/lang/quardCRT_ko_KR.ts
+++ b/lang/quardCRT_ko_KR.ts
@@ -13,7 +13,7 @@
CentralWidget
-
+ Tool Bar툴바
@@ -26,21 +26,21 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Warning경고
@@ -285,7 +285,7 @@
-
+ Ready준비 완료
@@ -464,7 +464,7 @@
-
+ Help도움말
@@ -566,26 +566,27 @@
+ Enter host <Alt+R> to connect연결할 호스트 입력 <Alt+R>
-
+ Disconnect All모두 연결 해제
-
+ Disconnect all sessions모든 세션 연결 해제
-
+ Clone Session세션 복제
-
+ Clone current session <Ctrl+Shift+T>현재 세션 복제 <Ctrl+Shift+T>
@@ -595,564 +596,564 @@
세션 잠금
-
+ Log Session세션 로그
-
+ Create a log file for current session현재 세션의 로그 파일 생성
-
+ Raw Log Session세션 로그(원본)
-
+ Create a raw log file for current session현재 세션의 원본 로그 파일 생성
-
+ Hex View16진수 보기
-
+ Show/Hide Hex View for current session현재 세션의 16진수 보기 표시/숨기기
-
+ Exit종료
-
+ Quit the application애플리케이션 종료
-
+ Copy복사
-
+ Copy the selected text to the clipboard <Command+C>선택한 텍스트를 클립보드에 복사 <Command+C>
-
+ Copy the selected text to the clipboard <Ctrl+Ins>선택한 텍스트를 클립보드에 복사 <Ctrl+Ins>
-
+ Paste붙여넣기
-
+ Paste the clipboard text to the current session <Command+V>클립보드 텍스트를 현재 세션에 붙여넣기 <Command+V>
-
+ Paste the clipboard text to the current session <Shift+Ins>클립보드 텍스트를 현재 세션에 붙여넣기 <Shift+Ins>
-
+ Copy and Paste복사 및 붙여넣기
-
+ Copy the selected text to the clipboard and paste to the current session선택한 텍스트를 클립보드에 복사하고 현재 세션에 붙여넣기
-
+ Select All모두 선택
-
+ Select all text in the current session <Ctrl+Shift+A>현재 세션의 모든 텍스트 선택 <Ctrl+Shift+A>
-
+ Find...찾기...
-
+ Find text in the current session <Ctrl+F>현재 세션에서 텍스트 찾기 <Ctrl+F>
-
+ Print Screen스크린 샷
-
+ Print current screen현재 화면 인쇄
-
+ Screen Shot스크린 샷
-
+ Screen shot current screen <Alt+P>현재 화면 스크린 샷 <Alt+P>
-
+ Session Export세션 내보내기
-
+ Export current session to a file <Alt+O>현재 세션을 파일로 내보내기 <Alt+O>
-
+ Clear Scrollback스크롤백 지우기
-
+ Clear the contents of the scrollback rows스크롤백 행의 내용 지우기
-
+ Clear Screen화면 지우기
-
+ Clear the contents of the current screen현재 화면의 내용 지우기
-
+ Clear Screen and Scrollback화면과 스크롤백 지우기
-
+ Clear the contents of the screen and scrollback화면과 스크롤백의 내용 지우기
-
+ Reset재설정
-
+ Reset terminal emulator터미널 에뮬레이터 재설정
-
+ Zoom In확대
-
+ Zoom In <Ctrl+"=">확대 <Ctrl+"=">
-
+ Zoom Out축소
-
+ Zoom Out <Ctrl+"-">축소 <Ctrl+"-">
-
-
+
+ Zoom Reset확대/축소 초기화
-
+ Layout레이아웃
-
+ Single Layout단일 레이아웃
-
+ Single layout단일 레이아웃
-
+ Two Columns Layout두 열 레이아웃
-
+ Two columns layout두 열 레이아웃
-
+ Three Columns Layout세 열 레이아웃
-
+ Three columns layout세 열 레이아웃
-
+ Two Rows Layout두 행 레이아웃
-
+ Two rows layout두 행 레이아웃
-
+ Three Rows Layout세 행 레이아웃
-
+ Three rows layout세 행 레이아웃
-
+ Grid Layout그리드 레이아웃
-
+ Grid layout그리드 레이아웃
-
+ Two Rows Right Layout오른쪽 두 행 레이아웃
-
+ Two rows right layout오른쪽 두 행 레이아웃
-
+ Two Columns Bottom Layout아래쪽 두 열 레이아웃
-
+ Two columns bottom layout아래쪽 두 열 레이아웃
-
+ Flip Layout레이아웃 뒤집기
-
+ Flip layout레이아웃 뒤집기
-
+ Menu Bar메뉴 바
-
+ Show/Hide Menu Bar <Alt+U>메뉴 바 표시/숨기기 <Alt+U>
-
+ Show/Hide Tool Bar툴바 표시/숨기기
-
+ Status Bar상태 바
-
+ Show/Hide Status Bar상태 바 표시/숨기기
-
+ Command Window명령 창
-
+ Show/Hide Command Window명령 창 표시/숨기기
-
+ Connect Bar연결 바
-
+ Show/Hide Connect Bar연결 바 표시/숨기기
-
+ Side Window사이드 창
-
+ Show/Hide Side Window사이드 창 표시/숨기기
-
+ Windows Transparency창 투명도
-
+ Enable/Disable alpha transparency알파 투명도 사용/사용 안 함
-
+ Vertical Scroll Bar수직 스크롤 바
-
+ Show/Hide Vertical Scroll Bar수직 스크롤 바 표시/숨기기
-
+ Allways On Top항상 위에 표시
-
+ Show window always on top창을 항상 위에 표시
-
+ Full Screen전체 화면
-
+ Toggle between full screen and normal mode <Alt+Enter>전체 화면 모드와 일반 모드 전환 <Alt+Enter>
-
+ Session Options...세션 옵션...
-
+ Configure session options세션 옵션 구성
-
+ Global Options...전역 옵션...
-
+ Configure global options전역 옵션 구성
-
+ Real-time Save Options실시간 저장 옵션
-
+ Real-time save session options and global options세션 옵션과 전역 옵션을 실시간으로 저장
-
+ Save Settings Now설정 지금 저장
-
+ Save options configuration now옵션 구성 지금 저장
-
+ Send ASCII...ASCII 전송...
-
+ Send ASCII fileASCII 파일 전송
-
+ Receive ASCII...ASCII 수신...
-
+ Receive ASCII fileASCII 파일 수신
-
+ Send Binary...바이너리 전송...
-
+ Send Binary file바이너리 파일 전송
-
+ Send Kermit...Kermit 전송...
-
+ Send a file using KermitKermit을 사용하여 파일 전송
-
+ Receive Kermit...Kermit 수신...
-
+ Receive a file using KermitKermit을 사용하여 파일 수신
-
+ Send Xmodem...Xmodem 전송...
-
+ Send a file using XmodemXmodem을 사용하여 파일 전송
-
+ Receive Xmodem...Xmodem 수신...
-
+ Receive a file using XmodemXmodem을 사용하여 파일 수신
-
+ Send Ymodem...Ymodem 전송...
-
+ Send a file using YmodemYmodem을 사용하여 파일 전송
-
+ Receive Ymodem...Ymodem 수신...
-
+ Receive a file using YmodemYmodem을 사용하여 파일 수신
-
+ Zmodem Upload List...Zmodem 파일 업로드 목록...
-
+ Display Zmodem file upload listZmodem 파일 업로드 목록 표시
-
+ Start Zmodem UploadZmodem 파일 업로드 시작
-
+ Start Zmodem file uploadZmodem 파일 업로드 시작
-
+ Start TFTP ServerTFTP 서버 시작
-
+ Start/Stop the TFTP serverTFTP 서버 시작/중지
-
+ Run...실행...
-
+ Run a script스크립트 실행
-
+ Cancel취소
@@ -1213,759 +1214,759 @@
색상 변경
-
+ Cancel script execution스크립트 실행 취소
-
+ Start Recording Script스크립트 녹화 시작
-
+ Start recording script스크립트 녹화 시작
-
+ Stop Recording Script...스크립트 녹화 중지...
-
+ Stop recording script스크립트 녹화 중지
-
+ Cancel Recording Script스크립트 녹화 취소
-
+ Cancel recording script스크립트 녹화 취소
-
+ Add Bookmark북마크 추가
-
+ Add a bookmark북마크 추가
-
-
+
+ Remove Bookmark북마크 제거
-
+ Remove a bookmark북마크 제거
-
-
+
+ Clean All Bookmark모든 북마크 지우기
-
+ Clean all bookmark모든 북마크 지우기
-
+ Keymap Manager키맵 관리자
-
+ Display keymap editor키맵 편집기 표시
-
+ Create Public Key...공개 키 생성...
-
+ Create a public key공개 키 생성
-
+ Publickey Manager공개 키 관리자
-
+ Display publickey manager공개 키 관리자 표시
-
+ Internal Command내부 명령
-
+ Display Internal Command window내부 명령 창 표시
-
+ Portuguese (Brazil)Português (Brasil)
-
+ Switch to Portuguese (Brazil)Mudar para Português (Brasil)
-
+ GermanDeutsch
-
+ Switch to GermanWechseln Sie zu Deutsch
-
+ Czechčeština
-
+ Switch to CzechPřepnout do češtiny
-
+ Arabicعربي
-
+ Switch to Arabicالتبديل إلى العربية
-
+ Theme Color테마 색상
-
+ Set theme color, cancel to use default테마 색상 설정, 기본값 사용하려면 취소
-
-
+
+ Keyborad Shortcuts Reference키보드 단축키 참조
-
+ Display keyborad shortcuts reference키보드 단축키 참조 표시
-
-
+
+ Privacy Statement개인 정보 보호 정책
-
+ Display privacy statement개인 정보 보호 정책 표시
-
-
+
+ About PythonPython 정보
-
+ Display about Python dialogPython 정보 대화 상자 표시
-
+ Laboratory실험실
-
-
+
+ SSH ScanningSSH 스캔
-
+ Display SSH scanning dialogSSH 스캔 대화 상자 표시
-
+ Plugin metaData not found!플러그인 메타데이터를 찾을 수 없습니다!
-
+ Plugin api version not found!플러그인 API 버전을 찾을 수 없습니다!
-
+ Plugin api version not match!플러그인 API 버전이 일치하지 않습니다!
-
+ Plugin menu not found!플러그인 메뉴를 찾을 수 없습니다!
-
+ Plugin init failed!플러그인 초기화 실패!
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+ Broadcast session can't transfer file!브로드캐스트 세션은 파일을 전송할 수 없습니다!
-
+ Select Files to Send as ASCIIASCII로 전송할 파일 선택
-
-
+
+ Text Files (*.txt);;All Files (*)텍스트 파일 (*.txt);;모든 파일 (*)
-
+ Save Received Data as ASCII수신된 데이터를 ASCII로 저장
-
+ Select Files to Send as BINARY바이너리로 전송할 파일 선택
-
-
-
-
-
-
+
+
+
+
+
+ All Files (*)모든 파일 (*)
-
+ Select Files to Send using KermitKermit을 사용하여 전송할 파일 선택
-
+ Select Files to Send using XmodemXmodem을 사용하여 전송할 파일 선택
-
+ Save Received Files using XmodemXmodem을 사용하여 수신된 파일 저장
-
+ Select Files to Send using YmodemYmodem을 사용하여 전송할 파일 선택
-
+ Select Files to Send using ZmodemZmodem을 사용하여 전송할 파일 선택
-
+ Select a script file스크립트 파일 선택
-
+ Python Files (*.py);;All Files (*)Python 파일 (*.py);;모든 파일 (*)
-
+ Select color색상 선택
-
+ Are you sure to disconnect "를 연결 해제하시겠습니까? "
-
+ " session?" 세션?
-
+ This software is a terminal emulator that provides a secure shell (SSH) connection, telnet connection, serial port connection, and other functions.이 소프트웨어는 안전한 셸 (SSH) 연결, 텔넷 연결, 시리얼 포트 연결 및 기타 기능을 제공하는 터미널 에뮬레이터입니다.
-
+ This software does not collect any personal information, and does not send any information to the server.이 소프트웨어는 개인 정보를 수집하지 않으며 서버로 정보를 전송하지 않습니다.
-
+ This software does not contain any malicious code, and does not contain any backdoors.이 소프트웨어에는 악성 코드가 포함되어 있지 않으며 백도어도 포함되어 있지 않습니다.
-
+ This software is open source software, you can view the source code on the github website.이 소프트웨어는 오픈 소스 소프트웨어이며, 소스 코드를 github 웹사이트에서 볼 수 있습니다.
-
+ This software is provided as is, without any warranty.이 소프트웨어는 어떠한 보증도 없이 제공됩니다.
-
+ If you have any questions or suggestions, please contact the author.질문이나 제안 사항이 있으면 작성자에게 문의하십시오.
-
+ Version버전
-
+ Commit커밋
-
+ Date날짜
-
-
+
+ Author작성자
-
+ Website웹사이트
-
+ Tab탭
-
+ Arrange sessions in tabs탭에 세션 정렬
-
+ Tile타일
-
+ Arrange sessions in non-overlapping tiles겹치지 않는 타일에 세션 정렬
-
+ Cascade계단식
-
+ Arrange sessions to overlap each other서로 겹치도록 세션 정렬
-
+ Simplified Chinese简体中文
-
+ Switch to Simplified Chinese切换到简体中文
-
+ Traditional Chinese繁體中文
-
+ Switch to Traditional Chinese切換到繁體中文
-
+ RussianРусский
-
+ Switch to RussianПереключиться на русский
-
+ Korean한국어
-
+ Switch to Korean한국어로 전환
-
+ Japanese日本語
-
+ Switch to Japanese日本語に切り替える
-
+ Frenchfrançais
-
+ Switch to FrenchPasser au français
-
+ Spanishespañol
-
+ Switch to SpanishCambiar a español
-
+ English
-
+ Switch to English
-
+ Light밝게
-
+ Switch to light theme밝은 테마로 전환
-
+ Dark어둡게
-
+ Switch to dark theme어두운 테마로 전환
-
+ Display help도움말 표시
-
+ Check Update업데이트 확인
-
+ Check for updates업데이트 확인
-
-
+
+ About정보
-
+ Display about dialog정보 대화 상자 표시
-
+ About QtQt 정보
-
+ Display about Qt dialogQt 정보 대화 상자 표시
-
+ Plugin Info플러그인 정보
-
+ Display plugin information dialog플러그인 정보 대화 상자 표시
-
+ PrintScreen saved to %1스크린 샷 저장 위치: %1
-
+ Save Screenshot스크린 샷 저장
-
+ Image Files (*.jpg)이미지 파일 (*.jpg)
-
-
+
+ Screenshot saved to %1스크린 샷 저장 위치: %1
-
+ Save Session Export세션 내보내기 저장
-
+ Text Files (*.txt);;HTML Files (*.html)텍스트 파일 (*.txt);;HTML 파일 (*.html)
-
+ Text Files (*.txt)텍스트 파일 (*.txt)
-
+ HTML Files (*.html)HTML 파일 (*.html)
-
+ Session Export saved to %1세션 내보내기 저장 위치: %1
-
+ Session Export failed to save to %1세션 내보내기 저장 위치: %1
-
+ Select a directory디렉터리 선택
-
+ Select a bookmark북마크 선택
-
+ Are you sure to clean all bookmark?모든 북마크를 지우시겠습니까?
-
+ Port포트
-
+ Video background is enabled, please enable animation in global options (more system resources) or change background image.비디오 배경이 활성화되었습니다. 전역 옵션에서 애니메이션을 활성화하거나(시스템 리소스가 더 필요함) 배경 이미지를 변경하십시오.
-
+ Session information get failed.세션 정보 가져오기 실패.
-
+ Telnet -
-
+ Telnet텔넷
-
+ Serial - 시리얼 -
-
+ Serial시리얼
-
+ Raw - Raw -
-
+ RawRaw
-
+ NamePipe - 네임 파이프 -
-
+ NamePipe네임 파이프
-
-
+
+ Local Shell로컬 쉘
-
+ Local Shell - 로컬 쉘 -
-
+ Global Shortcuts:전역 단축키:
-
+ show/hide menu bar메뉴 바 표시/숨기기
-
+ connect to LocalShell로컬 쉘에 연결
-
+ clone current session현재 세션 복제
-
+ switch ui to STD modeSTD 모드로 UI 전환
-
+ switch ui to MINI modeMINI 모드로 UI 전환
-
+ switch to previous session이전 세션으로 전환
-
+ switch to next session다음 세션으로 전환
-
+ switch to session [num]세션 [num]으로 전환
-
+ Go to line start줄 시작으로 이동
-
+ Go to line end줄 끝으로 이동
-
+ There are sessions that have not yet been unlocked, please unlock them first.아직 잠금 해제되지 않은 세션이 있습니다. 먼저 잠금을 해제하십시오.
-
+ Are you sure to quit?종료하시겠습니까?
@@ -2707,8 +2708,8 @@
-
-
+
+ Warning경고
@@ -2745,7 +2746,7 @@ PowerShell 5 이상을 사용하십시오!
-
+ The Default Local Shell is not a valid file!기본 로컬 쉘이 유효한 파일이 아닙니다!
@@ -2795,7 +2796,7 @@ PowerShell 5 이상을 사용하십시오!
전송
-
+ The User Plugins Path is not a directory!사용자 플러그인 경로가 디렉터리가 아닙니다!
@@ -2869,93 +2870,36 @@ PowerShell 5 이상을 사용하십시오!
내부 명령어
-
+ Copy복사
-
+ Paste붙여넣기
-
+ Select All모두 선택
-
+ Find찾기
-
+ Zoom In확대
-
+ Zoom Out축소
-
- Session
-
-
- Bell in session '%1'
- '%1' 세션에서 벨
-
-
-
- TerminalDisplay
-
-
- Size: XXX x XXX
- 크기: XXX x XXX
-
-
-
- Size: %1 x %2
- 크기: %1 x %2
-
-
-
- Paste multiline text
- 여러 줄 텍스트 붙여넣기
-
-
-
- Are you sure you want to paste this text?
- 이 텍스트를 붙여넣으시겠습니까?
-
-
-
- <qt>Output has been <a href="http://en.wikipedia.org/wiki/Flow_control">suspended</a> by pressing Ctrl+S. Press <b>Ctrl+Q</b> to resume.</qt>
- <qt>Ctrl+S를 눌러 출력이 <a href="http://en.wikipedia.org/wiki/Flow_control">중지</a>되었습니다. 재개하려면 <b>Ctrl+Q</b>를 누르십시오.</qt>
-
-
-
- UrlFilter
-
-
- Follow link (ctrl + click)
- 링크 따라가기 (ctrl + 클릭)
-
-
-
- Follow path (ctrl + click)
- 경로 따라가기 (ctrl + 클릭)
-
-
-
- Vt102Emulation
-
-
- No keyboard translator available. The information needed to convert key presses into characters to send to the terminal is missing.
- 사용 가능한 키보드 변환기가 없습니다. 키를 문자로 변환하여 터미널로 보내는 데 필요한 정보가 없습니다.
-
-LockSessionWindow
@@ -3484,47 +3428,47 @@ PowerShell 5 이상을 사용하십시오!
QObject
-
+ Un-named Color Scheme이름 없는 색상 구성표
-
+ Accessible Color Scheme접근 가능한 색상 구성표
-
+ Open Link링크 열기
-
+ Copy Link Address링크 주소 복사
-
+ Send Email To...이메일 보내기...
-
+ Copy Email Address이메일 주소 복사
-
+ Open Path경로 열기
-
+ Open Containing Folder폴더 열기
-
+ Copy Path경로 복사
@@ -3587,12 +3531,12 @@ PowerShell 5 이상을 사용하십시오!
QTermWidget
-
+ Color Scheme Error색상 구성표 오류
-
+ Cannot load color scheme: %1색상 구성표를 불러올 수 없습니다: %1
@@ -3897,20 +3841,20 @@ PowerShell 5 이상을 사용하십시오!
찾기:
-
-
+
+ Match case대소문자 구분
-
-
+
+ Regular expression정규식
-
-
+
+ Highlight all matches모든 일치 항목 강조 표시
@@ -4252,25 +4196,25 @@ PowerShell 5 이상을 사용하십시오!
SessionsWindow
-
+ Telnet Error텔넷 오류
-
+ Telnet error:
%1.텔넷 오류:
%1.
-
-
+
+ Serial Error시리얼 오류
-
+ Serial error:
%0
%1.
@@ -4279,133 +4223,133 @@ PowerShell 5 이상을 사용하십시오!
%1.
-
+ Raw Socket ErrorRaw 소켓 오류
-
+ Raw Socket error:
%1.Raw 소켓 오류:
%1.
-
+ Name Pipe Error네임 파이프 오류
-
+ Name Pipe error:
%1.네임 파이프 오류:
%1.
-
-
+
+ SSH2 ErrorSSH2 오류
-
-
+
+ SSH2 error:
%1.SSH2 오류:
%1.
-
-
+
+ Open URLURL 열기
-
-
+
+ Cannot open URL %1.%1 URL을 열 수 없습니다.
-
+ Select Files to Send using ZmodemZmodem을 사용하여 전송할 파일 선택
-
+ All Files (*)모든 파일 (*)
-
+ Start Local Shell로컬 쉘 시작
-
+ Cannot start local shell:
%1.로컬 쉘을 시작할 수 없습니다:
%1.
-
+ Serial port %1 has been removed.시리얼 포트 %1이 제거되었습니다.
-
+ Save log...로그 저장...
-
+ log files (*.log)로그 파일 (*.log)
-
+ Save log로그 저장
-
-
-
+
+
+ Cannot write file %1:
%2.%1 파일을 쓸 수 없습니다:
%2.
-
+ Save Raw log...Raw 로그 저장...
-
+ binary files (*.bin)바이너리 파일 (*.bin)
-
+ Save Raw logRaw 로그 저장
-
+ Unlock Session세션 잠금 해제
-
+ Wrong password!잘못된 비밀번호!
-
+ Receive ASCII FileASCII 파일 받기
@@ -4662,6 +4606,34 @@ PowerShell 5 이상을 사용하십시오!
전송 정보
+
+ TerminalDisplay
+
+
+ Size: XXX x XXX
+ 크기: XXX x XXX
+
+
+
+ Size: %1 x %2
+ 크기: %1 x %2
+
+
+
+ Paste multiline text
+ 여러 줄 텍스트 붙여넣기
+
+
+
+ Are you sure you want to paste this text?
+ 이 텍스트를 붙여넣으시겠습니까?
+
+
+
+ <qt>Output has been <a href="http://en.wikipedia.org/wiki/Flow_control">suspended</a> by pressing Ctrl+S. Press <b>Ctrl+Q</b> to resume.</qt>
+ <qt>Ctrl+S를 눌러 출력이 <a href="http://en.wikipedia.org/wiki/Flow_control">중지</a>되었습니다. 재개하려면 <b>Ctrl+Q</b>를 누르십시오.</qt>
+
+UndoStack
@@ -4680,6 +4652,27 @@ PowerShell 5 이상을 사용하십시오!
%1 문자 덮어쓰기
+
+ UrlFilter
+
+
+ Follow link (ctrl + click)
+ 링크 따라가기 (ctrl + 클릭)
+
+
+
+ Follow path (ctrl + click)
+ 경로 따라가기 (ctrl + 클릭)
+
+
+
+ Vt102Emulation
+
+
+ No keyboard translator available. The information needed to convert key presses into characters to send to the terminal is missing.
+ 사용 가능한 키보드 변환기가 없습니다. 키를 문자로 변환하여 터미널로 보내는 데 필요한 정보가 없습니다.
+
+keyMapManager
diff --git a/lang/quardCRT_pt_BR.ts b/lang/quardCRT_pt_BR.ts
index df7f5b33..24500b85 100644
--- a/lang/quardCRT_pt_BR.ts
+++ b/lang/quardCRT_pt_BR.ts
@@ -13,7 +13,7 @@
CentralWidget
-
+ Tool BarBarra de ferramentas
@@ -26,21 +26,21 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ WarningAviso
@@ -285,7 +285,7 @@
-
+ ReadyPronto
@@ -464,7 +464,7 @@
-
+ HelpAjuda
@@ -566,26 +566,27 @@
+ Enter host <Alt+R> to connectInforme o host <Alt+R> para conectar
-
+ Disconnect AllDesconectar todas
-
+ Disconnect all sessionsDesconectar todas as sessões
-
+ Clone SessionClonar sessão
-
+ Clone current session <Ctrl+Shift+T>Clonar sessão atual <Ctrl+Shift+T>
@@ -595,564 +596,564 @@
Bloquear sessão
-
+ Log SessionLog da sessão
-
+ Create a log file for current sessionCriar um arquivo de log para a sessão atual
-
+ Raw Log SessionLog bruto da sessão
-
+ Create a raw log file for current sessionCriar um arquivo de log bruto para a sessão atual
-
+ Hex ViewVisualização hexadecimal
-
+ Show/Hide Hex View for current sessionMostrar/Ocultar visualização hexadecimal para a sessão atual
-
+ ExitSair
-
+ Quit the applicationFechar o aplicativo
-
+ CopyCopiar
-
+ Copy the selected text to the clipboard <Command+C>Copiar o texto selecionado para a área de transferência <Command+C>
-
+ Copy the selected text to the clipboard <Ctrl+Ins>Copiar o texto selecionado para a área de transferência <Ctrl+Ins>
-
+ PasteColar
-
+ Paste the clipboard text to the current session <Command+V>Colar o texto da área de transferência na sessão atual <Command+V>
-
+ Paste the clipboard text to the current session <Shift+Ins>Colar o texto da área de transferência na sessão atual <Shift+Ins>
-
+ Copy and PasteCopiar e colar
-
+ Copy the selected text to the clipboard and paste to the current sessionCopiar o texto selecionado para a área de transferência e colar na sessão atual
-
+ Select AllSelecionar tudo
-
+ Select all text in the current session <Ctrl+Shift+A>Selecionar todo o texto na sessão atual <Ctrl+Shift+A>
-
+ Find...Localizar...
-
+ Find text in the current session <Ctrl+F>Localizar texto na sessão atual <Ctrl+F>
-
+ Print ScreenImprimir tela
-
+ Print current screenImprimir tela atual
-
+ Screen ShotCaptura de tela
-
+ Screen shot current screen <Alt+P>Captura de tela da tela atual <Alt+P>
-
+ Session ExportExportar sessão
-
+ Export current session to a file <Alt+O>Exportar sessão atual para um arquivo <Alt+O>
-
+ Clear ScrollbackLimpar rolagem
-
+ Clear the contents of the scrollback rowsLimpar o conteúdo das linhas de rolagem
-
+ Clear ScreenLimpar tela
-
+ Clear the contents of the current screenLimpar o conteúdo da tela atual
-
+ Clear Screen and ScrollbackLimpar tela e rolagem
-
+ Clear the contents of the screen and scrollbackLimpar o conteúdo da tela e rolagem
-
+ ResetRedefinir
-
+ Reset terminal emulatorRedefinir emulador de terminal
-
+ Zoom InAmpliar
-
+ Zoom In <Ctrl+"=">Ampliar <Ctrl+"=">
-
+ Zoom OutReduzir
-
+ Zoom Out <Ctrl+"-">Reduzir <Ctrl+"-">
-
-
+
+ Zoom ResetRedefinir zoom
-
+ LayoutLayout
-
+ Single LayoutLayout único
-
+ Single layoutLayout único
-
+ Two Columns LayoutLayout de duas colunas
-
+ Two columns layoutLayout de duas colunas
-
+ Three Columns LayoutLayout de três colunas
-
+ Three columns layoutLayout de três colunas
-
+ Two Rows LayoutLayout de duas linhas
-
+ Two rows layoutLayout de duas linhas
-
+ Three Rows LayoutLayout de três linhas
-
+ Three rows layoutLayout de três linhas
-
+ Grid LayoutLayout de grade
-
+ Grid layoutLayout de grade
-
+ Two Rows Right LayoutLayout de duas linhas à direita
-
+ Two rows right layoutLayout de duas linhas à direita
-
+ Two Columns Bottom LayoutLayout de duas colunas na parte inferior
-
+ Two columns bottom layoutLayout de duas colunas na parte inferior
-
+ Flip LayoutVirar layout
-
+ Flip layoutVirar layout
-
+ Menu BarBarra de menu
-
+ Show/Hide Menu Bar <Alt+U>Mostrar/Ocultar barra de menu <Alt+U>
-
+ Show/Hide Tool BarMostrar/Ocultar barra de ferramentas
-
+ Status BarBarra de status
-
+ Show/Hide Status BarMostrar/Ocultar barra de status
-
+ Command WindowJanela de comando
-
+ Show/Hide Command WindowMostrar/Ocultar janela de comando
-
+ Connect BarBarra de conexão
-
+ Show/Hide Connect BarMostrar/Ocultar barra de conexão
-
+ Side WindowJanela lateral
-
+ Show/Hide Side WindowMostrar/Ocultar janela lateral
-
+ Windows TransparencyTransparência das janelas
-
+ Enable/Disable alpha transparencyAtivar/Desativar transparência alfa
-
+ Vertical Scroll BarBarra de rolagem vertical
-
+ Show/Hide Vertical Scroll BarMostrar/Ocultar barra de rolagem vertical
-
+ Allways On TopSempre no topo
-
+ Show window always on topMostrar janela sempre no topo
-
+ Full ScreenTela cheia
-
+ Toggle between full screen and normal mode <Alt+Enter>Alternar entre tela cheia e modo normal <Alt+Enter>
-
+ Session Options...Opções da sessão...
-
+ Configure session optionsConfigurar opções da sessão
-
+ Global Options...Opções globais...
-
+ Configure global optionsConfigurar opções globais
-
+ Real-time Save OptionsSalvar opções em tempo real
-
+ Real-time save session options and global optionsSalvar opções da sessão e opções globais em tempo real
-
+ Save Settings NowSalvar configurações agora
-
+ Save options configuration nowSalvar configuração de opções agora
-
+ Send ASCII...Enviar ASCII...
-
+ Send ASCII fileEnviar arquivo ASCII
-
+ Receive ASCII...Receber ASCII...
-
+ Receive ASCII fileReceber arquivo ASCII
-
+ Send Binary...Enviar binário...
-
+ Send Binary fileEnviar arquivo binário
-
+ Send Kermit...Enviar Kermit...
-
+ Send a file using KermitEnviar um arquivo usando Kermit
-
+ Receive Kermit...Receber Kermit...
-
+ Receive a file using KermitReceber um arquivo usando Kermit
-
+ Send Xmodem...Enviar Xmodem...
-
+ Send a file using XmodemEnviar um arquivo usando Xmodem
-
+ Receive Xmodem...Receber Xmodem...
-
+ Receive a file using XmodemReceber um arquivo usando Xmodem
-
+ Send Ymodem...Enviar Ymodem...
-
+ Send a file using YmodemEnviar um arquivo usando Ymodem
-
+ Receive Ymodem...Receber Ymodem...
-
+ Receive a file using YmodemReceber um arquivo usando Ymodem
-
+ Zmodem Upload List...Lista de envio Zmodem...
-
+ Display Zmodem file upload listMostrar lista de envio de arquivos Zmodem
-
+ Start Zmodem UploadIniciar envio Zmodem
-
+ Start Zmodem file uploadIniciar envio de arquivo Zmodem
-
+ Start TFTP ServerIniciar servidor TFTP
-
+ Start/Stop the TFTP serverIniciar/Parar o servidor TFTP
-
+ Run...Executar...
-
+ Run a scriptExecutar um script
-
+ CancelCancelar
@@ -1213,759 +1214,759 @@
Alterar cor
-
+ Cancel script executionCancelar execução de script
-
+ Start Recording ScriptIniciar gravação de script
-
+ Start recording scriptIniciar gravação de script
-
+ Stop Recording Script...Parar gravação de script...
-
+ Stop recording scriptParar gravação de script
-
+ Cancel Recording ScriptCancelar gravação de script
-
+ Cancel recording scriptCancelar gravação de script
-
+ Add BookmarkAdicionar favorito
-
+ Add a bookmarkAdicionar um favorito
-
-
+
+ Remove BookmarkRemover favorito
-
+ Remove a bookmarkRemover um favorito
-
-
+
+ Clean All BookmarkLimpar todos os favoritos
-
+ Clean all bookmarkLimpar todos os favoritos
-
+ Keymap ManagerGerenciador de mapeamento de teclas
-
+ Display keymap editorMostrar editor de mapeamento de teclas
-
+ Create Public Key...Criar chave pública...
-
+ Create a public keyCriar uma chave pública
-
+ Publickey ManagerGerenciador de chaves públicas
-
+ Display publickey managerMostrar gerenciador de chaves públicas
-
+ Internal CommandComando interno
-
+ Display Internal Command windowMostrar janela de comando interno
-
+ TabAba
-
+ Arrange sessions in tabsOrganizar sessões em abas
-
+ TileMosaico
-
+ Arrange sessions in non-overlapping tilesOrganizar sessões em mosaicos não sobrepostos
-
+ CascadeCascata
-
+ Arrange sessions to overlap each otherOrganizar sessões para se sobrepor umas às outras
-
+ Simplified Chinese简体中文
-
+ Switch to Simplified Chinese切换到简体中文
-
+ Traditional Chinese繁體中文
-
+ Switch to Traditional Chinese切換到繁體中文
-
+ RussianРусский
-
+ Switch to RussianПереключиться на русский
-
+ Portuguese (Brazil)Português (Brasil)
-
+ Switch to Portuguese (Brazil)Mudar para Português (Brasil)
-
+ Korean한국어
-
+ Switch to Korean한국어로 전환
-
+ Japanese日本語
-
+ Switch to Japanese日本語に切り替える
-
+ Frenchfrançais
-
+ Switch to FrenchPasser au français
-
+ Spanishespañol
-
+ Switch to SpanishCambiar a español
-
+ English
-
+ Switch to English
-
+ GermanDeutsch
-
+ Switch to GermanWechseln Sie zu Deutsch
-
+ Czechčeština
-
+ Switch to CzechPřepnout do češtiny
-
+ Arabicعربي
-
+ Switch to Arabicالتبديل إلى العربية
-
+ LightClaro
-
+ Switch to light themeMudar para o tema claro
-
+ DarkEscuro
-
+ Switch to dark themeMudar para o tema escuro
-
+ Theme ColorCor do tema
-
+ Set theme color, cancel to use defaultDefinir cor do tema, cancelar para usar o padrão
-
+ Display helpMostrar ajuda
-
-
+
+ Keyborad Shortcuts ReferenceReferência de atalhos do teclado
-
+ Display keyborad shortcuts referenceMostrar referência de atalhos do teclado
-
+ Check UpdateVerificar atualização
-
+ Check for updatesVerificar atualizações
-
-
+
+ Privacy StatementDeclaração de privacidade
-
+ Display privacy statementMostrar declaração de privacidade
-
-
+
+ AboutSobre
-
+ Display about dialogMostrar diálogo sobre
-
+ About QtSobre o Qt
-
+ Display about Qt dialogMostrar diálogo sobre o Qt
-
-
+
+ About PythonSobre o Python
-
+ Display about Python dialogMostrar diálogo sobre o Python
-
+ LaboratoryLaboratório
-
-
+
+ SSH ScanningVarredura SSH
-
+ Display SSH scanning dialogMostrar diálogo de varredura SSH
-
+ Plugin InfoInformações do plugin
-
+ Display plugin information dialogMostrar diálogo de informações do plugin
-
+ Plugin metaData not found!Metadados do plugin não encontrados!
-
+ Plugin api version not found!Versão da API do plugin não encontrada!
-
+ Plugin api version not match!Versão da API do plugin não corresponde!
-
+ Plugin menu not found!Menu do plugin não encontrado!
-
+ Plugin init failed!Falha na inicialização do plugin!
-
+ PrintScreen saved to %1PrintScreen salvo em %1
-
+ Save ScreenshotSalvar captura de tela
-
+ Image Files (*.jpg)Arquivos de imagem (*.jpg)
-
-
+
+ Screenshot saved to %1Captura de tela salva em %1
-
+ Save Session ExportSalvar exportação de sessão
-
+ Text Files (*.txt);;HTML Files (*.html)Arquivos de texto (*.txt);;Arquivos HTML (*.html)
-
+ Text Files (*.txt)Arquivos de texto (*.txt)
-
+ HTML Files (*.html)Arquivos HTML (*.html)
-
+ Session Export saved to %1Exportação de sessão salva em %1
-
+ Session Export failed to save to %1Falha ao salvar a exportação de sessão em %1
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+ Broadcast session can't transfer file!A sessão de transmissão não pode transferir arquivos!
-
+ Select Files to Send as ASCIISelecionar arquivos para enviar como ASCII
-
-
+
+ Text Files (*.txt);;All Files (*)Arquivos de texto (*.txt);;Todos os arquivos (*)
-
+ Save Received Data as ASCIISalvar dados recebidos como ASCII
-
+ Select Files to Send as BINARYSelecionar arquivos para enviar como BINÁRIO
-
-
-
-
-
-
+
+
+
+
+
+ All Files (*)Todos os arquivos (*)
-
+ Select Files to Send using KermitSelecionar arquivos para enviar usando Kermit
-
+ Select Files to Send using XmodemSelecionar arquivos para enviar usando Xmodem
-
+ Save Received Files using XmodemSalvar arquivos recebidos usando Xmodem
-
+ Select Files to Send using YmodemSelecionar arquivos para enviar usando Ymodem
-
+ Select Files to Send using ZmodemSelecionar arquivos para enviar usando Zmodem
-
+ Select a script fileSelecione um arquivo de script
-
+ Python Files (*.py);;All Files (*)Arquivos Python (*.py);;Todos os arquivos (*)
-
+ Select a directorySelecione um diretório
-
+ Select a bookmarkSelecione um favorito
-
+ Are you sure to clean all bookmark?Você tem certeza de que deseja limpar todos os favoritos?
-
+ PortPorta
-
+ Select colorSelecionar cor
-
+ Video background is enabled, please enable animation in global options (more system resources) or change background image.O plano de fundo de vídeo está ativado, ative a animação nas opções globais (mais recursos do sistema) ou altere a imagem de fundo.
-
+ Session information get failed.Falha ao obter informações da sessão.
-
+ Telnet - Telnet -
-
+ TelnetTelnet
-
+ Serial - Serial -
-
+ SerialSerial
-
+ Raw - Raw -
-
+ RawRaw
-
+ NamePipe - NamePipe -
-
+ NamePipeNamePipe
-
-
+
+ Local ShellShell local
-
+ Local Shell - Shell local -
-
+ This software is a terminal emulator that provides a secure shell (SSH) connection, telnet connection, serial port connection, and other functions.Este software é um emulador de terminal que fornece uma conexão shell segura (SSH), conexão telnet, conexão de porta serial e outras funções.
-
+ This software does not collect any personal information, and does not send any information to the server.Este software não coleta nenhuma informação pessoal e não envia nenhuma informação para o servidor.
-
+ This software does not contain any malicious code, and does not contain any backdoors.Este software não contém nenhum código malicioso e não contém nenhuma porta dos fundos.
-
+ This software is open source software, you can view the source code on the github website.Este software é um software de código aberto, você pode visualizar o código-fonte no site do github.
-
+ This software is provided as is, without any warranty.Este software é fornecido como está, sem qualquer garantia.
-
+ If you have any questions or suggestions, please contact the author.Se você tiver alguma dúvida ou sugestão, entre em contato com o autor.
-
+ VersionVersão
-
+ CommitCommit
-
+ DateData
-
-
+
+ AuthorAutor
-
+ Are you sure to disconnect "Você tem certeza de que deseja desconectar "
-
+ " session?" sessão?
-
+ WebsiteSite
-
+ Global Shortcuts:Atalhos globais:
-
+ show/hide menu barmostrar/ocultar barra de menu
-
+ connect to LocalShellconectar ao Shell local
-
+ clone current sessionclonar sessão atual
-
+ switch ui to STD modealternar interface do usuário para o modo STD
-
+ switch ui to MINI modealternar interface do usuário para o modo MINI
-
+ switch to previous sessionalternar para a sessão anterior
-
+ switch to next sessionalternar para a próxima sessão
-
+ switch to session [num]alternar para a sessão [num]
-
+ Go to line startIr para o início da linha
-
+ Go to line endIr para o final da linha
-
+ There are sessions that have not yet been unlocked, please unlock them first.Há sessões que ainda não foram desbloqueadas, desbloqueie-as primeiro.
-
+ Are you sure to quit?Você tem certeza de que deseja sair?
@@ -2707,8 +2708,8 @@
-
-
+
+ WarningAviso
@@ -2745,7 +2746,7 @@ Se você precisar usar outro shell, crie uma sessão através de [conexão rápi
-
+ The Default Local Shell is not a valid file!O Shell local padrão não é um arquivo válido!
@@ -2795,7 +2796,7 @@ Se você precisar usar outro shell, crie uma sessão através de [conexão rápi
Transferir
-
+ The User Plugins Path is not a directory!O caminho dos plugins do usuário não é um diretório!
@@ -2869,93 +2870,36 @@ Se você precisar usar outro shell, crie uma sessão através de [conexão rápi
Comando interno
-
+ CopyCopiar
-
+ PasteColar
-
+ Select AllSelecionar tudo
-
+ FindLocalizar
-
+ Zoom InAmpliar
-
+ Zoom OutReduzir
-
- Session
-
-
- Bell in session '%1'
- Sinal sonoro na sessão '%1'
-
-
-
- TerminalDisplay
-
-
- Size: XXX x XXX
- Tamanho: XXX x XXX
-
-
-
- Size: %1 x %2
- Tamanho: %1 x %2
-
-
-
- Paste multiline text
- Colar texto multilinha
-
-
-
- Are you sure you want to paste this text?
- Você tem certeza de que deseja colar este texto?
-
-
-
- <qt>Output has been <a href="http://en.wikipedia.org/wiki/Flow_control">suspended</a> by pressing Ctrl+S. Press <b>Ctrl+Q</b> to resume.</qt>
- <qt>A saída foi <a href="http://en.wikipedia.org/wiki/Flow_control">suspensa</a> pressionando Ctrl+S. Pressione <b>Ctrl+Q</b> para retomar.</qt>
-
-
-
- UrlFilter
-
-
- Follow link (ctrl + click)
- Seguir link (ctrl + clique)
-
-
-
- Follow path (ctrl + click)
- Seguir caminho (ctrl + clique)
-
-
-
- Vt102Emulation
-
-
- No keyboard translator available. The information needed to convert key presses into characters to send to the terminal is missing.
- Nenhum tradutor de teclado disponível. As informações necessárias para converter as teclas pressionadas em caracteres a serem enviados ao terminal estão faltando.
-
-LockSessionWindow
@@ -3484,47 +3428,47 @@ Se você precisar usar outro shell, crie uma sessão através de [conexão rápi
QObject
-
+ Un-named Color SchemeEsquema de cores sem nome
-
+ Accessible Color SchemeEsquema de cores acessível
-
+ Open LinkAbrir link
-
+ Copy Link AddressCopiar endereço do link
-
+ Send Email To...Enviar e-mail para...
-
+ Copy Email AddressCopiar endereço de e-mail
-
+ Open PathAbrir caminho
-
+ Open Containing FolderAbrir pasta contendo
-
+ Copy PathCopiar caminho
@@ -3587,12 +3531,12 @@ Se você precisar usar outro shell, crie uma sessão através de [conexão rápi
QTermWidget
-
+ Color Scheme ErrorErro no esquema de cores
-
+ Cannot load color scheme: %1Não é possível carregar o esquema de cores: %1
@@ -3897,20 +3841,20 @@ Se você precisar usar outro shell, crie uma sessão através de [conexão rápi
Localizar:
-
-
+
+ Match caseCoincidir maiúsculas e minúsculas
-
-
+
+ Regular expressionExpressão regular
-
-
+
+ Highlight all matchesRealçar todas as correspondências
@@ -4252,25 +4196,25 @@ Se você precisar usar outro shell, crie uma sessão através de [conexão rápi
SessionsWindow
-
+ Telnet ErrorErro no Telnet
-
+ Telnet error:
%1.Erro no Telnet:
%1.
-
-
+
+ Serial ErrorErro serial
-
+ Serial error:
%0
%1.
@@ -4279,133 +4223,133 @@ Se você precisar usar outro shell, crie uma sessão através de [conexão rápi
%1.
-
+ Raw Socket ErrorErro no soquete bruto
-
+ Raw Socket error:
%1.Erro no soquete bruto:
%1.
-
+ Name Pipe ErrorErro no tubo nomeado
-
+ Name Pipe error:
%1.Erro no tubo nomeado:
%1.
-
-
+
+ SSH2 ErrorErro SSH2
-
-
+
+ SSH2 error:
%1.Erro SSH2:
%1.
-
-
+
+ Open URLAbrir URL
-
-
+
+ Cannot open URL %1.Não é possível abrir a URL %1.
-
+ Select Files to Send using ZmodemSelecionar arquivos para enviar usando Zmodem
-
+ All Files (*)Todos os arquivos (*)
-
+ Start Local ShellIniciar shell local
-
+ Cannot start local shell:
%1.Não é possível iniciar o shell local:
%1.
-
+ Serial port %1 has been removed.A porta serial %1 foi removida.
-
+ Save log...Salvar log...
-
+ log files (*.log)arquivos de log (*.log)
-
+ Save logSalvar log
-
-
-
+
+
+ Cannot write file %1:
%2.Não é possível escrever o arquivo %1:
%2.
-
+ Save Raw log...Salvar log bruto...
-
+ binary files (*.bin)arquivos binários (*.bin)
-
+ Save Raw logSalvar log bruto
-
+ Unlock SessionDesbloquear sessão
-
+ Wrong password!Senha incorreta!
-
+ Receive ASCII FileReceber arquivo ASCII
@@ -4662,6 +4606,34 @@ Se você precisar usar outro shell, crie uma sessão através de [conexão rápi
Informações de transferência
+
+ TerminalDisplay
+
+
+ Size: XXX x XXX
+ Tamanho: XXX x XXX
+
+
+
+ Size: %1 x %2
+ Tamanho: %1 x %2
+
+
+
+ Paste multiline text
+ Colar texto multilinha
+
+
+
+ Are you sure you want to paste this text?
+ Você tem certeza de que deseja colar este texto?
+
+
+
+ <qt>Output has been <a href="http://en.wikipedia.org/wiki/Flow_control">suspended</a> by pressing Ctrl+S. Press <b>Ctrl+Q</b> to resume.</qt>
+ <qt>A saída foi <a href="http://en.wikipedia.org/wiki/Flow_control">suspensa</a> pressionando Ctrl+S. Pressione <b>Ctrl+Q</b> para retomar.</qt>
+
+UndoStack
@@ -4680,6 +4652,27 @@ Se você precisar usar outro shell, crie uma sessão através de [conexão rápi
Sobrescrever %1 caracteres
+
+ UrlFilter
+
+
+ Follow link (ctrl + click)
+ Seguir link (ctrl + clique)
+
+
+
+ Follow path (ctrl + click)
+ Seguir caminho (ctrl + clique)
+
+
+
+ Vt102Emulation
+
+
+ No keyboard translator available. The information needed to convert key presses into characters to send to the terminal is missing.
+ Nenhum tradutor de teclado disponível. As informações necessárias para converter as teclas pressionadas em caracteres a serem enviados ao terminal estão faltando.
+
+keyMapManager
diff --git a/lang/quardCRT_ru_RU.ts b/lang/quardCRT_ru_RU.ts
index f2311b2d..44371c9a 100644
--- a/lang/quardCRT_ru_RU.ts
+++ b/lang/quardCRT_ru_RU.ts
@@ -13,7 +13,7 @@
CentralWidget
-
+ Tool BarПанель инструментов
@@ -26,21 +26,21 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ WarningПредупреждение
@@ -285,7 +285,7 @@
-
+ ReadyГотово
@@ -464,7 +464,7 @@
-
+ HelpПомощь
@@ -566,26 +566,27 @@
+ Enter host <Alt+R> to connectВведите хост <Alt+R> для подключения
-
+ Disconnect AllОтключить все
-
+ Disconnect all sessionsОтключить все сессии
-
+ Clone SessionКлонировать сессию
-
+ Clone current session <Ctrl+Shift+T>Клонировать текущую сессию <Ctrl+Shift+T>
@@ -595,564 +596,564 @@
Блокировка сессии
-
+ Log SessionЖурнал сессии
-
+ Create a log file for current sessionСоздать файл журнала для текущей сессии
-
+ Raw Log SessionСырой журнал сессии
-
+ Create a raw log file for current sessionСоздать сырой файл журнала для текущей сессии
-
+ Hex ViewШестнадцатеричный просмотр
-
+ Show/Hide Hex View for current sessionПоказать/Скрыть шестнадцатеричный просмотр для текущей сессии
-
+ ExitВыход
-
+ Quit the applicationВыйти из приложения
-
+ CopyКопировать
-
+ Copy the selected text to the clipboard <Command+C>Копировать выделенный текст в буфер обмена <Command+C>
-
+ Copy the selected text to the clipboard <Ctrl+Ins>Копировать выделенный текст в буфер обмена <Ctrl+Ins>
-
+ PasteВставить
-
+ Paste the clipboard text to the current session <Command+V>Вставить текст из буфера обмена в текущую сессию <Command+V>
-
+ Paste the clipboard text to the current session <Shift+Ins>Вставить текст из буфера обмена в текущую сессию <Shift+Ins>
-
+ Copy and PasteКопировать и вставить
-
+ Copy the selected text to the clipboard and paste to the current sessionКопировать выделенный текст в буфер обмена и вставить в текущую сессию
-
+ Select AllВыделить все
-
+ Select all text in the current session <Ctrl+Shift+A>Выделить весь текст в текущей сессии <Ctrl+Shift+A>
-
+ Find...Найти...
-
+ Find text in the current session <Ctrl+F>Найти текст в текущей сессии <Ctrl+F>
-
+ Print ScreenПечать экрана
-
+ Print current screenПечать текущего экрана
-
+ Screen ShotСнимок экрана
-
+ Screen shot current screen <Alt+P>Снимок текущего экрана <Alt+P>
-
+ Session ExportЭкспорт сессии
-
+ Export current session to a file <Alt+O>Экспортировать текущую сессию в файл <Alt+O>
-
+ Clear ScrollbackОчистить буфер прокрутки
-
+ Clear the contents of the scrollback rowsОчистить содержимое строк буфера прокрутки
-
+ Clear ScreenОчистить экран
-
+ Clear the contents of the current screenОчистить содержимое текущего экрана
-
+ Clear Screen and ScrollbackОчистить экран и буфер прокрутки
-
+ Clear the contents of the screen and scrollbackОчистить содержимое экрана и буфера прокрутки
-
+ ResetСбросить
-
+ Reset terminal emulatorСбросить эмулятор терминала
-
+ Zoom InУвеличить
-
+ Zoom In <Ctrl+"=">Увеличить <Ctrl+"=">
-
+ Zoom OutУменьшить
-
+ Zoom Out <Ctrl+"-">Уменьшить <Ctrl+"-">
-
-
+
+ Zoom ResetСбросить масштаб
-
+ LayoutМакет
-
+ Single LayoutОдиночный макет
-
+ Single layoutОдиночный макет
-
+ Two Columns LayoutДвухколоночный макет
-
+ Two columns layoutДвухколоночный макет
-
+ Three Columns LayoutТрехколоночный макет
-
+ Three columns layoutТрехколоночный макет
-
+ Two Rows LayoutДвухстрочный макет
-
+ Two rows layoutДвухстрочный макет
-
+ Three Rows LayoutТрехстрочный макет
-
+ Three rows layoutТрехстрочный макет
-
+ Grid LayoutСеточный макет
-
+ Grid layoutСеточный макет
-
+ Two Rows Right LayoutДве строки справа
-
+ Two rows right layoutДве строки справа
-
+ Two Columns Bottom LayoutДве колонки снизу
-
+ Two columns bottom layoutДве колонки снизу
-
+ Flip LayoutПеревернуть макет
-
+ Flip layoutПеревернуть макет
-
+ Menu BarМеню
-
+ Show/Hide Menu Bar <Alt+U>Показать/Скрыть меню <Alt+U>
-
+ Show/Hide Tool BarПоказать/Скрыть панель инструментов
-
+ Status BarСтрока состояния
-
+ Show/Hide Status BarПоказать/Скрыть строку состояния
-
+ Command WindowОкно команд
-
+ Show/Hide Command WindowПоказать/Скрыть окно команд
-
+ Connect BarПанель подключения
-
+ Show/Hide Connect BarПоказать/Скрыть панель подключения
-
+ Side WindowБоковое окно
-
+ Show/Hide Side WindowПоказать/Скрыть боковое окно
-
+ Windows TransparencyПрозрачность окон
-
+ Enable/Disable alpha transparencyВключить/Выключить альфа прозрачность
-
+ Vertical Scroll BarВертикальная полоса прокрутки
-
+ Show/Hide Vertical Scroll BarПоказать/Скрыть вертикальную полосу прокрутки
-
+ Allways On TopПоверх всех окон
-
+ Show window always on topПоказать окно поверх всех окон
-
+ Full ScreenПолный экран
-
+ Toggle between full screen and normal mode <Alt+Enter>Переключиться между полноэкранным и нормальным режимом <Alt+Enter>
-
+ Session Options...Настройки сессии...
-
+ Configure session optionsНастроить параметры сессии
-
+ Global Options...Глобальные настройки...
-
+ Configure global optionsНастроить глобальные параметры
-
+ Real-time Save OptionsНастройки сохранения в реальном времени
-
+ Real-time save session options and global optionsНастройки сохранения сессии и глобальные настройки в реальном времени
-
+ Save Settings NowСохранить настройки сейчас
-
+ Save options configuration nowСохранить конфигурацию настроек сейчас
-
+ Send ASCII...Отправить ASCII...
-
+ Send ASCII fileОтправить файл ASCII
-
+ Receive ASCII...Принять ASCII...
-
+ Receive ASCII fileПринять файл ASCII
-
+ Send Binary...Отправить бинарный файл...
-
+ Send Binary fileОтправить бинарный файл
-
+ Send Kermit...Отправить Kermit...
-
+ Send a file using KermitОтправить файл, используя Kermit
-
+ Receive Kermit...Принять Kermit...
-
+ Receive a file using KermitПринять файл, используя Kermit
-
+ Send Xmodem...Отправить Xmodem...
-
+ Send a file using XmodemОтправить файл, используя Xmodem
-
+ Receive Xmodem...Принять Xmodem...
-
+ Receive a file using XmodemПринять файл, используя Xmodem
-
+ Send Ymodem...Отправить Ymodem...
-
+ Send a file using YmodemОтправить файл, используя Ymodem
-
+ Receive Ymodem...Принять Ymodem...
-
+ Receive a file using YmodemПринять файл, используя Ymodem
-
+ Zmodem Upload List...Список загрузки Zmodem...
-
+ Display Zmodem file upload listПоказать список загрузки файлов Zmodem
-
+ Start Zmodem UploadНачать загрузку Zmodem
-
+ Start Zmodem file uploadНачать загрузку файла Zmodem
-
+ Start TFTP ServerЗапустить TFTP сервер
-
+ Start/Stop the TFTP serverЗапустить/Остановить TFTP сервер
-
+ Run...Запустить...
-
+ Run a scriptЗапустить скрипт
-
+ CancelОтменить
@@ -1213,759 +1214,759 @@
Изменить цвет
-
+ Cancel script executionОтменить выполнение скрипта
-
+ Start Recording ScriptНачать запись скрипта
-
+ Start recording scriptНачать запись скрипта
-
+ Stop Recording Script...Остановить запись скрипта...
-
+ Stop recording scriptОстановить запись скрипта
-
+ Cancel Recording ScriptОтменить запись скрипта
-
+ Cancel recording scriptОтменить запись скрипта
-
+ Add BookmarkДобавить закладку
-
+ Add a bookmarkДобавить закладку
-
-
+
+ Remove BookmarkУдалить закладку
-
+ Remove a bookmarkУдалить закладку
-
-
+
+ Clean All BookmarkОчистить все закладки
-
+ Clean all bookmarkОчистить все закладки
-
+ Keymap ManagerМенеджер клавиатурных схем
-
+ Display keymap editorПоказать редактор клавиатурных схем
-
+ Create Public Key...Создать публичный ключ...
-
+ Create a public keyСоздать публичный ключ
-
+ Publickey ManagerМенеджер публичных ключей
-
+ Display publickey managerПоказать менеджер публичных ключей
-
+ Internal CommandВнутренняя команда
-
+ Display Internal Command windowПоказать окно внутренних команд
-
+ Portuguese (Brazil)Português (Brasil)
-
+ Switch to Portuguese (Brazil)Mudar para Português (Brasil)
-
+ GermanDeutsch
-
+ Switch to GermanWechseln Sie zu Deutsch
-
+ Czechčeština
-
+ Switch to CzechPřepnout do češtiny
-
+ Arabicعربي
-
+ Switch to Arabicالتبديل إلى العربية
-
+ Theme ColorЦвет темы
-
+ Set theme color, cancel to use defaultУстановить цвет темы, отменить для использования по умолчанию
-
-
+
+ Keyborad Shortcuts ReferenceСправочник по клавиатурным сокращениям
-
+ Display keyborad shortcuts referenceПоказать справочник по клавиатурным сокращениям
-
-
+
+ Privacy StatementЗаявление о конфиденциальности
-
+ Display privacy statementПоказать заявление о конфиденциальности
-
-
+
+ About PythonО Python
-
+ Display about Python dialogПоказать диалоговое окно о Python
-
+ LaboratoryЛаборатория
-
-
+
+ SSH ScanningСканирование SSH
-
+ Display SSH scanning dialogПоказать диалог сканирования SSH
-
+ Plugin metaData not found!Метаданные плагина не найдены!
-
+ Plugin api version not found!Версия API плагина не найдена!
-
+ Plugin api version not match!Версия API плагина не соответствует!
-
+ Plugin menu not found!Меню плагина не найдено!
-
+ Plugin init failed!Ошибка инициализации плагина!
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+ Broadcast session can't transfer file!Сеанс широковещания не может передавать файлы!
-
+ Select Files to Send as ASCIIВыберите файлы для отправки в виде ASCII
-
-
+
+ Text Files (*.txt);;All Files (*)Текстовые файлы (*.txt);;Все файлы (*)
-
+ Save Received Data as ASCIIСохранить полученные данные в виде ASCII
-
+ Select Files to Send as BINARYВыберите файлы для отправки в виде BINARY
-
-
-
-
-
-
+
+
+
+
+
+ All Files (*)Все файлы (*)
-
+ Select Files to Send using KermitВыберите файлы для отправки с использованием Kermit
-
+ Select Files to Send using XmodemВыберите файлы для отправки с использованием Xmodem
-
+ Save Received Files using XmodemСохранить полученные файлы с использованием Xmodem
-
+ Select Files to Send using YmodemВыберите файлы для отправки с использованием Ymodem
-
+ Select Files to Send using ZmodemВыберите файлы для отправки с использованием Zmodem
-
+ Select a script fileВыберите файл скрипта
-
+ Python Files (*.py);;All Files (*)Файлы Python (*.py);;Все файлы (*)
-
+ Select colorВыберите цвет
-
+ Are you sure to disconnect "Вы уверены, что хотите отключиться от "
-
+ " session?" сессии?
-
+ This software is a terminal emulator that provides a secure shell (SSH) connection, telnet connection, serial port connection, and other functions.Это эмулятор терминала, который обеспечивает безопасное соединение по протоколу SSH, соединение по протоколу telnet, соединение с последовательным портом и другие функции.
-
+ This software does not collect any personal information, and does not send any information to the server.Это программное обеспечение не собирает никакой личной информации и не отправляет никакую информацию на сервер.
-
+ This software does not contain any malicious code, and does not contain any backdoors.Это программное обеспечение не содержит вредоносного кода и не содержит никаких задних дверей.
-
+ This software is open source software, you can view the source code on the github website.Это программное обеспечение с открытым исходным кодом, вы можете просмотреть исходный код на веб-сайте github.
-
+ This software is provided as is, without any warranty.Это программное обеспечение предоставляется "как есть", без каких-либо гарантий.
-
+ If you have any questions or suggestions, please contact the author.Если у вас есть какие-либо вопросы или предложения, пожалуйста, свяжитесь с автором.
-
+ VersionВерсия
-
+ CommitКоммит
-
+ DateДата
-
-
+
+ AuthorАвтор
-
+ WebsiteВебсайт
-
+ TabВкладка
-
+ Arrange sessions in tabsРасположить сессии во вкладках
-
+ Tile
-
+ Arrange sessions in non-overlapping tilesРасположить сессии в неперекрывающихся плитках
-
+ CascadeКаскад
-
+ Arrange sessions to overlap each otherРасположить сессии так, чтобы они перекрывали друг друга
-
+ Simplified Chinese简体中文
-
+ Switch to Simplified Chinese切换到简体中文
-
+ Traditional Chinese繁體中文
-
+ Switch to Traditional Chinese切換到繁體中文
-
+ RussianРусский
-
+ Switch to RussianПереключиться на русский
-
+ Korean한국어
-
+ Switch to Korean한국어로 전환
-
+ Japanese日本語
-
+ Switch to Japanese日本語に切り替える
-
+ Frenchfrançais
-
+ Switch to FrenchPasser au français
-
+ Spanishespañol
-
+ Switch to SpanishCambiar a español
-
+ English
-
+ Switch to English
-
+ LightСветлая
-
+ Switch to light themeПереключиться на светлую тему
-
+ DarkТемная
-
+ Switch to dark themeПереключиться на темную тему
-
+ Display helpПоказать справку
-
+ Check UpdateПроверить обновления
-
+ Check for updatesПроверить наличие обновлений
-
-
+
+ AboutО программе
-
+ Display about dialogПоказать диалоговое окно "О программе"
-
+ About QtО Qt
-
+ Display about Qt dialogПоказать диалоговое окно "О Qt"
-
+ Plugin InfoИнформация о плагине
-
+ Display plugin information dialogПоказать диалоговое окно информации о плагине
-
+ PrintScreen saved to %1Снимок экрана сохранен в %1
-
+ Save ScreenshotСохранить снимок экрана
-
+ Image Files (*.jpg)Файлы изображений (*.jpg)
-
-
+
+ Screenshot saved to %1Снимок экрана сохранен в %1
-
+ Save Session ExportСохранить экспорт сессии
-
+ Text Files (*.txt);;HTML Files (*.html)Текстовые файлы (*.txt);;HTML файлы (*.html)
-
+ Text Files (*.txt)Текстовые файлы (*.txt)
-
+ HTML Files (*.html)HTML файлы (*.html)
-
+ Session Export saved to %1Экспорт сессии сохранен в %1
-
+ Session Export failed to save to %1Экспорт сессии не удалось сохранить в %1
-
+ Select a directoryВыберите каталог
-
+ Select a bookmarkВыберите закладку
-
+ Are you sure to clean all bookmark?Вы уверены, что хотите очистить все закладки?
-
+ PortПорт
-
+ Video background is enabled, please enable animation in global options (more system resources) or change background image.Включен видеофон, пожалуйста, включите анимацию в глобальных настройках (больше системных ресурсов) или измените фоновое изображение.
-
+ Session information get failed.Не удалось получить информацию о сессии.
-
+ Telnet - Телнет -
-
+ TelnetТелнет
-
+ Serial - Серийный порт -
-
+ SerialСерийный порт
-
+ Raw - Raw -
-
+ RawRaw
-
+ NamePipe - Именованный канал -
-
+ NamePipeИменованный канал
-
-
+
+ Local ShellЛокальная оболочка
-
+ Local Shell - Локальная оболочка -
-
+ Global Shortcuts:Глобальные ярлыки:
-
+ show/hide menu barпоказать/скрыть меню
-
+ connect to LocalShellподключиться к локальной оболочке
-
+ clone current sessionклонировать текущую сессию
-
+ switch ui to STD modeпереключить интерфейс в режим STD
-
+ switch ui to MINI modeпереключить интерфейс в режим MINI
-
+ switch to previous sessionпереключиться на предыдущую сессию
-
+ switch to next sessionпереключиться на следующую сессию
-
+ switch to session [num]переключиться на сессию [num]
-
+ Go to line startПерейти в начало строки
-
+ Go to line endПерейти в конец строки
-
+ There are sessions that have not yet been unlocked, please unlock them first.Есть сессии, которые еще не были разблокированы, пожалуйста, сначала разблокируйте их.
-
+ Are you sure to quit?Вы уверены, что хотите выйти?
@@ -2707,8 +2708,8 @@
-
-
+
+ WarningПредупреждение
@@ -2745,7 +2746,7 @@ If you need to use another shell, please create a session through [quick-connect
-
+ The Default Local Shell is not a valid file!Локальная оболочка по умолчанию не является допустимым файлом!
@@ -2795,7 +2796,7 @@ If you need to use another shell, please create a session through [quick-connect
Передача
-
+ The User Plugins Path is not a directory!Путь к пользовательским плагинам не является каталогом!
@@ -2869,93 +2870,36 @@ If you need to use another shell, please create a session through [quick-connect
Внутренняя команда
-
+ CopyКопировать
-
+ PasteВставить
-
+ Select AllВыделить все
-
+ FindНайти
-
+ Zoom InУвеличить
-
+ Zoom OutУменьшить
-
- Session
-
-
- Bell in session '%1'
- Сигнал в сессии '%1'
-
-
-
- TerminalDisplay
-
-
- Size: XXX x XXX
- Размер: XXX x XXX
-
-
-
- Size: %1 x %2
- Размер: %1 x %2
-
-
-
- Paste multiline text
- Вставить многострочный текст
-
-
-
- Are you sure you want to paste this text?
- Вы уверены, что хотите вставить этот текст?
-
-
-
- <qt>Output has been <a href="http://en.wikipedia.org/wiki/Flow_control">suspended</a> by pressing Ctrl+S. Press <b>Ctrl+Q</b> to resume.</qt>
- <qt>Вывод был <a href="http://en.wikipedia.org/wiki/Flow_control">приостановлен</a> нажатием Ctrl+S. Нажмите <b>Ctrl+Q</b> для продолжения.</qt>
-
-
-
- UrlFilter
-
-
- Follow link (ctrl + click)
- Перейти по ссылке (ctrl + click)
-
-
-
- Follow path (ctrl + click)
- Перейти по пути (ctrl + click)
-
-
-
- Vt102Emulation
-
-
- No keyboard translator available. The information needed to convert key presses into characters to send to the terminal is missing.
- Нет доступного переводчика клавиатуры. Недостающая информация для преобразования нажатий клавиш в символы для отправки в терминал.
-
-LockSessionWindow
@@ -3484,47 +3428,47 @@ If you need to use another shell, please create a session through [quick-connect
QObject
-
+ Un-named Color SchemeБезымянная цветовая схема
-
+ Accessible Color SchemeДоступная цветовая схема
-
+ Open LinkОткрыть ссылку
-
+ Copy Link AddressКопировать адрес ссылки
-
+ Send Email To...Отправить письмо на...
-
+ Copy Email AddressКопировать адрес электронной почты
-
+ Open PathОткрыть путь
-
+ Open Containing FolderОткрыть папку с содержимым
-
+ Copy PathКопировать путь
@@ -3587,12 +3531,12 @@ If you need to use another shell, please create a session through [quick-connect
QTermWidget
-
+ Color Scheme ErrorОшибка цветовой схемы
-
+ Cannot load color scheme: %1Не удается загрузить цветовую схему: %1
@@ -3897,20 +3841,20 @@ If you need to use another shell, please create a session through [quick-connect
Найти:
-
-
+
+ Match caseУчитывать регистр
-
-
+
+ Regular expressionРегулярное выражение
-
-
+
+ Highlight all matchesПодсвечивать все совпадения
@@ -4252,25 +4196,25 @@ If you need to use another shell, please create a session through [quick-connect
SessionsWindow
-
+ Telnet ErrorОшибка Telnet
-
+ Telnet error:
%1.Ошибка Telnet:
%1.
-
-
+
+ Serial ErrorОшибка серийного порта
-
+ Serial error:
%0
%1.
@@ -4279,133 +4223,133 @@ If you need to use another shell, please create a session through [quick-connect
%1.
-
+ Raw Socket ErrorОшибка Raw Socket
-
+ Raw Socket error:
%1.Ошибка Raw Socket:
%1.
-
+ Name Pipe ErrorОшибка именованного канала
-
+ Name Pipe error:
%1.Ошибка именованного канала:
%1.
-
-
+
+ SSH2 ErrorОшибка SSH2
-
-
+
+ SSH2 error:
%1.Ошибка SSH2:
%1.
-
-
+
+ Open URLОткрыть URL
-
-
+
+ Cannot open URL %1.Не удалось открыть URL %1.
-
+ Select Files to Send using ZmodemВыберите файлы для отправки с использованием Zmodem
-
+ All Files (*)Все файлы (*)
-
+ Start Local ShellЗапустить локальную оболочку
-
+ Cannot start local shell:
%1.Не удалось запустить локальную оболочку:
%1.
-
+ Serial port %1 has been removed.Серийный порт %1 был удален.
-
+ Save log...Сохранить журнал...
-
+ log files (*.log)файлы журналов (*.log)
-
+ Save logСохранить журнал
-
-
-
+
+
+ Cannot write file %1:
%2.Не удалось записать файл %1:
%2.
-
+ Save Raw log...Сохранить Raw журнал...
-
+ binary files (*.bin)бинарные файлы (*.bin)
-
+ Save Raw logСохранить Raw журнал
-
+ Unlock SessionРазблокировать сессию
-
+ Wrong password!Неверный пароль!
-
+ Receive ASCII FileПолучить ASCII файл
@@ -4662,6 +4606,34 @@ If you need to use another shell, please create a session through [quick-connect
Информация о передаче
+
+ TerminalDisplay
+
+
+ Size: XXX x XXX
+ Размер: XXX x XXX
+
+
+
+ Size: %1 x %2
+ Размер: %1 x %2
+
+
+
+ Paste multiline text
+ Вставить многострочный текст
+
+
+
+ Are you sure you want to paste this text?
+ Вы уверены, что хотите вставить этот текст?
+
+
+
+ <qt>Output has been <a href="http://en.wikipedia.org/wiki/Flow_control">suspended</a> by pressing Ctrl+S. Press <b>Ctrl+Q</b> to resume.</qt>
+ <qt>Вывод был <a href="http://en.wikipedia.org/wiki/Flow_control">приостановлен</a> нажатием Ctrl+S. Нажмите <b>Ctrl+Q</b> для продолжения.</qt>
+
+UndoStack
@@ -4680,6 +4652,27 @@ If you need to use another shell, please create a session through [quick-connect
Перезапись %1 символов
+
+ UrlFilter
+
+
+ Follow link (ctrl + click)
+ Перейти по ссылке (ctrl + click)
+
+
+
+ Follow path (ctrl + click)
+ Перейти по пути (ctrl + click)
+
+
+
+ Vt102Emulation
+
+
+ No keyboard translator available. The information needed to convert key presses into characters to send to the terminal is missing.
+ Нет доступного переводчика клавиатуры. Недостающая информация для преобразования нажатий клавиш в символы для отправки в терминал.
+
+keyMapManager
diff --git a/lang/quardCRT_zh_CN.ts b/lang/quardCRT_zh_CN.ts
index 69f38ce6..8dfbf16b 100644
--- a/lang/quardCRT_zh_CN.ts
+++ b/lang/quardCRT_zh_CN.ts
@@ -13,7 +13,7 @@
CentralWidget
-
+ Tool Bar工具栏
@@ -26,21 +26,21 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Warning警告
@@ -285,7 +285,7 @@
-
+ Ready就绪
@@ -464,7 +464,7 @@
-
+ Help帮助
@@ -566,26 +566,27 @@
+ Enter host <Alt+R> to connect输入主机地址 <Alt+R> 连接
-
+ Disconnect All断开所有连接
-
+ Disconnect all sessions断开所有会话连接
-
+ Clone Session克隆会话
-
+ Clone current session <Ctrl+Shift+T>克隆当前会话 <Ctrl+Shift+T>
@@ -595,564 +596,564 @@
锁定会话
-
+ Log Session记录日志
-
+ Create a log file for current session为当前会话创建日志文件
-
+ Raw Log Session记录原始日志
-
+ Create a raw log file for current session为当前会话创建原始日志文件
-
+ Hex View十六进制视图
-
+ Show/Hide Hex View for current session显示/隐藏当前会话的十六进制视图
-
+ Exit退出
-
+ Quit the application退出应用程序
-
+ Copy复制
-
+ Copy the selected text to the clipboard <Command+C>复制选中的文本到剪贴板 <Command+C>
-
+ Copy the selected text to the clipboard <Ctrl+Ins>复制选中的文本到剪贴板 <Ctrl+Ins>
-
+ Paste粘贴
-
+ Paste the clipboard text to the current session <Command+V>粘贴剪贴板文本到当前会话 <Command+V>
-
+ Paste the clipboard text to the current session <Shift+Ins>粘贴剪贴板文本到当前会话 <Shift+Ins>
-
+ Copy and Paste复制并粘贴
-
+ Copy the selected text to the clipboard and paste to the current session复制选中的文本到剪贴板并粘贴到当前会话
-
+ Select All全选
-
+ Select all text in the current session <Ctrl+Shift+A>选择当前会话中的所有文本 <Ctrl+Shift+A>
-
+ Find...查找...
-
+ Find text in the current session <Ctrl+F>在当前会话中查找文本 <Ctrl+F>
-
+ Print Screen打印屏幕
-
+ Print current screen打印当前屏幕
-
+ Screen Shot屏幕截图
-
+ Screen shot current screen <Alt+P>截屏当前屏幕 <Alt+P>
-
+ Session Export会话导出
-
+ Export current session to a file <Alt+O>导出当前会话到文件 <Alt+O>
-
+ Clear Scrollback清除滚动行
-
+ Clear the contents of the scrollback rows清除滚动行的内容
-
+ Clear Screen清除屏幕
-
+ Clear the contents of the current screen清除当前屏幕的内容
-
+ Clear Screen and Scrollback清除屏幕和滚动行
-
+ Clear the contents of the screen and scrollback清除屏幕和滚动行的内容
-
+ Reset重置
-
+ Reset terminal emulator重置终端仿真器
-
+ Zoom In放大
-
+ Zoom In <Ctrl+"=">放大 <Ctrl+"=">
-
+ Zoom Out缩小
-
+ Zoom Out <Ctrl+"-">缩小 <Ctrl+"-">
-
-
+
+ Zoom Reset重置缩放
-
+ Layout布局
-
+ Single Layout单列布局
-
+ Single layout单列布局
-
+ Two Columns Layout两列布局
-
+ Two columns layout两列布局
-
+ Three Columns Layout三列布局
-
+ Three columns layout三列布局
-
+ Two Rows Layout两行布局
-
+ Two rows layout两行布局
-
+ Three Rows Layout三行布局
-
+ Three rows layout三行布局
-
+ Grid Layout网格布局
-
+ Grid layout网格布局
-
+ Two Rows Right Layout两行右侧布局
-
+ Two rows right layout两行右侧布局
-
+ Two Columns Bottom Layout两列底部布局
-
+ Two columns bottom layout两列底部布局
-
+ Flip Layout翻转布局
-
+ Flip layout翻转布局
-
+ Menu Bar菜单栏
-
+ Show/Hide Menu Bar <Alt+U>显示/隐藏菜单栏 <Alt+U>
-
+ Show/Hide Tool Bar显示/隐藏工具栏
-
+ Status Bar状态栏
-
+ Show/Hide Status Bar显示/隐藏状态栏
-
+ Command Window命令窗口
-
+ Show/Hide Command Window显示/隐藏命令窗口
-
+ Connect Bar连接栏
-
+ Show/Hide Connect Bar显示/隐藏连接栏
-
+ Side Window侧边窗口
-
+ Show/Hide Side Window显示/隐藏侧边窗口
-
+ Windows Transparency窗口透明度
-
+ Enable/Disable alpha transparency启用/禁用透明度
-
+ Vertical Scroll Bar垂直滚动条
-
+ Show/Hide Vertical Scroll Bar显示/隐藏垂直滚动条
-
+ Allways On Top总在最前
-
+ Show window always on top总在最前显示窗口
-
+ Full Screen全屏
-
+ Toggle between full screen and normal mode <Alt+Enter>在全屏和正常模式之间切换 <Alt+Enter>
-
+ Session Options...会话选项...
-
+ Configure session options配置会话选项
-
+ Global Options...全局选项...
-
+ Configure global options配置全局选项
-
+ Real-time Save Options实时保存选项
-
+ Real-time save session options and global options实时保存会话选项和全局选项
-
+ Save Settings Now立即保存设置
-
+ Save options configuration now立即保存选项配置
-
+ Send ASCII...发送 ASCII...
-
+ Send ASCII file发送 ASCII 文件
-
+ Receive ASCII...接收 ASCII...
-
+ Receive ASCII file接收 ASCII 文件
-
+ Send Binary...发送二进制...
-
+ Send Binary file发送二进制文件
-
+ Send Kermit...发送 Kermit...
-
+ Send a file using Kermit使用 Kermit 发送文件
-
+ Receive Kermit...接收 Kermit...
-
+ Receive a file using Kermit使用 Kermit 接收文件
-
+ Send Xmodem...发送 Xmodem...
-
+ Send a file using Xmodem使用 Xmodem 发送文件
-
+ Receive Xmodem...接收 Xmodem...
-
+ Receive a file using Xmodem使用 Xmodem 接收文件
-
+ Send Ymodem...发送 Ymodem...
-
+ Send a file using Ymodem使用 Ymodem 发送文件
-
+ Receive Ymodem...接收 Ymodem...
-
+ Receive a file using Ymodem使用 Ymodem 接收文件
-
+ Zmodem Upload List...Zmodem 上传列表...
-
+ Display Zmodem file upload list显示 Zmodem 文件上传列表
-
+ Start Zmodem Upload开始 Zmodem 上传
-
+ Start Zmodem file upload开始 Zmodem 文件上传
-
+ Start TFTP Server启动 TFTP 服务器
-
+ Start/Stop the TFTP server启动/停止 TFTP 服务器
-
+ Run...运行...
-
+ Run a script运行脚本
-
+ Cancel取消
@@ -1213,759 +1214,759 @@
更改颜色
-
+ Cancel script execution取消脚本执行
-
+ Start Recording Script开始录制脚本
-
+ Start recording script开始录制脚本
-
+ Stop Recording Script...停止录制脚本...
-
+ Stop recording script停止录制脚本
-
+ Cancel Recording Script取消录制脚本
-
+ Cancel recording script取消录制脚本
-
+ Add Bookmark添加书签
-
+ Add a bookmark添加书签
-
-
+
+ Remove Bookmark删除书签
-
+ Remove a bookmark删除书签
-
-
+
+ Clean All Bookmark清除所有书签
-
+ Clean all bookmark清除所有书签
-
+ Keymap Manager键盘映射管理器
-
+ Display keymap editor显示键盘映射编辑器
-
+ Create Public Key...创建公钥...
-
+ Create a public key创建公钥
-
+ Publickey Manager公钥管理器
-
+ Display publickey manager显示公钥管理器
-
+ Internal Command内部命令
-
+ Display Internal Command window显示内部命令窗口
-
+ Portuguese (Brazil)Português (Brasil)
-
+ Switch to Portuguese (Brazil)Mudar para Português (Brasil)
-
+ GermanDeutsch
-
+ Switch to GermanWechseln Sie zu Deutsch
-
+ Czechčeština
-
+ Switch to CzechPřepnout do češtiny
-
+ Arabicعربي
-
+ Switch to Arabicالتبديل إلى العربية
-
+ Theme Color主题颜色
-
+ Set theme color, cancel to use default设置主题颜色,取消使用默认值
-
-
+
+ Keyborad Shortcuts Reference键盘快捷键参考
-
+ Display keyborad shortcuts reference显示键盘快捷键参考
-
-
+
+ Privacy Statement隐私声明
-
+ Display privacy statement显示隐私声明
-
-
+
+ About Python关于 Python
-
+ Display about Python dialog显示关于 Python 对话框
-
+ Laboratory实验室
-
-
+
+ SSH ScanningSSH 扫描
-
+ Display SSH scanning dialog显示 SSH 扫描对话框
-
+ Plugin metaData not found!未找到插件元数据!
-
+ Plugin api version not found!未找到插件 API 版本!
-
+ Plugin api version not match!插件 API 版本不匹配!
-
+ Plugin menu not found!未找到插件菜单!
-
+ Plugin init failed!插件初始化失败!
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+ Broadcast session can't transfer file!广播会话无法传输文件!
-
+ Select Files to Send as ASCII选择要发送的文件为 ASCII
-
-
+
+ Text Files (*.txt);;All Files (*)文本文件 (*.txt);;所有文件 (*)
-
+ Save Received Data as ASCII将接收的数据保存为 ASCII
-
+ Select Files to Send as BINARY选择要发送的文件为二进制
-
-
-
-
-
-
+
+
+
+
+
+ All Files (*)所有文件 (*)
-
+ Select Files to Send using Kermit选择要使用 Kermit 发送的文件
-
+ Select Files to Send using Xmodem选择要使用 Xmodem 发送的文件
-
+ Save Received Files using Xmodem使用 Xmodem 保存接收的文件
-
+ Select Files to Send using Ymodem选择要使用 Ymodem 发送的文件
-
+ Select Files to Send using Zmodem选择要使用 Zmodem 发送的文件
-
+ Select a script file选择一个脚本文件
-
+ Python Files (*.py);;All Files (*)Python 文件 (*.py);;所有文件 (*)
-
+ Select color选择颜色
-
+ Are you sure to disconnect "您确定要断开连接 "
-
+ " session?" 会话?
-
+ This software is a terminal emulator that provides a secure shell (SSH) connection, telnet connection, serial port connection, and other functions.此软件是一个终端仿真器,提供安全外壳 (SSH) 连接、 Telnet 连接、串口连接和其他功能。
-
+ This software does not collect any personal information, and does not send any information to the server.此软件不收集任何个人信息,也不向服务器发送任何信息。
-
+ This software does not contain any malicious code, and does not contain any backdoors.此软件不包含任何恶意代码,也不包含任何后门。
-
+ This software is open source software, you can view the source code on the github website.此软件是开源软件,您可以在 github 网站上查看源代码。
-
+ This software is provided as is, without any warranty.此软件按原样提供,不提供任何保证。
-
+ If you have any questions or suggestions, please contact the author.如果您有任何问题或建议,请联系作者。
-
+ Version版本
-
+ Commit提交
-
+ Date日期
-
-
+
+ Author作者
-
+ Website网站
-
+ Tab标签
-
+ Arrange sessions in tabs在标签中排列会话
-
+ Tile平铺
-
+ Arrange sessions in non-overlapping tiles在不重叠的平铺中排列会话
-
+ Cascade层叠
-
+ Arrange sessions to overlap each other排列会话以彼此重叠
-
+ Simplified Chinese简体中文
-
+ Switch to Simplified Chinese切换到简体中文
-
+ Traditional Chinese繁體中文
-
+ Switch to Traditional Chinese切換到繁體中文
-
+ RussianРусский
-
+ Switch to RussianПереключиться на русский
-
+ Korean한국어
-
+ Switch to Korean한국어로 전환
-
+ Japanese日本語
-
+ Switch to Japanese日本語に切り替える
-
+ Frenchfrançais
-
+ Switch to FrenchPasser au français
-
+ Spanishespañol
-
+ Switch to SpanishCambiar a español
-
+ English
-
+ Switch to English
-
+ Light明亮
-
+ Switch to light theme切换到明亮主题
-
+ Dark暗黑
-
+ Switch to dark theme切换到暗黑主题
-
+ Display help显示帮助
-
+ Check Update检查更新
-
+ Check for updates检查更新
-
-
+
+ About关于
-
+ Display about dialog显示关于对话框
-
+ About Qt关于 Qt
-
+ Display about Qt dialog显示关于 Qt 对话框
-
+ Plugin Info插件信息
-
+ Display plugin information dialog显示插件信息窗口
-
+ PrintScreen saved to %1打印屏幕保存到 %1
-
+ Save Screenshot保存屏幕截图
-
+ Image Files (*.jpg)图像文件 (*.jpg)
-
-
+
+ Screenshot saved to %1屏幕截图保存到 %1
-
+ Save Session Export保存会话导出
-
+ Text Files (*.txt);;HTML Files (*.html)文本文件 (*.txt);;HTML 文件 (*.html)
-
+ Text Files (*.txt)文本文件 (*.txt)
-
+ HTML Files (*.html)HTML 文件 (*.html)
-
+ Session Export saved to %1会话导出保存到 %1
-
+ Session Export failed to save to %1会话导出保存到 %1 失败
-
+ Select a directory选择一个目录
-
+ Select a bookmark选择一个书签
-
+ Are you sure to clean all bookmark?您确定要清除所有书签吗?
-
+ Port端口
-
+ Video background is enabled, please enable animation in global options (more system resources) or change background image.视频背景已启用,请在全局选项中启用动画(更多系统资源)或更改背景图像。
-
+ Session information get failed.会话信息获取失败。
-
+ Telnet -
-
+ Telnet
-
+ Serial - 串行通讯 -
-
+ Serial串行通讯
-
+ Raw -
-
+ Raw
-
+ NamePipe - 命名管道 -
-
+ NamePipe命名管道
-
-
+
+ Local Shell本机终端
-
+ Local Shell - 本机终端 -
-
+ Global Shortcuts:全局快捷键:
-
+ show/hide menu bar显示/隐藏菜单栏
-
+ connect to LocalShell连接到本机终端
-
+ clone current session克隆当前会话
-
+ switch ui to STD mode切换 UI 到标准模式
-
+ switch ui to MINI mode切换 UI 到迷你模式
-
+ switch to previous session切换到上一个会话
-
+ switch to next session切换到下一个会话
-
+ switch to session [num]切换到会话 [num]
-
+ Go to line start跳转到行首
-
+ Go to line end跳转到行尾
-
+ There are sessions that have not yet been unlocked, please unlock them first.有会话尚未解锁,请先解锁。
-
+ Are you sure to quit?确定要退出吗?
@@ -2697,8 +2698,8 @@
-
-
+
+ Warning警告
@@ -2735,7 +2736,7 @@ If you need to use another shell, please create a session through [quick-connect
-
+ The Default Local Shell is not a valid file!默认本地终端不是有效文件!
@@ -2785,7 +2786,7 @@ If you need to use another shell, please create a session through [quick-connect
传输
-
+ The User Plugins Path is not a directory!用户插件路径不是一个目录!
@@ -2869,93 +2870,36 @@ If you need to use another shell, please create a session through [quick-connect
内部命令
-
+ Copy复制
-
+ Paste粘贴
-
+ Select All全选
-
+ Find查找
-
+ Zoom In放大
-
+ Zoom Out缩小
-
- Session
-
-
- Bell in session '%1'
- 会话 '%1' 中的铃声
-
-
-
- TerminalDisplay
-
-
- Size: XXX x XXX
- 大小: XXX x XXX
-
-
-
- Size: %1 x %2
- 大小: %1 x %2
-
-
-
- Paste multiline text
- 粘贴多行文本
-
-
-
- Are you sure you want to paste this text?
- 您确定要粘贴此文本吗?
-
-
-
- <qt>Output has been <a href="http://en.wikipedia.org/wiki/Flow_control">suspended</a> by pressing Ctrl+S. Press <b>Ctrl+Q</b> to resume.</qt>
- <qt>按下 Ctrl+S 已 <a href="http://en.wikipedia.org/wiki/Flow_control">挂起</a> 输出。按 <b>Ctrl+Q</b> 恢复。</qt>
-
-
-
- UrlFilter
-
-
- Follow link (ctrl + click)
- 跳转链接 (ctrl + 单击)
-
-
-
- Follow path (ctrl + click)
- 跳转路径 (ctrl + 单击)
-
-
-
- Vt102Emulation
-
-
- No keyboard translator available. The information needed to convert key presses into characters to send to the terminal is missing.
- 没有可用的键盘转换器。缺少将按键转换为要发送到终端的字符所需的信息。
-
-LockSessionWindow
@@ -3484,47 +3428,47 @@ If you need to use another shell, please create a session through [quick-connect
QObject
-
+ Un-named Color Scheme未命名的颜色方案
-
+ Accessible Color Scheme可访问的颜色方案
-
+ Open Link打开链接
-
+ Copy Link Address复制链接
-
+ Send Email To...发送邮件到...
-
+ Copy Email Address复制邮件地址
-
+ Open Path打开路径
-
+ Open Containing Folder打开包含的文件夹
-
+ Copy Path复制路径
@@ -3587,12 +3531,12 @@ If you need to use another shell, please create a session through [quick-connect
QTermWidget
-
+ Color Scheme Error颜色方案错误
-
+ Cannot load color scheme: %1无法加载颜色方案:%1
@@ -3897,20 +3841,20 @@ If you need to use another shell, please create a session through [quick-connect
查找:
-
-
+
+ Match case区分大小写
-
-
+
+ Regular expression正则表达式
-
-
+
+ Highlight all matches高亮显示所有匹配项
@@ -4252,25 +4196,25 @@ If you need to use another shell, please create a session through [quick-connect
SessionsWindow
-
+ Telnet ErrorTELNET 错误
-
+ Telnet error:
%1.TELNET 错误:
%1.
-
-
+
+ Serial Error串行通讯错误
-
+ Serial error:
%0
%1.
@@ -4279,133 +4223,133 @@ If you need to use another shell, please create a session through [quick-connect
%1.
-
+ Raw Socket Error原始套接字错误
-
+ Raw Socket error:
%1.原始套接字错误:
%1.
-
+ Name Pipe Error命名管道错误
-
+ Name Pipe error:
%1.命名管道错误:
%1.
-
-
+
+ SSH2 ErrorSSH2 错误
-
-
+
+ SSH2 error:
%1.SSH2 错误:
%1.
-
-
+
+ Open URL打开 URL
-
-
+
+ Cannot open URL %1.无法打开 URL %1.
-
+ Select Files to Send using Zmodem选择要使用 Zmodem 发送的文件
-
+ All Files (*)所有文件 (*)
-
+ Start Local Shell启动本机终端
-
+ Cannot start local shell:
%1.无法启动本机终端:
%1.
-
+ Serial port %1 has been removed.串行端口 %1 已被移除。
-
+ Save log...保存日志...
-
+ log files (*.log)日志文件 (*.log)
-
+ Save log保存日志
-
-
-
+
+
+ Cannot write file %1:
%2.无法写入文件 %1:
%2.
-
+ Save Raw log...保存原始日志...
-
+ binary files (*.bin)二进制文件 (*.bin)
-
+ Save Raw log保存原始日志
-
+ Unlock Session解锁会话
-
+ Wrong password!密码错误!
-
+ Receive ASCII File接收 ASCII 文件
@@ -4662,6 +4606,34 @@ If you need to use another shell, please create a session through [quick-connect
传输信息
+
+ TerminalDisplay
+
+
+ Size: XXX x XXX
+ 大小: XXX x XXX
+
+
+
+ Size: %1 x %2
+ 大小: %1 x %2
+
+
+
+ Paste multiline text
+ 粘贴多行文本
+
+
+
+ Are you sure you want to paste this text?
+ 您确定要粘贴此文本吗?
+
+
+
+ <qt>Output has been <a href="http://en.wikipedia.org/wiki/Flow_control">suspended</a> by pressing Ctrl+S. Press <b>Ctrl+Q</b> to resume.</qt>
+ <qt>按下 Ctrl+S 已 <a href="http://en.wikipedia.org/wiki/Flow_control">挂起</a> 输出。按 <b>Ctrl+Q</b> 恢复。</qt>
+
+UndoStack
@@ -4680,6 +4652,27 @@ If you need to use another shell, please create a session through [quick-connect
覆盖 %1 字符
+
+ UrlFilter
+
+
+ Follow link (ctrl + click)
+ 跳转链接 (ctrl + 单击)
+
+
+
+ Follow path (ctrl + click)
+ 跳转路径 (ctrl + 单击)
+
+
+
+ Vt102Emulation
+
+
+ No keyboard translator available. The information needed to convert key presses into characters to send to the terminal is missing.
+ 没有可用的键盘转换器。缺少将按键转换为要发送到终端的字符所需的信息。
+
+keyMapManager
diff --git a/lang/quardCRT_zh_HK.ts b/lang/quardCRT_zh_HK.ts
index 87e60137..2afc9d7b 100644
--- a/lang/quardCRT_zh_HK.ts
+++ b/lang/quardCRT_zh_HK.ts
@@ -13,7 +13,7 @@
CentralWidget
-
+ Tool Bar工具欄
@@ -26,21 +26,21 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Warning警告
@@ -285,7 +285,7 @@
-
+ Ready就緒
@@ -464,7 +464,7 @@
-
+ Help幫助
@@ -566,26 +566,27 @@
+ Enter host <Alt+R> to connect輸入主機 <Alt+R> 連接
-
+ Disconnect All斷開所有
-
+ Disconnect all sessions斷開所有會話
-
+ Clone Session克隆會話
-
+ Clone current session <Ctrl+Shift+T>克隆當前會話 <Ctrl+Shift+T>
@@ -595,564 +596,564 @@
鎖定會話
-
+ Log Session記錄日誌
-
+ Create a log file for current session為當前會話創建日誌文件
-
+ Raw Log Session記錄原始日誌
-
+ Create a raw log file for current session為當前會話創建原始日誌文件
-
+ Hex View十六進制視圖
-
+ Show/Hide Hex View for current session顯示/隱藏當前會話的十六進制視圖
-
+ Exit退出
-
+ Quit the application退出應用程序
-
+ Copy複製
-
+ Copy the selected text to the clipboard <Command+C>將所選文本複製到剪貼板 <Command+C>
-
+ Copy the selected text to the clipboard <Ctrl+Ins>將所選文本複製到剪貼板 <Ctrl+Ins>
-
+ Paste粘貼
-
+ Paste the clipboard text to the current session <Command+V>將剪貼板文本粘貼到當前會話 <Command+V>
-
+ Paste the clipboard text to the current session <Shift+Ins>將剪貼板文本粘貼到當前會話 <Shift+Ins>
-
+ Copy and Paste複製和粘貼
-
+ Copy the selected text to the clipboard and paste to the current session將所選文本複製到剪貼板並粘貼到當前會話
-
+ Select All全選
-
+ Select all text in the current session <Ctrl+Shift+A>選擇當前會話中的所有文本 <Ctrl+Shift+A>
-
+ Find...查找...
-
+ Find text in the current session <Ctrl+F>在當前會話中查找文本 <Ctrl+F>
-
+ Print Screen打印屏幕
-
+ Print current screen打印當前屏幕
-
+ Screen Shot屏幕截圖
-
+ Screen shot current screen <Alt+P>截圖當前屏幕 <Alt+P>
-
+ Session Export會話導出
-
+ Export current session to a file <Alt+O>將當前會話導出到文件 <Alt+O>
-
+ Clear Scrollback清除滾動內容
-
+ Clear the contents of the scrollback rows清除滾動行的內容
-
+ Clear Screen清除屏幕
-
+ Clear the contents of the current screen清除當前屏幕的內容
-
+ Clear Screen and Scrollback清除屏幕和滾動內容
-
+ Clear the contents of the screen and scrollback清除屏幕和滾動內容的內容
-
+ Reset重置
-
+ Reset terminal emulator重置終端仿真器
-
+ Zoom In放大
-
+ Zoom In <Ctrl+"=">放大 <Ctrl+"=">
-
+ Zoom Out縮小
-
+ Zoom Out <Ctrl+"-">縮小 <Ctrl+"-">
-
-
+
+ Zoom Reset重置縮放
-
+ Layout佈局
-
+ Single Layout單個佈局
-
+ Single layout單個佈局
-
+ Two Columns Layout兩列佈局
-
+ Two columns layout兩列佈局
-
+ Three Columns Layout三列佈局
-
+ Three columns layout三列佈局
-
+ Two Rows Layout兩行佈局
-
+ Two rows layout兩行佈局
-
+ Three Rows Layout三行佈局
-
+ Three rows layout三行佈局
-
+ Grid Layout網格佈局
-
+ Grid layout網格佈局
-
+ Two Rows Right Layout兩行右側佈局
-
+ Two rows right layout兩行右側佈局
-
+ Two Columns Bottom Layout兩列底部佈局
-
+ Two columns bottom layout兩列底部佈局
-
+ Flip Layout翻轉佈局
-
+ Flip layout翻轉佈局
-
+ Menu Bar菜單欄
-
+ Show/Hide Menu Bar <Alt+U>顯示/隱藏菜單欄 <Alt+U>
-
+ Show/Hide Tool Bar顯示/隱藏工具欄
-
+ Status Bar狀態欄
-
+ Show/Hide Status Bar顯示/隱藏狀態欄
-
+ Command Window命令窗口
-
+ Show/Hide Command Window顯示/隱藏命令窗口
-
+ Connect Bar連接欄
-
+ Show/Hide Connect Bar顯示/隱藏連接欄
-
+ Side Window側邊窗口
-
+ Show/Hide Side Window顯示/隱藏側邊窗口
-
+ Windows Transparency窗口透明
-
+ Enable/Disable alpha transparency啟用/禁用alpha透明度
-
+ Vertical Scroll Bar垂直滾動條
-
+ Show/Hide Vertical Scroll Bar顯示/隱藏垂直滾動條
-
+ Allways On Top總在最前
-
+ Show window always on top總是顯示窗口在最上面
-
+ Full Screen全屏
-
+ Toggle between full screen and normal mode <Alt+Enter>在全屏模式和正常模式之間切換 <Alt+Enter>
-
+ Session Options...會話選項...
-
+ Configure session options配置會話選項
-
+ Global Options...全局選項...
-
+ Configure global options配置全局選項
-
+ Real-time Save Options實時保存選項
-
+ Real-time save session options and global options實時保存會話選項和全局選項
-
+ Save Settings Now立即保存設置
-
+ Save options configuration now立即保存選項配置
-
+ Send ASCII...發送ASCII...
-
+ Send ASCII file發送ASCII文件
-
+ Receive ASCII...接收ASCII...
-
+ Receive ASCII file接收ASCII文件
-
+ Send Binary...發送二進制...
-
+ Send Binary file發送二進制文件
-
+ Send Kermit...發送Kermit...
-
+ Send a file using Kermit使用Kermit發送文件
-
+ Receive Kermit...接收Kermit...
-
+ Receive a file using Kermit使用Kermit接收文件
-
+ Send Xmodem...發送Xmodem...
-
+ Send a file using Xmodem使用Xmodem發送文件
-
+ Receive Xmodem...接收Xmodem...
-
+ Receive a file using Xmodem使用Xmodem接收文件
-
+ Send Ymodem...發送Ymodem...
-
+ Send a file using Ymodem使用Ymodem發送文件
-
+ Receive Ymodem...接收Ymodem...
-
+ Receive a file using Ymodem使用Ymodem接收文件
-
+ Zmodem Upload List...Zmodem上傳列表...
-
+ Display Zmodem file upload list顯示Zmodem文件上傳列表
-
+ Start Zmodem Upload開始Zmodem上傳
-
+ Start Zmodem file upload開始Zmodem文件上傳
-
+ Start TFTP Server啟動TFTP服務器
-
+ Start/Stop the TFTP server啟動/停止TFTP服務器
-
+ Run...運行...
-
+ Run a script運行腳本
-
+ Cancel取消
@@ -1213,759 +1214,759 @@
更改顏色
-
+ Cancel script execution取消腳本執行
-
+ Start Recording Script開始記錄腳本
-
+ Start recording script開始記錄腳本
-
+ Stop Recording Script...停止記錄腳本...
-
+ Stop recording script停止記錄腳本
-
+ Cancel Recording Script取消記錄腳本
-
+ Cancel recording script取消記錄腳本
-
+ Add Bookmark添加書籤
-
+ Add a bookmark添加書籤
-
-
+
+ Remove Bookmark刪除書籤
-
+ Remove a bookmark刪除書籤
-
-
+
+ Clean All Bookmark清除所有書籤
-
+ Clean all bookmark清除所有書籤
-
+ Keymap Manager鍵盤映射管理器
-
+ Display keymap editor顯示鍵盤映射編輯器
-
+ Create Public Key...創建公鑰...
-
+ Create a public key創建公鑰
-
+ Publickey Manager公鑰管理器
-
+ Display publickey manager顯示公鑰管理器
-
+ Internal Command內部命令
-
+ Display Internal Command window顯示內部命令窗口
-
+ Portuguese (Brazil)Português (Brasil)
-
+ Switch to Portuguese (Brazil)Mudar para Português (Brasil)
-
+ GermanDeutsch
-
+ Switch to GermanWechseln Sie zu Deutsch
-
+ Czechčeština
-
+ Switch to CzechPřepnout do češtiny
-
+ Arabicعربي
-
+ Switch to Arabicالتبديل إلى العربية
-
+ Theme Color主題顏色
-
+ Set theme color, cancel to use default設置主題顏色,取消使用默認值
-
-
+
+ Keyborad Shortcuts Reference鍵盤快捷鍵參考
-
+ Display keyborad shortcuts reference顯示鍵盤快捷鍵參考
-
-
+
+ Privacy Statement隱私聲明
-
+ Display privacy statement顯示隱私聲明
-
-
+
+ About Python關於Python
-
+ Display about Python dialog顯示關於Python對話框
-
+ Laboratory實驗室
-
-
+
+ SSH ScanningSSH掃描
-
+ Display SSH scanning dialog顯示SSH掃描對話框
-
+ Plugin metaData not found!未找到插件元數據!
-
+ Plugin api version not found!未找到插件api版本!
-
+ Plugin api version not match!插件api版本不匹配!
-
+ Plugin menu not found!未找到插件菜單!
-
+ Plugin init failed!插件初始化失敗!
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+ Broadcast session can't transfer file!廣播會話無法傳輸文件!
-
+ Select Files to Send as ASCII選擇要發送的文件為ASCII
-
-
+
+ Text Files (*.txt);;All Files (*)文本文件 (*.txt);;所有文件 (*)
-
+ Save Received Data as ASCII將接收的數據保存為ASCII
-
+ Select Files to Send as BINARY選擇要發送的文件為二進制
-
-
-
-
-
-
+
+
+
+
+
+ All Files (*)所有文件 (*)
-
+ Select Files to Send using Kermit選擇要使用Kermit發送的文件
-
+ Select Files to Send using Xmodem選擇要使用Xmodem發送的文件
-
+ Save Received Files using Xmodem使用Xmodem保存接收的文件
-
+ Select Files to Send using Ymodem選擇要使用Ymodem發送的文件
-
+ Select Files to Send using Zmodem選擇要使用Zmodem發送的文件
-
+ Select a script file選擇一個腳本文件
-
+ Python Files (*.py);;All Files (*)Python文件 (*.py);;所有文件 (*)
-
+ Select color選擇顏色
-
+ Are you sure to disconnect "您確定要斷開連接"
-
+ " session?"會話?
-
+ This software is a terminal emulator that provides a secure shell (SSH) connection, telnet connection, serial port connection, and other functions.此軟件是一個終端仿真器,提供安全外殼(SSH)連接,telnet連接,串口連接和其他功能。
-
+ This software does not collect any personal information, and does not send any information to the server.此軟件不收集任何個人信息,也不向服務器發送任何信息。
-
+ This software does not contain any malicious code, and does not contain any backdoors.此軟件不包含任何惡意代碼,也不包含任何後門。
-
+ This software is open source software, you can view the source code on the github website.此軟件是開源軟件,您可以在github網站上查看源代碼。
-
+ This software is provided as is, without any warranty.此軟件按原樣提供,不提供任何保證。
-
+ If you have any questions or suggestions, please contact the author.如果您有任何問題或建議,請聯繫作者。
-
+ Version版本
-
+ Commit提交
-
+ Date日期
-
-
+
+ Author作者
-
+ Website網站
-
+ Tab標籤
-
+ Arrange sessions in tabs在標籤中排列會話
-
+ Tile平鋪
-
+ Arrange sessions in non-overlapping tiles在不重疊的平鋪中排列會話
-
+ Cascade級聯
-
+ Arrange sessions to overlap each other安排會話互相重疊
-
+ Simplified Chinese简体中文
-
+ Switch to Simplified Chinese切换到简体中文
-
+ Traditional Chinese繁體中文
-
+ Switch to Traditional Chinese切換到繁體中文
-
+ RussianРусский
-
+ Switch to RussianПереключиться на русский
-
+ Korean한국어
-
+ Switch to Korean한국어로 전환
-
+ Japanese日本語
-
+ Switch to Japanese日本語に切り替える
-
+ Frenchfrançais
-
+ Switch to FrenchPasser au français
-
+ Spanishespañol
-
+ Switch to SpanishCambiar a español
-
+ English
-
+ Switch to English
-
+ Light明亮
-
+ Switch to light theme切換到明亮的主題
-
+ Dark暗黑
-
+ Switch to dark theme切換到暗黑主題
-
+ Display help顯示幫助
-
+ Check Update檢查更新
-
+ Check for updates檢查更新
-
-
+
+ About關於
-
+ Display about dialog顯示關於對話框
-
+ About Qt關於Qt
-
+ Display about Qt dialog顯示關於Qt對話框
-
+ Plugin Info插件信息
-
+ Display plugin information dialog顯示插件信息對話框
-
+ PrintScreen saved to %1PrintScreen保存到%1
-
+ Save Screenshot保存屏幕截圖
-
+ Image Files (*.jpg)圖像文件(*.jpg)
-
-
+
+ Screenshot saved to %1屏幕截圖保存到%1
-
+ Save Session Export保存會話導出
-
+ Text Files (*.txt);;HTML Files (*.html)文本文件(*.txt);;HTML文件(*.html)
-
+ Text Files (*.txt)文本文件(*.txt)
-
+ HTML Files (*.html)HTML文件(*.html)
-
+ Session Export saved to %1會話導出保存到%1
-
+ Session Export failed to save to %1會話導出保存到%1失敗
-
+ Select a directory選擇一個目錄
-
+ Select a bookmark選擇一個書籤
-
+ Are you sure to clean all bookmark?您確定要清除所有書籤嗎?
-
+ Port端口
-
+ Video background is enabled, please enable animation in global options (more system resources) or change background image.視頻背景已啟用,請在全局選項中啟用動畫(更多系統資源)或更改背景圖像。
-
+ Session information get failed.會話信息獲取失敗。
-
+ Telnet -
-
+ Telnet
-
+ Serial - 串口 -
-
+ Serial串口
-
+ Raw -
-
+ Raw
-
+ NamePipe - 命名管道 -
-
+ NamePipe命名管道
-
-
+
+ Local Shell本地Shell
-
+ Local Shell - 本地Shell -
-
+ Global Shortcuts:全局快捷鍵:
-
+ show/hide menu bar顯示/隱藏菜單欄
-
+ connect to LocalShell連接到本地Shell
-
+ clone current session克隆當前會話
-
+ switch ui to STD mode切換ui到STD模式
-
+ switch ui to MINI mode切換ui到MINI模式
-
+ switch to previous session切換到上一個會話
-
+ switch to next session切換到下一個會話
-
+ switch to session [num]切換到會話[num]
-
+ Go to line start跳轉到行首
-
+ Go to line end跳轉到行尾
-
+ There are sessions that have not yet been unlocked, please unlock them first.有會話尚未解鎖,請先解鎖它們。
-
+ Are you sure to quit?您確定要退出嗎?
@@ -2707,8 +2708,8 @@
-
-
+
+ Warning警告
@@ -2745,7 +2746,7 @@ If you need to use another shell, please create a session through [quick-connect
-
+ The Default Local Shell is not a valid file!默認本地終端不是有效文件!
@@ -2795,7 +2796,7 @@ If you need to use another shell, please create a session through [quick-connect
傳輸
-
+ The User Plugins Path is not a directory!用戶插件路徑不是一個目錄!
@@ -2869,93 +2870,36 @@ If you need to use another shell, please create a session through [quick-connect
內部命令
-
+ Copy複製
-
+ Paste粘貼
-
+ Select All全選
-
+ Find查找
-
+ Zoom In放大
-
+ Zoom Out縮小
-
- Session
-
-
- Bell in session '%1'
- 會話 '%1' 中的鈴聲
-
-
-
- TerminalDisplay
-
-
- Size: XXX x XXX
- 大小: XXX x XXX
-
-
-
- Size: %1 x %2
- 大小: %1 x %2
-
-
-
- Paste multiline text
- 粘貼多行文本
-
-
-
- Are you sure you want to paste this text?
- 您確定要粘貼此文本嗎?
-
-
-
- <qt>Output has been <a href="http://en.wikipedia.org/wiki/Flow_control">suspended</a> by pressing Ctrl+S. Press <b>Ctrl+Q</b> to resume.</qt>
- <qt>通過按Ctrl+S已經<a href="http://en.wikipedia.org/wiki/Flow_control">暫停</a>輸出。 按<b>Ctrl+Q</b>恢復。</qt>
-
-
-
- UrlFilter
-
-
- Follow link (ctrl + click)
- 跳轉鏈接 (ctrl + 單擊)
-
-
-
- Follow path (ctrl + click)
- 跳轉路徑 (ctrl + 單擊)
-
-
-
- Vt102Emulation
-
-
- No keyboard translator available. The information needed to convert key presses into characters to send to the terminal is missing.
- 沒有可用的鍵盤轉換器。 缺少將按鍵轉換為要發送到終端的字符所需的信息。
-
-LockSessionWindow
@@ -3484,47 +3428,47 @@ If you need to use another shell, please create a session through [quick-connect
QObject
-
+ Un-named Color Scheme未命名的配色方案
-
+ Accessible Color Scheme無障礙配色方案
-
+ Open Link打開鏈接
-
+ Copy Link Address複製鏈接
-
+ Send Email To...發送郵件給...
-
+ Copy Email Address複製郵件地址
-
+ Open Path打開路徑
-
+ Open Containing Folder打開包含的文件夾
-
+ Copy Path複製路徑
@@ -3587,12 +3531,12 @@ If you need to use another shell, please create a session through [quick-connect
QTermWidget
-
+ Color Scheme Error配色方案錯誤
-
+ Cannot load color scheme: %1無法加載配色方案:%1
@@ -3897,20 +3841,20 @@ If you need to use another shell, please create a session through [quick-connect
查找:
-
-
+
+ Match case區分大小寫
-
-
+
+ Regular expression正則表達式
-
-
+
+ Highlight all matches高亮所有匹配項
@@ -4252,25 +4196,25 @@ If you need to use another shell, please create a session through [quick-connect
SessionsWindow
-
+ Telnet Errortelnet錯誤
-
+ Telnet error:
%1.telnet錯誤:
%1。
-
-
+
+ Serial Error串口錯誤
-
+ Serial error:
%0
%1.
@@ -4279,133 +4223,133 @@ If you need to use another shell, please create a session through [quick-connect
%1。
-
+ Raw Socket Error原始套接字錯誤
-
+ Raw Socket error:
%1.原始套接字錯誤:
%1。
-
+ Name Pipe Error命名管道錯誤
-
+ Name Pipe error:
%1.命名管道錯誤:
%1。
-
-
+
+ SSH2 ErrorSSH2錯誤
-
-
+
+ SSH2 error:
%1.SSH2錯誤:
%1。
-
-
+
+ Open URL打開URL
-
-
+
+ Cannot open URL %1.無法打開URL %1。
-
+ Select Files to Send using Zmodem選擇要使用Zmodem發送的文件
-
+ All Files (*)所有文件 (*)
-
+ Start Local Shell啟動本地Shell
-
+ Cannot start local shell:
%1.無法啟動本地shell:
%1。
-
+ Serial port %1 has been removed.串口%1已被移除。
-
+ Save log...保存日誌...
-
+ log files (*.log)日誌文件(*.log)
-
+ Save log保存日誌
-
-
-
+
+
+ Cannot write file %1:
%2.無法寫入文件%1:
%2。
-
+ Save Raw log...保存原始日誌...
-
+ binary files (*.bin)二進制文件(*.bin)
-
+ Save Raw log保存原始日誌
-
+ Unlock Session解鎖會話
-
+ Wrong password!密碼錯誤!
-
+ Receive ASCII File接收ASCII文件
@@ -4662,6 +4606,34 @@ If you need to use another shell, please create a session through [quick-connect
傳輸信息
+
+ TerminalDisplay
+
+
+ Size: XXX x XXX
+ 大小: XXX x XXX
+
+
+
+ Size: %1 x %2
+ 大小: %1 x %2
+
+
+
+ Paste multiline text
+ 粘貼多行文本
+
+
+
+ Are you sure you want to paste this text?
+ 您確定要粘貼此文本嗎?
+
+
+
+ <qt>Output has been <a href="http://en.wikipedia.org/wiki/Flow_control">suspended</a> by pressing Ctrl+S. Press <b>Ctrl+Q</b> to resume.</qt>
+ <qt>通過按Ctrl+S已經<a href="http://en.wikipedia.org/wiki/Flow_control">暫停</a>輸出。 按<b>Ctrl+Q</b>恢復。</qt>
+
+UndoStack
@@ -4680,6 +4652,27 @@ If you need to use another shell, please create a session through [quick-connect
覆蓋%1字符
+
+ UrlFilter
+
+
+ Follow link (ctrl + click)
+ 跳轉鏈接 (ctrl + 單擊)
+
+
+
+ Follow path (ctrl + click)
+ 跳轉路徑 (ctrl + 單擊)
+
+
+
+ Vt102Emulation
+
+
+ No keyboard translator available. The information needed to convert key presses into characters to send to the terminal is missing.
+ 沒有可用的鍵盤轉換器。 缺少將按鍵轉換為要發送到終端的字符所需的信息。
+
+keyMapManager
diff --git a/lib/qtermwidget/BlockArray.cpp b/lib/qtermwidget/BlockArray.cpp
index dce84b66..28952fe4 100644
--- a/lib/qtermwidget/BlockArray.cpp
+++ b/lib/qtermwidget/BlockArray.cpp
@@ -1,24 +1,23 @@
/*
- This file is part of Konsole, an X terminal.
- Copyright (C) 2000 by Stephan Kulow
-
- Rewritten for QT4 by e_k , Copyright (C)2008
-
- 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.
-
+ This file is part of Konsole, an X terminal.
+ Copyright (C) 2000 by Stephan Kulow
+
+ Rewritten for QT4 by e_k , Copyright (C)2008
+
+ 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
@@ -30,12 +29,12 @@
#include
#else if defined(Q_CC_MSVC)
#include
-#define dup _dup
-#define fileno _fileno
-#define write _write
-#define read _read
-#define close _close
-#define lseek _lseek
+#define dup _dup
+#define fileno _fileno
+#define write _write
+#define read _read
+#define close _close
+#define lseek _lseek
#define ftruncate _chsize
#endif
#else
@@ -48,34 +47,32 @@
static int blocksize = 0;
BlockArray::BlockArray()
- : size(0),
- current(size_t(-1)),
- index(size_t(-1)),
- lastmap(nullptr),
- lastmap_index(size_t(-1)),
- lastblock(nullptr), ion(-1),
- length(0)
-{
+ : size(0)
+ , current(size_t(-1))
+ , index(size_t(-1))
+ , lastmap(nullptr)
+ , lastmap_index(size_t(-1))
+ , lastblock(nullptr)
+ , ion(-1)
+ , length(0) {
// lastmap_index = index = current = size_t(-1);
if (blocksize == 0) {
-#if defined(Q_OS_WIN)
+ #if defined(Q_OS_WIN)
SYSTEM_INFO system_info;
GetSystemInfo(&system_info);
blocksize = ((sizeof(Block) / system_info.dwPageSize) + 1) * system_info.dwPageSize;
-#else
+ #else
blocksize = ((sizeof(Block) / getpagesize()) + 1) * getpagesize();
-#endif
+ #endif
}
}
-BlockArray::~BlockArray()
-{
+BlockArray::~BlockArray() {
setHistorySize(0);
Q_ASSERT(!lastblock);
}
-size_t BlockArray::append(Block * block)
-{
+size_t BlockArray::append(Block *block) {
if (!size) {
return size_t(-1);
}
@@ -110,8 +107,7 @@ size_t BlockArray::append(Block * block)
return current;
}
-size_t BlockArray::newBlock()
-{
+size_t BlockArray::newBlock() {
if (!size) {
return size_t(-1);
}
@@ -121,13 +117,11 @@ size_t BlockArray::newBlock()
return index + 1;
}
-Block * BlockArray::lastBlock() const
-{
- return lastblock;
+Block *BlockArray::lastBlock() const {
+ return lastblock;
}
-bool BlockArray::has(size_t i) const
-{
+bool BlockArray::has(size_t i) const {
if (i == index + 1) {
return true;
}
@@ -141,8 +135,7 @@ bool BlockArray::has(size_t i) const
return true;
}
-const Block * BlockArray::at(size_t i)
-{
+const Block *BlockArray::at(size_t i) {
if (i == index + 1) {
return lastblock;
}
@@ -156,9 +149,9 @@ const Block * BlockArray::at(size_t i)
return nullptr;
}
-// if (index - i >= length) {
-// return 0;
-// }
+ //if (index - i >= length) {
+ // return 0;
+ //}
size_t j = i; // (current - (index - i) + (index/size+1)*size) % size ;
@@ -166,9 +159,9 @@ const Block * BlockArray::at(size_t i)
unmap();
#if defined(Q_OS_WIN)
- Block * block = (Block *)VirtualAlloc(NULL, size, MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE);
+ Block *block = (Block *)VirtualAlloc(NULL, size, MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE);
#else
- Block * block = (Block *)mmap(nullptr, blocksize, PROT_READ, MAP_PRIVATE, ion, j * blocksize);
+ Block *block = (Block *)mmap(nullptr, blocksize, PROT_READ, MAP_PRIVATE, ion, j * blocksize);
#endif
if (block == (Block *)-1) {
@@ -182,30 +175,26 @@ const Block * BlockArray::at(size_t i)
return block;
}
-void BlockArray::unmap()
-{
+void BlockArray::unmap() {
if (lastmap) {
-#if defined(Q_OS_WIN)
- int res = 0;
- VirtualFree((VOID *) lastmap, 0, MEM_RELEASE );
-#else
+ #if defined(Q_OS_WIN)
+ VirtualFree((VOID *)lastmap, 0, MEM_RELEASE);
+ #else
int res = munmap((char *)lastmap, blocksize);
-#endif
if (res < 0) {
perror("munmap");
}
+ #endif
}
lastmap = nullptr;
lastmap_index = size_t(-1);
}
-bool BlockArray::setSize(size_t newsize)
-{
+bool BlockArray::setSize(size_t newsize) {
return setHistorySize(newsize * 1024 / blocksize);
}
-bool BlockArray::setHistorySize(size_t newsize)
-{
+bool BlockArray::setHistorySize(size_t newsize) {
if (size == newsize) {
return false;
}
@@ -216,7 +205,7 @@ bool BlockArray::setHistorySize(size_t newsize)
delete lastblock;
lastblock = nullptr;
if (ion >= 0) {
- close(ion);
+ close(ion);
}
ion = -1;
current = size_t(-1);
@@ -224,12 +213,12 @@ bool BlockArray::setHistorySize(size_t newsize)
}
if (!size) {
- FILE * tmp = tmpfile();
+ FILE *tmp = tmpfile();
if (!tmp) {
perror("konsole: cannot open temp file.\n");
} else {
ion = dup(fileno(tmp));
- if (ion<0) {
+ if (ion < 0) {
perror("konsole: cannot dup temp file.\n");
fclose(tmp);
}
@@ -251,7 +240,7 @@ bool BlockArray::setHistorySize(size_t newsize)
return false;
} else {
decreaseBuffer(newsize);
- int f = ftruncate(ion, length*blocksize);
+ int f = ftruncate(ion, length * blocksize);
Q_UNUSED(f);
size = newsize;
@@ -259,8 +248,7 @@ bool BlockArray::setHistorySize(size_t newsize)
}
}
-void moveBlock(FILE * fion, int cursor, int newpos, char * buffer2)
-{
+void moveBlock(FILE *fion, int cursor, int newpos, char *buffer2) {
int res = fseek(fion, cursor * blocksize, SEEK_SET);
if (res) {
perror("fseek");
@@ -278,11 +266,10 @@ void moveBlock(FILE * fion, int cursor, int newpos, char * buffer2)
if (res != 1) {
perror("fwrite");
}
- // printf("moving block %d to %d\n", cursor, newpos);
+ //printf("moving block %d to %d\n", cursor, newpos);
}
-void BlockArray::decreaseBuffer(size_t newsize)
-{
+void BlockArray::decreaseBuffer(size_t newsize) {
if (index < newsize) { // still fits in whole
return;
}
@@ -294,11 +281,11 @@ void BlockArray::decreaseBuffer(size_t newsize)
}
// The Block constructor could do something in future...
- char * buffer1 = new char[blocksize];
+ char *buffer1 = new char[blocksize];
- FILE * fion = fdopen(dup(ion), "w+b");
+ FILE *fion = fdopen(dup(ion), "w+b");
if (!fion) {
- delete [] buffer1;
+ delete[] buffer1;
perror("fdopen/dup");
return;
}
@@ -311,7 +298,7 @@ void BlockArray::decreaseBuffer(size_t newsize)
}
size_t oldpos;
- for (size_t i = 0, cursor=firstblock; i < newsize; i++) {
+ for (size_t i = 0, cursor = firstblock; i < newsize; i++) {
oldpos = (size + cursor + offset) % size;
moveBlock(fion, oldpos, cursor, buffer1);
if (oldpos < newsize) {
@@ -324,13 +311,12 @@ void BlockArray::decreaseBuffer(size_t newsize)
current = newsize - 1;
length = newsize;
- delete [] buffer1;
+ delete[] buffer1;
fclose(fion);
}
-void BlockArray::increaseBuffer()
-{
+void BlockArray::increaseBuffer() {
if (index < size) { // not even wrapped once
return;
}
@@ -341,8 +327,8 @@ void BlockArray::increaseBuffer()
}
// The Block constructor could do something in future...
- char * buffer1 = new char[blocksize];
- char * buffer2 = new char[blocksize];
+ char *buffer1 = new char[blocksize];
+ char *buffer2 = new char[blocksize];
int runs = 1;
int bpr = size; // blocks per run
@@ -352,11 +338,11 @@ void BlockArray::increaseBuffer()
runs = offset;
}
- FILE * fion = fdopen(dup(ion), "w+b");
+ FILE *fion = fdopen(dup(ion), "w+b");
if (!fion) {
perror("fdopen/dup");
- delete [] buffer1;
- delete [] buffer2;
+ delete[] buffer1;
+ delete[] buffer2;
return;
}
@@ -373,7 +359,7 @@ void BlockArray::increaseBuffer()
perror("fread");
}
int newpos = 0;
- for (int j = 1, cursor=firstblock; j < bpr; j++) {
+ for (int j = 1, cursor = firstblock; j < bpr; j++) {
cursor = (cursor + offset) % size;
newpos = (cursor - offset + size) % size;
moveBlock(fion, cursor, newpos, buffer2);
@@ -390,9 +376,8 @@ void BlockArray::increaseBuffer()
current = size - 1;
length = size;
- delete [] buffer1;
- delete [] buffer2;
+ delete[] buffer1;
+ delete[] buffer2;
fclose(fion);
}
-
diff --git a/lib/qtermwidget/BlockArray.h b/lib/qtermwidget/BlockArray.h
index b3cc6de1..c93e2188 100644
--- a/lib/qtermwidget/BlockArray.h
+++ b/lib/qtermwidget/BlockArray.h
@@ -1,83 +1,78 @@
/*
- This file is part of Konsole, an X terminal.
- Copyright (C) 2000 by Stephan Kulow
-
- Rewritten for QT4 by e_k , Copyright (C)2008
-
- 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.
+ This file is part of Konsole, an X terminal.
+ Copyright (C) 2000 by Stephan Kulow
+
+ Rewritten for QT4 by e_k , Copyright (C)2008
+
+ 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 BLOCKARRAY_H
#define BLOCKARRAY_H
-
-//#error Do not use in KDE 2.1
-
-#define QTERMWIDGET_BLOCKSIZE (1 << 12)
-#define ENTRIES (QTERMWIDGET_BLOCKSIZE - sizeof(size_t))
+#define QTERMWIDGET_BLOCKSIZE (1 << 12)
+#define ENTRIES (QTERMWIDGET_BLOCKSIZE - sizeof(size_t))
struct Block {
unsigned char data[ENTRIES] = {};
size_t size = 0;
};
-// ///////////////////////////////////////////////////////
-
class BlockArray {
public:
/**
- * Creates a history file for holding
- * maximal size blocks. If more blocks
- * are requested, then it drops earlier
- * added ones.
- */
+ * Creates a history file for holding
+ * maximal size blocks. If more blocks
+ * are requested, then it drops earlier
+ * added ones.
+ */
BlockArray();
/// destructor
~BlockArray();
/**
- * adds the Block at the end of history.
- * This may drop other blocks.
- *
- * The ownership on the block is transferred.
- * An unique index number is returned for accessing
- * it later (if not yet dropped then)
- *
- * Note, that the block may be dropped completely
- * if history is turned off.
- */
+ * adds the Block at the end of history.
+ * This may drop other blocks.
+ *
+ * The ownership on the block is transferred.
+ * An unique index number is returned for accessing
+ * it later (if not yet dropped then)
+ *
+ * Note, that the block may be dropped completely
+ * if history is turned off.
+ */
size_t append(Block * block);
/**
- * gets the block at the index. Function may return
- * 0 if the block isn't available any more.
- *
- * The returned block is strictly readonly as only
- * mapped in memory - and will be invalid on the next
- * operation on this class.
- */
+ * gets the block at the index. Function may return
+ * 0 if the block isn't available any more.
+ *
+ * The returned block is strictly readonly as only
+ * mapped in memory - and will be invalid on the next
+ * operation on this class.
+ */
const Block * at(size_t index);
/**
- * reorders blocks as needed. If newsize is null,
- * the history is emptied completely. The indices
- * returned on append won't change their semantic,
- * but they may not be valid after this call.
- */
+ * reorders blocks as needed. If newsize is null,
+ * the history is emptied completely. The indices
+ * returned on append won't change their semantic,
+ * but they may not be valid after this call.
+ */
bool setHistorySize(size_t newsize);
size_t newBlock();
@@ -85,9 +80,9 @@ class BlockArray {
Block * lastBlock() const;
/**
- * Convenient function to set the size in KBytes
- * instead of blocks
- */
+ * Convenient function to set the size in KBytes
+ * instead of blocks
+ */
bool setSize(size_t newsize);
size_t len() const {
diff --git a/lib/qtermwidget/CharWidth.cpp b/lib/qtermwidget/CharWidth.cpp
index 0737f0f6..715ac274 100644
--- a/lib/qtermwidget/CharWidth.cpp
+++ b/lib/qtermwidget/CharWidth.cpp
@@ -1,36 +1,30 @@
#include "CharWidth.h"
-CharWidth::CharWidth(QFont font)
-{
+CharWidth::CharWidth(QFont font) {
fm = new QFontMetrics(font);
}
-CharWidth::~CharWidth()
-{
+CharWidth::~CharWidth() {
delete fm;
}
-void CharWidth::setFont(QFont font)
-{
+void CharWidth::setFont(QFont font) {
delete fm;
fm = new QFontMetrics(font);
}
-int CharWidth::font_width(wchar_t ucs)
-{
+int CharWidth::font_width(wchar_t ucs) {
if(ucs <= 0xffff)
return fm->horizontalAdvance(QString(QChar(ucs)),1)/fm->horizontalAdvance("0",1);
else
return unicode_width(ucs);
}
-int CharWidth::font_width(const QChar & c)
-{
+int CharWidth::font_width(const QChar & c) {
return fm->horizontalAdvance(c,1)/fm->horizontalAdvance("0",1);
}
-int CharWidth::string_font_width( const std::wstring & wstr )
-{
+int CharWidth::string_font_width( const std::wstring & wstr ) {
int width = 0;
for (auto & c : wstr) {
width += font_width(c);
@@ -38,8 +32,7 @@ int CharWidth::string_font_width( const std::wstring & wstr )
return width;
}
-int CharWidth::string_font_width( const QString & str )
-{
+int CharWidth::string_font_width( const QString & str ) {
int width = 0;
for (auto & c : str) {
width += font_width(c.unicode());
@@ -47,8 +40,7 @@ int CharWidth::string_font_width( const QString & str )
return width;
}
-int CharWidth::unicode_width(wchar_t ucs, bool fix_width)
-{
+int CharWidth::unicode_width(wchar_t ucs, bool fix_width) {
utf8proc_category_t cat = utf8proc_category( ucs );
if (cat == UTF8PROC_CATEGORY_CO) {
// Co: Private use area. libutf8proc makes them zero width, while tmux
@@ -65,13 +57,11 @@ int CharWidth::unicode_width(wchar_t ucs, bool fix_width)
return utf8proc_charwidth( ucs );
}
-int CharWidth::unicode_width(const QChar & c, bool fix_width)
-{
+int CharWidth::unicode_width(const QChar & c, bool fix_width) {
return unicode_width(c.unicode(),fix_width);
}
-int CharWidth::string_unicode_width(const std::wstring & wstr, bool fix_width)
-{
+int CharWidth::string_unicode_width(const std::wstring & wstr, bool fix_width) {
int width = 0;
for (auto & c : wstr) {
width += unicode_width(c,fix_width);
@@ -79,8 +69,7 @@ int CharWidth::string_unicode_width(const std::wstring & wstr, bool fix_width)
return width;
}
-int CharWidth::string_unicode_width(const QString & str, bool fix_width)
-{
+int CharWidth::string_unicode_width(const QString & str, bool fix_width) {
int width = 0;
for (auto & c : str) {
width += unicode_width(c.unicode(),fix_width);
diff --git a/lib/qtermwidget/Character.h b/lib/qtermwidget/Character.h
index d657e22f..0c7c8cd7 100644
--- a/lib/qtermwidget/Character.h
+++ b/lib/qtermwidget/Character.h
@@ -1,23 +1,23 @@
/*
- This file is part of Konsole, KDE's terminal.
-
- Copyright 2007-2008 by Robert Knight
- Copyright 1997,1998 by Lars Doelle
-
- 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.
+ This file is part of Konsole, KDE's terminal.
+
+ Copyright 2007-2008 by Robert Knight
+ Copyright 1997,1998 by Lars Doelle
+
+ 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 CHARACTER_H
#define CHARACTER_H
@@ -55,105 +55,102 @@ static const int LINE_DOUBLEHEIGHT = (1 << 2);
class Character
{
public:
- /**
- * Constructs a new character.
- *
- * @param _c The unicode character value of this character.
- * @param _f The foreground color used to draw the character.
- * @param _b The color used to draw the character's background.
- * @param _r A set of rendition flags which specify how this character is to be drawn.
- */
- inline Character(quint16 _c = ' ',
+ /**
+ * Constructs a new character.
+ *
+ * @param _c The unicode character value of this character.
+ * @param _f The foreground color used to draw the character.
+ * @param _b The color used to draw the character's background.
+ * @param _r A set of rendition flags which specify how this character is to be drawn.
+ */
+ inline Character(quint16 _c = ' ',
CharacterColor _f = CharacterColor(COLOR_SPACE_DEFAULT,DEFAULT_FORE_COLOR),
CharacterColor _b = CharacterColor(COLOR_SPACE_DEFAULT,DEFAULT_BACK_COLOR),
quint8 _r = DEFAULT_RENDITION)
- : character(_c), rendition(_r), foregroundColor(_f), backgroundColor(_b) {}
+ : character(_c)
+ , rendition(_r)
+ , foregroundColor(_f)
+ , backgroundColor(_b) {
+ }
+
+ union {
+ /** The unicode character value for this character. */
+ wchar_t character;
+ /**
+ * Experimental addition which allows a single Character instance to contain more than
+ * one unicode character.
+ *
+ * charSequence is a hash code which can be used to look up the unicode
+ * character sequence in the ExtendedCharTable used to create the sequence.
+ */
+ quint16 charSequence;
+ };
+
+ /** A combination of RENDITION flags which specify options for drawing the character. */
+ quint8 rendition;
+
+ /** The foreground color used to draw this character. */
+ CharacterColor foregroundColor;
+ /** The color used to draw this character's background. */
+ CharacterColor backgroundColor;
- union
- {
- /** The unicode character value for this character. */
- wchar_t character;
/**
- * Experimental addition which allows a single Character instance to contain more than
- * one unicode character.
- *
- * charSequence is a hash code which can be used to look up the unicode
- * character sequence in the ExtendedCharTable used to create the sequence.
+ * Returns true if this character has a transparent background when
+ * it is drawn with the specified @p palette.
+ */
+ bool isTransparent(const ColorEntry* palette) const;
+ /**
+ * Returns true if this character should always be drawn in bold when
+ * it is drawn with the specified @p palette, independent of whether
+ * or not the character has the RE_BOLD rendition flag.
+ */
+ ColorEntry::FontWeight fontWeight(const ColorEntry* base) const;
+
+ /**
+ * returns true if the format (color, rendition flag) of the compared characters is equal
*/
- quint16 charSequence;
- };
-
- /** A combination of RENDITION flags which specify options for drawing the character. */
- quint8 rendition;
-
- /** The foreground color used to draw this character. */
- CharacterColor foregroundColor;
- /** The color used to draw this character's background. */
- CharacterColor backgroundColor;
-
- /**
- * Returns true if this character has a transparent background when
- * it is drawn with the specified @p palette.
- */
- bool isTransparent(const ColorEntry* palette) const;
- /**
- * Returns true if this character should always be drawn in bold when
- * it is drawn with the specified @p palette, independent of whether
- * or not the character has the RE_BOLD rendition flag.
- */
- ColorEntry::FontWeight fontWeight(const ColorEntry* base) const;
-
- /**
- * returns true if the format (color, rendition flag) of the compared characters is equal
- */
- bool equalsFormat(const Character &other) const;
-
- /**
- * Compares two characters and returns true if they have the same unicode character value,
- * rendition and colors.
- */
- friend bool operator == (const Character& a, const Character& b);
- /**
- * Compares two characters and returns true if they have different unicode character values,
- * renditions or colors.
- */
- friend bool operator != (const Character& a, const Character& b);
+ bool equalsFormat(const Character &other) const;
+
+ /**
+ * Compares two characters and returns true if they have the same unicode character value,
+ * rendition and colors.
+ */
+ friend bool operator == (const Character& a, const Character& b);
+ /**
+ * Compares two characters and returns true if they have different unicode character values,
+ * renditions or colors.
+ */
+ friend bool operator != (const Character& a, const Character& b);
};
-inline bool operator == (const Character& a, const Character& b)
-{
- return a.character == b.character &&
- a.rendition == b.rendition &&
- a.foregroundColor == b.foregroundColor &&
- a.backgroundColor == b.backgroundColor;
+inline bool operator == (const Character& a, const Character& b) {
+ return a.character == b.character &&
+ a.rendition == b.rendition &&
+ a.foregroundColor == b.foregroundColor &&
+ a.backgroundColor == b.backgroundColor;
}
-inline bool operator != (const Character& a, const Character& b)
-{
- return a.character != b.character ||
- a.rendition != b.rendition ||
- a.foregroundColor != b.foregroundColor ||
- a.backgroundColor != b.backgroundColor;
+inline bool operator != (const Character& a, const Character& b) {
+ return a.character != b.character ||
+ a.rendition != b.rendition ||
+ a.foregroundColor != b.foregroundColor ||
+ a.backgroundColor != b.backgroundColor;
}
-inline bool Character::isTransparent(const ColorEntry* base) const
-{
- return ((backgroundColor._colorSpace == COLOR_SPACE_DEFAULT) &&
- base[backgroundColor._u+0+(backgroundColor._v?BASE_COLORS:0)].transparent)
- || ((backgroundColor._colorSpace == COLOR_SPACE_SYSTEM) &&
- base[backgroundColor._u+2+(backgroundColor._v?BASE_COLORS:0)].transparent);
+inline bool Character::isTransparent(const ColorEntry* base) const {
+ return ((backgroundColor._colorSpace == COLOR_SPACE_DEFAULT) &&
+ base[backgroundColor._u+0+(backgroundColor._v?BASE_COLORS:0)].transparent)
+ || ((backgroundColor._colorSpace == COLOR_SPACE_SYSTEM) &&
+ base[backgroundColor._u+2+(backgroundColor._v?BASE_COLORS:0)].transparent);
}
-inline bool Character::equalsFormat(const Character& other) const
-{
- return
- backgroundColor==other.backgroundColor &&
- foregroundColor==other.foregroundColor &&
- rendition==other.rendition;
+inline bool Character::equalsFormat(const Character& other) const {
+ return backgroundColor==other.backgroundColor &&
+ foregroundColor==other.foregroundColor &&
+ rendition==other.rendition;
}
-inline ColorEntry::FontWeight Character::fontWeight(const ColorEntry* base) const
-{
+inline ColorEntry::FontWeight Character::fontWeight(const ColorEntry* base) const {
if (backgroundColor._colorSpace == COLOR_SPACE_DEFAULT)
return base[backgroundColor._u+0+(backgroundColor._v?BASE_COLORS:0)].fontWeight;
else if (backgroundColor._colorSpace == COLOR_SPACE_SYSTEM)
@@ -162,9 +159,6 @@ inline ColorEntry::FontWeight Character::fontWeight(const ColorEntry* base) cons
return ColorEntry::UseCurrentFormat;
}
-extern unsigned short vt100_graphics[32];
-
-
/**
* A table which stores sequences of unicode characters, referenced
* by hash keys. The hash key itself is the same size as a unicode
diff --git a/lib/qtermwidget/CharacterColor.h b/lib/qtermwidget/CharacterColor.h
index eae90220..5ffb9ccb 100644
--- a/lib/qtermwidget/CharacterColor.h
+++ b/lib/qtermwidget/CharacterColor.h
@@ -1,23 +1,23 @@
/*
- This file is part of Konsole, KDE's terminal.
-
- Copyright 2007-2008 by Robert Knight
- Copyright 1997,1998 by Lars Doelle
-
- 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.
+ This file is part of Konsole, KDE's terminal.
+
+ Copyright 2007-2008 by Robert Knight
+ Copyright 1997,1998 by Lars Doelle
+
+ 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 CHARACTERCOLOR_H
#define CHARACTERCOLOR_H
@@ -40,56 +40,53 @@
class ColorEntry
{
public:
- /** Specifies the weight to use when drawing text with this color. */
- enum FontWeight
- {
- /** Always draw text in this color with a bold weight. */
- Bold,
- /** Always draw text in this color with a normal weight. */
- Normal,
+ /** Specifies the weight to use when drawing text with this color. */
+ enum FontWeight {
+ /** Always draw text in this color with a bold weight. */
+ Bold,
+ /** Always draw text in this color with a normal weight. */
+ Normal,
+ /**
+ * Use the current font weight set by the terminal application.
+ * This is the default behavior.
+ */
+ UseCurrentFormat
+ };
+
/**
- * Use the current font weight set by the terminal application.
- * This is the default behavior.
+ * Constructs a new color palette entry.
+ *
+ * @param c The color value for this entry.
+ * @param tr Specifies that the color should be transparent when used as a background color.
+ * @param weight Specifies the font weight to use when drawing text with this color.
*/
- UseCurrentFormat
- };
-
- /**
- * Constructs a new color palette entry.
- *
- * @param c The color value for this entry.
- * @param tr Specifies that the color should be transparent when used as a background color.
- * @param weight Specifies the font weight to use when drawing text with this color.
- */
- ColorEntry(QColor c, bool tr, FontWeight weight = UseCurrentFormat)
- : color(c), transparent(tr), fontWeight(weight) {}
-
- /**
- * Constructs a new color palette entry with an undefined color, and
- * with the transparent and bold flags set to false.
- */
- ColorEntry() : transparent(false), fontWeight(UseCurrentFormat) {}
-
- /** The color value of this entry for display. */
- QColor color;
-
- /**
- * If true character backgrounds using this color should be transparent.
- * This is not applicable when the color is used to render text.
- */
- bool transparent;
- /**
- * Specifies the font weight to use when drawing text with this color.
- * This is not applicable when the color is used to draw a character's background.
- */
- FontWeight fontWeight;
-};
+ ColorEntry(QColor c, bool tr, FontWeight weight = UseCurrentFormat)
+ : color(c), transparent(tr), fontWeight(weight) {}
+ /**
+ * Constructs a new color palette entry with an undefined color, and
+ * with the transparent and bold flags set to false.
+ */
+ ColorEntry() : transparent(false), fontWeight(UseCurrentFormat) {}
-// Attributed Character Representations ///////////////////////////////
+ /** The color value of this entry for display. */
+ QColor color;
+
+ /**
+ * If true character backgrounds using this color should be transparent.
+ * This is not applicable when the color is used to render text.
+ */
+ bool transparent;
+ /**
+ * Specifies the font weight to use when drawing text with this color.
+ * This is not applicable when the color is used to draw a character's background.
+ */
+ FontWeight fontWeight;
+};
-// Colors
+// Attributed Character Representations
+// Colors
#define BASE_COLORS (2+8)
#define INTENSITIES 2
#define TABLE_COLORS (INTENSITIES*BASE_COLORS)
@@ -99,7 +96,6 @@ class ColorEntry
//a standard set of colors using black text on a white background.
//defined in TerminalDisplay.cpp
-
extern const ColorEntry base_color_table[TABLE_COLORS];
/* CharacterColor is a union of the various color spaces.
@@ -117,7 +113,6 @@ extern const ColorEntry base_color_table[TABLE_COLORS];
Default colour space has two separate colours, namely
default foreground and default background colour.
*/
-
#define COLOR_SPACE_UNDEFINED 0
#define COLOR_SPACE_DEFAULT 1
#define COLOR_SPACE_SYSTEM 2
@@ -132,167 +127,157 @@ class CharacterColor
friend class Character;
public:
- /** Constructs a new CharacterColor whose color and color space are undefined. */
- CharacterColor()
- : _colorSpace(COLOR_SPACE_UNDEFINED),
- _u(0),
- _v(0),
- _w(0)
- {}
-
- /**
- * Constructs a new CharacterColor using the specified @p colorSpace and with
- * color value @p co
- *
- * The meaning of @p co depends on the @p colorSpace used.
- *
- * TODO : Document how @p co relates to @p colorSpace
- *
- * TODO : Add documentation about available color spaces.
- */
- CharacterColor(quint8 colorSpace, int co)
- : _colorSpace(colorSpace),
- _u(0),
- _v(0),
- _w(0)
- {
- switch (colorSpace)
- {
- case COLOR_SPACE_DEFAULT:
- _u = co & 1;
- break;
- case COLOR_SPACE_SYSTEM:
- _u = co & 7;
- _v = (co >> 3) & 1;
- break;
- case COLOR_SPACE_256:
- _u = co & 255;
- break;
- case COLOR_SPACE_RGB:
- _u = co >> 16;
- _v = co >> 8;
- _w = co;
- break;
- default:
- _colorSpace = COLOR_SPACE_UNDEFINED;
+ /** Constructs a new CharacterColor whose color and color space are undefined. */
+ CharacterColor()
+ : _colorSpace(COLOR_SPACE_UNDEFINED)
+ , _u(0)
+ , _v(0)
+ , _w(0) {
}
- }
-
- CharacterColor(quint8 colorSpace, QColor color)
- : _colorSpace(colorSpace),
- _u(0),
- _v(0),
- _w(0)
- {
- switch (colorSpace)
- {
- case COLOR_SPACE_RGB:
- _u = color.red();
- _v = color.green();
- _w = color.blue();
- break;
- default:
- _colorSpace = COLOR_SPACE_UNDEFINED;
+
+ /**
+ * Constructs a new CharacterColor using the specified @p colorSpace and with
+ * color value @p co
+ *
+ * The meaning of @p co depends on the @p colorSpace used.
+ *
+ * TODO : Document how @p co relates to @p colorSpace
+ *
+ * TODO : Add documentation about available color spaces.
+ */
+ CharacterColor(quint8 colorSpace, int co)
+ : _colorSpace(colorSpace)
+ , _u(0)
+ , _v(0)
+ , _w(0) {
+ switch (colorSpace) {
+ case COLOR_SPACE_DEFAULT:
+ _u = co & 1;
+ break;
+ case COLOR_SPACE_SYSTEM:
+ _u = co & 7;
+ _v = (co >> 3) & 1;
+ break;
+ case COLOR_SPACE_256:
+ _u = co & 255;
+ break;
+ case COLOR_SPACE_RGB:
+ _u = co >> 16;
+ _v = co >> 8;
+ _w = co;
+ break;
+ default:
+ _colorSpace = COLOR_SPACE_UNDEFINED;
+ }
}
- }
- /**
- * Returns true if this character color entry is valid.
- */
- bool isValid() const
- {
+ CharacterColor(quint8 colorSpace, QColor color)
+ : _colorSpace(colorSpace)
+ , _u(0)
+ , _v(0)
+ , _w(0) {
+ switch (colorSpace) {
+ case COLOR_SPACE_RGB:
+ _u = color.red();
+ _v = color.green();
+ _w = color.blue();
+ break;
+ default:
+ _colorSpace = COLOR_SPACE_UNDEFINED;
+ break;
+ }
+ }
+
+ /**
+ * Returns true if this character color entry is valid.
+ */
+ bool isValid() const {
return _colorSpace != COLOR_SPACE_UNDEFINED;
- }
-
- /**
- * Set the value of this color from a normal system color to the corresponding intensive
- * system color if it's not already an intensive system color.
- *
- * This is only applicable if the color is using the COLOR_SPACE_DEFAULT or COLOR_SPACE_SYSTEM
- * color spaces.
- */
- void setIntensive();
-
- /**
- * Returns the color within the specified color @p palette
- *
- * The @p palette is only used if this color is one of the 16 system colors, otherwise
- * it is ignored.
- */
- QColor color(const ColorEntry* palette) const;
-
- /**
- * Compares two colors and returns true if they represent the same color value and
- * use the same color space.
- */
- friend bool operator == (const CharacterColor& a, const CharacterColor& b);
- /**
- * Compares two colors and returns true if they represent different color values
- * or use different color spaces.
- */
- friend bool operator != (const CharacterColor& a, const CharacterColor& b);
+ }
+
+ /**
+ * Set the value of this color from a normal system color to the corresponding intensive
+ * system color if it's not already an intensive system color.
+ *
+ * This is only applicable if the color is using the COLOR_SPACE_DEFAULT or COLOR_SPACE_SYSTEM
+ * color spaces.
+ */
+ void setIntensive();
+
+ /**
+ * Returns the color within the specified color @p palette
+ *
+ * The @p palette is only used if this color is one of the 16 system colors, otherwise
+ * it is ignored.
+ */
+ QColor color(const ColorEntry* palette) const;
+
+ /**
+ * Compares two colors and returns true if they represent the same color value and
+ * use the same color space.
+ */
+ friend bool operator == (const CharacterColor& a, const CharacterColor& b);
+ /**
+ * Compares two colors and returns true if they represent different color values
+ * or use different color spaces.
+ */
+ friend bool operator != (const CharacterColor& a, const CharacterColor& b);
private:
- quint8 _colorSpace;
+ quint8 _colorSpace;
- // bytes storing the character color
- quint8 _u;
- quint8 _v;
- quint8 _w;
+ // bytes storing the character color
+ quint8 _u;
+ quint8 _v;
+ quint8 _w;
};
-inline bool operator == (const CharacterColor& a, const CharacterColor& b)
-{
- return a._colorSpace == b._colorSpace &&
- a._u == b._u &&
- a._v == b._v &&
- a._w == b._w;
+inline bool operator == (const CharacterColor& a, const CharacterColor& b) {
+ return a._colorSpace == b._colorSpace &&
+ a._u == b._u &&
+ a._v == b._v &&
+ a._w == b._w;
}
-inline bool operator != (const CharacterColor& a, const CharacterColor& b)
-{
+
+inline bool operator != (const CharacterColor& a, const CharacterColor& b) {
return !operator==(a,b);
}
-inline const QColor color256(quint8 u, const ColorEntry* base)
-{
- // 0.. 16: system colors
- if (u < 8) return base[u+2 ].color;
- u -= 8;
- if (u < 8) return base[u+2+BASE_COLORS].color;
- u -= 8;
-
- // 16..231: 6x6x6 rgb color cube
- if (u < 216) return QColor(((u/36)%6) ? (40*((u/36)%6)+55) : 0,
- ((u/ 6)%6) ? (40*((u/ 6)%6)+55) : 0,
- ((u/ 1)%6) ? (40*((u/ 1)%6)+55) : 0);
- u -= 216;
-
- // 232..255: gray, leaving out black and white
- int gray = u*10+8; return QColor(gray,gray,gray);
+inline const QColor color256(quint8 u, const ColorEntry* base) {
+ // 0.. 16: system colors
+ if (u < 8) return base[u+2 ].color;
+ u -= 8;
+ if (u < 8) return base[u+2+BASE_COLORS].color;
+ u -= 8;
+
+ // 16..231: 6x6x6 rgb color cube
+ if (u < 216) return QColor(((u/36)%6) ? (40*((u/36)%6)+55) : 0,
+ ((u/ 6)%6) ? (40*((u/ 6)%6)+55) : 0,
+ ((u/ 1)%6) ? (40*((u/ 1)%6)+55) : 0);
+ u -= 216;
+
+ // 232..255: gray, leaving out black and white
+ int gray = u*10+8; return QColor(gray,gray,gray);
}
-inline QColor CharacterColor::color(const ColorEntry* base) const
-{
- switch (_colorSpace)
- {
- case COLOR_SPACE_DEFAULT: return base[_u+0+(_v?BASE_COLORS:0)].color;
- case COLOR_SPACE_SYSTEM: return base[_u+2+(_v?BASE_COLORS:0)].color;
- case COLOR_SPACE_256: return color256(_u,base);
- case COLOR_SPACE_RGB: return {_u,_v,_w};
- case COLOR_SPACE_UNDEFINED: return QColor();
- }
-
- Q_ASSERT(false); // invalid color space
-
- return QColor();
+inline QColor CharacterColor::color(const ColorEntry* base) const {
+ switch (_colorSpace) {
+ case COLOR_SPACE_DEFAULT: return base[_u+0+(_v?BASE_COLORS:0)].color;
+ case COLOR_SPACE_SYSTEM: return base[_u+2+(_v?BASE_COLORS:0)].color;
+ case COLOR_SPACE_256: return color256(_u,base);
+ case COLOR_SPACE_RGB: return {_u,_v,_w};
+ case COLOR_SPACE_UNDEFINED: return QColor();
+ }
+
+ Q_ASSERT(false); // invalid color space
+
+ return QColor();
}
-inline void CharacterColor::setIntensive()
-{
- if (_colorSpace == COLOR_SPACE_SYSTEM || _colorSpace == COLOR_SPACE_DEFAULT)
- {
- _v = 1;
- }
+inline void CharacterColor::setIntensive() {
+ if (_colorSpace == COLOR_SPACE_SYSTEM || _colorSpace == COLOR_SPACE_DEFAULT) {
+ _v = 1;
+ }
}
#endif // CHARACTERCOLOR_H
diff --git a/lib/qtermwidget/ColorScheme.cpp b/lib/qtermwidget/ColorScheme.cpp
index dd61e487..8b23404e 100644
--- a/lib/qtermwidget/ColorScheme.cpp
+++ b/lib/qtermwidget/ColorScheme.cpp
@@ -1,91 +1,89 @@
/*
- This source file is part of Konsole, a terminal emulator.
+ This source file is part of Konsole, a terminal emulator.
- Copyright 2007-2008 by Robert Knight
+ Copyright 2007-2008 by Robert Knight
- 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 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.
+ 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.
+ 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 "ColorScheme.h"
#include "tools.h"
#include
+#include
#include
#include
-#include
-#include
-#include
-#include
#include
+#include
+#include
#include
+#include
-const ColorEntry ColorScheme::defaultTable[TABLE_COLORS] =
- // The following are almost IBM standard color codes, with some slight
- // gamma correction for the dim colors to compensate for bright X screens.
- // It contains the 8 ansiterm/xterm colors in 2 intensities.
-{
- ColorEntry( QColor(0x00,0x00,0x00), false), ColorEntry(
-QColor(0xFF,0xFF,0xFF), true), // Dfore, Dback
- ColorEntry( QColor(0x00,0x00,0x00), false), ColorEntry(
-QColor(0xB2,0x18,0x18), false), // Black, Red
- ColorEntry( QColor(0x18,0xB2,0x18), false), ColorEntry(
-QColor(0xB2,0x68,0x18), false), // Green, Yellow
- ColorEntry( QColor(0x18,0x18,0xB2), false), ColorEntry(
-QColor(0xB2,0x18,0xB2), false), // Blue, Magenta
- ColorEntry( QColor(0x18,0xB2,0xB2), false), ColorEntry(
-QColor(0xB2,0xB2,0xB2), false), // Cyan, White
+// The following are almost IBM standard color codes, with some slight
+// gamma correction for the dim colors to compensate for bright X screens.
+// It contains the 8 ansiterm/xterm colors in 2 intensities.
+const ColorEntry ColorScheme::defaultTable[TABLE_COLORS] = {
+ ColorEntry(QColor(0x00, 0x00, 0x00), false),
+ ColorEntry(QColor(0xFF, 0xFF, 0xFF), true) , // Dfore, Dback
+ ColorEntry(QColor(0x00, 0x00, 0x00), false),
+ ColorEntry(QColor(0xB2, 0x18, 0x18), false), // Black, Red
+ ColorEntry(QColor(0x18, 0xB2, 0x18), false),
+ ColorEntry(QColor(0xB2, 0x68, 0x18), false), // Green, Yellow
+ ColorEntry(QColor(0x18, 0x18, 0xB2), false),
+ ColorEntry(QColor(0xB2, 0x18, 0xB2), false), // Blue, Magenta
+ ColorEntry(QColor(0x18, 0xB2, 0xB2), false),
+ ColorEntry(QColor(0xB2, 0xB2, 0xB2), false), // Cyan, White
// intensive
- ColorEntry( QColor(0x00,0x00,0x00), false), ColorEntry(
-QColor(0xFF,0xFF,0xFF), true),
- ColorEntry( QColor(0x68,0x68,0x68), false), ColorEntry(
-QColor(0xFF,0x54,0x54), false),
- ColorEntry( QColor(0x54,0xFF,0x54), false), ColorEntry(
-QColor(0xFF,0xFF,0x54), false),
- ColorEntry( QColor(0x54,0x54,0xFF), false), ColorEntry(
-QColor(0xFF,0x54,0xFF), false),
- ColorEntry( QColor(0x54,0xFF,0xFF), false), ColorEntry(
-QColor(0xFF,0xFF,0xFF), false)
+ ColorEntry(QColor(0x00, 0x00, 0x00), false),
+ ColorEntry(QColor(0xFF, 0xFF, 0xFF), true) ,
+ ColorEntry(QColor(0x68, 0x68, 0x68), false),
+ ColorEntry(QColor(0xFF, 0x54, 0x54), false),
+ ColorEntry(QColor(0x54, 0xFF, 0x54), false),
+ ColorEntry(QColor(0xFF, 0xFF, 0x54), false),
+ ColorEntry(QColor(0x54, 0x54, 0xFF), false),
+ ColorEntry(QColor(0xFF, 0x54, 0xFF), false),
+ ColorEntry(QColor(0x54, 0xFF, 0xFF), false),
+ ColorEntry(QColor(0xFF, 0xFF, 0xFF), false),
};
-const char* const ColorScheme::colorNames[TABLE_COLORS] =
-{
- "Foreground",
- "Background",
- "Color0",
- "Color1",
- "Color2",
- "Color3",
- "Color4",
- "Color5",
- "Color6",
- "Color7",
- "ForegroundIntense",
- "BackgroundIntense",
- "Color0Intense",
- "Color1Intense",
- "Color2Intense",
- "Color3Intense",
- "Color4Intense",
- "Color5Intense",
- "Color6Intense",
- "Color7Intense"
+const char *const ColorScheme::colorNames[TABLE_COLORS] = {
+ "Foreground",
+ "Background",
+ "Color0",
+ "Color1",
+ "Color2",
+ "Color3",
+ "Color4",
+ "Color5",
+ "Color6",
+ "Color7",
+ "ForegroundIntense",
+ "BackgroundIntense",
+ "Color0Intense",
+ "Color1Intense",
+ "Color2Intense",
+ "Color3Intense",
+ "Color4Intense",
+ "Color5Intense",
+ "Color6Intense",
+ "Color7Intense"
};
+
// dummy silently comment out the tr_NOOP
#define tr_NOOP
-const char* const ColorScheme::translatedColorNames[TABLE_COLORS] =
-{
+const char *const ColorScheme::translatedColorNames[TABLE_COLORS] = {
tr_NOOP("Foreground"),
tr_NOOP("Background"),
tr_NOOP("Color 1"),
@@ -108,121 +106,123 @@ const char* const ColorScheme::translatedColorNames[TABLE_COLORS] =
tr_NOOP("Color 8 (Intense)")
};
-ColorScheme::ColorScheme()
-{
+ColorScheme::ColorScheme() {
_table = nullptr;
_randomTable = nullptr;
_opacity = 1.0;
}
-ColorScheme::ColorScheme(const ColorScheme& other)
- : _opacity(other._opacity)
- ,_table(nullptr)
- ,_randomTable(nullptr)
-{
+
+ColorScheme::ColorScheme(const ColorScheme &other)
+ : _opacity(other._opacity), _table(nullptr), _randomTable(nullptr) {
setName(other.name());
setDescription(other.description());
- if ( other._table != nullptr )
- {
- for ( int i = 0 ; i < TABLE_COLORS ; i++ )
- setColorTableEntry(i,other._table[i]);
+ if(other._table != nullptr) {
+ for (int i = 0; i < TABLE_COLORS; i++)
+ setColorTableEntry(i, other._table[i]);
}
- if ( other._randomTable != nullptr )
- {
- for ( int i = 0 ; i < TABLE_COLORS ; i++ )
- {
- const RandomizationRange& range = other._randomTable[i];
- setRandomizationRange(i,range.hue,range.saturation,range.value);
+ if(other._randomTable != nullptr) {
+ for(int i = 0; i < TABLE_COLORS; i++) {
+ const RandomizationRange &range = other._randomTable[i];
+ setRandomizationRange(i, range.hue, range.saturation, range.value);
}
}
}
-ColorScheme::~ColorScheme()
-{
+
+ColorScheme::~ColorScheme() {
delete[] _table;
delete[] _randomTable;
}
-void ColorScheme::setDescription(const QString& description) { _description = description; }
-QString ColorScheme::description() const { return _description; }
+void ColorScheme::setDescription(const QString &description) {
+ _description = description;
+}
+
+QString ColorScheme::description() const {
+ return _description;
+}
+
+void ColorScheme::setName(const QString &name) {
+ _name = name;
+}
-void ColorScheme::setName(const QString& name) { _name = name; }
-QString ColorScheme::name() const { return _name; }
+QString ColorScheme::name() const {
+ return _name;
+}
-void ColorScheme::setColorTableEntry(int index , const ColorEntry& entry)
-{
- Q_ASSERT( index >= 0 && index < TABLE_COLORS );
+void ColorScheme::setColorTableEntry(int index, const ColorEntry &entry) {
+ Q_ASSERT(index >= 0 && index < TABLE_COLORS);
- if ( !_table )
- {
+ if (!_table) {
_table = new ColorEntry[TABLE_COLORS];
- for (int i=0;i= 0 && index < TABLE_COLORS );
- ColorEntry entry = colorTable()[index];
+ColorEntry ColorScheme::colorEntry(int index) const {
+ Q_ASSERT(index >= 0 && index < TABLE_COLORS);
- if ( _randomTable != nullptr &&
- !_randomTable[index].isNull() )
- {
- const RandomizationRange& range = _randomTable[index];
+ ColorEntry entry = colorTable()[index];
+ if (_randomTable != nullptr && !_randomTable[index].isNull()) {
+ const RandomizationRange &range = _randomTable[index];
- int hueDifference = range.hue ? QRandomGenerator::global()->bounded(range.hue) - range.hue/2 : 0;
- int saturationDifference = range.saturation ? QRandomGenerator::global()->bounded(range.saturation) - range.saturation/2 : 0;
- int valueDifference = range.value ? QRandomGenerator::global()->bounded(range.value) - range.value/2 : 0;
+ int hueDifference = range.hue
+ ? QRandomGenerator::global()->bounded(range.hue) - range.hue / 2
+ : 0;
+ int saturationDifference = range.saturation
+ ? QRandomGenerator::global()->bounded(range.saturation) -
+ range.saturation / 2
+ : 0;
+ int valueDifference = range.value
+ ? QRandomGenerator::global()->bounded(range.value) - range.value / 2
+ : 0;
- QColor& color = entry.color;
+ QColor &color = entry.color;
- int newHue = qAbs( (color.hue() + hueDifference) % MAX_HUE );
- int newValue = qMin( qAbs(color.value() + valueDifference) , 255 );
- int newSaturation = qMin( qAbs(color.saturation() + saturationDifference) , 255 );
+ int newHue = qAbs((color.hue() + hueDifference) % MAX_HUE);
+ int newValue = qMin(qAbs(color.value() + valueDifference), 255);
+ int newSaturation = qMin(qAbs(color.saturation() + saturationDifference), 255);
- color.setHsv(newHue,newSaturation,newValue);
+ color.setHsv(newHue, newSaturation, newValue);
}
return entry;
}
-void ColorScheme::getColorTable(ColorEntry* table) const
-{
- for ( int i = 0 ; i < TABLE_COLORS ; i++ )
+
+void ColorScheme::getColorTable(ColorEntry *table) const {
+ for (int i = 0; i < TABLE_COLORS; i++)
table[i] = colorEntry(i);
}
-bool ColorScheme::randomizedBackgroundColor() const
-{
+
+bool ColorScheme::randomizedBackgroundColor() const {
return _randomTable == nullptr ? false : !_randomTable[1].isNull();
}
-void ColorScheme::setRandomizedBackgroundColor(bool randomize)
-{
+
+void ColorScheme::setRandomizedBackgroundColor(bool randomize) {
// the hue of the background colour is allowed to be randomly
// adjusted as much as possible.
//
// the value and saturation are left alone to maintain read-ability
- if ( randomize )
- {
- setRandomizationRange( 1 /* background color index */ , MAX_HUE , 255 , 0 );
- }
- else
- {
- if ( _randomTable )
- setRandomizationRange( 1 /* background color index */ , 0 , 0 , 0 );
+ if (randomize) {
+ setRandomizationRange(1 /* background color index */, MAX_HUE, 255, 0);
+ } else {
+ if (_randomTable)
+ setRandomizationRange(1 /* background color index */, 0, 0, 0);
}
}
-void ColorScheme::setRandomizationRange( int index , quint16 hue , quint8 saturation ,
- quint8 value )
-{
- Q_ASSERT( hue <= MAX_HUE );
- Q_ASSERT( index >= 0 && index < TABLE_COLORS );
+void ColorScheme::setRandomizationRange(int index, quint16 hue,
+ quint8 saturation, quint8 value) {
+ Q_ASSERT(hue <= MAX_HUE);
+ Q_ASSERT(index >= 0 && index < TABLE_COLORS);
- if ( _randomTable == nullptr )
+ if (_randomTable == nullptr)
_randomTable = new RandomizationRange[TABLE_COLORS];
_randomTable[index].hue = hue;
@@ -230,48 +230,52 @@ void ColorScheme::setRandomizationRange( int index , quint16 hue , quint8 satura
_randomTable[index].saturation = saturation;
}
-const ColorEntry* ColorScheme::colorTable() const
-{
- if ( _table )
+const ColorEntry *ColorScheme::colorTable() const {
+ if (_table)
return _table;
else
return defaultTable;
}
-QColor ColorScheme::foregroundColor() const
-{
- return colorTable()[0].color;
+
+QColor ColorScheme::foregroundColor() const {
+ return colorTable()[0].color;
}
-QColor ColorScheme::backgroundColor() const
-{
- return colorTable()[1].color;
+
+QColor ColorScheme::backgroundColor() const {
+ return colorTable()[1].color;
}
-bool ColorScheme::hasDarkBackground() const
-{
- // value can range from 0 - 255, with larger values indicating higher brightness.
- // so 127 is in the middle, anything less is deemed 'dark'
+
+bool ColorScheme::hasDarkBackground() const {
+ // value can range from 0 - 255, with larger values indicating higher
+ // brightness. so 127 is in the middle, anything less is deemed 'dark'
return backgroundColor().value() < 127;
}
-void ColorScheme::setOpacity(qreal opacity) { _opacity = opacity; }
-qreal ColorScheme::opacity() const { return _opacity; }
-void ColorScheme::read(const QString & fileName)
-{
+void ColorScheme::setOpacity(qreal opacity) {
+ _opacity = opacity;
+}
+
+qreal ColorScheme::opacity() const {
+ return _opacity;
+}
+
+void ColorScheme::read(const QString &fileName) {
QSettings s(fileName, QSettings::IniFormat);
s.beginGroup(QLatin1String("General"));
- _description = s.value(QLatin1String("Description"), QObject::tr("Un-named Color Scheme")).toString();
- _opacity = s.value(QLatin1String("Opacity"),qreal(1.0)).toDouble();
+ _description = s.value(QLatin1String("Description"),
+ QObject::tr("Un-named Color Scheme")).toString();
+ _opacity = s.value(QLatin1String("Opacity"), qreal(1.0)).toDouble();
s.endGroup();
- for (int i=0 ; i < TABLE_COLORS ; i++)
- {
+ for (int i = 0; i < TABLE_COLORS; i++) {
readColorEntry(&s, i);
}
}
+
#if 0
// implemented upstream - user apps
-void ColorScheme::read(KConfig& config)
-{
+void ColorScheme::read(KConfig& config) {
KConfigGroup configGroup = config.group("General");
QString description = configGroup.readEntry("Description", QObject::tr("Un-named Color Scheme"));
@@ -279,41 +283,37 @@ void ColorScheme::read(KConfig& config)
_description = tr(description.toUtf8());
_opacity = configGroup.readEntry("Opacity",qreal(1.0));
- for (int i=0 ; i < TABLE_COLORS ; i++)
- {
+ for (int i=0 ; i < TABLE_COLORS ; i++) {
readColorEntry(config,i);
}
}
-void ColorScheme::write(KConfig& config) const
-{
+
+void ColorScheme::write(KConfig& config) const {
KConfigGroup configGroup = config.group("General");
configGroup.writeEntry("Description",_description);
configGroup.writeEntry("Opacity",_opacity);
- for (int i=0 ; i < TABLE_COLORS ; i++)
- {
+ for (int i=0 ; i < TABLE_COLORS ; i++) {
RandomizationRange random = _randomTable != 0 ? _randomTable[i] : RandomizationRange();
writeColorEntry(config,colorNameForIndex(i),colorTable()[i],random);
}
}
#endif
-QString ColorScheme::colorNameForIndex(int index)
-{
- Q_ASSERT( index >= 0 && index < TABLE_COLORS );
+QString ColorScheme::colorNameForIndex(int index) {
+ Q_ASSERT(index >= 0 && index < TABLE_COLORS);
return QString::fromLatin1(colorNames[index]);
}
-QString ColorScheme::translatedColorNameForIndex(int index)
-{
- Q_ASSERT( index >= 0 && index < TABLE_COLORS );
+
+QString ColorScheme::translatedColorNameForIndex(int index) {
+ Q_ASSERT(index >= 0 && index < TABLE_COLORS);
return QString::fromLatin1(translatedColorNames[index]);
}
-void ColorScheme::readColorEntry(QSettings * s , int index)
-{
+void ColorScheme::readColorEntry(QSettings *s, int index) {
QString colorName = colorNameForIndex(index);
s->beginGroup(colorName);
@@ -326,12 +326,10 @@ void ColorScheme::readColorEntry(QSettings * s , int index)
bool ok = false;
// XXX: Undocumented(?) QSettings behavior: values with commas are parsed
// as QStringList and others QString
- if (colorValue.typeId() == QMetaType::QStringList)
- {
+ if (colorValue.typeId() == QMetaType::QStringList) {
QStringList rgbList = colorValue.toStringList();
colorStr = rgbList.join(QLatin1Char(','));
- if (rgbList.count() == 3)
- {
+ if (rgbList.count() == 3) {
bool parse_ok;
ok = true;
@@ -342,14 +340,12 @@ void ColorScheme::readColorEntry(QSettings * s , int index)
b = rgbList[2].toInt(&parse_ok);
ok = ok && parse_ok && (b >= 0 && b <= 0xff);
}
- }
- else
- {
+ } else {
colorStr = colorValue.toString();
- QRegularExpression hexColorPattern(QLatin1String("^#[0-9a-f]{6}$"),
- QRegularExpression::CaseInsensitiveOption);
- if (hexColorPattern.match(colorStr).hasMatch())
- {
+ QRegularExpression hexColorPattern(
+ QLatin1String("^#[0-9a-f]{6}$"),
+ QRegularExpression::CaseInsensitiveOption);
+ if (hexColorPattern.match(colorStr).hasMatch()) {
// Parsing is always ok as already matched by the regexp
r = QStringView{colorStr}.mid(1, 2).toInt(nullptr, 16);
g = QStringView{colorStr}.mid(3, 2).toInt(nullptr, 16);
@@ -357,15 +353,14 @@ void ColorScheme::readColorEntry(QSettings * s , int index)
ok = true;
}
}
- if (!ok)
- {
- qWarning().nospace() << "Invalid color value " << colorStr
- << " for " << colorName << ". Fallback to black.";
+ if (!ok) {
+ qWarning().nospace() << "Invalid color value " << colorStr << " for "
+ << colorName << ". Fallback to black.";
r = g = b = 0;
}
entry.color = QColor(r, g, b);
- entry.transparent = s->value(QLatin1String("Transparent"),false).toBool();
+ entry.transparent = s->value(QLatin1String("Transparent"), false).toBool();
// Deprecated key from KDE 4.0 which set 'Bold' to true to force
// a color to be bold or false to use the current format
@@ -373,37 +368,37 @@ void ColorScheme::readColorEntry(QSettings * s , int index)
// TODO - Add a new tri-state key which allows for bold, normal or
// current format
if (s->contains(QLatin1String("Bold")))
- entry.fontWeight = s->value(QLatin1String("Bold"),false).toBool() ? ColorEntry::Bold :
- ColorEntry::UseCurrentFormat;
+ entry.fontWeight = s->value(QLatin1String("Bold"), false).toBool()
+ ? ColorEntry::Bold
+ : ColorEntry::UseCurrentFormat;
- quint16 hue = s->value(QLatin1String("MaxRandomHue"),0).toInt();
- quint8 value = s->value(QLatin1String("MaxRandomValue"),0).toInt();
- quint8 saturation = s->value(QLatin1String("MaxRandomSaturation"),0).toInt();
+ quint16 hue = s->value(QLatin1String("MaxRandomHue"), 0).toInt();
+ quint8 value = s->value(QLatin1String("MaxRandomValue"), 0).toInt();
+ quint8 saturation = s->value(QLatin1String("MaxRandomSaturation"), 0).toInt();
- setColorTableEntry( index , entry );
+ setColorTableEntry(index, entry);
- if ( hue != 0 || value != 0 || saturation != 0 )
- setRandomizationRange( index , hue , saturation , value );
+ if (hue != 0 || value != 0 || saturation != 0)
+ setRandomizationRange(index, hue, saturation, value);
s->endGroup();
}
+
#if 0
// implemented upstream - user apps
-void ColorScheme::writeColorEntry(KConfig& config , const QString& colorName, const ColorEntry& entry , const RandomizationRange& random) const
-{
+void ColorScheme::writeColorEntry(KConfig& config , const QString& colorName,
+ const ColorEntry& entry , const RandomizationRange& random) const {
KConfigGroup configGroup(&config,colorName);
configGroup.writeEntry("Color",entry.color);
configGroup.writeEntry("Transparency",(bool)entry.transparent);
- if (entry.fontWeight != ColorEntry::UseCurrentFormat)
- {
+ if (entry.fontWeight != ColorEntry::UseCurrentFormat) {
configGroup.writeEntry("Bold",entry.fontWeight == ColorEntry::Bold);
}
// record randomization if this color has randomization or
// if one of the keys already exists
- if ( !random.isNull() || configGroup.hasKey("MaxRandomHue") )
- {
+ if ( !random.isNull() || configGroup.hasKey("MaxRandomHue") ) {
configGroup.writeEntry("MaxRandomHue",static_cast(random.hue));
configGroup.writeEntry("MaxRandomValue",static_cast(random.value));
configGroup.writeEntry("MaxRandomSaturation",static_cast(random.saturation));
@@ -438,9 +433,7 @@ void ColorScheme::writeColorEntry(KConfig& config , const QString& colorName, co
//
// -- Robert Knight 21/07/2007
//
-AccessibleColorScheme::AccessibleColorScheme()
- : ColorScheme()
-{
+AccessibleColorScheme::AccessibleColorScheme() : ColorScheme() {
#if 0
// It's not finished in konsole and it breaks Qt4 compilation as well
// basic attributes
@@ -452,8 +445,7 @@ AccessibleColorScheme::AccessibleColorScheme()
const KColorScheme colorScheme(QPalette::Active);
- QBrush colors[ColorRoleCount] =
- {
+ QBrush colors[ColorRoleCount] = {
colorScheme.foreground( colorScheme.NormalText ),
colorScheme.background( colorScheme.NormalBackground ),
@@ -465,8 +457,7 @@ AccessibleColorScheme::AccessibleColorScheme()
colorScheme.foreground( colorScheme.NeutralText )
};
- for ( int i = 0 ; i < TABLE_COLORS ; i++ )
- {
+ for ( int i = 0 ; i < TABLE_COLORS ; i++ ) {
ColorEntry entry;
entry.color = colors[ i % ColorRoleCount ].color();
@@ -475,88 +466,77 @@ AccessibleColorScheme::AccessibleColorScheme()
#endif
}
-ColorSchemeManager::ColorSchemeManager()
- : _haveLoadedAll(false)
-{
+ColorSchemeManager::ColorSchemeManager()
+ : _haveLoadedAll(false) {
}
-ColorSchemeManager::~ColorSchemeManager()
-{
- QHashIterator iter(_colorSchemes);
- while (iter.hasNext())
- {
+
+ColorSchemeManager::~ColorSchemeManager() {
+ QHashIterator iter(_colorSchemes);
+ while (iter.hasNext()) {
iter.next();
delete iter.value();
}
}
-void ColorSchemeManager::loadAllColorSchemes()
-{
+
+void ColorSchemeManager::loadAllColorSchemes() {
QList nativeColorSchemes = listColorSchemes();
QListIterator nativeIter(nativeColorSchemes);
- while ( nativeIter.hasNext() )
- {
- loadColorScheme( nativeIter.next() );
+ while (nativeIter.hasNext()) {
+ loadColorScheme(nativeIter.next());
}
_haveLoadedAll = true;
}
-QList ColorSchemeManager::allColorSchemes()
-{
- if ( !_haveLoadedAll )
- {
+
+QList ColorSchemeManager::allColorSchemes() {
+ if (!_haveLoadedAll) {
loadAllColorSchemes();
}
return _colorSchemes.values();
}
-bool ColorSchemeManager::loadCustomColorScheme(const QString& path)
-{
+bool ColorSchemeManager::loadCustomColorScheme(const QString &path) {
if (path.endsWith(QLatin1String(".colorscheme")))
return loadColorScheme(path);
return false;
}
-void ColorSchemeManager::addCustomColorSchemeDir(const QString& custom_dir)
-{
+void ColorSchemeManager::addCustomColorSchemeDir(const QString &custom_dir) {
add_custom_color_scheme_dir(custom_dir);
}
-bool ColorSchemeManager::loadColorScheme(const QString& filePath)
-{
- if ( !filePath.endsWith(QLatin1String(".colorscheme")) || !QFile::exists(filePath) )
+bool ColorSchemeManager::loadColorScheme(const QString &filePath) {
+ if (!filePath.endsWith(QLatin1String(".colorscheme")) ||
+ !QFile::exists(filePath))
return false;
QFileInfo info(filePath);
- const QString& schemeName = info.baseName();
+ const QString &schemeName = info.baseName();
- ColorScheme* scheme = new ColorScheme();
+ ColorScheme *scheme = new ColorScheme();
scheme->setName(schemeName);
scheme->read(filePath);
- if (scheme->name().isEmpty())
- {
+ if (scheme->name().isEmpty()) {
delete scheme;
return false;
}
- if ( !_colorSchemes.contains(schemeName) )
- {
- _colorSchemes.insert(schemeName,scheme);
- }
- else
- {
+ if (!_colorSchemes.contains(schemeName)) {
+ _colorSchemes.insert(schemeName, scheme);
+ } else {
delete scheme;
}
return true;
}
-QList ColorSchemeManager::listColorSchemes()
-{
+
+QList ColorSchemeManager::listColorSchemes() {
QList ret;
- for (const QString &scheme_dir : get_color_schemes_dirs())
- {
+ for (const QString &scheme_dir : get_color_schemes_dirs()) {
const QString dname(scheme_dir);
QDir dir(dname);
QStringList filters;
@@ -567,67 +547,62 @@ QList ColorSchemeManager::listColorSchemes()
ret << dname + QLatin1Char('/') + i;
}
return ret;
-// return KGlobal::dirs()->findAllResources("data",
-// "konsole/*.colorscheme",
-// KStandardDirs::NoDuplicates);
+ //return KGlobal::dirs()->findAllResources("data",
+ // "konsole/*.colorscheme",
+ // KStandardDirs::NoDuplicates);
}
+
const ColorScheme ColorSchemeManager::_defaultColorScheme;
-const ColorScheme* ColorSchemeManager::defaultColorScheme() const
-{
+const ColorScheme *ColorSchemeManager::defaultColorScheme() const {
return &_defaultColorScheme;
}
-bool ColorSchemeManager::deleteColorScheme(const QString& name)
-{
- Q_ASSERT( _colorSchemes.contains(name) );
+
+bool ColorSchemeManager::deleteColorScheme(const QString &name) {
+ Q_ASSERT(_colorSchemes.contains(name));
// lookup the path and delete
QString path = findColorSchemePath(name);
- if ( QFile::remove(path) )
- {
+ if (QFile::remove(path)) {
_colorSchemes.remove(name);
return true;
- }
- else
- {
+ } else {
return false;
}
}
-QString ColorSchemeManager::findColorSchemePath(const QString& name) const
-{
+
+QString ColorSchemeManager::findColorSchemePath(const QString &name) const {
const QStringList dirs = get_color_schemes_dirs();
- if ( dirs.isEmpty() )
+ if (dirs.isEmpty())
return QString();
const QString dir = dirs.first();
- QString path(dir + QLatin1Char('/')+ name + QLatin1String(".colorscheme"));
- if ( !path.isEmpty() )
+ QString path(dir + QLatin1Char('/') + name + QLatin1String(".colorscheme"));
+ if (!path.isEmpty())
return path;
- path = dir + QLatin1Char('/')+ name + QLatin1String(".schema");
+ path = dir + QLatin1Char('/') + name + QLatin1String(".schema");
return path;
}
-const ColorScheme* ColorSchemeManager::findColorScheme(const QString& name)
-{
- if ( name.isEmpty() )
+
+const ColorScheme *ColorSchemeManager::findColorScheme(const QString &name) {
+ if (name.isEmpty())
return defaultColorScheme();
- if ( _colorSchemes.contains(name) )
+ if (_colorSchemes.contains(name)) {
return _colorSchemes[name];
- else
- {
+ } else {
// look for this color scheme
QString path = findColorSchemePath(name);
- if ( !path.isEmpty() && loadColorScheme(path) )
- {
+ if (!path.isEmpty() && loadColorScheme(path)) {
return findColorScheme(name);
}
return nullptr;
}
}
+
Q_GLOBAL_STATIC(ColorSchemeManager, theColorSchemeManager)
-ColorSchemeManager* ColorSchemeManager::instance()
-{
+ColorSchemeManager *ColorSchemeManager::instance() {
return theColorSchemeManager;
}
diff --git a/lib/qtermwidget/ColorScheme.h b/lib/qtermwidget/ColorScheme.h
index f40c8e8a..9a91ee82 100644
--- a/lib/qtermwidget/ColorScheme.h
+++ b/lib/qtermwidget/ColorScheme.h
@@ -1,22 +1,22 @@
/*
- This source file is part of Konsole, a terminal emulator.
-
- Copyright 2007-2008 by Robert Knight
-
- 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.
+ This source file is part of Konsole, a terminal emulator.
+
+ Copyright 2007-2008 by Robert Knight
+
+ 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 COLORSCHEME_H
#define COLORSCHEME_H
@@ -60,7 +60,7 @@ class ColorScheme
QString name() const;
#if 0
-// Implemented upstream - in user apps
+ // Implemented upstream - in user apps
/** Reads the color scheme from the specified configuration source */
void read(KConfig& config);
/** Writes the color scheme to the specified configuration source */
@@ -140,13 +140,11 @@ class ColorScheme
private:
// specifies how much a particular color can be randomized by
- class RandomizationRange
- {
+ class RandomizationRange {
public:
RandomizationRange() : hue(0) , saturation(0) , value(0) {}
- bool isNull() const
- {
+ bool isNull() const {
return ( hue == 0 && saturation == 0 && value == 0 );
}
@@ -160,7 +158,7 @@ class ColorScheme
const ColorEntry* colorTable() const;
#if 0
-// implemented upstream - user apps
+ // implemented upstream - user apps
// reads a single colour entry from a KConfig source
// and sets the palette entry at 'index' to the entry read.
void readColorEntry(KConfig& config , int index);
diff --git a/lib/qtermwidget/DefaultTranslatorText.h b/lib/qtermwidget/DefaultTranslatorText.h
deleted file mode 100644
index e47417c5..00000000
--- a/lib/qtermwidget/DefaultTranslatorText.h
+++ /dev/null
@@ -1,2 +0,0 @@
-"keyboard \"Fallback Key Translator\"\n"
-"key Tab : \"\\t\" \0"
diff --git a/lib/qtermwidget/Emulation.cpp b/lib/qtermwidget/Emulation.cpp
index e51272c9..fa51be31 100644
--- a/lib/qtermwidget/Emulation.cpp
+++ b/lib/qtermwidget/Emulation.cpp
@@ -1,24 +1,23 @@
/*
- Copyright 2007-2008 Robert Knight
- Copyright 1997,1998 by Lars Doelle
- Copyright 1996 by Matthias Ettrich
-
- 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 2007-2008 Robert Knight
+ Copyright 1997,1998 by Lars Doelle
+ Copyright 1996 by Matthias Ettrich
+
+ 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 "Emulation.h"
#include
@@ -35,200 +34,184 @@
#include "KeyboardTranslator.h"
#include "Screen.h"
-#include "TerminalCharacterDecoder.h"
#include "ScreenWindow.h"
+#include "TerminalCharacterDecoder.h"
-Emulation::Emulation() :
- _currentScreen(nullptr),
- _keyTranslator(nullptr),
- _enableHandleCtrlC(false),
- _usesMouse(false),
- _bracketedPasteMode(false),
- _fromUtf8(QStringEncoder::Utf16)
-{
- // create screens with a default size
- _screen[0] = new Screen(40,80);
- _screen[1] = new Screen(40,80);
- _currentScreen = _screen[0];
+Emulation::Emulation()
+ : _currentScreen(nullptr)
+ , _keyTranslator(nullptr)
+ , _enableHandleCtrlC(false)
+ , _usesMouse(false)
+ , _bracketedPasteMode(false)
+ , _fromUtf8(QStringEncoder::Utf16) {
+ // create screens with a default size
+ _screen[0] = new Screen(40, 80);
+ _screen[1] = new Screen(40, 80);
+ _currentScreen = _screen[0];
- QObject::connect(&_bulkTimer1, &QTimer::timeout, this, &Emulation::showBulk);
- QObject::connect(&_bulkTimer2, &QTimer::timeout, this, &Emulation::showBulk);
+ connect(&_bulkTimer1, &QTimer::timeout, this, &Emulation::showBulk);
+ connect(&_bulkTimer2, &QTimer::timeout, this, &Emulation::showBulk);
- // listen for mouse status changes
- connect(this, &Emulation::programUsesMouseChanged,
- this, &Emulation::usesMouseChanged);
- connect(this, &Emulation::programBracketedPasteModeChanged,
- this, &Emulation::bracketedPasteModeChanged);
+ // listen for mouse status changes
+ connect(this, &Emulation::programUsesMouseChanged, this,
+ &Emulation::usesMouseChanged);
+ connect(this, &Emulation::programBracketedPasteModeChanged, this,
+ &Emulation::bracketedPasteModeChanged);
- connect(this, &Emulation::cursorChanged, this, [this] (KeyboardCursorShape cursorShape, bool blinkingCursorEnabled) {
- emit profileChangeCommandReceived(QString(QLatin1String("CursorShape=%1;BlinkingCursorEnabled=%2"))
- .arg(static_cast(cursorShape)).arg(blinkingCursorEnabled) );
- });
+ connect(this, &Emulation::cursorChanged, this,
+ [this](KeyboardCursorShape cursorShape, bool blinkingCursorEnabled) {
+ emit profileChangeCommandReceived(
+ QString(QLatin1String("CursorShape=%1;BlinkingCursorEnabled=%2"))
+ .arg(static_cast(cursorShape))
+ .arg(blinkingCursorEnabled));
+ });
}
-bool Emulation::programUsesMouse() const
-{
- return _usesMouse;
+bool Emulation::programUsesMouse() const {
+ return _usesMouse;
}
-void Emulation::usesMouseChanged(bool usesMouse)
-{
- _usesMouse = usesMouse;
+void Emulation::usesMouseChanged(bool usesMouse) {
+ _usesMouse = usesMouse;
}
-bool Emulation::programBracketedPasteMode() const
-{
+bool Emulation::programBracketedPasteMode() const {
return _bracketedPasteMode;
}
-void Emulation::bracketedPasteModeChanged(bool bracketedPasteMode)
-{
+void Emulation::bracketedPasteModeChanged(bool bracketedPasteMode) {
_bracketedPasteMode = bracketedPasteMode;
}
-ScreenWindow* Emulation::createWindow()
-{
- ScreenWindow* window = new ScreenWindow();
+ScreenWindow *Emulation::createWindow() {
+ ScreenWindow *window = new ScreenWindow();
window->setScreen(_currentScreen);
_windows << window;
- connect(window, &ScreenWindow::selectionChanged,
- this, &Emulation::bufferedUpdate);
-
- connect(this, &Emulation::outputChanged,
- window, &ScreenWindow::notifyOutputChanged);
-
- connect(this, &Emulation::handleCommandFromKeyboard,
- window, &ScreenWindow::handleCommandFromKeyboard);
- connect(this, &Emulation::handleCtrlC,
- window, &ScreenWindow::handleCtrlC);
- connect(this, &Emulation::outputFromKeypressEvent,
- window, &ScreenWindow::scrollToEnd);
+ connect(window, &ScreenWindow::selectionChanged, this, &Emulation::bufferedUpdate);
+ connect(this, &Emulation::outputChanged, window, &ScreenWindow::notifyOutputChanged);
+ connect(this, &Emulation::handleCommandFromKeyboard, window, &ScreenWindow::handleCommandFromKeyboard);
+ connect(this, &Emulation::handleCtrlC, window, &ScreenWindow::handleCtrlC);
+ connect(this, &Emulation::outputFromKeypressEvent, window, &ScreenWindow::scrollToEnd);
return window;
}
-void Emulation::checkScreenInUse()
-{
+void Emulation::checkScreenInUse() {
emit primaryScreenInUse(_currentScreen == _screen[0]);
}
-Emulation::~Emulation()
-{
- QListIterator windowIter(_windows);
+Emulation::~Emulation() {
+ QListIterator windowIter(_windows);
- while (windowIter.hasNext())
- {
- delete windowIter.next();
- }
+ while (windowIter.hasNext()) {
+ delete windowIter.next();
+ }
- delete _screen[0];
- delete _screen[1];
+ delete _screen[0];
+ delete _screen[1];
}
-void Emulation::setScreen(int n)
-{
- Screen *old = _currentScreen;
- _currentScreen = _screen[n & 1];
- if (_currentScreen != old)
- {
- // tell all windows onto this emulation to switch to the newly active screen
- for(ScreenWindow* window : std::as_const(_windows))
- window->setScreen(_currentScreen);
- checkScreenInUse();
- }
+void Emulation::setScreen(int n) {
+ Screen *old = _currentScreen;
+ _currentScreen = _screen[n & 1];
+ if (_currentScreen != old) {
+ // tell all windows onto this emulation to switch to the newly active screen
+ for (ScreenWindow *window : std::as_const(_windows))
+ window->setScreen(_currentScreen);
+ checkScreenInUse();
+ }
}
-void Emulation::clearHistory()
-{
- _screen[0]->setScroll( _screen[0]->getScroll() , false );
+void Emulation::clearHistory() {
+ _screen[0]->setScroll(_screen[0]->getScroll(), false);
}
-void Emulation::setHistory(const HistoryType& t)
-{
- _screen[0]->setScroll(t);
- showBulk();
+void Emulation::setHistory(const HistoryType &t) {
+ _screen[0]->setScroll(t);
+
+ showBulk();
}
-const HistoryType& Emulation::history() const
-{
- return _screen[0]->getScroll();
+const HistoryType &Emulation::history() const {
+ return _screen[0]->getScroll();
}
-void Emulation::setCodec(QStringEncoder qtc)
-{
- if (qtc.isValid())
- _fromUtf16 = std::move(qtc);
- else
- setCodec(LocaleCodec);
+void Emulation::setCodec(QStringEncoder qtc) {
+ if (qtc.isValid())
+ _fromUtf16 = std::move(qtc);
+ else
+ setCodec(LocaleCodec);
- _toUtf16 = QStringDecoder{utf8() ? QStringConverter::Encoding::Utf8 : QStringConverter::Encoding::System};
- emit useUtf8Request(utf8());
+ _toUtf16 = QStringDecoder{utf8() ? QStringConverter::Encoding::Utf8
+ : QStringConverter::Encoding::System};
+ emit useUtf8Request(utf8());
}
-bool Emulation::utf8() const
-{
- const auto enc = QStringConverter::encodingForName(_fromUtf16.name());
- return enc && enc.value() == QStringConverter::Encoding::Utf8;
+bool Emulation::utf8() const {
+ const auto enc = QStringConverter::encodingForName(_fromUtf16.name());
+ return enc && enc.value() == QStringConverter::Encoding::Utf8;
}
-void Emulation::setCodec(EmulationCodec codec)
-{
- setCodec( QStringEncoder{codec == Utf8Codec ?
- QStringConverter::Encoding::Utf8 :
- QStringConverter::Encoding::System} );
+void Emulation::setCodec(EmulationCodec codec) {
+ setCodec(QStringEncoder{codec == Utf8Codec
+ ? QStringConverter::Encoding::Utf8
+ : QStringConverter::Encoding::System});
}
-void Emulation::setKeyBindings(const QString& name)
-{
- _keyTranslator = KeyboardTranslatorManager::instance()->findTranslator(name);
- if (!_keyTranslator)
- {
- _keyTranslator = KeyboardTranslatorManager::instance()->defaultTranslator();
- }
+void Emulation::setKeyBindings(const QString &name) {
+ _keyTranslator = KeyboardTranslatorManager::instance()->findTranslator(name);
+ if (!_keyTranslator) {
+ _keyTranslator = KeyboardTranslatorManager::instance()->defaultTranslator();
+ }
}
-QString Emulation::keyBindings() const
-{
- return _keyTranslator->name();
+QString Emulation::keyBindings() const {
+ return _keyTranslator->name();
}
-void Emulation::receiveChar(wchar_t c)
// process application unicode input to terminal
// this is a trivial scanner
-{
- c &= 0xff;
- switch (c)
- {
- case '\b' : _currentScreen->backspace(); break;
- case '\t' : _currentScreen->tab(); break;
- case '\n' : _currentScreen->newLine(); break;
- case '\r' : _currentScreen->toStartOfLine(); break;
- case 0x07 : emit stateSet(NOTIFYBELL);
- break;
- default : _currentScreen->displayCharacter(c); break;
- };
-}
-
-void Emulation::sendKeyEvent(QKeyEvent* ev, bool)
-{
- emit stateSet(NOTIFYNORMAL);
-
- if (!ev->text().isEmpty())
- { // A block of text
- // Note that the text is proper unicode.
- // We should do a conversion here
- emit sendData(ev->text().toUtf8().constData(),ev->text().length());
- }
-}
-
-void Emulation::sendString(const char*,int)
-{
+void Emulation::receiveChar(wchar_t c) {
+ c &= 0xff;
+ switch (c) {
+ case '\b':
+ _currentScreen->backspace();
+ break;
+ case '\t':
+ _currentScreen->tab();
+ break;
+ case '\n':
+ _currentScreen->newLine();
+ break;
+ case '\r':
+ _currentScreen->toStartOfLine();
+ break;
+ case 0x07:
+ emit stateSet(NOTIFYBELL);
+ break;
+ default:
+ _currentScreen->displayCharacter(c);
+ break;
+ };
+}
+
+void Emulation::sendKeyEvent(QKeyEvent *ev, bool) {
+ emit stateSet(NOTIFYNORMAL);
+
+ if (!ev->text().isEmpty()) { // A block of text
+ // Note that the text is proper unicode.
+ // We should do a conversion here
+ emit sendData(ev->text().toUtf8().constData(), ev->text().length());
+ }
+}
+
+void Emulation::sendString(const char *, int) {
// default implementation does nothing
}
-void Emulation::sendMouseEvent(int /*buttons*/, int /*column*/, int /*row*/, int /*eventType*/)
-{
+void Emulation::sendMouseEvent(int /*buttons*/, int /*column*/, int /*row*/,
+ int /*eventType*/) {
// default implementation does nothing
}
@@ -236,132 +219,73 @@ void Emulation::sendMouseEvent(int /*buttons*/, int /*column*/, int /*row*/, int
We are doing code conversion from locale to unicode first.
TODO: Character composition from the old code. See #96536
*/
-
-void Emulation::receiveData(const char* text, int length)
-{
+void Emulation::receiveData(const char *text, int length) {
emit stateSet(NOTIFYACTIVITY);
bufferedUpdate();
/* XXX: the following code involves encoding & decoding of "UTF-16
- * surrogate pairs", which does not work with characters higher than
- * U+10FFFF
- * https://unicodebook.readthedocs.io/unicode_encodings.html#surrogates
- */
+ * surrogate pairs", which does not work with characters higher than
+ * U+10FFFF
+ * https://unicodebook.readthedocs.io/unicode_encodings.html#surrogates
+ */
QString utf16Text = _toUtf16(QByteArray::fromRawData(text, length));
std::wstring unicodeText = utf16Text.toStdWString();
- //send characters to terminal emulator
+ // send characters to terminal emulator
for (wchar_t i : unicodeText)
receiveChar(i);
- //look for z-modem indicator
+ // look for z-modem indicator
//-- someone who understands more about z-modems that I do may be able to move
- //this check into the above for loop?
- for (int i=0;i 3) && (strncmp(text+i+1, "B00", 3) == 0)) {
+ if ((length - i - 1 > 3) && (strncmp(text + i + 1, "B00", 3) == 0)) {
emit zmodemSendDetected();
}
// ZRINIT 1 Receive init
- if ((length-i-1 > 5) && (strncmp(text+i+1, "B0100", 5) == 0)) {
+ if ((length - i - 1 > 5) && (strncmp(text + i + 1, "B0100", 5) == 0)) {
emit zmodemRecvDetected();
}
}
}
}
-
-void Emulation::dupDisplayCharacter(wchar_t cc)
-{
- if(cc == L'\n') {
+
+void Emulation::dupDisplayCharacter(wchar_t cc) {
+ if (cc == L'\n') {
dupCache.append(L'\n');
PlainTextDecoder decoder;
QString lineText;
QTextStream stream(&lineText);
decoder.begin(&stream);
Character *data = new Character[dupCache.size()];
- for(int j=0;jtoUnicode(&s[i],1);
- int reslen = result.length();
-
- // If we get a control code halfway a multi-byte sequence
- // we flush the _decoder and continue with the control code.
- if ((s[i] < 32) && (s[i] > 0))
- {
- // Flush _decoder
- while(!result.length())
- result = _decoder->toUnicode(&s[i],1);
- reslen = 1;
- result.resize(reslen);
- result[0] = QChar(s[i]);
- }
-
- for (int j = 0; j < reslen; j++)
- {
- if (result[j].characterategory() == QChar::Mark_NonSpacing)
- _currentScreen->compose(result.mid(j,1));
- else
- onRcvChar(result[j].unicode());
- }
- if (s[i] == '\030')
- {
- if ((len-i-1 > 3) && (strncmp(s+i+1, "B00", 3) == 0))
- emit zmodemSendDetected();
- if ((length-i-1 > 5) && (strncmp(text+i+1, "B0100", 5) == 0))
- emit zmodemRecvDetected();
- }
- }
-}*/
-
-void Emulation::writeToStream( TerminalCharacterDecoder* _decoder ,
- int startLine ,
- int endLine)
-{
- _currentScreen->writeLinesToStream(_decoder,startLine,endLine);
+void Emulation::writeToStream(TerminalCharacterDecoder *_decoder, int startLine,
+ int endLine) {
+ _currentScreen->writeLinesToStream(_decoder, startLine, endLine);
}
-int Emulation::lineCount() const
-{
+int Emulation::lineCount() const {
// sum number of lines currently on _screen plus number of lines in history
return _currentScreen->getLines() + _currentScreen->getHistLines();
}
-void Emulation::showBulk()
-{
+void Emulation::showBulk() {
_bulkTimer1.stop();
_bulkTimer2.stop();
@@ -371,140 +295,123 @@ void Emulation::showBulk()
_currentScreen->resetDroppedLines();
}
-void Emulation::bufferedUpdate()
-{
+void Emulation::bufferedUpdate() {
static const int BULK_TIMEOUT1 = 10;
static const int BULK_TIMEOUT2 = 40;
_bulkTimer1.setSingleShot(true);
_bulkTimer1.start(BULK_TIMEOUT1);
- if (!_bulkTimer2.isActive())
- {
+ if (!_bulkTimer2.isActive()) {
_bulkTimer2.setSingleShot(true);
_bulkTimer2.start(BULK_TIMEOUT2);
}
}
-char Emulation::eraseChar() const
-{
- return '\b';
+char Emulation::eraseChar() const {
+ return '\b';
}
-void Emulation::setImageSize(int lines, int columns)
-{
- if ((lines < 1) || (columns < 1))
- return;
+void Emulation::setImageSize(int lines, int columns) {
+ if ((lines < 1) || (columns < 1))
+ return;
- QSize screenSize[2] = { QSize(_screen[0]->getColumns(),
- _screen[0]->getLines()),
- QSize(_screen[1]->getColumns(),
- _screen[1]->getLines()) };
- QSize newSize(columns,lines);
+ QSize screenSize[2] = {
+ QSize(_screen[0]->getColumns(), _screen[0]->getLines()),
+ QSize(_screen[1]->getColumns(), _screen[1]->getLines())};
+ QSize newSize(columns, lines);
- if (newSize == screenSize[0] && newSize == screenSize[1])
- return;
+ if (newSize == screenSize[0] && newSize == screenSize[1])
+ return;
- _screen[0]->resizeImage(lines,columns);
- _screen[1]->resizeImage(lines,columns);
+ _screen[0]->resizeImage(lines, columns);
+ _screen[1]->resizeImage(lines, columns);
- emit imageSizeChanged(lines,columns);
+ emit imageSizeChanged(lines, columns);
- bufferedUpdate();
+ bufferedUpdate();
}
-QSize Emulation::imageSize() const
-{
- return {_currentScreen->getColumns(), _currentScreen->getLines()};
+QSize Emulation::imageSize() const {
+ return {_currentScreen->getColumns(), _currentScreen->getLines()};
}
-ushort ExtendedCharTable::extendedCharHash(ushort* unicodePoints , ushort length) const
-{
+ushort ExtendedCharTable::extendedCharHash(ushort *unicodePoints,
+ ushort length) const {
ushort hash = 0;
- for ( ushort i = 0 ; i < length ; i++ )
- {
- hash = 31*hash + unicodePoints[i];
+ for (ushort i = 0; i < length; i++) {
+ hash = 31 * hash + unicodePoints[i];
}
return hash;
}
-bool ExtendedCharTable::extendedCharMatch(ushort hash , ushort* unicodePoints , ushort length) const
-{
- ushort* entry = extendedCharTable[hash];
-
- // compare given length with stored sequence length ( given as the first ushort in the
- // stored buffer )
- if ( entry == nullptr || entry[0] != length )
- return false;
- // if the lengths match, each character must be checked. the stored buffer starts at
- // entry[1]
- for ( int i = 0 ; i < length ; i++ )
- {
- if ( entry[i+1] != unicodePoints[i] )
- return false;
+
+bool ExtendedCharTable::extendedCharMatch(ushort hash, ushort *unicodePoints,
+ ushort length) const {
+ ushort *entry = extendedCharTable[hash];
+
+ // compare given length with stored sequence length ( given as the first
+ // ushort in the stored buffer )
+ if (entry == nullptr || entry[0] != length)
+ return false;
+ // if the lengths match, each character must be checked. the stored buffer
+ // starts at entry[1]
+ for (int i = 0; i < length; i++) {
+ if (entry[i + 1] != unicodePoints[i])
+ return false;
}
return true;
}
-ushort ExtendedCharTable::createExtendedChar(ushort* unicodePoints , ushort length)
-{
+
+ushort ExtendedCharTable::createExtendedChar(ushort *unicodePoints,
+ ushort length) {
// look for this sequence of points in the table
- ushort hash = extendedCharHash(unicodePoints,length);
+ ushort hash = extendedCharHash(unicodePoints, length);
// check existing entry for match
- while ( extendedCharTable.contains(hash) )
- {
- if ( extendedCharMatch(hash,unicodePoints,length) )
- {
+ while (extendedCharTable.contains(hash)) {
+ if (extendedCharMatch(hash, unicodePoints, length)) {
// this sequence already has an entry in the table,
// return its hash
return hash;
- }
- else
- {
- // if hash is already used by another, different sequence of unicode character
- // points then try next hash
+ } else {
+ // if hash is already used by another, different sequence of unicode
+ // character points then try next hash
hash++;
}
}
-
- // add the new sequence to the table and
- // return that index
- ushort* buffer = new ushort[length+1];
+ // add the new sequence to the table and
+ // return that index
+ ushort *buffer = new ushort[length + 1];
buffer[0] = length;
- for ( int i = 0 ; i < length ; i++ )
- buffer[i+1] = unicodePoints[i];
+ for (int i = 0; i < length; i++)
+ buffer[i + 1] = unicodePoints[i];
- extendedCharTable.insert(hash,buffer);
+ extendedCharTable.insert(hash, buffer);
return hash;
}
-ushort* ExtendedCharTable::lookupExtendedChar(ushort hash , ushort& length) const
-{
+ushort *ExtendedCharTable::lookupExtendedChar(ushort hash,
+ ushort &length) const {
// lookup index in table and if found, set the length
// argument and return a pointer to the character sequence
-
- ushort* buffer = extendedCharTable[hash];
- if ( buffer )
- {
+ ushort *buffer = extendedCharTable[hash];
+ if (buffer) {
length = buffer[0];
- return buffer+1;
- }
- else
- {
+ return buffer + 1;
+ } else {
length = 0;
return nullptr;
}
}
-ExtendedCharTable::ExtendedCharTable()
-{
+ExtendedCharTable::ExtendedCharTable() {
}
-ExtendedCharTable::~ExtendedCharTable()
-{
+
+ExtendedCharTable::~ExtendedCharTable() {
// free all allocated character buffers
- QHashIterator iter(extendedCharTable);
- while ( iter.hasNext() )
- {
+ QHashIterator iter(extendedCharTable);
+ while (iter.hasNext()) {
iter.next();
delete[] iter.value();
}
@@ -512,5 +419,3 @@ ExtendedCharTable::~ExtendedCharTable()
// global instance
ExtendedCharTable ExtendedCharTable::instance;
-
-
diff --git a/lib/qtermwidget/Emulation.h b/lib/qtermwidget/Emulation.h
index 0caea434..9cb3e6bb 100644
--- a/lib/qtermwidget/Emulation.h
+++ b/lib/qtermwidget/Emulation.h
@@ -1,23 +1,23 @@
/*
- This file is part of Konsole, an X terminal.
-
- Copyright 2007-2008 by Robert Knight
- Copyright 1997,1998 by Lars Doelle
-
- 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.
+ This file is part of Konsole, an X terminal.
+
+ Copyright 2007-2008 by Robert Knight
+ Copyright 1997,1998 by Lars Doelle
+
+ 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 EMULATION_H
#define EMULATION_H
@@ -116,413 +116,411 @@ class Emulation : public QObject
Q_OBJECT
public:
- /**
- * This enum describes the available shapes for the keyboard cursor.
- * See setKeyboardCursorShape()
- */
- enum class KeyboardCursorShape {
- /** A rectangular block which covers the entire area of the cursor character. */
- BlockCursor = 0,
- /**
- * A single flat line which occupies the space at the bottom of the cursor
- * character's area.
- */
- UnderlineCursor = 1,
- /**
- * An cursor shaped like the capital letter 'I', similar to the IBeam
- * cursor used in Qt/KDE text editors.
- */
- IBeamCursor = 2
- };
-
-
- /** Constructs a new terminal emulation */
- Emulation();
- ~Emulation() override;
-
- /**
- * Creates a new window onto the output from this emulation. The contents
- * of the window are then rendered by views which are set to use this window using the
- * TerminalDisplay::setScreenWindow() method.
- */
- ScreenWindow* createWindow();
-
- /** Returns the size of the screen image which the emulation produces */
- QSize imageSize() const;
-
- /**
- * Returns the total number of lines, including those stored in the history.
- */
- int lineCount() const;
-
- /**
- * Sets the history store used by this emulation. When new lines
- * are added to the output, older lines at the top of the screen are transferred to a history
- * store.
- *
- * The number of lines which are kept and the storage location depend on the
- * type of store.
- */
- void setHistory(const HistoryType&);
- /** Returns the history store used by this emulation. See setHistory() */
- const HistoryType& history() const;
- /** Clears the history scroll. */
- void clearHistory();
-
- /**
- * Copies the output history from @p startLine to @p endLine
- * into @p stream, using @p decoder to convert the terminal
- * characters into text.
- *
- * @param decoder A decoder which converts lines of terminal characters with
- * appearance attributes into output text. PlainTextDecoder is the most commonly
- * used decoder.
- * @param startLine Index of first line to copy
- * @param endLine Index of last line to copy
- */
- virtual void writeToStream(TerminalCharacterDecoder* decoder,int startLine,int endLine);
-
- /** Returns the codec used to decode incoming characters. See setCodec() */
- const QStringEncoder &codec() const { return _fromUtf16; }
- /** Sets the codec used to decode incoming characters. */
- void setCodec(QStringEncoder);
-
- /**
- * Convenience method.
- * Returns true if the current codec used to decode incoming
- * characters is UTF-8
- */
- bool utf8() const;
-
- /** TODO Document me */
- virtual char eraseChar() const;
-
- /**
- * Sets the key bindings used to key events
- * ( received through sendKeyEvent() ) into character
- * streams to send to the terminal.
- */
- void setKeyBindings(const QString& name);
- /**
- * Returns the name of the emulation's current key bindings.
- * See setKeyBindings()
- */
- QString keyBindings() const;
-
- /**
- * Copies the current image into the history and clears the screen.
- */
- virtual void clearEntireScreen() =0;
-
- /** Resets the state of the terminal. */
- virtual void reset() =0;
-
- /**
- * Returns true if the active terminal program wants
- * mouse input events.
- *
- * The programUsesMouseChanged() signal is emitted when this
- * changes.
- */
- bool programUsesMouse() const;
-
- bool programBracketedPasteMode() const;
-
- void setEnableHandleCtrlC(bool enable) { _enableHandleCtrlC = enable; }
+ /**
+ * This enum describes the available shapes for the keyboard cursor.
+ * See setKeyboardCursorShape()
+ */
+ enum class KeyboardCursorShape {
+ /** A rectangular block which covers the entire area of the cursor character. */
+ BlockCursor = 0,
+ /**
+ * A single flat line which occupies the space at the bottom of the cursor
+ * character's area.
+ */
+ UnderlineCursor = 1,
+ /**
+ * An cursor shaped like the capital letter 'I', similar to the IBeam
+ * cursor used in Qt/KDE text editors.
+ */
+ IBeamCursor = 2
+ };
+
+
+ /** Constructs a new terminal emulation */
+ Emulation();
+ ~Emulation() override;
+
+ /**
+ * Creates a new window onto the output from this emulation. The contents
+ * of the window are then rendered by views which are set to use this window using the
+ * TerminalDisplay::setScreenWindow() method.
+ */
+ ScreenWindow* createWindow();
+
+ /** Returns the size of the screen image which the emulation produces */
+ QSize imageSize() const;
+
+ /**
+ * Returns the total number of lines, including those stored in the history.
+ */
+ int lineCount() const;
+
+ /**
+ * Sets the history store used by this emulation. When new lines
+ * are added to the output, older lines at the top of the screen are transferred to a history
+ * store.
+ *
+ * The number of lines which are kept and the storage location depend on the
+ * type of store.
+ */
+ void setHistory(const HistoryType&);
+ /** Returns the history store used by this emulation. See setHistory() */
+ const HistoryType& history() const;
+ /** Clears the history scroll. */
+ void clearHistory();
+
+ /**
+ * Copies the output history from @p startLine to @p endLine
+ * into @p stream, using @p decoder to convert the terminal
+ * characters into text.
+ *
+ * @param decoder A decoder which converts lines of terminal characters with
+ * appearance attributes into output text. PlainTextDecoder is the most commonly
+ * used decoder.
+ * @param startLine Index of first line to copy
+ * @param endLine Index of last line to copy
+ */
+ virtual void writeToStream(TerminalCharacterDecoder* decoder,int startLine,int endLine);
+
+ /** Returns the codec used to decode incoming characters. See setCodec() */
+ const QStringEncoder &codec() const { return _fromUtf16; }
+ /** Sets the codec used to decode incoming characters. */
+ void setCodec(QStringEncoder);
+
+ /**
+ * Convenience method.
+ * Returns true if the current codec used to decode incoming
+ * characters is UTF-8
+ */
+ bool utf8() const;
+
+ /** TODO Document me */
+ virtual char eraseChar() const;
+
+ /**
+ * Sets the key bindings used to key events
+ * ( received through sendKeyEvent() ) into character
+ * streams to send to the terminal.
+ */
+ void setKeyBindings(const QString& name);
+ /**
+ * Returns the name of the emulation's current key bindings.
+ * See setKeyBindings()
+ */
+ QString keyBindings() const;
+
+ /**
+ * Copies the current image into the history and clears the screen.
+ */
+ virtual void clearEntireScreen() =0;
+
+ /** Resets the state of the terminal. */
+ virtual void reset() =0;
+
+ /**
+ * Returns true if the active terminal program wants
+ * mouse input events.
+ *
+ * The programUsesMouseChanged() signal is emitted when this
+ * changes.
+ */
+ bool programUsesMouse() const;
+
+ bool programBracketedPasteMode() const;
+
+ void setEnableHandleCtrlC(bool enable) { _enableHandleCtrlC = enable; }
public slots:
- /** Change the size of the emulation's image */
- virtual void setImageSize(int lines, int columns);
-
- /**
- * Interprets a sequence of characters and sends the result to the terminal.
- * This is equivalent to calling sendKeyEvent() for each character in @p text in succession.
- */
- virtual void sendText(const QString& text) = 0;
-
- /**
- * Interprets a key press event and emits the sendData() signal with
- * the resulting character stream.
- */
- virtual void sendKeyEvent(QKeyEvent*, bool fromPaste);
-
- /**
- * Converts information about a mouse event into an xterm-compatible escape
- * sequence and emits the character sequence via sendData()
- */
- virtual void sendMouseEvent(int buttons, int column, int line, int eventType);
-
- /**
- * Sends a string of characters to the foreground terminal process.
- *
- * @param string The characters to send.
- * @param length Length of @p string or if set to a negative value, @p string will
- * be treated as a null-terminated string and its length will be determined automatically.
- */
- virtual void sendString(const char* string, int length = -1) = 0;
-
- /**
- * Processes an incoming stream of characters. receiveData() decodes the incoming
- * character buffer using the current codec(), and then calls receiveChar() for
- * each unicode character in the resulting buffer.
- *
- * receiveData() also starts a timer which causes the outputChanged() signal
- * to be emitted when it expires. The timer allows multiple updates in quick
- * succession to be buffered into a single outputChanged() signal emission.
- *
- * @param buffer A string of characters received from the terminal program.
- * @param len The length of @p buffer
- */
- void receiveData(const char* buffer,int len);
-
- void dupDisplayCharacter(wchar_t cc);
+ /** Change the size of the emulation's image */
+ virtual void setImageSize(int lines, int columns);
+
+ /**
+ * Interprets a sequence of characters and sends the result to the terminal.
+ * This is equivalent to calling sendKeyEvent() for each character in @p text in succession.
+ */
+ virtual void sendText(const QString& text) = 0;
+
+ /**
+ * Interprets a key press event and emits the sendData() signal with
+ * the resulting character stream.
+ */
+ virtual void sendKeyEvent(QKeyEvent*, bool fromPaste);
+
+ /**
+ * Converts information about a mouse event into an xterm-compatible escape
+ * sequence and emits the character sequence via sendData()
+ */
+ virtual void sendMouseEvent(int buttons, int column, int line, int eventType);
+
+ /**
+ * Sends a string of characters to the foreground terminal process.
+ *
+ * @param string The characters to send.
+ * @param length Length of @p string or if set to a negative value, @p string will
+ * be treated as a null-terminated string and its length will be determined automatically.
+ */
+ virtual void sendString(const char* string, int length = -1) = 0;
+
+ /**
+ * Processes an incoming stream of characters. receiveData() decodes the incoming
+ * character buffer using the current codec(), and then calls receiveChar() for
+ * each unicode character in the resulting buffer.
+ *
+ * receiveData() also starts a timer which causes the outputChanged() signal
+ * to be emitted when it expires. The timer allows multiple updates in quick
+ * succession to be buffered into a single outputChanged() signal emission.
+ *
+ * @param buffer A string of characters received from the terminal program.
+ * @param len The length of @p buffer
+ */
+ void receiveData(const char* buffer,int len);
+
+ void dupDisplayCharacter(wchar_t cc);
signals:
- /**
- * Emitted when a buffer of data is ready to send to the
- * standard input of the terminal.
- *
- * @param data The buffer of data ready to be sent
- * @param len The length of @p data in bytes
- */
- void sendData(const char* data,int len);
-
- void dupDisplayOutput(const char* data,int len);
-
- /**
- * Requests that sending of input to the emulation
- * from the terminal process be suspended or resumed.
- *
- * @param suspend If true, requests that sending of
- * input from the terminal process' stdout be
- * suspended. Otherwise requests that sending of
- * input be resumed.
- */
- void lockPtyRequest(bool suspend);
-
- /**
- * Requests that the pty used by the terminal process
- * be set to UTF 8 mode.
- *
- * TODO: More documentation
- */
- void useUtf8Request(bool);
-
- /**
- * Emitted when the activity state of the emulation is set.
- *
- * @param state The new activity state, one of NOTIFYNORMAL, NOTIFYACTIVITY
- * or NOTIFYBELL
- */
- void stateSet(int state);
-
- /** ZModem file transfer detected */
- void zmodemSendDetected();
- void zmodemRecvDetected();
-
-
- /**
- * Requests that the color of the text used
- * to represent the tabs associated with this
- * emulation be changed. This is a Konsole-specific
- * extension from pre-KDE 4 times.
- *
- * TODO: Document how the parameter works.
- */
- void changeTabTextColorRequest(int color);
-
- /**
- * This is emitted when the program running in the shell indicates whether or
- * not it is interested in mouse events.
- *
- * @param usesMouse This will be true if the program wants to be informed about
- * mouse events or false otherwise.
- */
- void programUsesMouseChanged(bool usesMouse);
-
- void programBracketedPasteModeChanged(bool bracketedPasteMode);
-
- /**
- * Emitted when the contents of the screen image change.
- * The emulation buffers the updates from successive image changes,
- * and only emits outputChanged() at sensible intervals when
- * there is a lot of terminal activity.
- *
- * Normally there is no need for objects other than the screen windows
- * created with createWindow() to listen for this signal.
- *
- * ScreenWindow objects created using createWindow() will emit their
- * own outputChanged() signal in response to this signal.
- */
- void outputChanged();
-
- /**
- * Emitted when the program running in the terminal wishes to update the
- * session's title. This also allows terminal programs to customize other
- * aspects of the terminal emulation display.
- *
- * This signal is emitted when the escape sequence "\033]ARG;VALUE\007"
- * is received in the input string, where ARG is a number specifying what
- * should change and VALUE is a string specifying the new value.
- *
- * TODO: The name of this method is not very accurate since this method
- * is used to perform a whole range of tasks besides just setting
- * the user-title of the session.
- *
- * @param title Specifies what to change.
- *
- *
0 - Set window icon text and session title to @p newTitle
- *
1 - Set window icon text to @p newTitle
- *
2 - Set session title to @p newTitle
- *
11 - Set the session's default background color to @p newTitle,
- * where @p newTitle can be an HTML-style string ("#RRGGBB") or a named
- * color (eg 'red', 'blue').
- * See http://doc.trolltech.com/4.2/qcolor.html#setNamedColor for more
- * details.
- *
- *
31 - Supposedly treats @p newTitle as a URL and opens it (NOT IMPLEMENTED)
- *
32 - Sets the icon associated with the session. @p newTitle is the name
- * of the icon to use, which can be the name of any icon in the current KDE icon
- * theme (eg: 'konsole', 'kate', 'folder_home')
- *
- * @param newTitle Specifies the new title
- */
-
- void titleChanged(int title,const QString& newTitle);
-
- /**
- * Emitted when the program running in the terminal changes the
- * screen size.
- */
- void imageSizeChanged(int lineCount , int columnCount);
-
- /**
- * Emitted when the setImageSize() is called on this emulation for
- * the first time.
- */
- void imageSizeInitialized();
-
- /**
- * Emitted after receiving the escape sequence which asks to change
- * the terminal emulator's size
- */
- void imageResizeRequest(const QSize& size);
-
- /**
- * Emitted when the terminal program requests to change various properties
- * of the terminal display.
- *
- * A profile change command occurs when a special escape sequence, followed
- * by a string containing a series of name and value pairs is received.
- * This string can be parsed using a ProfileCommandParser instance.
- *
- * @param text A string expected to contain a series of key and value pairs in
- * the form: name=value;name2=value2 ...
- */
- void profileChangeCommandReceived(const QString& text);
-
- /**
- * Emitted when a flow control key combination ( Ctrl+S or Ctrl+Q ) is pressed.
- * @param suspendKeyPressed True if Ctrl+S was pressed to suspend output or Ctrl+Q to
- * resume output.
- */
- void flowControlKeyPressed(bool suspendKeyPressed);
-
- /**
- * Emitted when the active screen is switched, to indicate whether the primary
- * screen is in use.
- */
- void primaryScreenInUse(bool use);
-
- /**
- * Emitted when the cursor shape or its blinking state is changed via
- * DECSCUSR sequences.
- *
- * @param cursorShape One of 3 possible values in KeyboardCursorShape enum
- * @param blinkingCursorEnabled Whether to enable blinking or not
- */
- void cursorChanged(KeyboardCursorShape cursorShape, bool blinkingCursorEnabled);
-
- void handleCommandFromKeyboard(KeyboardTranslator::Command command);
- void handleCtrlC(void);
- void outputFromKeypressEvent(void);
+ /**
+ * Emitted when a buffer of data is ready to send to the
+ * standard input of the terminal.
+ *
+ * @param data The buffer of data ready to be sent
+ * @param len The length of @p data in bytes
+ */
+ void sendData(const char* data,int len);
+
+ void dupDisplayOutput(const char* data,int len);
+
+ /**
+ * Requests that sending of input to the emulation
+ * from the terminal process be suspended or resumed.
+ *
+ * @param suspend If true, requests that sending of
+ * input from the terminal process' stdout be
+ * suspended. Otherwise requests that sending of
+ * input be resumed.
+ */
+ void lockPtyRequest(bool suspend);
+
+ /**
+ * Requests that the pty used by the terminal process
+ * be set to UTF 8 mode.
+ *
+ * TODO: More documentation
+ */
+ void useUtf8Request(bool);
+
+ /**
+ * Emitted when the activity state of the emulation is set.
+ *
+ * @param state The new activity state, one of NOTIFYNORMAL, NOTIFYACTIVITY
+ * or NOTIFYBELL
+ */
+ void stateSet(int state);
+
+ /** ZModem file transfer detected */
+ void zmodemSendDetected();
+ void zmodemRecvDetected();
+
+
+ /**
+ * Requests that the color of the text used
+ * to represent the tabs associated with this
+ * emulation be changed. This is a Konsole-specific
+ * extension from pre-KDE 4 times.
+ *
+ * TODO: Document how the parameter works.
+ */
+ void changeTabTextColorRequest(int color);
+
+ /**
+ * This is emitted when the program running in the shell indicates whether or
+ * not it is interested in mouse events.
+ *
+ * @param usesMouse This will be true if the program wants to be informed about
+ * mouse events or false otherwise.
+ */
+ void programUsesMouseChanged(bool usesMouse);
+
+ void programBracketedPasteModeChanged(bool bracketedPasteMode);
+
+ /**
+ * Emitted when the contents of the screen image change.
+ * The emulation buffers the updates from successive image changes,
+ * and only emits outputChanged() at sensible intervals when
+ * there is a lot of terminal activity.
+ *
+ * Normally there is no need for objects other than the screen windows
+ * created with createWindow() to listen for this signal.
+ *
+ * ScreenWindow objects created using createWindow() will emit their
+ * own outputChanged() signal in response to this signal.
+ */
+ void outputChanged();
+
+ /**
+ * Emitted when the program running in the terminal wishes to update the
+ * session's title. This also allows terminal programs to customize other
+ * aspects of the terminal emulation display.
+ *
+ * This signal is emitted when the escape sequence "\033]ARG;VALUE\007"
+ * is received in the input string, where ARG is a number specifying what
+ * should change and VALUE is a string specifying the new value.
+ *
+ * TODO: The name of this method is not very accurate since this method
+ * is used to perform a whole range of tasks besides just setting
+ * the user-title of the session.
+ *
+ * @param title Specifies what to change.
+ *
+ *
0 - Set window icon text and session title to @p newTitle
+ *
1 - Set window icon text to @p newTitle
+ *
2 - Set session title to @p newTitle
+ *
11 - Set the session's default background color to @p newTitle,
+ * where @p newTitle can be an HTML-style string ("#RRGGBB") or a named
+ * color (eg 'red', 'blue').
+ * See http://doc.trolltech.com/4.2/qcolor.html#setNamedColor for more
+ * details.
+ *
+ *
31 - Supposedly treats @p newTitle as a URL and opens it (NOT IMPLEMENTED)
+ *
32 - Sets the icon associated with the session. @p newTitle is the name
+ * of the icon to use, which can be the name of any icon in the current KDE icon
+ * theme (eg: 'konsole', 'kate', 'folder_home')
+ *
+ * @param newTitle Specifies the new title
+ */
+
+ void titleChanged(int title,const QString& newTitle);
+
+ /**
+ * Emitted when the program running in the terminal changes the
+ * screen size.
+ */
+ void imageSizeChanged(int lineCount , int columnCount);
+
+ /**
+ * Emitted when the setImageSize() is called on this emulation for
+ * the first time.
+ */
+ void imageSizeInitialized();
+
+ /**
+ * Emitted after receiving the escape sequence which asks to change
+ * the terminal emulator's size
+ */
+ void imageResizeRequest(const QSize& size);
+
+ /**
+ * Emitted when the terminal program requests to change various properties
+ * of the terminal display.
+ *
+ * A profile change command occurs when a special escape sequence, followed
+ * by a string containing a series of name and value pairs is received.
+ * This string can be parsed using a ProfileCommandParser instance.
+ *
+ * @param text A string expected to contain a series of key and value pairs in
+ * the form: name=value;name2=value2 ...
+ */
+ void profileChangeCommandReceived(const QString& text);
+
+ /**
+ * Emitted when a flow control key combination ( Ctrl+S or Ctrl+Q ) is pressed.
+ * @param suspendKeyPressed True if Ctrl+S was pressed to suspend output or Ctrl+Q to
+ * resume output.
+ */
+ void flowControlKeyPressed(bool suspendKeyPressed);
+
+ /**
+ * Emitted when the active screen is switched, to indicate whether the primary
+ * screen is in use.
+ */
+ void primaryScreenInUse(bool use);
+
+ /**
+ * Emitted when the cursor shape or its blinking state is changed via
+ * DECSCUSR sequences.
+ *
+ * @param cursorShape One of 3 possible values in KeyboardCursorShape enum
+ * @param blinkingCursorEnabled Whether to enable blinking or not
+ */
+ void cursorChanged(KeyboardCursorShape cursorShape, bool blinkingCursorEnabled);
+
+ void handleCommandFromKeyboard(KeyboardTranslator::Command command);
+ void handleCtrlC(void);
+ void outputFromKeypressEvent(void);
protected:
- virtual void setMode(int mode) = 0;
- virtual void resetMode(int mode) = 0;
-
- /**
- * Processes an incoming character. See receiveData()
- * @p ch A unicode character code.
- */
- virtual void receiveChar(wchar_t ch);
-
- /**
- * Sets the active screen. The terminal has two screens, primary and alternate.
- * The primary screen is used by default. When certain interactive programs such
- * as Vim are run, they trigger a switch to the alternate screen.
- *
- * @param index 0 to switch to the primary screen, or 1 to switch to the alternate screen
- */
- void setScreen(int index);
-
- enum EmulationCodec
- {
- LocaleCodec = 0,
- Utf8Codec = 1
- };
- void setCodec(EmulationCodec codec); // codec number, 0 = locale, 1=utf8
-
-
- QList _windows;
-
- Screen* _currentScreen; // pointer to the screen which is currently active,
- // this is one of the elements in the screen[] array
-
- Screen* _screen[2]; // 0 = primary screen ( used by most programs, including the shell
- // scrollbars are enabled in this mode )
- // 1 = alternate ( used by vi , emacs etc.
- // scrollbars are not enabled in this mode )
-
- //decodes an incoming C-style character stream into a unicode QString using
- //the current text codec. (this allows for rendering of non-ASCII characters in text files etc.)
- QStringEncoder _fromUtf16;
- QStringDecoder _toUtf16;
-
- const KeyboardTranslator* _keyTranslator; // the keyboard layout
-
- bool _enableHandleCtrlC;
+ virtual void setMode(int mode) = 0;
+ virtual void resetMode(int mode) = 0;
+
+ /**
+ * Processes an incoming character. See receiveData()
+ * @p ch A unicode character code.
+ */
+ virtual void receiveChar(wchar_t ch);
+
+ /**
+ * Sets the active screen. The terminal has two screens, primary and alternate.
+ * The primary screen is used by default. When certain interactive programs such
+ * as Vim are run, they trigger a switch to the alternate screen.
+ *
+ * @param index 0 to switch to the primary screen, or 1 to switch to the alternate screen
+ */
+ void setScreen(int index);
+
+ enum EmulationCodec {
+ LocaleCodec = 0,
+ Utf8Codec = 1
+ };
+ void setCodec(EmulationCodec codec); // codec number, 0 = locale, 1=utf8
+
+ QList _windows;
+
+ Screen* _currentScreen; // pointer to the screen which is currently active,
+ // this is one of the elements in the screen[] array
+
+ Screen* _screen[2]; // 0 = primary screen ( used by most programs, including the shell
+ // scrollbars are enabled in this mode )
+ // 1 = alternate ( used by vi , emacs etc.
+ // scrollbars are not enabled in this mode )
+
+ //decodes an incoming C-style character stream into a unicode QString using
+ //the current text codec. (this allows for rendering of non-ASCII characters in text files etc.)
+ QStringEncoder _fromUtf16;
+ QStringDecoder _toUtf16;
+
+ const KeyboardTranslator* _keyTranslator; // the keyboard layout
+
+ bool _enableHandleCtrlC;
protected slots:
- /**
- * Schedules an update of attached views.
- * Repeated calls to bufferedUpdate() in close succession will result in only a single update,
- * much like the Qt buffered update of widgets.
- */
- void bufferedUpdate();
-
- // used to emit the primaryScreenInUse(bool) signal
- void checkScreenInUse();
+ /**
+ * Schedules an update of attached views.
+ * Repeated calls to bufferedUpdate() in close succession will result in only a single update,
+ * much like the Qt buffered update of widgets.
+ */
+ void bufferedUpdate();
+
+ // used to emit the primaryScreenInUse(bool) signal
+ void checkScreenInUse();
private slots:
- // triggered by timer, causes the emulation to send an updated screen image to each
- // view
- void showBulk();
+ // triggered by timer, causes the emulation to send an updated screen image to each
+ // view
+ void showBulk();
- void usesMouseChanged(bool usesMouse);
+ void usesMouseChanged(bool usesMouse);
- void bracketedPasteModeChanged(bool bracketedPasteMode);
+ void bracketedPasteModeChanged(bool bracketedPasteMode);
private:
- bool _usesMouse;
- bool _bracketedPasteMode;
- QTimer _bulkTimer1{this};
- QTimer _bulkTimer2{this};
- QStringEncoder _fromUtf8;
- QByteArray dupCache;
+ bool _usesMouse;
+ bool _bracketedPasteMode;
+ QTimer _bulkTimer1{this};
+ QTimer _bulkTimer2{this};
+ QStringEncoder _fromUtf8;
+ QByteArray dupCache;
};
-#endif // ifndef EMULATION_H
+#endif // EMULATION_H
diff --git a/lib/qtermwidget/ExtendedDefaultTranslator.h b/lib/qtermwidget/ExtendedDefaultTranslator.h
deleted file mode 100644
index 6403c729..00000000
--- a/lib/qtermwidget/ExtendedDefaultTranslator.h
+++ /dev/null
@@ -1,74 +0,0 @@
-"keyboard \"Default (XFree 4)\""
-"key Escape : \"\\E\""
-"key Tab -Shift : \"\\t\"\n"
-"key Tab +Shift+Ansi : \"\\E[Z\"\n"
-"key Tab +Shift-Ansi : \"\\t\"\n"
-"key Backtab +Ansi : \"\\E[Z\"\n"
-"key Backtab -Ansi : \"\\t\"\n"
-"key Return-Shift-NewLine : \"\\r\"\n"
-"key Return-Shift+NewLine : \"\\r\\n\"\n"
-"key Return+Shift : \"\\EOM\"\n"
-"key Backspace : \"\\x7f\"\n"
-"key Up -Shift-Ansi : \"\\EA\"\n"
-"key Down -Shift-Ansi : \"\\EB\"\n"
-"key Right-Shift-Ansi : \"\\EC\"\n"
-"key Left -Shift-Ansi : \"\\ED\"\n"
-"key Up -Shift-AnyMod+Ansi+AppCuKeys : \"\\EOA\"\n"
-"key Down -Shift-AnyMod+Ansi+AppCuKeys : \"\\EOB\"\n"
-"key Right -Shift-AnyMod+Ansi+AppCuKeys : \"\\EOC\"\n"
-"key Left -Shift-AnyMod+Ansi+AppCuKeys : \"\\EOD\"\n"
-"key Up -Shift-AnyMod+Ansi-AppCuKeys : \"\\E[A\"\n"
-"key Down -Shift-AnyMod+Ansi-AppCuKeys : \"\\E[B\"\n"
-"key Right -Shift-AnyMod+Ansi-AppCuKeys : \"\\E[C\"\n"
-"key Left -Shift-AnyMod+Ansi-AppCuKeys : \"\\E[D\"\n"
-"key Up -Shift+AnyMod+Ansi : \"\\E[1;*A\"\n"
-"key Down -Shift+AnyMod+Ansi : \"\\E[1;*B\"\n"
-"key Right -Shift+AnyMod+Ansi : \"\\E[1;*C\"\n"
-"key Left -Shift+AnyMod+Ansi : \"\\E[1;*D\"\n"
-"key Enter+NewLine : \"\\r\\n\"\n"
-"key Enter-NewLine : \"\\r\"\n"
-"key Home -AnyMod -AppCuKeys : \"\\E[H\" \n"
-"key End -AnyMod -AppCuKeys : \"\\E[F\" \n"
-"key Home -AnyMod +AppCuKeys : \"\\EOH\" \n"
-"key End -AnyMod +AppCuKeys : \"\\EOF\" \n"
-"key Home +AnyMod : \"\\E[1;*H\"\n"
-"key End +AnyMod : \"\\E[1;*F\"\n"
-"key Insert -AnyMod : \"\\E[2~\"\n"
-"key Delete -AnyMod : \"\\E[3~\"\n"
-"key Insert +AnyMod : \"\\E[2;*~\"\n"
-"key Delete +AnyMod : \"\\E[3;*~\"\n"
-"key Prior -Shift-AnyMod : \"\\E[5~\"\n"
-"key Next -Shift-AnyMod : \"\\E[6~\"\n"
-"key Prior -Shift+AnyMod : \"\\E[5;*~\"\n"
-"key Next -Shift+AnyMod : \"\\E[6;*~\"\n"
-"key F1 -AnyMod : \"\\EOP\"\n"
-"key F2 -AnyMod : \"\\EOQ\"\n"
-"key F3 -AnyMod : \"\\EOR\"\n"
-"key F4 -AnyMod : \"\\EOS\"\n"
-"key F5 -AnyMod : \"\\E[15~\"\n"
-"key F6 -AnyMod : \"\\E[17~\"\n"
-"key F7 -AnyMod : \"\\E[18~\"\n"
-"key F8 -AnyMod : \"\\E[19~\"\n"
-"key F9 -AnyMod : \"\\E[20~\"\n"
-"key F10 -AnyMod : \"\\E[21~\"\n"
-"key F11 -AnyMod : \"\\E[23~\"\n"
-"key F12 -AnyMod : \"\\E[24~\"\n"
-"key F1 +AnyMod : \"\\EO*P\"\n"
-"key F2 +AnyMod : \"\\EO*Q\"\n"
-"key F3 +AnyMod : \"\\EO*R\"\n"
-"key F4 +AnyMod : \"\\EO*S\"\n"
-"key F5 +AnyMod : \"\\E[15;*~\"\n"
-"key F6 +AnyMod : \"\\E[17;*~\"\n"
-"key F7 +AnyMod : \"\\E[18;*~\"\n"
-"key F8 +AnyMod : \"\\E[19;*~\"\n"
-"key F9 +AnyMod : \"\\E[20;*~\"\n"
-"key F10 +AnyMod : \"\\E[21;*~\"\n"
-"key F11 +AnyMod : \"\\E[23;*~\"\n"
-"key F12 +AnyMod : \"\\E[24;*~\"\n"
-"key Space +Control : \"\\x00\"\n"
-"key Up +Shift-AppScreen : scrollLineUp\n"
-"key Prior +Shift-AppScreen : scrollPageUp\n"
-"key Down +Shift-AppScreen : scrollLineDown\n"
-"key Next +Shift-AppScreen : scrollPageDown\n"
-"key ScrollLock : scrollLock\n"
-"\0"
diff --git a/lib/qtermwidget/Filter.cpp b/lib/qtermwidget/Filter.cpp
index d750d856..087945e1 100644
--- a/lib/qtermwidget/Filter.cpp
+++ b/lib/qtermwidget/Filter.cpp
@@ -1,125 +1,117 @@
/*
- Copyright 2007-2008 by Robert Knight
-
- 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 2007-2008 by Robert Knight
+
+ 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 "Filter.h"
#include
#include
#include
-#include
#include
+#include
+#include
+#include
+#include
#include
#include
-#include
-#include
-#include
#include
-#include
+#include
-#include "TerminalCharacterDecoder.h"
#include "CharWidth.h"
+#include "TerminalCharacterDecoder.h"
#include "qtermwidget.h"
-FilterChain::~FilterChain()
-{
-
+FilterChain::~FilterChain() {
}
-void FilterChain::addFilter(Filter* filter)
-{
- if(!containsFilter(filter))
+void FilterChain::addFilter(Filter *filter) {
+ if (!containsFilter(filter))
append(filter);
}
-void FilterChain::removeFilter(Filter* filter)
-{
- removeAll(filter);
+
+void FilterChain::removeFilter(Filter *filter) {
+ removeAll(filter);
}
-bool FilterChain::containsFilter(Filter* filter)
-{
- return contains(filter);
+
+bool FilterChain::containsFilter(Filter *filter) {
+ return contains(filter);
}
-void FilterChain::reset()
-{
- QListIterator iter(*this);
+
+void FilterChain::reset() {
+ QListIterator iter(*this);
while (iter.hasNext())
iter.next()->reset();
}
-void FilterChain::setBuffer(const QString* buffer , const QList* linePositions)
-{
- QListIterator iter(*this);
+
+void FilterChain::setBuffer(const QString *buffer,
+ const QList *linePositions) {
+ QListIterator iter(*this);
while (iter.hasNext())
- iter.next()->setBuffer(buffer,linePositions);
+ iter.next()->setBuffer(buffer, linePositions);
}
-void FilterChain::process()
-{
- QListIterator iter(*this);
+
+void FilterChain::process() {
+ QListIterator iter(*this);
while (iter.hasNext())
iter.next()->process();
}
-void FilterChain::clear()
-{
- QList::clear();
+
+void FilterChain::clear() {
+ QList::clear();
}
-Filter::HotSpot* FilterChain::hotSpotAt(int line , int column) const
-{
- QListIterator iter(*this);
- while (iter.hasNext())
- {
- Filter* filter = iter.next();
- Filter::HotSpot* spot = filter->hotSpotAt(line,column);
- if ( spot != nullptr )
- {
- return spot;
+
+Filter::HotSpot *FilterChain::hotSpotAt(int line, int column) const {
+ QListIterator iter(*this);
+ while (iter.hasNext()) {
+ Filter *filter = iter.next();
+ Filter::HotSpot *spot = filter->hotSpotAt(line, column);
+ if (spot != nullptr) {
+ return spot;
}
}
return nullptr;
}
-QList FilterChain::hotSpots() const
-{
- QList list;
- QListIterator iter(*this);
- while (iter.hasNext())
- {
- Filter* filter = iter.next();
+QList FilterChain::hotSpots() const {
+ QList list;
+ QListIterator iter(*this);
+ while (iter.hasNext()) {
+ Filter *filter = iter.next();
list << filter->hotSpots();
}
return list;
}
+
//QList FilterChain::hotSpotsAtLine(int line) const;
TerminalImageFilterChain::TerminalImageFilterChain()
-: _buffer(nullptr)
-, _linePositions(nullptr)
-{
+ : _buffer(nullptr), _linePositions(nullptr) {
}
-TerminalImageFilterChain::~TerminalImageFilterChain()
-{
+TerminalImageFilterChain::~TerminalImageFilterChain() {
delete _buffer;
delete _linePositions;
}
-void TerminalImageFilterChain::setImage(const Character* const image , int lines , int columns, const QVector& lineProperties)
-{
+void TerminalImageFilterChain::setImage(
+ const Character *const image, int lines, int columns,
+ const QVector &lineProperties) {
if (empty())
return;
@@ -130,9 +122,9 @@ void TerminalImageFilterChain::setImage(const Character* const image , int lines
decoder.setTrailingWhitespace(false);
// setup new shared buffers for the filters to process on
- QString* newBuffer = new QString();
- QList* newLinePositions = new QList();
- setBuffer( newBuffer , newLinePositions );
+ QString *newBuffer = new QString();
+ QList *newLinePositions = new QList();
+ setBuffer(newBuffer, newLinePositions);
// free the old buffers
delete _buffer;
@@ -144,117 +136,98 @@ void TerminalImageFilterChain::setImage(const Character* const image , int lines
QTextStream lineStream(_buffer);
decoder.begin(&lineStream);
- for (int i=0 ; i < lines ; i++)
- {
+ for (int i = 0; i < lines; i++) {
_linePositions->append(_buffer->length());
- decoder.decodeLine(image + i*columns,columns,LINE_DEFAULT);
+ decoder.decodeLine(image + i * columns, columns, LINE_DEFAULT);
// pretend that each line ends with a newline character.
// this prevents a link that occurs at the end of one line
// being treated as part of a link that occurs at the start of the next line
//
- // the downside is that links which are spread over more than one line are not
- // highlighted.
+ // the downside is that links which are spread over more than one line are
+ // not highlighted.
//
// TODO - Use the "line wrapped" attribute associated with lines in a
// terminal image to avoid adding this imaginary character for wrapped
// lines
- if ( !(lineProperties.value(i,LINE_DEFAULT) & LINE_WRAPPED) )
- lineStream << QLatin1Char('\n');
+ if (!(lineProperties.value(i, LINE_DEFAULT) & LINE_WRAPPED))
+ lineStream << QLatin1Char('\n');
}
decoder.end();
}
-Filter::Filter() : QObject(nullptr)
-{
+Filter::Filter() : QObject(nullptr) {
}
-Filter::~Filter()
-{
+Filter::~Filter() {
qDeleteAll(_hotspotList);
_hotspotList.clear();
}
-void Filter::reset()
-{
+void Filter::reset() {
qDeleteAll(_hotspotList);
_hotspots.clear();
_hotspotList.clear();
}
-void Filter::setBuffer(const QString* buffer , const QList* linePositions)
-{
+void Filter::setBuffer(const QString *buffer, const QList *linePositions) {
_buffer = buffer;
_linePositions = linePositions;
}
-void Filter::getLineColumn(int position , int& startLine , int& startColumn)
-{
- Q_ASSERT( _linePositions );
- Q_ASSERT( _buffer );
+void Filter::getLineColumn(int position, int &startLine, int &startColumn) {
+ Q_ASSERT(_linePositions);
+ Q_ASSERT(_buffer);
-
- for (int i = 0 ; i < _linePositions->count() ; i++)
- {
+ for (int i = 0; i < _linePositions->count(); i++) {
int nextLine = 0;
- if ( i == _linePositions->count()-1 )
- nextLine = _buffer->length() + 1;
+ if (i == _linePositions->count() - 1)
+ nextLine = _buffer->length() + 1;
else
- nextLine = _linePositions->value(i+1);
+ nextLine = _linePositions->value(i + 1);
- if ( _linePositions->value(i) <= position && position < nextLine )
- {
+ if (_linePositions->value(i) <= position && position < nextLine) {
startLine = i;
- startColumn = CharWidth::string_unicode_width(buffer()->mid(_linePositions->value(i),position - _linePositions->value(i)));
+ startColumn = CharWidth::string_unicode_width(buffer()->mid(
+ _linePositions->value(i), position - _linePositions->value(i)));
return;
}
}
}
-
-/*void Filter::addLine(const QString& text)
-{
- _linePositions << _buffer.length();
- _buffer.append(text);
-}*/
-
-const QString* Filter::buffer()
-{
- return _buffer;
+const QString *Filter::buffer() {
+ return _buffer;
}
-Filter::HotSpot::~HotSpot()
-{
+
+Filter::HotSpot::~HotSpot() {
}
-void Filter::addHotSpot(HotSpot* spot)
-{
+
+void Filter::addHotSpot(HotSpot *spot) {
_hotspotList << spot;
- for (int line = spot->startLine() ; line <= spot->endLine() ; line++)
- {
- _hotspots.insert(line,spot);
+ for (int line = spot->startLine(); line <= spot->endLine(); line++) {
+ _hotspots.insert(line, spot);
}
}
-QList Filter::hotSpots() const
-{
- return _hotspotList;
+
+QList Filter::hotSpots() const {
+ return _hotspotList;
}
-QList Filter::hotSpotsAtLine(int line) const
-{
+
+QList Filter::hotSpotsAtLine(int line) const {
return _hotspots.values(line);
}
-Filter::HotSpot* Filter::hotSpotAt(int line , int column) const
-{
- QListIterator spotIter(_hotspots.values(line));
+Filter::HotSpot *Filter::hotSpotAt(int line, int column) const {
+ QListIterator spotIter(_hotspots.values(line));
- while (spotIter.hasNext())
- {
- HotSpot* spot = spotIter.next();
+ while (spotIter.hasNext()) {
+ HotSpot *spot = spotIter.next();
- if ( spot->startLine() == line && spot->startColumn() > column )
+ if (spot->startLine() == line && spot->startColumn() > column)
continue;
- if ( spot->endLine() == line && spot->endColumn() < column )
+ if (spot->endLine() == line && spot->endColumn() < column)
continue;
return spot;
@@ -263,108 +236,53 @@ Filter::HotSpot* Filter::hotSpotAt(int line , int column) const
return nullptr;
}
-Filter::HotSpot::HotSpot(int startLine , int startColumn , int endLine , int endColumn)
- : _startLine(startLine)
- , _startColumn(startColumn)
- , _endLine(endLine)
- , _endColumn(endColumn)
- , _type(NotSpecified)
- , _color(Qt::red)
-{
-}
-QList Filter::HotSpot::actions()
-{
- return QList();
-}
-int Filter::HotSpot::startLine() const
-{
- return _startLine;
-}
-int Filter::HotSpot::endLine() const
-{
- return _endLine;
-}
-int Filter::HotSpot::startColumn() const
-{
- return _startColumn;
-}
-int Filter::HotSpot::endColumn() const
-{
- return _endColumn;
-}
-Filter::HotSpot::Type Filter::HotSpot::type() const
-{
- return _type;
-}
-QColor Filter::HotSpot::color() const
-{
- return _color;
-}
-void Filter::HotSpot::setType(Type type)
-{
- _type = type;
-}
-void Filter::HotSpot::setColor(const QColor& color)
-{
- _color = color;
-}
+Filter::HotSpot::HotSpot(int startLine, int startColumn, int endLine, int endColumn)
+ : _startLine(startLine), _startColumn(startColumn), _endLine(endLine),
+ _endColumn(endColumn), _type(NotSpecified), _color(Qt::red) {}
+QList Filter::HotSpot::actions() { return QList(); }
+int Filter::HotSpot::startLine() const { return _startLine; }
+int Filter::HotSpot::endLine() const { return _endLine; }
+int Filter::HotSpot::startColumn() const { return _startColumn; }
+int Filter::HotSpot::endColumn() const { return _endColumn; }
+Filter::HotSpot::Type Filter::HotSpot::type() const { return _type; }
+QColor Filter::HotSpot::color() const { return _color; }
+void Filter::HotSpot::setType(Type type) { _type = type; }
+void Filter::HotSpot::setColor(const QColor &color) { _color = color; }
-RegExpFilter::RegExpFilter() : Filter()
-{
+RegExpFilter::RegExpFilter() : Filter() {
}
-RegExpFilter::HotSpot::HotSpot(int startLine,int startColumn,int endLine,int endColumn)
- : Filter::HotSpot(startLine,startColumn,endLine,endColumn)
-{
+RegExpFilter::HotSpot::HotSpot(int startLine, int startColumn, int endLine,
+ int endColumn)
+ : Filter::HotSpot(startLine, startColumn, endLine, endColumn) {
setType(Marker);
}
-void RegExpFilter::HotSpot::clickAction(void)
-{
+void RegExpFilter::HotSpot::clickAction(void) {}
+QString RegExpFilter::HotSpot::clickActionToolTip(void) { return QString(); }
+bool RegExpFilter::HotSpot::hasClickAction(void) { return false; }
+void RegExpFilter::HotSpot::setCapturedTexts(const QStringList &texts) {
+ _capturedTexts = texts;
}
-
-QString RegExpFilter::HotSpot::clickActionToolTip(void)
-{
- return QString();
+QStringList RegExpFilter::HotSpot::capturedTexts() const {
+ return _capturedTexts;
}
-
-bool RegExpFilter::HotSpot::hasClickAction(void)
-{
- return false;
+void RegExpFilter::setRegExp(const QRegularExpression ®Exp) {
+ _searchText = regExp;
}
+QRegularExpression RegExpFilter::regExp() const { return _searchText; }
-void RegExpFilter::HotSpot::setCapturedTexts(const QStringList& texts)
-{
- _capturedTexts = texts;
-}
-QStringList RegExpFilter::HotSpot::capturedTexts() const
-{
- return _capturedTexts;
-}
+void RegExpFilter::process() {
+ const QString *text = buffer();
-void RegExpFilter::setRegExp(const QRegularExpression& regExp)
-{
- _searchText = regExp;
-}
-QRegularExpression RegExpFilter::regExp() const
-{
- return _searchText;
-}
-/*void RegExpFilter::reset(int)
-{
- _buffer = QString();
-}*/
-void RegExpFilter::process()
-{
- const QString* text = buffer();
-
- Q_ASSERT( text );
+ Q_ASSERT(text);
// ignore any regular expressions which match an empty string.
// otherwise the while loop below will run indefinitely
static const QString emptyString;
- auto match = _searchText.match(emptyString, 0,
- QRegularExpression::NormalMatch, QRegularExpression::AnchorAtOffsetMatchOption);
+ auto match =
+ _searchText.match(emptyString, 0, QRegularExpression::NormalMatch,
+ QRegularExpression::AnchorAtOffsetMatchOption);
if (match.hasMatch())
return;
@@ -381,11 +299,12 @@ void RegExpFilter::process()
QString text = match.captured(i);
captureList.append(text);
}
-
+
getLineColumn(match.capturedStart(), startLine, startColumn);
getLineColumn(match.capturedEnd(), endLine, endColumn);
- RegExpFilter::HotSpot* spot = newHotSpot(startLine, startColumn, endLine, endColumn);
+ RegExpFilter::HotSpot *spot =
+ newHotSpot(startLine, startColumn, endLine, endColumn);
spot->setCapturedTexts(captureList);
addHotSpot(spot);
@@ -396,88 +315,84 @@ void RegExpFilter::process()
}
match = _searchText.match(*text, match.capturedEnd());
- }
+ }
}
-RegExpFilter::HotSpot* RegExpFilter::newHotSpot(int startLine,int startColumn,
- int endLine,int endColumn)
-{
- HotSpot *spot = new RegExpFilter::HotSpot(startLine,startColumn,
- endLine,endColumn);
- spot->setColor(color());
+RegExpFilter::HotSpot *RegExpFilter::newHotSpot(int startLine, int startColumn,
+ int endLine, int endColumn) {
+ HotSpot *spot =
+ new RegExpFilter::HotSpot(startLine, startColumn, endLine, endColumn);
+ spot->setColor(color());
return spot;
}
-RegExpFilter::HotSpot* UrlFilter::newHotSpot(int startLine,int startColumn,int endLine,
- int endColumn)
-{
- HotSpot *spot = new UrlFilter::HotSpot(startLine,startColumn,
- endLine,endColumn);
- connect(spot->getUrlObject(), &FilterObject::activated, this, &UrlFilter::activated);
+
+RegExpFilter::HotSpot *UrlFilter::newHotSpot(int startLine, int startColumn,
+ int endLine, int endColumn) {
+ HotSpot *spot =
+ new UrlFilter::HotSpot(startLine, startColumn, endLine, endColumn);
+ connect(spot->getUrlObject(), &FilterObject::activated, this,
+ &UrlFilter::activated);
return spot;
}
-UrlFilter::HotSpot::HotSpot(int startLine,int startColumn,int endLine,int endColumn)
-: RegExpFilter::HotSpot(startLine,startColumn,endLine,endColumn)
-, _urlObject(new FilterObject(this))
-{
+UrlFilter::HotSpot::HotSpot(int startLine, int startColumn, int endLine,
+ int endColumn)
+ : RegExpFilter::HotSpot(startLine, startColumn, endLine, endColumn),
+ _urlObject(new FilterObject(this)) {
setType(Link);
}
-UrlFilter::HotSpot::UrlType UrlFilter::HotSpot::urlType() const
-{
+UrlFilter::HotSpot::UrlType UrlFilter::HotSpot::urlType() const {
QString url = capturedTexts().constFirst();
- if ( FullUrlRegExp.match(url).hasMatch() )
+ if (FullUrlRegExp.match(url).hasMatch())
return StandardUrl;
- else if ( EmailAddressRegExp.match(url).hasMatch() )
+ else if (EmailAddressRegExp.match(url).hasMatch())
return Email;
- else if ( FilePathRegExp.match(url).hasMatch() )
+ else if (FilePathRegExp.match(url).hasMatch())
return FilePath;
else
return Unknown;
}
-bool UrlFilter::HotSpot::hasClickAction(void)
-{
+bool UrlFilter::HotSpot::hasClickAction(void) {
const UrlType kind = urlType();
- if ( kind == StandardUrl ) {
+ if (kind == StandardUrl) {
return true;
- } else if ( kind == FilePath ) {
+ } else if (kind == FilePath) {
return true;
}
return false;
}
-QString UrlFilter::HotSpot::clickActionToolTip(void)
-{
+QString UrlFilter::HotSpot::clickActionToolTip(void) {
const UrlType kind = urlType();
- if ( kind == StandardUrl ) {
+ if (kind == StandardUrl) {
return tr("Follow link (ctrl + click)");
- } else if ( kind == FilePath ) {
+ } else if (kind == FilePath) {
return tr("Follow path (ctrl + click)");
}
return QString();
}
-void UrlFilter::HotSpot::clickAction(void)
-{
+void UrlFilter::HotSpot::clickAction(void) {
QString url = capturedTexts().constFirst();
const UrlType kind = urlType();
- if ( kind == StandardUrl ) {
+ if (kind == StandardUrl) {
// if the URL path does not include the protocol ( eg. "www.kde.org" ) then
// prepend http:// ( eg. "www.kde.org" --> "http://www.kde.org" )
if (!url.contains(QLatin1String("://"))) {
url.prepend(QLatin1String("http://"));
}
- } else if ( kind == FilePath ) {
- url.replace(QLatin1Char('\\'),QLatin1Char('/'));
- url.replace(QLatin1Char('~'),QDir::homePath());
- if(url.startsWith(QLatin1String("/"))) {
+ } else if (kind == FilePath) {
+ url.replace(QLatin1Char('\\'), QLatin1Char('/'));
+ url.replace(QLatin1Char('~'), QDir::homePath());
+ if (url.startsWith(QLatin1String("/"))) {
url.prepend(QLatin1String("file://"));
- } else if(url.startsWith(QLatin1String("."))) {
+ } else if (url.startsWith(QLatin1String("."))) {
url.prepend(QLatin1String("relative:"));
- } else if(url.startsWith(QLatin1String(".."))) {
+ } else if (url.startsWith(QLatin1String(".."))) {
url.prepend(QLatin1String("relative:"));
} else {
url.prepend(QLatin1String("file:///"));
@@ -486,139 +401,144 @@ void UrlFilter::HotSpot::clickAction(void)
return;
}
- _urlObject->emitActivated(QUrl(url, QUrl::StrictMode), QTermWidget::OpenFromClick);
+ _urlObject->emitActivated(QUrl(url, QUrl::StrictMode),
+ QTermWidget::OpenFromClick);
}
-// Note: Altering these regular expressions can have a major effect on the performance of the filters
-// used for finding URLs in the text, especially if they are very general and could match very long
-// pieces of text.
-// Please be careful when altering them.
+// Note: Altering these regular expressions can have a major effect on the
+// performance of the filters used for finding URLs in the text, especially if
+// they are very general and could match very long pieces of text. Please be
+// careful when altering them.
-//regexp matches:
-// full url:
-// protocolname:// or www. followed by anything other than whitespaces, <, >, ' or ", and ends before whitespaces, <, >, ', ", ], !, comma and dot
-const QRegularExpression UrlFilter::FullUrlRegExp(QLatin1String("(www\\.(?!\\.)|[a-z][a-z0-9+.-]*://)[^\\s<>'\"]+[^!,\\.\\s<>'\"\\]]"));
+// regexp matches:
+// full url:
+// protocolname:// or www. followed by anything other than whitespaces, <, >, '
+// or ", and ends before whitespaces, <, >, ', ", ], !, comma and dot
+const QRegularExpression UrlFilter::FullUrlRegExp(QLatin1String(
+ "(www\\.(?!\\.)|[a-z][a-z0-9+.-]*://)[^\\s<>'\"]+[^!,\\.\\s<>'\"\\]]"));
// email address:
// [word chars, dots or dashes]@[word chars, dots or dashes].[word chars]
-const QRegularExpression UrlFilter::EmailAddressRegExp(QLatin1String("\\b(\\w|\\.|-)+@(\\w|\\.|-)+\\.\\w+\\b"));
+const QRegularExpression UrlFilter::EmailAddressRegExp(
+ QLatin1String("\\b(\\w|\\.|-)+@(\\w|\\.|-)+\\.\\w+\\b"));
// file path:
-// '[drive letter]:\' '\\' '.\' or '..\' followed by anything other than whitespaces, <, >, ' or ", and ends before whitespaces, <, >, ', ", ], !, comma and dot
-const QRegularExpression UrlFilter::WindowsFilePathRegExp(QLatin1String("([a-zA-Z]:\\\\|\\\\\\\\|\\.\\\\|\\.\\.\\\\)[^\\s<>'\"]+[^!,\\.\\s<>'\"\\]]"));
-// '/' '~/' './' or '../' followed by anything other than whitespaces, <, >, ' or ", and ends before whitespaces, <, >, ', ", ], !, comma and dot
-const QRegularExpression UrlFilter::UnixFilePathRegExp(QLatin1String("((\\./|~/|\\.\\./)[^\\s<>'\"]+|/[^\\s<>'\"]+)[^!,\\.\\s<>'\"\\]]"));
-const QRegularExpression UrlFilter::FilePathRegExp(QLatin1String("(")+
- WindowsFilePathRegExp.pattern()+QLatin1Char('|')+
- UnixFilePathRegExp.pattern()+
- QLatin1Char(')'));
+// '[drive letter]:\' '\\' '.\' or '..\' followed by anything other than
+// whitespaces, <, >, ' or ", and ends before whitespaces, <, >, ', ", ], !,
+// comma and dot
+const QRegularExpression UrlFilter::WindowsFilePathRegExp(
+ QLatin1String("([a-zA-Z]:\\\\|\\\\\\\\|\\.\\\\|\\.\\.\\\\)[^\\s<>'\"]+[^!,"
+ "\\.\\s<>'\"\\]]"));
+// '/' '~/' './' or '../' followed by anything other than whitespaces, <, >, '
+// or ", and ends before whitespaces, <, >, ', ", ], !, comma and dot
+const QRegularExpression UrlFilter::UnixFilePathRegExp(QLatin1String(
+ "((\\./|~/|\\.\\./)[^\\s<>'\"]+|/[^\\s<>'\"]+)[^!,\\.\\s<>'\"\\]]"));
+const QRegularExpression UrlFilter::FilePathRegExp(
+ QLatin1String("(") + WindowsFilePathRegExp.pattern() + QLatin1Char('|') +
+ UnixFilePathRegExp.pattern() + QLatin1Char(')'));
// matches full url or email address
-const QRegularExpression UrlFilter::CompleteUrlRegExp(QLatin1Char('(')+
- FullUrlRegExp.pattern()+QLatin1Char('|')+
- EmailAddressRegExp.pattern()+QLatin1Char('|')+
- FilePathRegExp.pattern()+
- QLatin1Char(')'));
+const QRegularExpression UrlFilter::CompleteUrlRegExp(
+ QLatin1Char('(') + FullUrlRegExp.pattern() + QLatin1Char('|') +
+ EmailAddressRegExp.pattern() + QLatin1Char('|') + FilePathRegExp.pattern() +
+ QLatin1Char(')'));
-UrlFilter::UrlFilter() : RegExpFilter()
-{
- setRegExp( CompleteUrlRegExp );
+UrlFilter::UrlFilter() : RegExpFilter() {
+ setRegExp(CompleteUrlRegExp);
}
-UrlFilter::HotSpot::~HotSpot()
-{
- delete _urlObject;
+UrlFilter::HotSpot::~HotSpot() {
+ delete _urlObject;
}
-void FilterObject::emitActivated(const QUrl& url, uint32_t opcode)
-{
+void FilterObject::emitActivated(const QUrl &url, uint32_t opcode) {
emit activated(url, opcode);
}
-FilterObject* UrlFilter::HotSpot::getUrlObject() const
-{
- return _urlObject;
-}
+FilterObject *UrlFilter::HotSpot::getUrlObject() const { return _urlObject; }
-QList UrlFilter::HotSpot::actions()
-{
- QList list;
+QList UrlFilter::HotSpot::actions() {
+ QList list;
const UrlType kind = urlType();
- Q_ASSERT( kind == StandardUrl || kind == Email || kind == FilePath );
+ Q_ASSERT(kind == StandardUrl || kind == Email || kind == FilePath);
- if ( kind == StandardUrl ) {
- QAction* openLinkAction = new QAction(_urlObject);
- QAction* copyLinkAction = new QAction(_urlObject);
+ if (kind == StandardUrl) {
+ QAction *openLinkAction = new QAction(_urlObject);
+ QAction *copyLinkAction = new QAction(_urlObject);
openLinkAction->setText(QObject::tr("Open Link"));
copyLinkAction->setText(QObject::tr("Copy Link Address"));
- QObject::connect( openLinkAction , &QAction::triggered , _urlObject , [&](void) {
+ QObject::connect(openLinkAction, &QAction::triggered, _urlObject, [&](void) {
QString url = capturedTexts().constFirst();
- // if the URL path does not include the protocol ( eg. "www.kde.org" ) then
- // prepend http:// ( eg. "www.kde.org" --> "http://www.kde.org" )
+ // if the URL path does not include the protocol ( eg. "www.kde.org" )
+ // then prepend http:// ( eg. "www.kde.org" --> "http://www.kde.org" )
if (!url.contains(QLatin1String("://"))) {
url.prepend(QLatin1String("http://"));
}
- _urlObject->emitActivated(QUrl(url, QUrl::StrictMode), QTermWidget::OpenFromContextMenu);
+ _urlObject->emitActivated(QUrl(url, QUrl::StrictMode),
+ QTermWidget::OpenFromContextMenu);
});
- QObject::connect( copyLinkAction , &QAction::triggered , _urlObject , [&](void) {
+ QObject::connect(copyLinkAction, &QAction::triggered, _urlObject, [&](void) {
QString url = capturedTexts().constFirst();
QApplication::clipboard()->setText(url);
});
list << openLinkAction;
list << copyLinkAction;
- } else if ( kind == Email ) {
- QAction* sendEmailAction = new QAction(_urlObject);
- QAction* copyEmailAction = new QAction(_urlObject);
+ } else if (kind == Email) {
+ QAction *sendEmailAction = new QAction(_urlObject);
+ QAction *copyEmailAction = new QAction(_urlObject);
sendEmailAction->setText(QObject::tr("Send Email To..."));
copyEmailAction->setText(QObject::tr("Copy Email Address"));
- QObject::connect( sendEmailAction , &QAction::triggered , _urlObject , [&](void) {
+ QObject::connect(sendEmailAction, &QAction::triggered, _urlObject, [&](void) {
QString url = capturedTexts().constFirst();
url.prepend(QLatin1String("mailto:"));
- _urlObject->emitActivated(QUrl(url, QUrl::StrictMode), QTermWidget::OpenFromContextMenu);
+ _urlObject->emitActivated(QUrl(url, QUrl::StrictMode),
+ QTermWidget::OpenFromContextMenu);
});
- QObject::connect( copyEmailAction , &QAction::triggered , _urlObject , [&](void) {
+ QObject::connect(copyEmailAction, &QAction::triggered, _urlObject, [&](void) {
QString url = capturedTexts().constFirst();
QApplication::clipboard()->setText(url);
});
list << sendEmailAction;
list << copyEmailAction;
- } else if ( kind == FilePath ) {
- QAction* openPathAction = new QAction(_urlObject);
- QAction* openContainingPathAction = new QAction(_urlObject);
- QAction* copyPathAction = new QAction(_urlObject);
+ } else if (kind == FilePath) {
+ QAction *openPathAction = new QAction(_urlObject);
+ QAction *openContainingPathAction = new QAction(_urlObject);
+ QAction *copyPathAction = new QAction(_urlObject);
openPathAction->setText(QObject::tr("Open Path"));
openContainingPathAction->setText(QObject::tr("Open Containing Folder"));
copyPathAction->setText(QObject::tr("Copy Path"));
- QObject::connect( openPathAction , &QAction::triggered , _urlObject , [&](void) {
+ QObject::connect(openPathAction, &QAction::triggered, _urlObject, [&](void) {
QString url = capturedTexts().constFirst();
- url.replace(QLatin1Char('\\'),QLatin1Char('/'));
- url.replace(QLatin1Char('~'),QDir::homePath());
- if(url.startsWith(QLatin1String("/"))) {
+ url.replace(QLatin1Char('\\'), QLatin1Char('/'));
+ url.replace(QLatin1Char('~'), QDir::homePath());
+ if (url.startsWith(QLatin1String("/"))) {
url.prepend(QLatin1String("file://"));
- } else if(url.startsWith(QLatin1String("."))) {
+ } else if (url.startsWith(QLatin1String("."))) {
url.prepend(QLatin1String("relative:"));
- } else if(url.startsWith(QLatin1String(".."))) {
+ } else if (url.startsWith(QLatin1String(".."))) {
url.prepend(QLatin1String("relative:"));
} else {
url.prepend(QLatin1String("file:///"));
}
- _urlObject->emitActivated(QUrl(url, QUrl::StrictMode), QTermWidget::OpenFromContextMenu);
+ _urlObject->emitActivated(QUrl(url, QUrl::StrictMode),
+ QTermWidget::OpenFromContextMenu);
});
- QObject::connect( openContainingPathAction , &QAction::triggered , _urlObject , [&](void) {
+ QObject::connect(openContainingPathAction, &QAction::triggered, _urlObject, [&](void) {
QString url = capturedTexts().constFirst();
- url.replace(QLatin1Char('\\'),QLatin1Char('/'));
- url.replace(QLatin1Char('~'),QDir::homePath());
- if(url.startsWith(QLatin1String("/"))) {
+ url.replace(QLatin1Char('\\'), QLatin1Char('/'));
+ url.replace(QLatin1Char('~'), QDir::homePath());
+ if (url.startsWith(QLatin1String("/"))) {
url.prepend(QLatin1String("file://"));
- } else if(url.startsWith(QLatin1String("."))) {
+ } else if (url.startsWith(QLatin1String("."))) {
url.prepend(QLatin1String("relative:"));
- } else if(url.startsWith(QLatin1String(".."))) {
+ } else if (url.startsWith(QLatin1String(".."))) {
url.prepend(QLatin1String("relative:"));
} else {
url.prepend(QLatin1String("file:///"));
}
- _urlObject->emitActivated(QUrl(url, QUrl::StrictMode), QTermWidget::OpenContainingFromContextMenu);
+ _urlObject->emitActivated(QUrl(url, QUrl::StrictMode),
+ QTermWidget::OpenContainingFromContextMenu);
});
- QObject::connect( copyPathAction , &QAction::triggered , _urlObject , [&](void) {
+ QObject::connect(copyPathAction, &QAction::triggered, _urlObject, [&](void) {
QString url = capturedTexts().constFirst();
QApplication::clipboard()->setText(url);
});
diff --git a/lib/qtermwidget/Filter.h b/lib/qtermwidget/Filter.h
index 2ad71f5d..f05a5961 100644
--- a/lib/qtermwidget/Filter.h
+++ b/lib/qtermwidget/Filter.h
@@ -1,20 +1,20 @@
/*
- Copyright 2007-2008 by Robert Knight
-
- 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 2007-2008 by Robert Knight
+
+ 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 FILTER_H
@@ -64,70 +64,68 @@ class Filter : public QObject
* Hotspots may have more than one action, in which case the list of actions can be obtained using the
* actions() method. These actions may then be displayed in a popup menu or toolbar for example.
*/
- class HotSpot
- {
+ class HotSpot {
public:
- /**
- * Constructs a new hotspot which covers the area from (@p startLine,@p startColumn) to (@p endLine,@p endColumn)
- * in a block of text.
- */
- HotSpot(int startLine , int startColumn , int endLine , int endColumn);
- virtual ~HotSpot();
-
- enum Type
- {
+ /**
+ * Constructs a new hotspot which covers the area from (@p startLine,@p startColumn) to (@p endLine,@p endColumn)
+ * in a block of text.
+ */
+ HotSpot(int startLine , int startColumn , int endLine , int endColumn);
+ virtual ~HotSpot();
+
+ enum Type {
// the type of the hotspot is not specified
NotSpecified,
// this hotspot represents a clickable link
Link,
// this hotspot represents a marker
Marker
- };
-
- /** Returns the line when the hotspot area starts */
- int startLine() const;
- /** Returns the line where the hotspot area ends */
- int endLine() const;
- /** Returns the column on startLine() where the hotspot area starts */
- int startColumn() const;
- /** Returns the column on endLine() where the hotspot area ends */
- int endColumn() const;
-
- /**
- * Returns the type of the hotspot. This is usually used as a hint for views on how to represent
- * the hotspot graphically. eg. Link hotspots are typically underlined when the user mouses over them
- */
- Type type() const;
- QColor color() const;
- void setColor(const QColor& color);
- /**
- * Causes the an action associated with a hotspot to be triggered.
- *
- * @param action The action to trigger. This is
- * typically empty ( in which case the default action should be performed ) or
- * one of the object names from the actions() list. In which case the associated
- * action should be performed.
- */
- virtual void clickAction(void) = 0;
- virtual QString clickActionToolTip(void) = 0;
- virtual bool hasClickAction(void) = 0;
- /**
- * Returns a list of actions associated with the hotspot which can be used in a
- * menu or toolbar
- */
- virtual QList actions();
+ };
+
+ /** Returns the line when the hotspot area starts */
+ int startLine() const;
+ /** Returns the line where the hotspot area ends */
+ int endLine() const;
+ /** Returns the column on startLine() where the hotspot area starts */
+ int startColumn() const;
+ /** Returns the column on endLine() where the hotspot area ends */
+ int endColumn() const;
+
+ /**
+ * Returns the type of the hotspot. This is usually used as a hint for views on how to represent
+ * the hotspot graphically. eg. Link hotspots are typically underlined when the user mouses over them
+ */
+ Type type() const;
+ QColor color() const;
+ void setColor(const QColor& color);
+ /**
+ * Causes the an action associated with a hotspot to be triggered.
+ *
+ * @param action The action to trigger. This is
+ * typically empty ( in which case the default action should be performed ) or
+ * one of the object names from the actions() list. In which case the associated
+ * action should be performed.
+ */
+ virtual void clickAction(void) = 0;
+ virtual QString clickActionToolTip(void) = 0;
+ virtual bool hasClickAction(void) = 0;
+ /**
+ * Returns a list of actions associated with the hotspot which can be used in a
+ * menu or toolbar
+ */
+ virtual QList actions();
protected:
- /** Sets the type of a hotspot. This should only be set once */
- void setType(Type type);
+ /** Sets the type of a hotspot. This should only be set once */
+ void setType(Type type);
private:
- int _startLine;
- int _startColumn;
- int _endLine;
- int _endColumn;
- Type _type;
- QColor _color;
+ int _startLine;
+ int _startColumn;
+ int _endLine;
+ int _endColumn;
+ Type _type;
+ QColor _color;
};
/** Constructs a new filter. */
@@ -191,8 +189,7 @@ class RegExpFilter : public Filter
* Type of hotspot created by RegExpFilter. The capturedTexts() method can be used to find the text
* matched by the filter's regular expression.
*/
- class HotSpot : public Filter::HotSpot
- {
+ class HotSpot : public Filter::HotSpot {
public:
HotSpot(int startLine, int startColumn, int endLine , int endColumn);
void clickAction(void) override;
@@ -257,8 +254,7 @@ class UrlFilter : public RegExpFilter
* Hotspot type created by UrlFilter instances. The activate() method opens a web browser
* at the given URL when called.
*/
- class HotSpot : public RegExpFilter::HotSpot
- {
+ class HotSpot : public RegExpFilter::HotSpot {
public:
HotSpot(int startLine,int startColumn,int endLine,int endColumn);
~HotSpot() override;
@@ -276,8 +272,7 @@ class UrlFilter : public RegExpFilter
bool hasClickAction(void) override;
private:
- enum UrlType
- {
+ enum UrlType {
StandardUrl,
Email,
FilePath,
diff --git a/lib/qtermwidget/History.cpp b/lib/qtermwidget/History.cpp
index 3e15f4be..1a14f6b7 100644
--- a/lib/qtermwidget/History.cpp
+++ b/lib/qtermwidget/History.cpp
@@ -1,29 +1,29 @@
/*
- This file is part of Konsole, an X terminal.
- Copyright 1997,1998 by Lars Doelle
-
- 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.
+ This file is part of Konsole, an X terminal.
+ Copyright 1997,1998 by Lars Doelle
+
+ 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 "History.h"
#include
-#include
-#include
#include
+#include
+#include
#if defined(Q_OS_WIN)
#include
#else
@@ -36,946 +36,733 @@
#include
// Reasonable line size
-#define LINE_SIZE 1024
+#define LINE_SIZE 1024
/*
- An arbitrary long scroll.
+ An arbitrary long scroll.
- One can modify the scroll only by adding either cells
- or newlines, but access it randomly.
+ One can modify the scroll only by adding either cells
+ or newlines, but access it randomly.
- The model is that of an arbitrary wide typewriter scroll
- in that the scroll is a serie of lines and each line is
- a serie of cells with no overwriting permitted.
+ The model is that of an arbitrary wide typewriter scroll
+ in that the scroll is a serie of lines and each line is
+ a serie of cells with no overwriting permitted.
- The implementation provides arbitrary length and numbers
- of cells and line/column indexed read access to the scroll
- at constant costs.
+ The implementation provides arbitrary length and numbers
+ of cells and line/column indexed read access to the scroll
+ at constant costs.
-KDE4: Can we use QTemporaryFile here, instead of KTempFile?
+ KDE4: Can we use QTemporaryFile here, instead of KTempFile?
-FIXME: some complain about the history buffer consuming the
- memory of their machines. This problem is critical
- since the history does not behave gracefully in cases
- where the memory is used up completely.
+ FIXME: some complain about the history buffer consuming the
+ memory of their machines. This problem is critical
+ since the history does not behave gracefully in cases
+ where the memory is used up completely.
- I put in a workaround that should handle it problem
- now gracefully. I'm not satisfied with the solution.
+ I put in a workaround that should handle it problem
+ now gracefully. I'm not satisfied with the solution.
-FIXME: Terminating the history is not properly indicated
- in the menu. We should throw a signal.
+ FIXME: Terminating the history is not properly indicated
+ in the menu. We should throw a signal.
-FIXME: There is noticeable decrease in speed, also. Perhaps,
- there whole feature needs to be revisited therefore.
- Disadvantage of a more elaborated, say block-oriented
- scheme with wrap around would be it's complexity.
+ FIXME: There is noticeable decrease in speed, also. Perhaps,
+ there whole feature needs to be revisited therefore.
+ Disadvantage of a more elaborated, say block-oriented
+ scheme with wrap around would be it's complexity.
*/
-//FIXME: temporary replacement for tmpfile
-// this is here one for debugging purpose.
-
-//#define tmpfile xTmpFile
-
-// History File ///////////////////////////////////////////
-
/*
A Row(X) data type which allows adding elements to the end.
*/
HistoryFile::HistoryFile()
- : ion(-1),
- length(0),
- fileMap(nullptr),
- readWriteBalance(0)
-{
- if (tmpFile.open())
- {
- tmpFile.setAutoRemove(true);
- ion = tmpFile.handle();
- }
-}
-
-HistoryFile::~HistoryFile()
-{
+ : ion(-1)
+ , length(0)
+ , fileMap(nullptr)
+ , readWriteBalance(0) {
+ if (tmpFile.open()) {
+ tmpFile.setAutoRemove(true);
+ ion = tmpFile.handle();
+ }
+}
+
+HistoryFile::~HistoryFile() {
if (fileMap)
unmap();
}
-//TODO: Mapping the entire file in will cause problems if the history file becomes exceedingly large,
-//(ie. larger than available memory). HistoryFile::map() should only map in sections of the file at a time,
-//to avoid this.
-void HistoryFile::map()
-{
- Q_ASSERT( fileMap == nullptr );
+// TODO: Mapping the entire file in will cause problems if the history file
+// becomes exceedingly large, (ie. larger than available memory).
+//HistoryFile::map() should only map in sections of the file at a time, to avoid
+// this.
+void HistoryFile::map() {
+ Q_ASSERT(fileMap == nullptr);
#if defined(Q_OS_WIN)
readWriteBalance = 0;
fileMap = nullptr;
#else
- fileMap = (char*)mmap( nullptr , length , PROT_READ , MAP_PRIVATE , ion , 0 );
+ fileMap = (char *)mmap(nullptr, length, PROT_READ, MAP_PRIVATE, ion, 0);
- //if mmap'ing fails, fall back to the read-lseek combination
- if ( fileMap == MAP_FAILED )
- {
- readWriteBalance = 0;
- fileMap = nullptr;
+ // if mmap'ing fails, fall back to the read-lseek combination
+ if (fileMap == MAP_FAILED) {
+ readWriteBalance = 0;
+ fileMap = nullptr;
}
#endif
}
-void HistoryFile::unmap()
-{
+void HistoryFile::unmap() {
#if defined(Q_OS_WIN)
fileMap = nullptr;
#else
- int result = munmap( fileMap , length );
- Q_ASSERT( result == 0 ); Q_UNUSED( result );
+ int result = munmap(fileMap, length);
+ Q_ASSERT(result == 0);
+ Q_UNUSED(result);
#endif
-
fileMap = nullptr;
}
-bool HistoryFile::isMapped() const
-{
- return (fileMap != nullptr);
+bool HistoryFile::isMapped() const {
+ return (fileMap != nullptr);
}
-void HistoryFile::add(const unsigned char* bytes, int len)
-{
- if ( fileMap )
- unmap();
+void HistoryFile::add(const unsigned char *bytes, int len) {
+ if (fileMap)
+ unmap();
- readWriteBalance++;
+ readWriteBalance++;
- int rc = 0;
+ int rc = 0;
#if defined(Q_OS_WIN)
- tmpFile.seek(length);
- rc = tmpFile.write((const char*)bytes,len);
+ tmpFile.seek(length);
+ rc = tmpFile.write((const char *)bytes, len);
#else
- rc = lseek(ion,length,SEEK_SET); if (rc < 0) { perror("HistoryFile::add.seek"); return; }
- rc = write(ion,bytes,len); if (rc < 0) { perror("HistoryFile::add.write"); return; }
+ rc = lseek(ion, length, SEEK_SET);
+ if (rc < 0) {
+ perror("HistoryFile::add.seek");
+ return;
+ }
+ rc = write(ion, bytes, len);
+ if (rc < 0) {
+ perror("HistoryFile::add.write");
+ return;
+ }
#endif
- length += rc;
-}
-
-void HistoryFile::get(unsigned char* bytes, int len, int loc)
-{
- //count number of get() calls vs. number of add() calls.
- //If there are many more get() calls compared with add()
- //calls (decided by using MAP_THRESHOLD) then mmap the log
- //file to improve performance.
- readWriteBalance--;
- if ( !fileMap && readWriteBalance < MAP_THRESHOLD )
- map();
-
- if ( fileMap )
- {
- for (int i=0;i length)
- fprintf(stderr,"getHist(...,%d,%d): invalid args.\n",len,loc);
-#if defined(Q_OS_WIN)
- tmpFile.seek(loc);
- rc = tmpFile.read((char*)bytes,len);
-#else
- rc = lseek(ion,loc,SEEK_SET); if (rc < 0) { perror("HistoryFile::get.seek"); return; }
- rc = read(ion,bytes,len); if (rc < 0) { perror("HistoryFile::get.read"); return; }
+ length += rc;
+}
+
+void HistoryFile::get(unsigned char *bytes, int len, int loc) {
+ // count number of get() calls vs. number of add() calls.
+ // If there are many more get() calls compared with add()
+ // calls (decided by using MAP_THRESHOLD) then mmap the log
+ // file to improve performance.
+ readWriteBalance--;
+ if (!fileMap && readWriteBalance < MAP_THRESHOLD)
+ map();
+
+ if (fileMap) {
+ for (int i = 0; i < len; i++)
+ bytes[i] = fileMap[loc + i];
+ } else {
+ int rc = 0;
+
+ if (loc < 0 || len < 0 || loc + len > length)
+ fprintf(stderr, "getHist(...,%d,%d): invalid args.\n", len, loc);
+ #if defined(Q_OS_WIN)
+ tmpFile.seek(loc);
+ rc = tmpFile.read((char *)bytes, len);
+ #else
+ rc = lseek(ion, loc, SEEK_SET);
+ if (rc < 0) {
+ perror("HistoryFile::get.seek");
+ return;
+ }
+ rc = read(ion, bytes, len);
+ if (rc < 0) {
+ perror("HistoryFile::get.read");
+ return;
+ }
#endif
- }
+ }
}
-int HistoryFile::len()
-{
- return length;
+int HistoryFile::len() {
+ return length;
}
-
-// History Scroll abstract base class //////////////////////////////////////
-
-
-HistoryScroll::HistoryScroll(HistoryType* t)
- : m_histType(t)
-{
+HistoryScroll::HistoryScroll(HistoryType *t) : m_histType(t) {
}
-HistoryScroll::~HistoryScroll()
-{
- delete m_histType;
+HistoryScroll::~HistoryScroll() {
+ delete m_histType;
}
-bool HistoryScroll::hasScroll()
-{
- return true;
+bool HistoryScroll::hasScroll() {
+ return true;
}
-// History Scroll File //////////////////////////////////////
-
/*
- The history scroll makes a Row(Row(Cell)) from
- two history buffers. The index buffer contains
- start of line positions which refers to the cells
- buffer.
-
- Note that index[0] addresses the second line
- (line #1), while the first line (line #0) starts
- at 0 in cells.
+ The history scroll makes a Row(Row(Cell)) from
+ two history buffers. The index buffer contains
+ start of line positions which refers to the cells
+ buffer.
+
+ Note that index[0] addresses the second line
+ (line #1), while the first line (line #0) starts
+ at 0 in cells.
*/
-
HistoryScrollFile::HistoryScrollFile(const QString &logFileName)
- : HistoryScroll(new HistoryTypeFile(logFileName)),
- m_logFileName(logFileName)
-{
+ : HistoryScroll(new HistoryTypeFile(logFileName))
+ , m_logFileName(logFileName) {
}
-HistoryScrollFile::~HistoryScrollFile()
-{
+HistoryScrollFile::~HistoryScrollFile() {
}
-int HistoryScrollFile::getLines()
-{
- return index.len() / sizeof(int);
+int HistoryScrollFile::getLines() {
+ return index.len() / sizeof(int);
}
-int HistoryScrollFile::getLineLen(int lineno)
-{
- return (startOfLine(lineno+1) - startOfLine(lineno)) / sizeof(Character);
+int HistoryScrollFile::getLineLen(int lineno) {
+ return (startOfLine(lineno + 1) - startOfLine(lineno)) / sizeof(Character);
}
-bool HistoryScrollFile::isWrappedLine(int lineno)
-{
- if (lineno>=0 && lineno <= getLines()) {
- unsigned char flag;
- lineflags.get((unsigned char*)&flag,sizeof(unsigned char),(lineno)*sizeof(unsigned char));
- return flag;
- }
- return false;
+bool HistoryScrollFile::isWrappedLine(int lineno) {
+ if (lineno >= 0 && lineno <= getLines()) {
+ unsigned char flag;
+ lineflags.get((unsigned char *)&flag, sizeof(unsigned char),
+ (lineno) * sizeof(unsigned char));
+ return flag;
+ }
+ return false;
}
-int HistoryScrollFile::startOfLine(int lineno)
-{
- if (lineno <= 0) return 0;
- if (lineno <= getLines())
- {
- if (!index.isMapped())
- index.map();
+int HistoryScrollFile::startOfLine(int lineno) {
+ if (lineno <= 0)
+ return 0;
+ if (lineno <= getLines()) {
+ if (!index.isMapped())
+ index.map();
- int res = 0;
- index.get((unsigned char*)&res,sizeof(int),(lineno-1)*sizeof(int));
- return res;
+ int res = 0;
+ index.get((unsigned char *)&res, sizeof(int), (lineno - 1) * sizeof(int));
+ return res;
}
- return cells.len();
+ return cells.len();
}
-void HistoryScrollFile::getCells(int lineno, int colno, int count, Character res[])
-{
- cells.get((unsigned char*)res,count*sizeof(Character),startOfLine(lineno)+colno*sizeof(Character));
+void HistoryScrollFile::getCells(int lineno, int colno, int count,
+ Character res[]) {
+ cells.get((unsigned char *)res, count * sizeof(Character),
+ startOfLine(lineno) + colno * sizeof(Character));
}
-void HistoryScrollFile::addCells(const Character text[], int count)
-{
- cells.add((unsigned char*)text,count*sizeof(Character));
+void HistoryScrollFile::addCells(const Character text[], int count) {
+ cells.add((unsigned char *)text, count * sizeof(Character));
}
-void HistoryScrollFile::addLine(bool previousWrapped)
-{
- if (index.isMapped())
- index.unmap();
+void HistoryScrollFile::addLine(bool previousWrapped) {
+ if (index.isMapped())
+ index.unmap();
- int locn = cells.len();
- index.add((unsigned char*)&locn,sizeof(int));
- unsigned char flags = previousWrapped ? 0x01 : 0x00;
- lineflags.add((unsigned char*)&flags,sizeof(unsigned char));
+ int locn = cells.len();
+ index.add((unsigned char *)&locn, sizeof(int));
+ unsigned char flags = previousWrapped ? 0x01 : 0x00;
+ lineflags.add((unsigned char *)&flags, sizeof(unsigned char));
}
-
-// History Scroll Buffer //////////////////////////////////////
HistoryScrollBuffer::HistoryScrollBuffer(unsigned int maxLineCount)
- : HistoryScroll(new HistoryTypeBuffer(maxLineCount))
- ,_historyBuffer()
- ,_maxLineCount(0)
- ,_usedLines(0)
- ,_head(0)
-{
- setMaxNbLines(maxLineCount);
+ : HistoryScroll(new HistoryTypeBuffer(maxLineCount)), _historyBuffer(),
+ _maxLineCount(0), _usedLines(0), _head(0) {
+ setMaxNbLines(maxLineCount);
}
-HistoryScrollBuffer::~HistoryScrollBuffer()
-{
- delete[] _historyBuffer;
+HistoryScrollBuffer::~HistoryScrollBuffer() {
+ delete[] _historyBuffer;
}
-void HistoryScrollBuffer::addCellsVector(const QVector& cells)
-{
+void HistoryScrollBuffer::addCellsVector(const QVector &cells) {
_head++;
- if ( _usedLines < _maxLineCount )
+ if (_usedLines < _maxLineCount)
_usedLines++;
- if ( _head >= _maxLineCount )
- {
+ if (_head >= _maxLineCount) {
_head = 0;
}
- _historyBuffer[bufferIndex(_usedLines-1)] = cells;
- _wrappedLine[bufferIndex(_usedLines-1)] = false;
+ _historyBuffer[bufferIndex(_usedLines - 1)] = cells;
+ _wrappedLine[bufferIndex(_usedLines - 1)] = false;
}
-void HistoryScrollBuffer::addCells(const Character a[], int count)
-{
- HistoryLine newLine(count);
- std::copy(a,a+count,newLine.begin());
- addCellsVector(newLine);
+void HistoryScrollBuffer::addCells(const Character a[], int count) {
+ HistoryLine newLine(count);
+ std::copy(a, a + count, newLine.begin());
+
+ addCellsVector(newLine);
}
-void HistoryScrollBuffer::addLine(bool previousWrapped)
-{
- _wrappedLine[bufferIndex(_usedLines-1)] = previousWrapped;
+void HistoryScrollBuffer::addLine(bool previousWrapped) {
+ _wrappedLine[bufferIndex(_usedLines - 1)] = previousWrapped;
}
-int HistoryScrollBuffer::getLines()
-{
- return _usedLines;
+int HistoryScrollBuffer::getLines() {
+ return _usedLines;
}
-int HistoryScrollBuffer::getLineLen(int lineNumber)
-{
- Q_ASSERT( lineNumber >= 0 && lineNumber < _maxLineCount );
+int HistoryScrollBuffer::getLineLen(int lineNumber) {
+ Q_ASSERT(lineNumber >= 0 && lineNumber < _maxLineCount);
- if ( lineNumber < _usedLines )
- {
- return _historyBuffer[bufferIndex(lineNumber)].size();
- }
- else
- {
- return 0;
- }
+ if (lineNumber < _usedLines) {
+ return _historyBuffer[bufferIndex(lineNumber)].size();
+ } else {
+ return 0;
+ }
}
-bool HistoryScrollBuffer::isWrappedLine(int lineNumber)
-{
- Q_ASSERT( lineNumber >= 0 && lineNumber < _maxLineCount );
+bool HistoryScrollBuffer::isWrappedLine(int lineNumber) {
+ Q_ASSERT(lineNumber >= 0 && lineNumber < _maxLineCount);
- if (lineNumber < _usedLines)
- {
- return _wrappedLine[bufferIndex(lineNumber)];
- }
- else
- return false;
+ if (lineNumber < _usedLines) {
+ return _wrappedLine[bufferIndex(lineNumber)];
+ } else
+ return false;
}
-void HistoryScrollBuffer::getCells(int lineNumber, int startColumn, int count, Character buffer[])
-{
- if ( count == 0 ) return;
+void HistoryScrollBuffer::getCells(int lineNumber, int startColumn, int count,
+ Character buffer[]) {
+ if (count == 0)
+ return;
- Q_ASSERT( lineNumber < _maxLineCount );
+ Q_ASSERT(lineNumber < _maxLineCount);
- if (lineNumber >= _usedLines)
- {
- memset(static_cast(buffer), 0, count * sizeof(Character));
- return;
- }
+ if (lineNumber >= _usedLines) {
+ memset(static_cast(buffer), 0, count * sizeof(Character));
+ return;
+ }
- const HistoryLine& line = _historyBuffer[bufferIndex(lineNumber)];
+ const HistoryLine &line = _historyBuffer[bufferIndex(lineNumber)];
- Q_ASSERT( startColumn <= line.size() - count );
+ Q_ASSERT(startColumn <= line.size() - count);
- memcpy(buffer, line.constData() + startColumn , count * sizeof(Character));
+ memcpy(buffer, line.constData() + startColumn, count * sizeof(Character));
}
-void HistoryScrollBuffer::setMaxNbLines(unsigned int lineCount)
-{
- HistoryLine* oldBuffer = _historyBuffer;
- HistoryLine* newBuffer = new HistoryLine[lineCount];
+void HistoryScrollBuffer::setMaxNbLines(unsigned int lineCount) {
+ HistoryLine *oldBuffer = _historyBuffer;
+ HistoryLine *newBuffer = new HistoryLine[lineCount];
- for ( int i = 0 ; i < qMin(_usedLines,(int)lineCount) ; i++ )
- {
+ for (int i = 0; i < qMin(_usedLines, (int)lineCount); i++) {
newBuffer[i] = oldBuffer[bufferIndex(i)];
}
- _usedLines = qMin(_usedLines,(int)lineCount);
+ _usedLines = qMin(_usedLines, (int)lineCount);
_maxLineCount = lineCount;
- _head = ( _usedLines == _maxLineCount ) ? 0 : _usedLines-1;
+ _head = (_usedLines == _maxLineCount) ? 0 : _usedLines - 1;
_historyBuffer = newBuffer;
delete[] oldBuffer;
_wrappedLine.resize(lineCount);
- dynamic_cast(m_histType)->m_nbLines = lineCount;
+ dynamic_cast(m_histType)->m_nbLines = lineCount;
}
-int HistoryScrollBuffer::bufferIndex(int lineNumber) const
-{
- Q_ASSERT( lineNumber >= 0 );
- Q_ASSERT( lineNumber < _maxLineCount );
- Q_ASSERT( (_usedLines == _maxLineCount) || lineNumber <= _head );
+int HistoryScrollBuffer::bufferIndex(int lineNumber) const {
+ Q_ASSERT(lineNumber >= 0);
+ Q_ASSERT(lineNumber < _maxLineCount);
+ Q_ASSERT((_usedLines == _maxLineCount) || lineNumber <= _head);
- if ( _usedLines == _maxLineCount )
- {
- return (_head+lineNumber+1) % _maxLineCount;
- }
- else
- {
+ if (_usedLines == _maxLineCount) {
+ return (_head + lineNumber + 1) % _maxLineCount;
+ } else {
return lineNumber;
}
}
-
-// History Scroll None //////////////////////////////////////
-
-HistoryScrollNone::HistoryScrollNone()
- : HistoryScroll(new HistoryTypeNone())
-{
-}
-
-HistoryScrollNone::~HistoryScrollNone()
-{
-}
-
-bool HistoryScrollNone::hasScroll()
-{
- return false;
-}
-
-int HistoryScrollNone::getLines()
-{
- return 0;
-}
-
-int HistoryScrollNone::getLineLen(int)
-{
- return 0;
-}
-
-bool HistoryScrollNone::isWrappedLine(int /*lineno*/)
-{
- return false;
-}
-
-void HistoryScrollNone::getCells(int, int, int, Character [])
-{
-}
-
-void HistoryScrollNone::addCells(const Character [], int)
-{
-}
-
-void HistoryScrollNone::addLine(bool)
-{
-}
-
-// History Scroll BlockArray //////////////////////////////////////
+HistoryScrollNone::HistoryScrollNone() : HistoryScroll(new HistoryTypeNone()) {}
+HistoryScrollNone::~HistoryScrollNone() {}
+bool HistoryScrollNone::hasScroll() { return false; }
+int HistoryScrollNone::getLines() { return 0; }
+int HistoryScrollNone::getLineLen(int) { return 0; }
+bool HistoryScrollNone::isWrappedLine(int /*lineno*/) { return false; }
+void HistoryScrollNone::getCells(int, int, int, Character[]) {}
+void HistoryScrollNone::addCells(const Character[], int) {}
+void HistoryScrollNone::addLine(bool) {}
HistoryScrollBlockArray::HistoryScrollBlockArray(size_t size)
- : HistoryScroll(new HistoryTypeBlockArray(size))
-{
- m_blockArray.setHistorySize(size); // nb. of lines.
+ : HistoryScroll(new HistoryTypeBlockArray(size)) {
+ m_blockArray.setHistorySize(size); // nb. of lines.
}
-HistoryScrollBlockArray::~HistoryScrollBlockArray()
-{
+HistoryScrollBlockArray::~HistoryScrollBlockArray() {
}
-int HistoryScrollBlockArray::getLines()
-{
- return m_lineLengths.count();
+int HistoryScrollBlockArray::getLines() {
+ return m_lineLengths.count();
}
-int HistoryScrollBlockArray::getLineLen(int lineno)
-{
- if ( m_lineLengths.contains(lineno) )
+int HistoryScrollBlockArray::getLineLen(int lineno) {
+ if (m_lineLengths.contains(lineno))
return m_lineLengths[lineno];
else
return 0;
}
-bool HistoryScrollBlockArray::isWrappedLine(int /*lineno*/)
-{
- return false;
+bool HistoryScrollBlockArray::isWrappedLine(int /*lineno*/) {
+ return false;
}
-void HistoryScrollBlockArray::getCells(int lineno, int colno,
- int count, Character res[])
-{
- if (!count) return;
+void HistoryScrollBlockArray::getCells(int lineno, int colno, int count,
+ Character res[]) {
+ if (!count)
+ return;
- const Block *b = m_blockArray.at(lineno);
+ const Block *b = m_blockArray.at(lineno);
- if (!b) {
- memset(static_cast(res), 0, count * sizeof(Character)); // still better than random data
- return;
- }
+ if (!b) {
+ memset(static_cast(res), 0,
+ count * sizeof(Character)); // still better than random data
+ return;
+ }
- Q_ASSERT(((colno + count) * sizeof(Character)) < ENTRIES);
- memcpy(res, b->data + (colno * sizeof(Character)), count * sizeof(Character));
+ Q_ASSERT(((colno + count) * sizeof(Character)) < ENTRIES);
+ memcpy(res, b->data + (colno * sizeof(Character)), count * sizeof(Character));
}
-void HistoryScrollBlockArray::addCells(const Character a[], int count)
-{
- Block *b = m_blockArray.lastBlock();
-
- if (!b) return;
+void HistoryScrollBlockArray::addCells(const Character a[], int count) {
+ Block *b = m_blockArray.lastBlock();
- // put cells in block's data
- Q_ASSERT((count * sizeof(Character)) < ENTRIES);
+ if (!b)
+ return;
- memset(b->data, 0, sizeof(b->data));
+ // put cells in block's data
+ Q_ASSERT((count * sizeof(Character)) < ENTRIES);
- memcpy(b->data, a, count * sizeof(Character));
- b->size = count * sizeof(Character);
+ memset(b->data, 0, sizeof(b->data));
- size_t res = m_blockArray.newBlock();
- Q_ASSERT(res > 0);
- Q_UNUSED( res );
+ memcpy(b->data, a, count * sizeof(Character));
+ b->size = count * sizeof(Character);
- m_lineLengths.insert(m_blockArray.getCurrent(), count);
-}
+ size_t res = m_blockArray.newBlock();
+ Q_ASSERT(res > 0);
+ Q_UNUSED(res);
-void HistoryScrollBlockArray::addLine(bool)
-{
+ m_lineLengths.insert(m_blockArray.getCurrent(), count);
}
-////////////////////////////////////////////////////////////////
-// Compact History Scroll //////////////////////////////////////
-////////////////////////////////////////////////////////////////
-void* CompactHistoryBlock::allocate ( size_t length )
-{
- Q_ASSERT ( length > 0 );
- if ( tail-blockStart+length > blockLength )
- return nullptr;
-
- void* block = tail;
- tail += length;
- allocCount++;
- return block;
+void HistoryScrollBlockArray::addLine(bool) {
}
-void CompactHistoryBlock::deallocate ( )
-{
- allocCount--;
- Q_ASSERT ( allocCount >= 0 );
-}
+void *CompactHistoryBlock::allocate(size_t length) {
+ Q_ASSERT(length > 0);
+ if (tail - blockStart + length > blockLength)
+ return nullptr;
-void* CompactHistoryBlockList::allocate(size_t size)
-{
- CompactHistoryBlock* block;
- if ( list.isEmpty() || list.last()->remaining() < size)
- {
- block = new CompactHistoryBlock();
- list.append ( block );
- }
- else
- {
- block = list.last();
- }
- return block->allocate(size);
+ void *block = tail;
+ tail += length;
+ allocCount++;
+ return block;
}
-void CompactHistoryBlockList::deallocate(void* ptr)
-{
- Q_ASSERT( !list.isEmpty());
-
- int i=0;
- CompactHistoryBlock *block = list.at(i);
- while ( icontains(ptr) )
- {
- i++;
- block=list.at(i);
- }
-
- Q_ASSERT( ideallocate();
-
- if (!block->isInUse())
- {
- list.removeAt(i);
- delete block;
- }
+void CompactHistoryBlock::deallocate() {
+ allocCount--;
+ Q_ASSERT(allocCount >= 0);
}
-CompactHistoryBlockList::~CompactHistoryBlockList()
-{
- qDeleteAll ( list.begin(), list.end() );
- list.clear();
-}
-
-void* CompactHistoryLine::operator new (size_t size, CompactHistoryBlockList& blockList)
-{
- return blockList.allocate(size);
-}
-
-CompactHistoryLine::CompactHistoryLine ( const TextLine& line, CompactHistoryBlockList& bList )
- : blockList(bList),
- formatLength(0)
-{
- length=line.size();
-
- if (!line.empty()) {
- formatLength=1;
- int k=1;
-
- // count number of different formats in this text line
- Character c = line[0];
- while ( kremaining() < size) {
+ block = new CompactHistoryBlock();
+ list.append(block);
+ } else {
+ block = list.last();
}
- }
+ return block->allocate(size);
}
-CompactHistoryLine::~CompactHistoryLine()
-{
- if (length>0) {
- blockList.deallocate(text);
- blockList.deallocate(formatArray);
- }
- blockList.deallocate(this);
-}
+void CompactHistoryBlockList::deallocate(void *ptr) {
+ Q_ASSERT(!list.isEmpty());
-void CompactHistoryLine::getCharacter ( int index, Character &r )
-{
- Q_ASSERT ( index < length );
- int formatPos=0;
- while ( ( formatPos+1 ) < formatLength && index >= formatArray[formatPos+1].startPos )
- formatPos++;
+ int i = 0;
+ CompactHistoryBlock *block = list.at(i);
+ while (i < list.size() && !block->contains(ptr)) {
+ i++;
+ block = list.at(i);
+ }
- r.character=text[index];
- r.rendition = formatArray[formatPos].rendition;
- r.foregroundColor = formatArray[formatPos].fgColor;
- r.backgroundColor = formatArray[formatPos].bgColor;
-}
+ Q_ASSERT(i < list.size());
-void CompactHistoryLine::getCharacters ( Character* array, int length, int startColumn )
-{
- Q_ASSERT ( startColumn >= 0 && length >= 0 );
- Q_ASSERT ( startColumn+length <= ( int ) getLength() );
+ block->deallocate();
- for ( int i=startColumn; iisInUse()) {
+ list.removeAt(i);
+ delete block;
+ }
}
-CompactHistoryScroll::CompactHistoryScroll ( unsigned int maxLineCount )
- : HistoryScroll ( new CompactHistoryType ( maxLineCount ) )
- ,lines()
- ,blockList()
-{
- setMaxNbLines ( maxLineCount );
+CompactHistoryBlockList::~CompactHistoryBlockList() {
+ qDeleteAll(list.begin(), list.end());
+ list.clear();
+}
+
+void *CompactHistoryLine::operator new(size_t size, CompactHistoryBlockList &blockList) {
+ return blockList.allocate(size);
+}
+
+CompactHistoryLine::CompactHistoryLine(const TextLine &line,
+ CompactHistoryBlockList &bList)
+ : blockList(bList), formatLength(0) {
+ length = line.size();
+
+ if (!line.empty()) {
+ formatLength = 1;
+ int k = 1;
+
+ // count number of different formats in this text line
+ Character c = line[0];
+ while (k < length) {
+ if (!(line[k].equalsFormat(c))) {
+ formatLength++; // format change detected
+ c = line[k];
+ }
+ k++;
+ }
+
+ formatArray = (CharacterFormat *)blockList.allocate(
+ sizeof(CharacterFormat) * formatLength);
+ Q_ASSERT(formatArray != nullptr);
+ text = (quint16 *)blockList.allocate(sizeof(quint16) * line.size());
+ Q_ASSERT(text != nullptr);
+
+ length = line.size();
+ wrapped = false;
+
+ // record formats and their positions in the format array
+ c = line[0];
+ formatArray[0].setFormat(c);
+ formatArray[0].startPos = 0; // there's always at least 1 format (for the
+ // entire line, unless a change happens)
+
+ k = 1; // look for possible format changes
+ int j = 1;
+ while (k < length && j < formatLength) {
+ if (!(line[k].equalsFormat(c))) {
+ c = line[k];
+ formatArray[j].setFormat(c);
+ formatArray[j].startPos = k;
+ j++;
+ }
+ k++;
+ }
+
+ // copy character values
+ for (int i = 0; i < line.size(); i++) {
+ text[i] = line[i].character;
+ }
+ }
}
-CompactHistoryScroll::~CompactHistoryScroll()
-{
- qDeleteAll ( lines.begin(), lines.end() );
- lines.clear();
+CompactHistoryLine::~CompactHistoryLine() {
+ if (length > 0) {
+ blockList.deallocate(text);
+ blockList.deallocate(formatArray);
+ }
+ blockList.deallocate(this);
}
-void CompactHistoryScroll::addCellsVector ( const TextLine& cells )
-{
- CompactHistoryLine *line;
- line = new(blockList) CompactHistoryLine ( cells, blockList );
-
- if ( lines.size() > ( int ) _maxLineCount )
- {
- delete lines.takeAt ( 0 );
- }
- lines.append ( line );
-}
+void CompactHistoryLine::getCharacter(int index, Character &r) {
+ Q_ASSERT(index < length);
+ int formatPos = 0;
+ while ((formatPos + 1) < formatLength &&
+ index >= formatArray[formatPos + 1].startPos)
+ formatPos++;
-void CompactHistoryScroll::addCells ( const Character a[], int count )
-{
- TextLine newLine ( count );
- std::copy ( a,a+count,newLine.begin() );
- addCellsVector ( newLine );
+ r.character = text[index];
+ r.rendition = formatArray[formatPos].rendition;
+ r.foregroundColor = formatArray[formatPos].fgColor;
+ r.backgroundColor = formatArray[formatPos].bgColor;
}
-void CompactHistoryScroll::addLine ( bool previousWrapped )
-{
- CompactHistoryLine *line = lines.last();
- line->setWrapped(previousWrapped);
-}
+void CompactHistoryLine::getCharacters(Character *array, int length,
+ int startColumn) {
+ Q_ASSERT(startColumn >= 0 && length >= 0);
+ Q_ASSERT(startColumn + length <= (int)getLength());
-int CompactHistoryScroll::getLines()
-{
- return lines.size();
+ for (int i = startColumn; i < length + startColumn; i++) {
+ getCharacter(i, array[i - startColumn]);
+ }
}
-int CompactHistoryScroll::getLineLen ( int lineNumber )
-{
- Q_ASSERT ( lineNumber >= 0 && lineNumber < lines.size() );
- CompactHistoryLine* line = lines[lineNumber];
- return line->getLength();
+CompactHistoryScroll::CompactHistoryScroll(unsigned int maxLineCount)
+ : HistoryScroll(new CompactHistoryType(maxLineCount)), lines(),
+ blockList() {
+ setMaxNbLines(maxLineCount);
}
-
-void CompactHistoryScroll::getCells ( int lineNumber, int startColumn, int count, Character buffer[] )
-{
- if ( count == 0 ) return;
- Q_ASSERT ( lineNumber < lines.size() );
- CompactHistoryLine* line = lines[lineNumber];
- Q_ASSERT ( startColumn >= 0 );
- Q_ASSERT ( (unsigned int)startColumn <= line->getLength() - count );
- line->getCharacters ( buffer, count, startColumn );
+CompactHistoryScroll::~CompactHistoryScroll() {
+ qDeleteAll(lines.begin(), lines.end());
+ lines.clear();
}
-void CompactHistoryScroll::setMaxNbLines ( unsigned int lineCount )
-{
- _maxLineCount = lineCount;
+void CompactHistoryScroll::addCellsVector(const TextLine &cells) {
+ CompactHistoryLine *line;
+ line = new (blockList) CompactHistoryLine(cells, blockList);
- while (lines.size() > (int) lineCount) {
- delete lines.takeAt(0);
- }
+ if (lines.size() > (int)_maxLineCount) {
+ delete lines.takeAt(0);
+ }
+ lines.append(line);
}
-bool CompactHistoryScroll::isWrappedLine ( int lineNumber )
-{
- Q_ASSERT ( lineNumber < lines.size() );
- return lines[lineNumber]->isWrapped();
+void CompactHistoryScroll::addCells(const Character a[], int count) {
+ TextLine newLine(count);
+ std::copy(a, a + count, newLine.begin());
+ addCellsVector(newLine);
}
-
-//////////////////////////////////////////////////////////////////////
-// History Types
-//////////////////////////////////////////////////////////////////////
-
-HistoryType::HistoryType()
-{
+void CompactHistoryScroll::addLine(bool previousWrapped) {
+ CompactHistoryLine *line = lines.last();
+ line->setWrapped(previousWrapped);
}
-HistoryType::~HistoryType()
-{
+int CompactHistoryScroll::getLines() {
+ return lines.size();
}
-//////////////////////////////
-
-HistoryTypeNone::HistoryTypeNone()
-{
+int CompactHistoryScroll::getLineLen(int lineNumber) {
+ Q_ASSERT(lineNumber >= 0 && lineNumber < lines.size());
+ CompactHistoryLine *line = lines[lineNumber];
+ return line->getLength();
}
-bool HistoryTypeNone::isEnabled() const
-{
- return false;
+void CompactHistoryScroll::getCells(int lineNumber, int startColumn, int count,
+ Character buffer[]) {
+ if (count == 0)
+ return;
+ Q_ASSERT(lineNumber < lines.size());
+ CompactHistoryLine *line = lines[lineNumber];
+ Q_ASSERT(startColumn >= 0);
+ Q_ASSERT((unsigned int)startColumn <= line->getLength() - count);
+ line->getCharacters(buffer, count, startColumn);
}
-HistoryScroll* HistoryTypeNone::scroll(HistoryScroll *old) const
-{
- delete old;
- return new HistoryScrollNone();
-}
+void CompactHistoryScroll::setMaxNbLines(unsigned int lineCount) {
+ _maxLineCount = lineCount;
-int HistoryTypeNone::maximumLineCount() const
-{
- return 0;
+ while (lines.size() > (int)lineCount) {
+ delete lines.takeAt(0);
+ }
}
-//////////////////////////////
-
-HistoryTypeBlockArray::HistoryTypeBlockArray(size_t size)
- : m_size(size)
-{
+bool CompactHistoryScroll::isWrappedLine(int lineNumber) {
+ Q_ASSERT(lineNumber < lines.size());
+ return lines[lineNumber]->isWrapped();
}
-bool HistoryTypeBlockArray::isEnabled() const
-{
- return true;
+HistoryType::HistoryType() {}
+HistoryType::~HistoryType() {}
+HistoryTypeNone::HistoryTypeNone() {}
+bool HistoryTypeNone::isEnabled() const { return false; }
+HistoryScroll *HistoryTypeNone::scroll(HistoryScroll *old) const {
+ delete old;
+ return new HistoryScrollNone();
}
+int HistoryTypeNone::maximumLineCount() const { return 0; }
-int HistoryTypeBlockArray::maximumLineCount() const
-{
- return m_size;
-}
-HistoryScroll* HistoryTypeBlockArray::scroll(HistoryScroll *old) const
-{
- delete old;
- return new HistoryScrollBlockArray(m_size);
+HistoryTypeBlockArray::HistoryTypeBlockArray(size_t size) : m_size(size) {}
+bool HistoryTypeBlockArray::isEnabled() const { return true; }
+int HistoryTypeBlockArray::maximumLineCount() const { return m_size; }
+HistoryScroll *HistoryTypeBlockArray::scroll(HistoryScroll *old) const {
+ delete old;
+ return new HistoryScrollBlockArray(m_size);
}
-
-//////////////////////////////
-
HistoryTypeBuffer::HistoryTypeBuffer(unsigned int nbLines)
- : m_nbLines(nbLines)
-{
-}
-
-bool HistoryTypeBuffer::isEnabled() const
-{
- return true;
-}
-
-int HistoryTypeBuffer::maximumLineCount() const
-{
- return m_nbLines;
+ : m_nbLines(nbLines) {}
+bool HistoryTypeBuffer::isEnabled() const { return true; }
+int HistoryTypeBuffer::maximumLineCount() const { return m_nbLines; }
+HistoryScroll *HistoryTypeBuffer::scroll(HistoryScroll *old) const {
+ if (old) {
+ HistoryScrollBuffer *oldBuffer = dynamic_cast(old);
+ if (oldBuffer) {
+ oldBuffer->setMaxNbLines(m_nbLines);
+ return oldBuffer;
+ }
+
+ HistoryScroll *newScroll = new HistoryScrollBuffer(m_nbLines);
+ int lines = old->getLines();
+ int startLine = 0;
+ if (lines > (int)m_nbLines)
+ startLine = lines - m_nbLines;
+
+ Character line[LINE_SIZE];
+ for (int i = startLine; i < lines; i++) {
+ int size = old->getLineLen(i);
+ if (size > LINE_SIZE) {
+ Character *tmp_line = new Character[size];
+ old->getCells(i, 0, size, tmp_line);
+ newScroll->addCells(tmp_line, size);
+ newScroll->addLine(old->isWrappedLine(i));
+ delete[] tmp_line;
+ } else {
+ old->getCells(i, 0, size, line);
+ newScroll->addCells(line, size);
+ newScroll->addLine(old->isWrappedLine(i));
+ }
+ }
+ delete old;
+ return newScroll;
+ }
+ return new HistoryScrollBuffer(m_nbLines);
}
-HistoryScroll* HistoryTypeBuffer::scroll(HistoryScroll *old) const
-{
- if (old)
- {
- HistoryScrollBuffer *oldBuffer = dynamic_cast(old);
- if (oldBuffer)
- {
- oldBuffer->setMaxNbLines(m_nbLines);
- return oldBuffer;
- }
+HistoryTypeFile::HistoryTypeFile(const QString &fileName)
+ : m_fileName(fileName) {}
+bool HistoryTypeFile::isEnabled() const { return true; }
+const QString &HistoryTypeFile::getFileName() const { return m_fileName; }
+HistoryScroll *HistoryTypeFile::scroll(HistoryScroll *old) const {
+ if (dynamic_cast(old))
+ return old; // Unchanged.
- HistoryScroll *newScroll = new HistoryScrollBuffer(m_nbLines);
- int lines = old->getLines();
- int startLine = 0;
- if (lines > (int) m_nbLines)
- startLine = lines - m_nbLines;
+ HistoryScroll *newScroll = new HistoryScrollFile(m_fileName);
Character line[LINE_SIZE];
- for(int i = startLine; i < lines; i++)
- {
- int size = old->getLineLen(i);
- if (size > LINE_SIZE)
- {
- Character *tmp_line = new Character[size];
- old->getCells(i, 0, size, tmp_line);
- newScroll->addCells(tmp_line, size);
- newScroll->addLine(old->isWrappedLine(i));
- delete [] tmp_line;
- }
- else
- {
- old->getCells(i, 0, size, line);
- newScroll->addCells(line, size);
- newScroll->addLine(old->isWrappedLine(i));
- }
+ int lines = (old != nullptr) ? old->getLines() : 0;
+ for (int i = 0; i < lines; i++) {
+ int size = old->getLineLen(i);
+ if (size > LINE_SIZE) {
+ Character *tmp_line = new Character[size];
+ old->getCells(i, 0, size, tmp_line);
+ newScroll->addCells(tmp_line, size);
+ newScroll->addLine(old->isWrappedLine(i));
+ delete[] tmp_line;
+ } else {
+ old->getCells(i, 0, size, line);
+ newScroll->addCells(line, size);
+ newScroll->addLine(old->isWrappedLine(i));
+ }
}
+
delete old;
return newScroll;
- }
- return new HistoryScrollBuffer(m_nbLines);
}
-
-//////////////////////////////
-
-HistoryTypeFile::HistoryTypeFile(const QString& fileName)
- : m_fileName(fileName)
-{
-}
-
-bool HistoryTypeFile::isEnabled() const
-{
- return true;
-}
-
-const QString& HistoryTypeFile::getFileName() const
-{
- return m_fileName;
-}
-
-HistoryScroll* HistoryTypeFile::scroll(HistoryScroll *old) const
-{
- if (dynamic_cast(old))
- return old; // Unchanged.
-
- HistoryScroll *newScroll = new HistoryScrollFile(m_fileName);
-
- Character line[LINE_SIZE];
- int lines = (old != nullptr) ? old->getLines() : 0;
- for(int i = 0; i < lines; i++)
- {
- int size = old->getLineLen(i);
- if (size > LINE_SIZE)
- {
- Character *tmp_line = new Character[size];
- old->getCells(i, 0, size, tmp_line);
- newScroll->addCells(tmp_line, size);
- newScroll->addLine(old->isWrappedLine(i));
- delete [] tmp_line;
- }
- else
- {
- old->getCells(i, 0, size, line);
- newScroll->addCells(line, size);
- newScroll->addLine(old->isWrappedLine(i));
- }
- }
-
- delete old;
- return newScroll;
-}
-
-int HistoryTypeFile::maximumLineCount() const
-{
- return 0;
-}
-
-//////////////////////////////
-
-CompactHistoryType::CompactHistoryType ( unsigned int nbLines )
- : m_nbLines ( nbLines )
-{
-}
-
-bool CompactHistoryType::isEnabled() const
-{
- return true;
-}
-
-int CompactHistoryType::maximumLineCount() const
-{
- return m_nbLines;
-}
-
-HistoryScroll* CompactHistoryType::scroll ( HistoryScroll *old ) const
-{
- if ( old )
- {
- CompactHistoryScroll *oldBuffer = dynamic_cast ( old );
- if ( oldBuffer )
- {
- oldBuffer->setMaxNbLines ( m_nbLines );
- return oldBuffer;
+int HistoryTypeFile::maximumLineCount() const { return 0; }
+
+
+CompactHistoryType::CompactHistoryType(unsigned int nbLines)
+ : m_nbLines(nbLines) {}
+bool CompactHistoryType::isEnabled() const { return true; }
+int CompactHistoryType::maximumLineCount() const { return m_nbLines; }
+HistoryScroll *CompactHistoryType::scroll(HistoryScroll *old) const {
+ if (old) {
+ CompactHistoryScroll *oldBuffer = dynamic_cast(old);
+ if (oldBuffer) {
+ oldBuffer->setMaxNbLines(m_nbLines);
+ return oldBuffer;
+ }
+ delete old;
}
- delete old;
- }
- return new CompactHistoryScroll ( m_nbLines );
+ return new CompactHistoryScroll(m_nbLines);
}
diff --git a/lib/qtermwidget/History.h b/lib/qtermwidget/History.h
index 0a3cb7d2..63f8d0d3 100644
--- a/lib/qtermwidget/History.h
+++ b/lib/qtermwidget/History.h
@@ -1,25 +1,24 @@
/*
- This file is part of Konsole, an X terminal.
- Copyright 1997,1998 by Lars Doelle
-
- 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.
+ This file is part of Konsole, an X terminal.
+ Copyright 1997,1998 by Lars Doelle
+
+ 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 TEHISTORY_H
-#define TEHISTORY_H
+#ifndef HISTORY_H
+#define HISTORY_H
#include
#include
@@ -44,37 +43,36 @@
class HistoryFile
{
public:
- HistoryFile();
- virtual ~HistoryFile();
-
- virtual void add(const unsigned char* bytes, int len);
- virtual void get(unsigned char* bytes, int len, int loc);
- virtual int len();
+ HistoryFile();
+ virtual ~HistoryFile();
- //mmaps the file in read-only mode
- void map();
- //un-mmaps the file
- void unmap();
- //returns true if the file is mmap'ed
- bool isMapped() const;
+ virtual void add(const unsigned char* bytes, int len);
+ virtual void get(unsigned char* bytes, int len, int loc);
+ virtual int len();
+ //mmaps the file in read-only mode
+ void map();
+ //un-mmaps the file
+ void unmap();
+ //returns true if the file is mmap'ed
+ bool isMapped() const;
private:
- int ion;
- int length;
- QTemporaryFile tmpFile;
+ int ion;
+ int length;
+ QTemporaryFile tmpFile;
- //pointer to start of mmap'ed file data, or 0 if the file is not mmap'ed
- char* fileMap;
+ //pointer to start of mmap'ed file data, or 0 if the file is not mmap'ed
+ char* fileMap;
- //incremented whenever 'add' is called and decremented whenever
- //'get' is called.
- //this is used to detect when a large number of lines are being read and processed from the history
- //and automatically mmap the file for better performance (saves the overhead of many lseek-read calls).
- int readWriteBalance = 0;
+ //incremented whenever 'add' is called and decremented whenever
+ //'get' is called.
+ //this is used to detect when a large number of lines are being read and processed from the history
+ //and automatically mmap the file for better performance (saves the overhead of many lseek-read calls).
+ int readWriteBalance = 0;
- //when readWriteBalance goes below this threshold, the file will be mmap'ed automatically
- static const int MAP_THRESHOLD = -1000;
+ //when readWriteBalance goes below this threshold, the file will be mmap'ed automatically
+ static const int MAP_THRESHOLD = -1000;
};
#endif
@@ -84,378 +82,340 @@ class HistoryFile
// Abstract base class for file and buffer versions
//////////////////////////////////////////////////////////////////////
class HistoryType;
-
class HistoryScroll
{
public:
- HistoryScroll(HistoryType*);
- virtual ~HistoryScroll();
-
- virtual bool hasScroll();
-
- // access to history
- virtual int getLines() = 0;
- virtual int getLineLen(int lineno) = 0;
- virtual void getCells(int lineno, int colno, int count, Character res[]) = 0;
- virtual bool isWrappedLine(int lineno) = 0;
-
- // backward compatibility (obsolete)
- Character getCell(int lineno, int colno) { Character res; getCells(lineno,colno,1,&res); return res; }
-
- // adding lines.
- virtual void addCells(const Character a[], int count) = 0;
- // convenience method - this is virtual so that subclasses can take advantage
- // of QVector's implicit copying
- virtual void addCellsVector(const QVector& cells)
- {
- addCells(cells.data(),cells.size());
- }
-
- virtual void addLine(bool previousWrapped=false) = 0;
-
- //
- // FIXME: Passing around constant references to HistoryType instances
- // is very unsafe, because those references will no longer
- // be valid if the history scroll is deleted.
- //
- const HistoryType& getType() const { return *m_histType; }
+ HistoryScroll(HistoryType*);
+ virtual ~HistoryScroll();
+
+ virtual bool hasScroll();
+
+ // access to history
+ virtual int getLines() = 0;
+ virtual int getLineLen(int lineno) = 0;
+ virtual void getCells(int lineno, int colno, int count, Character res[]) = 0;
+ virtual bool isWrappedLine(int lineno) = 0;
+
+ // backward compatibility (obsolete)
+ Character getCell(int lineno, int colno) { Character res; getCells(lineno,colno,1,&res); return res; }
+
+ // adding lines.
+ virtual void addCells(const Character a[], int count) = 0;
+ // convenience method - this is virtual so that subclasses can take advantage
+ // of QVector's implicit copying
+ virtual void addCellsVector(const QVector& cells) {
+ addCells(cells.data(),cells.size());
+ }
+
+ virtual void addLine(bool previousWrapped=false) = 0;
+
+ //
+ // FIXME: Passing around constant references to HistoryType instances
+ // is very unsafe, because those references will no longer
+ // be valid if the history scroll is deleted.
+ //
+ const HistoryType& getType() const { return *m_histType; }
protected:
- HistoryType* m_histType;
+ HistoryType* m_histType;
};
#if 1
-//////////////////////////////////////////////////////////////////////
-// File-based history (e.g. file log, no limitation in length)
-//////////////////////////////////////////////////////////////////////
-
class HistoryScrollFile : public HistoryScroll
{
public:
- HistoryScrollFile(const QString &logFileName);
- ~HistoryScrollFile() override;
+ HistoryScrollFile(const QString &logFileName);
+ ~HistoryScrollFile() override;
- int getLines() override;
- int getLineLen(int lineno) override;
- void getCells(int lineno, int colno, int count, Character res[]) override;
- bool isWrappedLine(int lineno) override;
+ int getLines() override;
+ int getLineLen(int lineno) override;
+ void getCells(int lineno, int colno, int count, Character res[]) override;
+ bool isWrappedLine(int lineno) override;
- void addCells(const Character a[], int count) override;
- void addLine(bool previousWrapped=false) override;
+ void addCells(const Character a[], int count) override;
+ void addLine(bool previousWrapped=false) override;
private:
- int startOfLine(int lineno);
+ int startOfLine(int lineno);
- QString m_logFileName;
- HistoryFile index; // lines Row(int)
- HistoryFile cells; // text Row(Character)
- HistoryFile lineflags; // flags Row(unsigned char)
+ QString m_logFileName;
+ HistoryFile index; // lines Row(int)
+ HistoryFile cells; // text Row(Character)
+ HistoryFile lineflags; // flags Row(unsigned char)
};
-//////////////////////////////////////////////////////////////////////
-// Buffer-based history (limited to a fixed nb of lines)
-//////////////////////////////////////////////////////////////////////
class HistoryScrollBuffer : public HistoryScroll
{
public:
- typedef QVector HistoryLine;
-
- HistoryScrollBuffer(unsigned int maxNbLines = 1000);
- ~HistoryScrollBuffer() override;
+ typedef QVector HistoryLine;
- int getLines() override;
- int getLineLen(int lineno) override;
- void getCells(int lineno, int colno, int count, Character res[]) override;
- bool isWrappedLine(int lineno) override;
+ HistoryScrollBuffer(unsigned int maxNbLines = 1000);
+ ~HistoryScrollBuffer() override;
- void addCells(const Character a[], int count) override;
- void addCellsVector(const QVector& cells) override;
- void addLine(bool previousWrapped=false) override;
+ int getLines() override;
+ int getLineLen(int lineno) override;
+ void getCells(int lineno, int colno, int count, Character res[]) override;
+ bool isWrappedLine(int lineno) override;
- void setMaxNbLines(unsigned int nbLines);
- unsigned int maxNbLines() const { return _maxLineCount; }
+ void addCells(const Character a[], int count) override;
+ void addCellsVector(const QVector& cells) override;
+ void addLine(bool previousWrapped=false) override;
+ void setMaxNbLines(unsigned int nbLines);
+ unsigned int maxNbLines() const { return _maxLineCount; }
private:
- int bufferIndex(int lineNumber) const;
-
- HistoryLine* _historyBuffer;
- QBitArray _wrappedLine;
- int _maxLineCount;
- int _usedLines;
- int _head;
-
- //QVector m_histBuffer;
- //QBitArray m_wrappedLine;
- //unsigned int m_maxNbLines;
- //unsigned int m_nbLines;
- //unsigned int m_arrayIndex;
- //bool m_buffFilled;
+ int bufferIndex(int lineNumber) const;
+
+ HistoryLine* _historyBuffer;
+ QBitArray _wrappedLine;
+ int _maxLineCount;
+ int _usedLines;
+ int _head;
+
+ //QVector m_histBuffer;
+ //QBitArray m_wrappedLine;
+ //unsigned int m_maxNbLines;
+ //unsigned int m_nbLines;
+ //unsigned int m_arrayIndex;
+ //bool m_buffFilled;
};
-/*class HistoryScrollBufferV2 : public HistoryScroll
-{
-public:
- virtual int getLines();
- virtual int getLineLen(int lineno);
- virtual void getCells(int lineno, int colno, int count, Character res[]);
- virtual bool isWrappedLine(int lineno);
-
- virtual void addCells(const Character a[], int count);
- virtual void addCells(const QVector& cells);
- virtual void addLine(bool previousWrapped=false);
-
-};*/
-
#endif
-//////////////////////////////////////////////////////////////////////
-// Nothing-based history (no history :-)
-//////////////////////////////////////////////////////////////////////
class HistoryScrollNone : public HistoryScroll
{
public:
- HistoryScrollNone();
- ~HistoryScrollNone() override;
+ HistoryScrollNone();
+ ~HistoryScrollNone() override;
- bool hasScroll() override;
+ bool hasScroll() override;
- int getLines() override;
- int getLineLen(int lineno) override;
- void getCells(int lineno, int colno, int count, Character res[]) override;
- bool isWrappedLine(int lineno) override;
+ int getLines() override;
+ int getLineLen(int lineno) override;
+ void getCells(int lineno, int colno, int count, Character res[]) override;
+ bool isWrappedLine(int lineno) override;
- void addCells(const Character a[], int count) override;
- void addLine(bool previousWrapped=false) override;
+ void addCells(const Character a[], int count) override;
+ void addLine(bool previousWrapped=false) override;
};
-//////////////////////////////////////////////////////////////////////
-// BlockArray-based history
-//////////////////////////////////////////////////////////////////////
class HistoryScrollBlockArray : public HistoryScroll
{
public:
- HistoryScrollBlockArray(size_t size);
- ~HistoryScrollBlockArray() override;
+ HistoryScrollBlockArray(size_t size);
+ ~HistoryScrollBlockArray() override;
- int getLines() override;
- int getLineLen(int lineno) override;
- void getCells(int lineno, int colno, int count, Character res[]) override;
- bool isWrappedLine(int lineno) override;
+ int getLines() override;
+ int getLineLen(int lineno) override;
+ void getCells(int lineno, int colno, int count, Character res[]) override;
+ bool isWrappedLine(int lineno) override;
- void addCells(const Character a[], int count) override;
- void addLine(bool previousWrapped=false) override;
+ void addCells(const Character a[], int count) override;
+ void addLine(bool previousWrapped=false) override;
protected:
- BlockArray m_blockArray;
- QHash m_lineLengths;
+ BlockArray m_blockArray;
+ QHash m_lineLengths;
};
-//////////////////////////////////////////////////////////////////////
-// History using compact storage
-// This implementation uses a list of fixed-sized blocks
-// where history lines are allocated in (avoids heap fragmentation)
-//////////////////////////////////////////////////////////////////////
typedef QVector TextLine;
class CharacterFormat
{
public:
- bool equalsFormat(const CharacterFormat &other) const {
- return other.rendition==rendition && other.fgColor==fgColor && other.bgColor==bgColor;
- }
-
- bool equalsFormat(const Character &c) const {
- return c.rendition==rendition && c.foregroundColor==fgColor && c.backgroundColor==bgColor;
- }
-
- void setFormat(const Character& c) {
- rendition=c.rendition;
- fgColor=c.foregroundColor;
- bgColor=c.backgroundColor;
- }
-
- CharacterColor fgColor, bgColor;
- quint16 startPos;
- quint8 rendition;
+ bool equalsFormat(const CharacterFormat &other) const {
+ return other.rendition==rendition && other.fgColor==fgColor && other.bgColor==bgColor;
+ }
+
+ bool equalsFormat(const Character &c) const {
+ return c.rendition==rendition && c.foregroundColor==fgColor && c.backgroundColor==bgColor;
+ }
+
+ void setFormat(const Character& c) {
+ rendition=c.rendition;
+ fgColor=c.foregroundColor;
+ bgColor=c.backgroundColor;
+ }
+
+ CharacterColor fgColor, bgColor;
+ quint16 startPos;
+ quint8 rendition;
};
class CompactHistoryBlock
{
public:
- CompactHistoryBlock(){
- blockLength = 4096*64; // 256kb
-
-#if defined(Q_OS_WIN)
- head = (quint8*) VirtualAlloc(NULL, blockLength, MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE);
- Q_ASSERT(head != NULL);
-#else
- head = (quint8*) mmap(nullptr, blockLength, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANON, -1, 0);
- Q_ASSERT(head != MAP_FAILED);
-#endif
- //head = (quint8*) malloc(blockLength);
- tail = blockStart = head;
- allocCount=0;
- }
-
- virtual ~CompactHistoryBlock(){
- //free(blockStart);
-#if defined(Q_OS_WIN)
- VirtualFree((VOID *) blockStart, 0, MEM_RELEASE );
-#else
- munmap(blockStart, blockLength);
-#endif
- }
-
- virtual unsigned int remaining(){ return (unsigned int)(blockStart+blockLength-tail);}
- virtual unsigned int length() { return (unsigned int)(blockLength); }
- virtual void* allocate(size_t length);
- virtual bool contains(void *addr) {return addr>=blockStart && addr<(blockStart+blockLength);}
- virtual void deallocate();
- virtual bool isInUse(){ return allocCount!=0; } ;
+ CompactHistoryBlock() {
+ blockLength = 4096*64; // 256kb
+
+ #if defined(Q_OS_WIN)
+ head = (quint8*) VirtualAlloc(NULL, blockLength, MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE);
+ Q_ASSERT(head != NULL);
+ #else
+ head = (quint8*) mmap(nullptr, blockLength, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANON, -1, 0);
+ Q_ASSERT(head != MAP_FAILED);
+ #endif
+ //head = (quint8*) malloc(blockLength);
+ tail = blockStart = head;
+ allocCount=0;
+ }
+
+ virtual ~CompactHistoryBlock(){
+ //free(blockStart);
+ #if defined(Q_OS_WIN)
+ VirtualFree((VOID *) blockStart, 0, MEM_RELEASE );
+ #else
+ munmap(blockStart, blockLength);
+ #endif
+ }
+
+ virtual unsigned int remaining(){ return (unsigned int)(blockStart+blockLength-tail);}
+ virtual unsigned int length() { return (unsigned int)(blockLength); }
+ virtual void* allocate(size_t length);
+ virtual bool contains(void *addr) {return addr>=blockStart && addr<(blockStart+blockLength);}
+ virtual void deallocate();
+ virtual bool isInUse(){ return allocCount!=0; } ;
private:
- size_t blockLength;
- quint8* head;
- quint8* tail;
- quint8* blockStart;
- int allocCount;
+ size_t blockLength;
+ quint8* head;
+ quint8* tail;
+ quint8* blockStart;
+ int allocCount;
};
class CompactHistoryBlockList {
public:
- CompactHistoryBlockList() {};
- ~CompactHistoryBlockList();
+ CompactHistoryBlockList() {};
+ ~CompactHistoryBlockList();
- void *allocate( size_t size );
- void deallocate(void *);
- int length() {return list.size();}
+ void *allocate( size_t size );
+ void deallocate(void *);
+ int length() {return list.size();}
private:
- QList list;
+ QList list;
};
class CompactHistoryLine
{
public:
- CompactHistoryLine(const TextLine&, CompactHistoryBlockList& blockList);
- virtual ~CompactHistoryLine();
+ CompactHistoryLine(const TextLine&, CompactHistoryBlockList& blockList);
+ virtual ~CompactHistoryLine();
- // custom new operator to allocate memory from custom pool instead of heap
- static void *operator new( size_t size, CompactHistoryBlockList& blockList);
- static void operator delete( void *) { /* do nothing, deallocation from pool is done in destructor*/ } ;
+ // custom new operator to allocate memory from custom pool instead of heap
+ static void *operator new( size_t size, CompactHistoryBlockList& blockList);
+ static void operator delete( void *) { /* do nothing, deallocation from pool is done in destructor*/ } ;
- virtual void getCharacters(Character* array, int length, int startColumn) ;
- virtual void getCharacter(int index, Character &r) ;
- virtual bool isWrapped() const {return wrapped;};
- virtual void setWrapped(bool isWrapped) { wrapped=isWrapped;};
- virtual unsigned int getLength() const {return length;};
+ virtual void getCharacters(Character* array, int length, int startColumn) ;
+ virtual void getCharacter(int index, Character &r) ;
+ virtual bool isWrapped() const {return wrapped;};
+ virtual void setWrapped(bool isWrapped) { wrapped=isWrapped;};
+ virtual unsigned int getLength() const {return length;};
protected:
- CompactHistoryBlockList& blockList;
- CharacterFormat* formatArray;
- quint16 length;
- quint16* text;
- quint16 formatLength;
- bool wrapped;
+ CompactHistoryBlockList& blockList;
+ CharacterFormat* formatArray;
+ quint16 length;
+ quint16* text;
+ quint16 formatLength;
+ bool wrapped;
};
class CompactHistoryScroll : public HistoryScroll
{
- typedef QList HistoryArray;
+ typedef QList HistoryArray;
public:
- CompactHistoryScroll(unsigned int maxNbLines = 1000);
- ~CompactHistoryScroll() override;
+ CompactHistoryScroll(unsigned int maxNbLines = 1000);
+ ~CompactHistoryScroll() override;
- int getLines() override;
- int getLineLen(int lineno) override;
- void getCells(int lineno, int colno, int count, Character res[]) override;
- bool isWrappedLine(int lineno) override;
+ int getLines() override;
+ int getLineLen(int lineno) override;
+ void getCells(int lineno, int colno, int count, Character res[]) override;
+ bool isWrappedLine(int lineno) override;
- void addCells(const Character a[], int count) override;
- void addCellsVector(const TextLine& cells) override;
- void addLine(bool previousWrapped=false) override;
+ void addCells(const Character a[], int count) override;
+ void addCellsVector(const TextLine& cells) override;
+ void addLine(bool previousWrapped=false) override;
- void setMaxNbLines(unsigned int nbLines);
- unsigned int maxNbLines() const { return _maxLineCount; }
+ void setMaxNbLines(unsigned int nbLines);
+ unsigned int maxNbLines() const { return _maxLineCount; }
private:
- bool hasDifferentColors(const TextLine& line) const;
- HistoryArray lines;
- CompactHistoryBlockList blockList;
+ bool hasDifferentColors(const TextLine& line) const;
+ HistoryArray lines;
+ CompactHistoryBlockList blockList;
- unsigned int _maxLineCount;
+ unsigned int _maxLineCount;
};
-//////////////////////////////////////////////////////////////////////
-// History type
-//////////////////////////////////////////////////////////////////////
class HistoryType
{
public:
- HistoryType();
- virtual ~HistoryType();
-
- /**
- * Returns true if the history is enabled ( can store lines of output )
- * or false otherwise.
- */
- virtual bool isEnabled() const = 0;
- /**
- * Returns true if the history size is unlimited.
- */
- bool isUnlimited() const { return maximumLineCount() == 0; }
- /**
- * Returns the maximum number of lines which this history type
- * can store or 0 if the history can store an unlimited number of lines.
- */
- virtual int maximumLineCount() const = 0;
-
- virtual HistoryScroll* scroll(HistoryScroll *) const = 0;
+ HistoryType();
+ virtual ~HistoryType();
+
+ /**
+ * Returns true if the history is enabled ( can store lines of output )
+ * or false otherwise.
+ */
+ virtual bool isEnabled() const = 0;
+ /**
+ * Returns true if the history size is unlimited.
+ */
+ bool isUnlimited() const { return maximumLineCount() == 0; }
+ /**
+ * Returns the maximum number of lines which this history type
+ * can store or 0 if the history can store an unlimited number of lines.
+ */
+ virtual int maximumLineCount() const = 0;
+
+ virtual HistoryScroll* scroll(HistoryScroll *) const = 0;
};
class HistoryTypeNone : public HistoryType
{
public:
- HistoryTypeNone();
+ HistoryTypeNone();
- bool isEnabled() const override;
- int maximumLineCount() const override;
+ bool isEnabled() const override;
+ int maximumLineCount() const override;
- HistoryScroll* scroll(HistoryScroll *) const override;
+ HistoryScroll* scroll(HistoryScroll *) const override;
};
class HistoryTypeBlockArray : public HistoryType
{
public:
- HistoryTypeBlockArray(size_t size);
+ HistoryTypeBlockArray(size_t size);
- bool isEnabled() const override;
- int maximumLineCount() const override;
+ bool isEnabled() const override;
+ int maximumLineCount() const override;
- HistoryScroll* scroll(HistoryScroll *) const override;
+ HistoryScroll* scroll(HistoryScroll *) const override;
protected:
- size_t m_size;
+ size_t m_size;
};
#if 1
class HistoryTypeFile : public HistoryType
{
public:
- HistoryTypeFile(const QString& fileName=QString());
+ HistoryTypeFile(const QString& fileName=QString());
- bool isEnabled() const override;
- virtual const QString& getFileName() const;
- int maximumLineCount() const override;
+ bool isEnabled() const override;
+ virtual const QString& getFileName() const;
+ int maximumLineCount() const override;
- HistoryScroll* scroll(HistoryScroll *) const override;
+ HistoryScroll* scroll(HistoryScroll *) const override;
protected:
- QString m_fileName;
+ QString m_fileName;
};
@@ -464,12 +424,12 @@ class HistoryTypeBuffer : public HistoryType
friend class HistoryScrollBuffer;
public:
- HistoryTypeBuffer(unsigned int nbLines);
+ HistoryTypeBuffer(unsigned int nbLines);
- bool isEnabled() const override;
- int maximumLineCount() const override;
+ bool isEnabled() const override;
+ int maximumLineCount() const override;
- HistoryScroll* scroll(HistoryScroll *) const override;
+ HistoryScroll* scroll(HistoryScroll *) const override;
protected:
unsigned int m_nbLines;
@@ -478,12 +438,12 @@ class HistoryTypeBuffer : public HistoryType
class CompactHistoryType : public HistoryType
{
public:
- CompactHistoryType(unsigned int size);
+ CompactHistoryType(unsigned int size);
- bool isEnabled() const override;
- int maximumLineCount() const override;
+ bool isEnabled() const override;
+ int maximumLineCount() const override;
- HistoryScroll* scroll(HistoryScroll *) const override;
+ HistoryScroll* scroll(HistoryScroll *) const override;
protected:
unsigned int m_nbLines;
@@ -492,4 +452,4 @@ class CompactHistoryType : public HistoryType
#endif
-#endif // TEHISTORY_H
+#endif // HISTORY_H
diff --git a/lib/qtermwidget/HistorySearch.cpp b/lib/qtermwidget/HistorySearch.cpp
index 1a528560..337ec8ec 100644
--- a/lib/qtermwidget/HistorySearch.cpp
+++ b/lib/qtermwidget/HistorySearch.cpp
@@ -1,39 +1,35 @@
/*
- Copyright 2013 Christian Surlykke
-
- 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 2013 Christian Surlykke
+
+ 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
+#include
-#include "TerminalCharacterDecoder.h"
#include "Emulation.h"
#include "HistorySearch.h"
+#include "TerminalCharacterDecoder.h"
-HistorySearch::HistorySearch(EmulationPtr emulation, const QRegularExpression& regExp,
- bool forwards, int startColumn, int startLine,
- QObject* parent) :
-QObject(parent),
-m_emulation(emulation),
-m_regExp(regExp),
-m_forwards(forwards),
-m_startColumn(startColumn),
-m_startLine(startLine) {
+HistorySearch::HistorySearch(EmulationPtr emulation,
+ const QRegularExpression ®Exp, bool forwards,
+ int startColumn, int startLine, QObject *parent)
+ : QObject(parent), m_emulation(emulation), m_regExp(regExp),
+ m_forwards(forwards), m_startColumn(startColumn), m_startLine(startLine) {
}
HistorySearch::~HistorySearch() {
@@ -42,18 +38,20 @@ HistorySearch::~HistorySearch() {
void HistorySearch::search() {
bool found = false;
- if (! m_regExp.pattern().isEmpty())
- {
+ if (!m_regExp.pattern().isEmpty()) {
if (m_forwards) {
- found = search(m_startColumn, m_startLine, -1, m_emulation->lineCount()) || search(0, 0, m_startColumn, m_startLine);
+ found =
+ search(m_startColumn, m_startLine, -1, m_emulation->lineCount()) ||
+ search(0, 0, m_startColumn, m_startLine);
} else {
- found = search(0, 0, m_startColumn, m_startLine) || search(m_startColumn, m_startLine, -1, m_emulation->lineCount());
+ found = search(0, 0, m_startColumn, m_startLine) ||
+ search(m_startColumn, m_startLine, -1, m_emulation->lineCount());
}
if (found) {
- emit matchFound(m_foundStartColumn, m_foundStartLine, m_foundEndColumn, m_foundEndLine);
- }
- else {
+ emit matchFound(m_foundStartColumn, m_foundStartLine, m_foundEndColumn,
+ m_foundEndLine);
+ } else {
emit noMatchFound();
}
}
@@ -61,12 +59,14 @@ void HistorySearch::search() {
deleteLater();
}
-bool HistorySearch::search(int startColumn, int startLine, int endColumn, int endLine) {
+bool HistorySearch::search(int startColumn, int startLine, int endColumn,
+ int endLine) {
int linesRead = 0;
int linesToRead = endLine - startLine + 1;
- // We read process history from (and including) startLine to (and including) endLine in
- // blocks of at most 10K lines so that we do not use unhealthy amounts of memory
+ // We read process history from (and including) startLine to (and including)
+ // endLine in blocks of at most 10K lines so that we do not use unhealthy
+ // amounts of memory
int blockSize;
while ((blockSize = qMin(10000, linesToRead - linesRead)) > 0) {
QString string;
@@ -76,71 +76,72 @@ bool HistorySearch::search(int startColumn, int startLine, int endColumn, int en
decoder.setRecordLinePositions(true);
// Calculate lines to read and read them
- int blockStartLine = m_forwards ? startLine + linesRead : endLine - linesRead - blockSize + 1;
+ int blockStartLine = m_forwards ? startLine + linesRead
+ : endLine - linesRead - blockSize + 1;
int chunkEndLine = blockStartLine + blockSize - 1;
m_emulation->writeToStream(&decoder, blockStartLine, chunkEndLine);
- // We search between startColumn in the first line of the string and endColumn in the last
- // line of the string. First we calculate the position (in the string) of endColumn in the
- // last line of the string
+ // We search between startColumn in the first line of the string and
+ // endColumn in the last line of the string. First we calculate the position
+ // (in the string) of endColumn in the last line of the string
int endPosition;
- // The String that Emulator.writeToStream produces has a newline at the end, and so ends with an
- // empty line - we ignore that.
+ // The String that Emulator.writeToStream produces has a newline at the end,
+ // and so ends with an empty line - we ignore that.
int numberOfLinesInString = decoder.linePositions().size() - 1;
- if (numberOfLinesInString > 0 && endColumn > -1 )
- {
- endPosition = decoder.linePositions().at(numberOfLinesInString - 1) + endColumn;
- }
- else
- {
+ if (numberOfLinesInString > 0 && endColumn > -1) {
+ endPosition =
+ decoder.linePositions().at(numberOfLinesInString - 1) + endColumn;
+ } else {
endPosition = string.size();
}
- // So now we can log for m_regExp in the string between startColumn and endPosition
+ // So now we can log for m_regExp in the string between startColumn and
+ // endPosition
int matchStart;
QRegularExpressionMatch match;
- if (m_forwards)
- {
+ if (m_forwards) {
matchStart = string.indexOf(m_regExp, startColumn, &match);
- if (matchStart >= endPosition)
- matchStart = -1;
- }
- else
- {
+ if (matchStart >= endPosition)
+ matchStart = -1;
+ } else {
matchStart = string.lastIndexOf(m_regExp, endPosition - 1, &match);
if (matchStart < startColumn)
matchStart = -1;
}
- if (matchStart > -1)
- {
+ if (matchStart > -1) {
int matchEnd = matchStart + match.capturedLength() - 1;
- //qDebug() << "Found in string from" << matchStart << "to" << matchEnd;
-
- // Translate startPos and endPos to startColum, startLine, endColumn and endLine in history.
- int startLineNumberInString = findLineNumberInString(decoder.linePositions(), matchStart);
- m_foundStartColumn = matchStart - decoder.linePositions().at(startLineNumberInString);
+ // qDebug() << "Found in string from" << matchStart << "to" << matchEnd;
+
+ // Translate startPos and endPos to startColum, startLine, endColumn and
+ // endLine in history.
+ int startLineNumberInString =
+ findLineNumberInString(decoder.linePositions(), matchStart);
+ m_foundStartColumn =
+ matchStart - decoder.linePositions().at(startLineNumberInString);
m_foundStartLine = startLineNumberInString + startLine + linesRead;
- int endLineNumberInString = findLineNumberInString(decoder.linePositions(), matchEnd);
- m_foundEndColumn = matchEnd - decoder.linePositions().at(endLineNumberInString);
+ int endLineNumberInString =
+ findLineNumberInString(decoder.linePositions(), matchEnd);
+ m_foundEndColumn =
+ matchEnd - decoder.linePositions().at(endLineNumberInString);
m_foundEndLine = endLineNumberInString + startLine + linesRead;
return true;
}
-
linesRead += blockSize;
}
return false;
}
-
-int HistorySearch::findLineNumberInString(QList linePositions, int position) {
+int HistorySearch::findLineNumberInString(QList linePositions,
+ int position) {
int lineNum = 0;
- while (lineNum + 1 < linePositions.size() && linePositions[lineNum + 1] <= position)
+ while (lineNum + 1 < linePositions.size() &&
+ linePositions[lineNum + 1] <= position)
lineNum++;
return lineNum;
diff --git a/lib/qtermwidget/HistorySearch.h b/lib/qtermwidget/HistorySearch.h
index f373b6da..fa269006 100644
--- a/lib/qtermwidget/HistorySearch.h
+++ b/lib/qtermwidget/HistorySearch.h
@@ -1,23 +1,23 @@
/*
- Copyright 2013 Christian Surlykke
-
- 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 2013 Christian Surlykke
+
+ 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 TASK_H
-#define TASK_H
+#ifndef HISTOTYSEARCH_H
+#define HISTOTYSEARCH_H
#include
#include
@@ -38,9 +38,7 @@ class HistorySearch : public QObject
public:
explicit HistorySearch(EmulationPtr emulation, const QRegularExpression& regExp, bool forwards,
int startColumn, int startLine, QObject* parent);
-
~HistorySearch() override;
-
void search();
signals:
@@ -51,7 +49,6 @@ class HistorySearch : public QObject
bool search(int startColumn, int startLine, int endColumn, int endLine);
int findLineNumberInString(QList linePositions, int position);
-
EmulationPtr m_emulation;
QRegularExpression m_regExp;
bool m_forwards = false;
@@ -64,5 +61,4 @@ class HistorySearch : public QObject
int m_foundEndLine = 0;
};
-#endif /* TASK_H */
-
+#endif /* HISTOTYSEARCH_H */
diff --git a/lib/qtermwidget/KeyboardTranslator.cpp b/lib/qtermwidget/KeyboardTranslator.cpp
index ef76d4e5..a1a5d01a 100644
--- a/lib/qtermwidget/KeyboardTranslator.cpp
+++ b/lib/qtermwidget/KeyboardTranslator.cpp
@@ -1,22 +1,22 @@
/*
- This source file is part of Konsole, a terminal emulator.
+ This source file is part of Konsole, a terminal emulator.
- Copyright 2007-2008 by Robert Knight
+ Copyright 2007-2008 by Robert Knight
- 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 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.
+ 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.
+ 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 "KeyboardTranslator.h"
@@ -24,19 +24,19 @@
#include
#include
+#include
#include
#include
-#include
#include
-#include
-#include
#include
+#include
+#include
#include "tools.h"
const QByteArray KeyboardTranslatorManager::defaultTranslatorText(
-"keyboard \"Fallback Key Translator\"\n"
-"key Tab : \"\\t\""
+ "keyboard \"Fallback Key Translator\"\n"
+ "key Tab : \"\\t\""
);
#ifdef Q_OS_MAC
@@ -47,20 +47,18 @@ const Qt::KeyboardModifier KeyboardTranslator::CTRL_MOD = Qt::ControlModifier;
#endif
KeyboardTranslatorManager::KeyboardTranslatorManager()
- : _haveLoadedAll(false)
-{
+ : _haveLoadedAll(false) {
}
-KeyboardTranslatorManager::~KeyboardTranslatorManager()
-{
+
+KeyboardTranslatorManager::~KeyboardTranslatorManager() {
qDeleteAll(_translators);
}
-QString KeyboardTranslatorManager::findTranslatorPath(const QString& name)
-{
+
+QString KeyboardTranslatorManager::findTranslatorPath(const QString &name) {
return QString(get_kb_layout_dir() + name + QLatin1String(".keytab"));
}
-void KeyboardTranslatorManager::findTranslators()
-{
+void KeyboardTranslatorManager::findTranslators() {
QDir dir(get_kb_layout_dir());
QStringList filters;
filters << QLatin1String("*.keytab");
@@ -71,127 +69,119 @@ void KeyboardTranslatorManager::findTranslators()
// the name with a null pointer to indicate that the translator
// has not yet been loaded from disk
QStringListIterator listIter(list);
- while (listIter.hasNext())
- {
+ while (listIter.hasNext()) {
QString translatorPath = listIter.next();
QString name = QFileInfo(translatorPath).baseName();
- if ( !_translators.contains(name) )
- _translators.insert(name,0);
+ if (!_translators.contains(name))
+ _translators.insert(name, 0);
}
- _haveLoadedAll = true;
+ _haveLoadedAll = true;
}
-const KeyboardTranslator* KeyboardTranslatorManager::findTranslator(const QString& name)
-{
- if ( name.isEmpty() )
+const KeyboardTranslator * KeyboardTranslatorManager::findTranslator(const QString &name) {
+ if (name.isEmpty())
return defaultTranslator();
- if ( _translators.contains(name) && _translators[name] != 0 )
+ if (_translators.contains(name) && _translators[name] != 0)
return _translators[name];
- KeyboardTranslator* translator = loadTranslator(name);
+ KeyboardTranslator *translator = loadTranslator(name);
- if ( translator != nullptr )
+ if (translator != nullptr)
_translators[name] = translator;
- else if ( !name.isEmpty() )
+ else if (!name.isEmpty())
qDebug() << "Unable to load translator" << name;
return translator;
}
-bool KeyboardTranslatorManager::saveTranslator(const KeyboardTranslator* translator)
-{
+bool KeyboardTranslatorManager::saveTranslator(const KeyboardTranslator *translator) {
Q_UNUSED(translator);
return true;
}
-KeyboardTranslator* KeyboardTranslatorManager::loadTranslator(const QString& name)
-{
- const QString& path = findTranslatorPath(name);
+KeyboardTranslator * KeyboardTranslatorManager::loadTranslator(const QString &name) {
+ const QString &path = findTranslatorPath(name);
QFile source(path);
if (name.isEmpty() || !source.open(QIODevice::ReadOnly | QIODevice::Text))
return nullptr;
- return loadTranslator(&source,name);
+ return loadTranslator(&source, name);
}
-const KeyboardTranslator* KeyboardTranslatorManager::defaultTranslator()
-{
+const KeyboardTranslator *KeyboardTranslatorManager::defaultTranslator() {
// Try to find the default.keytab file if it exists, otherwise
// fall back to the hard-coded one
#if defined(Q_OS_WIN)
#if defined(Q_CC_MSVC)
- const KeyboardTranslator* translator = findTranslator(QLatin1String("windows_conpty"));
+ const KeyboardTranslator *translator =
+ findTranslator(QLatin1String("windows_conpty"));
#else
- const KeyboardTranslator* translator = findTranslator(QLatin1String("windows_winpty"));
+ const KeyboardTranslator *translator =
+ findTranslator(QLatin1String("windows_winpty"));
#endif
#elif defined(Q_OS_MAC)
- const KeyboardTranslator* translator = findTranslator(QLatin1String("macos_default"));
+ const KeyboardTranslator *translator =
+ findTranslator(QLatin1String("macos_default"));
#else
- const KeyboardTranslator* translator = findTranslator(QLatin1String("linux_default"));
+ const KeyboardTranslator *translator =
+ findTranslator(QLatin1String("linux_default"));
#endif
- if (!translator)
- {
+ if (!translator) {
QBuffer textBuffer;
textBuffer.setData(defaultTranslatorText);
textBuffer.open(QIODevice::ReadOnly);
- translator = loadTranslator(&textBuffer,QLatin1String("fallback"));
+ translator = loadTranslator(&textBuffer, QLatin1String("fallback"));
}
return translator;
}
-KeyboardTranslator* KeyboardTranslatorManager::loadTranslator(QIODevice* source,const QString& name)
-{
- KeyboardTranslator* translator = new KeyboardTranslator(name);
+KeyboardTranslator * KeyboardTranslatorManager::loadTranslator(QIODevice *source, const QString &name) {
+ KeyboardTranslator *translator = new KeyboardTranslator(name);
KeyboardTranslatorReader reader(source);
- translator->setDescription( reader.description() );
- while ( reader.hasNextEntry() )
+ translator->setDescription(reader.description());
+ while (reader.hasNextEntry())
translator->addEntry(reader.nextEntry());
source->close();
- if ( !reader.parseError() )
- {
+ if (!reader.parseError()) {
return translator;
- }
- else
- {
+ } else {
delete translator;
return nullptr;
}
}
-KeyboardTranslatorWriter::KeyboardTranslatorWriter(QIODevice* destination)
-: _destination(destination)
-{
- Q_ASSERT( destination && destination->isWritable() );
-
+KeyboardTranslatorWriter::KeyboardTranslatorWriter(QIODevice *destination)
+ : _destination(destination) {
+ Q_ASSERT(destination && destination->isWritable());
_writer = new QTextStream(_destination);
}
-KeyboardTranslatorWriter::~KeyboardTranslatorWriter()
-{
- delete _writer;
+
+KeyboardTranslatorWriter::~KeyboardTranslatorWriter() {
+ delete _writer;
}
-void KeyboardTranslatorWriter::writeHeader( const QString& description )
-{
+
+void KeyboardTranslatorWriter::writeHeader(const QString &description) {
*_writer << "keyboard \"" << description << '\"' << '\n';
}
-void KeyboardTranslatorWriter::writeEntry( const KeyboardTranslator::Entry& entry )
-{
+
+void KeyboardTranslatorWriter::writeEntry(const KeyboardTranslator::Entry &entry) {
QString result;
- if ( entry.command() != KeyboardTranslator::NoCommand )
+ if (entry.command() != KeyboardTranslator::NoCommand)
result = entry.resultToString();
else
result = QLatin1Char('\"') + entry.resultToString() + QLatin1Char('\"');
- *_writer << QLatin1String("key ") << entry.conditionToString() << QLatin1String(" : ") << result << QLatin1Char('\n');
+ *_writer << QLatin1String("key ") << entry.conditionToString()
+ << QLatin1String(" : ") << result << QLatin1Char('\n');
}
-
// each line of the keyboard translation file is one of:
//
// - keyboard "name"
@@ -199,40 +189,35 @@ void KeyboardTranslatorWriter::writeEntry( const KeyboardTranslator::Entry& entr
// - key KeySequence : CommandName
//
// KeySequence begins with the name of the key ( taken from the Qt::Key enum )
-// and is followed by the keyboard modifiers and state flags ( with + or - in front
-// of each modifier or flag to indicate whether it is required ). All keyboard modifiers
-// and flags are optional, if a particular modifier or state is not specified it is
-// assumed not to be a part of the sequence. The key sequence may contain whitespace
+// and is followed by the keyboard modifiers and state flags ( with + or - in
+// front of each modifier or flag to indicate whether it is required ). All
+// keyboard modifiers and flags are optional, if a particular modifier or state
+// is not specified it is assumed not to be a part of the sequence. The key
+// sequence may contain whitespace
//
// eg: "key Up+Shift : scrollLineUp"
// "key Next-Shift : "\E[6~"
//
-// (lines containing only whitespace are ignored, parseLine assumes that comments have
-// already been removed)
+// (lines containing only whitespace are ignored, parseLine assumes that
+// comments have already been removed)
//
+KeyboardTranslatorReader::KeyboardTranslatorReader(QIODevice *source)
+ : _source(source), _hasNext(false) {
+ // read input until we find the description
+ while (_description.isEmpty() && !source->atEnd()) {
+ QList tokens = tokenize(QString::fromUtf8(source->readLine()));
+ if (!tokens.isEmpty() && tokens.first().type == Token::TitleKeyword)
+ _description = tokens[1].text;
+ }
+ // read first entry (if any)
+ readNext();
+}
-KeyboardTranslatorReader::KeyboardTranslatorReader( QIODevice* source )
- : _source(source)
- , _hasNext(false)
-{
- // read input until we find the description
- while ( _description.isEmpty() && !source->atEnd() )
- {
- QList tokens = tokenize( QString::fromUtf8(source->readLine()) );
- if ( !tokens.isEmpty() && tokens.first().type == Token::TitleKeyword )
- _description = tokens[1].text;
- }
- // read first entry (if any)
- readNext();
-}
-void KeyboardTranslatorReader::readNext()
-{
+void KeyboardTranslatorReader::readNext() {
// find next entry
- while ( !_source->atEnd() )
- {
- const QList& tokens = tokenize( QString::fromUtf8(_source->readLine()) );
- if ( !tokens.isEmpty() && tokens.first().type == Token::KeyKeyword )
- {
+ while (!_source->atEnd()) {
+ const QList &tokens = tokenize(QString::fromUtf8(_source->readLine()));
+ if (!tokens.isEmpty() && tokens.first().type == Token::KeyKeyword) {
KeyboardTranslator::States flags = KeyboardTranslator::NoState;
KeyboardTranslator::States flagMask = KeyboardTranslator::NoState;
Qt::KeyboardModifiers modifiers = Qt::NoModifier;
@@ -240,36 +225,28 @@ void KeyboardTranslatorReader::readNext()
int keyCode = Qt::Key_unknown;
- decodeSequence(tokens[1].text.toLower(),
- keyCode,
- modifiers,
- modifierMask,
- flags,
- flagMask);
+ decodeSequence(tokens[1].text.toLower(), keyCode, modifiers, modifierMask, flags, flagMask);
KeyboardTranslator::Command command = KeyboardTranslator::NoCommand;
QByteArray text;
// get text or command
- if ( tokens[2].type == Token::OutputText )
- {
+ if (tokens[2].type == Token::OutputText) {
text = tokens[2].text.toLocal8Bit();
- }
- else if ( tokens[2].type == Token::Command )
- {
+ } else if (tokens[2].type == Token::Command) {
// identify command
- if (!parseAsCommand(tokens[2].text,command))
+ if (!parseAsCommand(tokens[2].text, command))
qDebug() << "Command" << tokens[2].text << "not understood.";
}
KeyboardTranslator::Entry newEntry;
- newEntry.setKeyCode( keyCode );
- newEntry.setState( flags );
- newEntry.setStateMask( flagMask );
- newEntry.setModifiers( modifiers );
- newEntry.setModifierMask( modifierMask );
- newEntry.setText( text );
- newEntry.setCommand( command );
+ newEntry.setKeyCode(keyCode);
+ newEntry.setState(flags);
+ newEntry.setStateMask(flagMask);
+ newEntry.setModifiers(modifiers);
+ newEntry.setModifierMask(modifierMask);
+ newEntry.setText(text);
+ newEntry.setCommand(command);
_nextEntry = newEntry;
@@ -282,37 +259,34 @@ void KeyboardTranslatorReader::readNext()
_hasNext = false;
}
-bool KeyboardTranslatorReader::parseAsCommand(const QString& text,KeyboardTranslator::Command& command)
-{
- if ( text.compare(QLatin1String("erase"),Qt::CaseInsensitive) == 0 )
+bool KeyboardTranslatorReader::parseAsCommand(
+ const QString &text, KeyboardTranslator::Command &command) {
+ if (text.compare(QLatin1String("erase"), Qt::CaseInsensitive) == 0)
command = KeyboardTranslator::EraseCommand;
- else if ( text.compare(QLatin1String("scrollpageup"),Qt::CaseInsensitive) == 0 )
+ else if (text.compare(QLatin1String("scrollpageup"), Qt::CaseInsensitive) == 0)
command = KeyboardTranslator::ScrollPageUpCommand;
- else if ( text.compare(QLatin1String("scrollpagedown"),Qt::CaseInsensitive) == 0 )
+ else if (text.compare(QLatin1String("scrollpagedown"), Qt::CaseInsensitive) == 0)
command = KeyboardTranslator::ScrollPageDownCommand;
- else if ( text.compare(QLatin1String("scrolllineup"),Qt::CaseInsensitive) == 0 )
+ else if (text.compare(QLatin1String("scrolllineup"), Qt::CaseInsensitive) == 0)
command = KeyboardTranslator::ScrollLineUpCommand;
- else if ( text.compare(QLatin1String("scrolllinedown"),Qt::CaseInsensitive) == 0 )
+ else if (text.compare(QLatin1String("scrolllinedown"), Qt::CaseInsensitive) == 0)
command = KeyboardTranslator::ScrollLineDownCommand;
- else if ( text.compare(QLatin1String("scrolllock"),Qt::CaseInsensitive) == 0 )
+ else if (text.compare(QLatin1String("scrolllock"), Qt::CaseInsensitive) == 0)
command = KeyboardTranslator::ScrollLockCommand;
- else if ( text.compare(QLatin1String("scrolluptotop"),Qt::CaseInsensitive) == 0)
+ else if (text.compare(QLatin1String("scrolluptotop"), Qt::CaseInsensitive) == 0)
command = KeyboardTranslator::ScrollUpToTopCommand;
- else if ( text.compare(QLatin1String("scrolldowntobottom"),Qt::CaseInsensitive) == 0)
+ else if (text.compare(QLatin1String("scrolldowntobottom"), Qt::CaseInsensitive) == 0)
command = KeyboardTranslator::ScrollDownToBottomCommand;
else
return false;
- return true;
+ return true;
}
-bool KeyboardTranslatorReader::decodeSequence(const QString& text,
- int& keyCode,
- Qt::KeyboardModifiers& modifiers,
- Qt::KeyboardModifiers& modifierMask,
- KeyboardTranslator::States& flags,
- KeyboardTranslator::States& flagMask)
-{
+bool KeyboardTranslatorReader::decodeSequence(
+ const QString &text, int &keyCode, Qt::KeyboardModifiers &modifiers,
+ Qt::KeyboardModifiers &modifierMask, KeyboardTranslator::States &flags,
+ KeyboardTranslator::States &flagMask) {
bool isWanted = true;
bool endOfItem = false;
QString buffer;
@@ -322,42 +296,32 @@ bool KeyboardTranslatorReader::decodeSequence(const QString& text,
KeyboardTranslator::States tempFlags = flags;
KeyboardTranslator::States tempFlagMask = flagMask;
- for ( int i = 0 ; i < text.size() ; i++ )
- {
- const QChar& ch = text[i];
+ for (int i = 0; i < text.size(); i++) {
+ const QChar &ch = text[i];
bool isFirstLetter = i == 0;
- bool isLastLetter = ( i == text.size()-1 );
+ bool isLastLetter = (i == text.size() - 1);
endOfItem = true;
- if ( ch.isLetterOrNumber() )
- {
+ if (ch.isLetterOrNumber()) {
endOfItem = false;
buffer.append(ch);
- } else if ( isFirstLetter )
- {
+ } else if (isFirstLetter) {
buffer.append(ch);
}
- if ( (endOfItem || isLastLetter) && !buffer.isEmpty() )
- {
+ if ((endOfItem || isLastLetter) && !buffer.isEmpty()) {
Qt::KeyboardModifier itemModifier = Qt::NoModifier;
int itemKeyCode = 0;
KeyboardTranslator::State itemFlag = KeyboardTranslator::NoState;
- if ( parseAsModifier(buffer,itemModifier) )
- {
+ if (parseAsModifier(buffer, itemModifier)) {
tempModifierMask |= itemModifier;
-
- if ( isWanted )
+ if (isWanted)
tempModifiers |= itemModifier;
- }
- else if ( parseAsStateFlag(buffer,itemFlag) )
- {
+ } else if (parseAsStateFlag(buffer, itemFlag)) {
tempFlagMask |= itemFlag;
-
- if ( isWanted )
+ if (isWanted)
tempFlags |= itemFlag;
- }
- else if ( parseAsKeyCode(buffer,itemKeyCode) )
+ } else if (parseAsKeyCode(buffer, itemKeyCode))
keyCode = itemKeyCode;
else
qDebug() << "Unable to parse key binding item:" << buffer;
@@ -367,10 +331,10 @@ bool KeyboardTranslatorReader::decodeSequence(const QString& text,
// check if this is a wanted / not-wanted flag and update the
// state ready for the next item
- if ( ch == QLatin1Char('+') )
- isWanted = true;
- else if ( ch == QLatin1Char('-') )
- isWanted = false;
+ if (ch == QLatin1Char('+'))
+ isWanted = true;
+ else if (ch == QLatin1Char('-'))
+ isWanted = false;
}
modifiers = tempModifiers;
@@ -381,58 +345,56 @@ bool KeyboardTranslatorReader::decodeSequence(const QString& text,
return true;
}
-bool KeyboardTranslatorReader::parseAsModifier(const QString& item , Qt::KeyboardModifier& modifier)
-{
- if ( item == QLatin1String("shift") )
+bool KeyboardTranslatorReader::parseAsModifier(const QString &item,
+ Qt::KeyboardModifier &modifier) {
+ if (item == QLatin1String("shift"))
modifier = Qt::ShiftModifier;
- else if ( item == QLatin1String("ctrl") || item == QLatin1String("control") )
+ else if (item == QLatin1String("ctrl") || item == QLatin1String("control"))
modifier = Qt::ControlModifier;
- else if ( item == QLatin1String("alt") )
+ else if (item == QLatin1String("alt"))
modifier = Qt::AltModifier;
- else if ( item == QLatin1String("meta") )
+ else if (item == QLatin1String("meta"))
modifier = Qt::MetaModifier;
- else if ( item == QLatin1String("keypad") )
+ else if (item == QLatin1String("keypad"))
modifier = Qt::KeypadModifier;
else
return false;
return true;
}
-bool KeyboardTranslatorReader::parseAsStateFlag(const QString& item , KeyboardTranslator::State& flag)
-{
- if ( item == QLatin1String("appcukeys") || item == QLatin1String("appcursorkeys") )
+
+bool KeyboardTranslatorReader::parseAsStateFlag(const QString &item, KeyboardTranslator::State &flag) {
+ if (item == QLatin1String("appcukeys") || item == QLatin1String("appcursorkeys"))
flag = KeyboardTranslator::CursorKeysState;
- else if ( item == QLatin1String("ansi") )
+ else if (item == QLatin1String("ansi"))
flag = KeyboardTranslator::AnsiState;
- else if ( item == QLatin1String("newline") )
+ else if (item == QLatin1String("newline"))
flag = KeyboardTranslator::NewLineState;
- else if ( item == QLatin1String("appscreen") )
+ else if (item == QLatin1String("appscreen"))
flag = KeyboardTranslator::AlternateScreenState;
- else if ( item == QLatin1String("anymod") || item == QLatin1String("anymodifier") )
+ else if (item == QLatin1String("anymod") || item == QLatin1String("anymodifier"))
flag = KeyboardTranslator::AnyModifierState;
- else if ( item == QLatin1String("appkeypad") )
+ else if (item == QLatin1String("appkeypad"))
flag = KeyboardTranslator::ApplicationKeypadState;
else
return false;
return true;
}
-bool KeyboardTranslatorReader::parseAsKeyCode(const QString& item , int& keyCode)
-{
+
+bool KeyboardTranslatorReader::parseAsKeyCode(const QString &item, int &keyCode) {
QKeySequence sequence = QKeySequence::fromString(item);
- if ( !sequence.isEmpty() )
- {
+ if (!sequence.isEmpty()) {
keyCode = sequence[0].toCombined();
- if ( sequence.count() > 1 )
- {
+ if (sequence.count() > 1) {
qDebug() << "Unhandled key codes in sequence: " << item;
}
}
// additional cases implemented for backwards compatibility with KDE 3
- else if ( item == QLatin1String("prior") )
+ else if (item == QLatin1String("prior"))
keyCode = Qt::Key_PageUp;
- else if ( item == QLatin1String("next") )
+ else if (item == QLatin1String("next"))
keyCode = Qt::Key_PageDown;
else
return false;
@@ -440,26 +402,25 @@ bool KeyboardTranslatorReader::parseAsKeyCode(const QString& item , int& keyCode
return true;
}
-QString KeyboardTranslatorReader::description() const
-{
+QString KeyboardTranslatorReader::description() const {
return _description;
}
-bool KeyboardTranslatorReader::hasNextEntry() const
-{
- return _hasNext;
+
+bool KeyboardTranslatorReader::hasNextEntry() const {
+ return _hasNext;
}
-KeyboardTranslator::Entry KeyboardTranslatorReader::createEntry( const QString& condition ,
- const QString& result )
-{
+
+KeyboardTranslator::Entry KeyboardTranslatorReader::createEntry(const QString &condition,
+ const QString &result) {
QString entryString = QString::fromLatin1("keyboard \"temporary\"\nkey ");
entryString.append(condition);
entryString.append(QLatin1String(" : "));
- // if 'result' is the name of a command then the entry result will be that command,
- // otherwise the result will be treated as a string to echo when the key sequence
- // specified by 'condition' is pressed
+ // if 'result' is the name of a command then the entry result will be that
+ // command, otherwise the result will be treated as a string to echo when the
+ // key sequence specified by 'condition' is pressed
KeyboardTranslator::Command command;
- if (parseAsCommand(result,command))
+ if (parseAsCommand(result, command))
entryString.append(result);
else
entryString.append(QLatin1Char('\"') + result + QLatin1Char('\"'));
@@ -470,32 +431,30 @@ KeyboardTranslator::Entry KeyboardTranslatorReader::createEntry( const QString&
KeyboardTranslatorReader reader(&buffer);
KeyboardTranslator::Entry entry;
- if ( reader.hasNextEntry() )
+ if (reader.hasNextEntry())
entry = reader.nextEntry();
return entry;
}
-KeyboardTranslator::Entry KeyboardTranslatorReader::nextEntry()
-{
- Q_ASSERT( _hasNext );
+KeyboardTranslator::Entry KeyboardTranslatorReader::nextEntry() {
+ Q_ASSERT(_hasNext);
KeyboardTranslator::Entry entry = _nextEntry;
readNext();
return entry;
}
-bool KeyboardTranslatorReader::parseError()
-{
- return false;
+
+bool KeyboardTranslatorReader::parseError() {
+ return false;
}
-QList KeyboardTranslatorReader::tokenize(const QString& line)
-{
+
+QList KeyboardTranslatorReader::tokenize(const QString &line) {
QString text = line;
// remove comments
bool inQuotes = false;
int commentPos = -1;
- for (int i=text.length()-1;i>=0;i--)
- {
+ for (int i = text.length() - 1; i >= 0; i--) {
QChar ch = text[i];
if (ch == QLatin1Char('\"'))
inQuotes = !inQuotes;
@@ -503,7 +462,7 @@ QList KeyboardTranslatorReader::tokenize(const
commentPos = i;
}
if (commentPos != -1)
- text.remove(commentPos,text.length());
+ text.remove(commentPos, text.length());
text = text.simplified();
@@ -511,56 +470,48 @@ QList KeyboardTranslatorReader::tokenize(const
static QRegularExpression title(QLatin1String("keyboard\\s+\"(.*)\""));
// key line: key KeySequence : "output"
// key line: key KeySequence : command
- static QRegularExpression key(QLatin1String("key\\s+([\\w\\+\\s\\-\\*\\.]+)\\s*:\\s*(\"(.*)\"|\\w+)"));
+ static QRegularExpression key(
+ QLatin1String("key\\s+([\\w\\+\\s\\-\\*\\.]+)\\s*:\\s*(\"(.*)\"|\\w+)"));
QList list;
- if ( text.isEmpty() )
- {
+ if (text.isEmpty()) {
return list;
}
const auto titleMatch = title.match(text);
const auto keyMatch = key.match(text);
- if ( titleMatch.hasMatch() )
- {
- Token titleToken = { Token::TitleKeyword , QString() };
- Token textToken = { Token::TitleText , titleMatch.captured(1) };
+ if (titleMatch.hasMatch()) {
+ Token titleToken = {Token::TitleKeyword, QString()};
+ Token textToken = {Token::TitleText, titleMatch.captured(1)};
list << titleToken << textToken;
- }
- else if ( keyMatch.hasMatch() )
- {
- Token keyToken = { Token::KeyKeyword , QString() };
- Token sequenceToken = { Token::KeySequence , keyMatch.captured(1).remove(QLatin1Char(' ')) };
+ } else if (keyMatch.hasMatch()) {
+ Token keyToken = {Token::KeyKeyword, QString()};
+ Token sequenceToken = {Token::KeySequence,
+ keyMatch.captured(1).remove(QLatin1Char(' '))};
list << keyToken << sequenceToken;
- if ( keyMatch.captured(3).isEmpty() )
- {
+ if (keyMatch.captured(3).isEmpty()) {
// capturedTexts()[2] is a command
- Token commandToken = { Token::Command , keyMatch.captured(2) };
+ Token commandToken = {Token::Command, keyMatch.captured(2)};
list << commandToken;
- }
- else
- {
+ } else {
// capturedTexts()[3] is the output string
- Token outputToken = { Token::OutputText , keyMatch.captured(3) };
- list << outputToken;
+ Token outputToken = {Token::OutputText, keyMatch.captured(3)};
+ list << outputToken;
}
- }
- else
- {
- qDebug() << "Line in keyboard translator file could not be understood:" << text;
+ } else {
+ qDebug() << "Line in keyboard translator file could not be understood:"
+ << text;
}
return list;
}
-QList KeyboardTranslatorManager::allTranslators()
-{
- if ( !_haveLoadedAll )
- {
+QList KeyboardTranslatorManager::allTranslators() {
+ if (!_haveLoadedAll) {
findTranslators();
}
@@ -568,210 +519,220 @@ QList KeyboardTranslatorManager::allTranslators()
}
KeyboardTranslator::Entry::Entry()
-: _keyCode(0)
-, _modifiers(Qt::NoModifier)
-, _modifierMask(Qt::NoModifier)
-, _state(NoState)
-, _stateMask(NoState)
-, _command(NoCommand)
-{
-}
-
-bool KeyboardTranslator::Entry::operator==(const Entry& rhs) const
-{
- return _keyCode == rhs._keyCode &&
- _modifiers == rhs._modifiers &&
- _modifierMask == rhs._modifierMask &&
- _state == rhs._state &&
- _stateMask == rhs._stateMask &&
- _command == rhs._command &&
- _text == rhs._text;
-}
-
-bool KeyboardTranslator::Entry::matches(int keyCode ,
+ : _keyCode(0), _modifiers(Qt::NoModifier), _modifierMask(Qt::NoModifier),
+ _state(NoState), _stateMask(NoState), _command(NoCommand) {
+}
+
+bool KeyboardTranslator::Entry::operator==(const Entry &rhs) const {
+ return _keyCode == rhs._keyCode && _modifiers == rhs._modifiers &&
+ _modifierMask == rhs._modifierMask && _state == rhs._state &&
+ _stateMask == rhs._stateMask && _command == rhs._command &&
+ _text == rhs._text;
+}
+
+bool KeyboardTranslator::Entry::matches(int keyCode,
Qt::KeyboardModifiers modifiers,
- States testState) const
-{
+ States testState) const {
#ifdef Q_OS_MAC
// On Mac, arrow keys are considered part of keypad. Ignore that.
modifiers &= ~Qt::KeypadModifier;
#endif
- if ( _keyCode != keyCode )
+ if (_keyCode != keyCode)
return false;
- if ( (modifiers & _modifierMask) != (_modifiers & _modifierMask) )
+ if ((modifiers & _modifierMask) != (_modifiers & _modifierMask))
return false;
// if modifiers is non-zero, the 'any modifier' state is implicit
- if ( (modifiers & ~Qt::KeypadModifier) != 0 )
+ if ((modifiers & ~Qt::KeypadModifier) != 0)
testState |= AnyModifierState;
- if ( (testState & _stateMask) != (_state & _stateMask) )
+ if ((testState & _stateMask) != (_state & _stateMask))
return false;
- // special handling for the 'Any Modifier' state, which checks for the presence of
- // any or no modifiers. In this context, the 'keypad' modifier does not count.
+ // special handling for the 'Any Modifier' state, which checks for the
+ // presence of any or no modifiers. In this context, the 'keypad' modifier
+ // does not count.
bool anyModifiersSet = modifiers != 0 && modifiers != Qt::KeypadModifier;
bool wantAnyModifier = _state & KeyboardTranslator::AnyModifierState;
- if ( _stateMask & KeyboardTranslator::AnyModifierState )
- {
- if ( wantAnyModifier != anyModifiersSet )
- return false;
+ if (_stateMask & KeyboardTranslator::AnyModifierState) {
+ if (wantAnyModifier != anyModifiersSet)
+ return false;
}
return true;
}
-QByteArray KeyboardTranslator::Entry::escapedText(bool expandWildCards,Qt::KeyboardModifiers modifiers) const
-{
- QByteArray result(text(expandWildCards,modifiers));
- for ( int i = 0 ; i < result.size() ; i++ )
- {
+QByteArray KeyboardTranslator::Entry::escapedText(bool expandWildCards,
+ Qt::KeyboardModifiers modifiers) const {
+ QByteArray result(text(expandWildCards, modifiers));
+
+ for (int i = 0; i < result.size(); i++) {
char ch = result[i];
char replacement = 0;
- switch ( ch )
- {
- case 27 : replacement = 'E'; break;
- case 8 : replacement = 'b'; break;
- case 12 : replacement = 'f'; break;
- case 9 : replacement = 't'; break;
- case 13 : replacement = 'r'; break;
- case 10 : replacement = 'n'; break;
+ switch (ch) {
+ case 27:
+ replacement = 'E';
+ break;
+ case 8:
+ replacement = 'b';
+ break;
+ case 12:
+ replacement = 'f';
+ break;
+ case 9:
+ replacement = 't';
+ break;
+ case 13:
+ replacement = 'r';
+ break;
+ case 10:
+ replacement = 'n';
+ break;
default:
// any character which is not printable is replaced by an equivalent
// \xhh escape sequence (where 'hh' are the corresponding hex digits)
- if ( !QChar(QLatin1Char(ch)).isPrint() )
+ if (!QChar(QLatin1Char(ch)).isPrint())
replacement = 'x';
+ break;
}
- if ( replacement == 'x' )
- {
+ if (replacement == 'x') {
QByteArray escaped("\\x");
- escaped += QByteArray(1,ch).toHex();
+ escaped += QByteArray(1, ch).toHex();
result.replace(i, 1, QByteArrayView(escaped));
- } else if ( replacement != 0 )
- {
- result.remove(i,1);
- result.insert(i,'\\');
- result.insert(i+1,replacement);
+ } else if (replacement != 0) {
+ result.remove(i, 1);
+ result.insert(i, '\\');
+ result.insert(i + 1, replacement);
}
}
return result;
}
-QByteArray KeyboardTranslator::Entry::unescape(const QByteArray& input) const
-{
+
+QByteArray KeyboardTranslator::Entry::unescape(const QByteArray &input) const {
QByteArray result(input);
- for ( int i = 0 ; i < result.size()-1 ; i++ )
- {
+ for (int i = 0; i < result.size() - 1; i++) {
char ch = result[i];
- if ( ch == '\\' )
- {
- char replacement[2] = {0,0};
- int charsToRemove = 2;
- bool escapedChar = true;
-
- switch ( result[i+1] )
- {
- case 'E' : replacement[0] = 27; break;
- case 'b' : replacement[0] = 8 ; break;
- case 'f' : replacement[0] = 12; break;
- case 't' : replacement[0] = 9 ; break;
- case 'r' : replacement[0] = 13; break;
- case 'n' : replacement[0] = 10; break;
- case 'x' :
- {
+ if (ch == '\\') {
+ char replacement[2] = {0, 0};
+ int charsToRemove = 2;
+ bool escapedChar = true;
+
+ switch (result[i + 1]) {
+ case 'E':
+ replacement[0] = 27;
+ break;
+ case 'b':
+ replacement[0] = 8;
+ break;
+ case 'f':
+ replacement[0] = 12;
+ break;
+ case 't':
+ replacement[0] = 9;
+ break;
+ case 'r':
+ replacement[0] = 13;
+ break;
+ case 'n':
+ replacement[0] = 10;
+ break;
+ case 'x': {
// format is \xh or \xhh where 'h' is a hexadecimal
// digit from 0-9 or A-F which should be replaced
// with the corresponding character value
char hexDigits[3] = {0};
- if ( (i < result.size()-2) && isxdigit(result[i+2]) )
- hexDigits[0] = result[i+2];
- if ( (i < result.size()-3) && isxdigit(result[i+3]) )
- hexDigits[1] = result[i+3];
+ if ((i < result.size() - 2) && isxdigit(result[i + 2]))
+ hexDigits[0] = result[i + 2];
+ if ((i < result.size() - 3) && isxdigit(result[i + 3]))
+ hexDigits[1] = result[i + 3];
unsigned charValue = 0;
- sscanf(hexDigits,"%x",&charValue);
+ sscanf(hexDigits, "%x", &charValue);
replacement[0] = (char)charValue;
charsToRemove = 2 + strlen(hexDigits);
- }
- break;
- default:
- escapedChar = false;
- }
-
- if ( escapedChar )
- result.replace(i,charsToRemove,replacement);
+ break;
+ }
+ default:
+ escapedChar = false;
+ break;
+ }
+
+ if (escapedChar)
+ result.replace(i, charsToRemove, replacement);
}
}
return result;
}
-void KeyboardTranslator::Entry::insertModifier( QString& item , int modifier ) const
-{
- if ( !(modifier & _modifierMask) )
+void KeyboardTranslator::Entry::insertModifier(QString &item,
+ int modifier) const {
+ if (!(modifier & _modifierMask))
return;
- if ( modifier & _modifiers )
+ if (modifier & _modifiers)
item += QLatin1Char('+');
else
item += QLatin1Char('-');
- if ( modifier == Qt::ShiftModifier )
+ if (modifier == Qt::ShiftModifier)
item += QLatin1String("Shift");
- else if ( modifier == Qt::ControlModifier )
+ else if (modifier == Qt::ControlModifier)
item += QLatin1String("Ctrl");
- else if ( modifier == Qt::AltModifier )
+ else if (modifier == Qt::AltModifier)
item += QLatin1String("Alt");
- else if ( modifier == Qt::MetaModifier )
+ else if (modifier == Qt::MetaModifier)
item += QLatin1String("Meta");
- else if ( modifier == Qt::KeypadModifier )
+ else if (modifier == Qt::KeypadModifier)
item += QLatin1String("KeyPad");
}
-void KeyboardTranslator::Entry::insertState( QString& item , int state ) const
-{
- if ( !(state & _stateMask) )
+
+void KeyboardTranslator::Entry::insertState(QString &item, int state) const {
+ if (!(state & _stateMask))
return;
- if ( state & _state )
- item += QLatin1Char('+') ;
+ if (state & _state)
+ item += QLatin1Char('+');
else
- item += QLatin1Char('-') ;
+ item += QLatin1Char('-');
- if ( state == KeyboardTranslator::AlternateScreenState )
+ if (state == KeyboardTranslator::AlternateScreenState)
item += QLatin1String("AppScreen");
- else if ( state == KeyboardTranslator::NewLineState )
+ else if (state == KeyboardTranslator::NewLineState)
item += QLatin1String("NewLine");
- else if ( state == KeyboardTranslator::AnsiState )
+ else if (state == KeyboardTranslator::AnsiState)
item += QLatin1String("Ansi");
- else if ( state == KeyboardTranslator::CursorKeysState )
+ else if (state == KeyboardTranslator::CursorKeysState)
item += QLatin1String("AppCursorKeys");
- else if ( state == KeyboardTranslator::AnyModifierState )
+ else if (state == KeyboardTranslator::AnyModifierState)
item += QLatin1String("AnyModifier");
- else if ( state == KeyboardTranslator::ApplicationKeypadState )
+ else if (state == KeyboardTranslator::ApplicationKeypadState)
item += QLatin1String("AppKeypad");
}
-QString KeyboardTranslator::Entry::resultToString(bool expandWildCards,Qt::KeyboardModifiers modifiers) const
-{
- if ( !_text.isEmpty() )
- return QString::fromLatin1(escapedText(expandWildCards,modifiers));
- else if ( _command == EraseCommand )
+
+QString KeyboardTranslator::Entry::resultToString(
+ bool expandWildCards, Qt::KeyboardModifiers modifiers) const {
+ if (!_text.isEmpty())
+ return QString::fromLatin1(escapedText(expandWildCards, modifiers));
+ else if (_command == EraseCommand)
return QLatin1String("Erase");
- else if ( _command == ScrollPageUpCommand )
+ else if (_command == ScrollPageUpCommand)
return QLatin1String("ScrollPageUp");
- else if ( _command == ScrollPageDownCommand )
+ else if (_command == ScrollPageDownCommand)
return QLatin1String("ScrollPageDown");
- else if ( _command == ScrollLineUpCommand )
+ else if (_command == ScrollLineUpCommand)
return QLatin1String("ScrollLineUp");
- else if ( _command == ScrollLineDownCommand )
+ else if (_command == ScrollLineDownCommand)
return QLatin1String("ScrollLineDown");
- else if ( _command == ScrollLockCommand )
+ else if (_command == ScrollLockCommand)
return QLatin1String("ScrollLock");
else if (_command == ScrollUpToTopCommand)
return QLatin1String("ScrollUpToTop");
@@ -780,105 +741,98 @@ QString KeyboardTranslator::Entry::resultToString(bool expandWildCards,Qt::Keybo
return QString();
}
-QString KeyboardTranslator::Entry::conditionToString() const
-{
+
+QString KeyboardTranslator::Entry::conditionToString() const {
QString result = QKeySequence(_keyCode).toString();
- insertModifier( result , Qt::ShiftModifier );
- insertModifier( result , Qt::ControlModifier );
- insertModifier( result , Qt::AltModifier );
- insertModifier( result , Qt::MetaModifier );
- insertModifier( result , Qt::KeypadModifier );
+ insertModifier(result, Qt::ShiftModifier);
+ insertModifier(result, Qt::ControlModifier);
+ insertModifier(result, Qt::AltModifier);
+ insertModifier(result, Qt::MetaModifier);
+ insertModifier(result, Qt::KeypadModifier);
- insertState( result , KeyboardTranslator::AlternateScreenState );
- insertState( result , KeyboardTranslator::NewLineState );
- insertState( result , KeyboardTranslator::AnsiState );
- insertState( result , KeyboardTranslator::CursorKeysState );
- insertState( result , KeyboardTranslator::AnyModifierState );
- insertState( result , KeyboardTranslator::ApplicationKeypadState );
+ insertState(result, KeyboardTranslator::AlternateScreenState);
+ insertState(result, KeyboardTranslator::NewLineState);
+ insertState(result, KeyboardTranslator::AnsiState);
+ insertState(result, KeyboardTranslator::CursorKeysState);
+ insertState(result, KeyboardTranslator::AnyModifierState);
+ insertState(result, KeyboardTranslator::ApplicationKeypadState);
return result;
}
-KeyboardTranslator::KeyboardTranslator(const QString& name)
-: _name(name)
-{
+KeyboardTranslator::KeyboardTranslator(const QString &name) : _name(name) {
}
-void KeyboardTranslator::setDescription(const QString& description)
-{
+void KeyboardTranslator::setDescription(const QString &description) {
_description = description;
}
-QString KeyboardTranslator::description() const
-{
- return _description;
+
+QString KeyboardTranslator::description() const {
+ return _description;
}
-void KeyboardTranslator::setName(const QString& name)
-{
- _name = name;
+
+void KeyboardTranslator::setName(const QString &name) {
+ _name = name;
}
-QString KeyboardTranslator::name() const
-{
- return _name;
+
+QString KeyboardTranslator::name() const {
+ return _name;
}
-QList KeyboardTranslator::entries() const
-{
+QList KeyboardTranslator::entries() const {
return _entries.values();
}
-void KeyboardTranslator::addEntry(const Entry& entry)
-{
+void KeyboardTranslator::addEntry(const Entry &entry) {
const int keyCode = entry.keyCode();
- _entries.insert(keyCode,entry);
-}
-void KeyboardTranslator::replaceEntry(const Entry& existing , const Entry& replacement)
-{
- if ( !existing.isNull() )
- _entries.remove(existing.keyCode(),existing);
- _entries.insert(replacement.keyCode(),replacement);
-}
-void KeyboardTranslator::removeEntry(const Entry& entry)
-{
- _entries.remove(entry.keyCode(),entry);
-}
-KeyboardTranslator::Entry KeyboardTranslator::findEntry(int keyCode, Qt::KeyboardModifiers modifiers, States state) const
-{
- for (auto it = _entries.cbegin(), end = _entries.cend(); it != end; ++it)
- {
+ _entries.insert(keyCode, entry);
+}
+
+void KeyboardTranslator::replaceEntry(const Entry &existing,
+ const Entry &replacement) {
+ if (!existing.isNull())
+ _entries.remove(existing.keyCode(), existing);
+ _entries.insert(replacement.keyCode(), replacement);
+}
+
+void KeyboardTranslator::removeEntry(const Entry &entry) {
+ _entries.remove(entry.keyCode(), entry);
+}
+
+KeyboardTranslator::Entry KeyboardTranslator::findEntry(int keyCode, Qt::KeyboardModifiers modifiers,
+ States state) const {
+ for (auto it = _entries.cbegin(), end = _entries.cend(); it != end; ++it) {
if (it.key() == keyCode)
- if ( it.value().matches(keyCode,modifiers,state) )
+ if (it.value().matches(keyCode, modifiers, state))
return *it;
}
return Entry(); // entry not found
}
-void KeyboardTranslatorManager::addTranslator(KeyboardTranslator* translator)
-{
- _translators.insert(translator->name(),translator);
- if ( !saveTranslator(translator) )
- qDebug() << "Unable to save translator" << translator->name()
- << "to disk.";
+void KeyboardTranslatorManager::addTranslator(KeyboardTranslator *translator) {
+ _translators.insert(translator->name(), translator);
+
+ if (!saveTranslator(translator))
+ qDebug() << "Unable to save translator" << translator->name() << "to disk.";
}
-bool KeyboardTranslatorManager::deleteTranslator(const QString& name)
-{
- Q_ASSERT( _translators.contains(name) );
+
+bool KeyboardTranslatorManager::deleteTranslator(const QString &name) {
+ Q_ASSERT(_translators.contains(name));
// locate and delete
QString path = findTranslatorPath(name);
- if ( QFile::remove(path) )
- {
+ if (QFile::remove(path)) {
_translators.remove(name);
return true;
- }
- else
- {
+ } else {
qDebug() << "Failed to remove translator - " << path;
return false;
}
}
-Q_GLOBAL_STATIC( KeyboardTranslatorManager , theKeyboardTranslatorManager )
-KeyboardTranslatorManager* KeyboardTranslatorManager::instance()
-{
+
+Q_GLOBAL_STATIC(KeyboardTranslatorManager, theKeyboardTranslatorManager)
+
+KeyboardTranslatorManager *KeyboardTranslatorManager::instance() {
return theKeyboardTranslatorManager;
}
diff --git a/lib/qtermwidget/KeyboardTranslator.h b/lib/qtermwidget/KeyboardTranslator.h
index 7f650fbf..e48a7b0c 100644
--- a/lib/qtermwidget/KeyboardTranslator.h
+++ b/lib/qtermwidget/KeyboardTranslator.h
@@ -1,22 +1,22 @@
/*
- This source file is part of Konsole, a terminal emulator.
+ This source file is part of Konsole, a terminal emulator.
- Copyright 2007-2008 by Robert Knight
+ Copyright 2007-2008 by Robert Knight
- 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 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.
+ 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.
+ 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 KEYBOARDTRANSLATOR_H
#define KEYBOARDTRANSLATOR_H
@@ -54,8 +54,7 @@ class KeyboardTranslator
* This enum describes the states which may be associated with with a particular
* entry in the keyboard translation entry.
*/
- enum State
- {
+ enum State {
/** Indicates that no special state is active */
NoState = 0,
/**
@@ -86,8 +85,7 @@ class KeyboardTranslator
/**
* This enum describes commands which are associated with particular key sequences.
*/
- enum Command
- {
+ enum Command {
/** Indicates that no command is associated with this command sequence */
NoCommand = 0,
/** TODO Document me */
@@ -116,8 +114,7 @@ class KeyboardTranslator
* and the character sequence and commands associated with it for a particular
* KeyboardTranslator.
*/
- class Entry
- {
+ class Entry {
public:
/**
* Constructs a new entry for a keyboard translator.
@@ -378,10 +375,8 @@ class KeyboardTranslatorReader
static KeyboardTranslator::Entry createEntry( const QString& condition ,
const QString& result );
private:
- struct Token
- {
- enum Type
- {
+ struct Token {
+ enum Type {
TitleKeyword,
TitleText,
KeyKeyword,
@@ -404,7 +399,7 @@ class KeyboardTranslatorReader
static bool parseAsModifier(const QString& item , Qt::KeyboardModifier& modifier);
static bool parseAsStateFlag(const QString& item , KeyboardTranslator::State& state);
static bool parseAsKeyCode(const QString& item , int& keyCode);
- static bool parseAsCommand(const QString& text , KeyboardTranslator::Command& command);
+ static bool parseAsCommand(const QString& text , KeyboardTranslator::Command& command);
QIODevice* _source;
QString _description;
@@ -497,7 +492,7 @@ class KeyboardTranslatorManager
QList allTranslators();
/** Returns the global KeyboardTranslatorManager instance. */
- static KeyboardTranslatorManager* instance();
+ static KeyboardTranslatorManager* instance();
private:
static const QByteArray defaultTranslatorText;
@@ -515,53 +510,60 @@ class KeyboardTranslatorManager
bool _haveLoadedAll;
};
-inline int KeyboardTranslator::Entry::keyCode() const { return _keyCode; }
-inline void KeyboardTranslator::Entry::setKeyCode(int keyCode) { _keyCode = keyCode; }
+inline int KeyboardTranslator::Entry::keyCode() const {
+ return _keyCode;
+}
-inline void KeyboardTranslator::Entry::setModifiers( Qt::KeyboardModifiers modifier )
-{
+inline void KeyboardTranslator::Entry::setKeyCode(int keyCode) {
+ _keyCode = keyCode;
+}
+
+inline void KeyboardTranslator::Entry::setModifiers( Qt::KeyboardModifiers modifier ) {
_modifiers = modifier;
}
-inline Qt::KeyboardModifiers KeyboardTranslator::Entry::modifiers() const { return _modifiers; }
-inline void KeyboardTranslator::Entry::setModifierMask( Qt::KeyboardModifiers mask )
-{
+inline Qt::KeyboardModifiers KeyboardTranslator::Entry::modifiers() const {
+ return _modifiers;
+}
+
+inline void KeyboardTranslator::Entry::setModifierMask( Qt::KeyboardModifiers mask ) {
_modifierMask = mask;
}
-inline Qt::KeyboardModifiers KeyboardTranslator::Entry::modifierMask() const { return _modifierMask; }
-inline bool KeyboardTranslator::Entry::isNull() const
-{
+inline Qt::KeyboardModifiers KeyboardTranslator::Entry::modifierMask() const {
+ return _modifierMask;
+}
+
+inline bool KeyboardTranslator::Entry::isNull() const {
return ( *this == Entry() );
}
-inline void KeyboardTranslator::Entry::setCommand( Command command )
-{
+inline void KeyboardTranslator::Entry::setCommand( Command command ) {
_command = command;
}
-inline KeyboardTranslator::Command KeyboardTranslator::Entry::command() const { return _command; }
-inline void KeyboardTranslator::Entry::setText( const QByteArray& text )
-{
+inline KeyboardTranslator::Command KeyboardTranslator::Entry::command() const {
+ return _command;
+}
+
+inline void KeyboardTranslator::Entry::setText( const QByteArray& text ) {
_text = unescape(text);
}
-inline int oneOrZero(int value)
-{
+
+inline int oneOrZero(int value) {
return value ? 1 : 0;
}
-inline QByteArray KeyboardTranslator::Entry::text(bool expandWildCards,Qt::KeyboardModifiers modifiers) const
-{
+
+inline QByteArray KeyboardTranslator::Entry::text(bool expandWildCards,Qt::KeyboardModifiers modifiers) const {
QByteArray expandedText = _text;
- if (expandWildCards)
- {
+ if (expandWildCards) {
int modifierValue = 1;
modifierValue += oneOrZero(modifiers & Qt::ShiftModifier);
modifierValue += oneOrZero(modifiers & Qt::AltModifier) << 1;
modifierValue += oneOrZero(modifiers & KeyboardTranslator::CTRL_MOD) << 2;
- for (int i=0;i<_text.length();i++)
- {
+ for (int i=0;i<_text.length();i++) {
if (expandedText[i] == '*')
expandedText[i] = '0' + modifierValue;
}
@@ -570,17 +572,21 @@ inline QByteArray KeyboardTranslator::Entry::text(bool expandWildCards,Qt::Keybo
return expandedText;
}
-inline void KeyboardTranslator::Entry::setState( States state )
-{
+inline void KeyboardTranslator::Entry::setState( States state ) {
_state = state;
}
-inline KeyboardTranslator::States KeyboardTranslator::Entry::state() const { return _state; }
-inline void KeyboardTranslator::Entry::setStateMask( States stateMask )
-{
+inline KeyboardTranslator::States KeyboardTranslator::Entry::state() const {
+ return _state;
+}
+
+inline void KeyboardTranslator::Entry::setStateMask( States stateMask ) {
_stateMask = stateMask;
}
-inline KeyboardTranslator::States KeyboardTranslator::Entry::stateMask() const { return _stateMask; }
+
+inline KeyboardTranslator::States KeyboardTranslator::Entry::stateMask() const {
+ return _stateMask;
+}
Q_DECLARE_METATYPE(KeyboardTranslator::Entry)
Q_DECLARE_METATYPE(const KeyboardTranslator*)
diff --git a/lib/qtermwidget/LineFont.h b/lib/qtermwidget/LineFont.h
deleted file mode 100644
index 9c080ea2..00000000
--- a/lib/qtermwidget/LineFont.h
+++ /dev/null
@@ -1,21 +0,0 @@
-// WARNING: Autogenerated by "fontembedder ./linefont.src".
-// You probably do not want to hand-edit this!
-
-static const quint32 LineChars[] = {
- 0x00007c00, 0x000fffe0, 0x00421084, 0x00e739ce, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00427000, 0x004e7380, 0x00e77800, 0x00ef7bc0,
- 0x00421c00, 0x00439ce0, 0x00e73c00, 0x00e7bde0, 0x00007084, 0x000e7384, 0x000079ce, 0x000f7bce,
- 0x00001c84, 0x00039ce4, 0x00003dce, 0x0007bdee, 0x00427084, 0x004e7384, 0x004279ce, 0x00e77884,
- 0x00e779ce, 0x004f7bce, 0x00ef7bc4, 0x00ef7bce, 0x00421c84, 0x00439ce4, 0x00423dce, 0x00e73c84,
- 0x00e73dce, 0x0047bdee, 0x00e7bde4, 0x00e7bdee, 0x00427c00, 0x0043fce0, 0x004e7f80, 0x004fffe0,
- 0x004fffe0, 0x00e7fde0, 0x006f7fc0, 0x00efffe0, 0x00007c84, 0x0003fce4, 0x000e7f84, 0x000fffe4,
- 0x00007dce, 0x0007fdee, 0x000f7fce, 0x000fffee, 0x00427c84, 0x0043fce4, 0x004e7f84, 0x004fffe4,
- 0x00427dce, 0x00e77c84, 0x00e77dce, 0x0047fdee, 0x004e7fce, 0x00e7fde4, 0x00ef7f84, 0x004fffee,
- 0x00efffe4, 0x00e7fdee, 0x00ef7fce, 0x00efffee, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x000f83e0, 0x00a5294a, 0x004e1380, 0x00a57800, 0x00ad0bc0, 0x004390e0, 0x00a53c00, 0x00a5a1e0,
- 0x000e1384, 0x0000794a, 0x000f0b4a, 0x000390e4, 0x00003d4a, 0x0007a16a, 0x004e1384, 0x00a5694a,
- 0x00ad2b4a, 0x004390e4, 0x00a52d4a, 0x00a5a16a, 0x004f83e0, 0x00a57c00, 0x00ad83e0, 0x000f83e4,
- 0x00007d4a, 0x000f836a, 0x004f93e4, 0x00a57d4a, 0x00ad836a, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00001c00, 0x00001084, 0x00007000, 0x00421000,
- 0x00039ce0, 0x000039ce, 0x000e7380, 0x00e73800, 0x000e7f80, 0x00e73884, 0x0003fce0, 0x004239ce
-};
diff --git a/lib/qtermwidget/Screen.cpp b/lib/qtermwidget/Screen.cpp
index cf406feb..74774a3d 100644
--- a/lib/qtermwidget/Screen.cpp
+++ b/lib/qtermwidget/Screen.cpp
@@ -1,120 +1,102 @@
/*
- This file is part of Konsole, an X terminal.
-
- Copyright 2007-2008 by Robert Knight
- Copyright 1997,1998 by Lars Doelle
-
- 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.
- */
+ This file is part of Konsole, an X terminal.
+
+ Copyright 2007-2008 by Robert Knight
+ Copyright 1997,1998 by Lars Doelle
+
+ 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 "Screen.h"
+#include
#include
#include
#include
-#include
-#include
#include
+#include
#include "CharWidth.h"
#include "TerminalCharacterDecoder.h"
-//Macro to convert x,y position on screen to position within an image.
+// Macro to convert x,y position on screen to position within an image.
//
-//Originally the image was stored as one large contiguous block of
-//memory, so a position within the image could be represented as an
-//offset from the beginning of the block. For efficiency reasons this
-//is no longer the case.
-//Many internal parts of this class still use this representation for parameters and so on,
-//notably moveImage() and clearImage().
-//This macro converts from an X,Y position into an image offset.
+// Originally the image was stored as one large contiguous block of
+// memory, so a position within the image could be represented as an
+// offset from the beginning of the block. For efficiency reasons this
+// is no longer the case.
+// Many internal parts of this class still use this representation for
+// parameters and so on, notably moveImage() and clearImage(). This macro
+// converts from an X,Y position into an image offset.
#ifndef loc
-#define loc(X,Y) ((Y)*columns+(X))
+#define loc(X, Y) ((Y) * columns + (X))
#endif
+Character Screen::defaultChar = Character(
+ ' ', CharacterColor(COLOR_SPACE_DEFAULT, DEFAULT_FORE_COLOR),
+ CharacterColor(COLOR_SPACE_DEFAULT, DEFAULT_BACK_COLOR), DEFAULT_RENDITION);
+
+// #define REVERSE_WRAPPED_LINES // for wrapped line debug
-Character Screen::defaultChar = Character(' ',
- CharacterColor(COLOR_SPACE_DEFAULT,DEFAULT_FORE_COLOR),
- CharacterColor(COLOR_SPACE_DEFAULT,DEFAULT_BACK_COLOR),
- DEFAULT_RENDITION);
-
-//#define REVERSE_WRAPPED_LINES // for wrapped line debug
-
- Screen::Screen(int l, int c)
-: lines(l),
- columns(c),
- screenLines(new ImageLine[lines+1] ),
- _scrolledLines(0),
- _droppedLines(0),
- history(new HistoryScrollNone()),
- cuX(0), cuY(0),
- currentRendition(0),
- _topMargin(0), _bottomMargin(0),
- selBegin(0), selTopLeft(0), selBottomRight(0),
- blockSelectionMode(false),
- effectiveForeground(CharacterColor()), effectiveBackground(CharacterColor()), effectiveRendition(0),
- lastPos(-1)
-{
- lineProperties.resize(lines+1);
- for (int i=0;i _bottomMargin ? lines-1 : _bottomMargin;
- cuX = qMin(columns-1,cuX); // nowrap!
- cuY = qMin(stop,cuY+n);
+void Screen::cursorDown(int n) {
+ if (n == 0)
+ n = 1; // Default
+ int stop = cuY > _bottomMargin ? lines - 1 : _bottomMargin;
+ cuX = qMin(columns - 1, cuX); // nowrap!
+ cuY = qMin(stop, cuY + n);
}
-void Screen::cursorLeft(int n)
- //=CUB
-{
- if (n == 0) n = 1; // Default
- cuX = qMin(columns-1,cuX); // nowrap!
- cuX = qMax(0,cuX-n);
+void Screen::cursorLeft(int n) {
+ if (n == 0)
+ n = 1; // Default
+ cuX = qMin(columns - 1, cuX); // nowrap!
+ cuX = qMax(0, cuX - n);
}
-void Screen::cursorNextLine(int n)
- //=CNL
-{
+void Screen::cursorNextLine(int n) {
if (n == 0) {
n = 1; // Default
}
@@ -127,38 +109,36 @@ void Screen::cursorNextLine(int n)
}
}
-void Screen::cursorPreviousLine(int n)
- //=CPL
-{
+void Screen::cursorPreviousLine(int n) {
if (n == 0) {
n = 1; // Default
}
cuX = 0;
while (n > 0) {
- if (cuY > 0) {
+ if (cuY > 0) {
cuY -= 1;
}
n--;
}
}
-void Screen::cursorRight(int n)
- //=CUF
-{
- if (n == 0) n = 1; // Default
- cuX = qMin(columns-1,cuX+n);
-}
-
-void Screen::setMargins(int top, int bot)
- //=STBM
-{
- if (top == 0) top = 1; // Default
- if (bot == 0) bot = lines; // Default
- top = top - 1; // Adjust to internal lineno
- bot = bot - 1; // Adjust to internal lineno
- if ( !( 0 <= top && top < bot && bot < lines ) )
- { //Debug()<<" setRegion("< 0)
cuY -= 1;
}
-void Screen::nextLine()
- //=NEL
-{
- toStartOfLine(); index();
+void Screen::nextLine() {
+ toStartOfLine();
+ index();
}
-void Screen::eraseChars(int n)
-{
- if (n == 0) n = 1; // Default
- int p = qMax(0,qMin(cuX+n-1,columns-1));
- clearImage(loc(cuX,cuY),loc(p,cuY),' ');
+void Screen::eraseChars(int n) {
+ if (n == 0)
+ n = 1; // Default
+ int p = qMax(0, qMin(cuX + n - 1, columns - 1));
+ clearImage(loc(cuX, cuY), loc(p, cuY), ' ');
}
-void Screen::deleteChars(int n)
-{
- Q_ASSERT( n >= 0 );
+void Screen::deleteChars(int n) {
+ Q_ASSERT(n >= 0);
// always delete at least one char
if (n == 0)
n = 1;
// if cursor is beyond the end of the line there is nothing to do
- if ( cuX >= screenLines[cuY].count() )
+ if (cuX >= screenLines[cuY].count())
return;
- if ( cuX+n > screenLines[cuY].count() )
+ if (cuX + n > screenLines[cuY].count())
n = screenLines[cuY].count() - cuX;
- Q_ASSERT( n >= 0 );
- Q_ASSERT( cuX+n <= screenLines[cuY].count() );
+ Q_ASSERT(n >= 0);
+ Q_ASSERT(cuX + n <= screenLines[cuY].count());
- screenLines[cuY].remove(cuX,n);
+ screenLines[cuY].remove(cuX, n);
}
-void Screen::insertChars(int n)
-{
- if (n == 0) n = 1; // Default
+void Screen::insertChars(int n) {
+ if (n == 0)
+ n = 1; // Default
- if ( screenLines[cuY].size() < cuX )
+ if (screenLines[cuY].size() < cuX)
screenLines[cuY].resize(cuX);
- screenLines[cuY].insert(cuX,n,' ');
+ screenLines[cuY].insert(cuX, n, ' ');
- if ( screenLines[cuY].count() > columns )
+ if (screenLines[cuY].count() > columns)
screenLines[cuY].resize(columns);
}
-void Screen::repeatChars(int count)
- //=REP
-{
- if (count == 0)
- {
+void Screen::repeatChars(int count) {
+ if (count == 0) {
count = 1;
}
/**
@@ -256,99 +221,88 @@ void Screen::repeatChars(int count)
* character (those other than escape sequences). So, lastDrawnChar can be
* safely used.
*/
- for (int i = 0; i < count; i++)
- {
+ for (int i = 0; i < count; i++) {
displayCharacter(lastDrawnChar);
}
}
-void Screen::deleteLines(int n)
-{
- if (n == 0) n = 1; // Default
- scrollUp(cuY,n);
+void Screen::deleteLines(int n) {
+ if (n == 0)
+ n = 1; // Default
+ scrollUp(cuY, n);
}
-void Screen::insertLines(int n)
-{
- if (n == 0) n = 1; // Default
- scrollDown(cuY,n);
+void Screen::insertLines(int n) {
+ if (n == 0)
+ n = 1; // Default
+ scrollDown(cuY, n);
}
-void Screen::setMode(int m)
-{
+void Screen::setMode(int m) {
currentModes[m] = true;
- switch(m)
- {
- case MODE_Origin : cuX = 0; cuY = _topMargin; break; //FIXME: home
+ switch (m) {
+ case MODE_Origin:
+ cuX = 0;
+ cuY = _topMargin;
+ break; // FIXME: home
}
}
-void Screen::resetMode(int m)
-{
+void Screen::resetMode(int m) {
currentModes[m] = false;
- switch(m)
- {
- case MODE_Origin : cuX = 0; cuY = 0; break; //FIXME: home
+ switch (m) {
+ case MODE_Origin:
+ cuX = 0;
+ cuY = 0;
+ break; // FIXME: home
}
}
-void Screen::saveMode(int m)
-{
- savedModes[m] = currentModes[m];
-}
+void Screen::saveMode(int m) { savedModes[m] = currentModes[m]; }
-void Screen::restoreMode(int m)
-{
- currentModes[m] = savedModes[m];
-}
+void Screen::restoreMode(int m) { currentModes[m] = savedModes[m]; }
-bool Screen::getMode(int m) const
-{
- return currentModes[m];
-}
+bool Screen::getMode(int m) const { return currentModes[m]; }
-void Screen::saveCursor()
-{
+void Screen::saveCursor() {
savedState.cursorColumn = cuX;
- savedState.cursorLine = cuY;
+ savedState.cursorLine = cuY;
savedState.rendition = currentRendition;
savedState.foreground = currentForeground;
savedState.background = currentBackground;
}
-void Screen::restoreCursor()
-{
- cuX = qMin(savedState.cursorColumn,columns-1);
- cuY = qMin(savedState.cursorLine,lines-1);
- currentRendition = savedState.rendition;
- currentForeground = savedState.foreground;
- currentBackground = savedState.background;
+void Screen::restoreCursor() {
+ cuX = qMin(savedState.cursorColumn, columns - 1);
+ cuY = qMin(savedState.cursorLine, lines - 1);
+ currentRendition = savedState.rendition;
+ currentForeground = savedState.foreground;
+ currentBackground = savedState.background;
updateEffectiveRendition();
}
-void Screen::resizeImage(int new_lines, int new_columns)
-{
- if ((new_lines==lines) && (new_columns==columns)) return;
+void Screen::resizeImage(int new_lines, int new_columns) {
+ if ((new_lines == lines) && (new_columns == columns))
+ return;
- if (cuY > new_lines-1)
- { // attempt to preserve focus and lines
- _bottomMargin = lines-1; //FIXME: margin lost
- for (int i = 0; i < cuY-(new_lines-1); i++)
- {
- addHistLine(); scrollUp(0,1);
+ if (cuY > new_lines - 1) { // attempt to preserve focus and lines
+ _bottomMargin = lines - 1; // FIXME: margin lost
+ for (int i = 0; i < cuY - (new_lines - 1); i++) {
+ addHistLine();
+ scrollUp(0, 1);
}
}
// create new screen lines and copy from old to new
- ImageLine* newScreenLines = new ImageLine[new_lines+1];
- for (int i=0; i < qMin(lines,new_lines+1) ;i++)
- newScreenLines[i]=screenLines[i];
- for (int i=lines;(i > 0) && (i