[Gtk-sharp-list] Check Process state in an GUI app
hellboy195
hellboy195 at gmail.com
Mon Jan 21 14:34:10 EST 2008
Chris Howie-3 wrote:
>
> On Jan 21, 2008 1:26 PM, hellboy195 <hellboy195 at gmail.com> wrote:
>> Hi,
>> thank you very much for your help. I tried both of you methods and it's
>> working really great but there is one thing left I that should work. With
>> my
>> old (buggy) version the Files from the Treeview were removed
>> automatically
>> when the encoding was finshed. That means. I have a treeview with let's
>> say
>> 3 titels and after the first title is finished with encoding it should be
>> removed to only 2 are remaining and so on ...
>> Any chance that I can manage it like in the past with?
>>
>> this.menuListStore.GetIterFirst(out iter);
>> this.menuListStore.Remove(ref iter);
>
> You still can, you just need to do this from the GUI thread. We will
> need more information about the circumstances you are doing this under
> to help. Can you paste your code?
>
> --
> Chris Howie
> http://www.chrishowie.com
> http://en.wikipedia.org/wiki/User:Crazycomputers
> _______________________________________________
> Gtk-sharp-list maillist - Gtk-sharp-list at lists.ximian.com
> http://lists.ximian.com/mailman/listinfo/gtk-sharp-list
>
>
Sure, no problem. Though I don't know if I should post the whole one ore not
^^. anyway. here it is :
protected virtual void OnCovertClicked (object sender, System.EventArgs e)
{
try
{
this.SelectFolder.Sensitive = false;
this.FileAdd.Sensitive = false;
this.RemoveFile.Sensitive = false;
this.ClearAll.Sensitive = false;
this.entry1.Sensitive = false;
this.combobox1.Sensitive = false;
this.combobox2.Sensitive = false;
this.menubar1.Sensitive = false;
selectedFile = String.Empty;
newselectedFile = String.Empty;
oldselectedFile = String.Empty;
while(this.menuListStore.GetIterFirst(out iter) != false)
{
format = this.combobox1.ActiveText;
quality = this.combobox2.ActiveText;
iter = new TreeIter();
menuListStore.GetIterFirst(out iter);
selectedFile = (string)menuListStore.GetValue(iter, 0);
if(selectedFile.Substring(selectedFile.Length -4) == "flac") number+=1;
oldselectedFile =
selectedFile.Replace(selectedFile.Substring(selectedFile.Length - number),
format);
selectedFile = selectedFile.Replace(" ", "\\ ");
newselectedFile =
selectedFile.Replace(selectedFile.Substring(selectedFile.Length - number),
format);
if(selectedFile.Substring(selectedFile.Length -4) == "flac") number-=1;
string command = "ffmpeg -y -i " + selectedFile + " -ab " +
quality.Replace("b/s", " ") + newselectedFile;
if (System.IO.File.Exists(oldselectedFile))
{
MessageDialog md = new MessageDialog (this,
DialogFlags.DestroyWithParent,
MessageType.Question,
ButtonsType.YesNo, newselectedFile + "
already exits. Overwrite it?");
ResponseType result = (ResponseType)md.Run ();
if (result == ResponseType.Yes)
{
md.Destroy();
this.Convert.Sensitive = false;
proc = Process.Start(command);
}
else
{
this.FileAdd.Sensitive = true;
this.Convert.Sensitive = false;
md.Destroy();
}
}
else
{
this.Convert.Sensitive = false;
proc = Process.Start(command);
}
this.menuListStore.GetIterFirst(out iter);
this.menuListStore.Remove(ref iter);
}
// GLib.Idle.Add(delegate {
// if (proc.HasExited) {
//
// MessageDialog mdg = new MessageDialog(this,
DialogFlags.DestroyWithParent, MessageType.Info, ButtonsType.Ok, "Encoding
finished");
// mdg.Run();
// mdg.Destroy();
//
// return false; // Remove this delegate from the idle list.
// }
//
// return true; // Run this delegate again when idle.
//});
proc.EnableRaisingEvents = true;
proc.Exited += delegate {
Application.Invoke(delegate {
MessageDialog mdg = new MessageDialog(this,
DialogFlags.DestroyWithParent, MessageType.Info, ButtonsType.Ok, "Encoding
finished");
mdg.Run();
mdg.Destroy();
});
};
this.FileAdd.Sensitive = true;
this.Convert.Sensitive = false;
this.SelectFolder.Sensitive = true;
this.entry1.Sensitive = true;
this.combobox1.Sensitive = true;
this.combobox2.Sensitive = true;
this.menubar1.Sensitive = true;
}
catch(Exception ee)
{
Console.WriteLine(ee);
}
}
In my eyes it's very ugly code and beside my problem here I would appreciate
any suggestions ;)
Thx :D
--
View this message in context: http://www.nabble.com/Check-Process-state-in-an-GUI-app-tp14982013p15004614.html
Sent from the Mono - Gtk# mailing list archive at Nabble.com.
More information about the Gtk-sharp-list
mailing list