Select last mod at start of launcher. Don't run download action elevated.

This commit is contained in:
Matthew Bowra-Dean
2010-11-28 23:11:34 +13:00
parent 83f67a9d48
commit ec5b9a1150
4 changed files with 33 additions and 24 deletions

View File

@@ -101,7 +101,7 @@ namespace OpenRA.Launcher
string[] args = e.Argument as string[];
string url = args[0];
string dest = args[1];
var p = UtilityProgram.CallWithAdmin("--download-url", url, dest);
var p = UtilityProgram.Call("--download-url", url, dest);
Regex r = new Regex(@"(\d{1,3})% (\d+)/(\d+) bytes");
NamedPipeClientStream pipe = new NamedPipeClientStream(".", "OpenRA.Utility", PipeDirection.In);

View File

@@ -29,7 +29,6 @@
private void InitializeComponent()
{
System.Windows.Forms.TreeNode treeNode1 = new System.Windows.Forms.TreeNode("Mods", -2, -2);
System.Windows.Forms.TreeNode treeNode2 = new System.Windows.Forms.TreeNode("Broken Mods");
this.installButton = new System.Windows.Forms.Button();
this.installModDialog = new System.Windows.Forms.OpenFileDialog();
this.treeView = new System.Windows.Forms.TreeView();
@@ -67,11 +66,8 @@
treeNode1.Name = "ModsNode";
treeNode1.SelectedImageIndex = -2;
treeNode1.Text = "Mods";
treeNode2.Name = "BrokenModsNode";
treeNode2.Text = "Broken Mods";
this.treeView.Nodes.AddRange(new System.Windows.Forms.TreeNode[] {
treeNode1,
treeNode2});
treeNode1});
this.treeView.ShowLines = false;
this.treeView.Size = new System.Drawing.Size(160, 465);
this.treeView.TabIndex = 3;

View File

@@ -27,8 +27,6 @@ namespace OpenRA.Launcher
Util.UacShield(installButton);
//treeView.Nodes["ModsNode"].ImageIndex = 1;
//treeView.Nodes["ModsNode"].SelectedImageIndex = 1;
webBrowser.ObjectForScripting = new JSBridge();
webBrowser.DocumentCompleted += (o, e) =>
{
@@ -40,12 +38,8 @@ namespace OpenRA.Launcher
Mod GetMetadata(string mod)
{
string responseString;
using (var response = UtilityProgram.Call("-i", mod))
{
responseString = response.ReadToEnd();
}
string responseString = UtilityProgram.CallSimpleResponse("-i", mod);
if (Util.IsError(ref responseString)) return null;
string[] lines = responseString.Split(new string[] { "\n" }, StringSplitOptions.RemoveEmptyEntries);
for (int i = 0; i < lines.Length; i++)
@@ -89,11 +83,7 @@ namespace OpenRA.Launcher
void RefreshMods()
{
string responseString;
using (var response = UtilityProgram.Call("--list-mods"))
{
responseString = response.ReadToEnd();
}
string responseString = UtilityProgram.CallSimpleResponse("--list-mods");
string[] mods;
if (!Util.IsError(ref responseString))
@@ -167,12 +157,23 @@ namespace OpenRA.Launcher
missing.Nodes.Add(new TreeNode(allMods[s].Title)
{ ForeColor = SystemColors.GrayText, Name = s });
}
treeView.Nodes["BrokenModsNode"].Nodes.Add(unspecified);
treeView.Nodes["BrokenModsNode"].Nodes.Add(missing);
string brokenKey = "BrokenModsNode";
if (treeView.Nodes[brokenKey] != null)
treeView.Nodes.RemoveByKey(brokenKey);
treeView.Nodes.Add(brokenKey, "Broken Mods");
treeView.Nodes[brokenKey].Nodes.Add(unspecified);
treeView.Nodes[brokenKey].Nodes.Add(missing);
}
treeView.Nodes["ModsNode"].ExpandAll();
treeView.Invalidate();
string responseString = UtilityProgram.CallSimpleResponse("--settings-value",
Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + Path.DirectorySeparatorChar + "OpenRA", "Game.Mods");
if (Util.IsError(ref responseString))
treeView.SelectedNode = treeView.Nodes["ModsNode"].Nodes["ra"];
else
treeView.SelectedNode = treeView.Nodes["ModsNode"].Nodes[responseString];
}
void treeView_AfterSelect(object sender, TreeViewEventArgs e)

View File

@@ -66,7 +66,7 @@ namespace OpenRA.Launcher
return arguments.ToString();
}
public static StreamReader Call(string command, params string[] args)
public static Process Call(string command, params string[] args)
{
Process p = new Process();
p.StartInfo.FileName = "OpenRA.Utility.exe";
@@ -76,9 +76,21 @@ namespace OpenRA.Launcher
p.Start();
return p;
}
public static string CallSimpleResponse(string command, params string[] args)
{
var p = Call(command, args);
string responseString;
NamedPipeClientStream pipe = new NamedPipeClientStream(".", "OpenRA.Utility", PipeDirection.In);
pipe.Connect();
return new StreamReader(pipe);
using (var response = new StreamReader(pipe))
{
responseString = response.ReadToEnd();
}
return responseString;
}
public static Process CallWithAdmin(string command, params string[] args)