diff --git a/Programs/GridProxyGUI/MainWindow.Persistance.cs b/Programs/GridProxyGUI/MainWindow.Persistance.cs index 874d3d90..0d26ff40 100755 --- a/Programs/GridProxyGUI/MainWindow.Persistance.cs +++ b/Programs/GridProxyGUI/MainWindow.Persistance.cs @@ -6,11 +6,12 @@ using System.IO; using System.IO.Compression; using System.Text; using System.Net; - +using System.Collections.Generic; public partial class MainWindow { string SessionFileName; + List LoginServers = new List(); void LoadSavedSettings() { @@ -45,10 +46,63 @@ public partial class MainWindow } catch { } cbListen.Active = selected; + + if (Options.Instance["login_servers"] is OSDArray) + { + var servers = (OSDArray)Options.Instance["login_servers"]; + for (int i = 0; i < servers.Count; i++) + { + LoginServers.Add(servers[i]); + } + } + + if (LoginServers.Count < 3) + { + LoginServers.Add("https://login.agni.lindenlab.com/cgi-bin/login.cgi"); + LoginServers.Add("https://login.aditi.lindenlab.com/cgi-bin/login.cgi"); + LoginServers.Add("http://login.osgrid.org/"); + } + + foreach (var server in LoginServers) + { + cbLoginURL.AppendText(server); + } + + selected = Options.Instance["selected_login_server"]; + + if (selected >= 0 && selected < LoginServers.Count) + { + cbLoginURL.Active = selected; + } + } void SaveSettings() { + var currentServer = cbLoginURL.ActiveText.Trim(); + Uri uriResult; + if (Uri.TryCreate(currentServer, UriKind.Absolute, out uriResult) + && (uriResult.Scheme == Uri.UriSchemeHttp || uriResult.Scheme == Uri.UriSchemeHttps) + && !LoginServers.Contains(currentServer)) + { + LoginServers.Add(currentServer); + Options.Instance["selected_login_server"] = LoginServers.Count - 1; + } + else + { + Options.Instance["selected_login_server"] = cbLoginURL.Active; + } + + if (LoginServers.Count > 0) + { + OSDArray loginServers = new OSDArray(); + foreach (var s in LoginServers) + { + loginServers.Add(s); + } + Options.Instance["login_servers"] = loginServers; + } + Options.Instance["listed_address"] = cbListen.ActiveText; Options.Instance["main_split_pos"] = mainSplit.Position; int x, y; diff --git a/Programs/GridProxyGUI/gtk-gui/MainWindow.cs b/Programs/GridProxyGUI/gtk-gui/MainWindow.cs index 8ff9b33d..d18ff1f8 100755 --- a/Programs/GridProxyGUI/gtk-gui/MainWindow.cs +++ b/Programs/GridProxyGUI/gtk-gui/MainWindow.cs @@ -206,12 +206,8 @@ public partial class MainWindow w9.Fill = false; // Container child hboxMenu.Gtk.Box+BoxChild this.cbLoginURL = global::Gtk.ComboBoxEntry.NewText (); - this.cbLoginURL.AppendText (global::Mono.Unix.Catalog.GetString ("https://login.agni.lindenlab.com/cgi-bin/login.cgi")); - this.cbLoginURL.AppendText (global::Mono.Unix.Catalog.GetString ("https://login.aditi.lindenlab.com/cgi-bin/login.cgi")); - this.cbLoginURL.AppendText (global::Mono.Unix.Catalog.GetString ("http://login.orgrid.org/")); this.cbLoginURL.WidthRequest = 300; this.cbLoginURL.Name = "cbLoginURL"; - this.cbLoginURL.Active = 0; this.hboxMenu.Add (this.cbLoginURL); global::Gtk.Box.BoxChild w10 = ((global::Gtk.Box.BoxChild)(this.hboxMenu [this.cbLoginURL])); w10.Position = 7; diff --git a/Programs/GridProxyGUI/gtk-gui/gui.stetic b/Programs/GridProxyGUI/gtk-gui/gui.stetic index dc1d3b81..c40292f5 100644 --- a/Programs/GridProxyGUI/gtk-gui/gui.stetic +++ b/Programs/GridProxyGUI/gtk-gui/gui.stetic @@ -126,7 +126,7 @@ 120 True - + 3 @@ -180,10 +180,7 @@ 300 True - https://login.agni.lindenlab.com/cgi-bin/login.cgi -https://login.aditi.lindenlab.com/cgi-bin/login.cgi -http://login.orgrid.org/ - 0 + 7