private void OnOnUrl(object o, OnUrlArgs args) { if (lastUrlId != 0) { statusBar.Remove(statusBar.GetContextId("OnOnUrl"), lastUrlId); } if (args.Url != null) { lastUrlId = statusBar.Push(statusBar.GetContextId("OnOnUrl"), args.Url); } }
/// <summary> /// Loads the dictionary (take lot of time - use own thread). /// </summary> protected void LoadDictionary() { lock ( dicLoc ) { this.dic = new Scrabble.Lexicon.GADDAG(); if (!File.Exists(Scrabble.Game.InitialConfig.dicPath)) { DicPathError(); } else { StreamReader sr = new StreamReader(Scrabble.Game.InitialConfig.dicPath); this.dic = new Scrabble.Lexicon.GADDAG(sr); } } if (Scrabble.Game.InitialConfig.log) { Console.Out.WriteLine("[INFO]\tSlovník obsahuje {0} slov.", dic.WordCount); } statusb.Push(statusb.GetContextId("Slovník"), "Slovník načten"); }
/// <summary> /// Initializes a new instance of the <see cref="Scrabble.GUI.StartWindow"/> class. /// </summary> public StartWindow() : base(Gtk.WindowType.Toplevel) { #region Basic window properties // Basic window properties this.Title = "Scrabble - Základní nastavení"; this.Name = "ConfigWindow"; this.DeleteEvent += OnDeleteEvent; this.SetPosition(WindowPosition.Center); this.DefaultWidth = 410; this.DefaultHeight = 280; this.Icon = Scrabble.Game.InitialConfig.icon; #endregion this.numberOfPlayers = 2; // Own thread for loading dictionary this.statusb = new Gtk.Statusbar(); this.statusb.Push(statusb.GetContextId("Slovník"), "Načítám slovník"); this.tdic = new Thread(LoadDictionary); this.tdic.Start(); // infoText (top) this.infoText = new Gtk.Label("Základní nastavení hry.\n" + "Nastavte prosím počet hráčů, jejich jména a určete zda za ně bude hrát umělá inteligence. " + "Také můžete nastavit, kteří hráči se připojují vzdáleně."); this.infoText.Wrap = true; // First config line (number of players, client) this.upperHbox = new HBox(false, 5); this.l1 = new Label("Počet hráčů"); this.upperHbox.PackStart(l1); this.l2 = new Label(", nebo:"); this.entryNum = new SpinButton(2, 5, 1); this.entryNum.Changed += OnNumberOfPlayerChange; client = new CheckButton(); client.Clicked += IamClient; client.Label = "připojit se ke vzdálené hře"; client.TooltipText = "Pokud zaškrnete, tak se program bude chovat pouze jako client a připojí se k hře vedené na jiném PC."; upperHbox.Add(entryNum); upperHbox.Add(l2); upperHbox.PackEnd(client); upperHbox.BorderWidth = 10; upperHbox.WidthRequest = 20; // Table with config for each player (dynamic size) table = new Gtk.Table(5, 7, false); table.Attach(new Gtk.Label("Jméno hráče:"), 1, 2, 0, 1); table.Attach(new Gtk.Label("CPU"), 2, 3, 0, 1); table.Attach(new Gtk.Label("Network"), 3, 4, 0, 1); ipLabel = new Gtk.Label("IP"); table.Attach(ipLabel, 4, 5, 0, 1); labels = new Gtk.Label[5]; entryes = new Gtk.Entry[5]; CPUchecks = new Gtk.CheckButton[5]; MPchecks = new Gtk.CheckButton[5]; IPs = new Gtk.Entry[5]; for (int i = 0; i < 5; i++) { labels [i] = new Gtk.Label((i + 1).ToString()); labels [i].Name = string.Format("l {0}", i); table.Attach(labels [i], 0, 1, (uint)i + 1, (uint)i + 2); entryes [i] = new Gtk.Entry(12); entryes [i].Text = "Hráč " + (i + 1).ToString(); entryes [i].TooltipText = "Vložte jméno hráče."; table.Attach(entryes [i], 1, 2, (uint)i + 1, (uint)i + 2); CPUchecks [i] = new Gtk.CheckButton(); CPUchecks [i].Name = string.Format("c {0}", i); CPUchecks [i].TooltipText = "Pokud je zaškrtnuto, tak za hráče bude hrát počítač."; ((Gtk.CheckButton)CPUchecks [i]).Clicked += OnCpuChange; table.Attach(CPUchecks [i], 2, 3, (uint)i + 1, (uint)i + 2); MPchecks [i] = new Gtk.CheckButton(); MPchecks [i].Name = string.Format("n {0}", i); MPchecks [i].TooltipText = "Pokud je zaškrtnuto, tak se počítá s tím, že se tento hráč připojí vzdáleně. "; ((Gtk.CheckButton)MPchecks [i]).Clicked += OnNetChange; table.Attach(MPchecks [i], 3, 4, (uint)i + 1, (uint)i + 2); IPs [i] = new Gtk.Entry(15); IPs [i].Text = "192.168.0.X"; IPs [i].WidthChars = 15; IPs [i].Sensitive = false; table.Attach(IPs [i], 4, 5, (uint)i + 1, (uint)i + 2); } this.CPUchecks[0].Hide(); ok = new Button("Hotovo"); ok.Clicked += Done; ok.BorderWidth = 5; ok.TooltipText = "Potvrzením začne hra. Může se stát, že program bude ještě chvíli načítat slovník."; table.Attach(ok, 0, 5, 6, 7); // Main vbox (where all is) this.mainVbox = new Gtk.VBox(false, 5); this.mainVbox.PackStart(infoText); this.mainVbox.Add(upperHbox); this.mainVbox.Spacing = 5; this.mainVbox.Add(table); this.mainVbox.PackEnd(statusb); this.mainVbox.BorderWidth = 9; this.Add(mainVbox); this.mainVbox.ShowAll(); for (int i = 2; i < numberOfPlayers + 3; i++) { labels [i].Hide(); entryes [i].Hide(); CPUchecks [i].Hide(); MPchecks [i].Hide(); IPs [i].Hide(); } ipLabel.Hide(); foreach (Gtk.Entry e in IPs) { e.Hide(); } this.CPUchecks[0].Hide(); this.MPchecks[0].Hide(); }
private Application(Options opts) { selection = new TileSelection(); Glade.XML.CustomHandler = GladeCustomWidgetHandler; Glade.XML gxml = new Glade.XML("editor.glade", "MainWindow"); gxml.Autoconnect(this); if (MainWindow == null) { throw new Exception("Couldn't resolve all widgets"); } ((GameObjectListWidget)ToolGObjectsProps).SetGtkFrame(fGObjects); Tileset.LoadEditorImages = true; // Initialize status bar for PrintStatus() printStatusContextID = sbMain.GetContextId("PrintStatus"); printStatusMessageID = sbMain.Push(printStatusContextID, "Welcome to Supertux-Editor."); MainWindow.DeleteEvent += OnDelete; MainWindow.SetSizeRequest(900, 675); MainWindowTitlePrefix = MainWindow.Title; UpdateTitlebar(); UpdateRecentDocuments(); MainWindow.Icon = EditorStock.WindowIcon; //HACK: not a typo, EditorStock adds icons to the stock only when called 2x or more.. MainWindow.Icon = EditorStock.WindowIcon; MainWindow.ShowAll(); // Manually set icons for Tools, automatic stock initialization is broken on some systems ToolSelect.StockId = EditorStock.ToolSelect; ToolTiles.StockId = EditorStock.ToolTiles; ToolObjects.StockId = EditorStock.ToolObjects; ToolBrush.StockId = EditorStock.ToolBrush; ToolFill.StockId = EditorStock.ToolFill; ToolReplace.StockId = EditorStock.ToolReplace; ToolPath.StockId = EditorStock.ToolPath; ToolButtonCamera.StockId = EditorStock.Camera; // Hide some extra widgets (because MainWindow.ShowAll(); showed them all) fGObjects.Visible = false; if (Settings.Instance.ToolboxOnRight) { aTools.Reparent(fToolsRight); fToolsLeft.Hide(); } else { aTools.Reparent(fToolsLeft); fToolsRight.Hide(); } // Tool "Select" is selected by default - call its event handler OnToolSelect(null, null); //Setup drag destination for "files" Gtk.Drag.DestSet(MainWindow, Gtk.DestDefaults.All, target_table, Gdk.DragAction.Default | Gdk.DragAction.Copy | Gdk.DragAction.Move | Gdk.DragAction.Link | Gdk.DragAction.Private | Gdk.DragAction.Ask); MainWindow.DragDataReceived += OnDragDataReceived; fileChooser = new Gtk.FileChooserDialog("Choose a Level", MainWindow, Gtk.FileChooserAction.Open, new object[] {}); if (!Directory.Exists(Settings.Instance.LastDirectoryName)) //noexistent (or null) LastDirectoryName, resetting to default { if (Settings.Instance.SupertuxData != null) { Settings.Instance.LastDirectoryName = System.IO.Path.Combine(Settings.Instance.SupertuxData, "levels") + System.IO.Path.DirectorySeparatorChar; } else { Settings.Instance.LastDirectoryName = Environment.ExpandEnvironmentVariables("%HOME%"); } } fileChooser.SetCurrentFolder(Settings.Instance.LastDirectoryName); 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(); filter.Name = "Supertux Levels and Worldmaps"; filter.AddPattern("*.stl"); filter.AddPattern("*.stwm"); fileChooser.AddFilter(filter); Gtk.FileFilter levelfilter = new Gtk.FileFilter(); levelfilter.Name = "Supertux Levels"; levelfilter.AddPattern("*.stl"); fileChooser.AddFilter(levelfilter); Gtk.FileFilter worldmapfilter = new Gtk.FileFilter(); worldmapfilter.Name = "Supertux Worldmaps"; worldmapfilter.AddPattern("*.stwm"); fileChooser.AddFilter(worldmapfilter); Gtk.FileFilter brushfilter = new Gtk.FileFilter(); brushfilter.Name = "Supertux-Editor Brushes"; brushfilter.AddPattern("*.csv"); fileChooser.AddFilter(brushfilter); Gtk.FileFilter all = new Gtk.FileFilter(); all.Name = "All Files"; all.AddPattern("*"); fileChooser.AddFilter(all); if (Settings.Instance.SupertuxData != null) { try { fileChooser.AddShortcutFolder(System.IO.Path.Combine(Settings.Instance.SupertuxData, "levels")); } catch (Exception e) { LogManager.Log(LogLevel.Warning, "Couldn't add supertux level directory to File Chooser: " + e.Message); } } if (opts.FileNames.Count > 0) { Load(opts.FileNames[0]); } UndoManager.OnAddCommand += OnUndoManager; UndoManager.OnRedo += OnUndoManager; UndoManager.OnUndo += OnUndoManager; editorApplication = this; PrintStatus("Welcome to Supertux-Editor."); }
private MainWindow(Gtk.Builder builder) : base(builder.GetObject("MainWindow").Handle) { builder.Autoconnect(this); DeleteEvent += Window_DeleteEvent; // Create a status bar context _fpsStatusbarContextID = _appStatusbar.GetContextId("FPS"); // Create the scene editor _sceneGLWidget = new SceneEditorWidget(); _sceneGLWidget.FpsChange += SceneGLWidgetOnFpsChange; // Add the GL widget to the UI _sceneGLAlignement.Add(_sceneGLWidget); // AlienEngine logo _alienEngineLogoSquare.Pixbuf = new Gdk.Pixbuf(typeof(Program).Assembly, "Windows.Resources.Images.AlienEngineLogo"); _alienEngineLogoSquare.Pixbuf = _alienEngineLogoSquare.Pixbuf.ScaleSimple(36, 36, Gdk.InterpType.Bilinear); // Command buttons _commandButtonMoveImage.Pixbuf = new Gdk.Pixbuf(typeof(Program).Assembly, "Windows.Resources.Images.commandButtonMove"); _commandButtonRotateImage.Pixbuf = new Gdk.Pixbuf(typeof(Program).Assembly, "Windows.Resources.Images.commandButtonRotate"); _commandButtonScaleImage.Pixbuf = new Gdk.Pixbuf(typeof(Program).Assembly, "Windows.Resources.Images.commandButtonScale"); _commandButtonGlobalViewImage.Pixbuf = new Gdk.Pixbuf(typeof(Program).Assembly, "Windows.Resources.Images.commandButtonGlobal"); _commandButtonLocalViewImage.Pixbuf = new Gdk.Pixbuf(typeof(Program).Assembly, "Windows.Resources.Images.commandButtonLocal"); // Toolbar buttons _commandButtonUndoImage.Pixbuf = new Gdk.Pixbuf(typeof(Program).Assembly, "Windows.Resources.Images.commandButtonUndo"); _commandButtonRedoImage.Pixbuf = new Gdk.Pixbuf(typeof(Program).Assembly, "Windows.Resources.Images.commandButtonRedo"); // Options buttons _optionButtonHelpImage.Pixbuf = new Gdk.Pixbuf(typeof(Program).Assembly, "Windows.Resources.Images.commandButtonHelp"); _optionButtonSettingsImage.Pixbuf = new Gdk.Pixbuf(typeof(Program).Assembly, "Windows.Resources.Images.commandButtonSettings"); _optionButtonProjectsImage.Pixbuf = new Gdk.Pixbuf(typeof(Program).Assembly, "Windows.Resources.Images.commandButtonProjects"); _sceneEditorGameElementsTreeView.RowActivated += _sceneEditorGameElementsTreeView_RowActivated; _sceneEditorTransformComponentTranstateSpinX.SetRange(double.MinValue, double.MaxValue); _sceneEditorTransformComponentTranstateSpinY.SetRange(double.MinValue, double.MaxValue); _sceneEditorTransformComponentTranstateSpinZ.SetRange(double.MinValue, double.MaxValue); _sceneEditorTransformComponentRotateSpinX.SetRange(double.MinValue, double.MaxValue); _sceneEditorTransformComponentRotateSpinY.SetRange(double.MinValue, double.MaxValue); _sceneEditorTransformComponentRotateSpinZ.SetRange(double.MinValue, double.MaxValue); _sceneEditorTransformComponentScaleSpinX.SetRange(double.MinValue, double.MaxValue); _sceneEditorTransformComponentScaleSpinY.SetRange(double.MinValue, double.MaxValue); _sceneEditorTransformComponentScaleSpinZ.SetRange(double.MinValue, double.MaxValue); _sceneEditorTransformComponentRevealerSwitchImage.Pixbuf = new Gdk.Pixbuf(typeof(Program).Assembly, "Windows.Resources.Images.Components.Transform"); _sceneEditorTransformComponentRevealerSwitch.Clicked += (sender, args) => _sceneEditorTransformComponentRevealer.RevealChild = !_sceneEditorTransformComponentRevealer.RevealChild; _sceneEditorTransformComponentTranslateImage.Pixbuf = new Gdk.Pixbuf(typeof(Program).Assembly, "Windows.Resources.Images.Icons.move"); _sceneEditorTransformComponentRotateImage.Pixbuf = new Gdk.Pixbuf(typeof(Program).Assembly, "Windows.Resources.Images.Icons.rotate"); _sceneEditorTransformComponentScaleImage.Pixbuf = new Gdk.Pixbuf(typeof(Program).Assembly, "Windows.Resources.Images.Icons.scale"); _sceneEditorTransformComponentTranstateSpinX.ValueChanged += _sceneEditorTransformComponentChanged; _sceneEditorTransformComponentTranstateSpinY.ValueChanged += _sceneEditorTransformComponentChanged; _sceneEditorTransformComponentTranstateSpinZ.ValueChanged += _sceneEditorTransformComponentChanged; _sceneEditorTransformComponentRotateSpinX.ValueChanged += _sceneEditorTransformComponentChanged; _sceneEditorTransformComponentRotateSpinY.ValueChanged += _sceneEditorTransformComponentChanged; _sceneEditorTransformComponentRotateSpinZ.ValueChanged += _sceneEditorTransformComponentChanged; _sceneEditorTransformComponentScaleSpinX.ValueChanged += _sceneEditorTransformComponentChanged; _sceneEditorTransformComponentScaleSpinY.ValueChanged += _sceneEditorTransformComponentChanged; _sceneEditorTransformComponentScaleSpinZ.ValueChanged += _sceneEditorTransformComponentChanged; SceneEditorGameElementsTree.SetTree(ref _sceneEditorGameElementsTreeStore, ref _sceneEditorGameElementsTreeView); }