Add Scores Window for gtk141
This commit is contained in:
parent
8e751b2b7d
commit
b32b98b1db
|
@ -1,30 +1,39 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!-- Generated with glade 3.40.0 -->
|
||||||
<!-- Created with Cambalache 0.11.2 -->
|
<!-- Created with Cambalache 0.11.2 -->
|
||||||
<interface>
|
<interface>
|
||||||
<requires lib="gtk+" version="3.24"/>
|
<requires lib="gtk+" version="3.24"/>
|
||||||
<object class="GtkWindow" id="scores_win">
|
<object class="GtkWindow" id="scores_win">
|
||||||
|
<property name="can-focus">False</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkBox">
|
<object class="GtkBox">
|
||||||
|
<property name="can-focus">False</property>
|
||||||
<property name="orientation">vertical</property>
|
<property name="orientation">vertical</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkTreeView" id="scores_view">
|
<object class="GtkTreeView" id="scores_view">
|
||||||
<property name="height-request">300</property>
|
|
||||||
<property name="valign">start</property>
|
|
||||||
<property name="width-request">400</property>
|
<property name="width-request">400</property>
|
||||||
|
<property name="height-request">300</property>
|
||||||
|
<property name="can-focus">False</property>
|
||||||
|
<property name="valign">start</property>
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
<property name="position">1</property>
|
<property name="position">1</property>
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkBox" id="btn_box">
|
<object class="GtkBox" id="btn_box">
|
||||||
<property name="height-request">3</property>
|
<property name="height-request">3</property>
|
||||||
|
<property name="can-focus">False</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkLabel">
|
<object class="GtkLabel">
|
||||||
|
<property name="can-focus">False</property>
|
||||||
<property name="hexpand">True</property>
|
<property name="hexpand">True</property>
|
||||||
<property name="label"> </property>
|
<property name="label"> </property>
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
<property name="fill">False</property>
|
<property name="fill">False</property>
|
||||||
<property name="position">1</property>
|
<property name="position">1</property>
|
||||||
</packing>
|
</packing>
|
||||||
|
@ -32,13 +41,18 @@
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkButton" id="btnclose">
|
<object class="GtkButton" id="btnclose">
|
||||||
<property name="label">Close</property>
|
<property name="label">Close</property>
|
||||||
|
<property name="can-focus">False</property>
|
||||||
|
<property name="receives-default">False</property>
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
<property name="position">2</property>
|
<property name="position">2</property>
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
<property name="fill">False</property>
|
<property name="fill">False</property>
|
||||||
<property name="position">2</property>
|
<property name="position">2</property>
|
||||||
</packing>
|
</packing>
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
#include "InputBox.hh"
|
#include "InputBox.hh"
|
||||||
#include <fstream>
|
|
||||||
|
|
||||||
InputBox::InputBox(BaseObjectType *cobject, const Glib::RefPtr<Gtk::Builder> &ref_Glade)
|
InputBox::InputBox(BaseObjectType *cobject, const Glib::RefPtr<Gtk::Builder> &ref_Glade)
|
||||||
: Gtk::Dialog(cobject),
|
: Gtk::Dialog(cobject),
|
||||||
|
@ -34,7 +33,7 @@ void InputBox::on_response(int response_id)
|
||||||
|
|
||||||
// If show scores checkbutton is checked, show scores window
|
// If show scores checkbutton is checked, show scores window
|
||||||
if(check_scores->get_active()){
|
if(check_scores->get_active()){
|
||||||
scores_win1->show_all();
|
scores_win1->show_with_vectors(names, times);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
hide();
|
hide();
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <gtkmm.h>
|
#include <gtkmm.h>
|
||||||
#include <vector>
|
|
||||||
#include "jsonfile.hh"
|
#include "jsonfile.hh"
|
||||||
#include "ScoresWin.hh"
|
#include "ScoresWin.hh"
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,42 @@ ScoresWin::ScoresWin(BaseObjectType *cobject, const Glib::RefPtr<Gtk::Builder> &
|
||||||
{
|
{
|
||||||
// Get Widgets
|
// Get Widgets
|
||||||
ref_builder->get_widget("btnclose", btnclose);
|
ref_builder->get_widget("btnclose", btnclose);
|
||||||
|
ref_builder->get_widget("scores_view", tree_view);
|
||||||
btnclose->signal_clicked().connect(sigc::mem_fun(*this, &ScoresWin::hide));
|
btnclose->signal_clicked().connect(sigc::mem_fun(*this, &ScoresWin::hide));
|
||||||
|
|
||||||
|
// Create the list store
|
||||||
|
store = Gtk::ListStore::create(column1);
|
||||||
|
tree_view->set_model(store);
|
||||||
|
tree_view->append_column("name", column1.player_name);
|
||||||
|
tree_view->append_column("time", column1.win_time);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ScoresWin::show_with_vectors(std::vector<std::string> &name_vec, std::vector<int> &time_vec){
|
||||||
|
// Clear the store
|
||||||
|
store->clear();
|
||||||
|
|
||||||
|
// Append data to the store
|
||||||
|
for(int i = 0; i < name_vec.size(); i++){
|
||||||
|
auto row = *(store->append());
|
||||||
|
row[column1.player_name] = name_vec[i];
|
||||||
|
row[column1.win_time] = time_vec[i];
|
||||||
|
}
|
||||||
|
store->set_sort_func(column1.win_time, sigc::mem_fun(*this, &ScoresWin::sort_func));
|
||||||
|
|
||||||
|
show_all();
|
||||||
|
}
|
||||||
|
|
||||||
|
int ScoresWin::sort_func(const Gtk::TreeModel::iterator &iter1, const Gtk::TreeModel::iterator &iter2){
|
||||||
|
auto row1 = *iter1;
|
||||||
|
auto row2 = *iter2;
|
||||||
|
if(row1[column1.win_time] < row2[column1.win_time]){
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
if(row1[column1.win_time] == row2[column1.win_time]){
|
||||||
|
return 0;
|
||||||
|
}else{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ScoresWin *ScoresWin::create()
|
ScoresWin *ScoresWin::create()
|
||||||
|
|
|
@ -7,6 +7,7 @@ class ScoresWin : public Gtk::Window{
|
||||||
public:
|
public:
|
||||||
static ScoresWin *create();
|
static ScoresWin *create();
|
||||||
ScoresWin(BaseObjectType *cobject, const Glib::RefPtr<Gtk::Builder> &ref_Glade);
|
ScoresWin(BaseObjectType *cobject, const Glib::RefPtr<Gtk::Builder> &ref_Glade);
|
||||||
|
void show_with_vectors(std::vector<std::string> &name_vec, std::vector<int> &time_vec);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Glib::RefPtr<Gtk::Builder> ref_builder;
|
Glib::RefPtr<Gtk::Builder> ref_builder;
|
||||||
|
@ -14,4 +15,21 @@ class ScoresWin : public Gtk::Window{
|
||||||
// Child widgets
|
// Child widgets
|
||||||
Gtk::Button *btnclose;
|
Gtk::Button *btnclose;
|
||||||
Gtk::TreeView *tree_view;
|
Gtk::TreeView *tree_view;
|
||||||
|
|
||||||
|
// TreeView data
|
||||||
|
class ModelColumns : public Gtk::TreeModelColumnRecord{
|
||||||
|
public:
|
||||||
|
ModelColumns(){
|
||||||
|
add(player_name);
|
||||||
|
add(win_time);
|
||||||
|
}
|
||||||
|
Gtk::TreeModelColumn<std::string> player_name;
|
||||||
|
Gtk::TreeModelColumn<int> win_time;
|
||||||
|
};
|
||||||
|
ModelColumns column1;
|
||||||
|
|
||||||
|
Glib::RefPtr<Gtk::ListStore> store;
|
||||||
|
|
||||||
|
// Sort function
|
||||||
|
int sort_func(const Gtk::TreeModel::iterator &iter1, const Gtk::TreeModel::iterator &iter2);
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "../json_nlohmann/json.hpp"
|
#include "../json_nlohmann/json.hpp"
|
||||||
|
#include <fstream>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
using json = nlohmann::json;
|
using json = nlohmann::json;
|
||||||
|
|
Loading…
Reference in New Issue