Introducing better SSL support with certificate verification

This commit is contained in:
Pierre Pronchery 2010-12-20 22:44:15 +00:00
parent 58da8ad29b
commit cabf04f48b
14 changed files with 539 additions and 411 deletions

102
po/de.po
View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Surfer 0.1.0\n" "Project-Id-Version: Surfer 0.1.0\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-12-10 22:45+0100\n" "POT-Creation-Date: 2010-12-19 03:30+0100\n"
"PO-Revision-Date: 2010-04-01 19:40+0200\n" "PO-Revision-Date: 2010-04-01 19:40+0200\n"
"Last-Translator: Pierre Pronchery <khorben@defora.org>\n" "Last-Translator: Pierre Pronchery <khorben@defora.org>\n"
"Language-Team: German\n" "Language-Team: German\n"
@ -16,8 +16,8 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: ../src/callbacks.c:43 ../src/callbacks.c:53 ../src/surfer.c:747 #: ../src/callbacks.c:43 ../src/callbacks.c:53 ../src/surfer.c:772
#: ../src/surfer.c:750 ../src/surfer.c:1132 ../src/surfer.c:1135 #: ../src/surfer.c:775 ../src/surfer.c:1161 ../src/surfer.c:1164
msgid "Question" msgid "Question"
msgstr "" msgstr ""
@ -27,69 +27,69 @@ msgid ""
"Do you really want to close every tab opened in this window?" "Do you really want to close every tab opened in this window?"
msgstr "" msgstr ""
#: ../src/callbacks.c:451 #: ../src/callbacks.c:452
msgid "Web surfer preferences" msgid "Web surfer preferences"
msgstr "Web surfer Einstellungen" msgstr "Web surfer Einstellungen"
#: ../src/callbacks.c:471 #: ../src/callbacks.c:472
msgid "Homepage:" msgid "Homepage:"
msgstr "" msgstr ""
#: ../src/callbacks.c:479 #: ../src/callbacks.c:480
msgid "Focus new tabs" msgid "Focus new tabs"
msgstr "" msgstr ""
#: ../src/callbacks.c:483 #: ../src/callbacks.c:484
msgid "General" msgid "General"
msgstr "" msgstr ""
#: ../src/callbacks.c:487 #: ../src/callbacks.c:488
msgid "Direct connection" msgid "Direct connection"
msgstr "" msgstr ""
#: ../src/callbacks.c:491 #: ../src/callbacks.c:492
msgid "HTTP proxy:" msgid "HTTP proxy:"
msgstr "" msgstr ""
#: ../src/callbacks.c:498 #: ../src/callbacks.c:499
msgid "Hostname:" msgid "Hostname:"
msgstr "" msgstr ""
#: ../src/callbacks.c:502 #: ../src/callbacks.c:503
msgid "Port:" msgid "Port:"
msgstr "" msgstr ""
#: ../src/callbacks.c:510 #: ../src/callbacks.c:511
msgid "Network" msgid "Network"
msgstr "" msgstr ""
#: ../src/common/conn.c:204 ../src/download.c:185 ../src/ghtml-gtkhtml.c:832 #: ../src/common/conn.c:204 ../src/download.c:185 ../src/ghtml-gtkhtml.c:841
msgid "Resolving..." msgid "Resolving..."
msgstr "" msgstr ""
#: ../src/common/conn.c:253 ../src/download.c:477 ../src/ghtml-gtkhtml.c:882 #: ../src/common/conn.c:253 ../src/download.c:477 ../src/ghtml-gtkhtml.c:891
msgid "Connected" msgid "Connected"
msgstr "" msgstr ""
#: ../src/common/conn.c:280 ../src/ghtml-gtkhtml.c:917 #: ../src/common/conn.c:280 ../src/ghtml-gtkhtml.c:926
#: ../src/ghtml-webkit.c:422 ../src/ghtml-webkit.c:581 #: ../src/ghtml-webkit.c:487 ../src/ghtml-webkit.c:626
#: ../src/ghtml-webkit.c:594 #: ../src/ghtml-webkit.c:639
msgid "Downloading..." msgid "Downloading..."
msgstr "" msgstr ""
#: ../src/common/conn.c:305 ../src/ghtml-gtkhtml.c:963 #: ../src/common/conn.c:305 ../src/ghtml-gtkhtml.c:972
msgid "Unsupported protocol" msgid "Unsupported protocol"
msgstr "" msgstr ""
#: ../src/common/conn.c:309 ../src/ghtml-gtkhtml.c:967 #: ../src/common/conn.c:309 ../src/ghtml-gtkhtml.c:976
msgid "Unknown host" msgid "Unknown host"
msgstr "" msgstr ""
#: ../src/common/conn.c:314 ../src/ghtml-gtkhtml.c:972 #: ../src/common/conn.c:314 ../src/ghtml-gtkhtml.c:981
msgid "Unspecified error" msgid "Unspecified error"
msgstr "" msgstr ""
#: ../src/common/conn.c:348 ../src/download.c:554 ../src/ghtml-gtkhtml.c:1068 #: ../src/common/conn.c:348 ../src/download.c:554 ../src/ghtml-gtkhtml.c:1077
msgid "Timeout" msgid "Timeout"
msgstr "" msgstr ""
@ -126,7 +126,7 @@ msgid "Close window when the download is complete"
msgstr "" msgstr ""
#: ../src/download.c:291 ../src/download.c:296 ../src/download.c:631 #: ../src/download.c:291 ../src/download.c:296 ../src/download.c:631
#: ../src/surfer.c:867 ../src/surfer.c:870 #: ../src/surfer.c:892 ../src/surfer.c:895
msgid "Error" msgid "Error"
msgstr "Fehler" msgstr "Fehler"
@ -181,7 +181,7 @@ msgstr ""
msgid "Code " msgid "Code "
msgstr "" msgstr ""
#: ../src/download.c:605 ../src/ghtml-webkit.c:537 ../src/surfer.c:869 #: ../src/download.c:605 ../src/ghtml-webkit.c:582 ../src/surfer.c:894
msgid "Unknown error" msgid "Unknown error"
msgstr "" msgstr ""
@ -192,32 +192,32 @@ msgid ""
" -U\tuser agent string to send\n" " -U\tuser agent string to send\n"
msgstr "" msgstr ""
#: ../src/ghtml-gtkhtml.c:709 #: ../src/ghtml-gtkhtml.c:718
msgid "Unknown protocol" msgid "Unknown protocol"
msgstr "" msgstr ""
#: ../src/ghtml-gtkhtml.c:775 #: ../src/ghtml-gtkhtml.c:784
msgid "Reading file..." msgid "Reading file..."
msgstr "" msgstr ""
#: ../src/ghtml-gtkhtml.c:987 #: ../src/ghtml-gtkhtml.c:996
msgid "Redirecting..." msgid "Redirecting..."
msgstr "" msgstr ""
#: ../src/ghtml-gtkhtml.c:995 #: ../src/ghtml-gtkhtml.c:1004
msgid "Redirecting to " msgid "Redirecting to "
msgstr "" msgstr ""
#: ../src/ghtml-gtkhtml.c:1029 ../src/ghtml-webkit.c:317 #: ../src/ghtml-gtkhtml.c:1038 ../src/ghtml-webkit.c:382
#: ../src/ghtml-webkit.c:420 #: ../src/ghtml-webkit.c:485
msgid "Connecting..." msgid "Connecting..."
msgstr "" msgstr ""
#: ../src/ghtml-gtkhtml.c:1032 #: ../src/ghtml-gtkhtml.c:1041
msgid "Connecting to " msgid "Connecting to "
msgstr "" msgstr ""
#: ../src/ghtml-gtkhtml.c:1190 #: ../src/ghtml-gtkhtml.c:1199
msgid "Unsupported method" msgid "Unsupported method"
msgstr "" msgstr ""
@ -353,7 +353,7 @@ msgstr ""
msgid "Home" msgid "Home"
msgstr "" msgstr ""
#: ../src/surfer.c:292 ../src/surfer.c:594 #: ../src/surfer.c:292 ../src/surfer.c:619
msgid "Web surfer" msgid "Web surfer"
msgstr "Web surfer" msgstr "Web surfer"
@ -361,75 +361,75 @@ msgstr "Web surfer"
msgid " Location: " msgid " Location: "
msgstr "" msgstr ""
#: ../src/surfer.c:564 #: ../src/surfer.c:589
msgid "Ready" msgid "Ready"
msgstr "" msgstr ""
#: ../src/surfer.c:607 ../src/surfer.c:1067 #: ../src/surfer.c:632 ../src/surfer.c:1092
msgid "Untitled" msgid "Untitled"
msgstr "" msgstr ""
#: ../src/surfer.c:820 ../src/surfer.c:1198 #: ../src/surfer.c:845 ../src/surfer.c:1227
msgid "Save file as..." msgid "Save file as..."
msgstr "" msgstr ""
#: ../src/surfer.c:898 #: ../src/surfer.c:923
msgid "Find text" msgid "Find text"
msgstr "Suchen" msgstr "Suchen"
#: ../src/surfer.c:905 #: ../src/surfer.c:930
msgid "Text:" msgid "Text:"
msgstr "" msgstr ""
#: ../src/surfer.c:912 #: ../src/surfer.c:937
msgid "Case-sensitive" msgid "Case-sensitive"
msgstr "" msgstr ""
#: ../src/surfer.c:914 #: ../src/surfer.c:939
msgid "Wrap" msgid "Wrap"
msgstr "" msgstr ""
#: ../src/surfer.c:940 #: ../src/surfer.c:965
msgid "Text not found" msgid "Text not found"
msgstr "" msgstr ""
#: ../src/surfer.c:1028 #: ../src/surfer.c:1053
msgid "Open file..." msgid "Open file..."
msgstr "" msgstr ""
#: ../src/surfer.c:1057 #: ../src/surfer.c:1082
msgid "Could not initialize HTML renderer" msgid "Could not initialize HTML renderer"
msgstr "" msgstr ""
#: ../src/surfer.c:1259 #: ../src/surfer.c:1288
msgid "Javascript console" msgid "Javascript console"
msgstr "" msgstr ""
#: ../src/surfer.c:1264 #: ../src/surfer.c:1293
msgid "Command:" msgid "Command:"
msgstr "" msgstr ""
#: ../src/surfer.c:1283 #: ../src/surfer.c:1312
msgid "Message" msgid "Message"
msgstr "" msgstr ""
#: ../src/surfer.c:1288 #: ../src/surfer.c:1317
msgid "Source" msgid "Source"
msgstr "" msgstr ""
#: ../src/surfer.c:1293 #: ../src/surfer.c:1322
msgid "Line" msgid "Line"
msgstr "Linie" msgstr "Linie"
#: ../src/surfer.c:1418 #: ../src/surfer.c:1454
msgid "Web surfer - Source of " msgid "Web surfer - Source of "
msgstr "" msgstr ""
#: ../src/surfer.c:1459 ../src/surfer.c:1462 ../src/surfer.c:1517 #: ../src/surfer.c:1495 ../src/surfer.c:1498 ../src/surfer.c:1553
#: ../src/surfer.c:1522 #: ../src/surfer.c:1558
msgid "Warning" msgid "Warning"
msgstr "Achtung" msgstr "Achtung"
#: ../src/surfer.c:1521 #: ../src/surfer.c:1557
msgid "This file already exists. Overwrite?" msgid "This file already exists. Overwrite?"
msgstr "" msgstr ""

102
po/es.po
View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Surfer 0.1.0\n" "Project-Id-Version: Surfer 0.1.0\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-12-10 22:45+0100\n" "POT-Creation-Date: 2010-12-19 03:30+0100\n"
"PO-Revision-Date: 2010-04-01 19:40+0200\n" "PO-Revision-Date: 2010-04-01 19:40+0200\n"
"Last-Translator: Pierre Pronchery <khorben@defora.org>\n" "Last-Translator: Pierre Pronchery <khorben@defora.org>\n"
"Language-Team: Spanish\n" "Language-Team: Spanish\n"
@ -16,8 +16,8 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: ../src/callbacks.c:43 ../src/callbacks.c:53 ../src/surfer.c:747 #: ../src/callbacks.c:43 ../src/callbacks.c:53 ../src/surfer.c:772
#: ../src/surfer.c:750 ../src/surfer.c:1132 ../src/surfer.c:1135 #: ../src/surfer.c:775 ../src/surfer.c:1161 ../src/surfer.c:1164
msgid "Question" msgid "Question"
msgstr "" msgstr ""
@ -27,69 +27,69 @@ msgid ""
"Do you really want to close every tab opened in this window?" "Do you really want to close every tab opened in this window?"
msgstr "" msgstr ""
#: ../src/callbacks.c:451 #: ../src/callbacks.c:452
msgid "Web surfer preferences" msgid "Web surfer preferences"
msgstr "Web surfer preferencias" msgstr "Web surfer preferencias"
#: ../src/callbacks.c:471 #: ../src/callbacks.c:472
msgid "Homepage:" msgid "Homepage:"
msgstr "" msgstr ""
#: ../src/callbacks.c:479 #: ../src/callbacks.c:480
msgid "Focus new tabs" msgid "Focus new tabs"
msgstr "" msgstr ""
#: ../src/callbacks.c:483 #: ../src/callbacks.c:484
msgid "General" msgid "General"
msgstr "" msgstr ""
#: ../src/callbacks.c:487 #: ../src/callbacks.c:488
msgid "Direct connection" msgid "Direct connection"
msgstr "" msgstr ""
#: ../src/callbacks.c:491 #: ../src/callbacks.c:492
msgid "HTTP proxy:" msgid "HTTP proxy:"
msgstr "" msgstr ""
#: ../src/callbacks.c:498 #: ../src/callbacks.c:499
msgid "Hostname:" msgid "Hostname:"
msgstr "" msgstr ""
#: ../src/callbacks.c:502 #: ../src/callbacks.c:503
msgid "Port:" msgid "Port:"
msgstr "" msgstr ""
#: ../src/callbacks.c:510 #: ../src/callbacks.c:511
msgid "Network" msgid "Network"
msgstr "" msgstr ""
#: ../src/common/conn.c:204 ../src/download.c:185 ../src/ghtml-gtkhtml.c:832 #: ../src/common/conn.c:204 ../src/download.c:185 ../src/ghtml-gtkhtml.c:841
msgid "Resolving..." msgid "Resolving..."
msgstr "" msgstr ""
#: ../src/common/conn.c:253 ../src/download.c:477 ../src/ghtml-gtkhtml.c:882 #: ../src/common/conn.c:253 ../src/download.c:477 ../src/ghtml-gtkhtml.c:891
msgid "Connected" msgid "Connected"
msgstr "" msgstr ""
#: ../src/common/conn.c:280 ../src/ghtml-gtkhtml.c:917 #: ../src/common/conn.c:280 ../src/ghtml-gtkhtml.c:926
#: ../src/ghtml-webkit.c:422 ../src/ghtml-webkit.c:581 #: ../src/ghtml-webkit.c:487 ../src/ghtml-webkit.c:626
#: ../src/ghtml-webkit.c:594 #: ../src/ghtml-webkit.c:639
msgid "Downloading..." msgid "Downloading..."
msgstr "" msgstr ""
#: ../src/common/conn.c:305 ../src/ghtml-gtkhtml.c:963 #: ../src/common/conn.c:305 ../src/ghtml-gtkhtml.c:972
msgid "Unsupported protocol" msgid "Unsupported protocol"
msgstr "" msgstr ""
#: ../src/common/conn.c:309 ../src/ghtml-gtkhtml.c:967 #: ../src/common/conn.c:309 ../src/ghtml-gtkhtml.c:976
msgid "Unknown host" msgid "Unknown host"
msgstr "" msgstr ""
#: ../src/common/conn.c:314 ../src/ghtml-gtkhtml.c:972 #: ../src/common/conn.c:314 ../src/ghtml-gtkhtml.c:981
msgid "Unspecified error" msgid "Unspecified error"
msgstr "" msgstr ""
#: ../src/common/conn.c:348 ../src/download.c:554 ../src/ghtml-gtkhtml.c:1068 #: ../src/common/conn.c:348 ../src/download.c:554 ../src/ghtml-gtkhtml.c:1077
msgid "Timeout" msgid "Timeout"
msgstr "" msgstr ""
@ -126,7 +126,7 @@ msgid "Close window when the download is complete"
msgstr "" msgstr ""
#: ../src/download.c:291 ../src/download.c:296 ../src/download.c:631 #: ../src/download.c:291 ../src/download.c:296 ../src/download.c:631
#: ../src/surfer.c:867 ../src/surfer.c:870 #: ../src/surfer.c:892 ../src/surfer.c:895
msgid "Error" msgid "Error"
msgstr "" msgstr ""
@ -181,7 +181,7 @@ msgstr ""
msgid "Code " msgid "Code "
msgstr "" msgstr ""
#: ../src/download.c:605 ../src/ghtml-webkit.c:537 ../src/surfer.c:869 #: ../src/download.c:605 ../src/ghtml-webkit.c:582 ../src/surfer.c:894
msgid "Unknown error" msgid "Unknown error"
msgstr "" msgstr ""
@ -192,32 +192,32 @@ msgid ""
" -U\tuser agent string to send\n" " -U\tuser agent string to send\n"
msgstr "" msgstr ""
#: ../src/ghtml-gtkhtml.c:709 #: ../src/ghtml-gtkhtml.c:718
msgid "Unknown protocol" msgid "Unknown protocol"
msgstr "" msgstr ""
#: ../src/ghtml-gtkhtml.c:775 #: ../src/ghtml-gtkhtml.c:784
msgid "Reading file..." msgid "Reading file..."
msgstr "" msgstr ""
#: ../src/ghtml-gtkhtml.c:987 #: ../src/ghtml-gtkhtml.c:996
msgid "Redirecting..." msgid "Redirecting..."
msgstr "" msgstr ""
#: ../src/ghtml-gtkhtml.c:995 #: ../src/ghtml-gtkhtml.c:1004
msgid "Redirecting to " msgid "Redirecting to "
msgstr "" msgstr ""
#: ../src/ghtml-gtkhtml.c:1029 ../src/ghtml-webkit.c:317 #: ../src/ghtml-gtkhtml.c:1038 ../src/ghtml-webkit.c:382
#: ../src/ghtml-webkit.c:420 #: ../src/ghtml-webkit.c:485
msgid "Connecting..." msgid "Connecting..."
msgstr "" msgstr ""
#: ../src/ghtml-gtkhtml.c:1032 #: ../src/ghtml-gtkhtml.c:1041
msgid "Connecting to " msgid "Connecting to "
msgstr "" msgstr ""
#: ../src/ghtml-gtkhtml.c:1190 #: ../src/ghtml-gtkhtml.c:1199
msgid "Unsupported method" msgid "Unsupported method"
msgstr "" msgstr ""
@ -353,7 +353,7 @@ msgstr ""
msgid "Home" msgid "Home"
msgstr "" msgstr ""
#: ../src/surfer.c:292 ../src/surfer.c:594 #: ../src/surfer.c:292 ../src/surfer.c:619
msgid "Web surfer" msgid "Web surfer"
msgstr "Web surfer" msgstr "Web surfer"
@ -361,75 +361,75 @@ msgstr "Web surfer"
msgid " Location: " msgid " Location: "
msgstr "" msgstr ""
#: ../src/surfer.c:564 #: ../src/surfer.c:589
msgid "Ready" msgid "Ready"
msgstr "" msgstr ""
#: ../src/surfer.c:607 ../src/surfer.c:1067 #: ../src/surfer.c:632 ../src/surfer.c:1092
msgid "Untitled" msgid "Untitled"
msgstr "" msgstr ""
#: ../src/surfer.c:820 ../src/surfer.c:1198 #: ../src/surfer.c:845 ../src/surfer.c:1227
msgid "Save file as..." msgid "Save file as..."
msgstr "Guardar como..." msgstr "Guardar como..."
#: ../src/surfer.c:898 #: ../src/surfer.c:923
msgid "Find text" msgid "Find text"
msgstr "Buscar" msgstr "Buscar"
#: ../src/surfer.c:905 #: ../src/surfer.c:930
msgid "Text:" msgid "Text:"
msgstr "" msgstr ""
#: ../src/surfer.c:912 #: ../src/surfer.c:937
msgid "Case-sensitive" msgid "Case-sensitive"
msgstr "" msgstr ""
#: ../src/surfer.c:914 #: ../src/surfer.c:939
msgid "Wrap" msgid "Wrap"
msgstr "" msgstr ""
#: ../src/surfer.c:940 #: ../src/surfer.c:965
msgid "Text not found" msgid "Text not found"
msgstr "" msgstr ""
#: ../src/surfer.c:1028 #: ../src/surfer.c:1053
msgid "Open file..." msgid "Open file..."
msgstr "Abrir..." msgstr "Abrir..."
#: ../src/surfer.c:1057 #: ../src/surfer.c:1082
msgid "Could not initialize HTML renderer" msgid "Could not initialize HTML renderer"
msgstr "" msgstr ""
#: ../src/surfer.c:1259 #: ../src/surfer.c:1288
msgid "Javascript console" msgid "Javascript console"
msgstr "" msgstr ""
#: ../src/surfer.c:1264 #: ../src/surfer.c:1293
msgid "Command:" msgid "Command:"
msgstr "" msgstr ""
#: ../src/surfer.c:1283 #: ../src/surfer.c:1312
msgid "Message" msgid "Message"
msgstr "" msgstr ""
#: ../src/surfer.c:1288 #: ../src/surfer.c:1317
msgid "Source" msgid "Source"
msgstr "" msgstr ""
#: ../src/surfer.c:1293 #: ../src/surfer.c:1322
msgid "Line" msgid "Line"
msgstr "" msgstr ""
#: ../src/surfer.c:1418 #: ../src/surfer.c:1454
msgid "Web surfer - Source of " msgid "Web surfer - Source of "
msgstr "" msgstr ""
#: ../src/surfer.c:1459 ../src/surfer.c:1462 ../src/surfer.c:1517 #: ../src/surfer.c:1495 ../src/surfer.c:1498 ../src/surfer.c:1553
#: ../src/surfer.c:1522 #: ../src/surfer.c:1558
msgid "Warning" msgid "Warning"
msgstr "" msgstr ""
#: ../src/surfer.c:1521 #: ../src/surfer.c:1557
msgid "This file already exists. Overwrite?" msgid "This file already exists. Overwrite?"
msgstr "" msgstr ""

102
po/fr.po
View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Surfer 0.1.0\n" "Project-Id-Version: Surfer 0.1.0\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-12-10 22:45+0100\n" "POT-Creation-Date: 2010-12-19 03:30+0100\n"
"PO-Revision-Date: 2010-04-01 19:40+0200\n" "PO-Revision-Date: 2010-04-01 19:40+0200\n"
"Last-Translator: Calimero <calimeroteknik@free.fr>\n" "Last-Translator: Calimero <calimeroteknik@free.fr>\n"
"Language-Team: French\n" "Language-Team: French\n"
@ -16,8 +16,8 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: ../src/callbacks.c:43 ../src/callbacks.c:53 ../src/surfer.c:747 #: ../src/callbacks.c:43 ../src/callbacks.c:53 ../src/surfer.c:772
#: ../src/surfer.c:750 ../src/surfer.c:1132 ../src/surfer.c:1135 #: ../src/surfer.c:775 ../src/surfer.c:1161 ../src/surfer.c:1164
msgid "Question" msgid "Question"
msgstr "Question" msgstr "Question"
@ -29,69 +29,69 @@ msgstr ""
"Plusieurs onglets sont ouverts.\n" "Plusieurs onglets sont ouverts.\n"
"Voulez-vous vraiment fermer tous les onglets de cette fenêtre ?" "Voulez-vous vraiment fermer tous les onglets de cette fenêtre ?"
#: ../src/callbacks.c:451 #: ../src/callbacks.c:452
msgid "Web surfer preferences" msgid "Web surfer preferences"
msgstr "Préférences de Web surfer" msgstr "Préférences de Web surfer"
#: ../src/callbacks.c:471 #: ../src/callbacks.c:472
msgid "Homepage:" msgid "Homepage:"
msgstr "Page d'accueil :" msgstr "Page d'accueil :"
#: ../src/callbacks.c:479 #: ../src/callbacks.c:480
msgid "Focus new tabs" msgid "Focus new tabs"
msgstr "Focaliser les nouveaux onglets" msgstr "Focaliser les nouveaux onglets"
#: ../src/callbacks.c:483 #: ../src/callbacks.c:484
msgid "General" msgid "General"
msgstr "Général" msgstr "Général"
#: ../src/callbacks.c:487 #: ../src/callbacks.c:488
msgid "Direct connection" msgid "Direct connection"
msgstr "Connexion directe" msgstr "Connexion directe"
#: ../src/callbacks.c:491 #: ../src/callbacks.c:492
msgid "HTTP proxy:" msgid "HTTP proxy:"
msgstr "Proxy HTTP :" msgstr "Proxy HTTP :"
#: ../src/callbacks.c:498 #: ../src/callbacks.c:499
msgid "Hostname:" msgid "Hostname:"
msgstr "Hôte :" msgstr "Hôte :"
#: ../src/callbacks.c:502 #: ../src/callbacks.c:503
msgid "Port:" msgid "Port:"
msgstr "Port :" msgstr "Port :"
#: ../src/callbacks.c:510 #: ../src/callbacks.c:511
msgid "Network" msgid "Network"
msgstr "Réseau" msgstr "Réseau"
#: ../src/common/conn.c:204 ../src/download.c:185 ../src/ghtml-gtkhtml.c:832 #: ../src/common/conn.c:204 ../src/download.c:185 ../src/ghtml-gtkhtml.c:841
msgid "Resolving..." msgid "Resolving..."
msgstr "Résolution du domaine..." msgstr "Résolution du domaine..."
#: ../src/common/conn.c:253 ../src/download.c:477 ../src/ghtml-gtkhtml.c:882 #: ../src/common/conn.c:253 ../src/download.c:477 ../src/ghtml-gtkhtml.c:891
msgid "Connected" msgid "Connected"
msgstr "Connecté" msgstr "Connecté"
#: ../src/common/conn.c:280 ../src/ghtml-gtkhtml.c:917 #: ../src/common/conn.c:280 ../src/ghtml-gtkhtml.c:926
#: ../src/ghtml-webkit.c:422 ../src/ghtml-webkit.c:581 #: ../src/ghtml-webkit.c:487 ../src/ghtml-webkit.c:626
#: ../src/ghtml-webkit.c:594 #: ../src/ghtml-webkit.c:639
msgid "Downloading..." msgid "Downloading..."
msgstr "Téléchargement..." msgstr "Téléchargement..."
#: ../src/common/conn.c:305 ../src/ghtml-gtkhtml.c:963 #: ../src/common/conn.c:305 ../src/ghtml-gtkhtml.c:972
msgid "Unsupported protocol" msgid "Unsupported protocol"
msgstr "Protocole non supporté" msgstr "Protocole non supporté"
#: ../src/common/conn.c:309 ../src/ghtml-gtkhtml.c:967 #: ../src/common/conn.c:309 ../src/ghtml-gtkhtml.c:976
msgid "Unknown host" msgid "Unknown host"
msgstr "Hôte inconnu" msgstr "Hôte inconnu"
#: ../src/common/conn.c:314 ../src/ghtml-gtkhtml.c:972 #: ../src/common/conn.c:314 ../src/ghtml-gtkhtml.c:981
msgid "Unspecified error" msgid "Unspecified error"
msgstr "Erreur non spécifiée" msgstr "Erreur non spécifiée"
#: ../src/common/conn.c:348 ../src/download.c:554 ../src/ghtml-gtkhtml.c:1068 #: ../src/common/conn.c:348 ../src/download.c:554 ../src/ghtml-gtkhtml.c:1077
msgid "Timeout" msgid "Timeout"
msgstr "Délai dépassé" msgstr "Délai dépassé"
@ -128,7 +128,7 @@ msgid "Close window when the download is complete"
msgstr "Fermer la fenêtre à la fin du téléchargement" msgstr "Fermer la fenêtre à la fin du téléchargement"
#: ../src/download.c:291 ../src/download.c:296 ../src/download.c:631 #: ../src/download.c:291 ../src/download.c:296 ../src/download.c:631
#: ../src/surfer.c:867 ../src/surfer.c:870 #: ../src/surfer.c:892 ../src/surfer.c:895
msgid "Error" msgid "Error"
msgstr "Erreur" msgstr "Erreur"
@ -183,7 +183,7 @@ msgstr "Résolu"
msgid "Code " msgid "Code "
msgstr "Code " msgstr "Code "
#: ../src/download.c:605 ../src/ghtml-webkit.c:537 ../src/surfer.c:869 #: ../src/download.c:605 ../src/ghtml-webkit.c:582 ../src/surfer.c:894
msgid "Unknown error" msgid "Unknown error"
msgstr "Erreur inconnue" msgstr "Erreur inconnue"
@ -197,32 +197,32 @@ msgstr ""
" -O\tfichier de destination\n" " -O\tfichier de destination\n"
" -U\tuser-agent à utiliser\n" " -U\tuser-agent à utiliser\n"
#: ../src/ghtml-gtkhtml.c:709 #: ../src/ghtml-gtkhtml.c:718
msgid "Unknown protocol" msgid "Unknown protocol"
msgstr "Protocole inconnu" msgstr "Protocole inconnu"
#: ../src/ghtml-gtkhtml.c:775 #: ../src/ghtml-gtkhtml.c:784
msgid "Reading file..." msgid "Reading file..."
msgstr "Lecture du fichier..." msgstr "Lecture du fichier..."
#: ../src/ghtml-gtkhtml.c:987 #: ../src/ghtml-gtkhtml.c:996
msgid "Redirecting..." msgid "Redirecting..."
msgstr "Redirection..." msgstr "Redirection..."
#: ../src/ghtml-gtkhtml.c:995 #: ../src/ghtml-gtkhtml.c:1004
msgid "Redirecting to " msgid "Redirecting to "
msgstr "Redirection vers " msgstr "Redirection vers "
#: ../src/ghtml-gtkhtml.c:1029 ../src/ghtml-webkit.c:317 #: ../src/ghtml-gtkhtml.c:1038 ../src/ghtml-webkit.c:382
#: ../src/ghtml-webkit.c:420 #: ../src/ghtml-webkit.c:485
msgid "Connecting..." msgid "Connecting..."
msgstr "Connexion..." msgstr "Connexion..."
#: ../src/ghtml-gtkhtml.c:1032 #: ../src/ghtml-gtkhtml.c:1041
msgid "Connecting to " msgid "Connecting to "
msgstr "Connexion à " msgstr "Connexion à "
#: ../src/ghtml-gtkhtml.c:1190 #: ../src/ghtml-gtkhtml.c:1199
msgid "Unsupported method" msgid "Unsupported method"
msgstr "Méthode non supportée" msgstr "Méthode non supportée"
@ -358,7 +358,7 @@ msgstr "Actualiser"
msgid "Home" msgid "Home"
msgstr "Page d'accueil" msgstr "Page d'accueil"
#: ../src/surfer.c:292 ../src/surfer.c:594 #: ../src/surfer.c:292 ../src/surfer.c:619
msgid "Web surfer" msgid "Web surfer"
msgstr "Web surfer" msgstr "Web surfer"
@ -366,75 +366,75 @@ msgstr "Web surfer"
msgid " Location: " msgid " Location: "
msgstr " Adresse: " msgstr " Adresse: "
#: ../src/surfer.c:564 #: ../src/surfer.c:589
msgid "Ready" msgid "Ready"
msgstr "Prêt" msgstr "Prêt"
#: ../src/surfer.c:607 ../src/surfer.c:1067 #: ../src/surfer.c:632 ../src/surfer.c:1092
msgid "Untitled" msgid "Untitled"
msgstr "Sans titre" msgstr "Sans titre"
#: ../src/surfer.c:820 ../src/surfer.c:1198 #: ../src/surfer.c:845 ../src/surfer.c:1227
msgid "Save file as..." msgid "Save file as..."
msgstr "Enregistrer sous..." msgstr "Enregistrer sous..."
#: ../src/surfer.c:898 #: ../src/surfer.c:923
msgid "Find text" msgid "Find text"
msgstr "Chercher du texte" msgstr "Chercher du texte"
#: ../src/surfer.c:905 #: ../src/surfer.c:930
msgid "Text:" msgid "Text:"
msgstr "Texte: " msgstr "Texte: "
#: ../src/surfer.c:912 #: ../src/surfer.c:937
msgid "Case-sensitive" msgid "Case-sensitive"
msgstr "Sensible à la casse" msgstr "Sensible à la casse"
#: ../src/surfer.c:914 #: ../src/surfer.c:939
msgid "Wrap" msgid "Wrap"
msgstr "Chercher en boucle" msgstr "Chercher en boucle"
#: ../src/surfer.c:940 #: ../src/surfer.c:965
msgid "Text not found" msgid "Text not found"
msgstr "Texte non trouvé" msgstr "Texte non trouvé"
#: ../src/surfer.c:1028 #: ../src/surfer.c:1053
msgid "Open file..." msgid "Open file..."
msgstr "Ouvrir un fichier..." msgstr "Ouvrir un fichier..."
#: ../src/surfer.c:1057 #: ../src/surfer.c:1082
msgid "Could not initialize HTML renderer" msgid "Could not initialize HTML renderer"
msgstr "Ne peut charger le moteur de rendu HTML" msgstr "Ne peut charger le moteur de rendu HTML"
#: ../src/surfer.c:1259 #: ../src/surfer.c:1288
msgid "Javascript console" msgid "Javascript console"
msgstr "Console Javascript" msgstr "Console Javascript"
#: ../src/surfer.c:1264 #: ../src/surfer.c:1293
msgid "Command:" msgid "Command:"
msgstr "Commande :" msgstr "Commande :"
#: ../src/surfer.c:1283 #: ../src/surfer.c:1312
msgid "Message" msgid "Message"
msgstr "Message" msgstr "Message"
#: ../src/surfer.c:1288 #: ../src/surfer.c:1317
msgid "Source" msgid "Source"
msgstr "Source" msgstr "Source"
#: ../src/surfer.c:1293 #: ../src/surfer.c:1322
msgid "Line" msgid "Line"
msgstr "Ligne" msgstr "Ligne"
#: ../src/surfer.c:1418 #: ../src/surfer.c:1454
msgid "Web surfer - Source of " msgid "Web surfer - Source of "
msgstr "Web surfer - Source de " msgstr "Web surfer - Source de "
#: ../src/surfer.c:1459 ../src/surfer.c:1462 ../src/surfer.c:1517 #: ../src/surfer.c:1495 ../src/surfer.c:1498 ../src/surfer.c:1553
#: ../src/surfer.c:1522 #: ../src/surfer.c:1558
msgid "Warning" msgid "Warning"
msgstr "Avertissement" msgstr "Avertissement"
#: ../src/surfer.c:1521 #: ../src/surfer.c:1557
msgid "This file already exists. Overwrite?" msgid "This file already exists. Overwrite?"
msgstr "Le fichier existe déjà. L'écraser ?" msgstr "Le fichier existe déjà. L'écraser ?"

102
po/it.po
View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Surfer 0.1.0\n" "Project-Id-Version: Surfer 0.1.0\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-12-10 22:45+0100\n" "POT-Creation-Date: 2010-12-19 03:30+0100\n"
"PO-Revision-Date: 2010-04-11 12:06+0200\n" "PO-Revision-Date: 2010-04-11 12:06+0200\n"
"Last-Translator: Pierre Pronchery <khorben@defora.org>\n" "Last-Translator: Pierre Pronchery <khorben@defora.org>\n"
"Language-Team: Italian\n" "Language-Team: Italian\n"
@ -16,8 +16,8 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: ../src/callbacks.c:43 ../src/callbacks.c:53 ../src/surfer.c:747 #: ../src/callbacks.c:43 ../src/callbacks.c:53 ../src/surfer.c:772
#: ../src/surfer.c:750 ../src/surfer.c:1132 ../src/surfer.c:1135 #: ../src/surfer.c:775 ../src/surfer.c:1161 ../src/surfer.c:1164
msgid "Question" msgid "Question"
msgstr "" msgstr ""
@ -27,69 +27,69 @@ msgid ""
"Do you really want to close every tab opened in this window?" "Do you really want to close every tab opened in this window?"
msgstr "" msgstr ""
#: ../src/callbacks.c:451 #: ../src/callbacks.c:452
msgid "Web surfer preferences" msgid "Web surfer preferences"
msgstr "" msgstr ""
#: ../src/callbacks.c:471 #: ../src/callbacks.c:472
msgid "Homepage:" msgid "Homepage:"
msgstr "" msgstr ""
#: ../src/callbacks.c:479 #: ../src/callbacks.c:480
msgid "Focus new tabs" msgid "Focus new tabs"
msgstr "" msgstr ""
#: ../src/callbacks.c:483 #: ../src/callbacks.c:484
msgid "General" msgid "General"
msgstr "" msgstr ""
#: ../src/callbacks.c:487 #: ../src/callbacks.c:488
msgid "Direct connection" msgid "Direct connection"
msgstr "" msgstr ""
#: ../src/callbacks.c:491 #: ../src/callbacks.c:492
msgid "HTTP proxy:" msgid "HTTP proxy:"
msgstr "" msgstr ""
#: ../src/callbacks.c:498 #: ../src/callbacks.c:499
msgid "Hostname:" msgid "Hostname:"
msgstr "" msgstr ""
#: ../src/callbacks.c:502 #: ../src/callbacks.c:503
msgid "Port:" msgid "Port:"
msgstr "" msgstr ""
#: ../src/callbacks.c:510 #: ../src/callbacks.c:511
msgid "Network" msgid "Network"
msgstr "" msgstr ""
#: ../src/common/conn.c:204 ../src/download.c:185 ../src/ghtml-gtkhtml.c:832 #: ../src/common/conn.c:204 ../src/download.c:185 ../src/ghtml-gtkhtml.c:841
msgid "Resolving..." msgid "Resolving..."
msgstr "" msgstr ""
#: ../src/common/conn.c:253 ../src/download.c:477 ../src/ghtml-gtkhtml.c:882 #: ../src/common/conn.c:253 ../src/download.c:477 ../src/ghtml-gtkhtml.c:891
msgid "Connected" msgid "Connected"
msgstr "" msgstr ""
#: ../src/common/conn.c:280 ../src/ghtml-gtkhtml.c:917 #: ../src/common/conn.c:280 ../src/ghtml-gtkhtml.c:926
#: ../src/ghtml-webkit.c:422 ../src/ghtml-webkit.c:581 #: ../src/ghtml-webkit.c:487 ../src/ghtml-webkit.c:626
#: ../src/ghtml-webkit.c:594 #: ../src/ghtml-webkit.c:639
msgid "Downloading..." msgid "Downloading..."
msgstr "" msgstr ""
#: ../src/common/conn.c:305 ../src/ghtml-gtkhtml.c:963 #: ../src/common/conn.c:305 ../src/ghtml-gtkhtml.c:972
msgid "Unsupported protocol" msgid "Unsupported protocol"
msgstr "" msgstr ""
#: ../src/common/conn.c:309 ../src/ghtml-gtkhtml.c:967 #: ../src/common/conn.c:309 ../src/ghtml-gtkhtml.c:976
msgid "Unknown host" msgid "Unknown host"
msgstr "" msgstr ""
#: ../src/common/conn.c:314 ../src/ghtml-gtkhtml.c:972 #: ../src/common/conn.c:314 ../src/ghtml-gtkhtml.c:981
msgid "Unspecified error" msgid "Unspecified error"
msgstr "" msgstr ""
#: ../src/common/conn.c:348 ../src/download.c:554 ../src/ghtml-gtkhtml.c:1068 #: ../src/common/conn.c:348 ../src/download.c:554 ../src/ghtml-gtkhtml.c:1077
msgid "Timeout" msgid "Timeout"
msgstr "" msgstr ""
@ -126,7 +126,7 @@ msgid "Close window when the download is complete"
msgstr "" msgstr ""
#: ../src/download.c:291 ../src/download.c:296 ../src/download.c:631 #: ../src/download.c:291 ../src/download.c:296 ../src/download.c:631
#: ../src/surfer.c:867 ../src/surfer.c:870 #: ../src/surfer.c:892 ../src/surfer.c:895
msgid "Error" msgid "Error"
msgstr "" msgstr ""
@ -181,7 +181,7 @@ msgstr ""
msgid "Code " msgid "Code "
msgstr "" msgstr ""
#: ../src/download.c:605 ../src/ghtml-webkit.c:537 ../src/surfer.c:869 #: ../src/download.c:605 ../src/ghtml-webkit.c:582 ../src/surfer.c:894
msgid "Unknown error" msgid "Unknown error"
msgstr "" msgstr ""
@ -192,32 +192,32 @@ msgid ""
" -U\tuser agent string to send\n" " -U\tuser agent string to send\n"
msgstr "" msgstr ""
#: ../src/ghtml-gtkhtml.c:709 #: ../src/ghtml-gtkhtml.c:718
msgid "Unknown protocol" msgid "Unknown protocol"
msgstr "" msgstr ""
#: ../src/ghtml-gtkhtml.c:775 #: ../src/ghtml-gtkhtml.c:784
msgid "Reading file..." msgid "Reading file..."
msgstr "" msgstr ""
#: ../src/ghtml-gtkhtml.c:987 #: ../src/ghtml-gtkhtml.c:996
msgid "Redirecting..." msgid "Redirecting..."
msgstr "" msgstr ""
#: ../src/ghtml-gtkhtml.c:995 #: ../src/ghtml-gtkhtml.c:1004
msgid "Redirecting to " msgid "Redirecting to "
msgstr "" msgstr ""
#: ../src/ghtml-gtkhtml.c:1029 ../src/ghtml-webkit.c:317 #: ../src/ghtml-gtkhtml.c:1038 ../src/ghtml-webkit.c:382
#: ../src/ghtml-webkit.c:420 #: ../src/ghtml-webkit.c:485
msgid "Connecting..." msgid "Connecting..."
msgstr "" msgstr ""
#: ../src/ghtml-gtkhtml.c:1032 #: ../src/ghtml-gtkhtml.c:1041
msgid "Connecting to " msgid "Connecting to "
msgstr "" msgstr ""
#: ../src/ghtml-gtkhtml.c:1190 #: ../src/ghtml-gtkhtml.c:1199
msgid "Unsupported method" msgid "Unsupported method"
msgstr "" msgstr ""
@ -353,7 +353,7 @@ msgstr ""
msgid "Home" msgid "Home"
msgstr "" msgstr ""
#: ../src/surfer.c:292 ../src/surfer.c:594 #: ../src/surfer.c:292 ../src/surfer.c:619
msgid "Web surfer" msgid "Web surfer"
msgstr "" msgstr ""
@ -361,75 +361,75 @@ msgstr ""
msgid " Location: " msgid " Location: "
msgstr "" msgstr ""
#: ../src/surfer.c:564 #: ../src/surfer.c:589
msgid "Ready" msgid "Ready"
msgstr "" msgstr ""
#: ../src/surfer.c:607 ../src/surfer.c:1067 #: ../src/surfer.c:632 ../src/surfer.c:1092
msgid "Untitled" msgid "Untitled"
msgstr "" msgstr ""
#: ../src/surfer.c:820 ../src/surfer.c:1198 #: ../src/surfer.c:845 ../src/surfer.c:1227
msgid "Save file as..." msgid "Save file as..."
msgstr "" msgstr ""
#: ../src/surfer.c:898 #: ../src/surfer.c:923
msgid "Find text" msgid "Find text"
msgstr "" msgstr ""
#: ../src/surfer.c:905 #: ../src/surfer.c:930
msgid "Text:" msgid "Text:"
msgstr "" msgstr ""
#: ../src/surfer.c:912 #: ../src/surfer.c:937
msgid "Case-sensitive" msgid "Case-sensitive"
msgstr "" msgstr ""
#: ../src/surfer.c:914 #: ../src/surfer.c:939
msgid "Wrap" msgid "Wrap"
msgstr "" msgstr ""
#: ../src/surfer.c:940 #: ../src/surfer.c:965
msgid "Text not found" msgid "Text not found"
msgstr "" msgstr ""
#: ../src/surfer.c:1028 #: ../src/surfer.c:1053
msgid "Open file..." msgid "Open file..."
msgstr "" msgstr ""
#: ../src/surfer.c:1057 #: ../src/surfer.c:1082
msgid "Could not initialize HTML renderer" msgid "Could not initialize HTML renderer"
msgstr "" msgstr ""
#: ../src/surfer.c:1259 #: ../src/surfer.c:1288
msgid "Javascript console" msgid "Javascript console"
msgstr "" msgstr ""
#: ../src/surfer.c:1264 #: ../src/surfer.c:1293
msgid "Command:" msgid "Command:"
msgstr "" msgstr ""
#: ../src/surfer.c:1283 #: ../src/surfer.c:1312
msgid "Message" msgid "Message"
msgstr "" msgstr ""
#: ../src/surfer.c:1288 #: ../src/surfer.c:1317
msgid "Source" msgid "Source"
msgstr "" msgstr ""
#: ../src/surfer.c:1293 #: ../src/surfer.c:1322
msgid "Line" msgid "Line"
msgstr "" msgstr ""
#: ../src/surfer.c:1418 #: ../src/surfer.c:1454
msgid "Web surfer - Source of " msgid "Web surfer - Source of "
msgstr "" msgstr ""
#: ../src/surfer.c:1459 ../src/surfer.c:1462 ../src/surfer.c:1517 #: ../src/surfer.c:1495 ../src/surfer.c:1498 ../src/surfer.c:1553
#: ../src/surfer.c:1522 #: ../src/surfer.c:1558
msgid "Warning" msgid "Warning"
msgstr "" msgstr ""
#: ../src/surfer.c:1521 #: ../src/surfer.c:1557
msgid "This file already exists. Overwrite?" msgid "This file already exists. Overwrite?"
msgstr "" msgstr ""

View File

@ -404,6 +404,7 @@ static gboolean _switch_page_idle(gpointer data)
/* XXX the Surfer fetches the right values by himself => API change? */ /* XXX the Surfer fetches the right values by himself => API change? */
surfer_set_location(surfer, NULL); surfer_set_location(surfer, NULL);
surfer_set_progress(surfer, 0.0); surfer_set_progress(surfer, 0.0);
surfer_set_security(surfer, SS_NONE);
surfer_set_status(surfer, NULL); surfer_set_status(surfer, NULL);
surfer_set_title(surfer, NULL); surfer_set_title(surfer, NULL);
return FALSE; return FALSE;
@ -602,6 +603,15 @@ void on_refresh(gpointer data)
} }
/* on_security */
void on_security(gpointer data)
{
Surfer * surfer = data;
surfer_view_security(surfer);
}
/* on_stop */ /* on_stop */
void on_stop(gpointer data) void on_stop(gpointer data)
{ {

View File

@ -65,6 +65,7 @@ void on_normal_size(gpointer data);
void on_path_activate(gpointer data); void on_path_activate(gpointer data);
void on_preferences(gpointer data); void on_preferences(gpointer data);
void on_refresh(gpointer data); void on_refresh(gpointer data);
void on_security(gpointer data);
void on_stop(gpointer data); void on_stop(gpointer data);
void on_zoom_in(gpointer data); void on_zoom_in(gpointer data);
void on_zoom_out(gpointer data); void on_zoom_out(gpointer data);

View File

@ -49,8 +49,9 @@ struct _Surfer
GtkWidget * locationbar; GtkWidget * locationbar;
GtkWidget * lb_path; GtkWidget * lb_path;
GtkWidget * notebook; GtkWidget * notebook;
GtkWidget * progress;
GtkWidget * statusbox; GtkWidget * statusbox;
GtkWidget * security;
GtkWidget * progress;
GtkWidget * statusbar; GtkWidget * statusbar;
guint statusbar_id; guint statusbar_id;

View File

@ -243,6 +243,14 @@ gdouble ghtml_get_progress(GtkWidget * widget)
} }
/* ghtml_get_security */
SurferSecurity ghtml_get_security(GtkWidget * ghtml)
{
/* FIXME implement */
return SS_NONE;
}
/* ghtml_get_source */ /* ghtml_get_source */
char const * ghtml_get_source(GtkWidget * widget) char const * ghtml_get_source(GtkWidget * widget)
{ {
@ -598,6 +606,7 @@ static int _ghtml_document_load(GHtml * ghtml, gchar const * url,
ghtml->history = g_list_first(ghtml->current); ghtml->history = g_list_first(ghtml->current);
} }
surfer_set_location(ghtml->surfer, url); surfer_set_location(ghtml->surfer, url);
surfer_set_security(ghtml->surfer, SS_NONE);
surfer_set_title(ghtml->surfer, NULL); surfer_set_title(ghtml->surfer, NULL);
html_document_open_stream(ghtml->html_document, "text/html"); html_document_open_stream(ghtml->html_document, "text/html");
if((gc = _ghtml_stream_load(ghtml, ghtml->html_document->current_stream, if((gc = _ghtml_stream_load(ghtml, ghtml->html_document->current_stream,

View File

@ -362,6 +362,14 @@ gdouble ghtml_get_progress(GtkWidget * ghtml)
} }
/* ghtml_get_security */
SurferSecurity ghtml_get_security(GtkWidget * ghtml)
{
/* FIXME implement */
return SS_NONE;
}
/* ghtml_get_source */ /* ghtml_get_source */
char const * ghtml_get_source(GtkWidget * widget) char const * ghtml_get_source(GtkWidget * widget)
{ {

View File

@ -391,6 +391,14 @@ gdouble ghtml_get_progress(GtkWidget * widget)
} }
/* ghtml_get_security */
SurferSecurity ghtml_get_security(GtkWidget * ghtml)
{
/* FIXME implement */
return SS_NONE;
}
/* ghtml_get_source */ /* ghtml_get_source */
char const * ghtml_get_source(GtkWidget * widget) char const * ghtml_get_source(GtkWidget * widget)
{ {

View File

@ -17,6 +17,7 @@
#include <unistd.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <netdb.h> #include <netdb.h>
@ -29,9 +30,19 @@
/* private */ /* private */
/* types */
typedef struct _GHtml
{
Surfer * surfer;
GtkWidget * widget;
GtkWidget * view;
char * status;
} GHtml;
/* prototypes */ /* prototypes */
/* functions */ /* functions */
static void _ghtml_set_status(GtkWidget * ghtml, char const * status); static void _ghtml_set_status(GtkWidget * widget, char const * status);
/* callbacks */ /* callbacks */
static gboolean _on_console_message(WebKitWebView * view, const gchar * message, static gboolean _on_console_message(WebKitWebView * view, const gchar * message,
@ -71,83 +82,120 @@ static gboolean _on_web_view_ready(WebKitWebView * view, gpointer data);
/* public */ /* public */
/* functions */ /* functions */
/* ghtml_new */ /* ghtml_new */
static void _new_init(GHtml * ghtml);
GtkWidget * ghtml_new(Surfer * surfer) GtkWidget * ghtml_new(Surfer * surfer)
{ {
GtkWidget * view; static int initialized = 0;
GHtml * ghtml;
GtkWidget * widget; GtkWidget * widget;
if((ghtml = object_new(sizeof(*ghtml))) == NULL)
return NULL;
ghtml->surfer = surfer;
ghtml->status = NULL;
/* widgets */ /* widgets */
view = webkit_web_view_new();
widget = gtk_scrolled_window_new(NULL, NULL); widget = gtk_scrolled_window_new(NULL, NULL);
g_object_set_data(G_OBJECT(widget), "surfer", surfer); ghtml->widget = widget;
g_object_set_data(G_OBJECT(widget), "view", view); ghtml->view = webkit_web_view_new();
g_object_set_data(G_OBJECT(widget), "ghtml", ghtml);
/* view */ /* view */
g_signal_connect(G_OBJECT(view), "console-message", G_CALLBACK( g_signal_connect(G_OBJECT(ghtml->view), "console-message", G_CALLBACK(
_on_console_message), widget); _on_console_message), widget);
g_signal_connect(G_OBJECT(view), "create-web-view", G_CALLBACK( g_signal_connect(G_OBJECT(ghtml->view), "create-web-view", G_CALLBACK(
_on_create_web_view), widget); _on_create_web_view), widget);
#ifdef WEBKIT_TYPE_DOWNLOAD #ifdef WEBKIT_TYPE_DOWNLOAD
g_signal_connect(G_OBJECT(view), "download-requested", G_CALLBACK( g_signal_connect(G_OBJECT(ghtml->view), "download-requested",
_on_download_requested), widget); G_CALLBACK(_on_download_requested), widget);
#endif #endif
g_signal_connect(G_OBJECT(view), "hovering-over-link", G_CALLBACK( g_signal_connect(G_OBJECT(ghtml->view), "hovering-over-link",
_on_hovering_over_link), widget); G_CALLBACK(_on_hovering_over_link), widget);
g_signal_connect(G_OBJECT(view), "load-committed", G_CALLBACK( g_signal_connect(G_OBJECT(ghtml->view), "load-committed", G_CALLBACK(
_on_load_committed), widget); _on_load_committed), widget);
g_signal_connect(G_OBJECT(view), "load-error", G_CALLBACK( g_signal_connect(G_OBJECT(ghtml->view), "load-error", G_CALLBACK(
_on_load_error), widget); _on_load_error), widget);
g_signal_connect(G_OBJECT(view), "load-finished", G_CALLBACK( g_signal_connect(G_OBJECT(ghtml->view), "load-finished", G_CALLBACK(
_on_load_finished), widget); _on_load_finished), widget);
g_signal_connect(G_OBJECT(view), "load-progress-changed", G_CALLBACK( g_signal_connect(G_OBJECT(ghtml->view), "load-progress-changed",
_on_load_progress_changed), widget); G_CALLBACK(_on_load_progress_changed), widget);
g_signal_connect(G_OBJECT(view), "load-started", G_CALLBACK( g_signal_connect(G_OBJECT(ghtml->view), "load-started", G_CALLBACK(
_on_load_started), widget); _on_load_started), widget);
g_signal_connect(G_OBJECT(view), "script-alert", G_CALLBACK( g_signal_connect(G_OBJECT(ghtml->view), "script-alert", G_CALLBACK(
_on_script_alert), widget); _on_script_alert), widget);
g_signal_connect(G_OBJECT(view), "script-confirm", G_CALLBACK( g_signal_connect(G_OBJECT(ghtml->view), "script-confirm", G_CALLBACK(
_on_script_confirm), widget); _on_script_confirm), widget);
g_signal_connect(G_OBJECT(view), "script-prompt", G_CALLBACK( g_signal_connect(G_OBJECT(ghtml->view), "script-prompt", G_CALLBACK(
_on_script_prompt), widget); _on_script_prompt), widget);
g_signal_connect(G_OBJECT(view), "status-bar-text-changed", G_CALLBACK( g_signal_connect(G_OBJECT(ghtml->view), "status-bar-text-changed",
_on_status_bar_text_changed), widget); G_CALLBACK(_on_status_bar_text_changed), widget);
g_signal_connect(G_OBJECT(view), "title-changed", G_CALLBACK( g_signal_connect(G_OBJECT(ghtml->view), "title-changed", G_CALLBACK(
_on_title_changed), widget); _on_title_changed), widget);
/* scrolled window */ /* scrolled window */
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(widget), gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(widget),
GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
gtk_container_add(GTK_CONTAINER(widget), view); gtk_container_add(GTK_CONTAINER(widget), ghtml->view);
if(initialized++ == 0)
_new_init(ghtml);
initialized = 1;
return widget; return widget;
} }
static void _new_init(GHtml * ghtml)
{
SoupSession * session;
char const * cacerts[] =
{
"/etc/pki/tls/certs/ca-bundle.crt",
"/etc/ssl/certs/ca-certificates.crt",
"/etc/openssl/certs/ca-certificates.crt"
};
size_t i;
session = webkit_get_default_session();
for(i = 0; i < sizeof(cacerts) / sizeof(*cacerts); i++)
if(access(cacerts[i], R_OK) == 0)
{
g_object_set(session, "ssl-ca-file", cacerts[i],
"ssl-strict", FALSE, NULL);
return;
}
surfer_warning(ghtml->surfer, "Could not load certificate bundle:\n"
"SSL certificates will not be verified.");
}
/* ghtml_delete */ /* ghtml_delete */
void ghtml_delete(GtkWidget * ghtml) void ghtml_delete(GtkWidget * widget)
{ {
free(g_object_get_data(G_OBJECT(ghtml), "status")); GHtml * ghtml;
ghtml = g_object_get_data(G_OBJECT(widget), "ghtml");
free(ghtml->status);
object_delete(ghtml);
} }
/* accessors */ /* accessors */
/* ghtml_can_go_back */ /* ghtml_can_go_back */
gboolean ghtml_can_go_back(GtkWidget * ghtml) gboolean ghtml_can_go_back(GtkWidget * widget)
{ {
GtkWidget * view; GHtml * ghtml;
view = g_object_get_data(G_OBJECT(ghtml), "view"); ghtml = g_object_get_data(G_OBJECT(widget), "ghtml");
return webkit_web_view_can_go_back(WEBKIT_WEB_VIEW(view)); return webkit_web_view_can_go_back(WEBKIT_WEB_VIEW(ghtml->view));
} }
gboolean ghtml_can_go_forward(GtkWidget * ghtml) gboolean ghtml_can_go_forward(GtkWidget * widget)
{ {
GtkWidget * view; GHtml * ghtml;
view = g_object_get_data(G_OBJECT(ghtml), "view"); ghtml = g_object_get_data(G_OBJECT(widget), "ghtml");
return webkit_web_view_can_go_forward(WEBKIT_WEB_VIEW(view)); return webkit_web_view_can_go_forward(WEBKIT_WEB_VIEW(ghtml->view));
} }
char const * ghtml_get_link_message(GtkWidget * ghtml) char const * ghtml_get_link_message(GtkWidget * widget)
{ {
/* FIXME implement */ /* FIXME implement */
return NULL; return NULL;
@ -155,46 +203,76 @@ char const * ghtml_get_link_message(GtkWidget * ghtml)
/* ghtml_get_location */ /* ghtml_get_location */
char const * ghtml_get_location(GtkWidget * ghtml) char const * ghtml_get_location(GtkWidget * widget)
{ {
GtkWidget * view; GHtml * ghtml;
WebKitWebFrame * frame; WebKitWebFrame * frame;
view = g_object_get_data(G_OBJECT(ghtml), "view"); ghtml = g_object_get_data(G_OBJECT(widget), "ghtml");
frame = webkit_web_view_get_main_frame(WEBKIT_WEB_VIEW(view)); frame = webkit_web_view_get_main_frame(WEBKIT_WEB_VIEW(ghtml->view));
return webkit_web_frame_get_uri(frame); return webkit_web_frame_get_uri(frame);
} }
/* ghtml_get_progress */ /* ghtml_get_progress */
gdouble ghtml_get_progress(GtkWidget * ghtml) gdouble ghtml_get_progress(GtkWidget * widget)
{ {
gdouble ret = -1.0;
#if WEBKIT_CHECK_VERSION(1, 1, 0) /* XXX may not be accurate */ #if WEBKIT_CHECK_VERSION(1, 1, 0) /* XXX may not be accurate */
gdouble ret; GHtml * ghtml;
GtkWidget * view;
view = g_object_get_data(G_OBJECT(ghtml), "view"); ghtml = g_object_get_data(G_OBJECT(widget), "ghtml");
ret = webkit_web_view_get_progress(WEBKIT_WEB_VIEW(view)); ret = webkit_web_view_get_progress(WEBKIT_WEB_VIEW(ghtml->view));
if(ret == 0.0) if(ret == 0.0)
ret = -1.0; ret = -1.0;
return ret;
#else
return -1.0;
#endif #endif
return ret;
}
/* ghtml_get_security */
SurferSecurity ghtml_get_security(GtkWidget * widget)
{
SurferSecurity security = SS_NONE;
#if WEBKIT_CHECK_VERSION(1, 1, 0)
GHtml * ghtml;
WebKitWebFrame * frame;
char const * location;
WebKitWebDataSource *source;
WebKitNetworkRequest *request;
SoupMessage * message;
#endif
#if WEBKIT_CHECK_VERSION(1, 1, 0)
ghtml = g_object_get_data(G_OBJECT(widget), "ghtml");
frame = webkit_web_view_get_main_frame(WEBKIT_WEB_VIEW(ghtml->view));
if((location = webkit_web_frame_get_uri(frame)) != NULL
&& strncmp(location, "https://", 8) == 0)
{
security = SS_UNTRUSTED;
source = webkit_web_frame_get_data_source(frame);
request = webkit_web_data_source_get_request(source);
message = webkit_network_request_get_message(request);
if(message != NULL && soup_message_get_flags(message)
& SOUP_MESSAGE_CERTIFICATE_TRUSTED)
security = SS_TRUSTED;
}
#endif
return security;
} }
/* ghtml_get_source */ /* ghtml_get_source */
char const * ghtml_get_source(GtkWidget * ghtml) char const * ghtml_get_source(GtkWidget * widget)
{ {
#if WEBKIT_CHECK_VERSION(1, 1, 0) #if WEBKIT_CHECK_VERSION(1, 1, 0)
GtkWidget * view; GHtml * ghtml;
WebKitWebFrame * frame; WebKitWebFrame * frame;
WebKitWebDataSource * source; WebKitWebDataSource * source;
GString * str; GString * str;
view = g_object_get_data(G_OBJECT(ghtml), "view"); ghtml = g_object_get_data(G_OBJECT(widget), "ghtml");
frame = webkit_web_view_get_main_frame(WEBKIT_WEB_VIEW(view)); frame = webkit_web_view_get_main_frame(WEBKIT_WEB_VIEW(ghtml->view));
source = webkit_web_frame_get_data_source(frame); source = webkit_web_frame_get_data_source(frame);
if((str = webkit_web_data_source_get_data(source)) == NULL) if((str = webkit_web_data_source_get_data(source)) == NULL)
return NULL; return NULL;
@ -208,24 +286,27 @@ char const * ghtml_get_source(GtkWidget * ghtml)
/* ghtml_get_status */ /* ghtml_get_status */
char const * ghtml_get_status(GtkWidget * widget) char const * ghtml_get_status(GtkWidget * widget)
{ {
return g_object_get_data(G_OBJECT(widget), "status"); GHtml * ghtml;
ghtml = g_object_get_data(G_OBJECT(widget), "ghtml");
return ghtml->status;
} }
/* ghtml_get_title */ /* ghtml_get_title */
char const * ghtml_get_title(GtkWidget * ghtml) char const * ghtml_get_title(GtkWidget * widget)
{ {
GtkWidget * view; GHtml * ghtml;
WebKitWebFrame * frame; WebKitWebFrame * frame;
view = g_object_get_data(G_OBJECT(ghtml), "view"); ghtml = g_object_get_data(G_OBJECT(widget), "ghtml");
frame = webkit_web_view_get_main_frame(WEBKIT_WEB_VIEW(view)); frame = webkit_web_view_get_main_frame(WEBKIT_WEB_VIEW(ghtml->view));
return webkit_web_frame_get_title(frame); return webkit_web_frame_get_title(frame);
} }
/* ghtml_set_proxy */ /* ghtml_set_proxy */
int ghtml_set_proxy(GtkWidget * ghtml, SurferProxyType type, char const * http, int ghtml_set_proxy(GtkWidget * widget, SurferProxyType type, char const * http,
unsigned int http_port) unsigned int http_port)
{ {
#if WEBKIT_CHECK_VERSION(1, 1, 0) #if WEBKIT_CHECK_VERSION(1, 1, 0)
@ -256,119 +337,118 @@ int ghtml_set_proxy(GtkWidget * ghtml, SurferProxyType type, char const * http,
/* useful */ /* useful */
/* ghtml_execute */ /* ghtml_execute */
void ghtml_execute(GtkWidget * ghtml, char const * code) void ghtml_execute(GtkWidget * widget, char const * code)
{ {
GtkWidget * view; GHtml * ghtml;
view = g_object_get_data(G_OBJECT(ghtml), "view"); ghtml = g_object_get_data(G_OBJECT(widget), "ghtml");
webkit_web_view_execute_script(WEBKIT_WEB_VIEW(view), code); webkit_web_view_execute_script(WEBKIT_WEB_VIEW(ghtml->view), code);
} }
/* ghtml_find */ /* ghtml_find */
gboolean ghtml_find(GtkWidget * ghtml, char const * text, gboolean sensitive, gboolean ghtml_find(GtkWidget * widget, char const * text, gboolean sensitive,
gboolean wrap) gboolean wrap)
{ {
GtkWidget * view; GHtml * ghtml;
view = g_object_get_data(G_OBJECT(ghtml), "view"); ghtml = g_object_get_data(G_OBJECT(widget), "ghtml");
return webkit_web_view_search_text(WEBKIT_WEB_VIEW(view), text, return webkit_web_view_search_text(WEBKIT_WEB_VIEW(ghtml->view), text,
sensitive, TRUE, wrap); sensitive, TRUE, wrap);
} }
gboolean ghtml_go_back(GtkWidget * ghtml) gboolean ghtml_go_back(GtkWidget * widget)
{ {
GtkWidget * view; GHtml * ghtml;
if(ghtml_can_go_back(ghtml) == FALSE) if(ghtml_can_go_back(widget) == FALSE)
return FALSE; return FALSE;
view = g_object_get_data(G_OBJECT(ghtml), "view"); ghtml = g_object_get_data(G_OBJECT(widget), "ghtml");
webkit_web_view_go_back(WEBKIT_WEB_VIEW(view)); webkit_web_view_go_back(WEBKIT_WEB_VIEW(ghtml->view));
return TRUE; return TRUE;
} }
gboolean ghtml_go_forward(GtkWidget * ghtml) gboolean ghtml_go_forward(GtkWidget * widget)
{ {
GtkWidget * view; GHtml * ghtml;
if(ghtml_can_go_forward(ghtml) == FALSE) if(ghtml_can_go_forward(widget) == FALSE)
return FALSE; return FALSE;
view = g_object_get_data(G_OBJECT(ghtml), "view"); ghtml = g_object_get_data(G_OBJECT(widget), "ghtml");
webkit_web_view_go_forward(WEBKIT_WEB_VIEW(view)); webkit_web_view_go_forward(WEBKIT_WEB_VIEW(ghtml->view));
return TRUE; return TRUE;
} }
void ghtml_load_url(GtkWidget * ghtml, char const * url) void ghtml_load_url(GtkWidget * widget, char const * url)
{ {
GtkWidget * view; GHtml * ghtml;
Surfer * surfer;
gchar * p; gchar * p;
ghtml = g_object_get_data(G_OBJECT(widget), "ghtml");
if((p = _ghtml_make_url(NULL, url)) != NULL) if((p = _ghtml_make_url(NULL, url)) != NULL)
url = p; url = p;
view = g_object_get_data(G_OBJECT(ghtml), "view"); webkit_web_view_open(WEBKIT_WEB_VIEW(ghtml->view), url);
webkit_web_view_open(WEBKIT_WEB_VIEW(view), url);
g_free(p); g_free(p);
surfer = g_object_get_data(G_OBJECT(ghtml), "surfer"); surfer_set_progress(ghtml->surfer, 0.0);
surfer_set_progress(surfer, 0.0); surfer_set_security(ghtml->surfer, SS_NONE);
_ghtml_set_status(ghtml, _("Connecting...")); _ghtml_set_status(widget, _("Connecting..."));
} }
/* ghtml_print */ /* ghtml_print */
void ghtml_print(GtkWidget * ghtml) void ghtml_print(GtkWidget * widget)
{ {
#if WEBKIT_CHECK_VERSION(1, 1, 0) /* XXX may not be accurate */ #if WEBKIT_CHECK_VERSION(1, 1, 0) /* XXX may not be accurate */
GtkWidget * view; GHtml * ghtml;
WebKitWebFrame * frame; WebKitWebFrame * frame;
view = g_object_get_data(G_OBJECT(ghtml), "view"); ghtml = g_object_get_data(G_OBJECT(widget), "ghtml");
frame = webkit_web_view_get_main_frame(WEBKIT_WEB_VIEW(view)); frame = webkit_web_view_get_main_frame(WEBKIT_WEB_VIEW(ghtml->view));
webkit_web_frame_print(frame); webkit_web_frame_print(frame);
#endif #endif
} }
void ghtml_refresh(GtkWidget * ghtml) void ghtml_refresh(GtkWidget * widget)
{ {
GtkWidget * view; GHtml * ghtml;
view = g_object_get_data(G_OBJECT(ghtml), "view"); ghtml = g_object_get_data(G_OBJECT(widget), "ghtml");
webkit_web_view_reload(WEBKIT_WEB_VIEW(view)); webkit_web_view_reload(WEBKIT_WEB_VIEW(ghtml->view));
} }
void ghtml_reload(GtkWidget * ghtml) void ghtml_reload(GtkWidget * widget)
{ {
GtkWidget * view; GHtml * ghtml;
view = g_object_get_data(G_OBJECT(ghtml), "view"); ghtml = g_object_get_data(G_OBJECT(widget), "ghtml");
#if WEBKIT_CHECK_VERSION(1, 0, 3) #if WEBKIT_CHECK_VERSION(1, 0, 3)
webkit_web_view_reload_bypass_cache(WEBKIT_WEB_VIEW(view)); webkit_web_view_reload_bypass_cache(WEBKIT_WEB_VIEW(ghtml->view));
#else #else
webkit_web_view_reload(WEBKIT_WEB_VIEW(view)); webkit_web_view_reload(WEBKIT_WEB_VIEW(ghtml->view));
#endif #endif
} }
void ghtml_stop(GtkWidget * ghtml) void ghtml_stop(GtkWidget * widget)
{ {
GtkWidget * view; GHtml * ghtml;
view = g_object_get_data(G_OBJECT(ghtml), "view"); ghtml = g_object_get_data(G_OBJECT(widget), "ghtml");
webkit_web_view_stop_loading(WEBKIT_WEB_VIEW(view)); webkit_web_view_stop_loading(WEBKIT_WEB_VIEW(ghtml->view));
} }
void ghtml_select_all(GtkWidget * ghtml) void ghtml_select_all(GtkWidget * widget)
{ {
GtkWidget * view; GHtml * ghtml;
view = g_object_get_data(G_OBJECT(ghtml), "view"); ghtml = g_object_get_data(G_OBJECT(widget), "ghtml");
webkit_web_view_select_all(WEBKIT_WEB_VIEW(view)); webkit_web_view_select_all(WEBKIT_WEB_VIEW(ghtml->view));
} }
@ -378,52 +458,52 @@ void ghtml_unselect_all(GtkWidget * ghtml)
} }
void ghtml_zoom_in(GtkWidget * ghtml) void ghtml_zoom_in(GtkWidget * widget)
{ {
GtkWidget * view; GHtml * ghtml;
view = g_object_get_data(G_OBJECT(ghtml), "view"); ghtml = g_object_get_data(G_OBJECT(widget), "ghtml");
webkit_web_view_zoom_in(WEBKIT_WEB_VIEW(view)); webkit_web_view_zoom_in(WEBKIT_WEB_VIEW(ghtml->view));
} }
void ghtml_zoom_out(GtkWidget * ghtml) void ghtml_zoom_out(GtkWidget * widget)
{ {
GtkWidget * view; GHtml * ghtml;
view = g_object_get_data(G_OBJECT(ghtml), "view"); ghtml = g_object_get_data(G_OBJECT(widget), "ghtml");
webkit_web_view_zoom_out(WEBKIT_WEB_VIEW(view)); webkit_web_view_zoom_out(WEBKIT_WEB_VIEW(ghtml->view));
} }
void ghtml_zoom_reset(GtkWidget * ghtml) void ghtml_zoom_reset(GtkWidget * widget)
{ {
GtkWidget * view; GHtml * ghtml;
view = g_object_get_data(G_OBJECT(ghtml), "view"); ghtml = g_object_get_data(G_OBJECT(widget), "ghtml");
webkit_web_view_set_zoom_level(WEBKIT_WEB_VIEW(view), 1.0); webkit_web_view_set_zoom_level(WEBKIT_WEB_VIEW(ghtml->view), 1.0);
} }
/* private */ /* private */
/* functions */ /* functions */
static void _ghtml_set_status(GtkWidget * ghtml, char const * status) static void _ghtml_set_status(GtkWidget * widget, char const * status)
{ {
Surfer * surfer; GHtml * ghtml;
gdouble progress; gdouble progress;
surfer = g_object_get_data(G_OBJECT(ghtml), "surfer"); ghtml = g_object_get_data(G_OBJECT(widget), "ghtml");
free(g_object_get_data(G_OBJECT(ghtml), "status")); free(ghtml->status);
if(status == NULL) if(status == NULL)
{ {
if((progress = ghtml_get_progress(ghtml)) == 0.0) if((progress = ghtml_get_progress(widget)) == 0.0)
status = _("Connecting..."); status = _("Connecting...");
else if(progress > 0.0) else if(progress > 0.0)
status = _("Downloading..."); status = _("Downloading...");
} }
g_object_set_data(G_OBJECT(ghtml), "status", (status != NULL) /* XXX may fail */
? strdup(status) : NULL); /* XXX may fail */ ghtml->status = (status != NULL) ? strdup(status) : NULL;
surfer_set_status(surfer, status); surfer_set_status(ghtml->surfer, status);
} }
@ -432,10 +512,10 @@ static void _ghtml_set_status(GtkWidget * ghtml, char const * status)
static gboolean _on_console_message(WebKitWebView * view, const gchar * message, static gboolean _on_console_message(WebKitWebView * view, const gchar * message,
guint line, const gchar * source, gpointer data) guint line, const gchar * source, gpointer data)
{ {
Surfer * surfer; GHtml * ghtml;
surfer = g_object_get_data(G_OBJECT(data), "surfer"); ghtml = g_object_get_data(G_OBJECT(data), "ghtml");
surfer_console_message(surfer, message, source, line); surfer_console_message(ghtml->surfer, message, source, line);
return TRUE; return TRUE;
} }
@ -444,17 +524,16 @@ static gboolean _on_console_message(WebKitWebView * view, const gchar * message,
static WebKitWebView * _on_create_web_view(WebKitWebView * view, static WebKitWebView * _on_create_web_view(WebKitWebView * view,
WebKitWebFrame * frame, gpointer data) WebKitWebFrame * frame, gpointer data)
{ {
WebKitWebView * ret; GHtml * ghtml;
Surfer * surfer; Surfer * surfer;
surfer = g_object_get_data(G_OBJECT(data), "surfer");
if((surfer = surfer_new(NULL)) == NULL) if((surfer = surfer_new(NULL)) == NULL)
return NULL; return NULL;
/* FIXME we may want the history to be copied (and then more) */ /* FIXME we may want the history to be copied (and then more) */
ret = g_object_get_data(G_OBJECT(surfer_get_view(surfer)), "view"); ghtml = g_object_get_data(G_OBJECT(surfer_get_view(surfer)), "ghtml");
g_signal_connect(G_OBJECT(ret), "web-view-ready", G_CALLBACK( g_signal_connect(G_OBJECT(ghtml->view), "web-view-ready", G_CALLBACK(
_on_web_view_ready), surfer_get_view(surfer)); _on_web_view_ready), surfer_get_view(surfer));
return ret; return WEBKIT_WEB_VIEW(ghtml->view);
} }
@ -463,14 +542,14 @@ static WebKitWebView * _on_create_web_view(WebKitWebView * view,
static gboolean _on_download_requested(WebKitWebView * view, static gboolean _on_download_requested(WebKitWebView * view,
WebKitDownload * download, gpointer data) WebKitDownload * download, gpointer data)
{ {
Surfer * surfer; GHtml * ghtml;
char const * url; char const * url;
char const * suggested; char const * suggested;
surfer = g_object_get_data(G_OBJECT(data), "surfer"); ghtml = g_object_get_data(G_OBJECT(data), "ghtml");
url = webkit_download_get_uri(download); url = webkit_download_get_uri(download);
suggested = webkit_download_get_suggested_filename(download); suggested = webkit_download_get_suggested_filename(download);
surfer_download(surfer, url, suggested); surfer_download(ghtml->surfer, url, suggested);
webkit_download_cancel(download); webkit_download_cancel(download);
return FALSE; return FALSE;
} }
@ -481,9 +560,9 @@ static gboolean _on_download_requested(WebKitWebView * view,
static void _on_hovering_over_link(WebKitWebView * view, const gchar * title, static void _on_hovering_over_link(WebKitWebView * view, const gchar * title,
const gchar * url, gpointer data) const gchar * url, gpointer data)
{ {
GtkWidget * ghtml = data; GtkWidget * widget = data;
_ghtml_set_status(ghtml, url); _ghtml_set_status(widget, url);
} }
@ -491,35 +570,15 @@ static void _on_hovering_over_link(WebKitWebView * view, const gchar * title,
static void _on_load_committed(WebKitWebView * view, WebKitWebFrame * frame, static void _on_load_committed(WebKitWebView * view, WebKitWebFrame * frame,
gpointer data) gpointer data)
{ {
GHtml * ghtml;
Surfer * surfer; Surfer * surfer;
char const * location; char const * location;
SurferSecurity security = SS_NONE;
#if WEBKIT_CHECK_VERSION(1, 1, 0)
WebKitWebDataSource *source;
WebKitNetworkRequest *request;
SoupMessage *message;
#endif
surfer = g_object_get_data(G_OBJECT(data), "surfer"); ghtml = g_object_get_data(G_OBJECT(data), "ghtml");
if(frame == webkit_web_view_get_main_frame(view) if(frame == webkit_web_view_get_main_frame(view)
&& (location = webkit_web_frame_get_uri(frame)) != NULL) && (location = webkit_web_frame_get_uri(frame)) != NULL)
{ surfer_set_location(ghtml->surfer, location);
surfer_set_location(surfer, location); surfer_set_security(ghtml->surfer, ghtml_get_security(ghtml->widget));
#if WEBKIT_CHECK_VERSION(1, 1, 0)
if(strncmp(location, "https://", 8) == 0)
{
security = SS_UNTRUSTED;
source = webkit_web_frame_get_data_source(frame);
request = webkit_web_data_source_get_request(source);
message = webkit_network_request_get_message(request);
/* FIXME trusts even if hostname does not match?!? */
if(message != NULL && soup_message_get_flags(message)
& SOUP_MESSAGE_CERTIFICATE_TRUSTED)
security = SS_TRUSTED;
}
#endif
}
surfer_set_security(surfer, security);
} }
@ -527,14 +586,14 @@ static void _on_load_committed(WebKitWebView * view, WebKitWebFrame * frame,
static gboolean _on_load_error(WebKitWebView * view, WebKitWebFrame * frame, static gboolean _on_load_error(WebKitWebView * view, WebKitWebFrame * frame,
const gchar * uri, GError * error, gpointer data) const gchar * uri, GError * error, gpointer data)
{ {
Surfer * surfer; GHtml * ghtml;
#ifdef WEBKIT_POLICY_ERROR #ifdef WEBKIT_POLICY_ERROR
char const * suggested; char const * suggested;
#endif #endif
surfer = g_object_get_data(G_OBJECT(data), "surfer"); ghtml = g_object_get_data(G_OBJECT(data), "ghtml");
if(error == NULL) if(error == NULL)
return surfer_error(surfer, _("Unknown error"), TRUE); return surfer_error(ghtml->surfer, _("Unknown error"), TRUE);
#ifdef WEBKIT_NETWORK_ERROR #ifdef WEBKIT_NETWORK_ERROR
if(error->domain == WEBKIT_NETWORK_ERROR if(error->domain == WEBKIT_NETWORK_ERROR
&& error->code == WEBKIT_NETWORK_ERROR_CANCELLED) && error->code == WEBKIT_NETWORK_ERROR_CANCELLED)
@ -547,11 +606,11 @@ static gboolean _on_load_error(WebKitWebView * view, WebKitWebFrame * frame,
/* FIXME propose to download or cancel instead */ /* FIXME propose to download or cancel instead */
if((suggested = strrchr(uri, '/')) != NULL) if((suggested = strrchr(uri, '/')) != NULL)
suggested++; suggested++;
surfer_download(surfer, uri, suggested); surfer_download(ghtml->surfer, uri, suggested);
return TRUE; return TRUE;
} }
#endif #endif
return surfer_error(surfer, error->message, TRUE); return surfer_error(ghtml->surfer, error->message, TRUE);
} }
@ -559,12 +618,12 @@ static gboolean _on_load_error(WebKitWebView * view, WebKitWebFrame * frame,
static void _on_load_finished(WebKitWebView * view, WebKitWebFrame * arg1, static void _on_load_finished(WebKitWebView * view, WebKitWebFrame * arg1,
gpointer data) gpointer data)
{ {
GtkWidget * ghtml = data; GHtml * ghtml;
Surfer * surfer; Surfer * surfer;
surfer = g_object_get_data(G_OBJECT(ghtml), "surfer"); ghtml = g_object_get_data(G_OBJECT(data), "ghtml");
surfer_set_progress(surfer, -1.0); surfer_set_progress(ghtml->surfer, -1.0);
_ghtml_set_status(ghtml, NULL); _ghtml_set_status(ghtml->widget, NULL);
} }
@ -572,13 +631,12 @@ static void _on_load_finished(WebKitWebView * view, WebKitWebFrame * arg1,
static void _on_load_progress_changed(WebKitWebView * view, gint progress, static void _on_load_progress_changed(WebKitWebView * view, gint progress,
gpointer data) gpointer data)
{ {
GtkWidget * ghtml = data; GHtml * ghtml;
Surfer * surfer;
gdouble fraction = progress; gdouble fraction = progress;
surfer = g_object_get_data(G_OBJECT(ghtml), "surfer"); ghtml = g_object_get_data(G_OBJECT(data), "ghtml");
surfer_set_progress(surfer, fraction / 100); surfer_set_progress(ghtml->surfer, fraction / 100);
_ghtml_set_status(ghtml, _("Downloading...")); _ghtml_set_status(ghtml->widget, _("Downloading..."));
} }
@ -586,12 +644,11 @@ static void _on_load_progress_changed(WebKitWebView * view, gint progress,
static void _on_load_started(WebKitWebView * view, WebKitWebFrame * frame, static void _on_load_started(WebKitWebView * view, WebKitWebFrame * frame,
gpointer data) gpointer data)
{ {
GtkWidget * ghtml = data; GHtml * ghtml;
Surfer * surfer;
surfer = g_object_get_data(G_OBJECT(ghtml), "surfer"); ghtml = g_object_get_data(G_OBJECT(data), "ghtml");
surfer_set_progress(surfer, 0.00); surfer_set_progress(ghtml->surfer, 0.00);
_ghtml_set_status(ghtml, _("Downloading...")); _ghtml_set_status(ghtml->widget, _("Downloading..."));
} }
@ -599,10 +656,10 @@ static void _on_load_started(WebKitWebView * view, WebKitWebFrame * frame,
static gboolean _on_script_alert(WebKitWebView * view, WebKitWebFrame * frame, static gboolean _on_script_alert(WebKitWebView * view, WebKitWebFrame * frame,
const gchar * message, gpointer data) const gchar * message, gpointer data)
{ {
Surfer * surfer; GHtml * ghtml;
surfer = g_object_get_data(G_OBJECT(data), "surfer"); ghtml = g_object_get_data(G_OBJECT(data), "ghtml");
surfer_warning(surfer, message); surfer_warning(ghtml->surfer, message);
return TRUE; return TRUE;
} }
@ -610,10 +667,10 @@ static gboolean _on_script_alert(WebKitWebView * view, WebKitWebFrame * frame,
static gboolean _on_script_confirm(WebKitWebView * view, WebKitWebFrame * frame, static gboolean _on_script_confirm(WebKitWebView * view, WebKitWebFrame * frame,
const gchar * message, gboolean * confirmed, gpointer data) const gchar * message, gboolean * confirmed, gpointer data)
{ {
Surfer * surfer; GHtml * ghtml;
surfer = g_object_get_data(G_OBJECT(data), "surfer"); ghtml = g_object_get_data(G_OBJECT(data), "ghtml");
if(surfer_confirm(surfer, message, confirmed) != 0) if(surfer_confirm(ghtml->surfer, message, confirmed) != 0)
*confirmed = FALSE; *confirmed = FALSE;
return TRUE; return TRUE;
} }
@ -622,10 +679,10 @@ static gboolean _on_script_prompt(WebKitWebView * view, WebKitWebFrame * frame,
const gchar * message, const gchar * default_value, const gchar * message, const gchar * default_value,
gchar ** value, gpointer data) gchar ** value, gpointer data)
{ {
Surfer * surfer; GHtml * ghtml;
surfer = g_object_get_data(G_OBJECT(data), "surfer"); ghtml = g_object_get_data(G_OBJECT(data), "ghtml");
if(surfer_prompt(surfer, message, default_value, value) == 0) if(surfer_prompt(ghtml->surfer, message, default_value, value) == 0)
return TRUE; return TRUE;
*value = NULL; *value = NULL;
return TRUE; return TRUE;
@ -635,60 +692,60 @@ static gboolean _on_script_prompt(WebKitWebView * view, WebKitWebFrame * frame,
static void _on_status_bar_text_changed(WebKitWebView * view, gchar * arg1, static void _on_status_bar_text_changed(WebKitWebView * view, gchar * arg1,
gpointer data) gpointer data)
{ {
GtkWidget * ghtml = data; GtkWidget * widget = data;
if(strlen(arg1) == 0) if(strlen(arg1) == 0)
return; return;
_ghtml_set_status(ghtml, arg1); _ghtml_set_status(widget, arg1);
} }
static void _on_title_changed(WebKitWebView * view, WebKitWebFrame * frame, static void _on_title_changed(WebKitWebView * view, WebKitWebFrame * frame,
const gchar * title, gpointer data) const gchar * title, gpointer data)
{ {
Surfer * surfer; GHtml * ghtml;
surfer = g_object_get_data(G_OBJECT(data), "surfer"); ghtml = g_object_get_data(G_OBJECT(data), "ghtml");
surfer_set_title(surfer, title); surfer_set_title(ghtml->surfer, title);
} }
#if WEBKIT_CHECK_VERSION(1, 0, 3) #if WEBKIT_CHECK_VERSION(1, 0, 3)
static gboolean _on_web_view_ready(WebKitWebView * view, gpointer data) static gboolean _on_web_view_ready(WebKitWebView * view, gpointer data)
{ {
Surfer * surfer; GHtml * ghtml;
WebKitWebWindowFeatures * features; WebKitWebWindowFeatures * features;
gboolean b; gboolean b;
gint w; gint w;
gint h; gint h;
surfer = g_object_get_data(G_OBJECT(data), "surfer"); ghtml = g_object_get_data(G_OBJECT(data), "ghtml");
features = webkit_web_view_get_window_features(WEBKIT_WEB_VIEW(view)); features = webkit_web_view_get_window_features(WEBKIT_WEB_VIEW(view));
/* FIXME track properties with notify:: instead */ /* FIXME track properties with notify:: instead */
g_object_get(G_OBJECT(features), "width", &w, "height", &h, NULL); g_object_get(G_OBJECT(features), "width", &w, "height", &h, NULL);
if(w > 0 && h > 0) if(w > 0 && h > 0)
surfer_resize(surfer, w, h); surfer_resize(ghtml->surfer, w, h);
g_object_get(G_OBJECT(features), "fullscreen", &b, NULL); g_object_get(G_OBJECT(features), "fullscreen", &b, NULL);
if(b == TRUE) if(b == TRUE)
surfer_set_fullscreen(surfer, TRUE); surfer_set_fullscreen(ghtml->surfer, TRUE);
# ifndef EMBEDDED # ifndef EMBEDDED
g_object_get(G_OBJECT(features), "menubar-visible", &b, NULL); g_object_get(G_OBJECT(features), "menubar-visible", &b, NULL);
surfer_show_menubar(surfer, b); surfer_show_menubar(ghtml->surfer, b);
# endif # endif
g_object_get(G_OBJECT(features), "toolbar-visible", &b, NULL); g_object_get(G_OBJECT(features), "toolbar-visible", &b, NULL);
surfer_show_toolbar(surfer, b); surfer_show_toolbar(ghtml->surfer, b);
g_object_get(G_OBJECT(features), "statusbar-visible", &b, NULL); g_object_get(G_OBJECT(features), "statusbar-visible", &b, NULL);
surfer_show_statusbar(surfer, b); surfer_show_statusbar(ghtml->surfer, b);
surfer_show_window(surfer, TRUE); surfer_show_window(ghtml->surfer, TRUE);
return FALSE; return FALSE;
} }
#else /* WebKitWebWindowFeatures is not available */ #else /* WebKitWebWindowFeatures is not available */
static gboolean _on_web_view_ready(WebKitWebView * view, gpointer data) static gboolean _on_web_view_ready(WebKitWebView * view, gpointer data)
{ {
Surfer * surfer; GHtml * ghtml;
surfer = g_object_get_data(G_OBJECT(data), "surfer"); ghtml = g_object_get_data(G_OBJECT(data), "ghtml");
surfer_show_window(surfer, TRUE); surfer_show_window(ghtml->surfer, TRUE);
return FALSE; return FALSE;
} }
#endif #endif

View File

@ -34,6 +34,7 @@ gboolean ghtml_can_go_forward(GtkWidget * ghtml);
char const * ghtml_get_link_message(GtkWidget * ghtml); char const * ghtml_get_link_message(GtkWidget * ghtml);
char const * ghtml_get_location(GtkWidget * ghtml); char const * ghtml_get_location(GtkWidget * ghtml);
gdouble ghtml_get_progress(GtkWidget * ghtml); gdouble ghtml_get_progress(GtkWidget * ghtml);
SurferSecurity ghtml_get_security(GtkWidget * ghtml);
char const * ghtml_get_source(GtkWidget * ghtml); char const * ghtml_get_source(GtkWidget * ghtml);
char const * ghtml_get_status(GtkWidget * ghtml); char const * ghtml_get_status(GtkWidget * ghtml);
char const * ghtml_get_title(GtkWidget * ghtml); char const * ghtml_get_title(GtkWidget * ghtml);

View File

@ -366,6 +366,13 @@ Surfer * _new_do(char const * url)
gtk_box_pack_start(GTK_BOX(vbox), surfer->notebook, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(vbox), surfer->notebook, TRUE, TRUE, 0);
/* statusbar */ /* statusbar */
surfer->statusbox = gtk_hbox_new(FALSE, 0); surfer->statusbox = gtk_hbox_new(FALSE, 0);
widget = gtk_button_new();
gtk_button_set_relief(GTK_BUTTON(widget), GTK_RELIEF_NONE);
surfer->security = gtk_image_new();
g_signal_connect_swapped(G_OBJECT(widget), "clicked", G_CALLBACK(
on_security), surfer);
gtk_container_add(GTK_CONTAINER(widget), surfer->security);
gtk_box_pack_start(GTK_BOX(surfer->statusbox), widget, FALSE, TRUE, 0);
surfer->progress = gtk_progress_bar_new(); surfer->progress = gtk_progress_bar_new();
gtk_box_pack_start(GTK_BOX(surfer->statusbox), surfer->progress, FALSE, gtk_box_pack_start(GTK_BOX(surfer->statusbox), surfer->progress, FALSE,
FALSE, 0); FALSE, 0);
@ -389,6 +396,8 @@ Surfer * _new_do(char const * url)
surfer->ab_dialog = NULL; surfer->ab_dialog = NULL;
/* hack to display the statusbar only if necessary */ /* hack to display the statusbar only if necessary */
gtk_box_pack_start(GTK_BOX(vbox), surfer->statusbox, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox), surfer->statusbox, FALSE, FALSE, 0);
/* FIXME should be automatic and per tab */
surfer_set_security(surfer, SS_NONE);
surfer_set_status(surfer, NULL); surfer_set_status(surfer, NULL);
_surfer_cnt++; _surfer_cnt++;
return surfer; return surfer;
@ -538,12 +547,27 @@ void surfer_set_proxy(Surfer * surfer, SurferProxyType type, char const * http,
/* surfer_set_security */ /* surfer_set_security */
void surfer_set_security(Surfer * surfer, SurferSecurity security) void surfer_set_security(Surfer * surfer, SurferSecurity security)
{ {
/* FIXME would need a context per tab to work... */ GtkWidget * view;
char const * level;
if((view = surfer_get_view(surfer)) == NULL)
return; /* consider the current tab only */
security = ghtml_get_security(view);
switch(security) switch(security)
{ {
case SS_TRUSTED:
level = "security-high";
break;
case SS_UNTRUSTED:
level = "security-medium";
break;
case SS_NONE:
default: default:
level = "security-low";
break; break;
} }
gtk_image_set_from_icon_name(GTK_IMAGE(surfer->security), level,
GTK_ICON_SIZE_MENU);
} }
@ -1390,6 +1414,13 @@ void surfer_unselect_all(Surfer * surfer)
} }
/* surfer_view_security */
void surfer_view_security(Surfer * surfer)
{
/* FIXME implement */
}
/* surfer_view_source */ /* surfer_view_source */
static void _on_source_close(GtkWidget * widget); static void _on_source_close(GtkWidget * widget);
static gboolean _on_source_closex(void); static gboolean _on_source_closex(void);

View File

@ -123,6 +123,8 @@ void surfer_go_home(Surfer * surfer);
void surfer_refresh(Surfer * surfer); void surfer_refresh(Surfer * surfer);
void surfer_reload(Surfer * surfer); void surfer_reload(Surfer * surfer);
void surfer_stop(Surfer * surfer); void surfer_stop(Surfer * surfer);
void surfer_view_security(Surfer * surfer);
void surfer_view_source(Surfer * surfer); void surfer_view_source(Surfer * surfer);
/* selection */ /* selection */