/* vim: set tabstop=2:softtabstop=2:shiftwidth=2:noexpandtab */
// modules: Gtk

using Gtk;

namespace NeoLayoutViewer {

	public class AppStatusIcon {

		public StatusIcon trayicon;
		private Gtk.Menu menuMain;
		private NeoWindow neo_win;

		public AppStatusIcon(NeoWindow neo_win) {
			this.neo_win = neo_win;
			/* Create tray icon */
			trayicon = new StatusIcon.from_pixbuf(neo_win.get_icon());
			trayicon.set_tooltip_text ("Neo 2.0 Layout Viewer");
			trayicon.set_visible(true);

			create_menuMain();
			/* Connect popup_menu with right click */
			trayicon.popup_menu.connect(menuMain_popup);

			/* Connect main window with left click/acitvation */
			trayicon.activate.connect(()=>{this.neo_win.toggle();});
		}

		/* Create popup menu */
		public void create_menuMain() {
			menuMain = new Gtk.Menu();

#if _OLD_GTK_STOCK
			var menuAbout = new ImageMenuItem.from_stock(Stock.ABOUT, null);
			menuAbout.activate.connect(NeoLayoutViewer.about_dialog);
			menuMain.append(menuAbout);

			var menuQuit = new ImageMenuItem.from_stock(Stock.QUIT, null);
			//menuQuit.activate.connect(Gtk.main_quit);
			menuQuit.activate.connect(NeoLayoutViewer.quit);
			menuMain.append(menuQuit);

#else
			var aboutBox = new Gtk.Box (Gtk.Orientation.HORIZONTAL, 2);
			var aboutIcon = new Gtk.Image.from_icon_name( "help-about", IconSize.SMALL_TOOLBAR);
			var aboutLabel = new Gtk.Label.with_mnemonic("_About");
			var aboutMenuItem = new Gtk.MenuItem();
			aboutLabel.set_use_underline(true);
			aboutLabel.set_xalign(0.0f);
			aboutBox.pack_start(aboutIcon, false, false, 0);
			aboutBox.pack_end(aboutLabel, true, true, 0);
			aboutMenuItem.add(aboutBox);
			aboutMenuItem.activate.connect(NeoLayoutViewer.about_dialog);
			menuMain.append(aboutMenuItem);

			var quitBox = new Gtk.Box (Gtk.Orientation.HORIZONTAL, 2);
			var quitIcon = new Gtk.Image.from_icon_name( "application-exit", IconSize.SMALL_TOOLBAR);
			var quitLabel = new Gtk.Label.with_mnemonic("_QUIT");
			var quitMenuItem = new Gtk.MenuItem();
			quitLabel.set_use_underline(true);
			quitLabel.set_xalign(0.0f);
			quitBox.pack_start(quitIcon, false, false, 0);
			quitBox.pack_end(quitLabel, true, true, 0);
			quitMenuItem.add(quitBox);
			//quitMenuItem.activate.connect(Gtk.main_quit);
			quitMenuItem.activate.connect(NeoLayoutViewer.quit);
			menuMain.append(quitMenuItem);
#endif

			menuMain.show_all();
		}

		/* Show popup menu on right button */
		private void menuMain_popup(uint button, uint time) {
			menuMain.popup(null, null, null, button, time);
		}

	}

}
