Bouty fixes

master
Marko Semet 2019-02-28 12:29:52 +01:00
parent e19ed602dd
commit 3fa80619d3
2 changed files with 32 additions and 58 deletions

View File

@ -88,54 +88,6 @@
</object>
</child>
</object>
<object class="GtkPaned">
<property name="visible">True</property>
<property name="can_focus">True</property>
<child>
<object class="GtkScrolledWindow">
<property name="width_request">300</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="shadow_type">in</property>
<child>
<object class="GtkTreeView" id="ClassList">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="search_column">0</property>
<property name="enable_grid_lines">vertical</property>
<child internal-child="selection">
<object class="GtkTreeSelection"/>
</child>
</object>
</child>
</object>
<packing>
<property name="resize">False</property>
<property name="shrink">False</property>
</packing>
</child>
<child>
<object class="GtkScrolledWindow">
<property name="width_request">100</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="shadow_type">in</property>
<child>
<object class="GtkTreeView" id="ItemList">
<property name="visible">True</property>
<property name="can_focus">True</property>
<child internal-child="selection">
<object class="GtkTreeSelection"/>
</child>
</object>
</child>
</object>
<packing>
<property name="resize">True</property>
<property name="shrink">False</property>
</packing>
</child>
</object>
<object class="GtkImage" id="image1">
<property name="visible">True</property>
<property name="can_focus">False</property>

View File

@ -3,6 +3,7 @@
#include <sirEdit/main.hpp>
#include <list>
#include <unordered_map>
using namespace std;
@ -12,6 +13,7 @@ static Glib::RefPtr<Gtk::Builder>* _mainWindowBuild = new Glib::RefPtr<Gtk::Buil
static Glib::RefPtr<Gtk::Builder>& mainWindowBuild = *_mainWindowBuild;
static sirEdit::data::HistoricalView* views;
static unordered_map<string, int> tabs;
extern void sirEdit::gui::openMainWindow(shared_ptr<sirEdit::data::Serializer> serializer, Glib::RefPtr<Gio::File> file) {
// Load window when required
@ -51,12 +53,27 @@ extern void sirEdit::gui::openMainWindow(shared_ptr<sirEdit::data::Serializer> s
size_t pos = 0;
for(auto& i : tools) {
Gtk::Button* name = new Gtk::Button(i.getName());
name->set_border_width(0);
name->set_property("relief", Gtk::RELIEF_NONE);
std::string tmp_name = i.getName();
name->signal_clicked().connect([tmp_name, notebook, view]() -> void {
Gtk::Label* label = new Gtk::Label(tmp_name);
Gtk::Widget* content = createToolEdit(tmp_name, view);
notebook->append_page(*content, *label);
name->signal_clicked().connect([tmp_name, notebook, view, toolsPopover]() -> void {
if(tabs.find(tmp_name) == tabs.end()) {
Gtk::HBox* labelBox = new Gtk::HBox();
Gtk::Label* label = new Gtk::Label(tmp_name);
Gtk::Image* closeImage = new Gtk::Image(Gtk::Stock::CLOSE, Gtk::ICON_SIZE_BUTTON);
Gtk::Button* closeButon = new Gtk::Button();
// TODO: Close tab
closeButon->add(*closeImage);
closeButon->set_property("relief", Gtk::RELIEF_NONE);
labelBox->pack_start(*label);
labelBox->pack_end(*closeButon);
labelBox->show_all();
Gtk::Widget* content = createToolEdit(tmp_name, view);
tabs[tmp_name] = notebook->append_page(*content, *labelBox);
notebook->set_current_page(tabs[tmp_name]);
}
else
notebook->set_current_page(tabs[tmp_name]);
toolsPopover->hide();
});
toolsList->insert(*name, pos);
pos++;
@ -97,15 +114,20 @@ extern void sirEdit::gui::openMainWindow(shared_ptr<sirEdit::data::Serializer> s
// Dialog update checkers
{
auto updateCheck = [toolName, newToolDialog, toolExit]() -> void {
if(toolName->get_text() == "") {
toolExit->set_sensitive(false);
auto updateCheck = [toolName, newToolDialog, toolFinish]() -> void {
string text = toolName->get_text();
if(text == "") {
toolFinish->set_sensitive(false);
return;
}
// TODO: Check if tool exists
for(auto i : views->getStaticView().getTools())
if(i.getName() == text) {
toolFinish->set_sensitive(false);
return;
}
toolExit->set_sensitive(true);
toolFinish->set_sensitive(true);
return;
};
toolName->signal_changed().connect(updateCheck);