Add gtk81
This commit is contained in:
parent
96f86c1e01
commit
e1dfd5f43b
|
@ -0,0 +1,19 @@
|
|||
set(CMAKE_CXX_STANDARD 17)
|
||||
cmake_minimum_required(VERSION 3.0.0)
|
||||
project(gtk81 VERSION 0.1.0)
|
||||
|
||||
include(CTest)
|
||||
enable_testing()
|
||||
|
||||
set(CPACK_PROJECT_NAME ${PROJECT_NAME})
|
||||
set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})
|
||||
|
||||
include(CPack)
|
||||
|
||||
find_package (PkgConfig REQUIRED)
|
||||
pkg_check_modules (GTKMM3 REQUIRED gtkmm-3.0)
|
||||
include_directories (${GTKMM3_INCLUDE_DIRS})
|
||||
link_directories (${GTKMM3_LIBRARY_DIRS})
|
||||
add_executable(gtk81 src/main.cc src/MyWin.cc)
|
||||
add_definitions (${GTKMM3_CFLAGS_OTHER})
|
||||
target_link_libraries (${PROJECT_NAME} ${GTKMM3_LIBRARIES})
|
|
@ -0,0 +1,3 @@
|
|||
cd build_mingw
|
||||
mingw32-make
|
||||
gtk81
|
|
@ -0,0 +1,122 @@
|
|||
#include "MyWin.hh"
|
||||
#include <iostream>
|
||||
|
||||
MyWin::MyWin()
|
||||
:m_vbox(Gtk::ORIENTATION_VERTICAL,0),
|
||||
btn_quit("Exit"),
|
||||
btn_add("Add Item"),
|
||||
btn_del("Delete Item"),
|
||||
label_id("ID:"),
|
||||
label_text("Text:"),
|
||||
label_percent("Percentage:")
|
||||
{
|
||||
//Initalize window
|
||||
set_icon_name("org.gtk.daleclack");
|
||||
set_default_size(200,400);
|
||||
set_title("TreeView Test1");
|
||||
|
||||
//Add widgets
|
||||
add(m_vbox);
|
||||
sw.set_policy(Gtk::POLICY_AUTOMATIC,Gtk::POLICY_AUTOMATIC);
|
||||
sw.add(m_treeview);
|
||||
m_vbox.pack_start(sw);
|
||||
|
||||
//Create the store
|
||||
ref_liststore=Gtk::ListStore::create(m_columns);
|
||||
m_treeview.set_model(ref_liststore);
|
||||
|
||||
//Append items
|
||||
row=*(ref_liststore->append());
|
||||
row[m_columns.m_col_id]=1;
|
||||
row[m_columns.m_col_text]="List 1";
|
||||
row[m_columns.m_col_percent]=35;
|
||||
|
||||
row=*(ref_liststore->append());
|
||||
row[m_columns.m_col_id]=2;
|
||||
row[m_columns.m_col_text]="List 2";
|
||||
row[m_columns.m_col_percent]=57;
|
||||
|
||||
row=*(ref_liststore->append());
|
||||
row[m_columns.m_col_id]=3;
|
||||
row[m_columns.m_col_text]="List 3";
|
||||
row[m_columns.m_col_percent]=90;
|
||||
|
||||
//Show Columns
|
||||
m_treeview.append_column("ID",m_columns.m_col_id);
|
||||
m_treeview.append_column("List",m_columns.m_col_text);
|
||||
|
||||
//Show percent number as a progress bar
|
||||
auto cell=Gtk::make_managed<Gtk::CellRendererProgress>();
|
||||
cols_count=m_treeview.append_column("Precentages",*cell);
|
||||
auto pColumn=m_treeview.get_column(cols_count-1);
|
||||
if(pColumn){
|
||||
pColumn->add_attribute(cell->property_value(),m_columns.m_col_percent);
|
||||
}
|
||||
|
||||
//Add Entries
|
||||
m_btnbox_id.pack_start(label_id,Gtk::PACK_SHRINK);
|
||||
m_btnbox_id.pack_start(entry_id,Gtk::PACK_EXPAND_PADDING);
|
||||
m_btnbox_id.set_homogeneous(false);
|
||||
m_btnbox_text.pack_start(label_text,Gtk::PACK_SHRINK);
|
||||
m_btnbox_text.pack_start(entry_text,Gtk::PACK_EXPAND_PADDING);
|
||||
m_btnbox_text.set_homogeneous(false);
|
||||
m_btnbox_percent.pack_start(label_percent,Gtk::PACK_SHRINK);
|
||||
m_btnbox_percent.pack_start(entry_percent,Gtk::PACK_EXPAND_PADDING);
|
||||
m_btnbox_percent.set_homogeneous(false);
|
||||
|
||||
//Show item button
|
||||
btn_del.signal_clicked().connect(sigc::mem_fun(*this,&MyWin::btndel_clicked));
|
||||
m_buttonbox.pack_start(btn_del,Gtk::PACK_SHRINK);
|
||||
|
||||
//"Add Item" button
|
||||
btn_add.signal_clicked().connect(sigc::mem_fun(*this,&MyWin::btnadd_clicked));
|
||||
m_buttonbox.pack_start(btn_add,Gtk::PACK_SHRINK);
|
||||
//"Exit" button
|
||||
btn_quit.signal_clicked().connect(sigc::mem_fun(*this,&MyWin::on_btnquit_clicked));
|
||||
m_buttonbox.pack_end(btn_quit,Gtk::PACK_SHRINK);
|
||||
|
||||
//Pack widgets
|
||||
m_vbox.pack_start(m_btnbox_id,Gtk::PACK_SHRINK);
|
||||
m_vbox.pack_start(m_btnbox_text,Gtk::PACK_SHRINK);
|
||||
m_vbox.pack_start(m_btnbox_percent,Gtk::PACK_SHRINK);
|
||||
m_vbox.pack_end(m_buttonbox,Gtk::PACK_SHRINK);
|
||||
|
||||
//Show all widgets
|
||||
show_all_children();
|
||||
}
|
||||
|
||||
void MyWin::on_btnquit_clicked(){
|
||||
hide();
|
||||
}
|
||||
|
||||
void MyWin::btndel_clicked(){
|
||||
//Delete the iter that selected
|
||||
ref_selection=m_treeview.get_selection();
|
||||
Gtk::TreeModel::iterator iter=ref_selection->get_selected();
|
||||
if(iter){
|
||||
ref_liststore->erase(iter);
|
||||
}
|
||||
}
|
||||
|
||||
void MyWin::btnadd_clicked(){
|
||||
//Add an Item
|
||||
Glib::ustring str,str_id,str_percent;
|
||||
int id,percent;
|
||||
|
||||
//Get content
|
||||
str_id=entry_id.get_text();
|
||||
str=entry_text.get_text();
|
||||
str_percent=entry_percent.get_text();
|
||||
id=atoi(str_id.c_str());
|
||||
percent=atoi(str_percent.c_str());
|
||||
|
||||
//Append item
|
||||
row=*(ref_liststore->append());
|
||||
row[m_columns.m_col_id]=id;
|
||||
row[m_columns.m_col_text]=str;
|
||||
row[m_columns.m_col_percent]=percent;
|
||||
}
|
||||
|
||||
MyWin::~MyWin(){
|
||||
|
||||
}
|
|
@ -0,0 +1,41 @@
|
|||
#pragma once
|
||||
|
||||
#include <gtkmm.h>
|
||||
|
||||
class MyWin : public Gtk::Window{
|
||||
public:
|
||||
MyWin();
|
||||
virtual ~MyWin();
|
||||
protected:
|
||||
//Signal Handlers
|
||||
void on_btnquit_clicked();
|
||||
void btndel_clicked();
|
||||
void btnadd_clicked();
|
||||
|
||||
//TreeModel Columns
|
||||
class ModelColumn : public Gtk::TreeModelColumnRecord{
|
||||
public:
|
||||
ModelColumn()
|
||||
{add(m_col_id);add(m_col_text);add(m_col_percent);}
|
||||
Gtk::TreeModelColumn<int> m_col_id;
|
||||
Gtk::TreeModelColumn<Glib::ustring> m_col_text;
|
||||
Gtk::TreeModelColumn<int> m_col_percent;
|
||||
};
|
||||
|
||||
int cols_count;
|
||||
ModelColumn m_columns;
|
||||
Gtk::TreeRow row;
|
||||
Glib::RefPtr<Gtk::ListStore> ref_liststore;
|
||||
Glib::RefPtr<Gtk::TreeSelection> ref_selection;
|
||||
|
||||
//Child widgets
|
||||
Gtk::Box m_vbox;
|
||||
Gtk::ButtonBox m_buttonbox,m_btnbox_id,m_btnbox_text,m_btnbox_percent;
|
||||
Gtk::ScrolledWindow sw;
|
||||
Gtk::TreeView m_treeview;
|
||||
Gtk::Button btn_del;
|
||||
Gtk::Button btn_quit;
|
||||
Gtk::Label label_id,label_text,label_percent;
|
||||
Gtk::Entry entry_id,entry_text,entry_percent;
|
||||
Gtk::Button btn_add;
|
||||
};
|
|
@ -0,0 +1,7 @@
|
|||
#include "MyWin.hh"
|
||||
|
||||
int main(int argc,char **argv){
|
||||
auto app=Gtk::Application::create(argc,argv,"org.gtk.daleclack");
|
||||
MyWin window;
|
||||
return app->run(window);
|
||||
}
|
Loading…
Reference in New Issue