2017-09-23 14:38:43 +00:00
using System ;
using System.Diagnostics ;
using System.IO ;
using Microsoft.Win32 ;
using MonoDevelop.Ide.Desktop ;
namespace MonoDevelop.GtkSharp.Addin
{
public class GladeDesktopApplication : DesktopApplication
{
2017-09-23 14:56:25 +00:00
private static readonly string s_unixgladeapp ;
static GladeDesktopApplication ( )
{
try
{
var assembly = typeof ( GladeDesktopApplication ) . Assembly . Location ;
var gladesh = Path . Combine ( Path . GetDirectoryName ( assembly ) , "glade.sh" ) ;
s_unixgladeapp = "-c '" + File . ReadAllText ( gladesh ) + "'" ;
}
catch ( Exception ex )
{
Console . WriteLine ( ex ) ;
}
}
2017-09-23 14:38:43 +00:00
private readonly string _filename ;
public GladeDesktopApplication ( string filename ) : base ( "GladeApp" , "Glade" , true )
{
_filename = filename ;
}
public override void Launch ( params string [ ] files )
{
try
{
var process = new Process ( ) ;
if ( Environment . OSVersion . Platform = = PlatformID . Win32NT )
{
var location = Registry . GetValue ( @"HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\GNOME Foundation Glade Interface Designer" , "InstallLocation" , "" ) ;
if ( location ! = null )
{
process . StartInfo . FileName = Path . Combine ( location . ToString ( ) , "bin" , "glade.exe" ) ;
process . StartInfo . Arguments = _filename ;
}
}
else
{
process . StartInfo . FileName = "bash" ;
process . StartInfo . Arguments = s_unixgladeapp . Replace ( "$@" , _filename ) ;
}
if ( ! string . IsNullOrEmpty ( process . StartInfo . FileName ) )
process . Start ( ) ;
}
catch ( Exception ex )
{
Console . WriteLine ( ex ) ;
}
}
}
}