[network-manager-openconnect/th/vpn-editor-split-bgo767690: 11/14] properties: split "nm-openconnect-editor-plugin.c" out of "nm-openconnect.c"



commit a3ef5dd08e91907a183a27a3163a3956b8c61f71
Author: Thomas Haller <thaller redhat com>
Date:   Tue Jun 14 23:38:51 2016 +0200

    properties: split "nm-openconnect-editor-plugin.c" out of "nm-openconnect.c"

 po/POTFILES.in                                     |    3 +-
 po/as.po                                           |    4 +-
 po/bg.po                                           |    4 +-
 po/bn_IN.po                                        |    4 +-
 po/bs.po                                           |    4 +-
 po/ca.po                                           |    4 +-
 po/ca valencia po                                  |    4 +-
 po/cs.po                                           |    4 +-
 po/da.po                                           |    4 +-
 po/de.po                                           |    4 +-
 po/el.po                                           |    4 +-
 po/en_GB.po                                        |    4 +-
 po/en_US.po                                        |    4 +-
 po/eo.po                                           |    4 +-
 po/es.po                                           |    4 +-
 po/et.po                                           |    4 +-
 po/eu.po                                           |    4 +-
 po/fa.po                                           |    4 +-
 po/fi.po                                           |    4 +-
 po/fr.po                                           |    4 +-
 po/gl.po                                           |    4 +-
 po/gu.po                                           |    4 +-
 po/he.po                                           |    4 +-
 po/hu.po                                           |    4 +-
 po/id.po                                           |    4 +-
 po/it.po                                           |    4 +-
 po/kn.po                                           |    4 +-
 po/ko.po                                           |    4 +-
 po/lt.po                                           |    4 +-
 po/lv.po                                           |    4 +-
 po/mr.po                                           |    4 +-
 po/nb.po                                           |    4 +-
 po/nl.po                                           |    4 +-
 po/or.po                                           |    4 +-
 po/pa.po                                           |    4 +-
 po/pl.po                                           |    4 +-
 po/pt.po                                           |    4 +-
 po/pt_BR.po                                        |    4 +-
 po/ro.po                                           |    4 +-
 po/ru.po                                           |    4 +-
 po/sl.po                                           |    4 +-
 po/sr.po                                           |    4 +-
 po/sr latin po                                     |    4 +-
 po/sv.po                                           |    4 +-
 po/ta.po                                           |    4 +-
 po/te.po                                           |    4 +-
 po/tr.po                                           |    4 +-
 po/ug.po                                           |    4 +-
 po/uk.po                                           |    4 +-
 po/vi.po                                           |    4 +-
 po/zh_CN.po                                        |    4 +-
 po/zh_HK.po                                        |    4 +-
 po/zh_TW.po                                        |    4 +-
 properties/Makefile.am                             |   23 +-
 properties/auth-helpers.c                          |    2 -
 properties/nm-openconnect-editor-plugin.c          |  514 +++++++++++
 ...penconnect.h => nm-openconnect-editor-plugin.h} |   28 +-
 properties/nm-openconnect-editor.c                 |  505 ++++++++++
 .../{nm-openconnect.h => nm-openconnect-editor.h}  |   31 +-
 properties/nm-openconnect.c                        |  969 --------------------
 60 files changed, 1148 insertions(+), 1135 deletions(-)
---
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 0a1f46e..b1ea126 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -4,7 +4,8 @@ appdata/network-manager-openconnect.metainfo.xml.in
 auth-dialog/main.c
 openconnect-strings.txt
 properties/auth-helpers.c
-properties/nm-openconnect.c
+properties/nm-openconnect-editor-plugin.c
+properties/nm-openconnect-editor.c
 shared/nm-vpn/nm-vpn-plugin-utils.c
 src/nm-openconnect-service.c
 [type: gettext/glade]properties/nm-openconnect-dialog.ui
diff --git a/po/as.po b/po/as.po
index 86f999c..f4a729c 100644
--- a/po/as.po
+++ b/po/as.po
@@ -97,11 +97,11 @@ msgstr "আপোনাৰ ব্যক্তিগত চাবি বাচি
 msgid "PEM certificates (*.pem, *.crt, *.key)"
 msgstr "PEM প্ৰমাণপত্ৰ (*.pem, *.crt, *.key)"
 
-#: ../properties/nm-openconnect.c:63
+#: ../properties/nm-openconnect-editor.c:63
 msgid "Cisco AnyConnect Compatible VPN (openconnect)"
 msgstr "Cisco AnyConnect সুসঙ্গত VPN (openconnect)"
 
-#: ../properties/nm-openconnect.c:64
+#: ../properties/nm-openconnect-editor.c:64
 msgid "Compatible with Cisco AnyConnect SSL VPN."
 msgstr "যিকোনো Cisco AnyConnect SSL VPN ৰ সৈতে সুসঙ্গত ।"
 
diff --git a/po/bg.po b/po/bg.po
index b2cd2e4..73192bd 100644
--- a/po/bg.po
+++ b/po/bg.po
@@ -98,11 +98,11 @@ msgstr "Избор на частен ключ…"
 msgid "PEM certificates (*.pem, *.crt, *.key)"
 msgstr "Сертификати във формат PEM (*.pem, *.crt, *.key)"
 
-#: ../properties/nm-openconnect.c:63
+#: ../properties/nm-openconnect-editor.c:63
 msgid "Cisco AnyConnect Compatible VPN (openconnect)"
 msgstr "ВЧМ съвместима със Cisco AnyConnect (openconnect)"
 
-#: ../properties/nm-openconnect.c:64
+#: ../properties/nm-openconnect-editor.c:64
 msgid "Compatible with Cisco AnyConnect SSL VPN."
 msgstr "ВЧМ съвместима със AnyConnect SSL."
 
diff --git a/po/bn_IN.po b/po/bn_IN.po
index 91c7d45..9745428 100644
--- a/po/bn_IN.po
+++ b/po/bn_IN.po
@@ -97,11 +97,11 @@ msgstr "ব্যক্তিগত-কি নির্বাচন করুন
 msgid "PEM certificates (*.pem, *.crt, *.key)"
 msgstr "PEM সার্টিফিকেট (*.pem, *.crt, *.key)"
 
-#: ../properties/nm-openconnect.c:63
+#: ../properties/nm-openconnect-editor.c:63
 msgid "Cisco AnyConnect Compatible VPN (openconnect)"
 msgstr "Cisco AnyConnect Compatible VPN (openconnect)"
 
-#: ../properties/nm-openconnect.c:64
+#: ../properties/nm-openconnect-editor.c:64
 msgid "Compatible with Cisco AnyConnect SSL VPN."
 msgstr "Cisco AnyConnect SSL VPN  "
 
diff --git a/po/bs.po b/po/bs.po
index 48439d9..f57c921 100644
--- a/po/bs.po
+++ b/po/bs.po
@@ -99,11 +99,11 @@ msgstr "Izaberite vaš lični ključ..."
 msgid "PEM certificates (*.pem, *.crt, *.key)"
 msgstr "PEM sertifikati (*.pijem, *.crt, *.key)"
 
-#: ../properties/nm-openconnect.c:63
+#: ../properties/nm-openconnect-editor.c:63
 msgid "Cisco AnyConnect Compatible VPN (openconnect)"
 msgstr "Cisco AnyConnect Kompatibilan VPN (otvorenakonecija)"
 
-#: ../properties/nm-openconnect.c:64
+#: ../properties/nm-openconnect-editor.c:64
 msgid "Compatible with Cisco AnyConnect SSL VPN."
 msgstr "Kompatibilan sa Cisco AnyConnect SSL VPN."
 
diff --git a/po/ca.po b/po/ca.po
index 97373b8..b6de3b7 100644
--- a/po/ca.po
+++ b/po/ca.po
@@ -5144,11 +5144,11 @@ msgstr "Trieu la vostra clau privada..."
 msgid "PEM certificates (*.pem, *.crt, *.key)"
 msgstr "Certificats PEM (*.pem, *.crt, *.key)"
 
-#: ../properties/nm-openconnect.c:79
+#: ../properties/nm-openconnect-editor.c:79
 msgid "Cisco AnyConnect Compatible VPN (openconnect)"
 msgstr "VPN compatible amb Cisco AnyConnect (openconnect)"
 
-#: ../properties/nm-openconnect.c:80
+#: ../properties/nm-openconnect-editor.c:80
 msgid "Compatible with Cisco AnyConnect SSL VPN."
 msgstr "VPN SSL compatible amb Cisco AnyConnect."
 
diff --git a/po/ca valencia po b/po/ca valencia po
index 05cf06d..647a17f 100644
--- a/po/ca valencia po
+++ b/po/ca valencia po
@@ -95,11 +95,11 @@ msgstr "Trieu la vostra clau privada..."
 msgid "PEM certificates (*.pem, *.crt, *.key)"
 msgstr "Certificats PEM (*.pem, *.crt, *.key)"
 
-#: ../properties/nm-openconnect.c:63
+#: ../properties/nm-openconnect-editor.c:63
 msgid "Cisco AnyConnect Compatible VPN (openconnect)"
 msgstr "VPN compatible amb Cisco AnyConnect (openconnect)"
 
-#: ../properties/nm-openconnect.c:64
+#: ../properties/nm-openconnect-editor.c:64
 msgid "Compatible with Cisco AnyConnect SSL VPN."
 msgstr "VPN SSL compatible amb Cisco AnyConnect."
 
diff --git a/po/cs.po b/po/cs.po
index bec18ac..15159d1 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -5045,11 +5045,11 @@ msgstr "Zvolte svůj soukromý klíč…"
 msgid "PEM certificates (*.pem, *.crt, *.key)"
 msgstr "Certifikáty PEM (*.pem, *.crt, *.key)"
 
-#: ../properties/nm-openconnect.c:79
+#: ../properties/nm-openconnect-editor.c:79
 msgid "Cisco AnyConnect Compatible VPN (openconnect)"
 msgstr "VPN kompatibilní s Cisco AnyConnect (openconnect)"
 
-#: ../properties/nm-openconnect.c:80
+#: ../properties/nm-openconnect-editor.c:80
 msgid "Compatible with Cisco AnyConnect SSL VPN."
 msgstr "Kompatibilní s Cisco AnyConnect SSL VPN."
 
diff --git a/po/da.po b/po/da.po
index 0d496bd..00fbfbc 100644
--- a/po/da.po
+++ b/po/da.po
@@ -100,11 +100,11 @@ msgstr "Vælg din private nøgle..."
 msgid "PEM certificates (*.pem, *.crt, *.key)"
 msgstr "PEM-certifikater  (*.pem, *.crt, *.key)"
 
-#: ../properties/nm-openconnect.c:63
+#: ../properties/nm-openconnect-editor.c:63
 msgid "Cisco AnyConnect Compatible VPN (openconnect)"
 msgstr "Cisco AnyConnect-kompatibel VPN (openconnect)"
 
-#: ../properties/nm-openconnect.c:64
+#: ../properties/nm-openconnect-editor.c:64
 msgid "Compatible with Cisco AnyConnect SSL VPN."
 msgstr "Kompatibel med Cisco AnyConnect SSL VPN."
 
diff --git a/po/de.po b/po/de.po
index cd2a723..1e9a32e 100644
--- a/po/de.po
+++ b/po/de.po
@@ -5129,11 +5129,11 @@ msgstr "Geheimen Schlüssel wählen …"
 msgid "PEM certificates (*.pem, *.crt, *.key)"
 msgstr "PEM-Zertifikate (*.pem, *.crt, *.key)"
 
-#: ../properties/nm-openconnect.c:79
+#: ../properties/nm-openconnect-editor.c:79
 msgid "Cisco AnyConnect Compatible VPN (openconnect)"
 msgstr "Zu Cisco AnyConnect kompatible VPN-Verbindung (openconnect)"
 
-#: ../properties/nm-openconnect.c:80
+#: ../properties/nm-openconnect-editor.c:80
 msgid "Compatible with Cisco AnyConnect SSL VPN."
 msgstr "Kompatibel zu Cisco AnyConnect SSL VPN."
 
diff --git a/po/el.po b/po/el.po
index f78a99b..375fc27 100644
--- a/po/el.po
+++ b/po/el.po
@@ -3783,11 +3783,11 @@ msgstr "TOTP - χειροκίνητη εισαγωγή"
 msgid "HOTP - manually entered"
 msgstr ""
 
-#: ../properties/nm-openconnect.c:63
+#: ../properties/nm-openconnect-editor.c:63
 msgid "Cisco AnyConnect Compatible VPN (openconnect)"
 msgstr "Συμβατό VPN με Cisco AnyConnect (openconnect)"
 
-#: ../properties/nm-openconnect.c:64
+#: ../properties/nm-openconnect-editor.c:64
 msgid "Compatible with Cisco AnyConnect SSL VPN."
 msgstr "Συμβατό με το Cisco AnyConnect SSL VPN."
 
diff --git a/po/en_GB.po b/po/en_GB.po
index 7fac05a..7d6a170 100644
--- a/po/en_GB.po
+++ b/po/en_GB.po
@@ -3681,11 +3681,11 @@ msgstr ""
 msgid "TOTP - manually entered"
 msgstr ""
 
-#: ../properties/nm-openconnect.c:63
+#: ../properties/nm-openconnect-editor.c:63
 msgid "Cisco AnyConnect Compatible VPN (openconnect)"
 msgstr "Cisco AnyConnect Compatible VPN (openconnect)"
 
-#: ../properties/nm-openconnect.c:64
+#: ../properties/nm-openconnect-editor.c:64
 msgid "Compatible with Cisco AnyConnect SSL VPN."
 msgstr "Compatible with Cisco AnyConnect SSL VPN."
 
diff --git a/po/en_US.po b/po/en_US.po
index 315aee8..d809f14 100644
--- a/po/en_US.po
+++ b/po/en_US.po
@@ -3685,11 +3685,11 @@ msgstr ""
 msgid "TOTP - manually entered"
 msgstr ""
 
-#: ../properties/nm-openconnect.c:63
+#: ../properties/nm-openconnect-editor.c:63
 msgid "Cisco AnyConnect Compatible VPN (openconnect)"
 msgstr ""
 
-#: ../properties/nm-openconnect.c:64
+#: ../properties/nm-openconnect-editor.c:64
 msgid "Compatible with Cisco AnyConnect SSL VPN."
 msgstr ""
 
diff --git a/po/eo.po b/po/eo.po
index 8f9805b..5a1fde1 100644
--- a/po/eo.po
+++ b/po/eo.po
@@ -96,11 +96,11 @@ msgstr "Elekti vian privatan ŝlosilon..."
 msgid "PEM certificates (*.pem, *.crt, *.key)"
 msgstr ""
 
-#: ../properties/nm-openconnect.c:63
+#: ../properties/nm-openconnect-editor.c:63
 msgid "Cisco AnyConnect Compatible VPN (openconnect)"
 msgstr ""
 
-#: ../properties/nm-openconnect.c:64
+#: ../properties/nm-openconnect-editor.c:64
 msgid "Compatible with Cisco AnyConnect SSL VPN."
 msgstr ""
 
diff --git a/po/es.po b/po/es.po
index feccce5..62b245c 100644
--- a/po/es.po
+++ b/po/es.po
@@ -5160,11 +5160,11 @@ msgstr "Elija su clave privada…"
 msgid "PEM certificates (*.pem, *.crt, *.key)"
 msgstr "Certificados PEM (*.pem, *.crt, *.key)"
 
-#: ../properties/nm-openconnect.c:79
+#: ../properties/nm-openconnect-editor.c:79
 msgid "Cisco AnyConnect Compatible VPN (openconnect)"
 msgstr "Compatible con VPN Cisco AnyConnect (openconnect)"
 
-#: ../properties/nm-openconnect.c:80
+#: ../properties/nm-openconnect-editor.c:80
 msgid "Compatible with Cisco AnyConnect SSL VPN."
 msgstr "Compatible con VPN Cisco AnyConnect SSL."
 
diff --git a/po/et.po b/po/et.po
index 67653bd..038848e 100644
--- a/po/et.po
+++ b/po/et.po
@@ -101,11 +101,11 @@ msgstr "Vali privaatvõti..."
 msgid "PEM certificates (*.pem, *.crt, *.key)"
 msgstr "PEM sertifikaadid (*.pem, *.crt, *.key)"
 
-#: ../properties/nm-openconnect.c:63
+#: ../properties/nm-openconnect-editor.c:63
 msgid "Cisco AnyConnect Compatible VPN (openconnect)"
 msgstr "Cisco AnyConnect-iga ühilduv VPN (openconnect)"
 
-#: ../properties/nm-openconnect.c:64
+#: ../properties/nm-openconnect-editor.c:64
 msgid "Compatible with Cisco AnyConnect SSL VPN."
 msgstr "Cisco AnyConnect SSL VPN-iga ühilduv."
 
diff --git a/po/eu.po b/po/eu.po
index f96ad76..2fee0ce 100644
--- a/po/eu.po
+++ b/po/eu.po
@@ -101,11 +101,11 @@ msgstr "Aukeratu gako pribatua..."
 msgid "PEM certificates (*.pem, *.crt, *.key)"
 msgstr "PEM ziurtagiriak (*.pem, *.crt, *.key)"
 
-#: ../properties/nm-openconnect.c:63
+#: ../properties/nm-openconnect-editor.c:63
 msgid "Cisco AnyConnect Compatible VPN (openconnect)"
 msgstr "VPN bateragarria Cisco AnyConnect-ekin (openconnect)"
 
-#: ../properties/nm-openconnect.c:64
+#: ../properties/nm-openconnect-editor.c:64
 msgid "Compatible with Cisco AnyConnect SSL VPN."
 msgstr "Cisco AnyConnect SSL VPN-ekin bateragarria."
 
diff --git a/po/fa.po b/po/fa.po
index eb22bd6..6fea9e9 100644
--- a/po/fa.po
+++ b/po/fa.po
@@ -94,11 +94,11 @@ msgstr "کلید اختصاصی خود را انتخاب کنید..."
 msgid "PEM certificates (*.pem, *.crt, *.key)"
 msgstr "تادییه‌های PEM شامل (*.pem, *.crt, *.key)"
 
-#: ../properties/nm-openconnect.c:63
+#: ../properties/nm-openconnect-editor.c:63
 msgid "Cisco AnyConnect Compatible VPN (openconnect)"
 msgstr "Cisco AnyConnect Compatible VPN (openconnect)"
 
-#: ../properties/nm-openconnect.c:64
+#: ../properties/nm-openconnect-editor.c:64
 msgid "Compatible with Cisco AnyConnect SSL VPN."
 msgstr "سازگار با  AnyConnect SSL VPN سیسکو."
 
diff --git a/po/fi.po b/po/fi.po
index 30bdfa8..2537a7e 100644
--- a/po/fi.po
+++ b/po/fi.po
@@ -103,11 +103,11 @@ msgstr "Valitse yksityinen avain..."
 msgid "PEM certificates (*.pem, *.crt, *.key)"
 msgstr "PEM-varmenteet (*.pem, *.crt, *.key)"
 
-#: ../properties/nm-openconnect.c:79
+#: ../properties/nm-openconnect-editor.c:79
 msgid "Cisco AnyConnect Compatible VPN (openconnect)"
 msgstr "Cisco AnyConnect -yhteensopiva VPN (openconnect)"
 
-#: ../properties/nm-openconnect.c:80
+#: ../properties/nm-openconnect-editor.c:80
 msgid "Compatible with Cisco AnyConnect SSL VPN."
 msgstr "Yhteensopiva Cisco AnyConnect SSL VPN:n kanssa."
 
diff --git a/po/fr.po b/po/fr.po
index 0d3c117..4dc0b20 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -101,11 +101,11 @@ msgstr "Choisissez votre clé privée..."
 msgid "PEM certificates (*.pem, *.crt, *.key)"
 msgstr "Certificats PEM (*.pem, *.crt, *.key)"
 
-#: ../properties/nm-openconnect.c:63
+#: ../properties/nm-openconnect-editor.c:63
 msgid "Cisco AnyConnect Compatible VPN (openconnect)"
 msgstr "VPN compatible Cisco AnyConnect (openconnect)"
 
-#: ../properties/nm-openconnect.c:64
+#: ../properties/nm-openconnect-editor.c:64
 msgid "Compatible with Cisco AnyConnect SSL VPN."
 msgstr "Compatible avec Cisco AnyConnect SSL VPN."
 
diff --git a/po/gl.po b/po/gl.po
index fef01a0..d9eafe6 100644
--- a/po/gl.po
+++ b/po/gl.po
@@ -101,11 +101,11 @@ msgstr "Seleccione a súa chave privada…"
 msgid "PEM certificates (*.pem, *.crt, *.key)"
 msgstr "Certificados PEM (*.pem, *.crt, *.key)"
 
-#: ../properties/nm-openconnect.c:63
+#: ../properties/nm-openconnect-editor.c:63
 msgid "Cisco AnyConnect Compatible VPN (openconnect)"
 msgstr "VPN compatíbel Cisco AnyConnect (openconnect)"
 
-#: ../properties/nm-openconnect.c:64
+#: ../properties/nm-openconnect-editor.c:64
 msgid "Compatible with Cisco AnyConnect SSL VPN."
 msgstr "Compatíbel con Cisco AnyConnect SSL VPN."
 
diff --git a/po/gu.po b/po/gu.po
index c874937..ac443ca 100644
--- a/po/gu.po
+++ b/po/gu.po
@@ -97,11 +97,11 @@ msgstr "તમારી ખાનગી કી ને પસંદ કરો..."
 msgid "PEM certificates (*.pem, *.crt, *.key)"
 msgstr "PEM પ્રમાણપત્રો (*.pem, *.crt, *.key)"
 
-#: ../properties/nm-openconnect.c:63
+#: ../properties/nm-openconnect-editor.c:63
 msgid "Cisco AnyConnect Compatible VPN (openconnect)"
 msgstr "Cisco AnyConnect Compatible VPN (openconnect)"
 
-#: ../properties/nm-openconnect.c:64
+#: ../properties/nm-openconnect-editor.c:64
 msgid "Compatible with Cisco AnyConnect SSL VPN."
 msgstr "Cisco AnyConnect SSL VPN સાથે સુસંગત"
 
diff --git a/po/he.po b/po/he.po
index da7df96..c2c0cf7 100644
--- a/po/he.po
+++ b/po/he.po
@@ -98,11 +98,11 @@ msgstr "נא לבחור את המפתח הפרטי שלך..."
 msgid "PEM certificates (*.pem, *.crt, *.key)"
 msgstr "אישורי PEM ‏(‎*.pem, *.crt, *.key)"
 
-#: ../properties/nm-openconnect.c:63
+#: ../properties/nm-openconnect-editor.c:63
 msgid "Cisco AnyConnect Compatible VPN (openconnect)"
 msgstr "VPN התואם ל־Cisco AnyConnect‏ (openconnect)"
 
-#: ../properties/nm-openconnect.c:64
+#: ../properties/nm-openconnect-editor.c:64
 msgid "Compatible with Cisco AnyConnect SSL VPN."
 msgstr "תואם ל־VPN מסוג Cisco AnyConnect SSL."
 
diff --git a/po/hu.po b/po/hu.po
index 9bf9296..e7ba2b0 100644
--- a/po/hu.po
+++ b/po/hu.po
@@ -5100,11 +5100,11 @@ msgstr "Válassza ki a személyes kulcsát…"
 msgid "PEM certificates (*.pem, *.crt, *.key)"
 msgstr "PEM tanúsítványok (*.pem, *.crt, *.key)"
 
-#: ../properties/nm-openconnect.c:79
+#: ../properties/nm-openconnect-editor.c:79
 msgid "Cisco AnyConnect Compatible VPN (openconnect)"
 msgstr "Cisco AnyConnect-kompatibilis VPN (openconnect)"
 
-#: ../properties/nm-openconnect.c:80
+#: ../properties/nm-openconnect-editor.c:80
 msgid "Compatible with Cisco AnyConnect SSL VPN."
 msgstr "Kompatibilis a Cisco AnyConnect SSL VPN-nel"
 
diff --git a/po/id.po b/po/id.po
index f749df7..5ae63a8 100644
--- a/po/id.po
+++ b/po/id.po
@@ -3746,11 +3746,11 @@ msgstr "TOTP - dimasukkan secara manual"
 msgid "HOTP - manually entered"
 msgstr "HOTP - dimasukkan secara manual"
 
-#: ../properties/nm-openconnect.c:63
+#: ../properties/nm-openconnect-editor.c:63
 msgid "Cisco AnyConnect Compatible VPN (openconnect)"
 msgstr "VPN Kompatibel AnyConnect Cisco (openconnect)"
 
-#: ../properties/nm-openconnect.c:64
+#: ../properties/nm-openconnect-editor.c:64
 msgid "Compatible with Cisco AnyConnect SSL VPN."
 msgstr "Kompatibel dengan VPN SSL AnyConnect Cisco."
 
diff --git a/po/it.po b/po/it.po
index cd038c7..1ffe748 100644
--- a/po/it.po
+++ b/po/it.po
@@ -100,11 +100,11 @@ msgstr "Scegliere la propria chiave privata..."
 msgid "PEM certificates (*.pem, *.crt, *.key)"
 msgstr "Certificati PEM (*.pem, *.crt, *.key)"
 
-#: ../properties/nm-openconnect.c:63
+#: ../properties/nm-openconnect-editor.c:63
 msgid "Cisco AnyConnect Compatible VPN (openconnect)"
 msgstr "VPN compatibile con Cisco AnyConnect (openconnect)"
 
-#: ../properties/nm-openconnect.c:64
+#: ../properties/nm-openconnect-editor.c:64
 msgid "Compatible with Cisco AnyConnect SSL VPN."
 msgstr "VPN SSL compatibile con Cisco AnyConnect."
 
diff --git a/po/kn.po b/po/kn.po
index 6c5ed88..b343ea2 100644
--- a/po/kn.po
+++ b/po/kn.po
@@ -97,11 +97,11 @@ msgstr "ನಿಮ್ಮ ಖಾಸಗಿ ಕೀಲಿಯನ್ನು ಆರಿಸ
 msgid "PEM certificates (*.pem, *.crt, *.key)"
 msgstr "PEM ಪ್ರಮಾಣಪತ್ರಗಳು (*.pem, *.crt, *.key)"
 
-#: ../properties/nm-openconnect.c:63
+#: ../properties/nm-openconnect-editor.c:63
 msgid "Cisco AnyConnect Compatible VPN (openconnect)"
 msgstr "Cisco AnyConnect ಸಹವರ್ತನೀಯ VPN (ಓಪನ್‌ಕನೆಕ್ಟ್)"
 
-#: ../properties/nm-openconnect.c:64
+#: ../properties/nm-openconnect-editor.c:64
 msgid "Compatible with Cisco AnyConnect SSL VPN."
 msgstr "Cisco AnyConnect SSL VPN ನೊಂದಿಗೆ ಸಹವರ್ತನೀಯವಾಗಿದೆ."
 
diff --git a/po/ko.po b/po/ko.po
index de20982..6fa7a03 100644
--- a/po/ko.po
+++ b/po/ko.po
@@ -95,11 +95,11 @@ msgstr "개인 키를 선택하십시오..."
 msgid "PEM certificates (*.pem, *.crt, *.key)"
 msgstr "PEM 인증서 (*.pem, *.crt, *.key)"
 
-#: ../properties/nm-openconnect.c:63
+#: ../properties/nm-openconnect-editor.c:63
 msgid "Cisco AnyConnect Compatible VPN (openconnect)"
 msgstr "Cisco AnyConnect 호환 VPN (openconnect)"
 
-#: ../properties/nm-openconnect.c:64
+#: ../properties/nm-openconnect-editor.c:64
 msgid "Compatible with Cisco AnyConnect SSL VPN."
 msgstr "Cisco AnyConnect SSL VPN과 호환됩니다."
 
diff --git a/po/lt.po b/po/lt.po
index 01c03f1..e1ecee3 100644
--- a/po/lt.po
+++ b/po/lt.po
@@ -102,11 +102,11 @@ msgstr "Pasirinkite savo asmeninį raktą..."
 msgid "PEM certificates (*.pem, *.crt, *.key)"
 msgstr "PEM liudijimai (*.pem, *.crt, *.key)"
 
-#: ../properties/nm-openconnect.c:79
+#: ../properties/nm-openconnect-editor.c:79
 msgid "Cisco AnyConnect Compatible VPN (openconnect)"
 msgstr "Cisco AnyConnect Compatible VPN (openconnect)"
 
-#: ../properties/nm-openconnect.c:80
+#: ../properties/nm-openconnect-editor.c:80
 msgid "Compatible with Cisco AnyConnect SSL VPN."
 msgstr "Suderinamas su Cisco AnyConnect SSL VPN."
 
diff --git a/po/lv.po b/po/lv.po
index 8b03d70..4d99eb8 100644
--- a/po/lv.po
+++ b/po/lv.po
@@ -101,11 +101,11 @@ msgstr "Izvēlieties privāto atslēgu..."
 msgid "PEM certificates (*.pem, *.crt, *.key)"
 msgstr "PEM sertifikāti (*.pem, *.crt, *.key)"
 
-#: ../properties/nm-openconnect.c:63
+#: ../properties/nm-openconnect-editor.c:63
 msgid "Cisco AnyConnect Compatible VPN (openconnect)"
 msgstr "Cisco AnyConnect savietojams VPN (openconnect)"
 
-#: ../properties/nm-openconnect.c:64
+#: ../properties/nm-openconnect-editor.c:64
 msgid "Compatible with Cisco AnyConnect SSL VPN."
 msgstr "Savietojams ar Cisco AnyConnect SSL VPN."
 
diff --git a/po/mr.po b/po/mr.po
index 415f39b..7f09c49 100644
--- a/po/mr.po
+++ b/po/mr.po
@@ -96,11 +96,11 @@ msgstr "तुमचे वैयक्तिक कि निवडा..."
 msgid "PEM certificates (*.pem, *.crt, *.key)"
 msgstr "PEM प्रमाणपत्रं (*.pem, *.crt, *.key)"
 
-#: ../properties/nm-openconnect.c:63
+#: ../properties/nm-openconnect-editor.c:63
 msgid "Cisco AnyConnect Compatible VPN (openconnect)"
 msgstr "Cisco AnyConnect Compatible VPN (openconnect)"
 
-#: ../properties/nm-openconnect.c:64
+#: ../properties/nm-openconnect-editor.c:64
 msgid "Compatible with Cisco AnyConnect SSL VPN."
 msgstr "Cisco AnyConnect SSL VPN सह सहत्व."
 
diff --git a/po/nb.po b/po/nb.po
index c1ebc6b..504ab07 100644
--- a/po/nb.po
+++ b/po/nb.po
@@ -100,11 +100,11 @@ msgstr "Velg din private nøkkel …"
 msgid "PEM certificates (*.pem, *.crt, *.key)"
 msgstr "PEM-sertifikater (*.pem, *.crt, *.key)"
 
-#: ../properties/nm-openconnect.c:63
+#: ../properties/nm-openconnect-editor.c:63
 msgid "Cisco AnyConnect Compatible VPN (openconnect)"
 msgstr "VPN som er kompatibelt med Cisco AnyConnect (openconnect)"
 
-#: ../properties/nm-openconnect.c:64
+#: ../properties/nm-openconnect-editor.c:64
 msgid "Compatible with Cisco AnyConnect SSL VPN."
 msgstr "Kompatibel med Cisco AnyConnect SSL-VPN."
 
diff --git a/po/nl.po b/po/nl.po
index 5ee9466..e9ab65a 100644
--- a/po/nl.po
+++ b/po/nl.po
@@ -3699,11 +3699,11 @@ msgstr ""
 msgid "TOTP - manually entered"
 msgstr ""
 
-#: ../properties/nm-openconnect.c:63
+#: ../properties/nm-openconnect-editor.c:63
 msgid "Cisco AnyConnect Compatible VPN (openconnect)"
 msgstr ""
 
-#: ../properties/nm-openconnect.c:64
+#: ../properties/nm-openconnect-editor.c:64
 msgid "Compatible with Cisco AnyConnect SSL VPN."
 msgstr ""
 
diff --git a/po/or.po b/po/or.po
index f0b049c..829bf6b 100644
--- a/po/or.po
+++ b/po/or.po
@@ -97,11 +97,11 @@ msgstr "ଆପଣଙ୍କର ବ୍ୟକ୍ତିଗତ କି କୁ ବା
 msgid "PEM certificates (*.pem, *.crt, *.key)"
 msgstr "PEM ପ୍ରମାଣପତ୍ରଗୁଡ଼ିକ (*.pem, *.crt, *.key)"
 
-#: ../properties/nm-openconnect.c:63
+#: ../properties/nm-openconnect-editor.c:63
 msgid "Cisco AnyConnect Compatible VPN (openconnect)"
 msgstr "Cisco ଯେକୌଣସି ସଂଯୋଗ ସୁସଂଗତ VPN (ଖୋଲା ସଂଯୋଗ)"
 
-#: ../properties/nm-openconnect.c:64
+#: ../properties/nm-openconnect-editor.c:64
 msgid "Compatible with Cisco AnyConnect SSL VPN."
 msgstr "Cisco ଯେକୌଣସି ସଂଯୋଗ SSL VPN ସହିତ ସୁସଂଗତ।"
 
diff --git a/po/pa.po b/po/pa.po
index b9068eb..b32d230 100644
--- a/po/pa.po
+++ b/po/pa.po
@@ -100,11 +100,11 @@ msgstr "ਆਪਣੀ ਪ੍ਰਾਈਵੇਟ ਕੁੰਜੀ ਚੁਣੋ..."
 msgid "PEM certificates (*.pem, *.crt, *.key)"
 msgstr "PEM ਸਰਟੀਫਿਕੇਟ (*.pem, *.crt, *.key)"
 
-#: ../properties/nm-openconnect.c:63
+#: ../properties/nm-openconnect-editor.c:63
 msgid "Cisco AnyConnect Compatible VPN (openconnect)"
 msgstr "Cisco ਐਨੀ-ਕੁਨੈਕਟ ਅਨੁਕੂਲ VPN (openconnect)"
 
-#: ../properties/nm-openconnect.c:64
+#: ../properties/nm-openconnect-editor.c:64
 msgid "Compatible with Cisco AnyConnect SSL VPN."
 msgstr "Cisco AnyConnect SSL VPN ਨਾਲ ਅਨੁਕੂਲ।"
 
diff --git a/po/pl.po b/po/pl.po
index 5133b79..21e053d 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -5120,11 +5120,11 @@ msgstr "Wybierz klucz prywatny…"
 msgid "PEM certificates (*.pem, *.crt, *.key)"
 msgstr "Certyfikaty PEM (*.pem, *.crt, *.key)"
 
-#: ../properties/nm-openconnect.c:79
+#: ../properties/nm-openconnect-editor.c:79
 msgid "Cisco AnyConnect Compatible VPN (openconnect)"
 msgstr "VPN zgodny z Cisco AnyConnect (openconnect)"
 
-#: ../properties/nm-openconnect.c:80
+#: ../properties/nm-openconnect-editor.c:80
 msgid "Compatible with Cisco AnyConnect SSL VPN."
 msgstr "Zgodny z VPN Cisco AnyConnect SSL."
 
diff --git a/po/pt.po b/po/pt.po
index 8b88ea3..2d7a253 100644
--- a/po/pt.po
+++ b/po/pt.po
@@ -104,11 +104,11 @@ msgstr "Escolha a sua chave privada..."
 msgid "PEM certificates (*.pem, *.crt, *.key)"
 msgstr "Certificados PEM (*.pem, *.crt, *.key)"
 
-#: ../properties/nm-openconnect.c:79
+#: ../properties/nm-openconnect-editor.c:79
 msgid "Cisco AnyConnect Compatible VPN (openconnect)"
 msgstr "VPN compatível com Cisco AnyConnect (openconnect)"
 
-#: ../properties/nm-openconnect.c:80
+#: ../properties/nm-openconnect-editor.c:80
 msgid "Compatible with Cisco AnyConnect SSL VPN."
 msgstr "Compatível com Cisco AnyConnect SSL VPN."
 
diff --git a/po/pt_BR.po b/po/pt_BR.po
index bbf18f0..940831b 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -5077,11 +5077,11 @@ msgstr "Escolha sua chave privada..."
 msgid "PEM certificates (*.pem, *.crt, *.key)"
 msgstr "Certificados PEM (*.pem, *.crt, *.key)"
 
-#: ../properties/nm-openconnect.c:79
+#: ../properties/nm-openconnect-editor.c:79
 msgid "Cisco AnyConnect Compatible VPN (openconnect)"
 msgstr "VPN Compatível com Cisco AnyConnect (openconnect)"
 
-#: ../properties/nm-openconnect.c:80
+#: ../properties/nm-openconnect-editor.c:80
 msgid "Compatible with Cisco AnyConnect SSL VPN."
 msgstr "Compatível com Cisco AnyConnect SSL VPN."
 
diff --git a/po/ro.po b/po/ro.po
index 822263e..f8a1c29 100644
--- a/po/ro.po
+++ b/po/ro.po
@@ -97,11 +97,11 @@ msgstr "Alegeți cheia personală..."
 msgid "PEM certificates (*.pem, *.crt, *.key)"
 msgstr "Certificate PEM (*.pem, *.crt, *.key)"
 
-#: ../properties/nm-openconnect.c:63
+#: ../properties/nm-openconnect-editor.c:63
 msgid "Cisco AnyConnect Compatible VPN (openconnect)"
 msgstr "VPN compatibil Cisco AnyConnect (openconnect)"
 
-#: ../properties/nm-openconnect.c:64
+#: ../properties/nm-openconnect-editor.c:64
 msgid "Compatible with Cisco AnyConnect SSL VPN."
 msgstr "Compatibil cu SSL VPN Cisco AnyConnect."
 
diff --git a/po/ru.po b/po/ru.po
index 5c28708..7a6c50e 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -102,11 +102,11 @@ msgstr "Выберите свой личный ключ…"
 msgid "PEM certificates (*.pem, *.crt, *.key)"
 msgstr "Сертификаты PEM (*.pem, *.crt, *.key)"
 
-#: ../properties/nm-openconnect.c:63
+#: ../properties/nm-openconnect-editor.c:63
 msgid "Cisco AnyConnect Compatible VPN (openconnect)"
 msgstr "Cisco AnyConnect-совместимая VPN (openconnect)"
 
-#: ../properties/nm-openconnect.c:64
+#: ../properties/nm-openconnect-editor.c:64
 msgid "Compatible with Cisco AnyConnect SSL VPN."
 msgstr "SSL VPN, совместимая с Cisco AnyConnect."
 
diff --git a/po/sl.po b/po/sl.po
index 8b2a467..3c04fa2 100644
--- a/po/sl.po
+++ b/po/sl.po
@@ -3726,11 +3726,11 @@ msgstr "RSA SecurID - ročno vpisano"
 msgid "TOTP - manually entered"
 msgstr "TOTP - ročno vpisano"
 
-#: ../properties/nm-openconnect.c:63
+#: ../properties/nm-openconnect-editor.c:63
 msgid "Cisco AnyConnect Compatible VPN (openconnect)"
 msgstr "Združljivo s Cisco AnyConnect VPN (openconnect)"
 
-#: ../properties/nm-openconnect.c:64
+#: ../properties/nm-openconnect-editor.c:64
 msgid "Compatible with Cisco AnyConnect SSL VPN."
 msgstr "Združljivo s Cisco AnyConnect SSL VPN."
 
diff --git a/po/sr.po b/po/sr.po
index 7886039..41456ae 100644
--- a/po/sr.po
+++ b/po/sr.po
@@ -101,11 +101,11 @@ msgstr "Изаберите лични кључ..."
 msgid "PEM certificates (*.pem, *.crt, *.key)"
 msgstr "ПЕМ уверења (*.pem, *.crt, *.key)"
 
-#: ../properties/nm-openconnect.c:79
+#: ../properties/nm-openconnect-editor.c:79
 msgid "Cisco AnyConnect Compatible VPN (openconnect)"
 msgstr "ВПН сагласан са Циско Ени Конектом (openconnect)"
 
-#: ../properties/nm-openconnect.c:80
+#: ../properties/nm-openconnect-editor.c:80
 msgid "Compatible with Cisco AnyConnect SSL VPN."
 msgstr "Сагласно са ССЛ ВПН-ом Циско Ени Конекта."
 
diff --git a/po/sr latin po b/po/sr latin po
index 814fe78..7ff2fff 100644
--- a/po/sr latin po
+++ b/po/sr latin po
@@ -101,11 +101,11 @@ msgstr "Izaberite lični ključ..."
 msgid "PEM certificates (*.pem, *.crt, *.key)"
 msgstr "PEM uverenja (*.pem, *.crt, *.key)"
 
-#: ../properties/nm-openconnect.c:79
+#: ../properties/nm-openconnect-editor.c:79
 msgid "Cisco AnyConnect Compatible VPN (openconnect)"
 msgstr "VPN saglasan sa Cisko Eni Konektom (openconnect)"
 
-#: ../properties/nm-openconnect.c:80
+#: ../properties/nm-openconnect-editor.c:80
 msgid "Compatible with Cisco AnyConnect SSL VPN."
 msgstr "Saglasno sa SSL VPN-om Cisko Eni Konekta."
 
diff --git a/po/sv.po b/po/sv.po
index 10c5545..510fb92 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -5030,11 +5030,11 @@ msgstr "Välj din privata nyckel…"
 msgid "PEM certificates (*.pem, *.crt, *.key)"
 msgstr "PEM-certifikat (*.pem, *.crt, *.key)"
 
-#: ../properties/nm-openconnect.c:79
+#: ../properties/nm-openconnect-editor.c:79
 msgid "Cisco AnyConnect Compatible VPN (openconnect)"
 msgstr "Cisco AnyConnect-kompatibel VPN (openconnect)"
 
-#: ../properties/nm-openconnect.c:80
+#: ../properties/nm-openconnect-editor.c:80
 msgid "Compatible with Cisco AnyConnect SSL VPN."
 msgstr "Kompatibel med Cisco AnyConnect SSL VPN."
 
diff --git a/po/ta.po b/po/ta.po
index d44606e..7e5e7da 100644
--- a/po/ta.po
+++ b/po/ta.po
@@ -101,11 +101,11 @@ msgstr "உங்களது தனிப்பட்ட விசையை த
 msgid "PEM certificates (*.pem, *.crt, *.key)"
 msgstr "PEM சான்றிதழ்கள் (*.pem, *.crt, *.key)"
 
-#: ../properties/nm-openconnect.c:63
+#: ../properties/nm-openconnect-editor.c:63
 msgid "Cisco AnyConnect Compatible VPN (openconnect)"
 msgstr "Cisco AnyConnect ஏற்ற VPN (openconnect)"
 
-#: ../properties/nm-openconnect.c:64
+#: ../properties/nm-openconnect-editor.c:64
 msgid "Compatible with Cisco AnyConnect SSL VPN."
 msgstr "Cisco AnyConnect SSL VPNக்கு ஏற்றது."
 
diff --git a/po/te.po b/po/te.po
index b26f682..e96d160 100644
--- a/po/te.po
+++ b/po/te.po
@@ -98,11 +98,11 @@ msgstr "మీ వ్యక్తిగత కీను యెంచుకొన
 msgid "PEM certificates (*.pem, *.crt, *.key)"
 msgstr "PEM ధృవీకరణపత్రములు (*.pem, *.crt, *.key)"
 
-#: ../properties/nm-openconnect.c:63
+#: ../properties/nm-openconnect-editor.c:63
 msgid "Cisco AnyConnect Compatible VPN (openconnect)"
 msgstr "Cisco AnyConnect Compatible VPN (openconnect)"
 
-#: ../properties/nm-openconnect.c:64
+#: ../properties/nm-openconnect-editor.c:64
 msgid "Compatible with Cisco AnyConnect SSL VPN."
 msgstr "Cisco AnyConnect SSL VPN తో సారూప్యమైంది."
 
diff --git a/po/tr.po b/po/tr.po
index 5254508..e055b58 100644
--- a/po/tr.po
+++ b/po/tr.po
@@ -104,11 +104,11 @@ msgstr "Özel anahtarınızı seçin..."
 msgid "PEM certificates (*.pem, *.crt, *.key)"
 msgstr "PEM sertifikaları (*.pem, *.crt, *.key)"
 
-#: ../properties/nm-openconnect.c:63
+#: ../properties/nm-openconnect-editor.c:63
 msgid "Cisco AnyConnect Compatible VPN (openconnect)"
 msgstr "Cisco AnyConnect Uyumlu VPN (openconnect)"
 
-#: ../properties/nm-openconnect.c:64
+#: ../properties/nm-openconnect-editor.c:64
 msgid "Compatible with Cisco AnyConnect SSL VPN."
 msgstr "Cisco AnyConnect SSL VPN ile uyumlu"
 
diff --git a/po/ug.po b/po/ug.po
index f72c521..b5b88f9 100644
--- a/po/ug.po
+++ b/po/ug.po
@@ -3697,11 +3697,11 @@ msgstr ""
 msgid "TOTP - manually entered"
 msgstr ""
 
-#: ../properties/nm-openconnect.c:63
+#: ../properties/nm-openconnect-editor.c:63
 msgid "Cisco AnyConnect Compatible VPN (openconnect)"
 msgstr "Cisco AnyConnect بىلەن ماسلىشىدىغان VPN (openconnect)"
 
-#: ../properties/nm-openconnect.c:64
+#: ../properties/nm-openconnect-editor.c:64
 msgid "Compatible with Cisco AnyConnect SSL VPN."
 msgstr "Cisco AnyConnect SSL VPN بىلەن ماسلىشىدۇ."
 
diff --git a/po/uk.po b/po/uk.po
index 6693172..921cc77 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -97,11 +97,11 @@ msgstr "Виберіть ваш закритий ключ…"
 msgid "PEM certificates (*.pem, *.crt, *.key)"
 msgstr "Сертифікати PEM (*.pem, *.crt, *.key)"
 
-#: ../properties/nm-openconnect.c:63
+#: ../properties/nm-openconnect-editor.c:63
 msgid "Cisco AnyConnect Compatible VPN (openconnect)"
 msgstr "Сумісна з Cisco AnyConnect VPN (openconnect)"
 
-#: ../properties/nm-openconnect.c:64
+#: ../properties/nm-openconnect-editor.c:64
 msgid "Compatible with Cisco AnyConnect SSL VPN."
 msgstr "SSL VPN, сумісна з Cisco AnyConnect."
 
diff --git a/po/vi.po b/po/vi.po
index 78624de..335b3d8 100644
--- a/po/vi.po
+++ b/po/vi.po
@@ -98,11 +98,11 @@ msgstr "Chọn khóa riêng..."
 msgid "PEM certificates (*.pem, *.crt, *.key)"
 msgstr "Chứng nhận PEM (*.pem, *.crt, *.key)"
 
-#: ../properties/nm-openconnect.c:63
+#: ../properties/nm-openconnect-editor.c:63
 msgid "Cisco AnyConnect Compatible VPN (openconnect)"
 msgstr "VPN tương thích Cisco AnyConnect (openconnect)"
 
-#: ../properties/nm-openconnect.c:64
+#: ../properties/nm-openconnect-editor.c:64
 msgid "Compatible with Cisco AnyConnect SSL VPN."
 msgstr "Tương thích với Cisco AnyConnect SSL VPN."
 
diff --git a/po/zh_CN.po b/po/zh_CN.po
index 0457279..d057db5 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -98,11 +98,11 @@ msgstr "选择您的私人密钥..."
 msgid "PEM certificates (*.pem, *.crt, *.key)"
 msgstr "PEM 证书(*.pem,*.crt,*.key)"
 
-#: ../properties/nm-openconnect.c:63
+#: ../properties/nm-openconnect-editor.c:63
 msgid "Cisco AnyConnect Compatible VPN (openconnect)"
 msgstr "Cisco AnyConnect 兼容的 VPN (openconnect)"
 
-#: ../properties/nm-openconnect.c:64
+#: ../properties/nm-openconnect-editor.c:64
 msgid "Compatible with Cisco AnyConnect SSL VPN."
 msgstr "和 Cisco AnyConnect SSL VPN 兼容。"
 
diff --git a/po/zh_HK.po b/po/zh_HK.po
index eb8c306..9c430e4 100644
--- a/po/zh_HK.po
+++ b/po/zh_HK.po
@@ -94,11 +94,11 @@ msgstr "選擇你的私密密碼匙…"
 msgid "PEM certificates (*.pem, *.crt, *.key)"
 msgstr "PEM 證書 (*.pem, *.crt, *.key)"
 
-#: ../properties/nm-openconnect.c:63
+#: ../properties/nm-openconnect-editor.c:63
 msgid "Cisco AnyConnect Compatible VPN (openconnect)"
 msgstr "Cisco AnyConnect 兼容 VPN (openconnect)"
 
-#: ../properties/nm-openconnect.c:64
+#: ../properties/nm-openconnect-editor.c:64
 msgid "Compatible with Cisco AnyConnect SSL VPN."
 msgstr "兼容於 Cisco AnyConnect SSL VPN。"
 
diff --git a/po/zh_TW.po b/po/zh_TW.po
index d3007c2..7c435ae 100644
--- a/po/zh_TW.po
+++ b/po/zh_TW.po
@@ -94,11 +94,11 @@ msgstr "選擇您的私密金鑰…"
 msgid "PEM certificates (*.pem, *.crt, *.key)"
 msgstr "PEM 憑證 (*.pem, *.crt, *.key)"
 
-#: ../properties/nm-openconnect.c:63
+#: ../properties/nm-openconnect-editor.c:63
 msgid "Cisco AnyConnect Compatible VPN (openconnect)"
 msgstr "Cisco AnyConnect 相容 VPN (openconnect)"
 
-#: ../properties/nm-openconnect.c:64
+#: ../properties/nm-openconnect-editor.c:64
 msgid "Compatible with Cisco AnyConnect SSL VPN."
 msgstr "相容於 Cisco AnyConnect SSL VPN。"
 
diff --git a/properties/Makefile.am b/properties/Makefile.am
index 1d70913..a5407b0 100644
--- a/properties/Makefile.am
+++ b/properties/Makefile.am
@@ -4,16 +4,21 @@ if WITH_LIBNM_GLIB
 plugin_LTLIBRARIES += libnm-openconnect-properties.la
 endif
 
-uidir = $(datadir)/gnome-vpn-properties/openconnect
-ui_DATA = nm-openconnect-dialog.ui
-
 plugin_sources = \
+       nm-openconnect-editor-plugin.c \
+       nm-openconnect-editor-plugin.h \
+       $(NULL)
+
+editor_sources = \
        auth-helpers.c \
        auth-helpers.h \
-       nm-openconnect.c \
-       nm-openconnect.h
+       nm-openconnect-editor.c \
+       nm-openconnect-editor.h
        $(NULL)
 
+uidir = $(datadir)/gnome-vpn-properties/openconnect
+ui_DATA = nm-openconnect-dialog.ui
+
 common_CFLAGS = \
        $(GLIB_CFLAGS) \
        $(GTK_CFLAGS) \
@@ -26,7 +31,8 @@ common_CFLAGS = \
 ###############################################################################
 
 libnm_vpn_plugin_openconnect_la_SOURCES = \
-       $(plugin_sources)
+       $(plugin_sources) \
+       $(editor_sources)
 
 libnm_vpn_plugin_openconnect_la_CFLAGS = \
        -DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_LIB \
@@ -45,7 +51,8 @@ libnm_vpn_plugin_openconnect_la_LDFLAGS = \
 ###############################################################################
 
 libnm_openconnect_properties_la_SOURCES = \
-       $(plugin_sources)
+       $(plugin_sources) \
+       $(editor_sources)
 
 libnm_openconnect_properties_la_CFLAGS = \
        -DNM_VPN_OLD \
@@ -67,7 +74,7 @@ libnm_openconnect_properties_la_LDFLAGS = \
 CLEANFILES = *.bak *~
 
 EXTRA_DIST = \
-       $(ui_DATA) \
        libnm-openconnect-properties.ver \
        libnm-vpn-plugin-openconnect.ver \
+       nm-openconnect-dialog.ui \
        $(NULL)
diff --git a/properties/auth-helpers.c b/properties/auth-helpers.c
index e60d16f..a5a0248 100644
--- a/properties/auth-helpers.c
+++ b/properties/auth-helpers.c
@@ -33,8 +33,6 @@
 #include <unistd.h>
 #include <errno.h>
 
-#include "nm-openconnect.h"
-
 void
 tls_pw_init_auth_widget (GtkBuilder *builder,
                          GtkSizeGroup *group,
diff --git a/properties/nm-openconnect-editor-plugin.c b/properties/nm-openconnect-editor-plugin.c
new file mode 100644
index 0000000..8486b59
--- /dev/null
+++ b/properties/nm-openconnect-editor-plugin.c
@@ -0,0 +1,514 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
+/***************************************************************************
+ * Copyright (C) 2005 David Zeuthen, <davidz redhat com>
+ * Copyright (C) 2005 - 2008 Dan Williams, <dcbw redhat com>
+ * Copyright (C) 2005 - 2011 Red Hat, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ **************************************************************************/
+
+#include "nm-default.h"
+
+#include "nm-openconnect-editor-plugin.h"
+
+#include <stdio.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
+#include <errno.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <openconnect.h>
+
+#ifndef OPENCONNECT_CHECK_VER
+#define OPENCONNECT_CHECK_VER(x,y) 0
+#endif
+
+#if !OPENCONNECT_CHECK_VER(2,1)
+#define openconnect_has_stoken_support() 0
+#endif
+#if !OPENCONNECT_CHECK_VER(2,2)
+#define openconnect_has_oath_support() 0
+#endif
+
+#include "nm-openconnect-editor.h"
+
+#ifndef NM_VPN_OLD
+#include "nm-utils/nm-vpn-editor-plugin-call.h"
+#endif
+
+#define OPENCONNECT_PLUGIN_NAME    _("Cisco AnyConnect Compatible VPN (openconnect)")
+#define OPENCONNECT_PLUGIN_DESC    _("Compatible with Cisco AnyConnect SSL VPN.")
+
+/************** plugin class **************/
+
+enum {
+       PROP_0,
+       PROP_NAME,
+       PROP_DESC,
+       PROP_SERVICE
+};
+
+static void openconnect_editor_plugin_interface_init (NMVpnEditorPluginInterface *iface_class);
+
+G_DEFINE_TYPE_EXTENDED (OpenconnectEditorPlugin, openconnect_editor_plugin, G_TYPE_OBJECT, 0,
+                        G_IMPLEMENT_INTERFACE (NM_TYPE_VPN_EDITOR_PLUGIN,
+                                               openconnect_editor_plugin_interface_init))
+
+typedef struct {
+       char **supported_protocols;
+} OpenconnectEditorPluginPrivate;
+
+#define OPENCONNECT_EDITOR_PLUGIN_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), 
OPENCONNECT_TYPE_EDITOR_PLUGIN, OpenconnectEditorPluginPrivate))
+
+/************** import/export **************/
+
+typedef enum {
+       NM_OPENCONNECT_IMPORT_EXPORT_ERROR_UNKNOWN = 0,
+       NM_OPENCONNECT_IMPORT_EXPORT_ERROR_NOT_OPENCONNECT,
+       NM_OPENCONNECT_IMPORT_EXPORT_ERROR_BAD_DATA,
+} NMOpenconnectImportError;
+
+#define NM_OPENCONNECT_IMPORT_EXPORT_ERROR nm_openconnect_import_export_error_quark ()
+
+static GQuark
+nm_openconnect_import_export_error_quark (void)
+{
+       static GQuark quark = 0;
+
+       if (G_UNLIKELY (quark == 0))
+               quark = g_quark_from_static_string ("nm-openconnect-import-export-error-quark");
+       return quark;
+}
+
+static NMConnection *
+import (NMVpnEditorPlugin *iface, const char *path, GError **error)
+{
+       NMConnection *connection;
+       NMSettingConnection *s_con;
+       NMSettingVpn *s_vpn;
+       NMSettingIP4Config *s_ip4;
+       GKeyFile *keyfile;
+       GKeyFileFlags flags;
+       const char *buf;
+       gboolean bval;
+
+       keyfile = g_key_file_new ();
+       flags = G_KEY_FILE_KEEP_COMMENTS | G_KEY_FILE_KEEP_TRANSLATIONS;
+
+       if (!g_key_file_load_from_file (keyfile, path, flags, NULL)) {
+               g_set_error (error,
+                            NM_OPENCONNECT_IMPORT_EXPORT_ERROR,
+                            NM_OPENCONNECT_IMPORT_EXPORT_ERROR_NOT_OPENCONNECT,
+                            "does not look like a %s VPN connection (parse failed)",
+                            OPENCONNECT_PLUGIN_NAME);
+               return NULL;
+       }
+
+       connection = nm_simple_connection_new ();
+       s_con = NM_SETTING_CONNECTION (nm_setting_connection_new ());
+       nm_connection_add_setting (connection, NM_SETTING (s_con));
+
+       s_vpn = NM_SETTING_VPN (nm_setting_vpn_new ());
+       g_object_set (s_vpn, NM_SETTING_VPN_SERVICE_TYPE, NM_VPN_SERVICE_TYPE_OPENCONNECT, NULL);
+       nm_connection_add_setting (connection, NM_SETTING (s_vpn));
+
+       s_ip4 = NM_SETTING_IP4_CONFIG (nm_setting_ip4_config_new ());
+       nm_connection_add_setting (connection, NM_SETTING (s_ip4));
+
+       /* Host */
+       buf = g_key_file_get_string (keyfile, "openconnect", "Host", NULL);
+       if (buf) {
+               nm_setting_vpn_add_data_item (s_vpn, NM_OPENCONNECT_KEY_GATEWAY, buf);
+       } else {
+               g_set_error (error,
+                            NM_OPENCONNECT_IMPORT_EXPORT_ERROR,
+                            NM_OPENCONNECT_IMPORT_EXPORT_ERROR_BAD_DATA,
+                            "does not look like a %s VPN connection (no Host)",
+                            OPENCONNECT_PLUGIN_NAME);
+               g_object_unref (connection);
+               return NULL;
+       }
+
+       /* Optional Settings */
+
+       /* Description */
+       buf = g_key_file_get_string (keyfile, "openconnect", "Description", NULL);
+       if (buf)
+               g_object_set (s_con, NM_SETTING_CONNECTION_ID, buf, NULL);
+
+       /* CA Certificate */
+       buf = g_key_file_get_string (keyfile, "openconnect", "CACert", NULL);
+       if (buf)
+               nm_setting_vpn_add_data_item (s_vpn, NM_OPENCONNECT_KEY_CACERT, buf);
+
+       /* Proxy */
+       buf = g_key_file_get_string (keyfile, "openconnect", "Proxy", NULL);
+       if (buf)
+               nm_setting_vpn_add_data_item (s_vpn, NM_OPENCONNECT_KEY_PROXY, buf);
+
+       /* Cisco Secure Desktop */
+       bval = g_key_file_get_boolean (keyfile, "openconnect", "CSDEnable", NULL);
+       if (bval)
+               nm_setting_vpn_add_data_item (s_vpn, NM_OPENCONNECT_KEY_CSD_ENABLE, "yes");
+
+       /* Cisco Secure Desktop wrapper */
+       buf = g_key_file_get_string (keyfile, "openconnect", "CSDWrapper", NULL);
+       if (buf)
+               nm_setting_vpn_add_data_item (s_vpn, NM_OPENCONNECT_KEY_CSD_WRAPPER, buf);
+
+       /* User Certificate */
+       buf = g_key_file_get_string (keyfile, "openconnect", "UserCertificate", NULL);
+       if (buf)
+               nm_setting_vpn_add_data_item (s_vpn, NM_OPENCONNECT_KEY_USERCERT, buf);
+
+       /* Private Key */
+       buf = g_key_file_get_string (keyfile, "openconnect", "PrivateKey", NULL);
+       if (buf)
+               nm_setting_vpn_add_data_item (s_vpn, NM_OPENCONNECT_KEY_PRIVKEY, buf);
+
+       /* FSID */
+       bval = g_key_file_get_boolean (keyfile, "openconnect", "FSID", NULL);
+       if (bval)
+               nm_setting_vpn_add_data_item (s_vpn, NM_OPENCONNECT_KEY_PEM_PASSPHRASE_FSID, "yes");
+
+       /* Soft token mode */
+       buf = g_key_file_get_string (keyfile, "openconnect", "StokenSource", NULL);
+       if (buf)
+               nm_setting_vpn_add_data_item (s_vpn, NM_OPENCONNECT_KEY_TOKEN_MODE, buf);
+
+       /* Soft token secret */
+       buf = g_key_file_get_string (keyfile, "openconnect", "StokenString", NULL);
+       if (buf)
+               nm_setting_vpn_add_secret (s_vpn, NM_OPENCONNECT_KEY_TOKEN_SECRET, buf);
+
+       return connection;
+}
+
+static gboolean
+export (NMVpnEditorPlugin *iface,
+        const char *path,
+        NMConnection *connection,
+        GError **error)
+{
+       NMSettingConnection *s_con;
+       NMSettingVpn *s_vpn;
+       const char *value;
+       const char *gateway = NULL;
+       const char *cacert = NULL;
+       const char *proxy = NULL;
+       gboolean csd_enable = FALSE;
+       const char *csd_wrapper = NULL;
+       const char *usercert = NULL;
+       const char *privkey = NULL;
+       gboolean pem_passphrase_fsid = FALSE;
+       const char *token_mode = NULL;
+       const char *token_secret = NULL;
+       gboolean success = FALSE;
+       FILE *f;
+
+       f = fopen (path, "w");
+       if (!f) {
+               g_set_error_literal (error,
+                                    NM_OPENCONNECT_IMPORT_EXPORT_ERROR,
+                                    NM_OPENCONNECT_IMPORT_EXPORT_ERROR_UNKNOWN,
+                                    "could not open file for writing");
+               return FALSE;
+       }
+
+       s_con = nm_connection_get_setting_connection (connection);
+
+       s_vpn = nm_connection_get_setting_vpn (connection);
+
+       value = nm_setting_vpn_get_data_item (s_vpn, NM_OPENCONNECT_KEY_GATEWAY);
+       if (value && strlen (value))
+               gateway = value;
+       else {
+               g_set_error_literal (error,
+                                    NM_OPENCONNECT_IMPORT_EXPORT_ERROR,
+                                    NM_OPENCONNECT_IMPORT_EXPORT_ERROR_BAD_DATA,
+                                    "connection was incomplete (missing gateway)");
+               goto done;
+       }
+
+       value = nm_setting_vpn_get_data_item (s_vpn, NM_OPENCONNECT_KEY_CACERT);
+       if (value && strlen (value))
+               cacert = value;
+
+       value = nm_setting_vpn_get_data_item (s_vpn, NM_OPENCONNECT_KEY_PROXY);
+       if (value && strlen (value))
+               proxy = value;
+
+       value = nm_setting_vpn_get_data_item (s_vpn, NM_OPENCONNECT_KEY_CSD_ENABLE);
+       if (value && !strcmp (value, "yes"))
+               csd_enable = TRUE;
+
+       value = nm_setting_vpn_get_data_item (s_vpn, NM_OPENCONNECT_KEY_CSD_WRAPPER);
+       if (value && strlen (value))
+               csd_wrapper = value;
+
+       value = nm_setting_vpn_get_data_item (s_vpn, NM_OPENCONNECT_KEY_USERCERT);
+       if (value && strlen (value))
+               usercert = value;
+
+       value = nm_setting_vpn_get_data_item (s_vpn, NM_OPENCONNECT_KEY_PRIVKEY);
+       if (value && strlen (value))
+               privkey = value;
+
+       value = nm_setting_vpn_get_data_item (s_vpn, NM_OPENCONNECT_KEY_PEM_PASSPHRASE_FSID);
+       if (value && !strcmp (value, "yes"))
+               pem_passphrase_fsid = TRUE;
+
+       value = nm_setting_vpn_get_data_item (s_vpn, NM_OPENCONNECT_KEY_TOKEN_MODE);
+       if (value && strlen (value))
+               token_mode = value;
+
+       value = nm_setting_vpn_get_secret (s_vpn, NM_OPENCONNECT_KEY_TOKEN_SECRET);
+       if (value && strlen (value))
+               token_secret = value;
+       else {
+               value = nm_setting_vpn_get_data_item (s_vpn, NM_OPENCONNECT_KEY_TOKEN_SECRET);
+               if (value && strlen (value))
+                       token_secret = value;
+       }
+
+       fprintf (f,
+                "[openconnect]\n"
+                "Description=%s\n"
+                "Host=%s\n"
+                "CACert=%s\n"
+                "Proxy=%s\n"
+                "CSDEnable=%s\n"
+                "CSDWrapper=%s\n"
+                "UserCertificate=%s\n"
+                "PrivateKey=%s\n"
+                "FSID=%s\n"
+                "StokenSource=%s\n"
+                "StokenString=%s\n",
+                /* Description */           nm_setting_connection_get_id (s_con),
+                /* Host */                  gateway,
+                /* CA Certificate */        cacert,
+                /* Proxy */                 proxy ? proxy : "",
+                /* Cisco Secure Desktop */  csd_enable ? "1" : "0",
+                /* CSD Wrapper Script */    csd_wrapper ? csd_wrapper : "",
+                /* User Certificate */      usercert,
+                /* Private Key */           privkey,
+                /* FSID */                  pem_passphrase_fsid ? "1" : "0",
+                /* Soft token mode */       token_mode ? token_mode : "",
+                /* Soft token secret */     token_secret ? token_secret : "");
+
+       success = TRUE;
+
+done:
+       fclose (f);
+       return success;
+}
+
+static guint32
+get_capabilities (NMVpnEditorPlugin *iface)
+{
+       return (NM_VPN_EDITOR_PLUGIN_CAPABILITY_IMPORT |
+               NM_VPN_EDITOR_PLUGIN_CAPABILITY_EXPORT |
+               NM_VPN_EDITOR_PLUGIN_CAPABILITY_IPV6);
+}
+
+#ifndef NM_VPN_OLD
+static void
+notify_plugin_info_set (NMVpnEditorPlugin *plugin,
+                        NMVpnPluginInfo *plugin_info)
+{
+       OpenconnectEditorPluginPrivate *priv = OPENCONNECT_EDITOR_PLUGIN_GET_PRIVATE (plugin);
+       const char *supported_protocols;
+       guint i, j;
+
+       if (!plugin_info)
+               return;
+
+       supported_protocols = nm_vpn_plugin_info_lookup_property (plugin_info, "openconnect", 
"supported-protocols");
+
+       g_strfreev (priv->supported_protocols);
+       priv->supported_protocols = supported_protocols
+           ? g_strsplit_set (supported_protocols, ",", -1)
+           : g_new0 (char *, 1);
+
+       /*remove empty entries and whitespace */
+       for (i = 0, j = 0; priv->supported_protocols[j]; j++) {
+               g_strstrip (priv->supported_protocols[j]);
+               if (priv->supported_protocols[j][0] == '\0')
+                       g_free (priv->supported_protocols[j]);
+               else
+                       priv->supported_protocols[i++] = priv->supported_protocols[j];
+       }
+       priv->supported_protocols[i] = NULL;
+}
+
+static char **
+_vt_impl_get_service_add_details (NMVpnEditorPlugin *plugin,
+                                  const char *service_type)
+{
+       return g_strdupv (OPENCONNECT_EDITOR_PLUGIN_GET_PRIVATE (plugin)->supported_protocols);
+}
+
+static gboolean
+_vt_impl_get_service_add_detail (NMVpnEditorPlugin *plugin,
+                                 const char *service_type,
+                                 const char *add_detail,
+                                 char **out_pretty_name,
+                                 char **out_description,
+                                 char **out_add_detail_key,
+                                 char **out_add_detail_val,
+                                 guint *out_flags)
+{
+       OpenconnectEditorPluginPrivate *priv;
+       guint i;
+
+       if (!nm_streq (service_type, NM_VPN_SERVICE_TYPE_OPENCONNECT))
+               return FALSE;
+
+       priv = OPENCONNECT_EDITOR_PLUGIN_GET_PRIVATE (plugin);
+       for (i = 0; priv->supported_protocols[i]; i++) {
+               if (!nm_streq (add_detail, priv->supported_protocols[i]))
+                       continue;
+               if (nm_streq (add_detail, "anyconnect")) {
+                       NM_SET_OUT (out_pretty_name, g_strdup (OPENCONNECT_PLUGIN_NAME));
+                       NM_SET_OUT (out_description, g_strdup (OPENCONNECT_PLUGIN_DESC));
+                       /* we unset @add_detail, because "anyconnect" is the default and no need
+                        * to set the protocol explicitly. */
+                       add_detail = NULL;
+               } else if (nm_streq (add_detail, "nc")) {
+                       NM_SET_OUT (out_pretty_name, g_strdup (_("Juniper Network Connect (openconnect)")));
+                       NM_SET_OUT (out_description, g_strdup (_("Compatible with Juniper Network Connect / 
Pulse Secure SSL VPN")));
+               } else {
+                       /* we don't know this protocol by name, but it's configured in the .name file,
+                        * so just take it. */
+                       NM_SET_OUT (out_pretty_name, g_strdup_printf (_("Openconnect VPN (%s)"), add_detail));
+                       NM_SET_OUT (out_description, g_strdup_printf (_("Openconnect SSL VPN with %s 
protocol"), add_detail));
+               }
+               NM_SET_OUT (out_add_detail_key, g_strdup (add_detail ? NM_OPENCONNECT_KEY_PROTOCOL : NULL));
+               NM_SET_OUT (out_add_detail_val, g_strdup (add_detail));
+               NM_SET_OUT (out_flags, 0);
+               return TRUE;
+       }
+       return FALSE;
+}
+
+NM_VPN_EDITOR_PLUGIN_VT_DEFINE (vt, _get_vt,
+       .fcn_get_service_add_details = _vt_impl_get_service_add_details,
+       .fcn_get_service_add_detail  = _vt_impl_get_service_add_detail,
+)
+
+#endif
+
+static NMVpnEditor *
+get_editor (NMVpnEditorPlugin *iface, NMConnection *connection, GError **error)
+{
+       return nm_vpn_editor_interface_new (connection, error);
+}
+
+static void
+get_property (GObject *object, guint prop_id,
+              GValue *value, GParamSpec *pspec)
+{
+       switch (prop_id) {
+       case PROP_NAME:
+               g_value_set_string (value, OPENCONNECT_PLUGIN_NAME);
+               break;
+       case PROP_DESC:
+               g_value_set_string (value, OPENCONNECT_PLUGIN_DESC);
+               break;
+       case PROP_SERVICE:
+               g_value_set_string (value, NM_VPN_SERVICE_TYPE_OPENCONNECT);
+               break;
+       default:
+               G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+               break;
+       }
+}
+
+static void
+openconnect_editor_plugin_dispose (GObject *object)
+{
+       OpenconnectEditorPlugin *plugin = OPENCONNECT_EDITOR_PLUGIN (object);
+       OpenconnectEditorPluginPrivate *priv = OPENCONNECT_EDITOR_PLUGIN_GET_PRIVATE (plugin);
+
+       g_strfreev (priv->supported_protocols);
+       priv->supported_protocols = NULL;
+
+       G_OBJECT_CLASS (openconnect_editor_plugin_parent_class)->dispose (object);
+}
+
+static void
+openconnect_editor_plugin_class_init (OpenconnectEditorPluginClass *req_class)
+{
+       GObjectClass *object_class = G_OBJECT_CLASS (req_class);
+
+       g_type_class_add_private (req_class, sizeof (OpenconnectEditorPluginPrivate));
+
+       object_class->get_property = get_property;
+       object_class->dispose = openconnect_editor_plugin_dispose;
+
+       g_object_class_override_property (object_class,
+                                         PROP_NAME,
+                                         NM_VPN_EDITOR_PLUGIN_NAME);
+
+       g_object_class_override_property (object_class,
+                                         PROP_DESC,
+                                         NM_VPN_EDITOR_PLUGIN_DESCRIPTION);
+
+       g_object_class_override_property (object_class,
+                                         PROP_SERVICE,
+                                         NM_VPN_EDITOR_PLUGIN_SERVICE);
+}
+
+static void
+openconnect_editor_plugin_init (OpenconnectEditorPlugin *plugin)
+{
+       OpenconnectEditorPluginPrivate *priv = OPENCONNECT_EDITOR_PLUGIN_GET_PRIVATE (plugin);
+       char *dflt[] = {
+               "anyconnect",
+               "nc",
+               NULL,
+       };
+
+       priv->supported_protocols = g_strdupv (dflt);
+}
+
+static void
+openconnect_editor_plugin_interface_init (NMVpnEditorPluginInterface *iface_class)
+{
+       /* interface implementation */
+       iface_class->get_editor = get_editor;
+       iface_class->get_capabilities = get_capabilities;
+       iface_class->import_from_file = import;
+       iface_class->export_to_file = export;
+#ifndef NM_VPN_OLD
+       iface_class->notify_plugin_info_set = notify_plugin_info_set;
+       iface_class->get_vt = _get_vt;
+#endif
+}
+
+G_MODULE_EXPORT NMVpnEditorPlugin *
+nm_vpn_editor_plugin_factory (GError **error)
+{
+       if (error)
+               g_return_val_if_fail (*error == NULL, NULL);
+
+       bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
+       bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+
+       return g_object_new (OPENCONNECT_TYPE_EDITOR_PLUGIN, NULL);
+}
+
diff --git a/properties/nm-openconnect.h b/properties/nm-openconnect-editor-plugin.h
similarity index 65%
copy from properties/nm-openconnect.h
copy to properties/nm-openconnect-editor-plugin.h
index a392b73..4625528 100644
--- a/properties/nm-openconnect.h
+++ b/properties/nm-openconnect-editor-plugin.h
@@ -1,7 +1,5 @@
 /* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
 /***************************************************************************
- * nm-openconnect.h : GNOME UI dialogs for configuring openconnect VPN connections
- *
  * Copyright (C) 2008 Dan Williams, <dcbw redhat com>
  *
  * This program is free software; you can redistribute it and/or modify
@@ -20,8 +18,8 @@
  *
  **************************************************************************/
 
-#ifndef _NM_OPENCONNECT_H_
-#define _NM_OPENCONNECT_H_
+#ifndef __NM_OPENCONNECT_EDITOR_PLUGIN_H__
+#define __NM_OPENCONNECT_EDITOR_PLUGIN_H__
 
 #define OPENCONNECT_TYPE_EDITOR_PLUGIN            (openconnect_editor_plugin_get_type ())
 #define OPENCONNECT_EDITOR_PLUGIN(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), 
OPENCONNECT_TYPE_EDITOR_PLUGIN, OpenconnectEditorPlugin))
@@ -44,25 +42,5 @@ struct _OpenconnectEditorPluginClass {
 GType openconnect_editor_plugin_get_type (void);
 
 
-#define OPENCONNECT_TYPE_EDITOR            (openconnect_editor_get_type ())
-#define OPENCONNECT_EDITOR(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), OPENCONNECT_TYPE_EDITOR, 
OpenconnectEditor))
-#define OPENCONNECT_EDITOR_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), OPENCONNECT_TYPE_EDITOR, 
OpenconnectEditorClass))
-#define OPENCONNECT_IS_EDITOR(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), OPENCONNECT_TYPE_EDITOR))
-#define OPENCONNECT_IS_EDITOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), OPENCONNECT_TYPE_EDITOR))
-#define OPENCONNECT_EDITOR_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), OPENCONNECT_TYPE_EDITOR, 
OpenconnectEditorClass))
-
-typedef struct _OpenconnectEditor OpenconnectEditor;
-typedef struct _OpenconnectEditorClass OpenconnectEditorClass;
-
-struct _OpenconnectEditor {
-       GObject parent;
-};
-
-struct _OpenconnectEditorClass {
-       GObjectClass parent;
-};
-
-GType openconnect_editor_get_type (void);
-
-#endif /* _NM_OPENCONNECT_H_ */
+#endif /* __NM_OPENCONNECT_EDITOR_PLUGIN_H__ */
 
diff --git a/properties/nm-openconnect-editor.c b/properties/nm-openconnect-editor.c
new file mode 100644
index 0000000..7021642
--- /dev/null
+++ b/properties/nm-openconnect-editor.c
@@ -0,0 +1,505 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
+/***************************************************************************
+ * Copyright (C) 2005 David Zeuthen, <davidz redhat com>
+ * Copyright (C) 2005 - 2008 Dan Williams, <dcbw redhat com>
+ * Copyright (C) 2005 - 2011 Red Hat, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ **************************************************************************/
+
+#include "nm-default.h"
+
+#include "nm-openconnect-editor.h"
+
+#include <netinet/in.h>
+#include <arpa/inet.h>
+#include <errno.h>
+#include <stdlib.h>
+#include <string.h>
+#include <gtk/gtk.h>
+
+#include <openconnect.h>
+
+#ifndef OPENCONNECT_CHECK_VER
+#define OPENCONNECT_CHECK_VER(x,y) 0
+#endif
+
+#if !OPENCONNECT_CHECK_VER(2,1)
+#define openconnect_has_stoken_support() 0
+#endif
+#if !OPENCONNECT_CHECK_VER(2,2)
+#define openconnect_has_oath_support() 0
+#endif
+
+#include "auth-helpers.h"
+
+/************** UI widget class **************/
+
+static void openconnect_editor_interface_init (NMVpnEditorInterface *iface_class);
+
+G_DEFINE_TYPE_EXTENDED (OpenconnectEditor, openconnect_editor, G_TYPE_OBJECT, 0,
+                        G_IMPLEMENT_INTERFACE (NM_TYPE_VPN_EDITOR,
+                                               openconnect_editor_interface_init))
+
+#define OPENCONNECT_EDITOR_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), OPENCONNECT_TYPE_EDITOR, 
OpenconnectEditorPrivate))
+
+typedef struct {
+       GtkBuilder *builder;
+       GtkWidget *widget;
+       GtkSizeGroup *group;
+       GtkWindowGroup *window_group;
+       gboolean window_added;
+} OpenconnectEditorPrivate;
+
+#define COL_AUTH_NAME 0
+#define COL_AUTH_PAGE 1
+#define COL_AUTH_TYPE 2
+
+/*****************************************************************************/
+
+static gboolean
+check_validity (OpenconnectEditor *self, GError **error)
+{
+       OpenconnectEditorPrivate *priv = OPENCONNECT_EDITOR_GET_PRIVATE (self);
+       GtkWidget *widget;
+       const char *str;
+
+       widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, "gateway_entry"));
+       str = gtk_entry_get_text (GTK_ENTRY (widget));
+       if (!str || !strlen (str)) {
+               g_set_error (error,
+                            NMV_EDITOR_PLUGIN_ERROR,
+                            NMV_EDITOR_PLUGIN_ERROR_INVALID_PROPERTY,
+                            NM_OPENCONNECT_KEY_GATEWAY);
+               return FALSE;
+       }
+
+
+       widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, "proxy_entry"));
+       str = gtk_entry_get_text (GTK_ENTRY (widget));
+       if (str && str[0] &&
+               strncmp(str, "socks://", 8) && strncmp(str, "http://";, 7)) {
+               g_set_error (error,
+                            NMV_EDITOR_PLUGIN_ERROR,
+                            NMV_EDITOR_PLUGIN_ERROR_INVALID_PROPERTY,
+                            NM_OPENCONNECT_KEY_PROXY);
+               return FALSE;
+       }
+
+       if (!auth_widget_check_validity (priv->builder, error))
+               return FALSE;
+
+       return TRUE;
+}
+
+static void
+stuff_changed_cb (GtkWidget *widget, gpointer user_data)
+{
+       g_signal_emit_by_name (OPENCONNECT_EDITOR (user_data), "changed");
+}
+
+static gboolean
+init_token_mode_options (GtkComboBox *token_mode)
+{
+       GtkListStore *token_mode_list = GTK_LIST_STORE (gtk_combo_box_get_model (token_mode));
+       GtkTreeModel *model = GTK_TREE_MODEL (token_mode_list);
+       GtkTreeIter iter;
+       gboolean iter_valid;
+       int valid_rows = 0;
+
+       if (!gtk_tree_model_get_iter_first (model, &iter))
+               return FALSE;
+       do {
+               char *token_type;
+
+               gtk_tree_model_get (model, &iter, 2, &token_type, -1);
+               if (!strcmp (token_type, "stoken") && !openconnect_has_stoken_support ())
+                       iter_valid = gtk_list_store_remove (token_mode_list, &iter);
+               else if (!strcmp (token_type, "totp") && !openconnect_has_oath_support ())
+                       iter_valid = gtk_list_store_remove (token_mode_list, &iter);
+               else if (!strcmp (token_type, "hotp") &&
+                                (!openconnect_has_oath_support () || !OPENCONNECT_CHECK_VER(3,4)))
+                       iter_valid = gtk_list_store_remove (token_mode_list, &iter);
+               else {
+                       iter_valid = gtk_tree_model_iter_next (model, &iter);
+                       valid_rows++;
+               }
+               g_free (token_type);
+       } while (iter_valid);
+
+       /* if the only option is "Disabled", don't show the token section at all */
+       return valid_rows > 1;
+}
+
+static gboolean
+init_token_ui (OpenconnectEditor *self,
+               OpenconnectEditorPrivate *priv,
+               NMSettingVpn *s_vpn)
+{
+       GtkWidget *widget;
+       GtkComboBox *token_mode;
+       GtkTextBuffer *buffer;
+       const char *value;
+
+       token_mode = GTK_COMBO_BOX (gtk_builder_get_object (priv->builder, "token_mode"));
+       if (!token_mode)
+               return FALSE;
+       if (!init_token_mode_options (token_mode))
+               return TRUE;
+
+       widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, "token_vbox"));
+       if (!widget)
+               return FALSE;
+       gtk_box_pack_start (GTK_BOX (priv->widget), widget, FALSE, FALSE, 0);
+
+       if (s_vpn) {
+               GtkTreeModel *model = gtk_combo_box_get_model (token_mode);
+               int active_option = 0;
+
+               value = nm_setting_vpn_get_data_item (s_vpn, NM_OPENCONNECT_KEY_TOKEN_MODE);
+               if (value) {
+                       int i;
+                       GtkTreeIter iter;
+
+                       if (!gtk_tree_model_get_iter_first (model, &iter))
+                               return FALSE;
+                       for (i = 0; ; i++) {
+                               char *pref_value;
+
+                               gtk_tree_model_get (model, &iter, 1, &pref_value, -1);
+                               if (!strcmp (value, pref_value))
+                                       active_option = i;
+                               g_free (pref_value);
+                               if (!gtk_tree_model_iter_next (model, &iter))
+                                       break;
+                       }
+               }
+               gtk_combo_box_set_active (token_mode, active_option);
+       }
+       g_signal_connect (G_OBJECT (token_mode), "changed", G_CALLBACK (stuff_changed_cb), self);
+
+       widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, "token_secret"));
+       if (!widget)
+               return FALSE;
+       buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (widget));
+       if (!buffer)
+               return FALSE;
+       if (s_vpn) {
+               value = nm_setting_vpn_get_secret (s_vpn, NM_OPENCONNECT_KEY_TOKEN_SECRET);
+               if (!value)
+                       value = nm_setting_vpn_get_data_item (s_vpn, NM_OPENCONNECT_KEY_TOKEN_SECRET);
+               if (value)
+                       gtk_text_buffer_set_text (buffer, value, -1);
+       }
+       g_signal_connect (G_OBJECT (buffer), "changed", G_CALLBACK (stuff_changed_cb), self);
+
+       return TRUE;
+}
+
+static gboolean
+init_editor_plugin (OpenconnectEditor *self, NMConnection *connection, GError **error)
+{
+       OpenconnectEditorPrivate *priv = OPENCONNECT_EDITOR_GET_PRIVATE (self);
+       NMSettingVpn *s_vpn;
+       GtkWidget *widget;
+       const char *value;
+
+       s_vpn = nm_connection_get_setting_vpn (connection);
+
+       priv->group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
+
+       widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, "gateway_entry"));
+       if (!widget)
+               return FALSE;
+       gtk_size_group_add_widget (priv->group, widget);
+       if (s_vpn) {
+               value = nm_setting_vpn_get_data_item (s_vpn, NM_OPENCONNECT_KEY_GATEWAY);
+               if (value)
+                       gtk_entry_set_text (GTK_ENTRY (widget), value);
+       }
+       g_signal_connect (G_OBJECT (widget), "changed", G_CALLBACK (stuff_changed_cb), self);
+
+       widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, "proxy_entry"));
+       if (!widget)
+               return FALSE;
+       gtk_size_group_add_widget (priv->group, widget);
+       if (s_vpn) {
+               value = nm_setting_vpn_get_data_item (s_vpn, NM_OPENCONNECT_KEY_PROXY);
+               if (value)
+                       gtk_entry_set_text (GTK_ENTRY (widget), value);
+       }
+       g_signal_connect (G_OBJECT (widget), "changed", G_CALLBACK (stuff_changed_cb), self);
+
+       widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, "fsid_button"));
+       if (!widget)
+               return FALSE;
+       if (s_vpn) {
+               value = nm_setting_vpn_get_data_item (s_vpn, NM_OPENCONNECT_KEY_PEM_PASSPHRASE_FSID);
+               if (value && !strcmp(value, "yes"))
+                       gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (widget), TRUE);
+       }
+       g_signal_connect (G_OBJECT (widget), "toggled", G_CALLBACK (stuff_changed_cb), self);
+
+       widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, "csd_button"));
+       if (!widget)
+               return FALSE;
+       if (s_vpn) {
+               value = nm_setting_vpn_get_data_item (s_vpn, NM_OPENCONNECT_KEY_CSD_ENABLE);
+               if (value && !strcmp(value, "yes"))
+                       gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (widget), TRUE);
+       }
+       g_signal_connect (G_OBJECT (widget), "toggled", G_CALLBACK (stuff_changed_cb), self);
+
+       widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, "csd_wrapper_entry"));
+       if (!widget)
+               return FALSE;
+       if (s_vpn) {
+               value = nm_setting_vpn_get_data_item (s_vpn, NM_OPENCONNECT_KEY_CSD_WRAPPER);
+               if (value)
+                       gtk_entry_set_text (GTK_ENTRY (widget), value);
+       }
+       g_signal_connect (G_OBJECT (widget), "changed", G_CALLBACK (stuff_changed_cb), self);
+
+       if (init_token_ui (self, priv, s_vpn) == FALSE)
+               return FALSE;
+
+       tls_pw_init_auth_widget (priv->builder, priv->group, s_vpn, stuff_changed_cb, self);
+
+       return TRUE;
+}
+
+static GObject *
+get_widget (NMVpnEditor *iface)
+{
+       OpenconnectEditor *self = OPENCONNECT_EDITOR (iface);
+       OpenconnectEditorPrivate *priv = OPENCONNECT_EDITOR_GET_PRIVATE (self);
+
+       return G_OBJECT (priv->widget);
+}
+
+static gboolean
+update_connection (NMVpnEditor *iface,
+                   NMConnection *connection,
+                   GError **error)
+{
+       OpenconnectEditor *self = OPENCONNECT_EDITOR (iface);
+       OpenconnectEditorPrivate *priv = OPENCONNECT_EDITOR_GET_PRIVATE (self);
+       NMSettingVpn *s_vpn;
+       GtkWidget *widget;
+       char *str;
+       GtkTreeModel *model;
+       GtkTreeIter iter;
+       gboolean token_secret_editable = FALSE;
+       GtkTextIter iter_start, iter_end;
+       GtkTextBuffer *buffer;
+       const char *auth_type = NULL;
+       const char *protocol = NULL;
+
+       s_vpn = nm_connection_get_setting_vpn (connection);
+       if (s_vpn)
+               protocol = nm_setting_vpn_get_data_item (s_vpn, NM_OPENCONNECT_KEY_PROTOCOL);
+
+       s_vpn = NM_SETTING_VPN (nm_setting_vpn_new ());
+       g_object_set (s_vpn, NM_SETTING_VPN_SERVICE_TYPE, NM_VPN_SERVICE_TYPE_OPENCONNECT, NULL);
+
+       if (protocol)
+               nm_setting_vpn_add_data_item (s_vpn, NM_OPENCONNECT_KEY_PROTOCOL, protocol);
+
+       widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, "gateway_entry"));
+       str = (char *) gtk_entry_get_text (GTK_ENTRY (widget));
+       if (str && strlen (str))
+               nm_setting_vpn_add_data_item (s_vpn, NM_OPENCONNECT_KEY_GATEWAY, str);
+
+       widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, "proxy_entry"));
+       str = (char *) gtk_entry_get_text (GTK_ENTRY (widget));
+       if (str && strlen (str))
+               nm_setting_vpn_add_data_item (s_vpn, NM_OPENCONNECT_KEY_PROXY, str);
+
+       widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, "fsid_button"));
+       str = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON (widget))?"yes":"no";
+       nm_setting_vpn_add_data_item (s_vpn, NM_OPENCONNECT_KEY_PEM_PASSPHRASE_FSID, str);
+
+       widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, "csd_button"));
+       str = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON (widget))?"yes":"no";
+       nm_setting_vpn_add_data_item (s_vpn, NM_OPENCONNECT_KEY_CSD_ENABLE, str);
+
+       widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, "csd_wrapper_entry"));
+       str = (char *) gtk_entry_get_text (GTK_ENTRY (widget));
+       if (str && strlen (str))
+               nm_setting_vpn_add_data_item (s_vpn, NM_OPENCONNECT_KEY_CSD_WRAPPER, str);
+
+       widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, "token_mode"));
+       model = gtk_combo_box_get_model (GTK_COMBO_BOX (widget));
+       if (gtk_combo_box_get_active_iter (GTK_COMBO_BOX (widget), &iter)) {
+               gtk_tree_model_get (model, &iter, 1, &str, 3, &token_secret_editable, -1);
+               nm_setting_vpn_add_data_item (s_vpn, NM_OPENCONNECT_KEY_TOKEN_MODE, str);
+               g_free(str);
+       }
+
+       widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, "token_secret_label"));
+       gtk_widget_set_sensitive (widget, token_secret_editable);
+
+       widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, "token_secret"));
+       gtk_widget_set_sensitive (widget, token_secret_editable);
+
+       buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (widget));
+       gtk_text_buffer_get_start_iter (buffer, &iter_start);
+       gtk_text_buffer_get_end_iter (buffer, &iter_end);
+       str = (char *) gtk_text_buffer_get_text (buffer, &iter_start, &iter_end, TRUE);
+       if (str) {
+               char *src = str, *dst = str;
+
+               /* zap invalid characters */
+               for (; *src; src++)
+                       if (*src >= ' ' && *src <= '~')
+                               *(dst++) = *src;
+               *dst = 0;
+
+               if (strlen (str))
+                       nm_setting_vpn_add_secret (s_vpn, NM_OPENCONNECT_KEY_TOKEN_SECRET, str);
+       }
+
+       if (!check_validity (self, error))
+               return FALSE;
+
+       /* These are different for every login session, and should not be stored */
+       nm_setting_set_secret_flags (NM_SETTING (s_vpn), "gwcert",
+                                    NM_SETTING_SECRET_FLAG_NOT_SAVED, NULL);
+       nm_setting_set_secret_flags (NM_SETTING (s_vpn), "cookie",
+                                    NM_SETTING_SECRET_FLAG_NOT_SAVED, NULL);
+       nm_setting_set_secret_flags (NM_SETTING (s_vpn), "gateway",
+                                    NM_SETTING_SECRET_FLAG_NOT_SAVED, NULL);
+
+       /* These are purely internal data for the auth-dialog, and should be stored */
+       nm_setting_set_secret_flags (NM_SETTING (s_vpn), "xmlconfig",
+                                    NM_SETTING_SECRET_FLAG_NONE, NULL);
+       nm_setting_set_secret_flags (NM_SETTING (s_vpn), "lasthost",
+                                    NM_SETTING_SECRET_FLAG_NONE, NULL);
+       nm_setting_set_secret_flags (NM_SETTING (s_vpn), "autoconnect",
+                                    NM_SETTING_SECRET_FLAG_NONE, NULL);
+       nm_setting_set_secret_flags (NM_SETTING (s_vpn), "certsigs",
+                                    NM_SETTING_SECRET_FLAG_NONE, NULL);
+       /* Note that the auth-dialog will also store "extra" secrets for form
+          entries, depending on the arbitrary forms that we're offered by the
+          server during authentication. We can't know about those in advance,
+          but the presence of the above four is sufficient to trigger a write
+          of the new secrets, and the code in the keyfile plugin will treat the
+          absence of a flags configuration for a given secret as equivalent to
+          FLAG_NONE, and thus save our "extra" secrets too. */
+
+       auth_widget_update_connection (priv->builder, auth_type, s_vpn);
+
+       nm_connection_add_setting (connection, NM_SETTING (s_vpn));
+       return TRUE;
+}
+
+NMVpnEditor *
+nm_vpn_editor_interface_new (NMConnection *connection, GError **error)
+{
+       NMVpnEditor *object;
+       OpenconnectEditorPrivate *priv;
+       char *ui_file;
+
+       if (error)
+               g_return_val_if_fail (*error == NULL, NULL);
+
+       object = g_object_new (OPENCONNECT_TYPE_EDITOR, NULL);
+       if (!object) {
+               g_set_error (error, NMV_EDITOR_PLUGIN_ERROR, 0, "could not create openconnect object");
+               return NULL;
+       }
+
+       priv = OPENCONNECT_EDITOR_GET_PRIVATE (object);
+
+       ui_file = g_strdup_printf ("%s/%s", UIDIR, "nm-openconnect-dialog.ui");
+       priv->builder = gtk_builder_new ();
+
+       gtk_builder_set_translation_domain (priv->builder, GETTEXT_PACKAGE);
+
+       if (!gtk_builder_add_from_file (priv->builder, ui_file, error)) {
+               g_warning ("Couldn't load builder file: %s",
+                          error && *error ? (*error)->message : "(unknown)");
+               g_clear_error (error);
+               g_set_error (error, NMV_EDITOR_PLUGIN_ERROR, 0,
+                            "could not load required resources at %s", ui_file);
+               g_free (ui_file);
+               g_object_unref (object);
+               return NULL;
+       }
+       g_free (ui_file);
+
+       priv->widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, "openconnect-vbox"));
+       if (!priv->widget) {
+               g_set_error (error, NMV_EDITOR_PLUGIN_ERROR, 0, "could not load UI widget");
+               g_object_unref (object);
+               return NULL;
+       }
+       g_object_ref_sink (priv->widget);
+
+       priv->window_group = gtk_window_group_new ();
+
+       if (!init_editor_plugin (OPENCONNECT_EDITOR (object), connection, error)) {
+               g_object_unref (object);
+               return NULL;
+       }
+
+       return object;
+}
+
+static void
+dispose (GObject *object)
+{
+       OpenconnectEditor *plugin = OPENCONNECT_EDITOR (object);
+       OpenconnectEditorPrivate *priv = OPENCONNECT_EDITOR_GET_PRIVATE (plugin);
+
+       if (priv->group)
+               g_object_unref (priv->group);
+
+       if (priv->window_group)
+               g_object_unref (priv->window_group);
+
+       if (priv->widget)
+               g_object_unref (priv->widget);
+
+       if (priv->builder)
+               g_object_unref (priv->builder);
+
+       G_OBJECT_CLASS (openconnect_editor_parent_class)->dispose (object);
+}
+
+static void
+openconnect_editor_class_init (OpenconnectEditorClass *req_class)
+{
+       GObjectClass *object_class = G_OBJECT_CLASS (req_class);
+
+       g_type_class_add_private (req_class, sizeof (OpenconnectEditorPrivate));
+
+       object_class->dispose = dispose;
+}
+
+static void
+openconnect_editor_init (OpenconnectEditor *plugin)
+{
+}
+
+static void
+openconnect_editor_interface_init (NMVpnEditorInterface *iface_class)
+{
+       /* interface implementation */
+       iface_class->get_widget = get_widget;
+       iface_class->update_connection = update_connection;
+}
+
diff --git a/properties/nm-openconnect.h b/properties/nm-openconnect-editor.h
similarity index 60%
rename from properties/nm-openconnect.h
rename to properties/nm-openconnect-editor.h
index a392b73..7bca40b 100644
--- a/properties/nm-openconnect.h
+++ b/properties/nm-openconnect-editor.h
@@ -1,7 +1,5 @@
 /* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
 /***************************************************************************
- * nm-openconnect.h : GNOME UI dialogs for configuring openconnect VPN connections
- *
  * Copyright (C) 2008 Dan Williams, <dcbw redhat com>
  *
  * This program is free software; you can redistribute it and/or modify
@@ -20,29 +18,8 @@
  *
  **************************************************************************/
 
-#ifndef _NM_OPENCONNECT_H_
-#define _NM_OPENCONNECT_H_
-
-#define OPENCONNECT_TYPE_EDITOR_PLUGIN            (openconnect_editor_plugin_get_type ())
-#define OPENCONNECT_EDITOR_PLUGIN(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), 
OPENCONNECT_TYPE_EDITOR_PLUGIN, OpenconnectEditorPlugin))
-#define OPENCONNECT_EDITOR_PLUGIN_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), 
OPENCONNECT_TYPE_EDITOR_PLUGIN, OpenconnectEditorPluginClass))
-#define OPENCONNECT_IS_EDITOR_PLUGIN(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), 
OPENCONNECT_TYPE_EDITOR_PLUGIN))
-#define OPENCONNECT_IS_EDITOR_PLUGIN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), 
OPENCONNECT_TYPE_EDITOR_PLUGIN))
-#define OPENCONNECT_EDITOR_PLUGIN_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), 
OPENCONNECT_TYPE_EDITOR_PLUGIN, OpenconnectEditorPluginClass))
-
-typedef struct _OpenconnectEditorPlugin OpenconnectEditorPlugin;
-typedef struct _OpenconnectEditorPluginClass OpenconnectEditorPluginClass;
-
-struct _OpenconnectEditorPlugin {
-       GObject parent;
-};
-
-struct _OpenconnectEditorPluginClass {
-       GObjectClass parent;
-};
-
-GType openconnect_editor_plugin_get_type (void);
-
+#ifndef __NM_OPENCONNECT_EDITOR_H__
+#define __NM_OPENCONNECT_EDITOR_H__
 
 #define OPENCONNECT_TYPE_EDITOR            (openconnect_editor_get_type ())
 #define OPENCONNECT_EDITOR(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), OPENCONNECT_TYPE_EDITOR, 
OpenconnectEditor))
@@ -64,5 +41,7 @@ struct _OpenconnectEditorClass {
 
 GType openconnect_editor_get_type (void);
 
-#endif /* _NM_OPENCONNECT_H_ */
+NMVpnEditor *nm_vpn_editor_interface_new (NMConnection *connection, GError **error);
+
+#endif /* __NM_OPENCONNECT_EDITOR_H__ */
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]