public ModelerCanvas() { this.ContentName = GettextCatalog.GetString ("DB Modeler"); this.IsViewOnly = true; //Create model view-controller environment View = new StandardDrawingView (this); _controller = new modelController (View,this); //Create database designer canvas environment widget = new ModelerCanvasWidget (this, _controller); widget.getScroller ().SetSizeRequest (200, 200); widget.getScroller ().BorderWidth = 1; widget.getScroller ().Add ((Widget)View); Tool = new SelectionTool (this); widget.getScroller ().ShowAll (); //Add drag and drop support TargetEntry[] te2 = new TargetEntry[] { new Gtk.TargetEntry ("table/relationship", 0, 7777) }; ScrolledWindow xscroller = widget.getScroller (); Gtk.Drag.DestSet (xscroller, DestDefaults.All, te2, Gdk.DragAction.Copy); xscroller.DragDataReceived += OnDragDataReceived; //todo: fix this undo manager _undoManager = new UndoManager (); UndoManager.StackChanged += delegate { UpdateUndoRedoSensitiveness (); }; }
public ModelerCanvasWidget(ModelerCanvas owner, modelController controller) { this.Build (); _owner = owner; _controller = controller; VBox mainVbox = new VBox (false, 6); mainVbox.BorderWidth = 6; this.Add(mainVbox); //Create Toolbar Toolbar toolbar = new Toolbar (); toolbar.Name = "toolbar"; toolbar.ShowArrow = true; toolbar.IconSize = Gtk.IconSize.LargeToolbar; toolbar.ToolbarStyle = ToolbarStyle.BothHoriz; toolbar.Sensitive=true; toolbar.Activate(); mainVbox.Add(toolbar); Gtk.Box.BoxChild w1 = ((Gtk.Box.BoxChild)(mainVbox[toolbar])); w1.Position = 0; w1.Expand = false; w1.Fill = true; //Create SCrollWindow mainScrolledWindow = new ScrolledWindow(); mainScrolledWindow.Activate(); mainScrolledWindow.SetPolicy( Gtk.PolicyType.Always,Gtk.PolicyType.Always); mainScrolledWindow.CanFocus = true; mainScrolledWindow.Name = "mainScrolledWindow"; mainScrolledWindow.ShadowType = ((Gtk.ShadowType)(1)); mainVbox.Add(mainScrolledWindow); Gtk.Box.BoxChild w2 = ((Gtk.Box.BoxChild)(mainVbox[mainScrolledWindow])); w2.Position = 1; w2.Fill=true; w2.Expand=true; //Create Toolbar Buttons //Add New Table buttonNew = new ToolButton(new Gtk.Image (Gtk.Stock.New, IconSize.Button),"Add Table"); buttonNew.Sensitive = true; buttonNew.TooltipMarkup = "Add a new empty table"; buttonNew.IsImportant = true; buttonNew.Clicked += new EventHandler (OnbuttonNewActionActivated); buttonNew.Activate(); buttonNew.Show(); toolbar.Add (buttonNew); //Create a Relationship between two tables buttonRelationship = new ToolButton(new Gtk.Image (Gtk.Stock.New, IconSize.Button),"Relationship"); buttonRelationship.Sensitive = true; buttonRelationship.TooltipMarkup = "Add a new relationship between tables"; buttonRelationship.IsImportant = true; buttonRelationship.Clicked += new EventHandler (OnbuttonRelationshipActivated); buttonRelationship.Activate(); buttonRelationship.Show(); toolbar.Add (buttonRelationship); //Delete Selected Figure(s) buttonDelete = new ToolButton(new Gtk.Image (Gtk.Stock.New, IconSize.Button),"Remove"); buttonDelete.Sensitive = true; buttonDelete.TooltipMarkup = "Remove selected figure(s) from diagram (table or relationship)"; buttonDelete.IsImportant = true; buttonDelete.Clicked += new EventHandler (buttonDeleteRelationshipActivated); buttonDelete.Activate(); buttonDelete.Show(); toolbar.Add (buttonDelete); //Select Active Database comboConnections = new DatabaseConnectionContextComboBox (); selectedConnection = comboConnections.DatabaseConnection; comboConnections.Changed += new EventHandler (ConnectionChanged); ToolItem comboItem = new ToolItem (); comboItem.Child = comboConnections; comboItem.Show(); toolbar.Add (new SeparatorToolItem ()); toolbar.Add (comboItem); //Show all items mainVbox.ShowAll (); }