using System.Collections;
using Gtk;
using Gdk;
-using Gnome;
using Glade;
public class Application {
[Glade.Widget]
private Gtk.Entry IDEntry;
[Glade.Widget]
- private Gnome.AppBar AppBar;
- [Glade.Widget]
- private Gtk.VBox MainLayout;
- [Glade.Widget]
private Gtk.TreeView TileList;
[Glade.Widget]
private Gtk.Combo TileGroupComboBox;
[Glade.Widget]
private Gtk.MenuItem AddTileGroupMenu;
+ [Glade.Widget]
+ private Gtk.Dialog RemapDialog;
+ [Glade.Widget]
+ private Gtk.SpinButton RD_spinButton;
+
private string tilesetdir;
private string tilesetfile;
private TileSet tileset;
private Gdk.Pixbuf pixbuf;
public static int Main(string[] args) {
- Program kit = new Program("tiler", "0.0.1", Modules.UI, args);
+ Gtk.Application.Init();
Application app = new Application();
if(args.Length == 1)
app.LoadTileSet(args[0]);
- kit.Run();
+ Gtk.Application.Run();
return 0;
}
Glade.XML gxml = new Glade.XML(null, "tiler.glade", null, null);
gxml.Autoconnect(this);
- if(MainWindow == null || DrawingArea == null || AppBar == null)
+ if(MainWindow == null || DrawingArea == null || RemapDialog == null)
throw new Exception("some widgets not found");
DrawingArea.AddEvents((int) Gdk.EventMask.ButtonPressMask);
DrawingArea.AddEvents((int) Gdk.EventMask.ButtonReleaseMask);
DrawingArea.AddEvents((int) Gdk.EventMask.ButtonMotionMask);
- // libglade missed interactivity property :-/
- MainLayout.Remove(AppBar);
- AppBar = new AppBar(true, true, PreferencesType.Always);
- AppBar.UserResponse += new EventHandler(OnAppBarUserResponse);
- MainLayout.PackStart(AppBar, false, false, 0);
- AppBar.Show();
-
MainWindow.Show();
}
fileChooser.AddButton(Gtk.Stock.Cancel, Gtk.ResponseType.Cancel);
fileChooser.AddButton(Gtk.Stock.Ok, Gtk.ResponseType.Ok);
fileChooser.DefaultResponse = Gtk.ResponseType.Ok;
- Gtk.FileFilter filter = new Gtk.FileFilter();
+ Gtk.FileFilter filter;
+ filter = new Gtk.FileFilter();
+ filter.Name = "Supertux 0.1.x tilesets";
+ filter.AddPattern("*.stgt");
+ fileChooser.AddFilter( filter );
+ filter = new Gtk.FileFilter();
filter.Name = "Supertux tilesets";
filter.AddPattern("*.strf");
+ filter.AddPattern("*.stgt");
+ fileChooser.AddFilter( filter );
+ filter = new Gtk.FileFilter();
+ filter.Name = "Supertux 0.3.x tilesets";
+ filter.AddPattern("*.strf");
fileChooser.AddFilter( filter );
Gtk.FileFilter all = new Gtk.FileFilter();
all.Name = "All Files";
}
protected void OnAbout(object o, EventArgs e) {
- Console.WriteLine(
- "There is no about dialog yet...");
+// string[] authors = new string[]{
+// "<autors?>",
+// };
+
+ Gtk.AboutDialog dialog = new Gtk.AboutDialog();
+// dialog.Icon = <icon>;
+ dialog.ProgramName = "SuperTux Tiler";
+ dialog.Version = "0.0.3";
+ dialog.Comments = "A tileset editor for SuperTux 0.1.x";
+// dialog.Authors = authors;
+ dialog.Copyright = "Copyright (c) 2006 SuperTux Devel Team";
+ dialog.License =
+ "This program is free software; you can redistribute it and/or modify" + Environment.NewLine +
+ "it under the terms of the GNU General Public License as published by" + Environment.NewLine +
+ "the Free Software Foundation; either version 2 of the License, or" + Environment.NewLine +
+ "(at your option) any later version." + Environment.NewLine +
+ Environment.NewLine +
+ "This program is distributed in the hope that it will be useful," + Environment.NewLine +
+ "but WITHOUT ANY WARRANTY; without even the implied warranty of" + Environment.NewLine +
+ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the" + Environment.NewLine +
+ "GNU General Public License for more details." + Environment.NewLine +
+ Environment.NewLine +
+ "You should have received a copy of the GNU General Public License" + Environment.NewLine +
+ "along with this program; if not, write to the Free Software Foundation, Inc.," + Environment.NewLine +
+ "59 Temple Place, Suite 330, Boston, MA 02111-1307 USA" + Environment.NewLine;
+ dialog.Website = "http://supertux.lethargik.org/";
+ dialog.WebsiteLabel = "SuperTux on the Web";
+ dialog.Run();
+ dialog.Destroy();
}
protected void OnRemapTiles(object o, EventArgs e) {
- AppBar.SetPrompt("Start-ID:", true);
- }
-
- protected void OnCreateTileGroup(object o, EventArgs e) {
+ if(Tiles == null)
+ return;
+ RemapDialog.Show();
}
- protected void OnRenameTileGroup(object o, EventArgs e) {
+ protected void OnRemapDialogCancel(object o, EventArgs e) {
+ RemapDialog.Hide();
}
- protected void OnAppBarUserResponse(object o, EventArgs e) {
+ protected void OnRemapDialogApply(object o, EventArgs e) {
+ RemapDialog.Hide();
try {
- if(AppBar.Response == null || AppBar.Response == ""
- || Tiles == null)
- return;
// remap tiles
int id;
try {
- id = Int32.Parse(AppBar.Response);
+ id = RD_spinButton.ValueAsInt;
} catch(Exception exception) {
ShowException(exception);
return;
}
- foreach(Tile tile in Selection) {
- if(tile.ID == -1)
- continue;
-
- int oldid = tile.ID;
- tile.ID = id++;
- // remap in all tilegroups...
- foreach(TileGroup tilegroup in tileset.TileGroups) {
- int idx = tilegroup.Tiles.IndexOf(oldid);
- if(idx >= 0) {
- tilegroup.Tiles[idx] = tile.ID;
- }
- }
- }
- FillTileList();
- SelectionChanged();
+ RemapTiles(id);
} finally {
- AppBar.ClearPrompt();
+ RD_spinButton.Value = 1;
}
}
+ protected void OnCreateTileGroup(object o, EventArgs e) {
+ }
+
+ protected void OnRenameTileGroup(object o, EventArgs e) {
+ }
+
+ protected void RemapTiles(int startID) {
+ if(Tiles == null)
+ return;
+
+ // remap tiles
+ int id = startID;
+ foreach(Tile tile in Selection) {
+ if(tile.ID == -1)
+ continue;
+
+ int oldid = tile.ID;
+ tile.ID = id++;
+ // remap in all tilegroups...
+ foreach(TileGroup tilegroup in tileset.TileGroups) {
+ int idx = tilegroup.Tiles.IndexOf(oldid);
+ if(idx >= 0) {
+ tilegroup.Tiles[idx] = tile.ID;
+ }
+ }
+ }
+ FillTileList();
+ SelectionChanged();
+ }
+
protected void OnDrawingAreaExpose(object o, ExposeEventArgs e) {
if(pixbuf == null)
return;