From bd04870aa30efef7b1839daabb133d0d6f97d4d8 Mon Sep 17 00:00:00 2001 From: "Stanislav N. aka pztrn" Date: Sat, 26 Nov 2016 09:05:48 +0500 Subject: [PATCH] Splitted sidebar's list into two and separate CVars window. Splitted sidebar's list into two separate lists - one for general server's info (hostname, players, etc.) and one for players list. Also, moved CVars list to separate window which can be shown by clicking approriate button under player's list. --- doc/installation/macos/make-app.sh | 3 +++ ui/mainwindow.go | 41 ++++++++++++++++++++---------- ui/mainwindow_init.go | 33 ++++++++++++++++++++++++ ui/server_info.go | 33 ------------------------ 4 files changed, 64 insertions(+), 46 deletions(-) delete mode 100644 ui/server_info.go diff --git a/doc/installation/macos/make-app.sh b/doc/installation/macos/make-app.sh index f9415b4..d401562 100755 --- a/doc/installation/macos/make-app.sh +++ b/doc/installation/macos/make-app.sh @@ -150,6 +150,9 @@ ln -s ../../../Framework . cd ../../../MacOS GDK_PIXBUF_MODULE_FILE="../lib/gdk-pixbuf-2.0/loaders.cache" GDK_PIXBUF_MODULEDIR="../lib/gdk-pixbuf-2.0/2.10.0/loaders/" GTK_EXE_PREFIX="../lib" GTK_PATH="../Framework" ./gdk-pixbuf-query-loaders > ../lib/gdk-pixbuf-2.0/2.10.0/loaders.cache +echo "Copying icon theme..." + + echo "Finishing..." echo "URTrator is ready! Copy URTrator.app bundle to Applications and launch it!" diff --git a/ui/mainwindow.go b/ui/mainwindow.go index 8571e3d..2678388 100644 --- a/ui/mainwindow.go +++ b/ui/mainwindow.go @@ -68,8 +68,10 @@ type MainWindow struct { fav_servers_hide_private *gtk.CheckButton // Game launch button. launch_button *gtk.Button - // Server's information. + // Server's main information. server_info *gtk.TreeView + // Players information. + players_info *gtk.TreeView // Quick connect: server address qc_server_address *gtk.Entry // Quick connect: password @@ -92,9 +94,12 @@ type MainWindow struct { fav_servers_store *gtk.ListStore // Server's information store. server_info_store *gtk.ListStore + // Players information store. + players_info_store *gtk.ListStore // Dialogs. options_dialog *OptionsDialog + server_cvars_dialog *ServerCVarsDialog // Other // Old profiles count. @@ -568,9 +573,25 @@ func (m *MainWindow) showHide() { } } +func (m *MainWindow) showServerCVars() { + current_tab := m.tab_widget.GetTabLabelText(m.tab_widget.GetNthPage(m.tab_widget.GetCurrentPage())) + if m.use_other_servers_tab { + if strings.Contains(current_tab, "Servers") { + current_tab = "Favorites" + } else if strings.Contains(current_tab, "Favorites") { + current_tab = "Servers" + } + } + srv_address := m.getIpFromServersList(current_tab) + if len(srv_address) > 0 { + m.server_cvars_dialog.Initialize(m.window, srv_address) + } +} + func (m *MainWindow) showShortServerInformation() { fmt.Println("Server selection changed, updating server's information widget...") m.server_info_store.Clear() + m.players_info_store.Clear() current_tab := m.tab_widget.GetTabLabelText(m.tab_widget.GetNthPage(m.tab_widget.GetCurrentPage())) if m.use_other_servers_tab { if strings.Contains(current_tab, "Servers") { @@ -642,15 +663,6 @@ func (m *MainWindow) showShortServerInformation() { } m.server_info_store.SetValue(iter, 1, passworded_status) - // Just a separator. - iter = new(gtk.TreeIter) - m.server_info_store.Append(iter) - - // Players information - iter = new(gtk.TreeIter) - m.server_info_store.Append(iter) - m.server_info_store.SetValue(iter, 0, "PLAYERS") - // Sorting keys of map. players_map_keys := make([]string, 0, len(parsed_players_info)) for k := range parsed_players_info { @@ -664,11 +676,13 @@ func (m *MainWindow) showShortServerInformation() { for k := range players_map_keys { iter = new(gtk.TreeIter) nick := ctx.Colorizer.Fix(parsed_players_info[players_map_keys[k]]["nick"]) - m.server_info_store.Append(iter) - m.server_info_store.SetValue(iter, 0, nick) - m.server_info_store.SetValue(iter, 1, "(frags: " + parsed_players_info[players_map_keys[k]]["frags"] + " | ping: " + parsed_players_info[players_map_keys[k]]["ping"] + ")") + m.players_info_store.Append(iter) + m.players_info_store.SetValue(iter, 0, nick) + m.players_info_store.SetValue(iter, 1, parsed_players_info[players_map_keys[k]]["frags"]) + m.players_info_store.SetValue(iter, 2, parsed_players_info[players_map_keys[k]]["ping"]) } + /* // Just a separator. iter = new(gtk.TreeIter) m.server_info_store.Append(iter) @@ -692,6 +706,7 @@ func (m *MainWindow) showShortServerInformation() { m.server_info_store.SetValue(iter, 0, general_data_keys[k]) m.server_info_store.SetValue(iter, 1, parsed_general_data[general_data_keys[k]]) } + */ } } diff --git a/ui/mainwindow_init.go b/ui/mainwindow_init.go index e3270d1..0b530a2 100644 --- a/ui/mainwindow_init.go +++ b/ui/mainwindow_init.go @@ -84,6 +84,7 @@ func (m *MainWindow) Initialize() { // Dialogs initialization. m.options_dialog = &OptionsDialog{} + m.server_cvars_dialog = &ServerCVarsDialog{} // Main menu. if runtime.GOOS == "darwin" { @@ -239,6 +240,7 @@ func (m *MainWindow) initializeSidebar() { // Scrolled thing. si_scroll := gtk.NewScrolledWindow(nil, nil) + si_scroll.SetPolicy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) si_vbox.PackStart(si_scroll, true, true, 5) // Server's information. @@ -253,6 +255,33 @@ func (m *MainWindow) initializeSidebar() { si_scroll.Add(m.server_info) + // Players information. + players_info_frame := gtk.NewFrame("Players") + sidebar_vbox.PackStart(players_info_frame, true, true, 5) + + pi_scroll := gtk.NewScrolledWindow(nil, nil) + pi_scroll.SetPolicy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) + players_info_frame.Add(pi_scroll) + + m.players_info = gtk.NewTreeView() + m.players_info.SetModel(m.players_info_store) + pi_scroll.Add(m.players_info) + + name_column := gtk.NewTreeViewColumnWithAttributes("Player name", gtk.NewCellRendererText(), "markup", 0) + m.players_info.AppendColumn(name_column) + + frags_column := gtk.NewTreeViewColumnWithAttributes("Frags", gtk.NewCellRendererText(), "markup", 1) + m.players_info.AppendColumn(frags_column) + + ping_column := gtk.NewTreeViewColumnWithAttributes("Ping", gtk.NewCellRendererText(), "markup", 2) + m.players_info.AppendColumn(ping_column) + + // Show CVars button. + show_cvars_button := gtk.NewButtonWithLabel("Show CVars") + show_cvars_button.SetTooltipText("Show server's CVars") + show_cvars_button.Clicked(m.showServerCVars) + sidebar_vbox.PackStart(show_cvars_button, false, true, 5) + // Quick connect frame. quick_connect_frame := gtk.NewFrame("Quick connect") sidebar_vbox.PackStart(quick_connect_frame, false, true, 5) @@ -347,6 +376,10 @@ func (m *MainWindow) initializeStorages() { // Server's information store. Used for quick preview in main window. m.server_info_store = gtk.NewListStore(glib.G_TYPE_STRING, glib.G_TYPE_STRING) + // Players information store. Used in sidebar for players list for + // currently selected server. + m.players_info_store = gtk.NewListStore(glib.G_TYPE_STRING, glib.G_TYPE_STRING, glib.G_TYPE_STRING) + // Profiles count after filling combobox. Defaulting to 0. m.old_profiles_count = 0 diff --git a/ui/server_info.go b/ui/server_info.go deleted file mode 100644 index daccc3b..0000000 --- a/ui/server_info.go +++ /dev/null @@ -1,33 +0,0 @@ -// URTator - Urban Terror server browser and game launcher, written in -// Go. -// -// Copyright (c) 2016, Stanslav N. a.k.a pztrn (or p0z1tr0n) -// All rights reserved. -// -// Licensed under Terms and Conditions of GNU General Public License -// version 3 or any higher. -// ToDo: put full text of license here. -package ui - -import ( - // stdlib - "fmt" - - // Local - //"github.com/pztrn/urtrator/datamodels" - - // Other - "github.com/mattn/go-gtk/gtk" - //"github.com/mattn/go-gtk/glib" -) - -type ServerInfoDialog struct { - // Window. - window *gtk.Window - // Main Vertical Box. - vbox *gtk.VBox -} - -func (sid *ServerInfoDialog) Initialize() { - fmt.Println("Showing server's information...") -}