diff --git a/linux/appdata/org.kde.falkon.appdata.xml b/linux/appdata/org.kde.falkon.appdata.xml index b4b732213..481ceaee7 100644 --- a/linux/appdata/org.kde.falkon.appdata.xml +++ b/linux/appdata/org.kde.falkon.appdata.xml @@ -17,6 +17,7 @@ Falkon Falkon Falkon + Falkon Falkon Falkon Falkon @@ -43,6 +44,7 @@ Navegador web Penelusur Web Browser web + 웹 브라우저 Webbrowser Nettlesar Przeglądarka internetowa @@ -70,6 +72,7 @@

Falkon é un navegador web novo e moi rápido feito con Qt. Pretende ser un navegador web lixeiro dispoñíbel nas plataformas maioritarias. O proxecto comezou por curiosidade. Pero desde entón, Falkon converteuse nun navegador moi completo.

Falkon adalah penelusur web Qt yang baru dan sangat cepat. Ini bertujuan untuk menjadi penelusur web ringan yang tersedia melalui semua platform utama. Proyek ini awalnya hanya dimulai untuk tujuan pendidikan. Tapi sejak awal, Falkon telah tumbuh menjadi penelusur kaya fitur.

Falkon è un nuovo e velocissimo browser web Qt. Mira ad essere un browser web leggero e disponibile per tutte le maggiori piattaforme. Il progetto è iniziato inizialmente a scopo educativo, ma da allora Falkon è diventato un browser ricco di funzionalità.

+

Falkon은 Qt 기반 웹 브라우저입니다. 모든 주요 플랫폼에서 사용할 수 있는 경량 웹 브라우저입니다. 이 프로젝트는 교육용 목적에서 시작해서 다기능 웹 브라우저로 발전했습니다.

Flacon is een nieuwe en zeer snelle Qt-webbrowser. Zijn doel is om een lichtgewicht webbrowser te zijn beschikbaar via alle belangrijke platformen. Dit project is oorspronkelijk gestart alleen gestart voor onderwijsdoeleinden. Maar vanaf zijn start is Falcon gegroeid in een functierijke browser.

Falkon er ein ny og svært kjapp Qt-nettlesar. Målet er ein nettlesar som ikkje krev mykje systemressursar og som er tilgjengeleg på dei mest brukte plattformene. Programmet vart opphavleg utvikla berre som eit læreprosjekt, men har over tid blitt til ein funksjonsrik nettlesar.

Falkon jest nową i bardzo szybką przeglądarką internetową opartą na Qt. Celem Falkona jest być lekkim oprogramowaniem, dostępnym na wszystkich głównych platformach. Projekt ten został pierwotnie rozpoczęty wyłącznie w celach edukacyjnych, ale od swojego początku, Falkon rozrósł się do bogatej w funkcje przeglądarki.

@@ -77,7 +80,7 @@

O Falkon é um navegador Web novo e muito rápido feito em Qt. Destina-se a ser um navegador Web leve disponível em todas as principais plataformas. Este projeto começou originalmente apenas para fins educacionais. Mas, desde o início, o Falkon tornou-se um navegador rico em funcionalidades.

Falkon je nový a veľmi rýchly Qt prehliadač. Jeho cieľom je byť ľahký a dostupný na všetkých platformách. Tento projekt začal iba na účely vzdelávania. Ale časom sa stal plnohodnotným prehliadačom.

Falkon är en ny och mycket snabb Qt webbläsare. Den har som mål att vara en lättviktig webbläsare tillgänglig på alla större plattformar. Projektet startades ursprungligen bara i utbildningssyfte, men från starten har Falkon växt till en funktionsrik webbläsare.

-

Falkon — нова і дуже швидка програма для перегляду інтернету на основі навігатора Qt. Метою проекту є створення невибагливого до ресурсів переглядача інтернету для усіх основних програмних платформ. Реалізацію проекту було розпочато з навчальною метою. Втім, з того часу Falkon стала повноцінним переглядачем.

+

Falkon — нова і дуже швидка програма для перегляду інтернету на основі навігатора Qt. Метою проєкту є створення невибагливого до ресурсів переглядача інтернету для усіх основних програмних платформ. Реалізацію проєкту було розпочато з навчальною метою. Втім, з того часу Falkon стала повноцінним переглядачем.

xxFalkon is a new and very fast Qt web browser. It aims to be a lightweight web browser available through all major platforms. This project has been originally started only for educational purposes. But from its start, Falkon has grown into a feature-rich browser.xx

Falkon 是一款全新的超快速 Qt 网络浏览器。它将是一款轻量级的跨平台浏览器。这个项目当初仅仅作为教育项目。但是从一开始,Falkon 就成长为一款功能丰富的浏览器。

@@ -94,6 +97,7 @@

Falkon ten todas as funcións estándar que esperaría dun navegador web. Inclúe marcadores, historial (ambos dispoñíbeis en barras laterais) e lapelas. Ademais, pode xestionar fontes de novas RSS cun lector de RSS incluído, bloquear anuncios cun complemento de AdBlock integrado, bloquear contido en Flash con Click2Flash e editar a base de datos local de certificados de autoridades certificadoras cun xestor de SSL.

Falkon memiliki semua fungsi standar yang kamu harapkan dari penelusur web. Ini termasuk markah, histori (keduanya juga di bilah sisi) dan tab. Di samping itu, kamu bisa mengelola feed RSS dengan pembaca RSS yang disertakan, mencekal iklan dengan plugin AdBlock bawaan, mencekal konten Flash dengan Click2Flash dan mengedit database CA Certificates lokal dengan pengelola SSL.

Falkon ha tutte le funzioni standard che ti aspetteresti da un browser web. Include i segnalibri e la cronologia, entrambi anche nella barra laterale, e le schede. Puoi inoltre gestire i feed RSS con un lettore RSS incluso, bloccare sia le inserzioni con un'estensione AdBlock integrata, sia i contenuti Flash con Click2Flash, ed infine modificare la banca dati dei certificati CA con un gestore SSL.

+

Falkon은 웹 브라우저의 표준 기능을 포함하고 있습니다. 책갈피, 과거 기록(사이드바 지원), 탭을 지원합니다. 이외에도 내장 RSS 리더를 통한 RSS 피드 구독, AdBlock 플러그인으로 광고 차단, Click2Flash로 플래시 콘텐츠 차단, SSL 관리자로 로컬 CA 인증서 편집 등을 지원합니다.

Falcon heeft alle standaard functies die u verwacht van een webbrowser. Het bevat bladwijzers, geschiedenis (ook in de zijbalk) en tabbladen. Bovendien kunt u RSS-feeds beheren met een ingevoegde RSS-reader, ads blokkeren met een ingebouwde AdBlock plug-in, Flash-inhoud blokkeren met Click2Flash en de lokale database met CA Certificaten met een SSL-beheerder.

Falkon har alle funksjonane du forventar av ein nettlesar, som fane- og bokmerkestøtte, og ein logg over vitja sider (også tilgjengeleg frå ein sidestolpe). Han har òg innebygd RSS-lesar, reklamefilter, Flash-blokkering (klikk for å starta) og redigerbar CA-sertifikatdabase.

Falkon oddaje do dyspozycji użytkownika wszystkie standardowe funkcje, których oczekuje się od przeglądarki internetowej. Posiada karty, zakładki oraz możliwość zapisu historii, którą następnie można wyświetlić zarówno w osobnym oknie, jak i na pasku bocznym. Poza tym, może on obsługiwać kanały RSS przy użyciu załączonego czytnika, blokować reklamy za pomocą wbudowanej wtyczki AdBlock, blokować treści Flash przy użyciu Click2Flash i edytować lokalne certyfikaty CA.

diff --git a/src/plugins/VerticalTabs/tabtreedelegate.cpp b/src/plugins/VerticalTabs/tabtreedelegate.cpp index 3e7ab8f6b..250331dfc 100644 --- a/src/plugins/VerticalTabs/tabtreedelegate.cpp +++ b/src/plugins/VerticalTabs/tabtreedelegate.cpp @@ -148,6 +148,7 @@ void TabTreeDelegate::paint(QPainter *painter, const QStyleOptionViewItem &optio const bool expanded = m_view->isExpanded(index); const bool children = m_view->model()->rowCount(index) > 0; const int depth = indexDepth(index); + const bool isRestoredTab = index.data(TabModel::RestoredRole).toBool(); QStyleOptionViewItem opt = option; initStyleOption(&opt, index); @@ -162,6 +163,9 @@ void TabTreeDelegate::paint(QPainter *painter, const QStyleOptionViewItem &optio const QPalette::ColorRole colorRole = opt.state & QStyle::State_Selected ? QPalette::HighlightedText : QPalette::Text; QPalette::ColorGroup cg = opt.state & QStyle::State_Enabled ? QPalette::Normal : QPalette::Disabled; + if (!isRestoredTab) { + cg = QPalette::Disabled; + } if (cg == QPalette::Normal && !(opt.state & QStyle::State_Active)) { cg = QPalette::Inactive; } diff --git a/src/plugins/VerticalTabs/verticaltabswidget.cpp b/src/plugins/VerticalTabs/verticaltabswidget.cpp index 05d40221e..f6aa46d95 100644 --- a/src/plugins/VerticalTabs/verticaltabswidget.cpp +++ b/src/plugins/VerticalTabs/verticaltabswidget.cpp @@ -59,6 +59,7 @@ VerticalTabsWidget::VerticalTabsWidget(BrowserWindow *window) buttonAddTab->setIcon(QIcon::fromTheme(QSL("list-add"))); buttonAddTab->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); connect(buttonAddTab, &QAbstractButton::clicked, m_window, &BrowserWindow::addTab); + connect(buttonAddTab, &ToolButton::middleMouseClicked, this, &VerticalTabsWidget::addChildTab); m_groupMenu = new QMenu(this); buttonAddTab->setMenu(m_groupMenu); @@ -201,3 +202,10 @@ void VerticalTabsWidget::updateGroupMenu() m_window->tabWidget()->addView(QUrl(QSL("extension://verticaltabs/group")), Qz::NT_SelectedTab); }); } + +void VerticalTabsWidget::addChildTab() +{ + WebTab *tab = m_window->tabWidget()->webTab(); + m_window->addTab(); + m_window->tabWidget()->webTab()->setParentTab(tab); +} diff --git a/src/plugins/VerticalTabs/verticaltabswidget.h b/src/plugins/VerticalTabs/verticaltabswidget.h index c6ed5864b..ccc4e5bd0 100644 --- a/src/plugins/VerticalTabs/verticaltabswidget.h +++ b/src/plugins/VerticalTabs/verticaltabswidget.h @@ -43,6 +43,8 @@ public: void switchToNextTab(); void switchToPreviousTab(); + void addChildTab(); + private: WebTab *nextTab() const; WebTab *previousTab() const; diff --git a/src/scripts/runaction/action.py b/src/scripts/runaction/action.py index e76dae80d..97e39a39f 100644 --- a/src/scripts/runaction/action.py +++ b/src/scripts/runaction/action.py @@ -16,9 +16,13 @@ # along with this program. If not, see . # ============================================================ import Falkon -import os, re, enum, shlex +import os +import re +import enum +import shlex from PySide2 import QtCore, QtGui + class Action(): class Type(enum.Enum): Invalid, Url, Command = range(3) @@ -53,19 +57,22 @@ class Action(): self.supported = data.tryExec() def testAction(self, condition, url): - if not self.supported: return False - if not condition in self.typeCondition: return False - if not re.match(self.urlCondition, url.toString()): return False + if not self.supported: + return False + if condition not in self.typeCondition: + return False + if not re.match(self.urlCondition, url.toString()): + return False return True def execAction(self, url, text=""): - url = str(url.toEncoded()) + url = str(url.toEncoded(), "utf-8") if self.actionType == Action.Type.Command: url = shlex.quote(url) text = shlex.quote(text) elif self.actionType == Action.Type.Url: - url = str(QtCore.QUrl.toPercentEncoding(url)) - text = str(QtCore.QUrl.toPercentEncoding(text)) + url = str(QtCore.QUrl.toPercentEncoding(url), "utf-8") + text = str(QtCore.QUrl.toPercentEncoding(text), "utf-8") command = self.normalExec if text == "" else self.textExec command = command.replace("{url}", url) command = command.replace("{text}", text) diff --git a/src/scripts/runaction/actionmanager.py b/src/scripts/runaction/actionmanager.py index d1bd92bb5..94e7c5f65 100644 --- a/src/scripts/runaction/actionmanager.py +++ b/src/scripts/runaction/actionmanager.py @@ -16,11 +16,13 @@ # along with this program. If not, see . # ============================================================ import Falkon -import os, subprocess -from PySide2 import QtCore, QtGui, QtWidgets, QtUiTools +import os +import subprocess +from PySide2 import QtCore from runaction.action import Action from runaction.settingsdialog import SettingsDialog + class ActionManager(QtCore.QObject): actions = [] @@ -58,7 +60,7 @@ class ActionManager(QtCore.QObject): act = Falkon.Action(action.icon, action.title, self) act.triggered.connect(lambda a=action, w=webView, u=url, t=text: self.execAction(a, w, u, t)) if action.submenu: - if not action.submenu in menus: + if action.submenu not in menus: menu = Falkon.Menu(action.menuTitle, webView) menus[action.submenu] = menu out.append(menu) diff --git a/src/scripts/runaction/button.py b/src/scripts/runaction/button.py index cd077dc8c..e236bf19f 100644 --- a/src/scripts/runaction/button.py +++ b/src/scripts/runaction/button.py @@ -20,6 +20,7 @@ import os from PySide2 import QtGui, QtWidgets from runaction.i18n import i18n + class RunActionButton(Falkon.AbstractButtonInterface): def __init__(self, manager): super().__init__() diff --git a/src/scripts/runaction/runaction.py b/src/scripts/runaction/runaction.py index 21819534c..699c2a0b2 100644 --- a/src/scripts/runaction/runaction.py +++ b/src/scripts/runaction/runaction.py @@ -19,6 +19,7 @@ import Falkon from PySide2 import QtCore from runaction import actionmanager, button + class RunActionPlugin(Falkon.PluginInterface, QtCore.QObject): buttons = {} manager = None @@ -61,10 +62,12 @@ class RunActionPlugin(Falkon.PluginInterface, QtCore.QObject): self.buttons[window] = b def mainWindowDeleted(self, window): - if not window in self.buttons: return + if window not in self.buttons: + return b = self.buttons[window] window.statusBar().removeButton(b) window.navigationBar().removeToolButton(b) del self.buttons[window] + Falkon.registerPlugin(RunActionPlugin()) diff --git a/src/scripts/runaction/settings.ui b/src/scripts/runaction/settings.ui index 1436a161d..51a4cf7ae 100644 --- a/src/scripts/runaction/settings.ui +++ b/src/scripts/runaction/settings.ui @@ -15,7 +15,14 @@ - + + + + 75 + true + + + @@ -28,6 +35,9 @@ 16 + + QAbstractItemView::ScrollPerPixel + true diff --git a/src/scripts/runaction/settingsdialog.py b/src/scripts/runaction/settingsdialog.py index e600a9529..b3937b058 100644 --- a/src/scripts/runaction/settingsdialog.py +++ b/src/scripts/runaction/settingsdialog.py @@ -15,11 +15,11 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . # ============================================================ -import Falkon import os -from PySide2 import QtCore, QtGui, QtWidgets, QtUiTools +from PySide2 import QtCore, QtWidgets, QtUiTools from runaction.i18n import i18n + class SettingsDialog(QtWidgets.QDialog): def __init__(self, manager, parent=None): super().__init__(parent) @@ -36,7 +36,7 @@ class SettingsDialog(QtWidgets.QDialog): self.setMinimumSize(400, 250) self.setWindowTitle(i18n("Run Action Settings")) - self.ui.label.setText("{}".format(i18n("Available actions"))) + self.ui.label.setText(i18n("Available actions")) for action in self.manager.actions: item = QtWidgets.QListWidgetItem(self.ui.listWidget)