public override bool Load() { dataBook = (DataBook)GetDataBook(mainWindow); widget = new Infobar(dataBook); widget.Visible = true; Services.UI.Info = widget; ((VBox)mainWindow.Child).PackEnd(widget, false, false, 0); AddMenuItems(uiManager); dataBook.PageAdded += new DataView.DataViewEventHandler(OnDataViewAdded); dataBook.Removed += new RemovedHandler(OnDataViewRemoved); dataBook.SwitchPage += new SwitchPageHandler(OnSwitchPage); PreferencesChangedHandler handler = new PreferencesChangedHandler(OnPreferencesChanged); Preferences.Proxy.Subscribe("View.Statusbar.Show", "ib1", handler); Preferences.Proxy.Subscribe("View.Statusbar.Selection", "ib1", handler); Preferences.Proxy.Subscribe("View.Statusbar.Overwrite", "ib1", handler); Preferences.Proxy.Subscribe("View.Statusbar.Offset", "ib1", handler); loaded = true; return(true); }
///<summary>Create a DataView</summary> public DataView() { dvControl = new DataViewControl(this); dvDisplay = new DataViewDisplay(this); dvDisplay.Control = dvControl; dvControl.Display = dvDisplay; // initialize clipdata buffer // and clipboard clipdata = new byte[0]; clipboard = Gtk.Clipboard.Get(Gdk.Atom.Intern("CLIPBOARD", true)); // initialize undo/redo cursor offset stacks cursorUndoDeque = new Deque <CursorState>(); cursorRedoDeque = new Deque <CursorState>(); prefID = "dv" + this.GetHashCode().ToString(); PreferencesChangedHandler handler = new PreferencesChangedHandler(OnPreferencesChanged); Preferences.Proxy.Subscribe("Undo.Limited", prefID, handler); Preferences.Proxy.Subscribe("Undo.Actions", prefID, handler); Preferences.Proxy.Subscribe("Highlight.PatternMatch", prefID, handler); Preferences.Proxy.Subscribe("ByteBuffer.TempDir", prefID, handler); }
public void Subscribe(string pref, string id, PreferencesChangedHandler handler) { if (!prefSubscribers.Contains(pref)) prefSubscribers[pref] = new Hashtable(); (prefSubscribers[pref] as Hashtable).Add(id, handler); }
public void Subscribe(string pref, string id, PreferencesChangedHandler handler) { if (!prefSubscribers.Contains(pref)) { prefSubscribers[pref] = new Hashtable(); } (prefSubscribers[pref] as Hashtable).Add(id, handler); }
public void Subscribe(string pref, string id, PreferencesChangedHandler handler) { if (!prefSubscribers.Contains(pref)) { prefSubscribers[pref] = new Hashtable(); } Hashtable hashtable = prefSubscribers[pref] as Hashtable; if (hashtable != null) { hashtable.Add(id, handler); } }
public void Change(string pref, string val, string id) { if (_enable == false) { return; } if (currentlyHandling.Contains(pref)) { return; } if (id != "__Preferences__") { prefs.SetWithoutNotify(pref, val); } if (!prefSubscribers.Contains(pref)) { return; } currentlyHandling.Add(pref, null); Hashtable subscribers = prefSubscribers[pref] as Hashtable; if (subscribers != null) { foreach (DictionaryEntry subscriber in subscribers) { if ((subscriber.Key as string) != id) { PreferencesChangedHandler preferencesChangedHandler = subscriber.Value as PreferencesChangedHandler; if (preferencesChangedHandler != null) { preferencesChangedHandler(prefs); } } } } currentlyHandling.Remove(pref); }
public Infobar(DataBook db) { dataBook = db; MessageLabel = new Label(); MessageLabel.Ellipsize = Pango.EllipsizeMode.End; MessageLabel.SetAlignment(0.0f, 0.5f); OffsetLabel = new Label(); SelectionLabel = new Label(); OverwriteLabel = new Label(); EventBox OffsetEB = new EventBox(); OffsetEB.Add(OffsetLabel); OffsetEB.ButtonPressEvent += ChangeNumberBase; EventBox SelectionEB = new EventBox(); SelectionEB.Add(SelectionLabel); SelectionEB.ButtonPressEvent += ChangeNumberBase; EventBox OverwriteEB = new EventBox(); OverwriteEB.Add(OverwriteLabel); OverwriteEB.ButtonPressEvent += OnOverwriteLabelPressed; this.PackStart(MessageLabel, true, true, 20); this.PackStart(OffsetEB, false, false, 20); this.PackStart(SelectionEB, false, false, 20); this.PackStart(OverwriteEB, false, false, 20); this.NumberBase = 16; PreferencesChangedHandler handler = new PreferencesChangedHandler(OnPreferencesChanged); Preferences.Proxy.Subscribe("View.Statusbar.Show", "ib2", handler); Preferences.Proxy.Subscribe("View.Statusbar.Selection", "ib2", handler); Preferences.Proxy.Subscribe("View.Statusbar.Overwrite", "ib2", handler); Preferences.Proxy.Subscribe("View.Statusbar.Offset", "ib2", handler); this.ShowAll(); }
public BlessMain(string[] args) { Application.Init(); // Catalog.Init(ConfigureDefines.GETTEXT_PACKAGE, ConfigureDefines.LOCALE_DIR); // load main window from glade XML Glade.XML gxml = new Glade.XML(FileResourcePath.GetDataPath("bless.glade"), "MainWindow", "bless"); gxml.Autoconnect(this); // set the application icon MainWindow.Icon = new Gdk.Pixbuf(FileResourcePath.GetDataPath("bless-48x48.png")); string blessConfDir = FileResourcePath.GetUserPath(); // make sure local configuration directory exists try { if (!Directory.Exists(blessConfDir)) { Directory.CreateDirectory(blessConfDir); } } catch (Exception ex) { ErrorAlert ea = new ErrorAlert(Catalog.GetString("Cannot create user configuration directory"), ex.Message + Catalog.GetString("\n\nSome features of Bless may not work properly."), MainWindow); ea.Run(); ea.Destroy(); } Preferences.Proxy.Enable = false; // load default preferences Preferences.Default.Load(FileResourcePath.GetDataPath("default-preferences.xml")); Preferences.Default["Default.Layout.File"] = FileResourcePath.GetDataPath("bless-default.layout"); // load user preferences LoadPreferences(Path.Combine(blessConfDir, "preferences.xml")); Preferences.Instance.AutoSavePath = Path.Combine(blessConfDir, "preferences.xml"); // add the (empty) Menubar and toolbar uiManager = new UIManager(); MainWindow.AddAccelGroup(uiManager.AccelGroup); uiManager.AddUiFromString(uiXml); actionEntries = new ActionEntry[] { new ActionEntry("File", null, Catalog.GetString("_File"), null, null, null), new ActionEntry("Edit", null, Catalog.GetString("_Edit"), null, null, null), new ActionEntry("View", null, Catalog.GetString("_View"), null, null, null), new ActionEntry("Search", null, Catalog.GetString("_Search"), null, null, null), new ActionEntry("Tools", null, Catalog.GetString("_Tools"), null, null, null), new ActionEntry("Help", null, Catalog.GetString("_Help"), null, null, null) }; ActionGroup group = new ActionGroup("MainMenuActions"); group.Add(actionEntries); group.Add(new ToggleActionEntry[] { new ToggleActionEntry("ToolbarAction", null, Catalog.GetString("Toolbar"), null, null, new EventHandler(OnViewToolbarToggled), false) }); uiManager.InsertActionGroup(group, 0); Widget mb = uiManager.GetWidget("/menubar"); MainVBox.PackStart(mb, false, false, 0); MainVBox.ReorderChild(mb, 0); Widget tb = uiManager.GetWidget("/toolbar"); tb.Visible = false; MainVBox.PackStart(tb, false, false, 0); MainVBox.ReorderChild(tb, 1); // create the DataBook dataBook = new DataBook(); dataBook.PageAdded += new DataView.DataViewEventHandler(OnDataViewAdded); dataBook.Removed += new RemovedHandler(OnDataViewRemoved); dataBook.SwitchPage += new SwitchPageHandler(OnSwitchPage); DataViewBox.PackStart(dataBook); // create the widget groups that hold utility widgets WidgetGroup widgetGroup0 = new WidgetGroup(); WidgetGroup widgetGroup1 = new WidgetGroup(); WidgetGroup sideWidgetGroup0 = new WidgetGroup(); WidgetGroup sideWidgetGroup1 = new WidgetGroup(); widgetGroup0.Show(); widgetGroup1.Show(); sideWidgetGroup0.Show(); sideWidgetGroup1.Show(); MainVBox.PackStart(widgetGroup0, false, false, 0); MainVBox.ReorderChild(widgetGroup0, 3); MainVBox.PackStart(widgetGroup1, false, false, 0); MainVBox.ReorderChild(widgetGroup1, 4); DataViewBox.PackStart(sideWidgetGroup0, false, false, 0); DataViewBox.ReorderChild(sideWidgetGroup0, 0); DataViewBox.PackEnd(sideWidgetGroup1, false, false, 0); //MainVBox.ReorderChild(widgetGroup1, 4); Services.File = new FileService(dataBook, MainWindow); Services.Session = new SessionService(dataBook, MainWindow); Services.UI = new UIService(uiManager); //Services.Info=new InfoService(infobar); // Add area plugins PluginManager.AddForType(typeof(AreaPlugin), new object[0]); PluginManager areaPlugins = PluginManager.GetForType(typeof(AreaPlugin)); Area.InitiatePluginTable(); foreach (AreaPlugin p in areaPlugins.Plugins) { Area.AddFactoryItem(p.Name, p.CreateArea); } // Load GUI plugins PluginManager.AddForType(typeof(GuiPlugin), new object[] { MainWindow, uiManager }); PluginManager guiPlugins = PluginManager.GetForType(typeof(GuiPlugin)); foreach (Plugin p in guiPlugins.Plugins) { guiPlugins.LoadPlugin(p); } // load recent file history try { History.Instance.Load(Path.Combine(blessConfDir, "history.xml")); } catch (Exception e) { System.Console.WriteLine(e.Message); } // if user specified files on the command line // try to load them if (args.Length > 0) { Services.File.LoadFiles(args); } else if (Preferences.Instance["Session.LoadPrevious"] == "True") { bool loadIt = true; string prevSessionFile = Path.Combine(blessConfDir, "last.session"); if (Preferences.Instance["Session.AskBeforeLoading"] == "True" && File.Exists(prevSessionFile)) { MessageDialog md = new MessageDialog(MainWindow, DialogFlags.DestroyWithParent, MessageType.Question, ButtonsType.YesNo, Catalog.GetString("Do you want to load your previous session?")); ResponseType result = (ResponseType)md.Run(); md.Destroy(); if (result == ResponseType.Yes) { loadIt = true; } else { loadIt = false; } } // try to load previous session if (loadIt) { Services.Session.Load(prevSessionFile); } } // if nothing has been loaded, create a new file if (dataBook.NPages == 0) { ByteBuffer bb = Services.File.NewFile(); // create and setup a DataView DataView dv = Services.File.CreateDataView(bb); // append the DataView to the DataBook dataBook.AppendView(dv, new CloseViewDelegate(Services.File.CloseFile), Path.GetFileName(bb.Filename)); } PreferencesChangedHandler handler = new PreferencesChangedHandler(OnPreferencesChanged); Preferences.Proxy.Subscribe("View.Toolbar.Show", "mainwin", handler); // register drag and drop of files MainWindow.DragDataReceived += OnDragDataReceived; Gtk.Drag.DestSet(MainWindow, DestDefaults.Motion | DestDefaults.Drop, dropTargets, Gdk.DragAction.Copy | Gdk.DragAction.Move); DataViewBox.ShowAll(); Preferences.Proxy.Enable = true; // fire the preferences changed event // so things are setup according to the preferences Preferences.Proxy.NotifyAll(); Application.Run(); }
public Infobar(DataBook db) { dataBook = db; // create bars MessageStatusbar = new Statusbar(); OffsetStatusbar = new Statusbar(); OffsetStatusbar.WidthRequest = 270; SelectionStatusbar = new Statusbar(); SelectionStatusbar.WidthRequest = 270; OverwriteStatusbar = new Statusbar(); OverwriteStatusbar.WidthRequest = 60; DummyStatusbar = new Statusbar(); DummyStatusbar.Visible = false; EventBox OffsetEB = new EventBox(); OffsetEB.Add(OffsetStatusbar); OffsetEB.ButtonPressEvent += ChangeNumberBase; EventBox SelectionEB = new EventBox(); SelectionEB.Add(SelectionStatusbar); SelectionEB.ButtonPressEvent += ChangeNumberBase; EventBox OverwriteEB = new EventBox(); OverwriteEB.Add(OverwriteStatusbar); OverwriteEB.ButtonPressEvent += OnOverwriteStatusbarPressed; // create hbox to put bars in HBox StatusHBox = new HBox(); StatusHBox.PackStart(DummyStatusbar, false, true, 0); StatusHBox.PackStart(OffsetEB, false, true, 0); StatusHBox.PackStart(SelectionEB, false, true, 0); StatusHBox.PackStart(OverwriteEB, false, true, 0); // align the hbox Alignment StatusAlignment = new Alignment(1.0f, 0.5f, 0.0f, 1.0f); StatusAlignment.Add(StatusHBox); this.Pack1(MessageStatusbar, true, true); this.Pack2(StatusAlignment, false, true); this.NumberBase = 16; PreferencesChangedHandler handler = new PreferencesChangedHandler(OnPreferencesChanged); Preferences.Proxy.Subscribe("View.Statusbar.Show", "ib2", handler); Preferences.Proxy.Subscribe("View.Statusbar.Selection", "ib2", handler); Preferences.Proxy.Subscribe("View.Statusbar.Overwrite", "ib2", handler); Preferences.Proxy.Subscribe("View.Statusbar.Offset", "ib2", handler); this.MapEvent += OnMapEvent; this.ShowAll(); }