diff --git a/launcher/launcher_object.go b/launcher/launcher_object.go
index 8c0e28a..2806abe 100644
--- a/launcher/launcher_object.go
+++ b/launcher/launcher_object.go
@@ -34,13 +34,17 @@ type Launcher struct {
func (l *Launcher) CheckForLaunchedUrbanTerror() error {
if l.launched {
- mbox_string := "Game is launched.\n\nCannot quit, because game is launched.\nQuit Urban Terror to exit URTrator!"
- m := gtk.NewMessageDialog(nil, gtk.DIALOG_MODAL, gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, mbox_string)
- m.Response(func() {
- m.Destroy()
- })
- m.Run()
- return errors.New("User didn't select valid profile, mismatch with server's version.")
+ // Temporary disable all these modals on Linux.
+ // See https://github.com/mattn/go-gtk/issues/289.
+ if runtime.GOOS != "linux" {
+ mbox_string := "Game is launched.\n\nCannot quit, because game is launched.\nQuit Urban Terror to exit URTrator!"
+ m := gtk.NewMessageDialog(nil, gtk.DIALOG_MODAL, gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, mbox_string)
+ m.Response(func() {
+ m.Destroy()
+ })
+ m.Run()
+ return errors.New("User didn't select valid profile, mismatch with server's version.")
+ }
}
return nil
diff --git a/ui/favorite.go b/ui/favorite.go
index 9ba860e..5a4374e 100644
--- a/ui/favorite.go
+++ b/ui/favorite.go
@@ -14,6 +14,7 @@ import (
"encoding/base64"
"errors"
"fmt"
+ "runtime"
"strings"
// Local
@@ -205,12 +206,16 @@ func (f *FavoriteDialog) saveFavorite() error {
//ctx.Requester.Pooler.UpdateSpecificServer(f.server)
if len(f.server_address.GetText()) == 0 {
- mbox_string := "Server address is empty.\n\nServers without address cannot be added."
- m := gtk.NewMessageDialog(f.window, gtk.DIALOG_MODAL, gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, mbox_string)
- m.Response(func() {
- m.Destroy()
- })
- m.Run()
+ // Temporary disable all these modals on Linux.
+ // See https://github.com/mattn/go-gtk/issues/289.
+ if runtime.GOOS != "linux" {
+ mbox_string := "Server address is empty.\n\nServers without address cannot be added."
+ m := gtk.NewMessageDialog(f.window, gtk.DIALOG_MODAL, gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, mbox_string)
+ m.Response(func() {
+ m.Destroy()
+ })
+ m.Run()
+ }
return errors.New("No server address specified")
}
@@ -224,12 +229,16 @@ func (f *FavoriteDialog) saveFavorite() error {
f.server.Port = port
if len(f.profile.GetActiveText()) == 0 {
- mbox_string := "Profile wasn't selected.\n\nPlease, select valid profile for this server.\nIf you haven't add profiles yet - you can do it\nin options on \"Urban Terror\" tab."
- m := gtk.NewMessageDialog(f.window, gtk.DIALOG_MODAL, gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, mbox_string)
- m.Response(func() {
- m.Destroy()
- })
- m.Run()
+ // Temporary disable all these modals on Linux.
+ // See https://github.com/mattn/go-gtk/issues/289.
+ if runtime.GOOS != "linux" {
+ mbox_string := "Profile wasn't selected.\n\nPlease, select valid profile for this server.\nIf you haven't add profiles yet - you can do it\nin options on \"Urban Terror\" tab."
+ m := gtk.NewMessageDialog(f.window, gtk.DIALOG_MODAL, gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, mbox_string)
+ m.Response(func() {
+ m.Destroy()
+ })
+ m.Run()
+ }
return errors.New("No game profile specified")
}
diff --git a/ui/mainwindow.go b/ui/mainwindow.go
index 2424951..231f266 100644
--- a/ui/mainwindow.go
+++ b/ui/mainwindow.go
@@ -234,12 +234,18 @@ func (m *MainWindow) deleteFromFavorites() {
}
if not_favorited {
- mbox_string := "Cannot delete server from favorites.\n\nServer isn't favorited."
- d := gtk.NewMessageDialog(m.window, gtk.DIALOG_MODAL, gtk.MESSAGE_INFO, gtk.BUTTONS_OK, mbox_string)
- d.Response(func() {
- d.Destroy()
- })
- d.Run()
+ // Temporary disable all these modals on Linux.
+ // See https://github.com/mattn/go-gtk/issues/289.
+ if runtime.GOOS != "linux" {
+ mbox_string := "Cannot delete server from favorites.\n\nServer isn't favorited."
+ d := gtk.NewMessageDialog(m.window, gtk.DIALOG_MODAL, gtk.MESSAGE_INFO, gtk.BUTTONS_OK, mbox_string)
+ d.Response(func() {
+ d.Destroy()
+ })
+ d.Run()
+ } else {
+ ctx.Eventer.LaunchEvent("setToolbarLabelText", map[string]string{"text": "Server isn't favorited"})
+ }
}
ctx.Eventer.LaunchEvent("loadFavoriteServers", map[string]string{})
@@ -250,19 +256,23 @@ func (m *MainWindow) deleteFromFavorites() {
func (m *MainWindow) dropDatabasesData() {
fmt.Println("Dropping database data...")
var will_continue bool = false
- mbox_string := "You are about to drop whole database data.\n\nAfter clicking \"YES\" ALL data in database (servers, profiles, settings, etc.)\nwill be lost FOREVER. Are you sure?"
- d := gtk.NewMessageDialog(m.window, gtk.DIALOG_MODAL, gtk.MESSAGE_WARNING, gtk.BUTTONS_YES_NO, mbox_string)
- d.Connect("response", func(resp *glib.CallbackContext) {
- if resp.Args(0) == 4294967287 {
- will_continue = false
- } else {
- will_continue = true
- }
- })
- d.Response(func() {
- d.Destroy()
- })
- d.Run()
+ // Temporary disable all these modals on Linux.
+ // See https://github.com/mattn/go-gtk/issues/289.
+ if runtime.GOOS != "linux" {
+ mbox_string := "You are about to drop whole database data.\n\nAfter clicking \"YES\" ALL data in database (servers, profiles, settings, etc.)\nwill be lost FOREVER. Are you sure?"
+ d := gtk.NewMessageDialog(m.window, gtk.DIALOG_MODAL, gtk.MESSAGE_WARNING, gtk.BUTTONS_YES_NO, mbox_string)
+ d.Connect("response", func(resp *glib.CallbackContext) {
+ if resp.Args(0) == 4294967287 {
+ will_continue = false
+ } else {
+ will_continue = true
+ }
+ d.Destroy()
+ })
+ d.Run()
+ } else {
+ ctx.Eventer.LaunchEvent("setToolbarLabelText", map[string]string{"text": "Remove ~/.config/urtrator/database.sqlite3 manually!"})
+ }
if will_continue {
ctx.Database.Db.MustExec("DELETE FROM servers")
diff --git a/ui/mainwindow_launch.go b/ui/mainwindow_launch.go
index 9fae39a..2180b29 100644
--- a/ui/mainwindow_launch.go
+++ b/ui/mainwindow_launch.go
@@ -4,6 +4,7 @@ import (
// stdlib
"errors"
"fmt"
+ "runtime"
"strings"
// Local
@@ -57,19 +58,25 @@ func (m *MainWindow) launchAsUsual() error {
// we should show notification to user.
if len(server_profile.Name) == 0 {
var will_continue bool = false
- mbox_string := "Selected server is offline.\n\nWould you still want to launch Urban Terror?\nIt will just launch a game, without connecting to\nany server."
- messagebox := gtk.NewMessageDialog(m.window, gtk.DIALOG_MODAL, gtk.MESSAGE_ERROR, gtk.BUTTONS_YES_NO, mbox_string)
- messagebox.Connect("response", func(resp *glib.CallbackContext) {
- if resp.Args(0) == 4294967287 {
- will_continue = false
- } else {
- will_continue = true
- }
- })
- messagebox.Response(func() {
- messagebox.Destroy()
- })
- messagebox.Run()
+ // Temporary disable all these modals on Linux.
+ // See https://github.com/mattn/go-gtk/issues/289.
+ if runtime.GOOS != "linux" {
+ mbox_string := "Selected server is offline.\n\nWould you still want to launch Urban Terror?\nIt will just launch a game, without connecting to\nany server."
+ messagebox := gtk.NewMessageDialog(m.window, gtk.DIALOG_MODAL, gtk.MESSAGE_ERROR, gtk.BUTTONS_YES_NO, mbox_string)
+ messagebox.Connect("response", func(resp *glib.CallbackContext) {
+ if resp.Args(0) == 4294967287 {
+ will_continue = false
+ } else {
+ will_continue = true
+ }
+ messagebox.Destroy()
+ })
+ messagebox.Run()
+ } else {
+ // We're okay to connect to empty server, temporary.
+ will_continue = true
+ }
+
if !will_continue {
return errors.New("User declined to connect to offline server")
}
@@ -83,12 +90,18 @@ func (m *MainWindow) launchAsUsual() error {
// This check only relevant to "Servers" tab, favorite servers
// have profiles defined (see next).
if len(profile_name) == 0 {
- mbox_string := "Invalid game profile selected.\n\nPlease, select profile and retry."
- messagebox := gtk.NewMessageDialog(m.window, gtk.DIALOG_MODAL, gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, mbox_string)
- messagebox.Response(func() {
- messagebox.Destroy()
- })
- messagebox.Run()
+ // Temporary disable all these modals on Linux.
+ // See https://github.com/mattn/go-gtk/issues/289.
+ if runtime.GOOS != "linux" {
+ mbox_string := "Invalid game profile selected.\n\nPlease, select profile and retry."
+ messagebox := gtk.NewMessageDialog(m.window, gtk.DIALOG_MODAL, gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, mbox_string)
+ messagebox.Response(func() {
+ messagebox.Destroy()
+ })
+ messagebox.Run()
+ } else {
+ ctx.Eventer.LaunchEvent("setToolbarLabelText", map[string]string{"text": "Invalid game profile selected."})
+ }
return errors.New("User didn't select valid profile.")
}
user_profile = ctx.Cache.Profiles[profile_name].Profile
@@ -97,12 +110,18 @@ func (m *MainWindow) launchAsUsual() error {
// information have higher priority, so we just override it :)
user_profile_cached, ok := ctx.Cache.Profiles[server_profile.ProfileToUse]
if !ok {
- mbox_string := "Invalid game profile specified for favorite server.\n\nPlease, edit your favorite server, select valid profile and retry."
- messagebox := gtk.NewMessageDialog(m.window, gtk.DIALOG_MODAL, gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, mbox_string)
- messagebox.Response(func() {
- messagebox.Destroy()
- })
- messagebox.Run()
+ // Temporary disable all these modals on Linux.
+ // See https://github.com/mattn/go-gtk/issues/289.
+ if runtime.GOOS != "linux" {
+ mbox_string := "Invalid game profile specified for favorite server.\n\nPlease, edit your favorite server, select valid profile and retry."
+ messagebox := gtk.NewMessageDialog(m.window, gtk.DIALOG_MODAL, gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, mbox_string)
+ messagebox.Response(func() {
+ messagebox.Destroy()
+ })
+ messagebox.Run()
+ } else {
+ ctx.Eventer.LaunchEvent("setToolbarLabelText", map[string]string{"text": "Invalid game profile specified in favorite entry."})
+ }
return errors.New("User didn't select valid profile.")
}
user_profile = user_profile_cached.Profile
@@ -154,19 +173,25 @@ func (m *MainWindow) launchWithQuickConnect() error {
func (m *MainWindow) launchActually(server_profile *datamodels.Server, user_profile *datamodels.Profile, password string, nickname_to_use string) error {
if server_profile.Name == "" {
var will_continue bool = false
- mbox_string := "Selected server is offline.\n\nWould you still want to launch Urban Terror?\nIt will just launch a game, without connecting to\nany server."
- messagebox := gtk.NewMessageDialog(m.window, gtk.DIALOG_MODAL, gtk.MESSAGE_ERROR, gtk.BUTTONS_YES_NO, mbox_string)
- messagebox.Connect("response", func(resp *glib.CallbackContext) {
- if resp.Args(0) == 4294967287 {
- will_continue = false
- } else {
- will_continue = true
- }
- })
- messagebox.Response(func() {
- messagebox.Destroy()
- })
- messagebox.Run()
+ // Temporary disable all these modals on Linux.
+ // See https://github.com/mattn/go-gtk/issues/289.
+ if runtime.GOOS != "linux" {
+ mbox_string := "Selected server is offline.\n\nWould you still want to launch Urban Terror?\nIt will just launch a game, without connecting to\nany server."
+ messagebox := gtk.NewMessageDialog(m.window, gtk.DIALOG_MODAL, gtk.MESSAGE_ERROR, gtk.BUTTONS_YES_NO, mbox_string)
+ messagebox.Connect("response", func(resp *glib.CallbackContext) {
+ if resp.Args(0) == 4294967287 {
+ will_continue = false
+ } else {
+ will_continue = true
+ }
+ messagebox.Destroy()
+ })
+ messagebox.Run()
+ } else {
+ // We're ok here, temporary.
+ will_continue = true
+ }
+
if !will_continue {
return errors.New("User declined to connect to offline server")
}
@@ -174,12 +199,18 @@ func (m *MainWindow) launchActually(server_profile *datamodels.Server, user_prof
// Check if server is applicable for selected profile.
if server_profile.Version != user_profile.Version {
- mbox_string := "Invalid game profile selected.\n\nSelected profile have different game version than server.\nPlease, select valid profile and retry."
- messagebox := gtk.NewMessageDialog(m.window, gtk.DIALOG_MODAL, gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, mbox_string)
- messagebox.Response(func() {
- messagebox.Destroy()
- })
- messagebox.Run()
+ // Temporary disable all these modals on Linux.
+ // See https://github.com/mattn/go-gtk/issues/289.
+ if runtime.GOOS != "linux" {
+ mbox_string := "Invalid game profile selected.\n\nSelected profile have different game version than server.\nPlease, select valid profile and retry."
+ messagebox := gtk.NewMessageDialog(m.window, gtk.DIALOG_MODAL, gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, mbox_string)
+ messagebox.Response(func() {
+ messagebox.Destroy()
+ })
+ messagebox.Run()
+ } else {
+ ctx.Eventer.LaunchEvent("setToolbarLabelText", map[string]string{"text": "Invalid game profile selected."})
+ }
return errors.New("User didn't select valid profile, mismatch with server's version.")
}
diff --git a/ui/options.go b/ui/options.go
index 4a97bd0..8e20cef 100644
--- a/ui/options.go
+++ b/ui/options.go
@@ -12,6 +12,7 @@ package ui
import (
// stdlib
"fmt"
+ "runtime"
// Local
"github.com/pztrn/urtrator/datamodels"
@@ -66,12 +67,16 @@ func (o *OptionsDialog) closeOptionsDialogWithSaving() {
o.saveGeneral()
- mbox_string := "Some options require application restart to be applied."
- m := gtk.NewMessageDialog(o.window, gtk.DIALOG_MODAL, gtk.MESSAGE_INFO, gtk.BUTTONS_OK, mbox_string)
- m.Response(func() {
- m.Destroy()
- })
- m.Run()
+ // Temporary disable all these modals on Linux.
+ // See https://github.com/mattn/go-gtk/issues/289.
+ if runtime.GOOS != "linux" {
+ mbox_string := "Some options require application restart to be applied."
+ m := gtk.NewMessageDialog(o.window, gtk.DIALOG_MODAL, gtk.MESSAGE_INFO, gtk.BUTTONS_OK, mbox_string)
+ m.Response(func() {
+ m.Destroy()
+ })
+ m.Run()
+ }
o.window.Destroy()
}
diff --git a/ui/options_profile.go b/ui/options_profile.go
index 1fbce2d..eefeb52 100644
--- a/ui/options_profile.go
+++ b/ui/options_profile.go
@@ -71,12 +71,18 @@ func (op *OptionsProfile) browseForBinaryHelper() {
if runtime.GOARCH == "amd64" {
if len(filename) > 0 && strings.Split(filename, ".")[1] != "x86_64" && strings.Split(filename, ".")[0] != "Quake3-UrT" {
fmt.Println("Invalid binary selected!")
- mbox_string := "Invalid binary selected!\nAccording to your OS, it should be Quake3-UrT.x86_64."
- m := gtk.NewMessageDialog(op.window, gtk.DIALOG_MODAL, gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, mbox_string)
- m.Response(func() {
- m.Destroy()
- })
- m.Run()
+ // Temporary disable all these modals on Linux.
+ // See https://github.com/mattn/go-gtk/issues/289.
+ if runtime.GOOS != "linux" {
+ mbox_string := "Invalid binary selected!\nAccording to your OS, it should be Quake3-UrT.x86_64."
+ m := gtk.NewMessageDialog(op.window, gtk.DIALOG_MODAL, gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, mbox_string)
+ m.Response(func() {
+ m.Destroy()
+ })
+ m.Run()
+ } else {
+ //
+ }
op.binary_path.SetText("")
}
}
@@ -87,21 +93,33 @@ func (op *OptionsProfile) browseForBinaryHelper() {
filename = strings.Split(filename, "Quake3-UrT.app")[1]
if len(filename) > 0 && !strings.Contains(strings.Split(filename, ".")[1], "x86_64") && !strings.Contains(strings.Split(filename, ".")[0], "Quake3-UrT") {
fmt.Println("Invalid binary selected!")
- mbox_string := "Invalid binary selected!\nAccording to your OS, it should be Quake3-UrT.app/Contents/MacOS/Quake3-UrT.x86_64."
+ // Temporary disable all these modals on Linux.
+ // See https://github.com/mattn/go-gtk/issues/289.
+ if runtime.GOOS != "linux" {
+ mbox_string := "Invalid binary selected!\nAccording to your OS, it should be Quake3-UrT.app/Contents/MacOS/Quake3-UrT.x86_64."
+ m := gtk.NewMessageDialog(op.window, gtk.DIALOG_MODAL, gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, mbox_string)
+ m.Response(func() {
+ m.Destroy()
+ })
+ m.Run()
+ } else {
+ //
+ }
+ op.binary_path.SetText("")
+ }
+ } else {
+ // Temporary disable all these modals on Linux.
+ // See https://github.com/mattn/go-gtk/issues/289.
+ if runtime.GOOS != "linux" {
+ mbox_string := "Invalid binary selected!\nAccording to your OS, it should be Quake3-UrT.app/Contents/MacOS/Quake3-UrT.x86_64.\n\nNote, that currently URTrator supports only official binary."
m := gtk.NewMessageDialog(op.window, gtk.DIALOG_MODAL, gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, mbox_string)
m.Response(func() {
m.Destroy()
})
m.Run()
- op.binary_path.SetText("")
+ } else {
+ //
}
- } else {
- mbox_string := "Invalid binary selected!\nAccording to your OS, it should be Quake3-UrT.app/Contents/MacOS/Quake3-UrT.x86_64.\n\nNote, that currently URTrator supports only official binary."
- m := gtk.NewMessageDialog(op.window, gtk.DIALOG_MODAL, gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, mbox_string)
- m.Response(func() {
- m.Destroy()
- })
- m.Run()
}
}
}