This commit is contained in:
2018-11-10 20:58:15 +05:00
parent 39ac02dfc5
commit 2b3c9ef9ea
25 changed files with 1054 additions and 1022 deletions

View File

@@ -1,47 +1,47 @@
package ui
import (
// stdlib
"strings"
// stdlib
"strings"
// other
"github.com/mattn/go-gtk/glib"
"github.com/mattn/go-gtk/gtk"
// other
"github.com/mattn/go-gtk/glib"
"github.com/mattn/go-gtk/gtk"
)
func (m *MainWindow) getGameModeName(name string) string {
val, ok := m.gamemodes[name]
val, ok := m.gamemodes[name]
if !ok {
return "Unknown or custom"
}
if !ok {
return "Unknown or custom"
}
return val
return val
}
func (m *MainWindow) getIpFromServersList(current_tab string) string {
// Getting server's address from list.
// Assuming that we're on "Servers" tab by default.
sel := m.all_servers.GetSelection()
model := m.all_servers.GetModel()
if strings.Contains(current_tab, ctx.Translator.Translate("Favorites", nil)) {
sel = m.fav_servers.GetSelection()
model = m.fav_servers.GetModel()
}
// Getting server's address from list.
// Assuming that we're on "Servers" tab by default.
sel := m.all_servers.GetSelection()
model := m.all_servers.GetModel()
if strings.Contains(current_tab, ctx.Translator.Translate("Favorites", nil)) {
sel = m.fav_servers.GetSelection()
model = m.fav_servers.GetModel()
}
iter := new(gtk.TreeIter)
_ = sel.GetSelected(iter)
iter := new(gtk.TreeIter)
_ = sel.GetSelected(iter)
// Getting server address.
var srv_addr string
srv_addr_gval := glib.ValueFromNative(srv_addr)
// Getting server address.
var srv_addr string
srv_addr_gval := glib.ValueFromNative(srv_addr)
if strings.Contains(current_tab, ctx.Translator.Translate("Servers", nil)) {
model.GetValue(iter, m.column_pos["Servers"]["IP"], srv_addr_gval)
} else if strings.Contains(current_tab, ctx.Translator.Translate("Favorites", nil)) {
model.GetValue(iter, m.column_pos["Favorites"]["IP"], srv_addr_gval)
}
server_address := srv_addr_gval.GetString()
if strings.Contains(current_tab, ctx.Translator.Translate("Servers", nil)) {
model.GetValue(iter, m.column_pos["Servers"]["IP"], srv_addr_gval)
} else if strings.Contains(current_tab, ctx.Translator.Translate("Favorites", nil)) {
model.GetValue(iter, m.column_pos["Favorites"]["IP"], srv_addr_gval)
}
server_address := srv_addr_gval.GetString()
return server_address
return server_address
}

View File

@@ -10,16 +10,16 @@
package ui
import (
// local
"github.com/pztrn/urtrator/context"
// local
"github.com/pztrn/urtrator/context"
)
var (
ctx *context.Context
ctx *context.Context
)
func NewMainWindow(c *context.Context) *MainWindow {
ctx = c
m := MainWindow{}
return &m
ctx = c
m := MainWindow{}
return &m
}

View File

@@ -10,109 +10,108 @@
package ui
import (
// stdlib
"fmt"
//"runtime"
//"sort"
//"strconv"
//"strings"
// stdlib
"fmt"
//"runtime"
//"sort"
//"strconv"
//"strings"
// Local
//"github.com/pztrn/urtrator/datamodels"
//"github.com/pztrn/urtrator/ioq3dataparser"
// Local
//"github.com/pztrn/urtrator/datamodels"
//"github.com/pztrn/urtrator/ioq3dataparser"
// github
"github.com/therecipe/qt/widgets"
// github
"github.com/therecipe/qt/widgets"
)
type MainWindow struct {
//////////////////////////////////////////////////
// Main widgets and pointers.
//////////////////////////////////////////////////
// Application.
app *widgets.QApplication
// Main window.
window *widgets.QMainWindow
// Main menu.
mainmenu *widgets.QMenuBar
// Main vertical box.
vbox *widgets.QVBoxLayout
// Toolbar.
toolbar *widgets.QToolBar
// Splitter.
splitter *widgets.QSplitter
// Tabs widget.
tabs *widgets.QTabWidget
//////////////////////////////////////////////////
// Main widgets and pointers.
//////////////////////////////////////////////////
// Application.
app *widgets.QApplication
// Main window.
window *widgets.QMainWindow
// Main menu.
mainmenu *widgets.QMenuBar
// Main vertical box.
vbox *widgets.QVBoxLayout
// Toolbar.
toolbar *widgets.QToolBar
// Splitter.
splitter *widgets.QSplitter
// Tabs widget.
tabs *widgets.QTabWidget
//////////////////////////////////////////////////
// Servers lists and related.
//////////////////////////////////////////////////
// "Servers" tab list.
all_servers *widgets.QTreeView
// Hide offline servers checkbox.
all_servers_hide_offline *widgets.QCheckBox
// Hide private servers?
all_servers_hide_private *widgets.QCheckBox
// Server's version.
all_servers_version *widgets.QComboBox
// Game mode.
all_servers_gamemode *widgets.QComboBox
// Favorites tab list.
fav_servers *widgets.QTreeView
// Hide offline servers checkbox.
fav_servers_hide_offline *widgets.QCheckBox
// Hide private servers?
fav_servers_hide_private *widgets.QCheckBox
// Server's version.
fav_servers_version *widgets.QComboBox
// Game mode.
fav_servers_gamemode *widgets.QComboBox
// Sidebar's server's information widget.
sidebar_server_info *widgets.QTreeView
// Sidebar's server's players widget.
sidebar_server_players *widgets.QTreeView
//////////////////////////////////////////////////
// Servers lists and related.
//////////////////////////////////////////////////
// "Servers" tab list.
all_servers *widgets.QTreeView
// Hide offline servers checkbox.
all_servers_hide_offline *widgets.QCheckBox
// Hide private servers?
all_servers_hide_private *widgets.QCheckBox
// Server's version.
all_servers_version *widgets.QComboBox
// Game mode.
all_servers_gamemode *widgets.QComboBox
// Favorites tab list.
fav_servers *widgets.QTreeView
// Hide offline servers checkbox.
fav_servers_hide_offline *widgets.QCheckBox
// Hide private servers?
fav_servers_hide_private *widgets.QCheckBox
// Server's version.
fav_servers_version *widgets.QComboBox
// Game mode.
fav_servers_gamemode *widgets.QComboBox
// Sidebar's server's information widget.
sidebar_server_info *widgets.QTreeView
// Sidebar's server's players widget.
sidebar_server_players *widgets.QTreeView
//////////////////////////////////////////////////
// Datas.
//////////////////////////////////////////////////
// Window size.
window_width int
window_height int
// Window position.
window_pos_x int
window_pos_y int
// Supported game modes.
gamemodes map[string]string
// Columns names for servers tabs.
column_names map[string]string
// Real columns positions on servers tabs.
column_pos map[string]map[string]int
//////////////////////////////////////////////////
// Datas.
//////////////////////////////////////////////////
// Window size.
window_width int
window_height int
// Window position.
window_pos_x int
window_pos_y int
// Supported game modes.
gamemodes map[string]string
// Columns names for servers tabs.
column_names map[string]string
// Real columns positions on servers tabs.
column_pos map[string]map[string]int
}
func (m *MainWindow) close(a bool) {
fmt.Println("Closing URTrator...")
m.app.Quit()
fmt.Println("Closing URTrator...")
m.app.Quit()
}
func (m *MainWindow) dropDatabasesData(bool) {
fmt.Println("About to drop databases data...")
fmt.Println("About to drop databases data...")
}
func (m *MainWindow) showAboutDialog(a bool) {
fmt.Println("Showing about dialog...")
fmt.Println("Showing about dialog...")
}
func (m *MainWindow) showAboutQtDialog(a bool) {
fmt.Println("Showing about Qt dialog...")
widgets.QMessageBox_AboutQt(m.window, "About Qt")
fmt.Println("Showing about Qt dialog...")
widgets.QMessageBox_AboutQt(m.window, "About Qt")
}
func (m *MainWindow) showOptionsDialog(a bool) {
fmt.Println("Showing options dialog...")
fmt.Println("Showing options dialog...")
}
func (m *MainWindow) splitterMoved(pos int, index int) {
fmt.Println("Splitter moved!")
fmt.Println(index, pos)
fmt.Println("Splitter moved!")
fmt.Println(index, pos)
}

View File

@@ -10,336 +10,336 @@
package ui
import (
// stdlib
"fmt"
"os"
//"runtime"
"sort"
"strconv"
// stdlib
"fmt"
"os"
//"runtime"
"sort"
"strconv"
// local
"github.com/pztrn/urtrator/common"
// local
"github.com/pztrn/urtrator/common"
// Qt5
"github.com/therecipe/qt/core"
"github.com/therecipe/qt/widgets"
// Qt5
"github.com/therecipe/qt/core"
"github.com/therecipe/qt/widgets"
)
func (m *MainWindow) Initialize() {
fmt.Println("Initializing main window...")
fmt.Println("Initializing main window...")
m.app = widgets.NewQApplication(len(os.Args), os.Args)
m.app = widgets.NewQApplication(len(os.Args), os.Args)
m.initializeStorages()
m.initializeStorages()
m.window = widgets.NewQMainWindow(nil, 0)
m.window.SetWindowTitle("URTrator")
m.window = widgets.NewQMainWindow(nil, 0)
m.window.SetWindowTitle("URTrator")
// Restoring window position.
var win_pos_x_str string = "0"
var win_pos_y_str string = "0"
saved_win_pos_x_str, ok := ctx.Cfg.Cfg["/mainwindow/position_x"]
if ok {
win_pos_x_str = saved_win_pos_x_str
}
saved_win_pos_y_str, ok := ctx.Cfg.Cfg["/mainwindow/position_y"]
if ok {
win_pos_y_str = saved_win_pos_y_str
}
win_pos_x, _ := strconv.Atoi(win_pos_x_str)
win_pos_y, _ := strconv.Atoi(win_pos_y_str)
// Restoring window position.
var win_pos_x_str string = "0"
var win_pos_y_str string = "0"
saved_win_pos_x_str, ok := ctx.Cfg.Cfg["/mainwindow/position_x"]
if ok {
win_pos_x_str = saved_win_pos_x_str
}
saved_win_pos_y_str, ok := ctx.Cfg.Cfg["/mainwindow/position_y"]
if ok {
win_pos_y_str = saved_win_pos_y_str
}
win_pos_x, _ := strconv.Atoi(win_pos_x_str)
win_pos_y, _ := strconv.Atoi(win_pos_y_str)
// Restoring window size.
var win_size_width_str string = "1000"
var win_size_height_str string = "600"
saved_win_size_width_str, ok := ctx.Cfg.Cfg["/mainwindow/width"]
if ok {
win_size_width_str = saved_win_size_width_str
}
saved_win_size_height_str, ok := ctx.Cfg.Cfg["/mainwindow/height"]
if ok {
win_size_height_str = saved_win_size_height_str
}
// Restoring window size.
var win_size_width_str string = "1000"
var win_size_height_str string = "600"
saved_win_size_width_str, ok := ctx.Cfg.Cfg["/mainwindow/width"]
if ok {
win_size_width_str = saved_win_size_width_str
}
saved_win_size_height_str, ok := ctx.Cfg.Cfg["/mainwindow/height"]
if ok {
win_size_height_str = saved_win_size_height_str
}
m.window_width, _ = strconv.Atoi(win_size_width_str)
m.window_height, _ = strconv.Atoi(win_size_height_str)
m.window.SetGeometry2(win_pos_x, win_pos_y, m.window_width, m.window_height)
m.window_width, _ = strconv.Atoi(win_size_width_str)
m.window_height, _ = strconv.Atoi(win_size_height_str)
m.window.SetGeometry2(win_pos_x, win_pos_y, m.window_width, m.window_height)
m.initializeMenu()
m.initializeMenu()
// Central widget.
cv := widgets.NewQWidget(nil, core.Qt__Widget)
//cv_policy := widgets.NewQSizePolicy2(widgets.QSizePolicy__Expanding, widgets.QSizePolicy__Expanding, widgets.QSizePolicy__DefaultType)
//cv.SetSizePolicy(cv_policy)
m.window.SetCentralWidget(cv)
// Central widget.
cv := widgets.NewQWidget(nil, core.Qt__Widget)
//cv_policy := widgets.NewQSizePolicy2(widgets.QSizePolicy__Expanding, widgets.QSizePolicy__Expanding, widgets.QSizePolicy__DefaultType)
//cv.SetSizePolicy(cv_policy)
m.window.SetCentralWidget(cv)
// Main vertical box.
m.vbox = widgets.NewQVBoxLayout()
m.vbox.SetContentsMargins(4, 4, 4, 4)
cv.SetLayout(m.vbox)
// Main vertical box.
m.vbox = widgets.NewQVBoxLayout()
m.vbox.SetContentsMargins(4, 4, 4, 4)
cv.SetLayout(m.vbox)
m.initializeToolbar()
m.initializeTabs()
m.initializeSidebar()
m.initializeToolbar()
m.initializeTabs()
m.initializeSidebar()
m.window.Show()
m.window.Show()
// Restore splitter position.
// We will restore saved thing, or will use "window_width - 150".
saved_pane_pos, ok := ctx.Cfg.Cfg["/mainwindow/pane_negative_position"]
if ok {
pane_negative_pos, _ := strconv.Atoi(saved_pane_pos)
new_splitter_pos := m.window_width - pane_negative_pos
fmt.Println(new_splitter_pos)
m.splitter.MoveSplitter(new_splitter_pos, 1)
fmt.Println(m.splitter.ClosestLegalPosition(1, new_splitter_pos))
} else {
g := m.window.Geometry()
w := g.Width()
m.splitter.MoveSplitter(w - 150, 1)
}
// Restore splitter position.
// We will restore saved thing, or will use "window_width - 150".
saved_pane_pos, ok := ctx.Cfg.Cfg["/mainwindow/pane_negative_position"]
if ok {
pane_negative_pos, _ := strconv.Atoi(saved_pane_pos)
new_splitter_pos := m.window_width - pane_negative_pos
fmt.Println(new_splitter_pos)
m.splitter.MoveSplitter(new_splitter_pos, 1)
fmt.Println(m.splitter.ClosestLegalPosition(1, new_splitter_pos))
} else {
g := m.window.Geometry()
w := g.Width()
m.splitter.MoveSplitter(w-150, 1)
}
m.splitter.ConnectSplitterMoved(m.splitterMoved)
m.splitter.ConnectSplitterMoved(m.splitterMoved)
widgets.QApplication_Exec()
widgets.QApplication_Exec()
}
func (m *MainWindow) initializeSidebar() {
sidebar_widget := widgets.NewQWidget(nil, core.Qt__Widget)
m.splitter.AddWidget(sidebar_widget)
sidebar_widget := widgets.NewQWidget(nil, core.Qt__Widget)
m.splitter.AddWidget(sidebar_widget)
sidebar_layout := widgets.NewQVBoxLayout()
sidebar_layout.SetContentsMargins(4, 4, 4, 4)
sidebar_widget.SetLayout(sidebar_layout)
sidebar_layout := widgets.NewQVBoxLayout()
sidebar_layout.SetContentsMargins(4, 4, 4, 4)
sidebar_widget.SetLayout(sidebar_layout)
// Server's information list.
m.sidebar_server_info = widgets.NewQTreeView(nil)
sidebar_layout.AddWidget(m.sidebar_server_info, 0, core.Qt__AlignHCenter & core.Qt__AlignTop)
// Server's information list.
m.sidebar_server_info = widgets.NewQTreeView(nil)
sidebar_layout.AddWidget(m.sidebar_server_info, 0, core.Qt__AlignHCenter&core.Qt__AlignTop)
// Server's players widget.
m.sidebar_server_players = widgets.NewQTreeView(nil)
sidebar_layout.AddWidget(m.sidebar_server_players, 0, core.Qt__AlignHCenter & core.Qt__AlignTop)
// Server's players widget.
m.sidebar_server_players = widgets.NewQTreeView(nil)
sidebar_layout.AddWidget(m.sidebar_server_players, 0, core.Qt__AlignHCenter&core.Qt__AlignTop)
// Add spacer.
spacer := widgets.NewQSpacerItem(6, 6, widgets.QSizePolicy__Minimum, widgets.QSizePolicy__Expanding)
sidebar_layout.AddSpacerItem(spacer)
// Add spacer.
spacer := widgets.NewQSpacerItem(6, 6, widgets.QSizePolicy__Minimum, widgets.QSizePolicy__Expanding)
sidebar_layout.AddSpacerItem(spacer)
}
func (m *MainWindow) initializeStorages() {
m.gamemodes = make(map[string]string)
m.gamemodes = map[string]string{
"1": "Last Man Standing",
"2": "Free For All",
"3": "Team DM",
"4": "Team Survivor",
"5": "Follow The Leader",
"6": "Cap'n'Hold",
"7": "Capture The Flag",
"8": "Bomb",
"9": "Jump",
"10": "Freeze Tag",
"11": "Gun Game",
"12": "Instagib",
}
m.gamemodes = make(map[string]string)
m.gamemodes = map[string]string{
"1": "Last Man Standing",
"2": "Free For All",
"3": "Team DM",
"4": "Team Survivor",
"5": "Follow The Leader",
"6": "Cap'n'Hold",
"7": "Capture The Flag",
"8": "Bomb",
"9": "Jump",
"10": "Freeze Tag",
"11": "Gun Game",
"12": "Instagib",
}
// Columns names.
// Key - default position in lists.
m.column_names = map[string]string{
"2": "Name",
"3": "Mode",
"4": "Map",
"5": "Players",
"6": "Ping",
"7": "Version",
"8": "IP",
}
// Real columns positions.
m.column_pos = make(map[string]map[string]int)
m.column_pos["Servers"] = make(map[string]int)
m.column_pos["Favorites"] = make(map[string]int)
// Columns names.
// Key - default position in lists.
m.column_names = map[string]string{
"2": "Name",
"3": "Mode",
"4": "Map",
"5": "Players",
"6": "Ping",
"7": "Version",
"8": "IP",
}
// Real columns positions.
m.column_pos = make(map[string]map[string]int)
m.column_pos["Servers"] = make(map[string]int)
m.column_pos["Favorites"] = make(map[string]int)
}
func (m *MainWindow) initializeTabs() {
m.splitter = widgets.NewQSplitter(nil)
m.splitter.SetOrientation(core.Qt__Horizontal)
m.vbox.AddWidget(m.splitter, 0, core.Qt__AlignHCenter & core.Qt__AlignTop)
m.splitter = widgets.NewQSplitter(nil)
m.splitter.SetOrientation(core.Qt__Horizontal)
m.vbox.AddWidget(m.splitter, 0, core.Qt__AlignHCenter&core.Qt__AlignTop)
m.tabs = widgets.NewQTabWidget(nil)
m.splitter.AddWidget(m.tabs)
m.tabs = widgets.NewQTabWidget(nil)
m.splitter.AddWidget(m.tabs)
// Default size policy for filters widget.
filters_size_policy := widgets.NewQSizePolicy2(widgets.QSizePolicy__Minimum, widgets.QSizePolicy__Minimum, widgets.QSizePolicy__DefaultType)
// Default size policy for filters widget.
filters_size_policy := widgets.NewQSizePolicy2(widgets.QSizePolicy__Minimum, widgets.QSizePolicy__Minimum, widgets.QSizePolicy__DefaultType)
//////////////////////////////////////////////////
// Servers page.
//////////////////////////////////////////////////
serverspagewidget := widgets.NewQWidget(nil, core.Qt__Widget)
serverspagewidget_policy := widgets.NewQSizePolicy2(widgets.QSizePolicy__Expanding, widgets.QSizePolicy__Expanding, widgets.QSizePolicy__DefaultType)
serverspagewidget.SetSizePolicy(serverspagewidget_policy)
m.tabs.AddTab(serverspagewidget, ctx.Translator.Translate("Servers", nil))
serverspagewidget_layout := widgets.NewQHBoxLayout()
serverspagewidget_layout.SetContentsMargins(4, 4, 4, 4)
serverspagewidget.SetLayout(serverspagewidget_layout)
//////////////////////////////////////////////////
// Servers page.
//////////////////////////////////////////////////
serverspagewidget := widgets.NewQWidget(nil, core.Qt__Widget)
serverspagewidget_policy := widgets.NewQSizePolicy2(widgets.QSizePolicy__Expanding, widgets.QSizePolicy__Expanding, widgets.QSizePolicy__DefaultType)
serverspagewidget.SetSizePolicy(serverspagewidget_policy)
m.tabs.AddTab(serverspagewidget, ctx.Translator.Translate("Servers", nil))
serverspagewidget_layout := widgets.NewQHBoxLayout()
serverspagewidget_layout.SetContentsMargins(4, 4, 4, 4)
serverspagewidget.SetLayout(serverspagewidget_layout)
// Servers list.
m.all_servers = widgets.NewQTreeView(nil)
serverspagewidget_layout.AddWidget(m.all_servers, 0, core.Qt__AlignLeft & core.Qt__AlignTop)
// Servers list.
m.all_servers = widgets.NewQTreeView(nil)
serverspagewidget_layout.AddWidget(m.all_servers, 0, core.Qt__AlignLeft&core.Qt__AlignTop)
// Servers list filters widget.
serverspagewidget_filters_widget := widgets.NewQWidget(nil, core.Qt__Widget)
serverspagewidget_filters_widget_policy := widgets.NewQSizePolicy2(widgets.QSizePolicy__Minimum, widgets.QSizePolicy__Minimum, widgets.QSizePolicy__DefaultType)
serverspagewidget_filters_widget.SetSizePolicy(serverspagewidget_filters_widget_policy)
serverspagewidget_layout.AddWidget(serverspagewidget_filters_widget, 0, core.Qt__AlignRight & core.Qt__AlignTop)
// Servers list filters widget.
serverspagewidget_filters_widget := widgets.NewQWidget(nil, core.Qt__Widget)
serverspagewidget_filters_widget_policy := widgets.NewQSizePolicy2(widgets.QSizePolicy__Minimum, widgets.QSizePolicy__Minimum, widgets.QSizePolicy__DefaultType)
serverspagewidget_filters_widget.SetSizePolicy(serverspagewidget_filters_widget_policy)
serverspagewidget_layout.AddWidget(serverspagewidget_filters_widget, 0, core.Qt__AlignRight&core.Qt__AlignTop)
// Servers list filters layout.
serverspagewidget_filters_layout := widgets.NewQVBoxLayout()
serverspagewidget_filters_widget.SetLayout(serverspagewidget_filters_layout)
serverspagewidget_filters_layout.SetContentsMargins(4, 4, 4, 4)
// Servers list filters layout.
serverspagewidget_filters_layout := widgets.NewQVBoxLayout()
serverspagewidget_filters_widget.SetLayout(serverspagewidget_filters_layout)
serverspagewidget_filters_layout.SetContentsMargins(4, 4, 4, 4)
// Filters itself.
// Filters itself.
// Hide offline servers checkbox.
m.all_servers_hide_offline = widgets.NewQCheckBox(nil)
m.all_servers_hide_offline.SetText(ctx.Translator.Translate("Hide offline servers", nil))
m.all_servers_hide_offline.SetSizePolicy(filters_size_policy)
serverspagewidget_filters_layout.AddWidget(m.all_servers_hide_offline, 0, core.Qt__AlignTop)
// Restore value of hide offline servers checkbox.
// Set to checked for new installations.
all_servers_hide_offline_cb_val, ok := ctx.Cfg.Cfg["/serverslist/all_servers/hide_offline"]
if !ok {
m.all_servers_hide_offline.SetCheckState(2)
} else {
if all_servers_hide_offline_cb_val == "1" {
m.all_servers_hide_offline.SetCheckState(2)
}
}
// Hide offline servers checkbox.
m.all_servers_hide_offline = widgets.NewQCheckBox(nil)
m.all_servers_hide_offline.SetText(ctx.Translator.Translate("Hide offline servers", nil))
m.all_servers_hide_offline.SetSizePolicy(filters_size_policy)
serverspagewidget_filters_layout.AddWidget(m.all_servers_hide_offline, 0, core.Qt__AlignTop)
// Restore value of hide offline servers checkbox.
// Set to checked for new installations.
all_servers_hide_offline_cb_val, ok := ctx.Cfg.Cfg["/serverslist/all_servers/hide_offline"]
if !ok {
m.all_servers_hide_offline.SetCheckState(2)
} else {
if all_servers_hide_offline_cb_val == "1" {
m.all_servers_hide_offline.SetCheckState(2)
}
}
// Hide private servers.
m.all_servers_hide_private = widgets.NewQCheckBox(nil)
m.all_servers_hide_private.SetText(ctx.Translator.Translate("Hide private servers", nil))
m.all_servers_hide_private.SetSizePolicy(filters_size_policy)
serverspagewidget_filters_layout.AddWidget(m.all_servers_hide_private, 0, core.Qt__AlignTop)
// Restore checkbox value.
all_servers_hide_private_cb_val, ok := ctx.Cfg.Cfg["/serverslist/all_servers/hide_private"]
if !ok {
m.all_servers_hide_private.SetCheckState(2)
} else {
if all_servers_hide_private_cb_val == "1" {
m.all_servers_hide_private.SetCheckState(2)
}
}
// Hide private servers.
m.all_servers_hide_private = widgets.NewQCheckBox(nil)
m.all_servers_hide_private.SetText(ctx.Translator.Translate("Hide private servers", nil))
m.all_servers_hide_private.SetSizePolicy(filters_size_policy)
serverspagewidget_filters_layout.AddWidget(m.all_servers_hide_private, 0, core.Qt__AlignTop)
// Restore checkbox value.
all_servers_hide_private_cb_val, ok := ctx.Cfg.Cfg["/serverslist/all_servers/hide_private"]
if !ok {
m.all_servers_hide_private.SetCheckState(2)
} else {
if all_servers_hide_private_cb_val == "1" {
m.all_servers_hide_private.SetCheckState(2)
}
}
// Game version.
m.all_servers_version = widgets.NewQComboBox(nil)
m.all_servers_version.SetSizePolicy(filters_size_policy)
serverspagewidget_filters_layout.AddWidget(m.all_servers_version, 0, core.Qt__AlignTop)
// Fill game version combobox with supported versions.
m.all_servers_version.AddItems(common.SUPPORTED_URT_VERSIONS)
// Game version.
m.all_servers_version = widgets.NewQComboBox(nil)
m.all_servers_version.SetSizePolicy(filters_size_policy)
serverspagewidget_filters_layout.AddWidget(m.all_servers_version, 0, core.Qt__AlignTop)
// Fill game version combobox with supported versions.
m.all_servers_version.AddItems(common.SUPPORTED_URT_VERSIONS)
// Game mode.
m.all_servers_gamemode = widgets.NewQComboBox(nil)
m.all_servers_gamemode.SetSizePolicy(filters_size_policy)
serverspagewidget_filters_layout.AddWidget(m.all_servers_gamemode, 0, core.Qt__AlignTop)
// Fill game mode with supported gamemodes.
// First - create sorted gamemodes keys slice.
gm_keys := make([]int, 0, len(m.gamemodes))
for k, _ := range m.gamemodes {
ki, _ := strconv.Atoi(k)
gm_keys = append(gm_keys, ki)
}
sort.Ints(gm_keys)
// Create a strings slice with gamemodes, using sorted keys.
gmodes := make([]string, 0, len(m.gamemodes))
// Add "All gamemodes" as first gamemode :)
gmodes = append(gmodes, ctx.Translator.Translate("All gamemodes", nil))
for i := range gm_keys {
ks := strconv.Itoa(gm_keys[i])
gmodes = append(gmodes, m.gamemodes[ks])
}
m.all_servers_gamemode.AddItems(gmodes)
// Game mode.
m.all_servers_gamemode = widgets.NewQComboBox(nil)
m.all_servers_gamemode.SetSizePolicy(filters_size_policy)
serverspagewidget_filters_layout.AddWidget(m.all_servers_gamemode, 0, core.Qt__AlignTop)
// Fill game mode with supported gamemodes.
// First - create sorted gamemodes keys slice.
gm_keys := make([]int, 0, len(m.gamemodes))
for k, _ := range m.gamemodes {
ki, _ := strconv.Atoi(k)
gm_keys = append(gm_keys, ki)
}
sort.Ints(gm_keys)
// Create a strings slice with gamemodes, using sorted keys.
gmodes := make([]string, 0, len(m.gamemodes))
// Add "All gamemodes" as first gamemode :)
gmodes = append(gmodes, ctx.Translator.Translate("All gamemodes", nil))
for i := range gm_keys {
ks := strconv.Itoa(gm_keys[i])
gmodes = append(gmodes, m.gamemodes[ks])
}
m.all_servers_gamemode.AddItems(gmodes)
// After creating filters - add spacer to move them on top of widget.
all_servers_filters_spacer := widgets.NewQSpacerItem(6, 6, widgets.QSizePolicy__Minimum, widgets.QSizePolicy__Expanding)
serverspagewidget_filters_layout.AddSpacerItem(all_servers_filters_spacer)
// After creating filters - add spacer to move them on top of widget.
all_servers_filters_spacer := widgets.NewQSpacerItem(6, 6, widgets.QSizePolicy__Minimum, widgets.QSizePolicy__Expanding)
serverspagewidget_filters_layout.AddSpacerItem(all_servers_filters_spacer)
//////////////////////////////////////////////////
// Favorites page.
//////////////////////////////////////////////////
favoritespagewidget := widgets.NewQWidget(nil, core.Qt__Widget)
favoritespagewidget_policy := widgets.NewQSizePolicy2(widgets.QSizePolicy__Expanding, widgets.QSizePolicy__Expanding, widgets.QSizePolicy__DefaultType)
favoritespagewidget.SetSizePolicy(favoritespagewidget_policy)
m.tabs.AddTab(favoritespagewidget, ctx.Translator.Translate("Favorites", nil))
favoritespagewidget_layout := widgets.NewQHBoxLayout()
favoritespagewidget_layout.SetContentsMargins(4, 4, 4, 4)
favoritespagewidget.SetLayout(favoritespagewidget_layout)
//////////////////////////////////////////////////
// Favorites page.
//////////////////////////////////////////////////
favoritespagewidget := widgets.NewQWidget(nil, core.Qt__Widget)
favoritespagewidget_policy := widgets.NewQSizePolicy2(widgets.QSizePolicy__Expanding, widgets.QSizePolicy__Expanding, widgets.QSizePolicy__DefaultType)
favoritespagewidget.SetSizePolicy(favoritespagewidget_policy)
m.tabs.AddTab(favoritespagewidget, ctx.Translator.Translate("Favorites", nil))
favoritespagewidget_layout := widgets.NewQHBoxLayout()
favoritespagewidget_layout.SetContentsMargins(4, 4, 4, 4)
favoritespagewidget.SetLayout(favoritespagewidget_layout)
// Favorites list.
m.fav_servers = widgets.NewQTreeView(nil)
favoritespagewidget_layout.AddWidget(m.fav_servers, 0, core.Qt__AlignHCenter & core.Qt__AlignTop)
// Favorites list.
m.fav_servers = widgets.NewQTreeView(nil)
favoritespagewidget_layout.AddWidget(m.fav_servers, 0, core.Qt__AlignHCenter&core.Qt__AlignTop)
// Favorites list filters widget.
favoritespagewidget_filters_widget := widgets.NewQWidget(nil, core.Qt__Widget)
favoritespagewidget_filters_widget_policy := widgets.NewQSizePolicy2(widgets.QSizePolicy__Minimum, widgets.QSizePolicy__Minimum, widgets.QSizePolicy__DefaultType)
favoritespagewidget_filters_widget.SetSizePolicy(favoritespagewidget_filters_widget_policy)
favoritespagewidget_layout.AddWidget(favoritespagewidget_filters_widget, 0, core.Qt__AlignRight & core.Qt__AlignTop)
// Favorites list filters widget.
favoritespagewidget_filters_widget := widgets.NewQWidget(nil, core.Qt__Widget)
favoritespagewidget_filters_widget_policy := widgets.NewQSizePolicy2(widgets.QSizePolicy__Minimum, widgets.QSizePolicy__Minimum, widgets.QSizePolicy__DefaultType)
favoritespagewidget_filters_widget.SetSizePolicy(favoritespagewidget_filters_widget_policy)
favoritespagewidget_layout.AddWidget(favoritespagewidget_filters_widget, 0, core.Qt__AlignRight&core.Qt__AlignTop)
// Favorites list filters layout.
favoritespagewidget_filters_layout := widgets.NewQVBoxLayout()
favoritespagewidget_filters_widget.SetLayout(favoritespagewidget_filters_layout)
favoritespagewidget_filters_layout.SetContentsMargins(4, 4, 4, 4)
// Favorites list filters layout.
favoritespagewidget_filters_layout := widgets.NewQVBoxLayout()
favoritespagewidget_filters_widget.SetLayout(favoritespagewidget_filters_layout)
favoritespagewidget_filters_layout.SetContentsMargins(4, 4, 4, 4)
// Filters itself.
// Filters itself.
// Hide offline servers checkbox.
m.fav_servers_hide_offline = widgets.NewQCheckBox(nil)
m.fav_servers_hide_offline.SetText(ctx.Translator.Translate("Hide offline servers", nil))
m.fav_servers_hide_offline.SetSizePolicy(filters_size_policy)
favoritespagewidget_filters_layout.AddWidget(m.fav_servers_hide_offline, 0, core.Qt__AlignTop)
// Restore it's value.
favorite_servers_hide_offline_cb_val, ok := ctx.Cfg.Cfg["/serverslist/favorite/hide_offline"]
if !ok {
m.fav_servers_hide_offline.SetCheckState(2)
} else {
if favorite_servers_hide_offline_cb_val == "1" {
m.fav_servers_hide_offline.SetCheckState(2)
}
}
// Hide offline servers checkbox.
m.fav_servers_hide_offline = widgets.NewQCheckBox(nil)
m.fav_servers_hide_offline.SetText(ctx.Translator.Translate("Hide offline servers", nil))
m.fav_servers_hide_offline.SetSizePolicy(filters_size_policy)
favoritespagewidget_filters_layout.AddWidget(m.fav_servers_hide_offline, 0, core.Qt__AlignTop)
// Restore it's value.
favorite_servers_hide_offline_cb_val, ok := ctx.Cfg.Cfg["/serverslist/favorite/hide_offline"]
if !ok {
m.fav_servers_hide_offline.SetCheckState(2)
} else {
if favorite_servers_hide_offline_cb_val == "1" {
m.fav_servers_hide_offline.SetCheckState(2)
}
}
// Hide private servers.
m.fav_servers_hide_private = widgets.NewQCheckBox(nil)
m.fav_servers_hide_private.SetText(ctx.Translator.Translate("Hide private servers", nil))
m.fav_servers_hide_private.SetSizePolicy(filters_size_policy)
favoritespagewidget_filters_layout.AddWidget(m.fav_servers_hide_private, 0, core.Qt__AlignTop)
fav_servers_hide_private_cb_val, ok := ctx.Cfg.Cfg["/serverslist/favorite/hide_private"]
if !ok {
m.fav_servers_hide_private.SetCheckState(2)
} else {
if fav_servers_hide_private_cb_val == "1" {
m.fav_servers_hide_private.SetCheckState(2)
}
}
// Hide private servers.
m.fav_servers_hide_private = widgets.NewQCheckBox(nil)
m.fav_servers_hide_private.SetText(ctx.Translator.Translate("Hide private servers", nil))
m.fav_servers_hide_private.SetSizePolicy(filters_size_policy)
favoritespagewidget_filters_layout.AddWidget(m.fav_servers_hide_private, 0, core.Qt__AlignTop)
fav_servers_hide_private_cb_val, ok := ctx.Cfg.Cfg["/serverslist/favorite/hide_private"]
if !ok {
m.fav_servers_hide_private.SetCheckState(2)
} else {
if fav_servers_hide_private_cb_val == "1" {
m.fav_servers_hide_private.SetCheckState(2)
}
}
// Game version.
m.fav_servers_version = widgets.NewQComboBox(nil)
m.fav_servers_version.SetSizePolicy(filters_size_policy)
favoritespagewidget_filters_layout.AddWidget(m.fav_servers_version, 0, core.Qt__AlignTop)
// Fill game version combobox with supported versions.
m.fav_servers_version.AddItems(common.SUPPORTED_URT_VERSIONS)
// Game version.
m.fav_servers_version = widgets.NewQComboBox(nil)
m.fav_servers_version.SetSizePolicy(filters_size_policy)
favoritespagewidget_filters_layout.AddWidget(m.fav_servers_version, 0, core.Qt__AlignTop)
// Fill game version combobox with supported versions.
m.fav_servers_version.AddItems(common.SUPPORTED_URT_VERSIONS)
// Game mode.
m.fav_servers_gamemode = widgets.NewQComboBox(nil)
m.fav_servers_gamemode.SetSizePolicy(filters_size_policy)
favoritespagewidget_filters_layout.AddWidget(m.fav_servers_gamemode, 0, core.Qt__AlignTop)
// Fill game mode with supported gamemodes.
// As we have previously created this list - reuse it.
m.fav_servers_gamemode.AddItems(gmodes)
// Game mode.
m.fav_servers_gamemode = widgets.NewQComboBox(nil)
m.fav_servers_gamemode.SetSizePolicy(filters_size_policy)
favoritespagewidget_filters_layout.AddWidget(m.fav_servers_gamemode, 0, core.Qt__AlignTop)
// Fill game mode with supported gamemodes.
// As we have previously created this list - reuse it.
m.fav_servers_gamemode.AddItems(gmodes)
// After creating filters - add spacer to move them on top of widget.
fav_servers_filters_spacer := widgets.NewQSpacerItem(6, 6, widgets.QSizePolicy__Minimum, widgets.QSizePolicy__Expanding)
favoritespagewidget_filters_layout.AddSpacerItem(fav_servers_filters_spacer)
// After creating filters - add spacer to move them on top of widget.
fav_servers_filters_spacer := widgets.NewQSpacerItem(6, 6, widgets.QSizePolicy__Minimum, widgets.QSizePolicy__Expanding)
favoritespagewidget_filters_layout.AddSpacerItem(fav_servers_filters_spacer)
}
func (m *MainWindow) initializeToolbar() {
m.toolbar = widgets.NewQToolBar("Main Toolbar", m.window)
m.window.AddToolBar(core.Qt__TopToolBarArea, m.toolbar)
m.toolbar = widgets.NewQToolBar("Main Toolbar", m.window)
m.window.AddToolBar(core.Qt__TopToolBarArea, m.toolbar)
}

View File

@@ -12,61 +12,61 @@
package ui
import (
// stdlib
//"fmt"
//"os"
//"runtime"
// stdlib
//"fmt"
//"os"
//"runtime"
// Qt5
"github.com/therecipe/qt/widgets"
// Qt5
"github.com/therecipe/qt/widgets"
)
func (m *MainWindow) initializeMenu() {
m.mainmenu = widgets.NewQMenuBar(nil)
m.mainmenu = widgets.NewQMenuBar(nil)
//////////////////////////////////////////////////
// File menu.
//////////////////////////////////////////////////
filemenu := widgets.NewQMenu2("&File", nil)
//////////////////////////////////////////////////
// File menu.
//////////////////////////////////////////////////
filemenu := widgets.NewQMenu2("&File", nil)
// Options action.
file_options := filemenu.AddAction("&Options")
file_options.SetMenuRole(widgets.QAction__PreferencesRole)
file_options.ConnectTriggered(m.showOptionsDialog)
// Options action.
file_options := filemenu.AddAction("&Options")
file_options.SetMenuRole(widgets.QAction__PreferencesRole)
file_options.ConnectTriggered(m.showOptionsDialog)
// Separator :)
filemenu.AddSeparator()
// Separator :)
filemenu.AddSeparator()
// Exit URTrator.
file_exit := filemenu.AddAction("&Exit")
file_exit.SetMenuRole(widgets.QAction__QuitRole)
file_exit.ConnectTriggered(m.close)
// Exit URTrator.
file_exit := filemenu.AddAction("&Exit")
file_exit.SetMenuRole(widgets.QAction__QuitRole)
file_exit.ConnectTriggered(m.close)
m.mainmenu.AddMenu(filemenu)
//////////////////////////////////////////////////
// About menu
//////////////////////////////////////////////////
aboutmenu := widgets.NewQMenu2("&Help", nil)
m.mainmenu.AddMenu(filemenu)
//////////////////////////////////////////////////
// About menu
//////////////////////////////////////////////////
aboutmenu := widgets.NewQMenu2("&Help", nil)
// About URTrator.
about_about := aboutmenu.AddAction("&About URTrator...")
about_about.SetMenuRole(widgets.QAction__AboutRole)
about_about.ConnectTriggered(m.showAboutDialog)
// About URTrator.
about_about := aboutmenu.AddAction("&About URTrator...")
about_about.SetMenuRole(widgets.QAction__AboutRole)
about_about.ConnectTriggered(m.showAboutDialog)
// About Qt.
about_about_qt := aboutmenu.AddAction("About &Qt...")
about_about_qt.SetMenuRole(widgets.QAction__AboutQtRole)
about_about_qt.ConnectTriggered(m.showAboutQtDialog)
// About Qt.
about_about_qt := aboutmenu.AddAction("About &Qt...")
about_about_qt.SetMenuRole(widgets.QAction__AboutQtRole)
about_about_qt.ConnectTriggered(m.showAboutQtDialog)
// Separator :)
aboutmenu.AddSeparator()
// Separator :)
aboutmenu.AddSeparator()
// Drop database data.
about_drop_database := aboutmenu.AddAction("&Drop database...")
//about_drop_database.SetMenuRole(widgets.QAction__ApplicationSpecificRole)
about_drop_database.ConnectTriggered(m.dropDatabasesData)
// Drop database data.
about_drop_database := aboutmenu.AddAction("&Drop database...")
//about_drop_database.SetMenuRole(widgets.QAction__ApplicationSpecificRole)
about_drop_database.ConnectTriggered(m.dropDatabasesData)
m.mainmenu.AddMenu(aboutmenu)
m.mainmenu.AddMenu(aboutmenu)
m.window.SetMenuBar(m.mainmenu)
m.window.SetMenuBar(m.mainmenu)
}