]> gitweb.stoutner.com Git - PrivacyBrowserPC.git/commitdiff
Add the handbook.
authorSoren Stoutner <soren@stoutner.com>
Thu, 9 Mar 2023 18:47:43 +0000 (11:47 -0700)
committerSoren Stoutner <soren@stoutner.com>
Thu, 9 Mar 2023 18:47:43 +0000 (11:47 -0700)
.gitignore
doc/cookies.png [new file with mode: 0644]
doc/index.docbook
doc/javascript.png [new file with mode: 0644]
doc/privacybrowser.png [new file with mode: 0644]
po/privacybrowser.pot
src/com.stoutner.privacybrowser.appdata.xml
src/dialogs/CookiesDialog.cpp
src/dialogs/SaveDialog.cpp
src/windows/BrowserWindow.cpp

index 9c087ba095c6acde46c074c12b7f8bd824352465..eea15f57459bed5926c5a9a64e92cb7154904cb5 100644 (file)
@@ -1,2 +1,3 @@
+/bin
 /build
 /.kdev4
diff --git a/doc/cookies.png b/doc/cookies.png
new file mode 100644 (file)
index 0000000..fecf17c
Binary files /dev/null and b/doc/cookies.png differ
index 6974073dbd3803477bf5ea404cbe13a864608018..f4da41f597401406984ccced2bfa93a28c42b0c3 100644 (file)
 
       <para>
         The current Qt 5 packages are in long-term support mode.
-        Qt WebEngine 5.15.x is based on <ulink url="https://wiki.qt.io/QtWebEngine/ChromiumVersions">Chromium 87.0.4280.144</ulink> from a feature perspective.
-        Security fixes are backported with <ulink url="https://wiki.qt.io/Qt_5.15_Release#Release_Plan">each release</ulink> every couple of months.
+        From a feature perspective, Qt WebEngine 5.15.x is based on <ulink url="https://wiki.qt.io/QtWebEngine/ChromiumVersions">Chromium 87.0.4280.144</ulink>.
+        Security fixes are backported every few months with <ulink url="https://wiki.qt.io/Qt_5.15_Release#Release_Plan">each release</ulink>.
       </para>
     </sect1>
 
       <sect2 id="cookies">
         <title>Cookies</title>
 
+        <para>
+          <ulink url="https://en.wikipedia.org/wiki/HTTP_cookie">Cookies</ulink>
+          allow websites to store small pieces of information for a specific host that are sent in the HTTP header every time the browser connects to that host.
+          Privacy Browser allows a maximum of <ulink url="http://browsercookielimits.iain.guru/">180 cookies with a maximum size of 4096 bytes per cookie</ulink> to be set per domain.
+          Cookies are often used to track users across the web, particularly third-party cookies (which are completely blocked in Privacy Browser).
+          They are also used as a security mechanism on websites where you log in to identify it is you as you browse from page to page on a site.
+        </para>
+
         <para>
           <mediaobject>
             <imageobject>
         </para>
 
         <para>
-          <ulink url="https://en.wikipedia.org/wiki/HTTP_cookie">Cookies</ulink>
-          allow websites to store small pieces of information for a specific host that are sent in the HTTP header every time the browser connects to that host.
-          Privacy Browser allows a maximum of <ulink url="http://browsercookielimits.iain.guru/">180 cookies with a maximum size of 4096 bytes per cookie</ulink> to be set per domain.
-          Cookies are often used to track users across the web, particularly third-party cookies (which are completely blocked in Privacy Browser).
-          They are also used as a security mechanism on websites where you log in to identify it is you as you browse from page to page on a site.
-        </para>
-
-        <para>
+          The cookies dialog is opened from <xref linkend="settings-cookies"/>.
           Durable cookies are shared with all tabs that are opened after they are made durable and are preserved even when Privacy Browser is restarted.
           This allows users to stay logged in to sites of their choosing. No cookies are durable by default. Making a cookie durable requires specific user interaction.
         </para>
       <para>
         Domain setting make it easy to automatically change JavaScript, local storage, user agent, and other settings when the domain changes.
         Domain settings for the current domain can be accessed through the domain settings button at the far right of the URL line edit.
-        Domain settings for all domains can be accessed through the settings menu. When domain settings are active, the URL line edit will have a green background.
+        Domain settings for all domains can be accessed through <xref linkend="settings-domain-settings"/>. When domain settings are active, the URL line edit will have a green background.
       </para>
     </sect1>
   </chapter>
 
     <!-- Main Window. -->
     <sect1 id="main-window">
-      <title>The main &privacybrowser; window</title>
+      <title>Main Window</title>
 
-      <!-- File Menu. -->
+      <!-- File. -->
       <sect2>
-        <title>The File Menu</title>
+        <title>File</title>
+
+        <variablelist>
+          <!-- New Tab. -->
+          <varlistentry id="file-new-tab">
+            <term>
+              <menuchoice>
+                <shortcut>
+                  <keycombo action="simul">&Ctrl;<keycap>T</keycap></keycombo>
+                </shortcut>
+                <guimenu>File</guimenu>
+                <guimenuitem>New Tab</guimenuitem>
+              </menuchoice>
+            </term>
+
+            <listitem>
+              <para>
+                Create a new tab.
+              </para>
+            </listitem>
+          </varlistentry>
+
+          <!-- New Window. -->
+          <varlistentry id="file-new-window">
+            <term>
+              <menuchoice>
+                <shortcut>
+                  <keycombo action="simul">&Ctrl;<keycap>N</keycap></keycombo>
+                </shortcut>
+                <guimenu>File</guimenu>
+                <guimenuitem>New Window</guimenuitem>
+              </menuchoice>
+            </term>
+
+            <listitem>
+              <para>
+                Create a new window.
+              </para>
+            </listitem>
+          </varlistentry>
+
+          <!-- Print. -->
+          <varlistentry  id="file-print">
+            <term>
+              <menuchoice>
+                <shortcut>
+                  <keycombo action="simul">&Ctrl;<keycap>P</keycap></keycombo>
+                </shortcut>
+                <guimenu>File</guimenu>
+                <guimenuitem>Print</guimenuitem>
+              </menuchoice>
+            </term>
+
+            <listitem>
+              <para>
+                Print the document.
+              </para>
+            </listitem>
+          </varlistentry>
+
+          <!-- Print Preview. -->
+          <varlistentry  id="file-print-preview">
+            <term>
+              <menuchoice>
+                <shortcut>
+                  <keycombo action="simul">&Ctrl;&Shift;<keycap>P</keycap></keycombo>
+                </shortcut>
+                <guimenu>File</guimenu>
+                <guimenuitem>Print Preview</guimenuitem>
+              </menuchoice>
+            </term>
+
+            <listitem>
+              <para>
+                Display the print preview dialog.
+              </para>
+            </listitem>
+          </varlistentry>
+
+          <!-- Quit. -->
+          <varlistentry  id="file-quit">
+            <term>
+              <menuchoice>
+                <shortcut>
+                  <keycombo action="simul">&Ctrl;<keycap>Q</keycap></keycombo>
+                </shortcut>
+                <guimenu>File</guimenu>
+                <guimenuitem>Quit</guimenuitem>
+              </menuchoice>
+            </term>
+
+            <listitem>
+              <para>
+                Quit &privacybrowser;.
+              </para>
+            </listitem>
+          </varlistentry>
+        </variablelist>
+      </sect2>
+
+      <!-- Edit. -->
+      <sect2>
+        <title>Edit</title>
+
+        <variablelist>
+          <!-- Find. -->
+          <varlistentry id="edit-find">
+            <term>
+              <menuchoice>
+                <shortcut>
+                  <keycombo action="simul">&Ctrl;<keycap>F</keycap></keycombo>
+                </shortcut>
+                <guimenu>Edit</guimenu>
+                <guimenuitem>Find</guimenuitem>
+              </menuchoice>
+            </term>
+
+            <listitem>
+              <para>
+                Display the find toolbar and focus the find text line edit. If the toolbar is already displayed, the find text line edit is refocused and the text it contains is selected.
+              </para>
+            </listitem>
+          </varlistentry>
+
+
+          <!-- Find Next. -->
+          <varlistentry id="edit-find-next">
+            <term>
+              <menuchoice>
+                <shortcut>
+                  <keycap>F3</keycap>
+                </shortcut>
+                <guimenu>Edit</guimenu>
+                <guimenuitem>Find Next</guimenuitem>
+              </menuchoice>
+            </term>
+
+            <listitem>
+              <para>
+                Find the next entry on the page that matches the specified text. This action is only displayed if the find toolbar is visible.
+              </para>
+            </listitem>
+          </varlistentry>
+
+          <!-- Find Previous. -->
+          <varlistentry id="edit-find-previous">
+            <term>
+              <menuchoice>
+                <shortcut>
+                  <keycombo action="simul">&Shift;<keycap>F3</keycap></keycombo>
+                </shortcut>
+                <guimenu>Edit</guimenu>
+                <guimenuitem>Find Previous</guimenuitem>
+              </menuchoice>
+            </term>
+
+            <listitem>
+              <para>
+                Find the previous entry on the page that matches the specified text. This action is only displayed if the find toolbar is visible.
+              </para>
+            </listitem>
+          </varlistentry>
+        </variablelist>
+      </sect2>
+
+      <!-- View. -->
+      <sect2>
+        <title>View</title>
+
+        <variablelist>
+          <!-- Refresh. -->
+          <varlistentry id="view-refresh">
+            <term>
+              <menuchoice>
+                <shortcut>
+                  <keycap>F5</keycap>
+                </shortcut>
+                <guimenu>View</guimenu>
+                <guimenuitem>Refresh</guimenuitem>
+              </menuchoice>
+            </term>
+
+            <listitem>
+              <para>
+                Reload the website in the current tab.
+              </para>
+            </listitem>
+          </varlistentry>
+
+          <!-- Full Screen Mode. -->
+          <varlistentry id="view-full-screen-mode">
+            <term>
+              <menuchoice>
+                <shortcut>
+                  <keycombo action="simul">&Ctrl;&Shift;<keycap>F</keycap></keycombo>
+                </shortcut>
+                <guimenu>View</guimenu>
+                <guimenuitem>Full Screen Mode</guimenuitem>
+              </menuchoice>
+            </term>
+
+            <listitem>
+              <para>
+                Toggle full screen mode. This performs the same action as <xref linkend="f11"/>.
+              </para>
+            </listitem>
+          </varlistentry>
+        </variablelist>
+      </sect2>
+
+      <!-- Go. -->
+      <sect2>
+        <title>Go</title>
+
+        <variablelist>
+          <!-- Back. -->
+          <varlistentry id="go-back">
+            <term>
+              <menuchoice>
+                <shortcut>
+                  <keycombo action="simul">&Alt;<keycap>Left</keycap></keycombo>
+                </shortcut>
+                <guimenu>Go</guimenu>
+                <guimenuitem>Back</guimenuitem>
+              </menuchoice>
+            </term>
+
+            <listitem>
+              <para>
+                Navigate back one step in the current tab’s history. The action is disabled if it is not possible to go back.
+              </para>
+            </listitem>
+          </varlistentry>
+
+          <!-- Forward. -->
+          <varlistentry id="go-forward">
+            <term>
+              <menuchoice>
+                <shortcut>
+                  <keycombo action="simul">&Alt;<keycap>Right</keycap></keycombo>
+                </shortcut>
+                <guimenu>Go</guimenu>
+                <guimenuitem>Forward</guimenuitem>
+              </menuchoice>
+            </term>
+
+            <listitem>
+              <para>
+                Navigate forward one step in the current tab’s history. The action is disabled if it is not possible to go forward.
+              </para>
+            </listitem>
+          </varlistentry>
+
+          <!-- Home. -->
+          <varlistentry id="go-home">
+            <term>
+              <menuchoice>
+                <shortcut>
+                  <keycombo action="simul">&Alt;<keycap>Home</keycap></keycombo>
+                </shortcut>
+                <guimenu>Go</guimenu>
+                <guimenuitem>Home</guimenuitem>
+              </menuchoice>
+            </term>
+
+            <listitem>
+              <para>
+                Load the home page in the current tab.
+              </para>
+            </listitem>
+          </varlistentry>
+        </variablelist>
+      </sect2>
+
+      <!-- On-The-Fly Settings. -->
+      <sect2>
+        <title>On-The-Fly Settings</title>
+
+        <!-- User Agent. -->
+        <sect3>
+          <title>User Agent</title>
 
-        <para>
           <variablelist>
-            <!-- File > New Tab. -->
-            <varlistentry id="file-new-tab">
+            <!-- Privacy Browser. -->
+            <varlistentry id="user-agent-privacy-browser">
               <term>
                 <menuchoice>
                   <shortcut>
-                    <keycombo action="simul">&Ctrl;<keycap>T</keycap></keycombo>
+                    <keycombo action="simul">&Ctrl;&Alt;<keycap>P</keycap></keycombo>
                   </shortcut>
-                  <guimenu>File</guimenu>
-                  <guimenuitem>New Tab</guimenuitem>
+                  <guimenu>On-The-Fly Settings</guimenu>
+                  <guisubmenu>User Agent</guisubmenu>
+                  <guimenuitem>Privacy Browser</guimenuitem>
                 </menuchoice>
               </term>
 
               <listitem>
                 <para>
-                  <action>Create a new tab.</action>
+                  Use the Privacy Browser user agent for the current tab.
                 </para>
               </listitem>
             </varlistentry>
 
-            <!-- File > New Window. -->
-            <varlistentry id="file-new-window">
+            <!-- WebEngine Default. -->
+            <varlistentry id="user-agent-webengine-default">
               <term>
                 <menuchoice>
                   <shortcut>
-                    <keycombo action="simul">&Ctrl;<keycap>N</keycap></keycombo>
+                    <keycombo action="simul">&Ctrl;&Alt;<keycap>W</keycap></keycombo>
                   </shortcut>
-                  <guimenu>File</guimenu>
-                  <guimenuitem>New Window</guimenuitem>
+                  <guimenu>On-The-Fly Settings</guimenu>
+                  <guisubmenu>User Agent</guisubmenu>
+                  <guimenuitem>WebEngine Default</guimenuitem>
                 </menuchoice>
               </term>
 
               <listitem>
                 <para>
-                  <action>Create a new window.</action>
+                  Use the WebEngine Default user agent for the current tab.
                 </para>
               </listitem>
             </varlistentry>
 
-            <varlistentry  id="file-save">
+            <!-- Firefox on Linux. -->
+            <varlistentry id="user-agent-firefox-linux">
               <term>
                 <menuchoice>
                   <shortcut>
-                    <keycombo action="simul">&Ctrl;<keycap>S</keycap></keycombo>
+                    <keycombo action="simul">&Ctrl;&Alt;<keycap>F</keycap></keycombo>
                   </shortcut>
-                  <guimenu>File</guimenu>
-                  <guimenuitem>Save</guimenuitem>
+                  <guimenu>On-The-Fly Settings</guimenu>
+                  <guisubmenu>User Agent</guisubmenu>
+                  <guimenuitem>Firefox on Linux</guimenuitem>
                 </menuchoice>
               </term>
 
               <listitem>
                 <para>
-                  <action>Saves the document</action>
+                  Use the Firefox on Linux user agent for the current tab.
                 </para>
               </listitem>
             </varlistentry>
 
-            <varlistentry  id="file-quit">
+            <!-- Chromium on Linux. -->
+            <varlistentry id="user-agent-chromium-linux">
               <term>
                 <menuchoice>
                   <shortcut>
-                    <keycombo action="simul">&Ctrl;<keycap>Q</keycap></keycombo>
+                    <keycombo action="simul">&Ctrl;&Alt;<keycap>C</keycap></keycombo>
                   </shortcut>
-                  <guimenu>File</guimenu>
-                  <guimenuitem>Quit</guimenuitem>
+                  <guimenu>On-The-Fly Settings</guimenu>
+                  <guisubmenu>User Agent</guisubmenu>
+                  <guimenuitem>Chromium on Linux</guimenuitem>
                 </menuchoice>
               </term>
 
               <listitem>
                 <para>
-                  <action>Quits</action> &privacybrowser;
+                  Use the Chromium on Linux user agent for the current tab.
+                </para>
+              </listitem>
+            </varlistentry>
+
+            <!-- Firefox on Windows. -->
+            <varlistentry id="user-agent-firefox-windows">
+              <term>
+                <menuchoice>
+                  <shortcut>
+                    <keycombo action="simul">&Ctrl;&Alt;&Shift;<keycap>F</keycap></keycombo>
+                  </shortcut>
+                  <guimenu>On-The-Fly Settings</guimenu>
+                  <guisubmenu>User Agent</guisubmenu>
+                  <guimenuitem>Firefox on Windows</guimenuitem>
+                </menuchoice>
+              </term>
+
+              <listitem>
+                <para>
+                  Use the Firefox on Windows user agent for the current tab.
+                </para>
+              </listitem>
+            </varlistentry>
+
+            <!-- Chrome on Windows. -->
+            <varlistentry id="user-agent-chrome-windows">
+              <term>
+                <menuchoice>
+                  <shortcut>
+                    <keycombo action="simul">&Ctrl;&Alt;&Shift;<keycap>C</keycap></keycombo>
+                  </shortcut>
+                  <guimenu>On-The-Fly Settings</guimenu>
+                  <guisubmenu>User Agent</guisubmenu>
+                  <guimenuitem>Chrome on Windows</guimenuitem>
+                </menuchoice>
+              </term>
+
+              <listitem>
+                <para>
+                  Use the Chrome on Windows user agent for the current tab.
+                </para>
+              </listitem>
+            </varlistentry>
+
+            <!-- Edge on Windows. -->
+            <varlistentry id="user-agent-edge-windows">
+              <term>
+                <menuchoice>
+                  <shortcut>
+                    <keycombo action="simul">&Ctrl;&Alt;<keycap>E</keycap></keycombo>
+                  </shortcut>
+                  <guimenu>On-The-Fly Settings</guimenu>
+                  <guisubmenu>User Agent</guisubmenu>
+                  <guimenuitem>Edge on Windows</guimenuitem>
+                </menuchoice>
+              </term>
+
+              <listitem>
+                <para>
+                  Use the Edge on Windows user agent for the current tab.
+                </para>
+              </listitem>
+            </varlistentry>
+
+            <!-- Safari on macOS. -->
+            <varlistentry id="user-agent-safari-macOS">
+              <term>
+                <menuchoice>
+                  <shortcut>
+                    <keycombo action="simul">&Ctrl;&Alt;<keycap>S</keycap></keycombo>
+                  </shortcut>
+                  <guimenu>On-The-Fly Settings</guimenu>
+                  <guisubmenu>User Agent</guisubmenu>
+                  <guimenuitem>Safari on macOS</guimenuitem>
+                </menuchoice>
+              </term>
+
+              <listitem>
+                <para>
+                  Use the Safari on macOS user agent for the current tab.
+                </para>
+              </listitem>
+            </varlistentry>
+
+            <!-- Custom User Agent. -->
+            <varlistentry id="user-agent-custom">
+              <term>
+                <menuchoice>
+                  <shortcut>
+                    <keycombo action="simul">&Alt;&Shift;<keycap>C</keycap></keycombo>
+                  </shortcut>
+                  <guimenu>On-The-Fly Settings</guimenu>
+                  <guisubmenu>User Agent</guisubmenu>
+                  <guimenuitem>Custom</guimenuitem>
+                </menuchoice>
+              </term>
+
+              <listitem>
+                <para>
+                  Use the custom user agent for the current tab. This action is only active if a custom user agent is set in the settings.
                 </para>
               </listitem>
             </varlistentry>
           </variablelist>
-        </para>
-      </sect2>
+        </sect3>
 
-      <!-- Examples how to use the common menus Settings and Help -->
-      <sect2 id="settings-help-menu">
-        <title>The Settings and Help Menu</title>
+        <!-- Zoom. -->
+        <sect3>
+          <title>Zoom</title>
 
-        <para>
-          &privacybrowser; has the common &kde; <guimenu>Settings</guimenu> and <guimenu>Help</guimenu>
-          menu items, for more information read the sections about the <ulink url="help:/fundamentals/ui.html#menus-settings"
-          >Settings Menu</ulink> and <ulink url="help:/fundamentals/ui.html#menus-help">Help Menu</ulink>
-          of the &kde; Fundamentals.
-        </para>
+          <variablelist>
+            <!-- Zoom Factor. -->
+            <varlistentry id="on-the-fly-settings-zoom-factor">
+              <term>
+                <menuchoice>
+                  <shortcut>
+                    <keycombo action="simul">&Ctrl;&Alt;<keycap>Z</keycap></keycombo>
+                  </shortcut>
+                  <guimenu>On-The-Fly Settings</guimenu>
+                  <guimenuitem>Zoom Factor</guimenuitem>
+                </menuchoice>
+              </term>
+
+              <listitem>
+                <para>
+                  Display the zoom factor dialog.
+                </para>
+              </listitem>
+            </varlistentry>
+          </variablelist>
+        </sect3>
+
+        <!-- Search Engine. -->
+        <sect3>
+          <title>Search Engine</title>
+
+          <variablelist>
+            <!-- Mojeek. -->
+            <varlistentry id="search-engine-mojeek">
+              <term>
+                <menuchoice>
+                  <shortcut>
+                    <keycombo action="simul">&Ctrl;&Shift;<keycap>M</keycap></keycombo>
+                  </shortcut>
+                  <guimenu>On-The-Fly Settings</guimenu>
+                  <guisubmenu>Search Engine</guisubmenu>
+                  <guimenuitem>Mojeek</guimenuitem>
+                </menuchoice>
+              </term>
+
+              <listitem>
+                <para>
+                  Use Mojeek as the search engine.
+                </para>
+              </listitem>
+            </varlistentry>
+
+            <!-- Monocles. -->
+            <varlistentry id="search-engine-monocles">
+              <term>
+                <menuchoice>
+                  <shortcut>
+                    <keycombo action="simul">&Ctrl;&Shift;<keycap>O</keycap></keycombo>
+                  </shortcut>
+                  <guimenu>On-The-Fly Settings</guimenu>
+                  <guisubmenu>Search Engine</guisubmenu>
+                  <guimenuitem>Monocles</guimenuitem>
+                </menuchoice>
+              </term>
+
+              <listitem>
+                <para>
+                  Use Mojeek as the search engine.
+                </para>
+              </listitem>
+            </varlistentry>
+
+            <!-- MetaGer. -->
+            <varlistentry id="search-engine-metager">
+              <term>
+                <menuchoice>
+                  <shortcut>
+                    <keycombo action="simul">&Ctrl;&Shift;<keycap>E</keycap></keycombo>
+                  </shortcut>
+                  <guimenu>On-The-Fly Settings</guimenu>
+                  <guisubmenu>Search Engine</guisubmenu>
+                  <guimenuitem>MetaGer</guimenuitem>
+                </menuchoice>
+              </term>
+
+              <listitem>
+                <para>
+                  Use MetaGer as the search engine.
+                </para>
+              </listitem>
+            </varlistentry>
+
+            <!-- Google. -->
+            <varlistentry id="search-engine-google">
+              <term>
+                <menuchoice>
+                  <shortcut>
+                    <keycombo action="simul">&Ctrl;&Shift;<keycap>G</keycap></keycombo>
+                  </shortcut>
+                  <guimenu>On-The-Fly Settings</guimenu>
+                  <guisubmenu>Search Engine</guisubmenu>
+                  <guimenuitem>Google</guimenuitem>
+                </menuchoice>
+              </term>
+
+              <listitem>
+                <para>
+                  Use Google as the search engine.
+                </para>
+              </listitem>
+            </varlistentry>
+
+            <!-- Bing. -->
+            <varlistentry id="search-engine-bing">
+              <term>
+                <menuchoice>
+                  <shortcut>
+                    <keycombo action="simul">&Ctrl;&Shift;<keycap>B</keycap></keycombo>
+                  </shortcut>
+                  <guimenu>On-The-Fly Settings</guimenu>
+                  <guisubmenu>Search Engine</guisubmenu>
+                  <guimenuitem>Bing</guimenuitem>
+                </menuchoice>
+              </term>
+
+              <listitem>
+                <para>
+                  Use Bing as the search engine.
+                </para>
+              </listitem>
+            </varlistentry>
+
+            <!-- Yahoo. -->
+            <varlistentry id="search-engine-yahoo">
+              <term>
+                <menuchoice>
+                  <shortcut>
+                    <keycombo action="simul">&Ctrl;&Shift;<keycap>Y</keycap></keycombo>
+                  </shortcut>
+                  <guimenu>On-The-Fly Settings</guimenu>
+                  <guisubmenu>Search Engine</guisubmenu>
+                  <guimenuitem>Yahoo</guimenuitem>
+                </menuchoice>
+              </term>
+
+              <listitem>
+                <para>
+                  Use Yahoo as the search engine.
+                </para>
+              </listitem>
+            </varlistentry>
+
+            <!-- Custom Search Engine. -->
+            <varlistentry id="search-engine-custom">
+              <term>
+                <menuchoice>
+                  <shortcut>
+                    <keycombo action="simul">&Ctrl;&Shift;<keycap>C</keycap></keycombo>
+                  </shortcut>
+                  <guimenu>On-The-Fly Settings</guimenu>
+                  <guisubmenu>Search Engine</guisubmenu>
+                  <guimenuitem>Custom</guimenuitem>
+                </menuchoice>
+              </term>
+
+              <listitem>
+                <para>
+                  Use the custom search engine. This action is only active if a custom search engine is set in the settings.
+                </para>
+              </listitem>
+            </varlistentry>
+          </variablelist>
+        </sect3>
+      </sect2>
+
+      <!-- Settings. -->
+      <sect2>
+        <title>Settings</title>
+
+        <variablelist>
+          <!-- Domain Settings. -->
+          <varlistentry id="settings-domain-settings">
+            <term>
+              <menuchoice>
+                <shortcut>
+                  <keycombo action="simul">&Ctrl;<keycap>D</keycap></keycombo>
+                </shortcut>
+                <guimenu>Settings</guimenu>
+                <guimenuitem>Domain Settings</guimenuitem>
+              </menuchoice>
+            </term>
+
+            <listitem>
+              <para>
+                Display the domain settings dialog.
+              </para>
+            </listitem>
+          </varlistentry>
+
+
+          <!-- Cookies. -->
+          <varlistentry id="settings-cookies">
+            <term>
+              <menuchoice>
+                <shortcut>
+                  <keycombo action="simul">&Ctrl;<keycap>;</keycap></keycombo>
+                </shortcut>
+                <guimenu>Settings</guimenu>
+                <guimenuitem>Cookies</guimenuitem>
+              </menuchoice>
+            </term>
+
+            <listitem>
+              <para>
+                Display the cookies dialog.
+              </para>
+            </listitem>
+          </varlistentry>
+        </variablelist>
       </sect2>
 
-      <sect2 id="help-menu1">
-        <title>The Help Menu</title>
+      <!-- Common Settings and Help Entries. -->
+      <sect2 id="common-settings-help-menus">
+        <title>Common Settings and Help Entries</title>
 
         <para>
-          &privacybrowser; has the common &kde; <guimenu>Help</guimenu> menu item, for more information read the section
-          about the <ulink url="help:/fundamentals/ui.html#menus-help">Help Menu</ulink> of the &kde; Fundamentals.
+          &privacybrowser; has many common &kde; <guimenu>Settings</guimenu> and <guimenu>Help</guimenu> menu items.
+          For more information read the sections about the <ulink url="help:/fundamentals/ui.html#menus-settings">Settings Menu</ulink>
+          and <ulink url="help:/fundamentals/ui.html#menus-help">Help Menu</ulink>.
         </para>
       </sect2>
 
-      <sect2 id="menu-commands">
-        <title>Menu Items</title>
+      <!-- Other Commands. -->
+      <sect2>
+        <title>Other Commands</title>
+
+        <variablelist>
+          <!-- F11. -->
+          <varlistentry id="f11">
+            <term>
+              <command>
+                <keycap>F11</keycap>
+              </command>
+            </term>
+
+            <listitem>
+              <para>
+                Toggle full screen mode. This performs the same action as <xref linkend="view-full-screen-mode"/>.
+              </para>
+            </listitem>
+          </varlistentry>
+
+          <!-- Escape. -->
+          <varlistentry id="escape">
+            <term>
+              <command>
+                <keycap>&Esc;</keycap>
+              </command>
+            </term>
+
+            <listitem>
+              <para>
+                Escape runs the first command that applies from the following list.
+              </para>
+
+              <itemizedlist>
+                <listitem>
+                  <para>
+                    Exit full screen browsing.
+                  </para>
+                </listitem>
+
+                <listitem>
+                  <para>
+                    Clear the find text line edit and the find text highlights.
+                  </para>
+                </listitem>
+
+                <listitem>
+                  <para>
+                    Hide the find text toolbar.
+                  </para>
+                </listitem>
+              </itemizedlist>
+            </listitem>
+          </varlistentry>
+        </variablelist>
+      </sect2>
+    </sect1>
 
-        <para>
-          Apart from the common &kde; menus described in the <ulink url="help:/fundamentals/ui.html#menus">Menu</ulink>
-          chapter of the &kde; Fundamentals documentation &privacybrowser; has these application specific menu entries:
-        </para>
+    <!-- Cookies Dialog. -->
+    <sect1 id="cookies-dialog">
+      <title>Cookies Dialog</title>
+
+      <para>
+        The cookies dialog is accessed through <xref linkend="settings-cookies"/> (see <xref linkend="cookies"/>).
+      </para>
+
+      <sect2 id="cookies-dialog-commands">
+        <title>Commands</title>
+
+        <variablelist>
+          <!-- Add Cookie. -->
+          <varlistentry id="add-cookie">
+            <term>
+              <command>
+                <keycap>A</keycap>
+              </command>
+            </term>
+
+            <listitem>
+              <para>
+                Open the add cookie dialog.
+              </para>
+            </listitem>
+          </varlistentry>
+
+          <!-- Edit Cookie. -->
+          <varlistentry id="edit-cookie">
+            <term>
+              <command>
+                <keycap>E</keycap>
+              </command>
+            </term>
+
+            <listitem>
+              <para>
+                Open the edit cookie dialog. This command is only valid if a cookie is currently selected.
+              </para>
+            </listitem>
+          </varlistentry>
+
+          <!-- Delete Cookies. -->
+          <varlistentry id="delete-cookies">
+            <term>
+              <command>
+                <keycap>D</keycap> or <keycap>&Del;</keycap>
+              </command>
+            </term>
+
+            <listitem>
+              <para>
+                Delete the currently selected cookies. A dialog will confirm the deletion before it is processed.
+              </para>
+            </listitem>
+          </varlistentry>
+
+          <!-- Delete All Cookies. -->
+          <varlistentry id="delete-all-cookie">
+            <term>
+              <command>
+                <keycap>L</keycap>
+              </command>
+            </term>
+
+            <listitem>
+              <para>
+                Delete all the cookies. A dialog will confirm the deletion before it is processed.
+              </para>
+            </listitem>
+          </varlistentry>
+
+          <!-- Close. -->
+          <varlistentry id="close-cookies-dialog">
+            <term>
+              <command>
+                <keycap>C</keycap> or <keycombo action="simul">&Ctrl;<keycap>Q</keycap></keycombo>
+              </command>
+            </term>
+
+            <listitem>
+              <para>
+                Close the cookies dialog.
+              </para>
+            </listitem>
+          </varlistentry>
+        </variablelist>
       </sect2>
+    </sect1>
 
-      <sect2 id="help-menu2">
-        <title>The Help Menu</title>
+    <!-- Save Dialog. -->
+    <sect1 id="save-dialog">
+      <title>Save Dialog</title>
 
-        <para>
-          &privacybrowser; has a default &kde; <guimenu>Help</guimenu> menu as described in the
-          <ulink url="help:/fundamentals/ui.html#menus-help">&kde; Fundamentals</ulink>
-          with two additional entries:
-        </para>
+      <para>
+        The save dialog pops up when a download is initiated.
+      </para>
+
+      <sect2 id="save-dialog-commands">
+        <title>Commands</title>
+
+        <variablelist>
+          <!-- Save. -->
+          <varlistentry id="save-dialog-save">
+            <term>
+              <command>
+                <keycap>S</keycap>
+              </command>
+            </term>
+
+            <listitem>
+              <para>
+                Save the file.
+              </para>
+            </listitem>
+          </varlistentry>
+
+          <!-- Close. -->
+          <varlistentry id="save-dialog-close">
+            <term>
+              <command>
+                <keycap>C</keycap> or <keycombo action="simul">&Ctrl;<keycap>Q</keycap></keycombo>
+              </command>
+            </term>
+
+            <listitem>
+              <para>
+                Close the save dialog without saving the file.
+              </para>
+            </listitem>
+          </varlistentry>
+        </variablelist>
       </sect2>
     </sect1>
   </chapter>
   <chapter id="faq">
     <title>Questions and Answers</title>
 
-    <!-- (OPTIONAL but recommended) This chapter should include all of the silly
-    (and not-so-silly) newbie questions that fill up your mailbox. This chapter
-    should be reserved for BRIEF questions and answers! If one question uses more
-    than a page or so then it should probably be part of the
-    "Using this Application" chapter instead. You should use links to
-    cross-reference questions to the parts of your documentation that answer them.
-    This is also a great place to provide pointers to other FAQ's if your users
-    must do some complicated configuration on other programs in order for your
-    application work. -->
-
     <qandaset id="faqlist">
       <qandaentry>
+        <!-- Why are there no questions. -->
         <question>
-          <para>My Mouse doesn't work. How do I quit &privacybrowser;?</para>
-        </question>
-
-        <answer>
-          <para>You silly goose! Check out the <link linkend="commands">Commands Section</link> for the answer.</para>
-        </answer>
-      </qandaentry>
-
-      <qandaentry>
-        <question>
-          <para>Why can I not twiddle my documents?</para>
+          <para>Why are there no questions?</para>
         </question>
 
         <answer>
-          <para>
-            You can only twiddle your documents if you have the foobar.lib installed.
-          </para>
+          <para>Because Privacy Browser is so perfectly designed that none have ever been asked. Also, because this is the first release and nobody has had a chance to ask them yet. ;)</para>
         </answer>
       </qandaentry>
     </qandaset>
diff --git a/doc/javascript.png b/doc/javascript.png
new file mode 100644 (file)
index 0000000..b06507a
Binary files /dev/null and b/doc/javascript.png differ
diff --git a/doc/privacybrowser.png b/doc/privacybrowser.png
new file mode 100644 (file)
index 0000000..dce0281
Binary files /dev/null and b/doc/privacybrowser.png differ
index 4cf447629c5039f821dc7283e856cd73aa55e48e..2372941ff0776adf47f919e8620d1c775b91158d 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright © 2022 Soren Stoutner <soren@stoutner.com>.
+# Copyright © 2022-2023 Soren Stoutner <soren@stoutner.com>.
 #
 # This file is part of Privacy Browser PC <https://www.stoutner.com/privacy-browser-pc>.
 #
 # You should have received a copy of the GNU General Public License
 # along with Privacy Browser PC.  If not, see <http://www.gnu.org/licenses/>.
 
-
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-01-29 11:34-0700\n"
+"POT-Creation-Date: 2023-03-09 11:29-0700\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "Language: \n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=CHARSET\n"
 "Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
 
-#: src/mainwindow.cpp:74
+#: src/widgets/TabWidget.cpp:151
 #, kde-format
-msgctxt "@title:tab"
-msgid "General"
+msgctxt "New tab label."
+msgid "New Tab"
+msgstr ""
+
+#: src/widgets/TabWidget.cpp:739 src/widgets/TabWidget.cpp:987
+#, kde-format
+msgctxt "Save file dialog caption"
+msgid "Save File"
+msgstr ""
+
+#: src/widgets/TabWidget.cpp:759 src/widgets/TabWidget.cpp:789
+#, kde-format
+msgctxt "Download notification title"
+msgid "Download"
+msgstr ""
+
+#: src/widgets/TabWidget.cpp:762
+#, kde-format
+msgctxt "Downloading notification text"
+msgid "Downloading %1"
+msgstr ""
+
+#: src/widgets/TabWidget.cpp:768
+#, kde-format
+msgctxt "Download notification action"
+msgid "Cancel"
+msgstr ""
+
+#: src/widgets/TabWidget.cpp:792
+#, kde-format
+msgctxt "Download canceled notification"
+msgid "%1 download canceled"
+msgstr ""
+
+#: src/widgets/TabWidget.cpp:811
+#, kde-format
+msgctxt "Download progress notification text"
+msgid "%1% of %2 downloaded (%3 of %4 bytes)"
+msgstr ""
+
+#: src/widgets/TabWidget.cpp:817
+#, kde-format
+msgctxt "Download progress notification text"
+msgid "%1:  %2 bytes downloaded"
+msgstr ""
+
+#: src/widgets/TabWidget.cpp:828
+#, kde-format
+msgctxt "Download finished notification text"
+msgid "%1 download finished"
+msgstr ""
+
+#: src/dialogs/SaveDialog.cpp:36
+#, kde-format
+msgctxt "The save dialog window title"
+msgid "Save"
+msgstr ""
+
+#: src/dialogs/SaveDialog.cpp:84
+#, kde-format
+msgctxt "Unknown download file size.  The bold style should be preserved."
+msgid "<b>unknown</b>"
+msgstr ""
+
+#: src/dialogs/SaveDialog.cpp:86
+#, kde-format
+msgctxt "Download file size.  The bold style should be preserved."
+msgid "<b>%1 bytes</b>"
+msgstr ""
+
+#: src/dialogs/SaveDialog.cpp:89
+#, kde-format
+msgctxt "The save key shortcut."
+msgid "s"
+msgstr ""
+
+#: src/dialogs/SaveDialog.cpp:90 src/dialogs/CookiesDialog.cpp:281
+#, kde-format
+msgctxt "The close key shortcut."
+msgid "c"
+msgstr ""
+
+#: src/dialogs/DurableCookiesDialog.cpp:32
+#, kde-format
+msgctxt "The durable cookies dialog window title"
+msgid "Durable Cookies"
+msgstr ""
+
+#: src/dialogs/DomainSettingsDialog.cpp:40
+#, kde-format
+msgctxt "The domain settings dialog window title"
+msgid "Domain Settings"
+msgstr ""
+
+#: src/dialogs/DomainSettingsDialog.cpp:382
+#, kde-format
+msgctxt "Domain settings DOM storage label."
+msgid "DOM storage enabled"
+msgstr ""
+
+#: src/dialogs/DomainSettingsDialog.cpp:384
+#, kde-format
+msgctxt "Domain settings DOM storage label."
+msgid "DOM storage disabled"
+msgstr ""
+
+#: src/dialogs/DomainSettingsDialog.cpp:395
+#, kde-format
+msgctxt "Domain settings DOM storage label.  The <b> tags should be retained."
+msgid "<b>DOM storage disabled</b>"
+msgstr ""
+
+#: src/dialogs/DomainSettingsDialog.cpp:406
+#, kde-format
+msgctxt "Domain settings DOM storage label.  The <b> tags should be retained."
+msgid "<b>DOM storage enabled</b>"
+msgstr ""
+
+#: src/dialogs/DomainSettingsDialog.cpp:425
+#, kde-format
+msgctxt "Domain settings JavaScript label."
+msgid "JavaScript enabled"
+msgstr ""
+
+#: src/dialogs/DomainSettingsDialog.cpp:427
+#, kde-format
+msgctxt "Domain settings JavaScript label."
+msgid "JavaScript disabled"
+msgstr ""
+
+#: src/dialogs/DomainSettingsDialog.cpp:438
+#, kde-format
+msgctxt "Domain settings JavaScript label.  The <b> tags should be retained."
+msgid "<b>JavaScript disabled</b>"
+msgstr ""
+
+#: src/dialogs/DomainSettingsDialog.cpp:449
+#, kde-format
+msgctxt "Domain settings JavaScript label.  The <b> tags should be retained."
+msgid "<b>JavaScript enabled</b>"
+msgstr ""
+
+#: src/dialogs/DomainSettingsDialog.cpp:468
+#, kde-format
+msgctxt "Domain settings local storage label."
+msgid "Local storage enabled"
+msgstr ""
+
+#: src/dialogs/DomainSettingsDialog.cpp:470
+#, kde-format
+msgctxt "Domain settings local storage label."
+msgid "Local storage disabled"
+msgstr ""
+
+#: src/dialogs/DomainSettingsDialog.cpp:481
+#, kde-format
+msgctxt ""
+"Domain settings local storage label.  The <b> tags should be retained."
+msgid "<b>Local storage disabled</b>"
+msgstr ""
+
+#: src/dialogs/DomainSettingsDialog.cpp:492
+#, kde-format
+msgctxt ""
+"Domain settings local storage label.  The <b> tabs should be retained."
+msgid "<b>Local storage enabled</b>"
+msgstr ""
+
+#: src/dialogs/DomainSettingsDialog.cpp:542
+#, kde-format
+msgctxt "Add domain dialog title"
+msgid "Add Domain"
+msgstr ""
+
+#: src/dialogs/DomainSettingsDialog.cpp:544
+#, kde-format
+msgctxt ""
+"Add domain message.  The \n"
+"\n"
+" are newline codes that should be retained"
+msgid ""
+"Add a new domain.  Doing so will also save any pending changes that have "
+"been made to other domains.\n"
+"\n"
+"*. may be prepended to a domain to include all subdomains (eg. *.stoutner."
+"com)."
+msgstr ""
+
+#: src/dialogs/DomainSettingsDialog.cpp:561
+#, kde-format
+msgctxt "Delete domain dialog title"
+msgid "Delete Domain"
+msgstr ""
+
+#: src/dialogs/DomainSettingsDialog.cpp:564
+#, kde-format
+msgctxt "Delete domain dialog main message"
+msgid "Delete the current domain?"
+msgstr ""
+
+#: src/dialogs/DomainSettingsDialog.cpp:567
+#, kde-format
+msgctxt "Delete domain dialog secondary message"
+msgid ""
+"Doing so will also save any pending changes that have been made to other "
+"domains."
+msgstr ""
+
+#: src/dialogs/AddOrEditCookieDialog.cpp:41
+#, kde-format
+msgctxt "The add cookie dialog window title."
+msgid "Add Cookie"
+msgstr ""
+
+#: src/dialogs/AddOrEditCookieDialog.cpp:43
+#, kde-format
+msgctxt "The edit cookie dialog window title."
+msgid "Edit Cookie"
+msgstr ""
+
+#: src/dialogs/CookiesDialog.cpp:124
+#, kde-format
+msgctxt "The cookies dialog window title"
+msgid "Cookies"
+msgstr ""
+
+#: src/dialogs/CookiesDialog.cpp:145
+#, kde-format
+msgctxt "The cookie Name header."
+msgid "Name"
+msgstr ""
+
+#: src/dialogs/CookiesDialog.cpp:146
+#, kde-format
+msgctxt "The cookie Durable header."
+msgid "Durable"
+msgstr ""
+
+#: src/dialogs/CookiesDialog.cpp:147
+#, kde-format
+msgctxt "The cookie Path header."
+msgid "Path"
+msgstr ""
+
+#: src/dialogs/CookiesDialog.cpp:148
+#, kde-format
+msgctxt "The cookie Expiration Date header."
+msgid "Expiration Date"
+msgstr ""
+
+#: src/dialogs/CookiesDialog.cpp:149
+#, kde-format
+msgctxt "The cookie HTTP Only header."
+msgid "HTTP Only"
+msgstr ""
+
+#: src/dialogs/CookiesDialog.cpp:150
+#, kde-format
+msgctxt "The cookie Secure header."
+msgid "Secure"
+msgstr ""
+
+#: src/dialogs/CookiesDialog.cpp:151
+#, kde-format
+msgctxt "The cookie Value header."
+msgid "Value"
+msgstr ""
+
+#: src/dialogs/CookiesDialog.cpp:155
+#, kde-format
+msgctxt "The cookie Name tool tip."
+msgid ""
+"The name identifies the cookie.  Each cookie has a unique combination of "
+"domain, name, and path."
+msgstr ""
+
+#: src/dialogs/CookiesDialog.cpp:157
+#, kde-format
+msgctxt "The cookie Durable tool tip"
+msgid ""
+"Durable cookies persist across restarts, irrespective of the expiration "
+"date. All other cookies are deleted when Privacy Browser closes, "
+"irrespective of the expiration date."
+msgstr ""
+
+#: src/dialogs/CookiesDialog.cpp:158
+#, kde-format
+msgctxt "The cookie Path tool tip."
+msgid "Websites can restrict cookie access to subpath of their URL."
+msgstr ""
+
+#: src/dialogs/CookiesDialog.cpp:160
+#, kde-format
+msgctxt "The cookie Expiration Date tool tip."
+msgid ""
+"Cookies without an expiration date are known as session cookies and are "
+"expected to be deleted every time the browser closes."
+msgstr ""
+
+#: src/dialogs/CookiesDialog.cpp:162
+#, kde-format
+msgctxt "The cookie HTTP Only tool tip."
+msgid ""
+"Restrict cookie access to HTTP (and HTTPS). This prevents JavaScript from "
+"accessing the cookie, which hardens it against cross-site scripting attacks."
+msgstr ""
+
+#: src/dialogs/CookiesDialog.cpp:163
+#, kde-format
+msgctxt "The cookie Secure tool tip."
+msgid ""
+"Only allow the cookie to be transferred across HTTPS (as opposed to HTTP)."
+msgstr ""
+
+#: src/dialogs/CookiesDialog.cpp:164
+#, kde-format
+msgctxt "The cookie Value tool tip."
+msgid "The value contains the cookie data."
+msgstr ""
+
+#: src/dialogs/CookiesDialog.cpp:205 src/dialogs/CookiesDialog.cpp:208
+#: src/dialogs/CookiesDialog.cpp:209 src/dialogs/CookiesDialog.cpp:409
+#: src/dialogs/CookiesDialog.cpp:412 src/dialogs/CookiesDialog.cpp:413
+#: src/dialogs/CookiesDialog.cpp:786
+#, kde-format
+msgid "yes"
+msgstr ""
+
+#: src/dialogs/CookiesDialog.cpp:205 src/dialogs/CookiesDialog.cpp:208
+#: src/dialogs/CookiesDialog.cpp:209 src/dialogs/CookiesDialog.cpp:409
+#: src/dialogs/CookiesDialog.cpp:412 src/dialogs/CookiesDialog.cpp:413
+#, kde-format
+msgid "no"
+msgstr ""
+
+#: src/dialogs/CookiesDialog.cpp:258 src/dialogs/CookiesDialog.cpp:827
+#, kde-format
+msgctxt "View the durable cookies button"
+msgid "Durable cookies - %1"
+msgstr ""
+
+#: src/dialogs/CookiesDialog.cpp:276
+#, kde-format
+msgctxt "The add cookie key shortcut."
+msgid "a"
+msgstr ""
+
+#: src/dialogs/CookiesDialog.cpp:277
+#, kde-format
+msgctxt "The edit cookie key shortcut."
+msgid "e"
+msgstr ""
+
+#: src/dialogs/CookiesDialog.cpp:278
+#, kde-format
+msgctxt "The delete cookie key shortcut."
+msgid "d"
+msgstr ""
+
+#: src/dialogs/CookiesDialog.cpp:280
+#, kde-format
+msgctxt "The delete all key shortcut."
+msgid "l"
+msgstr ""
+
+#: src/dialogs/CookiesDialog.cpp:618
+#, kde-format
+msgctxt "Delete all cookies dialog title"
+msgid "Delete All Cookies"
+msgstr ""
+
+#: src/dialogs/CookiesDialog.cpp:621
+#, kde-format
+msgctxt "Delete all cookies dialog text"
+msgid "Delete all cookies?"
+msgstr ""
+
+#: src/dialogs/CookiesDialog.cpp:624 src/dialogs/CookiesDialog.cpp:686
+#, kde-format
+msgctxt "Delete durable cookies check box"
+msgid "Delete even if durable"
+msgstr ""
+
+#: src/dialogs/CookiesDialog.cpp:694
+#, kde-format
+msgctxt "Delete cookies dialog title"
+msgid "Delete %1 Cookie"
+msgid_plural "Delete 1% Cookies"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/dialogs/CookiesDialog.cpp:697
+#, kde-format
+msgctxt "Delete cookies dialog text"
+msgid "Delete %1 cookie?"
+msgid_plural "Delete %1 cookies?"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/dialogs/CookiesDialog.cpp:702
+#, kde-format
+msgctxt "Delete cookie dialog title"
+msgid "Delete 1 Cookie"
+msgstr ""
+
+#: src/dialogs/CookiesDialog.cpp:705
+#, kde-format
+msgctxt "Delete cookie dialog text"
+msgid "Delete 1 cookie?"
+msgstr ""
+
+#: src/dialogs/CookiesDialog.cpp:812
+#, kde-format
+msgctxt "Delete cookies button."
+msgid "&Delete %1 cookie"
+msgid_plural "&Delete %1 cookies"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/dialogs/CookiesDialog.cpp:817
+#, kde-format
+msgctxt "Delete cookies button."
+msgid "&Delete 1 cookie"
+msgstr ""
+
+#: src/dialogs/CookiesDialog.cpp:823
+#, kde-format
+msgctxt "Delete cookie button."
+msgid "&Delete cookie"
+msgstr ""
+
+#: src/interceptors/UrlRequestInterceptor.cpp:50
+#, kde-format
+msgctxt "HTTP Ping blocked dialog title"
+msgid "HTTP Ping Blocked"
+msgstr ""
+
+#: src/interceptors/UrlRequestInterceptor.cpp:53
+#, kde-format
+msgctxt "HTTP Ping blocked dialog text"
+msgid ""
+"This request has been blocked because it sends a naughty HTTP ping to %1."
 msgstr ""
 
-#: src/main.cpp:46
+#: src/main.cpp:48
 #, kde-format
+msgctxt "Program Name"
 msgid "Privacy Browser"
 msgstr ""
 
-#: src/main.cpp:49
+#: src/main.cpp:51
 #, kde-format
+msgctxt "Developer Information"
 msgid "Soren Stoutner"
 msgstr ""
 
-#: src/main.cpp:49
+#: src/main.cpp:51
 #, kde-format
+msgctxt "Developer Information"
 msgid "Principal developer"
 msgstr ""
 
-#: src/main.cpp:53
+#: src/main.cpp:56
 #, kde-format
-msgid "Copyright © 2016-2017,2021-2022 Soren Stoutner <soren@stoutner.com>"
+msgctxt "Copyright"
+msgid "Copyright 2016-2017,2021-2023 Soren Stoutner <soren@stoutner.com>"
 msgstr ""
 
-#: src/main.cpp:58
+#: src/main.cpp:62
 #, kde-format
+msgctxt "Tagline"
 msgid "A web browser that respects your privacy."
 msgstr ""
 
-#: rc.cpp:3
+#: src/helpers/UserAgentHelper.cpp:51
 #, kde-format
-msgid "Zoom factor"
+msgctxt "User agents"
+msgid "System default"
 msgstr ""
 
-#: rc.cpp:6
+#: src/helpers/UserAgentHelper.cpp:52
 #, kde-format
-msgid "Set the zoom factor between 0.25 and 5.00."
+msgctxt "User agents"
+msgid "Privacy Browser"
 msgstr ""
 
-#: rc.cpp:9
+#: src/helpers/UserAgentHelper.cpp:53
 #, kde-format
-msgid "Set the zoom factor between 0.25 and 5.00.  The default is 1.00."
+msgctxt "User agents"
+msgid "WebEngine default"
 msgstr ""
 
-#: rc.cpp:12
+#: src/helpers/UserAgentHelper.cpp:54
+#, kde-format
+msgctxt "User agents"
+msgid "Firefox on Linux"
+msgstr ""
+
+#: src/helpers/UserAgentHelper.cpp:55
+#, kde-format
+msgctxt "User agents"
+msgid "Chromium on Linux"
+msgstr ""
+
+#: src/helpers/UserAgentHelper.cpp:56
+#, kde-format
+msgctxt "User agents"
+msgid "Firefox on Windows"
+msgstr ""
+
+#: src/helpers/UserAgentHelper.cpp:57
+#, kde-format
+msgctxt "User agents"
+msgid "Chrome on Windows"
+msgstr ""
+
+#: src/helpers/UserAgentHelper.cpp:58
+#, kde-format
+msgctxt "User agents"
+msgid "Edge on Windows"
+msgstr ""
+
+#: src/helpers/UserAgentHelper.cpp:59
+#, kde-format
+msgctxt "User agents"
+msgid "Safari on macOS"
+msgstr ""
+
+#: src/windows/BrowserWindow.cpp:151
+#, kde-format
+msgctxt "New tab action"
+msgid "New Tab"
+msgstr ""
+
+#: src/windows/BrowserWindow.cpp:152
+#, kde-format
+msgctxt "New window action"
+msgid "New Window"
+msgstr ""
+
+#: src/windows/BrowserWindow.cpp:161
+#, kde-format
+msgctxt "Search engine"
+msgid "Mojeek"
+msgstr ""
+
+#: src/windows/BrowserWindow.cpp:162
+#, kde-format
+msgctxt "Search engine"
+msgid "Monocles"
+msgstr ""
+
+#: src/windows/BrowserWindow.cpp:163
+#, kde-format
+msgctxt "Search engine"
+msgid "MetaGer"
+msgstr ""
+
+#: src/windows/BrowserWindow.cpp:164
+#, kde-format
+msgctxt "Search engine"
+msgid "Google"
+msgstr ""
+
+#: src/windows/BrowserWindow.cpp:165
+#, kde-format
+msgctxt "Search engine"
+msgid "Bing"
+msgstr ""
+
+#: src/windows/BrowserWindow.cpp:166
+#, kde-format
+msgctxt "Search engine"
+msgid "Yahoo"
+msgstr ""
+
+#: src/windows/BrowserWindow.cpp:167
+#, kde-format
+msgctxt "Domain Settings action"
+msgid "Domain Settings"
+msgstr ""
+
+#: src/windows/BrowserWindow.cpp:168 src/windows/BrowserWindow.cpp:946
+#, kde-format
+msgctxt "The Cookies action, which also displays the number of cookies"
+msgid "Cookies - %1"
+msgstr ""
+
+#: src/windows/BrowserWindow.cpp:169
+#, kde-format
+msgctxt "JavaScript action"
+msgid "JavaScript"
+msgstr ""
+
+#: src/windows/BrowserWindow.cpp:170
+#, kde-format
+msgctxt "The Local Storage action"
+msgid "Local Storage"
+msgstr ""
+
+#: src/windows/BrowserWindow.cpp:171
+#, kde-format
+msgctxt "DOM Storage action"
+msgid "DOM Storage"
+msgstr ""
+
+#: src/windows/BrowserWindow.cpp:172
+#, kde-format
+msgctxt "Find Case Sensitive action"
+msgid "Find Case Sensitive"
+msgstr ""
+
+#: src/windows/BrowserWindow.cpp:173
+#, kde-format
+msgctxt "Hide Find Text action"
+msgid "Hide Find Text"
+msgstr ""
+
+#: src/windows/BrowserWindow.cpp:202
+#, kde-format
+msgctxt "The open new tab key sequence."
+msgid "Ctrl+T"
+msgstr ""
+
+#: src/windows/BrowserWindow.cpp:203
+#, kde-format
+msgctxt "The open new window key sequence."
+msgid "Ctrl+N"
+msgstr ""
+
+#: src/windows/BrowserWindow.cpp:204
+#, kde-format
+msgctxt "The print preview key sequence."
+msgid "Ctrl+Shift+P"
+msgstr ""
+
+#: src/windows/BrowserWindow.cpp:205
+#, kde-format
+msgctxt "The Privacy Browser user agent key sequence."
+msgid "Ctrl+Alt+P"
+msgstr ""
+
+#: src/windows/BrowserWindow.cpp:206
+#, kde-format
+msgctxt "The WebEngine Default user agent key sequence."
+msgid "Ctrl+Alt+W"
+msgstr ""
+
+#: src/windows/BrowserWindow.cpp:207
+#, kde-format
+msgctxt "The Firefox on Linux user agent key sequence."
+msgid "Ctrl+Alt+F"
+msgstr ""
+
+#: src/windows/BrowserWindow.cpp:208
+#, kde-format
+msgctxt "The Chromium on Linux user agent key sequence."
+msgid "Ctrl+Alt+C"
+msgstr ""
+
+#: src/windows/BrowserWindow.cpp:209
+#, kde-format
+msgctxt "The Firefox on Windows user agent key sequence."
+msgid "Ctrl+Alt+Shift+F"
+msgstr ""
+
+#: src/windows/BrowserWindow.cpp:210
+#, kde-format
+msgctxt "The Chrome on Windows user agent key sequence."
+msgid "Ctrl+Alt+Shift+C"
+msgstr ""
+
+#: src/windows/BrowserWindow.cpp:211
+#, kde-format
+msgctxt "The Edge on Windows user agent key sequence."
+msgid "Ctrl+Alt+E"
+msgstr ""
+
+#: src/windows/BrowserWindow.cpp:212
+#, kde-format
+msgctxt "The Safari on macOS user agent key sequence."
+msgid "Ctrl+Alt+S"
+msgstr ""
+
+#: src/windows/BrowserWindow.cpp:213
+#, kde-format
+msgctxt "The custom user agent key sequence."
+msgid "Alt+Shift+C"
+msgstr ""
+
+#: src/windows/BrowserWindow.cpp:214
+#, kde-format
+msgctxt "The zoom factor key sequence."
+msgid "Ctrl+Alt+Z"
+msgstr ""
+
+#: src/windows/BrowserWindow.cpp:215
+#, kde-format
+msgctxt "The Mojeek search engine key sequence."
+msgid "Ctrl+Shift+M"
+msgstr ""
+
+#: src/windows/BrowserWindow.cpp:216
+#, kde-format
+msgctxt "The Monocles search engine key sequence."
+msgid "Ctrl+Shift+O"
+msgstr ""
+
+#: src/windows/BrowserWindow.cpp:217
+#, kde-format
+msgctxt "The MetaGer search engine key sequence."
+msgid "Ctrl+Shift+E"
+msgstr ""
+
+#: src/windows/BrowserWindow.cpp:218
+#, kde-format
+msgctxt "The Google search engine key sequence."
+msgid "Ctrl+Shift+G"
+msgstr ""
+
+#: src/windows/BrowserWindow.cpp:219
+#, kde-format
+msgctxt "The Bing search engine key sequence."
+msgid "Ctrl+Shift+B"
+msgstr ""
+
+#: src/windows/BrowserWindow.cpp:220
+#, kde-format
+msgctxt "The Yahoo search engine key sequence."
+msgid "Ctrl+Shift+Y"
+msgstr ""
+
+#: src/windows/BrowserWindow.cpp:221
+#, kde-format
+msgctxt "The custom search engine key sequence."
+msgid "Ctrl+Shift+C"
+msgstr ""
+
+#: src/windows/BrowserWindow.cpp:222
+#, kde-format
+msgctxt "The domain settings key sequence."
+msgid "Ctrl+D"
+msgstr ""
+
+#: src/windows/BrowserWindow.cpp:223
+#, kde-format
+msgctxt "The cookies dialog key sequence."
+msgid "Ctrl+;"
+msgstr ""
+
+#: src/windows/BrowserWindow.cpp:329
+#, kde-format
+msgctxt "The URL line edit placeholder text"
+msgid "URL or Search Terms"
+msgstr ""
+
+#: src/windows/BrowserWindow.cpp:330
+#, kde-format
+msgctxt "The find line edit placeholder text"
+msgid "Find Text"
+msgstr ""
+
+#: src/windows/BrowserWindow.cpp:345
+#, kde-format
+msgctxt "Default find results."
+msgid "0/0"
+msgstr ""
+
+#: src/windows/BrowserWindow.cpp:411
+#, kde-format
+msgctxt "The toggle full screen shortcut."
+msgid "F11"
+msgstr ""
+
+#: src/windows/BrowserWindow.cpp:455
+#, kde-format
+msgctxt "The domain settings dialog title"
+msgid "Domain Settings"
+msgstr ""
+
+#: src/windows/BrowserWindow.cpp:569
+#, kde-format
+msgctxt "The on-the-fly zoom factor dialog title"
+msgid "On-The-Fly Zoom Factor"
+msgstr ""
+
+#: src/windows/BrowserWindow.cpp:570
+#, kde-format
+msgctxt "The instruction text of the on-the-fly zoom factor dialog"
+msgid "Enter a zoom factor between 0.25 and 5.00"
+msgstr ""
+
+#: src/windows/BrowserWindow.cpp:658
+#, kde-format
+msgctxt "Select download location dialog caption"
+msgid "Select Download Location"
+msgstr ""
+
+#: src/windows/BrowserWindow.cpp:789
+#, kde-format
+msgctxt "Settings tab title"
+msgid "Privacy"
+msgstr ""
+
+#: src/windows/BrowserWindow.cpp:790
+#, kde-format
+msgctxt "Settings tab title"
+msgid "General"
+msgstr ""
+
+#: src/windows/BrowserWindow.cpp:791
+#, kde-format
+msgctxt "Settings tab title"
+msgid "Spell Check"
+msgstr ""
+
+#: src/windows/BrowserWindow.cpp:1034
+#, kde-format
+msgctxt "The main search engine menu action"
+msgid "Search Engine - Mojeek"
+msgstr ""
+
+#: src/windows/BrowserWindow.cpp:1042
+#, kde-format
+msgctxt "The main search engine menu action"
+msgid "Search Engine - Monocles"
+msgstr ""
+
+#: src/windows/BrowserWindow.cpp:1050
+#, kde-format
+msgctxt "The main search engine menu action"
+msgid "Search Engine - MetaGer"
+msgstr ""
+
+#: src/windows/BrowserWindow.cpp:1058
+#, kde-format
+msgctxt "The main search engine menu action"
+msgid "Search Engine - Google"
+msgstr ""
+
+#: src/windows/BrowserWindow.cpp:1066
+#, kde-format
+msgctxt "The main search engine menu action"
+msgid "Search Engine - Bing"
+msgstr ""
+
+#: src/windows/BrowserWindow.cpp:1074
+#, kde-format
+msgctxt "The main search engine menu action"
+msgid "Search Engine - Yahoo"
+msgstr ""
+
+#: src/windows/BrowserWindow.cpp:1082
+#, kde-format
+msgctxt "The main search engine menu action"
+msgid "Search Engine - Custom"
+msgstr ""
+
+#: src/windows/BrowserWindow.cpp:1107 src/windows/BrowserWindow.cpp:1214
+#, kde-format
+msgctxt "@action"
+msgid "Custom"
+msgstr ""
+
+#: src/windows/BrowserWindow.cpp:1123
+#, kde-format
+msgctxt "The main user agent menu action"
+msgid "User Agent - Privacy Browser"
+msgstr ""
+
+#: src/windows/BrowserWindow.cpp:1131
+#, kde-format
+msgctxt "The main user agent menu action"
+msgid "User Agent - WebEngine default"
+msgstr ""
+
+#: src/windows/BrowserWindow.cpp:1139
+#, kde-format
+msgctxt "The main user agent menu action"
+msgid "User Agent - Firefox on Linux"
+msgstr ""
+
+#: src/windows/BrowserWindow.cpp:1147
+#, kde-format
+msgctxt "The main user agent menu action"
+msgid "User Agent - Chromium on Linux"
+msgstr ""
+
+#: src/windows/BrowserWindow.cpp:1155
+#, kde-format
+msgctxt "The main user agent menu action"
+msgid "User Agent - Firefox on Windows"
+msgstr ""
+
+#: src/windows/BrowserWindow.cpp:1163
+#, kde-format
+msgctxt "The main user agent menu action"
+msgid "User Agent - Chrome on Windows"
+msgstr ""
+
+#: src/windows/BrowserWindow.cpp:1171
+#, kde-format
+msgctxt "The main user agent menu action"
+msgid "User Agent - Edge on Windows"
+msgstr ""
+
+#: src/windows/BrowserWindow.cpp:1179
+#, kde-format
+msgctxt "The main user agent menu action"
+msgid "User Agent - Safari on macOS"
+msgstr ""
+
+#: src/windows/BrowserWindow.cpp:1187
+#, kde-format
+msgctxt "The main user agent menu action"
+msgid "User Agent - Custom"
+msgstr ""
+
+#: src/windows/BrowserWindow.cpp:1224
+#, kde-format
+msgctxt "@action"
+msgid "Zoom Factor - %1"
+msgstr ""
+
+#: rc.cpp:3
+#, kde-format
+msgid "On-The-Fly Settings"
+msgstr ""
+
+#: rc.cpp:6
+#, kde-format
+msgid "Navigation Toolbar"
+msgstr ""
+
+#: rc.cpp:9
+#, kde-format
+msgid "URL Toolbar"
+msgstr ""
+
+#: rc.cpp:12
+#, kde-format
+msgid "Add cookie"
+msgstr ""
+
+#: rc.cpp:15
+#, kde-format
+msgid "Edit cookie"
+msgstr ""
+
+#: rc.cpp:18
+#, kde-format
+msgid "Delete cookie"
+msgstr ""
+
+#: rc.cpp:21
+#, kde-format
+msgid "Delete all"
+msgstr ""
+
+#: rc.cpp:24
+#, kde-format
+msgid "Add domain"
+msgstr ""
+
+#: rc.cpp:27
+#, kde-format
+msgid "Delete domain"
+msgstr ""
+
+#: rc.cpp:30
+#, kde-format
+msgid "Domain name"
+msgstr ""
+
+#: rc.cpp:33
+#, kde-format
+msgid ""
+"*. may be prepended to a domain to include all subdomains (eg. *.stoutner."
+"com)."
+msgstr ""
+
+#: rc.cpp:36 rc.cpp:126
+#, kde-format
+msgid "JavaScript"
+msgstr ""
+
+#: rc.cpp:39
+#, kde-format
+msgid "JavaScript allows websites to run programs (scripts) on the device."
+msgstr ""
+
+#: rc.cpp:42 rc.cpp:57 rc.cpp:72 rc.cpp:87 rc.cpp:120
+#, kde-format
+msgid "System default"
+msgstr ""
+
+#: rc.cpp:45
+#, kde-format
+msgid "JavaScript disabled"
+msgstr ""
+
+#: rc.cpp:48
+#, kde-format
+msgid "JavaScript enabled"
+msgstr ""
+
+#: rc.cpp:51 rc.cpp:132
+#, kde-format
+msgid "Local storage"
+msgstr ""
+
+#: rc.cpp:54 rc.cpp:135
+#, kde-format
+msgid ""
+"Local storage includes cookies, DOM storage, IndexedDB, service workers, and "
+"the filesystem API.  DOM storage also requires a separate control to be "
+"enabled.  Local storage is disabled by default."
+msgstr ""
+
+#: rc.cpp:60
+#, kde-format
+msgid "Local storage disabled"
+msgstr ""
+
+#: rc.cpp:63
+#, kde-format
+msgid "Local storage enabled"
+msgstr ""
+
+#: rc.cpp:66 rc.cpp:138
+#, kde-format
+msgid "DOM storage"
+msgstr ""
+
+#: rc.cpp:69
+#, kde-format
+msgid ""
+"DOM storage, sometimes called web storage, is like cookies on steroids.  To "
+"function, it requires that both JavaScript and local storage be enabled."
+msgstr ""
+
+#: rc.cpp:75
+#, kde-format
+msgid "DOM storage disabled"
+msgstr ""
+
+#: rc.cpp:78
+#, kde-format
+msgid "DOM storage enabled"
+msgstr ""
+
+#: rc.cpp:81 rc.cpp:144
+#, kde-format
+msgid "User agent"
+msgstr ""
+
+#: rc.cpp:84
+#, kde-format
+msgid ""
+"The user agent identifies the browser to the web server.  It serves no "
+"useful purpose, but many web servers refuse to return the web page if they "
+"don't see a user agent they like."
+msgstr ""
+
+#: rc.cpp:90 rc.cpp:150
+#, kde-format
+msgid "Privacy Browser"
+msgstr ""
+
+#: rc.cpp:93
+#, kde-format
+msgid "WebEngine default"
+msgstr ""
+
+#: rc.cpp:96
+#, kde-format
+msgid "Firefox on Linux"
+msgstr ""
+
+#: rc.cpp:99
+#, kde-format
+msgid "Chromium on Linux"
+msgstr ""
+
+#: rc.cpp:102
+#, kde-format
+msgid "Firefox on Windows"
+msgstr ""
+
+#: rc.cpp:105
+#, kde-format
+msgid "Chrome on Windows"
+msgstr ""
+
+#: rc.cpp:108
+#, kde-format
+msgid "Edge on Windows"
+msgstr ""
+
+#: rc.cpp:111
+#, kde-format
+msgid "Safari on macOS"
+msgstr ""
+
+#: rc.cpp:114 rc.cpp:207
+#, kde-format
+msgid "Zoom factor"
+msgstr ""
+
+#: rc.cpp:117
+#, kde-format
+msgid "Valid values for the zoom factor are between 0.25 and 5.00."
+msgstr ""
+
+#: rc.cpp:123
+#, kde-format
+msgid "Custom"
+msgstr ""
+
+#: rc.cpp:129
+#, kde-format
+msgid ""
+"JavaScript allows websites to run programs (scripts) on the device.  The "
+"default is disabled."
+msgstr ""
+
+#: rc.cpp:141
+#, kde-format
+msgid ""
+"DOM storage, sometimes called web storage, is like cookies on steroids.  To "
+"function, it requires that both JavaScript and local storage be enabled.  It "
+"is disabled by default."
+msgstr ""
+
+#: rc.cpp:147
+#, kde-format
+msgid ""
+"The user agent identifies the browser to the web server.  It serves no "
+"useful purpose, but many web servers refuse to return the web page if they "
+"don't see a user agent they like.  The default is Privacy Browser."
+msgstr ""
+
+#: rc.cpp:153
+#, kde-format
+msgid "WebEngine Default"
+msgstr ""
+
+#: rc.cpp:156
+#, kde-format
+msgid "Firefox Linux"
+msgstr ""
+
+#: rc.cpp:159
+#, kde-format
+msgid "Chromium Linux"
+msgstr ""
+
+#: rc.cpp:162
+#, kde-format
+msgid "Firefox Windows"
+msgstr ""
+
+#: rc.cpp:165
+#, kde-format
+msgid "Chrome Windows"
+msgstr ""
+
+#: rc.cpp:168
+#, kde-format
+msgid "Edge Windows"
+msgstr ""
+
+#: rc.cpp:171
+#, kde-format
+msgid "Safari macOS"
+msgstr ""
+
+#: rc.cpp:174
+#, kde-format
+msgid ""
+"Spell checking languages can be added by installing the Hunspell language "
+"packages.  One or more languages can be selected.  All selected languages "
+"will be applied simultaneously."
+msgstr ""
+
+#: rc.cpp:177
+#, kde-format
+msgid "Homepage"
+msgstr ""
+
+#: rc.cpp:180
+#, kde-format
+msgid "The default is https://www.mojeek.com/."
+msgstr ""
+
+#: rc.cpp:183
+#, kde-format
+msgid "Search engine"
+msgstr ""
+
+#: rc.cpp:186
+#, kde-format
+msgid "The default is Mojeek."
+msgstr ""
+
+#: rc.cpp:189
+#, kde-format
+msgid "Mojeek"
+msgstr ""
+
+#: rc.cpp:192
+#, kde-format
+msgid "Monocles"
+msgstr ""
+
+#: rc.cpp:195
+#, kde-format
+msgid "MetaGer"
+msgstr ""
+
+#: rc.cpp:198
+#, kde-format
+msgid "Google"
+msgstr ""
+
+#: rc.cpp:201
+#, kde-format
+msgid "Bing"
+msgstr ""
+
+#: rc.cpp:204
+#, kde-format
+msgid "Yahoo"
+msgstr ""
+
+#: rc.cpp:210
+#, kde-format
+msgid ""
+"Valid values for the zoom factor are between 0.25 and 5.00.  The default is "
+"1.00."
+msgstr ""
+
+#: rc.cpp:213
+#, kde-format
+msgid "Download Location"
+msgstr ""
+
+#: rc.cpp:216
+#, kde-format
+msgid "The default is System Download Directory."
+msgstr ""
+
+#: rc.cpp:219
+#, kde-format
+msgid "System Download Directory"
+msgstr ""
+
+#: rc.cpp:222
+#, kde-format
+msgid "Browse"
+msgstr ""
+
+#: rc.cpp:225
+#, kde-format
+msgid "Tabs on top"
+msgstr ""
+
+#: rc.cpp:228
+#, kde-format
+msgid "Display the tabs at the top of the screen.  The default is enabled."
+msgstr ""
+
+#: rc.cpp:231
+#, kde-format
+msgid "Full Screen Browsing"
+msgstr ""
+
+#: rc.cpp:234
+#, kde-format
+msgid "Hide menu bar"
+msgstr ""
+
+#: rc.cpp:237
+#, kde-format
+msgid "Hide the menu bar when browsing full screen. The default is enabled."
+msgstr ""
+
+#: rc.cpp:240
+#, kde-format
+msgid "Hide toolbars"
+msgstr ""
+
+#: rc.cpp:243
+#, kde-format
+msgid "Hide the toolbars when browsing full screen.  The default is enabled."
+msgstr ""
+
+#: rc.cpp:246
+#, kde-format
+msgid "Hide tab bar"
+msgstr ""
+
+#: rc.cpp:249
+#, kde-format
+msgid "Hide the tab bar when browsing full screen.  The default is enabled."
+msgstr ""
+
+#: rc.cpp:252
+#, kde-format
+msgid "Hide status bar"
+msgstr ""
+
+#: rc.cpp:255
+#, kde-format
+msgid "Hide the status bar when browsing full screen.  The default is enabled."
+msgstr ""
+
+#: rc.cpp:258
+#, kde-format
+msgid "<b>Would you like to download the following file?</b>"
+msgstr ""
+
+#: rc.cpp:261
+#, kde-format
+msgid "File details"
+msgstr ""
+
+#: rc.cpp:264
+#, kde-format
+msgid "URL:"
+msgstr ""
+
+#: rc.cpp:267
+#, kde-format
+msgid "File type:"
+msgstr ""
+
+#: rc.cpp:270
+#, kde-format
+msgid "MIME type:"
+msgstr ""
+
+#: rc.cpp:273
+#, kde-format
+msgid "Size:"
+msgstr ""
+
+#: rc.cpp:276
+#, kde-format
+msgid "&Add cookie"
+msgstr ""
+
+#: rc.cpp:279
+#, kde-format
+msgid "&Delete cookie"
+msgstr ""
+
+#: rc.cpp:282
+#, kde-format
+msgid "Delete &all"
+msgstr ""
+
+#: rc.cpp:285
+#, kde-format
+msgid "Cookies prepended by a period are accessible to all subdomains."
+msgstr ""
+
+#: rc.cpp:288
+#, kde-format
+msgid "Domain"
+msgstr ""
+
+#: rc.cpp:291 rc.cpp:309 rc.cpp:321 rc.cpp:336 rc.cpp:348
+#, kde-format
+msgid "&nbsp;&nbsp;&nbsp;"
+msgstr ""
+
+#: rc.cpp:294
+#, kde-format
+msgid ""
+"The name identifies the cookie.  Each cookie has a unique combination of "
+"domain, name, and path."
+msgstr ""
+
+#: rc.cpp:297
+#, kde-format
+msgid "Name"
+msgstr ""
+
+#: rc.cpp:300 rc.cpp:306
+#, kde-format
+msgid ""
+"Durable cookies pursist across restarts, irrespective of the expiration "
+"date. All other cookies are deleted when Privacy Browser closes, "
+"irrespective of the expiration date."
+msgstr ""
+
+#: rc.cpp:303
+#, kde-format
+msgid "Durable"
+msgstr ""
+
+#: rc.cpp:312
+#, kde-format
+msgid "Websites can restrict cookie access to subpath of their URL."
+msgstr ""
+
+#: rc.cpp:315
+#, kde-format
+msgid "Path"
+msgstr ""
+
+#: rc.cpp:318
+#, kde-format
+msgid "/"
+msgstr ""
+
+#: rc.cpp:324 rc.cpp:330
+#, kde-format
+msgid ""
+"Cookies without an expiration date are known as session cookies and are "
+"expected to be deleted every time the browser closes."
+msgstr ""
+
+#: rc.cpp:327
+#, kde-format
+msgid "Expiration date"
+msgstr ""
+
+#: rc.cpp:333
+#, kde-format
+msgid "&nbsp;"
+msgstr ""
+
+#: rc.cpp:339 rc.cpp:345
+#, kde-format
+msgid ""
+"Restrict cookie access to HTTP (and HTTPS). This prevents JavaScript from "
+"accessing the cookie, which hardens it against cross-site scripting attacks."
+msgstr ""
+
+#: rc.cpp:342
+#, kde-format
+msgid "HTTP only"
+msgstr ""
+
+#: rc.cpp:351 rc.cpp:357
+#, kde-format
+msgid ""
+"Only allow the cookie to be transferred across HTTPS (as opposed to HTTP)."
+msgstr ""
+
+#: rc.cpp:354
+#, kde-format
+msgid "Secure"
+msgstr ""
+
+#: rc.cpp:360
+#, kde-format
+msgid "The value contains the cookie data."
+msgstr ""
+
+#: rc.cpp:363
 #, kde-format
-msgid "Main Toolbar"
+msgid "Value"
 msgstr ""
 
-#: rc.cpp:13
+#: rc.cpp:364
 #, kde-format
 msgctxt "NAME OF TRANSLATORS"
 msgid "Your names"
 msgstr ""
 
-#: rc.cpp:14
+#: rc.cpp:365
 #, kde-format
 msgctxt "EMAIL OF TRANSLATORS"
 msgid "Your emails"
index 3b74d25fe9747667e2af171948bdbf882867426f..614251454b96bd3e842f3f79804498e8b8da3f50 100644 (file)
@@ -51,7 +51,7 @@
     <!-- TODO -->
     <screenshots>
         <screenshot type="default">
-            <image> https://www.freedesktop.org/software/appstream/docs/chap-Metadata.html#tag-screenshots </image>
+            <image type="source"></image>
         </screenshot>
     </screenshots>
 
index 4e85efe4d112f9bbf35e34121b34fd3a58af8e61..693eb3c20fa8c006c7480f5e18d44c11aac20653 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright © 2022 Soren Stoutner <soren@stoutner.com>.
+ * Copyright © 2022-2023 Soren Stoutner <soren@stoutner.com>.
  *
  * This file is part of Privacy Browser PC <https://www.stoutner.com/privacy-browser-pc>.
  *
@@ -65,7 +65,7 @@ bool cookieSortPredicate(const QNetworkCookie &leftHandCookie, const QNetworkCoo
         QString leftHandThirdLevelDomain;
         QString rightHandThirdLevelDomain;
 
-        // Get the numer of dots in the strings.
+        // Get the number of dots in the strings.
         int leftHandDots = leftHandDomain.count(QLatin1Char('.'));
         int rightHandDots = rightHandDomain.count(QLatin1Char('.'));
 
@@ -154,7 +154,7 @@ CookiesDialog::CookiesDialog(std::list<QNetworkCookie> *originalCookieListPointe
     treeModelPointer->horizontalHeaderItem(0)->setToolTip(i18nc("The cookie Name tool tip.",
                                                                         "The name identifies the cookie.  Each cookie has a unique combination of domain, name, and path."));
     treeModelPointer->horizontalHeaderItem(1)->setToolTip(i18nc("The cookie Durable tool tip",
-                                                                        "Durable cookies pursist across restarts, irrespective of the expiration date. All other cookies are deleted when Privacy Browser closes, irrespective of the expiration date."));
+                                                                        "Durable cookies persist across restarts, irrespective of the expiration date. All other cookies are deleted when Privacy Browser closes, irrespective of the expiration date."));
     treeModelPointer->horizontalHeaderItem(2)->setToolTip(i18nc("The cookie Path tool tip.", "Websites can restrict cookie access to subpath of their URL."));
     treeModelPointer->horizontalHeaderItem(3)->setToolTip(i18nc("The cookie Expiration Date tool tip.",
                                                                         "Cookies without an expiration date are known as session cookies and are expected to be deleted every time the browser closes."));
index 39d2b1855bbb9d83a3dcd25909c7fa9717d9149d..f1c1d99c6bd51930bdc670e8f1e0c96b957c3c43 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2022 Soren Stoutner <soren@stoutner.com>.
+ * Copyright 2022-2023 Soren Stoutner <soren@stoutner.com>.
  *
  * This file is part of Privacy Browser PC <https://www.stoutner.com/privacy-browser-pc>.
  *
@@ -88,6 +88,7 @@ SaveDialog::SaveDialog(QUrl &url, QString &mimeTypeString, int totalBytes, QStri
     // Create the keyboard shortcuts.
     QShortcut *sShortcutPointer = new QShortcut(QKeySequence(i18nc("The save key shortcut.", "s")), this);
     QShortcut *cShortcutPointer = new QShortcut(QKeySequence(i18nc("The close key shortcut.", "c")), this);
+    QShortcut *quitShortcutPointer = new QShortcut(QKeySequence::Quit, this);
 
     // Connect the save buttons.
     if (nativeDownloader)
@@ -98,7 +99,7 @@ SaveDialog::SaveDialog(QUrl &url, QString &mimeTypeString, int totalBytes, QStri
     }
     else
     {
-        // Use WebEngine's downloader
+        // Use WebEngine's downloader.
         connect(saveButtonPointer, SIGNAL(clicked()), this, SLOT(accept()));
         connect(sShortcutPointer, SIGNAL(activated()), this, SLOT(accept()));
     }
@@ -106,6 +107,7 @@ SaveDialog::SaveDialog(QUrl &url, QString &mimeTypeString, int totalBytes, QStri
     // Connect the cancel button.
     connect(dialogButtonBoxPointer, SIGNAL(rejected()), this, SLOT(reject()));
     connect(cShortcutPointer, SIGNAL(activated()), this, SLOT(reject()));
+    connect(quitShortcutPointer, SIGNAL(activated()), this, SLOT(reject()));
 }
 
 void SaveDialog::showFilePicker()
index effb0918b0faeca5b1bace2b017300e6dae7a1d7..f1dd59e3ea8b3bb8963130687c54d97e591df78e 100644 (file)
@@ -60,7 +60,7 @@ BrowserWindow::BrowserWindow(bool firstWindow) : KXmlGuiWindow()
 
     // Add the standard actions.
     KStandardAction::print(tabWidgetPointer, SLOT(print()), actionCollectionPointer);
-    KStandardAction::printPreview(tabWidgetPointer, SLOT(printPreview()), actionCollectionPointer);
+    QAction *printPreviewActionPointer = KStandardAction::printPreview(tabWidgetPointer, SLOT(printPreview()), actionCollectionPointer);
     KStandardAction::quit(qApp, SLOT(closeAllWindows()), actionCollectionPointer);
     KStandardAction::redisplay(this, SLOT(refresh()), actionCollectionPointer);
     fullScreenActionPointer = KStandardAction::fullScreen(this, SLOT(toggleFullScreen()), this, actionCollectionPointer);
@@ -201,10 +201,50 @@ BrowserWindow::BrowserWindow(bool firstWindow) : KXmlGuiWindow()
     // Create the key sequences.
     QKeySequence ctrlTKeySequence = QKeySequence(i18nc("The open new tab key sequence.", "Ctrl+T"));
     QKeySequence ctrlNKeySequence = QKeySequence(i18nc("The open new window key sequence.", "Ctrl+N"));
+    QKeySequence ctrlShiftPKeySequence = QKeySequence(i18nc("The print preview key sequence.", "Ctrl+Shift+P"));
+    QKeySequence ctrlAltPKeySequence = QKeySequence(i18nc("The Privacy Browser user agent key sequence.", "Ctrl+Alt+P"));
+    QKeySequence ctrlAltWKeySequence = QKeySequence(i18nc("The WebEngine Default user agent key sequence.", "Ctrl+Alt+W"));
+    QKeySequence ctrlAltFKeySequence = QKeySequence(i18nc("The Firefox on Linux user agent key sequence.", "Ctrl+Alt+F"));
+    QKeySequence ctrlAltCKeySequence = QKeySequence(i18nc("The Chromium on Linux user agent key sequence.", "Ctrl+Alt+C"));
+    QKeySequence ctrlAltShiftFKeySequence = QKeySequence(i18nc("The Firefox on Windows user agent key sequence.", "Ctrl+Alt+Shift+F"));
+    QKeySequence ctrlAltShiftCKeySequence = QKeySequence(i18nc("The Chrome on Windows user agent key sequence.", "Ctrl+Alt+Shift+C"));
+    QKeySequence ctrlAltEKeySequence = QKeySequence(i18nc("The Edge on Windows user agent key sequence.", "Ctrl+Alt+E"));
+    QKeySequence ctrlAltSKeySequence = QKeySequence(i18nc("The Safari on macOS user agent key sequence.", "Ctrl+Alt+S"));
+    QKeySequence altShiftCKeySequence = QKeySequence(i18nc("The custom user agent key sequence.", "Alt+Shift+C"));
+    QKeySequence ctrlAltZKeySequence = QKeySequence(i18nc("The zoom factor key sequence.", "Ctrl+Alt+Z"));
+    QKeySequence ctrlShiftMKeySequence = QKeySequence(i18nc("The Mojeek search engine key sequence.", "Ctrl+Shift+M"));
+    QKeySequence ctrlShiftOKeySequence = QKeySequence(i18nc("The Monocles search engine key sequence.", "Ctrl+Shift+O"));
+    QKeySequence ctrlShiftEKeySequence = QKeySequence(i18nc("The MetaGer search engine key sequence.", "Ctrl+Shift+E"));
+    QKeySequence ctrlShiftGKeySequence = QKeySequence(i18nc("The Google search engine key sequence.", "Ctrl+Shift+G"));
+    QKeySequence ctrlShiftBKeySequence = QKeySequence(i18nc("The Bing search engine key sequence.", "Ctrl+Shift+B"));
+    QKeySequence ctrlShiftYKeySequence = QKeySequence(i18nc("The Yahoo search engine key sequence.", "Ctrl+Shift+Y"));
+    QKeySequence ctrlShiftCKeySequence = QKeySequence(i18nc("The custom search engine key sequence.", "Ctrl+Shift+C"));
+    QKeySequence ctrlDKeySequence = QKeySequence(i18nc("The domain settings key sequence.", "Ctrl+D"));
+    QKeySequence ctrlSemicolonKeySequence = QKeySequence(i18nc("The cookies dialog key sequence.", "Ctrl+;"));
 
     // Set the action key sequences.
     newTabActionPointer->setShortcut(ctrlTKeySequence);
     newWindowActionPointer->setShortcut(ctrlNKeySequence);
+    printPreviewActionPointer->setShortcut(ctrlShiftPKeySequence);
+    userAgentPrivacyBrowserActionPointer->setShortcut(ctrlAltPKeySequence);
+    userAgentWebEngineDefaultActionPointer->setShortcut(ctrlAltWKeySequence);
+    userAgentFirefoxLinuxActionPointer->setShortcut(ctrlAltFKeySequence);
+    userAgentChromiumLinuxActionPointer->setShortcut(ctrlAltCKeySequence);
+    userAgentFirefoxWindowsActionPointer->setShortcut(ctrlAltShiftFKeySequence);
+    userAgentChromeWindowsActionPointer->setShortcut(ctrlAltShiftCKeySequence);
+    userAgentEdgeWindowsActionPointer->setShortcut(ctrlAltEKeySequence);
+    userAgentSafariMacosActionPointer->setShortcut(ctrlAltSKeySequence);
+    userAgentCustomActionPointer->setShortcut(altShiftCKeySequence);
+    zoomFactorActionPointer->setShortcut(ctrlAltZKeySequence);
+    searchEngineMojeekActionPointer->setShortcut(ctrlShiftMKeySequence);
+    searchEngineMonoclesActionPointer->setShortcut(ctrlShiftOKeySequence);
+    searchEngineMetagerActionPointer->setShortcut(ctrlShiftEKeySequence);
+    searchEngineGoogleActionPointer->setShortcut(ctrlShiftGKeySequence);
+    searchEngineBingActionPointer->setShortcut(ctrlShiftBKeySequence);
+    searchEngineYahooActionPointer->setShortcut(ctrlShiftYKeySequence);
+    searchEngineCustomActionPointer->setShortcut(ctrlShiftCKeySequence);
+    domainSettingsActionPointer->setShortcut(ctrlDKeySequence);
+    cookiesActionPointer->setShortcut(ctrlSemicolonKeySequence);
 
     // Execute the actions.
     connect(newTabActionPointer, SIGNAL(triggered()), tabWidgetPointer, SLOT(addTab()));
@@ -449,7 +489,7 @@ void BrowserWindow::escape() const
     }
     else if (!findTextLineEditPointer->text().isEmpty())  // Find text is populated.
     {
-        // Clear the text in the line edit.
+        // Clear the find text line edit.
         findTextLineEditPointer->clear();
 
         // Clear the search in the WebEngine.