public FindStation(PlayerWindow w) : base(Catalog.GetString("Find A Station"), w, DialogFlags.DestroyWithParent) { this.parentwindow = w; this.HasSeparator = false; this.SetDefaultSize (430, 290); Glade.XML glade_xml = new Glade.XML (null, "FindStation.glade", "search_contents", null); glade_xml.Autoconnect (this); this.VBox.Add (search_contents); Glade.XML similar_xml = new Glade.XML (null, "SimilarResults.glade", "similar_contents", null); similar_xml.Autoconnect (this); results_container.Add (similar_contents); Glade.XML tag_xml = new Glade.XML (null, "TagResults.glade", "tag_container", null); tag_xml.Autoconnect (this); tag_container.Visible = false; results_container.Add (tag_container); neighbour_container = new ScrolledWindow (); neighbour_view = new NeighbourView (); neighbour_view.Visible = true; TreeSelection selection = neighbour_view.Selection; selection.Changed += OnNeighbourChanged; neighbour_container.Add (neighbour_view); neighbour_container.Visible = false; results_container.Add (neighbour_container); this.AddButton (Catalog.GetString("Cancel"), ResponseType.Cancel); this.AddButton (Catalog.GetString("Change Station"), ResponseType.Ok); this.SetResponseSensitive (ResponseType.Ok, false); SetupUI (); search_button.Sensitive = false; similar_contents.Visible = false; search_contents.Visible = true; }
public static void Main(string[] args) { // Search for existing DBus server IDBusPlayer dbus_core = DetectInstanceAndDbus(); HandleDbusCommands (dbus_core, args); // If we are the only instance, start a new DBus server Console.WriteLine("Starting new Last Exit server"); try { dbus_remote = new DBusRemote(); dbus_player = new DBusPlayer(); if (dbus_player != null) { dbus_remote.RegisterObject(dbus_player, "Player"); } } catch (Exception e) { Console.Error.WriteLine (e); } string username; string password; try { Driver.SetProcessName ("last-exit"); } catch {} // Ignore exception if fail (not needed to run) Catalog.Init("last-exit", Defines.LOCALE_DIR); Application.Init("last-exit", ref args); StockIcons.Initialize (); SetDefaultWindowIcon (); config = new Config (); if (config.FirstRun) { FirstRunDialog frd = new FirstRunDialog (); int response = frd.Run (); frd.Visible = false; switch (response) { case (int) ResponseType.Reject: Gtk.Application.Quit(); Environment.Exit (0); break; case (int) ResponseType.Ok: config.Username = frd.Username; config.Password = frd.Password; break; default: break; } frd.Destroy (); config.FirstRun = false; } Driver.SetUpConfigDirectory (); //TrayIcon.ShowNotifications = config.ShowNotifications; username = config.Username; password = config.Password; // We must get a reference to the JIT's SEGV handler because // GStreamer will set its own and not restore the previous, which // will cause what should be NullReferenceExceptions to be unhandled // segfaults for the duration of the instance, as the JIT is powerless! // FIXME: http://bugzilla.gnome.org/show_bug.cgi?id=391777 IntPtr mono_jit_segv_handler = System.Runtime.InteropServices.Marshal.AllocHGlobal(512); sigaction(Mono.Unix.Native.Signum.SIGSEGV, IntPtr.Zero, mono_jit_segv_handler); connection = new FMConnection (username, password); connection.Handshake (); Scrobbler scrobbler = new Scrobbler (username, password); Playlist playlist = new Playlist (connection); player = new Player (playlist); player.SongEnded += new Player.NewSongHandler (scrobbler.Scrobble); player.NewSong += new Player.NewSongHandler (scrobbler.NowPlayingNotification); actions = new Actions (); player_window = new PlayerWindow (); if (args.Length > 0) { player_window.InitialStation = args[0]; } player_window.Run (); Application.Run (); // Reset the SEGV handle to that of the JIT again (SIGH!) sigaction(Mono.Unix.Native.Signum.SIGSEGV, mono_jit_segv_handler, IntPtr.Zero); System.Runtime.InteropServices.Marshal.FreeHGlobal(mono_jit_segv_handler); }