private void BuildMenu() { var menuBar = new Gtk.MenuBar(); var miFile = new Gtk.MenuItem("File"); var mFile = new Gtk.Menu(); var miHelp = new Gtk.MenuItem("Help"); var mHelp = new Gtk.Menu(); var miView = new Gtk.MenuItem("View"); var mView = new Gtk.Menu(); miFile.Submenu = mFile; mFile.Append(this.actQuit.CreateMenuItem()); miHelp.Submenu = mHelp; mHelp.Append(this.actAbout.CreateMenuItem()); miView.Submenu = mView; mView.Append(this.actViewBoxes.CreateMenuItem()); mView.Append(this.actViewFrames.CreateMenuItem()); mView.Append(this.actViewNotebook.CreateMenuItem()); mView.Append(this.actViewDrawing.CreateMenuItem()); menuBar.Append(miFile); menuBar.Append(miView); menuBar.Append(miHelp); this.vbMain.PackStart(menuBar, false, false, 5); }
protected void SetupUi() { var box = new Gtk.VBox(); var menu = new Gtk.MenuBar(); var fileMenu = new Gtk.Menu(); var file = new Gtk.MenuItem("File"); file.Submenu = fileMenu; menu.Append(file); var save = new Gtk.MenuItem("Save"); save.Activated += OnSaveMenuActivated; var load = new Gtk.MenuItem("Load"); load.Activated += OnLoadMenuActivated; var exit = new Gtk.MenuItem("Exit"); exit.Activated += (sender, e) => Gtk.Application.Quit(); fileMenu.Append(save); fileMenu.Append(load); fileMenu.Append(exit); box.PackStart(menu, false, false, 0); nb = new Gtk.Notebook(); nb.ShowTabs = false; nb.AppendPage(SetupOverviewPage(), new Gtk.Label("Overview")); nb.AppendPage(SetupNewNotePage(), new Gtk.Label("New")); box.PackStart(nb, true, true, 2); Add(box); }
void IPlugin.Init(object context) { reflector = context as ISolidReflector; mainWindow = reflector.GetMainWindow(); Gtk.MenuBar mainMenuBar = reflector.GetMainMenu(); reflector.OnShutDown += HandleOnShutDown; Gtk.MenuItem fileMenu = null; // Find the File menu if present foreach (Gtk.Widget w in mainMenuBar.Children) { if (w.Name == "FileAction") { fileMenu = w as Gtk.MenuItem; } } // If not present - create it if (fileMenu == null) { Gtk.Menu menu = new Gtk.Menu(); fileMenu = new Gtk.MenuItem("File"); fileMenu.Submenu = menu; mainMenuBar.Append(fileMenu); } // Setting up the Open menu item in File Gtk.MenuItem open = new Gtk.MenuItem("Open"); open.Activated += OnActivated; (fileMenu.Submenu as Gtk.Menu).Prepend(open); // Setting up the window scrollers Gtk.ScrolledWindow scrollWindow = new Gtk.ScrolledWindow(); Gtk.Viewport viewport = new Gtk.Viewport(); scrollWindow.Add(viewport); viewport.Add(assemblyTree); scrollWindow.ShowAll(); // Attaching the current dockItem in the DockFrame dockItem = mainWindow.DockFrame.AddItem("AssemblyBrowser"); dockItem.DrawFrame = true; dockItem.Label = "Assembly"; dockItem.Content = scrollWindow; LoadEnvironment(); assemblyTree.RowActivated += HandleRowActivated; assemblyTree.Realized += delegate(object sender, EventArgs e) { LoadSelectedAssembliesTreePaths(); }; }
private void BuildMenu() { //Declaramos Barra de menú var menuBar = new Gtk.MenuBar(); //Declaramos los Items que formarán parte de la barra de menú var miFile = new Gtk.MenuItem("Archivo"); var menuFile = new Gtk.Menu(); //Declarar Menu contextual desplegable para "Archivo" //Asignación de Menus como submenus de los Items miFile.Submenu = menuFile; //Vinculamos menuFile como submenu de "Archivo" menuFile.Append(this.actQuit.CreateMenuItem()); //Añadimos como Item a menuFile la acción Quit //menuView.Append(miList); menuBar.Append(miFile); this.vbMain.PackStart(menuBar, false, false, 5); }
public MainWindow() : base("Smuxi") { // restore window size / position int width, heigth; if (Frontend.FrontendConfig[Frontend.UIName + "/Interface/Width"] != null) { width = (int) Frontend.FrontendConfig[Frontend.UIName + "/Interface/Width"]; } else { width = 800; } if (Frontend.FrontendConfig[Frontend.UIName + "/Interface/Heigth"] != null) { heigth = (int) Frontend.FrontendConfig[Frontend.UIName + "/Interface/Heigth"]; } else { heigth = 600; } if (width == -1 && heigth == -1) { SetDefaultSize(800, 600); Maximize(); } else if (width == 0 && heigth == 0) { // HACK: map 0/0 to default size as it crashes on Windows :/ SetDefaultSize(800, 600); } else { SetDefaultSize(width, heigth); } int x, y; if (Frontend.FrontendConfig[Frontend.UIName + "/Interface/XPosition"] != null) { x = (int) Frontend.FrontendConfig[Frontend.UIName + "/Interface/XPosition"]; } else { x = 0; } if (Frontend.FrontendConfig[Frontend.UIName + "/Interface/YPosition"] != null) { y = (int) Frontend.FrontendConfig[Frontend.UIName + "/Interface/YPosition"]; } else { y = 0; } if (x == 0 && y == 0) { SetPosition(Gtk.WindowPosition.Center); } else { Move(x, y); } DeleteEvent += OnDeleteEvent; FocusInEvent += OnFocusInEvent; FocusOutEvent += OnFocusOutEvent; WindowStateEvent += OnWindowStateEvent; Gtk.AccelGroup agrp = new Gtk.AccelGroup(); Gtk.AccelKey akey; AddAccelGroup(agrp); // Menu _MenuBar = new Gtk.MenuBar(); Gtk.Menu menu; Gtk.MenuItem item; Gtk.ImageMenuItem image_item; // Menu - File menu = new Gtk.Menu(); item = new Gtk.MenuItem(_("_File")); item.Submenu = menu; _MenuBar.Append(item); item = new Gtk.ImageMenuItem(Gtk.Stock.Preferences, agrp); item.Activated += new EventHandler(_OnPreferencesButtonClicked); menu.Append(item); menu.Append(new Gtk.SeparatorMenuItem()); item = new Gtk.ImageMenuItem(Gtk.Stock.Quit, agrp); item.Activated += new EventHandler(_OnQuitButtonClicked); menu.Append(item); // Menu - Server menu = new Gtk.Menu(); item = new Gtk.MenuItem(_("_Server")); item.Submenu = menu; _MenuBar.Append(item); image_item = new Gtk.ImageMenuItem(_("_Quick Connect")); image_item.Image = new Gtk.Image(Gtk.Stock.Connect, Gtk.IconSize.Menu); image_item.Activated += OnServerQuickConnectButtonClicked; menu.Append(image_item); menu.Append(new Gtk.SeparatorMenuItem()); image_item = new Gtk.ImageMenuItem(Gtk.Stock.Add, agrp); image_item.Activated += OnServerAddButtonClicked; menu.Append(image_item); image_item = new Gtk.ImageMenuItem(_("_Manage")); image_item.Image = new Gtk.Image(Gtk.Stock.Edit, Gtk.IconSize.Menu); image_item.Activated += OnServerManageServersButtonClicked; menu.Append(image_item); // Menu - Chat menu = new Gtk.Menu(); item = new Gtk.MenuItem(_("_Chat")); item.Submenu = menu; _MenuBar.Append(item); _OpenChatMenuItem = new Gtk.ImageMenuItem(_("Open / Join Chat")); _OpenChatMenuItem.Image = new Gtk.Image(Gtk.Stock.Open, Gtk.IconSize.Menu); _OpenChatMenuItem.Activated += OnChatOpenChatButtonClicked; _OpenChatMenuItem.Sensitive = false; menu.Append(_OpenChatMenuItem); _FindGroupChatMenuItem = new Gtk.ImageMenuItem(_("_Find Group Chat")); _FindGroupChatMenuItem.Image = new Gtk.Image(Gtk.Stock.Find, Gtk.IconSize.Menu); _FindGroupChatMenuItem.Activated += OnChatFindGroupChatButtonClicked; _FindGroupChatMenuItem.Sensitive = false; menu.Append(_FindGroupChatMenuItem); image_item = new Gtk.ImageMenuItem(_("C_lear All Activity")); image_item.Image = new Gtk.Image(Gtk.Stock.Clear, Gtk.IconSize.Menu); image_item.Activated += OnChatClearAllActivityButtonClicked; menu.Append(image_item); menu.Append(new Gtk.SeparatorMenuItem()); image_item = new Gtk.ImageMenuItem(_("_Next Chat")); image_item.Image = new Gtk.Image(Gtk.Stock.GoForward, Gtk.IconSize.Menu); image_item.Activated += OnNextChatMenuItemActivated; akey = new Gtk.AccelKey(); akey.AccelFlags = Gtk.AccelFlags.Visible; akey.AccelMods = Gdk.ModifierType.ControlMask; akey.Key = Gdk.Key.Page_Down; image_item.AddAccelerator("activate", agrp, akey); menu.Append(image_item); image_item = new Gtk.ImageMenuItem(_("_Previous Chat")); image_item.Image = new Gtk.Image(Gtk.Stock.GoBack, Gtk.IconSize.Menu); image_item.Activated += OnPreviousChatMenuItemActivated; akey = new Gtk.AccelKey(); akey.AccelFlags = Gtk.AccelFlags.Visible; akey.AccelMods = Gdk.ModifierType.ControlMask; akey.Key = Gdk.Key.Page_Up; image_item.AddAccelerator("activate", agrp, akey); menu.Append(image_item); menu.Append(new Gtk.SeparatorMenuItem()); /* // TODO: make a radio item for each chat hotkey Gtk.RadioMenuItem radio_item; radio_item = new Gtk.RadioMenuItem(); radio_item = new Gtk.RadioMenuItem(radio_item); radio_item = new Gtk.RadioMenuItem(radio_item); menu.Append(new Gtk.SeparatorMenuItem()); */ /* image_item = new Gtk.ImageMenuItem(Gtk.Stock.Find, agrp); image_item.Activated += OnFindChatMenuItemActivated; menu.Append(image_item); item = new Gtk.MenuItem(_("Find _Next")); item.Activated += OnFindNextChatMenuItemActivated; akey = new Gtk.AccelKey(); akey.AccelFlags = Gtk.AccelFlags.Visible; akey.AccelMods = Gdk.ModifierType.ControlMask; akey.Key = Gdk.Key.G; item.AddAccelerator("activate", agrp, akey); menu.Append(item); item = new Gtk.MenuItem(_("Find _Previous")); item.Activated += OnFindPreviousChatMenuItemActivated; akey = new Gtk.AccelKey(); akey.AccelFlags = Gtk.AccelFlags.Visible; akey.AccelMods = Gdk.ModifierType.ControlMask | Gdk.ModifierType.ShiftMask; akey.Key = Gdk.Key.G; item.AddAccelerator("activate", agrp, akey); menu.Append(item); */ // ROFL: the empty code statement below is needed to keep stupid // gettext away from using all the commented code from above as // translator comment ; _OpenLogChatMenuItem = new Gtk.ImageMenuItem(_("Open Log")); _OpenLogChatMenuItem.Image = new Gtk.Image(Gtk.Stock.Open, Gtk.IconSize.Menu); _OpenLogChatMenuItem.Activated += OnOpenLogChatMenuItemActivated; _OpenLogChatMenuItem.Sensitive = false; _OpenLogChatMenuItem.NoShowAll = true; menu.Append(_OpenLogChatMenuItem); _CloseChatMenuItem = new Gtk.ImageMenuItem(Gtk.Stock.Close, agrp); _CloseChatMenuItem.Activated += OnCloseChatMenuItemActivated; menu.Append(_CloseChatMenuItem); // Menu - Engine menu = new Gtk.Menu(); item = new Gtk.MenuItem(_("_Engine")); item.Submenu = menu; _MenuBar.Append(item); item = new Gtk.MenuItem(_("_Use Local Engine")); item.Activated += new EventHandler(_OnUseLocalEngineButtonClicked); menu.Append(item); menu.Append(new Gtk.SeparatorMenuItem()); image_item = new Gtk.ImageMenuItem(_("_Add Remote Engine")); image_item.Image = new Gtk.Image(Gtk.Stock.Add, Gtk.IconSize.Menu); image_item.Activated += new EventHandler(_OnAddRemoteEngineButtonClicked); menu.Append(image_item); image_item = new Gtk.ImageMenuItem(_("_Switch Remote Engine")); image_item.Image = new Gtk.Image(Gtk.Stock.Refresh, Gtk.IconSize.Menu); image_item.Activated += new EventHandler(_OnSwitchRemoteEngineButtonClicked); menu.Append(image_item); // Menu - View menu = new Gtk.Menu(); item = new Gtk.MenuItem(_("_View")); item.Submenu = menu; _MenuBar.Append(item); item = new Gtk.CheckMenuItem(_("_Caret Mode")); item.Activated += new EventHandler(_OnCaretModeButtonClicked); akey = new Gtk.AccelKey(); akey.AccelFlags = Gtk.AccelFlags.Visible; akey.Key = Gdk.Key.F7; item.AddAccelerator("activate", agrp, akey); menu.Append(item); item = new Gtk.CheckMenuItem(_("_Browse Mode")); item.Activated += delegate { try { _Notebook.IsBrowseModeEnabled = !_Notebook.IsBrowseModeEnabled; } catch (Exception ex) { Frontend.ShowException(this, ex); } }; akey = new Gtk.AccelKey(); akey.AccelFlags = Gtk.AccelFlags.Visible; akey.Key = Gdk.Key.F8; item.AddAccelerator("activate", agrp, akey); menu.Append(item); _ShowMenuBarItem = new Gtk.CheckMenuItem(_("Show _Menubar")); _ShowMenuBarItem.Active = true; _ShowMenuBarItem.Activated += delegate { try { _MenuBar.Visible = !_MenuBar.Visible; } catch (Exception ex) { Frontend.ShowException(this, ex); } }; menu.Append(_ShowMenuBarItem); item = new Gtk.ImageMenuItem(Gtk.Stock.Fullscreen, agrp); item.Activated += delegate { try { IsFullscreen = !IsFullscreen; } catch (Exception ex) { Frontend.ShowException(this, ex); } }; akey = new Gtk.AccelKey(); akey.AccelFlags = Gtk.AccelFlags.Visible; akey.Key = Gdk.Key.F11; item.AddAccelerator("activate", agrp, akey); menu.Append(item); // Menu - Help menu = new Gtk.Menu(); item = new Gtk.MenuItem(_("_Help")); item.Submenu = menu; _MenuBar.Append(item); image_item = new Gtk.ImageMenuItem(Gtk.Stock.About, agrp); image_item.Activated += new EventHandler(_OnAboutButtonClicked); menu.Append(image_item); // TODO: network treeview _Notebook = new Notebook(); _Notebook.SwitchPage += OnNotebookSwitchPage; _ChatViewManager = new ChatViewManager(_Notebook, null); Assembly asm = Assembly.GetExecutingAssembly(); _ChatViewManager.Load(asm); _ChatViewManager.LoadAll(System.IO.Path.GetDirectoryName(asm.Location), "smuxi-frontend-gnome-*.dll"); _ChatViewManager.ChatAdded += OnChatViewManagerChatAdded; _ChatViewManager.ChatRemoved += OnChatViewManagerChatRemoved; #if GTK_SHARP_2_10 _StatusIconManager = new StatusIconManager(this, _ChatViewManager); #endif #if INDICATE_SHARP _IndicateManager = new IndicateManager(this, _ChatViewManager); #endif #if NOTIFY_SHARP _NotifyManager = new NotifyManager(this, _ChatViewManager); #endif _UI = new GnomeUI(_ChatViewManager); // HACK: Frontend.FrontendConfig out of scope _EngineManager = new EngineManager(Frontend.FrontendConfig, _UI); _Entry = new Entry(_Notebook); _ProgressBar = new Gtk.ProgressBar(); Gtk.VBox vbox = new Gtk.VBox(); vbox.PackStart(_MenuBar, false, false, 0); vbox.PackStart(_Notebook, true, true, 0); vbox.PackStart(_Entry, false, false, 0); _NetworkStatusbar = new Gtk.Statusbar(); _NetworkStatusbar.WidthRequest = 300; _NetworkStatusbar.HasResizeGrip = false; _Statusbar = new Gtk.Statusbar(); _Statusbar.HasResizeGrip = false; Gtk.HBox status_bar_hbox = new Gtk.HBox(); status_bar_hbox.Homogeneous = true; status_bar_hbox.PackStart(_NetworkStatusbar, false, true, 0); status_bar_hbox.PackStart(_Statusbar, true, true, 0); Gtk.HBox status_hbox = new Gtk.HBox(); status_hbox.PackStart(status_bar_hbox); status_hbox.PackStart(_ProgressBar, false, false, 0); vbox.PackStart(status_hbox, false, false, 0); Add(vbox); }
private void BuildMenu() { var menuBar = new Gtk.MenuBar(); var miFile = new Gtk.MenuItem( "File" ); var mFile = new Gtk.Menu(); var miHelp = new Gtk.MenuItem( "Help" ); var mHelp = new Gtk.Menu(); var miView = new Gtk.MenuItem( "View" ); var mView = new Gtk.Menu(); miFile.Submenu = mFile; mFile.Append( this.actQuit.CreateMenuItem() ); miHelp.Submenu = mHelp; mHelp.Append( this.actAbout.CreateMenuItem() ); miView.Submenu = mView; mView.Append( this.actViewBoxes.CreateMenuItem() ); mView.Append( this.actViewFrames.CreateMenuItem() ); mView.Append( this.actViewNotebook.CreateMenuItem() ); mView.Append( this.actViewDrawing.CreateMenuItem() ); menuBar.Append( miFile ); menuBar.Append( miView ); menuBar.Append( miHelp ); this.vbMain.PackStart( menuBar, false, false, 5 ); }
public App() : base("Drag And Drop Complete") { this.SetDefaultSize(250, 200); this.SetPosition(Gtk.WindowPosition.Center); this.DeleteEvent += OnTerminated; this.isChecked = false; this.sBar = new Gtk.Statusbar(); sBar.Push((uint)StatusType.NotChecked, "Not checked"); this.btnDrag = new Gtk.Button("Drag here"); Gtk.Drag.SourceSet (this.btnDrag, Gdk.ModifierType.Button1Mask | Gdk.ModifierType.Button3Mask, null, Gdk.DragAction.Copy | Gdk.DragAction.Move); this.btnDrag.DragDataGet += new Gtk.DragDataGetHandler (HandleSourceDragDataGet); this.btnDrag.DragDataDelete += new Gtk.DragDataDeleteHandler (HandleSourceDragDataDelete); // set drop label as destination this.lblDrop = new Gtk.Label("Drop here"); Gtk.Drag.DestSet(this.lblDrop, 0, null, 0); this.lblDrop.DragMotion += new Gtk.DragMotionHandler (HandleTargetDragMotion); this.lblDrop.DragDrop += new Gtk.DragDropHandler (HandleTargetDragDrop); this.lblDrop.DragDataReceived += new Gtk.DragDataReceivedHandler (this.HandleTargetDragDataReceived); this.lblDrop.DragDrop += new Gtk.DragDropHandler (this.HandleStatBarDragDrop); Gtk.MenuBar bar = new Gtk.MenuBar(); Gtk.MenuItem item = new Gtk.MenuItem("File"); Gtk.Menu menu = new Gtk.Menu(); item.Submenu = menu; bar.Append(item); // accel key Gtk.AccelGroup ag = new Gtk.AccelGroup(); this.AddAccelGroup(ag); item = new Gtk.MenuItem("Quit"); item.Activated += OnTerminated; item.AddAccelerator ("activate", ag, new Gtk.AccelKey (Gdk.Key.Q, Gdk.ModifierType.ControlMask, Gtk.AccelFlags.Visible)); menu.Append(item); Gtk.VBox vbox = new Gtk.VBox(); vbox.PackStart(bar, false, false, 0); Gtk.HBox hbox = new Gtk.HBox(); hbox.PackStart(this.btnDrag, true, true, 0); hbox.PackStart(this.lblDrop, true, true, 0); vbox.PackStart(hbox, true, true, 0); vbox.PackStart(sBar, false, false, 0); this.Add(vbox); this.ShowAll(); }
void IPlugin.Init(object context) { ISampleTool SampleTool = context as ISampleTool; DockFrame frame = SampleTool.GetMainWindow().DockFrame; Gtk.ScrolledWindow treeViewScrollWindow = new Gtk.ScrolledWindow(); Gtk.Viewport treeViewViewport = new Gtk.Viewport(); treeViewScrollWindow.Add(treeViewViewport); treeViewViewport.Add(treeView); treeViewScrollWindow.ShowAll(); Gtk.ScrolledWindow textEditorScrollWindow = new Gtk.ScrolledWindow(); Gtk.Viewport textEditorViewport = new Gtk.Viewport(); textEditorScrollWindow.Add(textEditorViewport); textEditorViewport.Add(nb); textEditorScrollWindow.ShowAll(); Gtk.TreeViewColumn col = new Gtk.TreeViewColumn(); Gtk.CellRendererText colAssemblyCell = new Gtk.CellRendererText(); col.PackStart(colAssemblyCell, true); col.AddAttribute(colAssemblyCell, "text", 0); if (treeView.GetColumn(0) != null) { treeView.Columns[0] = col; } else { treeView.AppendColumn(col); } treeView.Model = new Gtk.TreeStore(typeof(string)); treeView.Model = homeSubFolders(Environment.GetFolderPath(Environment.SpecialFolder.Personal)); treeView.RowActivated += HandleRowActivated; DockItem treeViewDock = frame.AddItem("TreeViewDock"); treeViewDock.Behavior = DockItemBehavior.Normal; treeViewDock.Expand = true; treeViewDock.DrawFrame = true; treeViewDock.Label = "Files"; treeViewDock.Content = treeViewScrollWindow; treeViewDock.DefaultVisible = true; treeViewDock.Visible = true; DockItem textEditorDock = frame.AddItem("TextEditorDock"); textEditorDock.Behavior = DockItemBehavior.Normal; textEditorDock.Expand = true; textEditorDock.DrawFrame = true; textEditorDock.Label = "Text Editor"; textEditorDock.Content = textEditorScrollWindow; textEditorDock.DefaultVisible = true; textEditorDock.Visible = true; Gtk.MenuBar mainMenuBar = SampleTool.GetMainMenu(); Gtk.MenuItem fileMenu = null; // Find the File menu if present foreach (Gtk.Widget w in mainMenuBar.Children) { if (w.Name == "FileAction") { fileMenu = w as Gtk.MenuItem; } } // If not present - create it if (fileMenu == null) { Gtk.Menu menu = new Gtk.Menu(); fileMenu = new Gtk.MenuItem("File"); fileMenu.Submenu = menu; mainMenuBar.Append(fileMenu); } // Setting up the Close menu item in File Gtk.MenuItem close = new Gtk.MenuItem("Close"); close.Activated += HandleActivated; (fileMenu.Submenu as Gtk.Menu).Prepend(close); // Setting up the Save menu item in File Gtk.MenuItem save = new Gtk.MenuItem("Save"); save.Activated += HandleSaveActivated; (fileMenu.Submenu as Gtk.Menu).Prepend(save); }
private void BuildMenu() { var accelerators = new Gtk.AccelGroup(); var mMain = new Gtk.MenuBar(); var mFile = new Gtk.Menu(); var mEdit = new Gtk.Menu(); var mView = new Gtk.Menu(); var mTools = new Gtk.Menu(); var mHelp = new Gtk.Menu(); var miFile = new Gtk.MenuItem("_File"); var miEdit = new Gtk.MenuItem("_Edit"); var miView = new Gtk.MenuItem("_View"); var miTools = new Gtk.MenuItem("_Tools"); var miHelp = new Gtk.MenuItem("_Help"); // Menu items var opNew = this.actNew.CreateMenuItem(); opNew.AddAccelerator("activate", accelerators, new Gtk.AccelKey( Gdk.Key.n, Gdk.ModifierType.ControlMask, Gtk.AccelFlags.Visible)); var opOpen = this.actOpen.CreateMenuItem(); opOpen.AddAccelerator("activate", accelerators, new Gtk.AccelKey( Gdk.Key.o, Gdk.ModifierType.ControlMask, Gtk.AccelFlags.Visible)); var opSave = this.actSave.CreateMenuItem(); opSave.AddAccelerator("activate", accelerators, new Gtk.AccelKey( Gdk.Key.s, Gdk.ModifierType.ControlMask, Gtk.AccelFlags.Visible)); var opQuit = this.actQuit.CreateMenuItem(); opQuit.AddAccelerator("activate", accelerators, new Gtk.AccelKey( Gdk.Key.q, Gdk.ModifierType.ControlMask, Gtk.AccelFlags.Visible)); var opAdd = this.actAdd.CreateMenuItem(); opAdd.AddAccelerator("activate", accelerators, new Gtk.AccelKey( Gdk.Key.plus, Gdk.ModifierType.ControlMask, Gtk.AccelFlags.Visible)); var opRemove = this.actRemove.CreateMenuItem(); opRemove.AddAccelerator("activate", accelerators, new Gtk.AccelKey( Gdk.Key.Delete, Gdk.ModifierType.None, Gtk.AccelFlags.Visible)); var opFind = this.actFind.CreateMenuItem(); opFind.AddAccelerator("activate", accelerators, new Gtk.AccelKey( Gdk.Key.f, Gdk.ModifierType.ControlMask, Gtk.AccelFlags.Visible)); var opFindAgain = this.actFindAgain.CreateMenuItem(); opFindAgain.AddAccelerator("activate", accelerators, new Gtk.AccelKey( Gdk.Key.F3, Gdk.ModifierType.None, Gtk.AccelFlags.Visible)); var opSettings = this.actSettings.CreateMenuItem(); opSettings.AddAccelerator("activate", accelerators, new Gtk.AccelKey( Gdk.Key.F2, Gdk.ModifierType.None, Gtk.AccelFlags.Visible)); var opView = new Gtk.CheckMenuItem(this.actViewCard.Label); opView.Active = true; opView.Activated += (sender, e) => this.actViewCard.Activate(); // Create menu structure mMain.Append(miFile); miFile.Submenu = mFile; mFile.Append(opNew); mFile.Append(opOpen); mFile.Append(this.actImport.CreateMenuItem()); mFile.Append(new Gtk.SeparatorMenuItem()); mFile.Append(opSave); mFile.Append(this.actExport.CreateMenuItem()); mFile.Append(new Gtk.SeparatorMenuItem()); mFile.Append(opQuit); mMain.Append(miEdit); miEdit.Submenu = mEdit; mEdit.Append(opAdd); mEdit.Append(opRemove); mEdit.Append(this.actModify.CreateMenuItem()); mEdit.Append(this.actConnect.CreateMenuItem()); mEdit.Append(new Gtk.SeparatorMenuItem()); mEdit.Append(opFind); mEdit.Append(opFindAgain); mEdit.Append(new Gtk.SeparatorMenuItem()); mEdit.Append(opSettings); mMain.Append(miView); miView.Submenu = mView; mView.Append(opView); mMain.Append(miTools); miTools.Submenu = mTools; mTools.Append(this.actSort.CreateMenuItem()); mMain.Append(miHelp); miHelp.Submenu = mHelp; mHelp.Append(this.actAbout.CreateMenuItem()); this.AddAccelGroup(accelerators); this.vbMain.PackStart(mMain, false, false, 0); }
private void BuildMenu() { var accelerators = new Gtk.AccelGroup(); var mMain = new Gtk.MenuBar(); var mFile = new Gtk.Menu(); var mEdit = new Gtk.Menu(); var mView = new Gtk.Menu(); var mTools = new Gtk.Menu(); var mHelp = new Gtk.Menu(); var miFile = new Gtk.MenuItem( "_File" ); var miEdit = new Gtk.MenuItem( "_Edit" ); var miView = new Gtk.MenuItem( "_View" ); var miTools = new Gtk.MenuItem( "_Tools" ); var miHelp = new Gtk.MenuItem( "_Help" ); // Menu items var opNew = this.actNew.CreateMenuItem(); opNew.AddAccelerator( "activate", accelerators, new Gtk.AccelKey( Gdk.Key.n, Gdk.ModifierType.ControlMask, Gtk.AccelFlags.Visible ) ); var opOpen = this.actOpen.CreateMenuItem(); opOpen.AddAccelerator( "activate", accelerators, new Gtk.AccelKey( Gdk.Key.o, Gdk.ModifierType.ControlMask, Gtk.AccelFlags.Visible ) ); var opSave = this.actSave.CreateMenuItem(); opSave.AddAccelerator( "activate", accelerators, new Gtk.AccelKey( Gdk.Key.s, Gdk.ModifierType.ControlMask, Gtk.AccelFlags.Visible ) ); var opQuit = this.actQuit.CreateMenuItem(); opQuit.AddAccelerator( "activate", accelerators, new Gtk.AccelKey( Gdk.Key.q, Gdk.ModifierType.ControlMask, Gtk.AccelFlags.Visible ) ); var opAdd = this.actAdd.CreateMenuItem(); opAdd.AddAccelerator( "activate", accelerators, new Gtk.AccelKey( Gdk.Key.plus, Gdk.ModifierType.ControlMask, Gtk.AccelFlags.Visible ) ); var opRemove = this.actRemove.CreateMenuItem(); opRemove.AddAccelerator( "activate", accelerators, new Gtk.AccelKey( Gdk.Key.Delete, Gdk.ModifierType.None, Gtk.AccelFlags.Visible ) ); var opFind = this.actFind.CreateMenuItem(); opFind.AddAccelerator( "activate", accelerators, new Gtk.AccelKey( Gdk.Key.f, Gdk.ModifierType.ControlMask, Gtk.AccelFlags.Visible ) ); var opFindAgain = this.actFindAgain.CreateMenuItem(); opFindAgain.AddAccelerator( "activate", accelerators, new Gtk.AccelKey( Gdk.Key.F3, Gdk.ModifierType.None, Gtk.AccelFlags.Visible ) ); var opSettings = this.actSettings.CreateMenuItem(); opSettings.AddAccelerator( "activate", accelerators, new Gtk.AccelKey( Gdk.Key.F2, Gdk.ModifierType.None, Gtk.AccelFlags.Visible ) ); var opView = new Gtk.CheckMenuItem( this.actViewCard.Label ); opView.Active = true; opView.Activated += (sender, e) => this.actViewCard.Activate(); // Create menu structure mMain.Append( miFile ); miFile.Submenu = mFile; mFile.Append( opNew ); mFile.Append( opOpen ); mFile.Append( this.actImport.CreateMenuItem() ); mFile.Append( new Gtk.SeparatorMenuItem() ); mFile.Append( opSave ); mFile.Append( this.actExport.CreateMenuItem() ); mFile.Append( new Gtk.SeparatorMenuItem() ); mFile.Append( opQuit ); mMain.Append( miEdit ); miEdit.Submenu = mEdit; mEdit.Append( opAdd ); mEdit.Append( opRemove ); mEdit.Append( this.actModify.CreateMenuItem() ); mEdit.Append( this.actConnect.CreateMenuItem() ); mEdit.Append( new Gtk.SeparatorMenuItem() ); mEdit.Append( opFind ); mEdit.Append( opFindAgain ); mEdit.Append( new Gtk.SeparatorMenuItem() ); mEdit.Append( opSettings ); mMain.Append( miView ); miView.Submenu = mView; mView.Append( opView ); mMain.Append( miTools ); miTools.Submenu = mTools; mTools.Append( this.actSort.CreateMenuItem() ); mMain.Append( miHelp ); miHelp.Submenu = mHelp; mHelp.Append( this.actAbout.CreateMenuItem() ); this.AddAccelGroup( accelerators ); this.vbMain.PackStart( mMain, false, false, 0 ); }
public MainWindow() : base("Smuxi") { // restore window size / position int width, heigth; if (Frontend.FrontendConfig[Frontend.UIName + "/Interface/Width"] != null) { width = (int) Frontend.FrontendConfig[Frontend.UIName + "/Interface/Width"]; } else { width = 800; } if (Frontend.FrontendConfig[Frontend.UIName + "/Interface/Heigth"] != null) { heigth = (int) Frontend.FrontendConfig[Frontend.UIName + "/Interface/Heigth"]; } else { heigth = 600; } if (width < -1 || heigth < -1) { width = -1; heigth = -1; } if (width == -1 && heigth == -1) { SetDefaultSize(800, 600); Maximize(); } else if (width == 0 && heigth == 0) { // HACK: map 0/0 to default size as it crashes on Windows :/ SetDefaultSize(800, 600); } else { SetDefaultSize(width, heigth); } int x, y; if (Frontend.FrontendConfig[Frontend.UIName + "/Interface/XPosition"] != null) { x = (int) Frontend.FrontendConfig[Frontend.UIName + "/Interface/XPosition"]; } else { x = 0; } if (Frontend.FrontendConfig[Frontend.UIName + "/Interface/YPosition"] != null) { y = (int) Frontend.FrontendConfig[Frontend.UIName + "/Interface/YPosition"]; } else { y = 0; } if (x < 0 || y < 0) { x = 0; y = 0; } if (x == 0 && y == 0) { SetPosition(Gtk.WindowPosition.Center); } else { Move(x, y); } DeleteEvent += OnDeleteEvent; FocusInEvent += OnFocusInEvent; FocusOutEvent += OnFocusOutEvent; WindowStateEvent += OnWindowStateEvent; Gtk.AccelGroup agrp = new Gtk.AccelGroup(); Gtk.AccelKey akey; AddAccelGroup(agrp); // Menu MenuBar = new Gtk.MenuBar(); Gtk.Menu menu; Gtk.MenuItem item; Gtk.ImageMenuItem image_item; // Menu - File menu = new Gtk.Menu(); item = new Gtk.MenuItem(_("_File")); item.Submenu = menu; MenuBar.Append(item); item = new Gtk.ImageMenuItem(Gtk.Stock.Preferences, agrp); item.Activated += new EventHandler(_OnPreferencesButtonClicked); item.AccelCanActivate += AccelCanActivateSensitive; menu.Append(item); menu.Append(new Gtk.SeparatorMenuItem()); item = new Gtk.ImageMenuItem(Gtk.Stock.Quit, agrp); item.Activated += new EventHandler(_OnQuitButtonClicked); item.AccelCanActivate += AccelCanActivateSensitive; menu.Append(item); // Menu - Server menu = new Gtk.Menu(); item = new Gtk.MenuItem(_("_Server")); item.Submenu = menu; MenuBar.Append(item); image_item = new Gtk.ImageMenuItem(_("_Quick Connect")); image_item.Image = new Gtk.Image(Gtk.Stock.Connect, Gtk.IconSize.Menu); image_item.Activated += OnServerQuickConnectButtonClicked; menu.Append(image_item); menu.Append(new Gtk.SeparatorMenuItem()); image_item = new Gtk.ImageMenuItem(Gtk.Stock.Add, agrp); image_item.Activated += OnServerAddButtonClicked; menu.Append(image_item); image_item = new Gtk.ImageMenuItem(_("_Manage")); image_item.Image = new Gtk.Image(Gtk.Stock.Edit, Gtk.IconSize.Menu); image_item.Activated += OnServerManageServersButtonClicked; menu.Append(image_item); // Menu - Chat menu = new Gtk.Menu(); item = new Gtk.MenuItem(_("_Chat")); item.Submenu = menu; MenuBar.Append(item); _OpenChatMenuItem = new Gtk.ImageMenuItem(_("Open / Join Chat")); _OpenChatMenuItem.Image = new Gtk.Image(Gtk.Stock.Open, Gtk.IconSize.Menu); _OpenChatMenuItem.Activated += OnOpenChatMenuItemActivated; akey = new Gtk.AccelKey(); akey.AccelFlags = Gtk.AccelFlags.Visible; akey.AccelMods = Gdk.ModifierType.ControlMask; akey.Key = Gdk.Key.L; _OpenChatMenuItem.AddAccelerator("activate", agrp, akey); _OpenChatMenuItem.AccelCanActivate += AccelCanActivateSensitive; menu.Append(_OpenChatMenuItem); _FindGroupChatMenuItem = new Gtk.ImageMenuItem(_("_Find Group Chat")); _FindGroupChatMenuItem.Image = new Gtk.Image(Gtk.Stock.Find, Gtk.IconSize.Menu); _FindGroupChatMenuItem.Activated += OnChatFindGroupChatButtonClicked; _FindGroupChatMenuItem.Sensitive = false; menu.Append(_FindGroupChatMenuItem); image_item = new Gtk.ImageMenuItem(_("C_lear All Activity")); image_item.Image = new Gtk.Image(Gtk.Stock.Clear, Gtk.IconSize.Menu); image_item.Activated += OnChatClearAllActivityButtonClicked; menu.Append(image_item); menu.Append(new Gtk.SeparatorMenuItem()); image_item = new Gtk.ImageMenuItem(_("_Next Chat")); image_item.Image = new Gtk.Image(Gtk.Stock.GoForward, Gtk.IconSize.Menu); image_item.Activated += OnNextChatMenuItemActivated; akey = new Gtk.AccelKey(); akey.AccelFlags = Gtk.AccelFlags.Visible; akey.AccelMods = Gdk.ModifierType.ControlMask; akey.Key = Gdk.Key.Page_Down; image_item.AddAccelerator("activate", agrp, akey); image_item.AccelCanActivate += AccelCanActivateSensitive; menu.Append(image_item); image_item = new Gtk.ImageMenuItem(_("_Previous Chat")); image_item.Image = new Gtk.Image(Gtk.Stock.GoBack, Gtk.IconSize.Menu); image_item.Activated += OnPreviousChatMenuItemActivated; akey = new Gtk.AccelKey(); akey.AccelFlags = Gtk.AccelFlags.Visible; akey.AccelMods = Gdk.ModifierType.ControlMask; akey.Key = Gdk.Key.Page_Up; image_item.AddAccelerator("activate", agrp, akey); image_item.AccelCanActivate += AccelCanActivateSensitive; menu.Append(image_item); menu.Append(new Gtk.SeparatorMenuItem()); /* // TODO: make a radio item for each chat hotkey Gtk.RadioMenuItem radio_item; radio_item = new Gtk.RadioMenuItem(); radio_item = new Gtk.RadioMenuItem(radio_item); radio_item = new Gtk.RadioMenuItem(radio_item); menu.Append(new Gtk.SeparatorMenuItem()); */ /* image_item = new Gtk.ImageMenuItem(Gtk.Stock.Find, agrp); image_item.Activated += OnFindChatMenuItemActivated; menu.Append(image_item); item = new Gtk.MenuItem(_("Find _Next")); item.Activated += OnFindNextChatMenuItemActivated; akey = new Gtk.AccelKey(); akey.AccelFlags = Gtk.AccelFlags.Visible; akey.AccelMods = Gdk.ModifierType.ControlMask; akey.Key = Gdk.Key.G; item.AddAccelerator("activate", agrp, akey); menu.Append(item); item = new Gtk.MenuItem(_("Find _Previous")); item.Activated += OnFindPreviousChatMenuItemActivated; akey = new Gtk.AccelKey(); akey.AccelFlags = Gtk.AccelFlags.Visible; akey.AccelMods = Gdk.ModifierType.ControlMask | Gdk.ModifierType.ShiftMask; akey.Key = Gdk.Key.G; item.AddAccelerator("activate", agrp, akey); menu.Append(item); */ // ROFL: the empty code statement below is needed to keep stupid // gettext away from using all the commented code from above as // translator comment ; _OpenLogChatMenuItem = new Gtk.ImageMenuItem(_("Open Log")); _OpenLogChatMenuItem.Image = new Gtk.Image(Gtk.Stock.Open, Gtk.IconSize.Menu); _OpenLogChatMenuItem.Activated += OnOpenLogChatMenuItemActivated; _OpenLogChatMenuItem.Sensitive = false; _OpenLogChatMenuItem.NoShowAll = true; menu.Append(_OpenLogChatMenuItem); _CloseChatMenuItem = new Gtk.ImageMenuItem(Gtk.Stock.Close, agrp); _CloseChatMenuItem.Activated += OnCloseChatMenuItemActivated; _CloseChatMenuItem.AccelCanActivate += AccelCanActivateSensitive; menu.Append(_CloseChatMenuItem); // Menu - Engine menu = new Gtk.Menu(); item = new Gtk.MenuItem(_("_Engine")); item.Submenu = menu; MenuBar.Append(item); item = new Gtk.MenuItem(_("_Use Local Engine")); item.Activated += new EventHandler(_OnUseLocalEngineButtonClicked); menu.Append(item); menu.Append(new Gtk.SeparatorMenuItem()); image_item = new Gtk.ImageMenuItem(_("_Add Remote Engine")); image_item.Image = new Gtk.Image(Gtk.Stock.Add, Gtk.IconSize.Menu); image_item.Activated += new EventHandler(_OnAddRemoteEngineButtonClicked); menu.Append(image_item); image_item = new Gtk.ImageMenuItem(_("_Switch Remote Engine")); image_item.Image = new Gtk.Image(Gtk.Stock.Refresh, Gtk.IconSize.Menu); image_item.Activated += new EventHandler(_OnSwitchRemoteEngineButtonClicked); menu.Append(image_item); // Menu - View menu = new Gtk.Menu(); item = new Gtk.MenuItem(_("_View")); item.Submenu = menu; MenuBar.Append(item); item = new Gtk.CheckMenuItem(_("_Caret Mode")); item.Activated += new EventHandler(_OnCaretModeButtonClicked); akey = new Gtk.AccelKey(); akey.AccelFlags = Gtk.AccelFlags.Visible; akey.Key = Gdk.Key.F7; item.AddAccelerator("activate", agrp, akey); item.AccelCanActivate += AccelCanActivateSensitive; menu.Append(item); item = new Gtk.CheckMenuItem(_("_Browse Mode")); item.Activated += delegate { try { _Notebook.IsBrowseModeEnabled = !_Notebook.IsBrowseModeEnabled; } catch (Exception ex) { Frontend.ShowException(this, ex); } }; akey = new Gtk.AccelKey(); akey.AccelFlags = Gtk.AccelFlags.Visible; akey.Key = Gdk.Key.F8; item.AddAccelerator("activate", agrp, akey); item.AccelCanActivate += AccelCanActivateSensitive; menu.Append(item); ShowMenuBarMenuItem = new Gtk.CheckMenuItem(_("Show _Menubar")); ShowMenuBarMenuItem.Active = (bool) Frontend.FrontendConfig["ShowMenuBar"]; ShowMenuBarMenuItem.Activated += OnShowMenuBarMenuItemActivated; menu.Append(ShowMenuBarMenuItem); ShowStatusBarMenuItem = new Gtk.CheckMenuItem(_("Show _Status Bar")); ShowStatusBarMenuItem.Active = (bool) Frontend.FrontendConfig["ShowStatusBar"]; ShowStatusBarMenuItem.Activated += OnShowStatusBarMenuItemActivated; menu.Append(ShowStatusBarMenuItem); JoinWidget = new JoinWidget(); JoinWidget.NoShowAll = true; JoinWidget.Visible = (bool) Frontend.FrontendConfig["ShowQuickJoin"]; JoinWidget.Activated += OnJoinWidgetActivated; ShowQuickJoinMenuItem = new Gtk.CheckMenuItem(_("Show _Quick Join")); ShowQuickJoinMenuItem.Active = JoinWidget.Visible; ShowQuickJoinMenuItem.Activated += OnShowQuickJoinMenuItemActivated; menu.Append(ShowQuickJoinMenuItem); item = new Gtk.ImageMenuItem(Gtk.Stock.Fullscreen, agrp); item.Activated += delegate { try { IsFullscreen = !IsFullscreen; } catch (Exception ex) { Frontend.ShowException(this, ex); } }; akey = new Gtk.AccelKey(); akey.AccelFlags = Gtk.AccelFlags.Visible; akey.Key = Gdk.Key.F11; item.AddAccelerator("activate", agrp, akey); item.AccelCanActivate += AccelCanActivateSensitive; menu.Append(item); // Menu - Help menu = new Gtk.Menu(); item = new Gtk.MenuItem(_("_Help")); item.Submenu = menu; MenuBar.Append(item); image_item = new Gtk.ImageMenuItem(Gtk.Stock.About, agrp); image_item.Activated += new EventHandler(_OnAboutButtonClicked); menu.Append(image_item); MenuBar.ShowAll(); MenuBar.NoShowAll = true; MenuBar.Visible = ShowMenuBarMenuItem.Active; // TODO: network treeview _Notebook = new Notebook(); _Notebook.SwitchPage += OnNotebookSwitchPage; _Notebook.FocusInEvent += OnNotebookFocusInEvent; _ChatViewManager = new ChatViewManager(_Notebook, null); Assembly asm = Assembly.GetExecutingAssembly(); _ChatViewManager.Load(asm); _ChatViewManager.LoadAll(System.IO.Path.GetDirectoryName(asm.Location), "smuxi-frontend-gnome-*.dll"); _ChatViewManager.ChatAdded += OnChatViewManagerChatAdded; _ChatViewManager.ChatSynced += OnChatViewManagerChatSynced; _ChatViewManager.ChatRemoved += OnChatViewManagerChatRemoved; #if GTK_SHARP_2_10 _StatusIconManager = new StatusIconManager(this, _ChatViewManager); #endif #if INDICATE_SHARP _IndicateManager = new IndicateManager(this, _ChatViewManager); #endif #if NOTIFY_SHARP _NotifyManager = new NotifyManager(this, _ChatViewManager); #endif #if IPC_DBUS _NetworkManager = new NetworkManager(_ChatViewManager); #endif _UI = new GnomeUI(_ChatViewManager); // HACK: Frontend.FrontendConfig out of scope _EngineManager = new EngineManager(Frontend.FrontendConfig, _UI); _Entry = new Entry(_ChatViewManager); var entryScrolledWindow = new Gtk.ScrolledWindow(); entryScrolledWindow.ShadowType = Gtk.ShadowType.EtchedIn; entryScrolledWindow.HscrollbarPolicy = Gtk.PolicyType.Never; entryScrolledWindow.SizeRequested += delegate(object o, Gtk.SizeRequestedArgs args) { // predict and set useful heigth var layout = _Entry.CreatePangoLayout("Qp"); int lineWidth, lineHeigth; layout.GetPixelSize(out lineHeigth, out lineHeigth); var text = Entry.Text; var newLines = text.Count(f => f == '\n'); // cap to 1-3 lines if (text.Length > 0) { newLines++; newLines = Math.Max(newLines, 1); newLines = Math.Min(newLines, 3); } else { newLines = 1; } // use text heigth + a bit extra var bestSize = new Gtk.Requisition() { Height = (lineHeigth * newLines) + 5 }; args.Requisition = bestSize; }; entryScrolledWindow.Add(_Entry); _ProgressBar = new Gtk.ProgressBar(); _ProgressBar.BarStyle = Gtk.ProgressBarStyle.Continuous; MenuHBox = new Gtk.HBox(); MenuHBox.PackStart(MenuBar, false, false, 0); MenuHBox.PackEnd(JoinWidget, false, false, 0); Gtk.VBox vbox = new Gtk.VBox(); vbox.PackStart(MenuHBox, false, false, 0); vbox.PackStart(_Notebook, true, true, 0); vbox.PackStart(entryScrolledWindow, false, false, 0); _NetworkStatusbar = new Gtk.Statusbar(); _NetworkStatusbar.WidthRequest = 300; _NetworkStatusbar.HasResizeGrip = false; _Statusbar = new Gtk.Statusbar(); _Statusbar.HasResizeGrip = false; Gtk.HBox status_bar_hbox = new Gtk.HBox(); status_bar_hbox.Homogeneous = true; status_bar_hbox.PackStart(_NetworkStatusbar, false, true, 0); status_bar_hbox.PackStart(_Statusbar, true, true, 0); StatusHBox = new Gtk.HBox(); StatusHBox.PackStart(status_bar_hbox); StatusHBox.PackStart(_ProgressBar, false, false, 0); StatusHBox.ShowAll(); StatusHBox.NoShowAll = true; StatusHBox.Visible = ShowStatusBarMenuItem.Active; vbox.PackStart(StatusHBox, false, false, 0); Add(vbox); }
public MainWindow() : base("Smuxi") { // restore window size / position int width, heigth; if (Frontend.FrontendConfig[Frontend.UIName + "/Interface/Width"] != null) { width = (int)Frontend.FrontendConfig[Frontend.UIName + "/Interface/Width"]; } else { width = 800; } if (Frontend.FrontendConfig[Frontend.UIName + "/Interface/Heigth"] != null) { heigth = (int)Frontend.FrontendConfig[Frontend.UIName + "/Interface/Heigth"]; } else { heigth = 600; } if (width < -1 || heigth < -1) { width = -1; heigth = -1; } if (width == -1 && heigth == -1) { SetDefaultSize(800, 600); Maximize(); } else if (width == 0 && heigth == 0) { // HACK: map 0/0 to default size as it crashes on Windows :/ SetDefaultSize(800, 600); } else { SetDefaultSize(width, heigth); } int x, y; if (Frontend.FrontendConfig[Frontend.UIName + "/Interface/XPosition"] != null) { x = (int)Frontend.FrontendConfig[Frontend.UIName + "/Interface/XPosition"]; } else { x = 0; } if (Frontend.FrontendConfig[Frontend.UIName + "/Interface/YPosition"] != null) { y = (int)Frontend.FrontendConfig[Frontend.UIName + "/Interface/YPosition"]; } else { y = 0; } if (x < 0 || y < 0) { x = 0; y = 0; } if (x == 0 && y == 0) { SetPosition(Gtk.WindowPosition.Center); } else { Move(x, y); } DeleteEvent += OnDeleteEvent; FocusInEvent += OnFocusInEvent; FocusOutEvent += OnFocusOutEvent; WindowStateEvent += OnWindowStateEvent; Gtk.AccelGroup agrp = new Gtk.AccelGroup(); Gtk.AccelKey akey; AddAccelGroup(agrp); // Menu _MenuBar = new Gtk.MenuBar(); Gtk.Menu menu; Gtk.MenuItem item; Gtk.ImageMenuItem image_item; // Menu - File menu = new Gtk.Menu(); item = new Gtk.MenuItem(_("_File")); item.Submenu = menu; _MenuBar.Append(item); item = new Gtk.ImageMenuItem(Gtk.Stock.Preferences, agrp); item.Activated += new EventHandler(_OnPreferencesButtonClicked); menu.Append(item); menu.Append(new Gtk.SeparatorMenuItem()); item = new Gtk.ImageMenuItem(Gtk.Stock.Quit, agrp); item.Activated += new EventHandler(_OnQuitButtonClicked); menu.Append(item); // Menu - Server menu = new Gtk.Menu(); item = new Gtk.MenuItem(_("_Server")); item.Submenu = menu; _MenuBar.Append(item); image_item = new Gtk.ImageMenuItem(_("_Quick Connect")); image_item.Image = new Gtk.Image(Gtk.Stock.Connect, Gtk.IconSize.Menu); image_item.Activated += OnServerQuickConnectButtonClicked; menu.Append(image_item); menu.Append(new Gtk.SeparatorMenuItem()); image_item = new Gtk.ImageMenuItem(Gtk.Stock.Add, agrp); image_item.Activated += OnServerAddButtonClicked; menu.Append(image_item); image_item = new Gtk.ImageMenuItem(_("_Manage")); image_item.Image = new Gtk.Image(Gtk.Stock.Edit, Gtk.IconSize.Menu); image_item.Activated += OnServerManageServersButtonClicked; menu.Append(image_item); // Menu - Chat menu = new Gtk.Menu(); item = new Gtk.MenuItem(_("_Chat")); item.Submenu = menu; _MenuBar.Append(item); _OpenChatMenuItem = new Gtk.ImageMenuItem(_("Open / Join Chat")); _OpenChatMenuItem.Image = new Gtk.Image(Gtk.Stock.Open, Gtk.IconSize.Menu); _OpenChatMenuItem.Activated += OnChatOpenChatButtonClicked; _OpenChatMenuItem.Sensitive = false; menu.Append(_OpenChatMenuItem); _FindGroupChatMenuItem = new Gtk.ImageMenuItem(_("_Find Group Chat")); _FindGroupChatMenuItem.Image = new Gtk.Image(Gtk.Stock.Find, Gtk.IconSize.Menu); _FindGroupChatMenuItem.Activated += OnChatFindGroupChatButtonClicked; _FindGroupChatMenuItem.Sensitive = false; menu.Append(_FindGroupChatMenuItem); image_item = new Gtk.ImageMenuItem(_("C_lear All Activity")); image_item.Image = new Gtk.Image(Gtk.Stock.Clear, Gtk.IconSize.Menu); image_item.Activated += OnChatClearAllActivityButtonClicked; menu.Append(image_item); menu.Append(new Gtk.SeparatorMenuItem()); image_item = new Gtk.ImageMenuItem(_("_Next Chat")); image_item.Image = new Gtk.Image(Gtk.Stock.GoForward, Gtk.IconSize.Menu); image_item.Activated += OnNextChatMenuItemActivated; akey = new Gtk.AccelKey(); akey.AccelFlags = Gtk.AccelFlags.Visible; akey.AccelMods = Gdk.ModifierType.ControlMask; akey.Key = Gdk.Key.Page_Down; image_item.AddAccelerator("activate", agrp, akey); menu.Append(image_item); image_item = new Gtk.ImageMenuItem(_("_Previous Chat")); image_item.Image = new Gtk.Image(Gtk.Stock.GoBack, Gtk.IconSize.Menu); image_item.Activated += OnPreviousChatMenuItemActivated; akey = new Gtk.AccelKey(); akey.AccelFlags = Gtk.AccelFlags.Visible; akey.AccelMods = Gdk.ModifierType.ControlMask; akey.Key = Gdk.Key.Page_Up; image_item.AddAccelerator("activate", agrp, akey); menu.Append(image_item); menu.Append(new Gtk.SeparatorMenuItem()); /* * // TODO: make a radio item for each chat hotkey * Gtk.RadioMenuItem radio_item; * radio_item = new Gtk.RadioMenuItem(); * radio_item = new Gtk.RadioMenuItem(radio_item); * radio_item = new Gtk.RadioMenuItem(radio_item); * * menu.Append(new Gtk.SeparatorMenuItem()); */ /* * image_item = new Gtk.ImageMenuItem(Gtk.Stock.Find, agrp); * image_item.Activated += OnFindChatMenuItemActivated; * menu.Append(image_item); * * item = new Gtk.MenuItem(_("Find _Next")); * item.Activated += OnFindNextChatMenuItemActivated; * akey = new Gtk.AccelKey(); * akey.AccelFlags = Gtk.AccelFlags.Visible; * akey.AccelMods = Gdk.ModifierType.ControlMask; * akey.Key = Gdk.Key.G; * item.AddAccelerator("activate", agrp, akey); * menu.Append(item); * * item = new Gtk.MenuItem(_("Find _Previous")); * item.Activated += OnFindPreviousChatMenuItemActivated; * akey = new Gtk.AccelKey(); * akey.AccelFlags = Gtk.AccelFlags.Visible; * akey.AccelMods = Gdk.ModifierType.ControlMask | Gdk.ModifierType.ShiftMask; * akey.Key = Gdk.Key.G; * item.AddAccelerator("activate", agrp, akey); * menu.Append(item); */ // ROFL: the empty code statement below is needed to keep stupid // gettext away from using all the commented code from above as // translator comment ; _OpenLogChatMenuItem = new Gtk.ImageMenuItem(_("Open Log")); _OpenLogChatMenuItem.Image = new Gtk.Image(Gtk.Stock.Open, Gtk.IconSize.Menu); _OpenLogChatMenuItem.Activated += OnOpenLogChatMenuItemActivated; _OpenLogChatMenuItem.Sensitive = false; _OpenLogChatMenuItem.NoShowAll = true; menu.Append(_OpenLogChatMenuItem); _CloseChatMenuItem = new Gtk.ImageMenuItem(Gtk.Stock.Close, agrp); _CloseChatMenuItem.Activated += OnCloseChatMenuItemActivated; menu.Append(_CloseChatMenuItem); // Menu - Engine menu = new Gtk.Menu(); item = new Gtk.MenuItem(_("_Engine")); item.Submenu = menu; _MenuBar.Append(item); item = new Gtk.MenuItem(_("_Use Local Engine")); item.Activated += new EventHandler(_OnUseLocalEngineButtonClicked); menu.Append(item); menu.Append(new Gtk.SeparatorMenuItem()); image_item = new Gtk.ImageMenuItem(_("_Add Remote Engine")); image_item.Image = new Gtk.Image(Gtk.Stock.Add, Gtk.IconSize.Menu); image_item.Activated += new EventHandler(_OnAddRemoteEngineButtonClicked); menu.Append(image_item); image_item = new Gtk.ImageMenuItem(_("_Switch Remote Engine")); image_item.Image = new Gtk.Image(Gtk.Stock.Refresh, Gtk.IconSize.Menu); image_item.Activated += new EventHandler(_OnSwitchRemoteEngineButtonClicked); menu.Append(image_item); // Menu - View menu = new Gtk.Menu(); item = new Gtk.MenuItem(_("_View")); item.Submenu = menu; _MenuBar.Append(item); item = new Gtk.CheckMenuItem(_("_Caret Mode")); item.Activated += new EventHandler(_OnCaretModeButtonClicked); akey = new Gtk.AccelKey(); akey.AccelFlags = Gtk.AccelFlags.Visible; akey.Key = Gdk.Key.F7; item.AddAccelerator("activate", agrp, akey); menu.Append(item); item = new Gtk.CheckMenuItem(_("_Browse Mode")); item.Activated += delegate { try { _Notebook.IsBrowseModeEnabled = !_Notebook.IsBrowseModeEnabled; } catch (Exception ex) { Frontend.ShowException(this, ex); } }; akey = new Gtk.AccelKey(); akey.AccelFlags = Gtk.AccelFlags.Visible; akey.Key = Gdk.Key.F8; item.AddAccelerator("activate", agrp, akey); menu.Append(item); _ShowMenuBarItem = new Gtk.CheckMenuItem(_("Show _Menubar")); _ShowMenuBarItem.Active = true; _ShowMenuBarItem.Activated += delegate { try { _MenuBar.Visible = !_MenuBar.Visible; } catch (Exception ex) { Frontend.ShowException(this, ex); } }; menu.Append(_ShowMenuBarItem); item = new Gtk.ImageMenuItem(Gtk.Stock.Fullscreen, agrp); item.Activated += delegate { try { IsFullscreen = !IsFullscreen; } catch (Exception ex) { Frontend.ShowException(this, ex); } }; akey = new Gtk.AccelKey(); akey.AccelFlags = Gtk.AccelFlags.Visible; akey.Key = Gdk.Key.F11; item.AddAccelerator("activate", agrp, akey); menu.Append(item); // Menu - Help menu = new Gtk.Menu(); item = new Gtk.MenuItem(_("_Help")); item.Submenu = menu; _MenuBar.Append(item); image_item = new Gtk.ImageMenuItem(Gtk.Stock.About, agrp); image_item.Activated += new EventHandler(_OnAboutButtonClicked); menu.Append(image_item); // TODO: network treeview _Notebook = new Notebook(); _Notebook.SwitchPage += OnNotebookSwitchPage; _ChatViewManager = new ChatViewManager(_Notebook, null); Assembly asm = Assembly.GetExecutingAssembly(); _ChatViewManager.Load(asm); _ChatViewManager.LoadAll(System.IO.Path.GetDirectoryName(asm.Location), "smuxi-frontend-gnome-*.dll"); _ChatViewManager.ChatAdded += OnChatViewManagerChatAdded; _ChatViewManager.ChatSynced += OnChatViewManagerChatSynced; _ChatViewManager.ChatRemoved += OnChatViewManagerChatRemoved; #if GTK_SHARP_2_10 _StatusIconManager = new StatusIconManager(this, _ChatViewManager); #endif #if INDICATE_SHARP _IndicateManager = new IndicateManager(this, _ChatViewManager); #endif #if NOTIFY_SHARP _NotifyManager = new NotifyManager(this, _ChatViewManager); #endif #if IPC_DBUS _NetworkManager = new NetworkManager(_ChatViewManager); #endif _UI = new GnomeUI(_ChatViewManager); // HACK: Frontend.FrontendConfig out of scope _EngineManager = new EngineManager(Frontend.FrontendConfig, _UI); _Entry = new Entry(_ChatViewManager); _ProgressBar = new Gtk.ProgressBar(); _ProgressBar.BarStyle = Gtk.ProgressBarStyle.Continuous; Gtk.VBox vbox = new Gtk.VBox(); vbox.PackStart(_MenuBar, false, false, 0); vbox.PackStart(_Notebook, true, true, 0); vbox.PackStart(_Entry, false, false, 0); _NetworkStatusbar = new Gtk.Statusbar(); _NetworkStatusbar.WidthRequest = 300; _NetworkStatusbar.HasResizeGrip = false; _Statusbar = new Gtk.Statusbar(); _Statusbar.HasResizeGrip = false; Gtk.HBox status_bar_hbox = new Gtk.HBox(); status_bar_hbox.Homogeneous = true; status_bar_hbox.PackStart(_NetworkStatusbar, false, true, 0); status_bar_hbox.PackStart(_Statusbar, true, true, 0); Gtk.HBox status_hbox = new Gtk.HBox(); status_hbox.PackStart(status_bar_hbox); status_hbox.PackStart(_ProgressBar, false, false, 0); vbox.PackStart(status_hbox, false, false, 0); Add(vbox); }