public WarpSourceRoomComponent(RoomEditor parent, Warp warp, int index, Cairo.Rectangle rect) { this.parent = parent; this.warp = warp; this.index = index; this.rect = rect; }
void SetObjectData(ObjectData data) { activeData = data; Action handler = delegate() { if (RoomEditor != null) { RoomEditor.OnObjectsModified(); } UpdateDocumentation(); }; foreach (Gtk.Widget widget in objectDataContainer.Children) { objectDataContainer.Remove(widget); widget.Destroy(); } if (ObjectDataEditor != null) { ObjectDataEditor.RemoveDataModifiedHandler(handler); ObjectDataEditor = null; } if (RoomEditor != null) { RoomEditor.OnObjectsModified(); } if (data == null) { frameLabel.Text = ""; return; } frameLabel.Text = ObjectNames[(int)activeData.GetObjectType()]; ObjectDataEditor = new ValueReferenceEditor(Project, data); ObjectDataEditor.AddDataModifiedHandler(handler); if (SubEditor != null) { SubEditor.RoomEditor = RoomEditor; } objectDataContainer.Add(ObjectDataEditor); objectDataContainer.ShowAll(); UpdateDocumentation(); }
public WarpDestRoomComponent(RoomEditor parent, Warp warp) { this.parent = parent; this.warp = warp; }
public MainWindow(string directory) { log.Debug("Beginning Program"); Gtk.Window.DefaultIcon = new Gdk.Pixbuf(Helper.GetResourceStream("LynnaLab.icon.ico")); Gtk.Builder builder = new Builder(); builder.AddFromString(Helper.ReadResourceFile("LynnaLab.Glade.MainWindow.ui")); builder.Autoconnect(this); mainWindow = (builder.GetObject("mainWindow") as Gtk.Window); menubar1 = (Gtk.MenuBar)builder.GetObject("menubar1"); editMenuItem = (Gtk.MenuItem)builder.GetObject("editMenuItem"); actionMenuItem = (Gtk.MenuItem)builder.GetObject("actionMenuItem"); debugMenuItem = (Gtk.MenuItem)builder.GetObject("debugMenuItem"); minimapNotebook = (Gtk.Notebook)builder.GetObject("minimapNotebook"); contextNotebook = (Gtk.Notebook)builder.GetObject("contextNotebook"); worldSpinButton = (Gtk.SpinButton)builder.GetObject("worldSpinButton"); viewObjectsCheckButton = (Gtk.CheckButton)builder.GetObject("viewObjectsCheckButton"); viewWarpsCheckButton = (Gtk.CheckButton)builder.GetObject("viewWarpsCheckButton"); darkenDungeonRoomsCheckbox = (Gtk.CheckButton)builder.GetObject("darkenDungeonRoomsCheckbox"); dungeonSpinButton = (Gtk.SpinButton)builder.GetObject("dungeonSpinButton"); floorSpinButton = (Gtk.SpinButton)builder.GetObject("floorSpinButton"); roomVreHolder = (Gtk.Box)builder.GetObject("roomVreHolder"); chestAddHolder = (Gtk.Box)builder.GetObject("chestAddHolder"); chestEditorBox = (Gtk.Box)builder.GetObject("chestEditorBox"); chestVreHolder = (Gtk.Box)builder.GetObject("chestVreHolder"); treasureVreHolder = (Gtk.Box)builder.GetObject("treasureVreHolder"); nonExistentTreasureHolder = (Gtk.Box)builder.GetObject("nonExistentTreasureHolder"); overallEditingContainer = (Gtk.Box)builder.GetObject("overallEditingContainer"); treasureDataFrame = (Gtk.Widget)builder.GetObject("treasureDataFrame"); treasureDataLabel = (Gtk.Label)builder.GetObject("treasureDataLabel"); editTilesetButton = new Gtk.Button("Edit"); editTilesetButton.Clicked += OnTilesetEditorButtonClicked; roomSpinButton = new SpinButtonHexadecimal(); roomSpinButton.Digits = 3; objectgroupeditor1 = new ObjectGroupEditor(); tilesetViewer1 = new TilesetViewer(); roomeditor1 = new RoomEditor(); worldMinimap = new HighlightingMinimap(); dungeonMinimap = new Minimap(); warpEditor = new WarpEditor(this); statusbar1 = new PriorityStatusbar(); seasonComboBox = new ComboBoxFromConstants(showHelp: false); seasonComboBox.SpinButton.Adjustment.Upper = 3; ((Gtk.Box)builder.GetObject("roomSpinButtonHolder")).Add(roomSpinButton); ((Gtk.Box)builder.GetObject("objectGroupEditorHolder")).Add(objectgroupeditor1); ((Gtk.Box)builder.GetObject("tilesetViewerHolder")).Add(tilesetViewer1); ((Gtk.Box)builder.GetObject("roomEditorHolder")).Add(roomeditor1); ((Gtk.Box)builder.GetObject("worldMinimapHolder")).Add(worldMinimap); ((Gtk.Box)builder.GetObject("dungeonMinimapHolder")).Add(dungeonMinimap); ((Gtk.Box)builder.GetObject("warpEditorHolder")).Add(warpEditor); ((Gtk.Box)builder.GetObject("statusbarHolder")).Add(statusbar1); ((Gtk.Box)builder.GetObject("seasonComboBoxHolder")).Add(seasonComboBox); mainWindow.Title = "LynnaLab " + Helper.ReadResourceFile("LynnaLab.version.txt"); roomeditor1.Scale = 2; roomeditor1.TilesetViewer = tilesetViewer1; roomeditor1.ObjectGroupEditor = objectgroupeditor1; roomeditor1.WarpEditor = warpEditor; eventGroup.Lock(); // Event handlers from widgets roomSpinButton.ValueChanged += eventGroup.Add(OnRoomSpinButtonValueChanged); worldSpinButton.ValueChanged += eventGroup.Add(OnWorldSpinButtonValueChanged); dungeonSpinButton.ValueChanged += eventGroup.Add(OnDungeonSpinButtonValueChanged); floorSpinButton.ValueChanged += eventGroup.Add(OnFloorSpinButtonValueChanged); seasonComboBox.Changed += eventGroup.Add(OnSeasonComboBoxChanged); minimapNotebook.SwitchPage += new SwitchPageHandler(eventGroup.Add <SwitchPageArgs>(OnMinimapNotebookSwitchPage)); contextNotebook.SwitchPage += new SwitchPageHandler(eventGroup.Add <SwitchPageArgs>(OnContextNotebookSwitchPage)); roomeditor1.RoomChangedEvent += eventGroup.Add <RoomChangedEventArgs>((sender, args) => { eventGroup.Lock(); OnRoomChanged(); // Only update minimap if the room editor did a "follow warp". Otherwise, we'll decide // whether to update the minimap from whatever code changed the room. if (args.fromFollowWarp) { UpdateMinimapFromRoom(args.fromFollowWarp); } eventGroup.Unlock(); }); dungeonMinimap.AddTileSelectedHandler(eventGroup.Add <int>(delegate(object sender, int index) { OnMinimapTileSelected(sender, dungeonMinimap.SelectedIndex); })); worldMinimap.AddTileSelectedHandler(eventGroup.Add <int>(delegate(object sender, int index) { OnMinimapTileSelected(sender, worldMinimap.SelectedIndex); })); tilesetViewer1.HoverChangedEvent += eventGroup.Add <int>((sender, tile) => { if (tilesetViewer1.HoveringIndex != -1) { statusbar1.Set((uint)StatusbarMessage.TileHovering, "Hovering Tile: 0x" + tilesetViewer1.HoveringIndex.ToString("X2")); } else { statusbar1.RemoveAll((uint)StatusbarMessage.TileHovering); } }); tilesetViewer1.AddTileSelectedHandler(eventGroup.Add <int>(delegate(object sender, int index) { statusbar1.RemoveAll((uint)StatusbarMessage.TileHovering); statusbar1.Set((uint)StatusbarMessage.TileSelected, "Selected Tile: 0x" + index.ToString("X2")); })); roomeditor1.HoverChangedEvent += eventGroup.Add <int>((sender, tile) => { if (roomeditor1.HoveringIndex != -1) { statusbar1.Set((uint)StatusbarMessage.TileHovering, string.Format( "Hovering Pos: {0},{1} (${1:X}{0:X})", roomeditor1.HoveringX, roomeditor1.HoveringY)); } else { statusbar1.RemoveAll((uint)StatusbarMessage.TileHovering); } }); roomeditor1.WarpDestEditModeChangedEvent += eventGroup.Add <bool>((sender, activated) => { if (activated) { statusbar1.Set((uint)StatusbarMessage.WarpDestEditMode, "Entered warp destination editing mode. To exit this mode, right-click on the warp destination and select \"Done\"."); } else { statusbar1.RemoveAll((uint)StatusbarMessage.WarpDestEditMode); } }); statusbar1.Set((uint)StatusbarMessage.TileSelected, "Selected Tile: 0x00"); OnDarkenDungeonRoomsCheckboxToggled(null, null); // Event handlers from underlying data chestEventWrapper.Bind <ValueModifiedEventArgs>("ModifiedEvent", (sender, args) => UpdateChestData()); chestEventWrapper.Bind <EventArgs>("DeletedEvent", (sender, args) => UpdateChestData()); // Load "plugins" pluginCore = new PluginCore(this); LoadPlugins(); mainWindow.ShowAll(); eventGroup.UnlockAndClear(); overallEditingContainer.Sensitive = false; if (directory != "") { OpenProject(directory); } }