Gdlmm port nuances. Signals/Containers etc...
This commit is contained in:
parent
68c6cef003
commit
2d8805c554
4 changed files with 36 additions and 48 deletions
|
|
@ -47,42 +47,36 @@ Panel::Panel(workspace::PanelManager &panel_manager,
|
||||||
val.set(long_name);
|
val.set(long_name);
|
||||||
g_object_set_property (G_OBJECT (dockItem.gobj()), "long-name", val.gobj());
|
g_object_set_property (G_OBJECT (dockItem.gobj()), "long-name", val.gobj());
|
||||||
|
|
||||||
// Set the grip handle
|
/* Set the grip handle */
|
||||||
|
FIXME("Implement interpanel docking. Try using the dockItem.signal_dock(). Signal Handler will switch the grip depending on dock position. For iconify and interpanel docking, it needs to be a plain label");
|
||||||
|
/* @todo This code causes a crash on panel iconify and interpanel docking */
|
||||||
GdlDockItemGrip *grip = GDL_DOCK_ITEM_GRIP(
|
GdlDockItemGrip *grip = GDL_DOCK_ITEM_GRIP(
|
||||||
gdl_dock_item_get_grip(dockItem.gobj()));
|
gdl_dock_item_get_grip(dockItem.gobj()));
|
||||||
gdl_dock_item_grip_show_handle(grip);
|
gdl_dock_item_grip_show_handle(grip);
|
||||||
gdl_dock_item_grip_set_label(grip, ((Widget&)panelBar).gobj());
|
gdl_dock_item_grip_set_label(grip, ((Widget&)panelBar).gobj());
|
||||||
|
/* End FIXME */
|
||||||
|
|
||||||
// Set up the panel body
|
/* Set up the panel body */
|
||||||
gtk_container_add (GTK_CONTAINER(dockItem.gobj()), GTK_WIDGET(gobj()));
|
// Add this panel's container to the DockItem
|
||||||
|
dockItem.add((Gtk::Widget&)*this);
|
||||||
|
|
||||||
gtk_widget_show (GTK_WIDGET(dockItem.gobj()));
|
/* Connect the signals */
|
||||||
|
dockItem.signal_hide().connect(
|
||||||
|
sigc::mem_fun(*this, &Panel::on_item_hidden));
|
||||||
|
|
||||||
// Connect the signals
|
dockItem.show();
|
||||||
hide_panel_handler_id = g_signal_connect (GTK_OBJECT(dockItem.gobj()),
|
|
||||||
"hide", G_CALLBACK(on_item_hidden), this);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Panel::~Panel()
|
Panel::~Panel()
|
||||||
{
|
{
|
||||||
TODO("Fix for Gdlmm");
|
/* Detach the panel bar */
|
||||||
//REQUIRE(dockItem != NULL);
|
|
||||||
|
|
||||||
// Detach the panel bar
|
|
||||||
GdlDockItemGrip *grip = GDL_DOCK_ITEM_GRIP(
|
GdlDockItemGrip *grip = GDL_DOCK_ITEM_GRIP(
|
||||||
gdl_dock_item_get_grip(dockItem.gobj()));
|
gdl_dock_item_get_grip(dockItem.gobj()));
|
||||||
gtk_container_remove (GTK_CONTAINER(grip),
|
gtk_container_remove (GTK_CONTAINER(grip),
|
||||||
((Widget&)panelBar).gobj());
|
((Widget&)panelBar).gobj());
|
||||||
|
|
||||||
gtk_container_remove (GTK_CONTAINER(dockItem.gobj()), GTK_WIDGET(gobj()));
|
/* Remove this panel's container from the DockItem */
|
||||||
|
dockItem.remove((Gtk::Widget&)*this);
|
||||||
// Detach the signals
|
|
||||||
g_signal_handler_disconnect(
|
|
||||||
GTK_OBJECT(dockItem.gobj()), hide_panel_handler_id);
|
|
||||||
|
|
||||||
// Unref the dock item
|
|
||||||
// g_object_unref(dockItem);
|
|
||||||
// dockItem = NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Gdl::DockItem&
|
Gdl::DockItem&
|
||||||
|
|
@ -162,17 +156,16 @@ Panel::get_controller()
|
||||||
return panelManager.get_workspace_window().get_controller();
|
return panelManager.get_workspace_window().get_controller();
|
||||||
}
|
}
|
||||||
|
|
||||||
sigc::signal<void>&
|
sigc::signal<void>
|
||||||
Panel::signal_hide_panel()
|
Panel::signal_hide_panel()
|
||||||
{
|
{
|
||||||
return hidePanelSignal;
|
return hidePanelSignal;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
Panel::on_item_hidden(GdlDockItem*, Panel *panel)
|
Panel::on_item_hidden()
|
||||||
{
|
{
|
||||||
REQUIRE(panel);
|
hidePanelSignal.emit();
|
||||||
panel->hidePanelSignal();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace panels
|
} // namespace panels
|
||||||
|
|
|
||||||
|
|
@ -135,9 +135,8 @@ private:
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An event handler for when dockItem is hidden.
|
* An event handler for when dockItem is hidden.
|
||||||
* @param func_data A pointer to the panel that owns dock_item
|
|
||||||
*/
|
*/
|
||||||
static void on_item_hidden(GdlDockItem*, Panel *panel);
|
void on_item_hidden();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -50,7 +50,13 @@ PanelManager::PanelManager(WorkspaceWindow &workspace_window) :
|
||||||
dockBar(dock),
|
dockBar(dock),
|
||||||
dockLayout()
|
dockLayout()
|
||||||
{
|
{
|
||||||
|
/* Create the DockLayout */
|
||||||
dockLayout = Gdl::DockLayout::create(dock);
|
dockLayout = Gdl::DockLayout::create(dock);
|
||||||
|
|
||||||
|
/* Setup the Switcher Style */
|
||||||
|
Glib::RefPtr<Gdl::DockMaster> dock_master = dock.property_master();
|
||||||
|
dock_master->property_switcher_style() = Gdl::SWITCHER_STYLE_ICON;
|
||||||
|
|
||||||
memset(&dockPlaceholders, 0, sizeof(dockPlaceholders));
|
memset(&dockPlaceholders, 0, sizeof(dockPlaceholders));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -118,7 +124,6 @@ PanelManager::show_panel(const int description_index)
|
||||||
Gdl::DockItem &dock_item = panel->get_dock_item();
|
Gdl::DockItem &dock_item = panel->get_dock_item();
|
||||||
// ENSURE(dock_item);
|
// ENSURE(dock_item);
|
||||||
dock_item.present(dock);
|
dock_item.present(dock);
|
||||||
// gdl_dock_object_present(GDL_DOCK_OBJECT(dock_item.gobj()), NULL);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -144,37 +149,36 @@ void PanelManager::switch_panel(panels::Panel &old_panel,
|
||||||
|
|
||||||
// Create the new panel
|
// Create the new panel
|
||||||
create_panel_by_index(description_index, dock_item);
|
create_panel_by_index(description_index, dock_item);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
PanelManager::split_panel(panels::Panel &panel,
|
PanelManager::split_panel(panels::Panel &panel,
|
||||||
Gtk::Orientation split_direction)
|
Gtk::Orientation split_direction)
|
||||||
{
|
{
|
||||||
TODO("Port to Gdlmm");
|
|
||||||
// Create the new panel
|
// Create the new panel
|
||||||
const int index = get_panel_type(&panel);
|
const int index = get_panel_type(&panel);
|
||||||
panels::Panel *new_panel = create_panel_by_index(index);
|
panels::Panel *new_panel = create_panel_by_index(index);
|
||||||
|
|
||||||
// Dock the panel
|
// Dock the panel
|
||||||
// Gdl::DockPlacement placement = Gdl::DOCK_NONE;
|
Gdl::DockPlacement placement = Gdl::DOCK_NONE;
|
||||||
GdlDockPlacement placement = GDL_DOCK_NONE;
|
|
||||||
switch(split_direction)
|
switch(split_direction)
|
||||||
{
|
{
|
||||||
case ORIENTATION_HORIZONTAL:
|
case ORIENTATION_HORIZONTAL:
|
||||||
placement = GDL_DOCK_RIGHT;
|
placement = Gdl::DOCK_RIGHT;
|
||||||
break;
|
break;
|
||||||
case ORIENTATION_VERTICAL:
|
case ORIENTATION_VERTICAL:
|
||||||
placement = GDL_DOCK_BOTTOM;
|
placement = Gdl::DOCK_BOTTOM;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
ERROR(gui, "Unrecognisized split_direction: %d", split_direction);
|
ERROR(gui, "Unrecognisized split_direction: %d",
|
||||||
|
split_direction);
|
||||||
return;
|
return;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
gdl_dock_object_dock(GDL_DOCK_OBJECT(panel.get_dock_item().gobj()),
|
panel.get_dock_item().dock(
|
||||||
GDL_DOCK_OBJECT(new_panel->get_dock_item().gobj()), placement, NULL);
|
new_panel->get_dock_item(),placement);
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
|
|
|
||||||
|
|
@ -57,7 +57,7 @@ WorkspaceWindow::WorkspaceWindow(Project &source_project,
|
||||||
|
|
||||||
WorkspaceWindow::~WorkspaceWindow()
|
WorkspaceWindow::~WorkspaceWindow()
|
||||||
{
|
{
|
||||||
INFO (gui_dbg, "closing workspace window...");
|
INFO (gui_dbg, "Closing workspace window...");
|
||||||
}
|
}
|
||||||
|
|
||||||
Project&
|
Project&
|
||||||
|
|
@ -103,14 +103,6 @@ WorkspaceWindow::create_ui()
|
||||||
|
|
||||||
//----- Create the Docks -----//
|
//----- Create the Docks -----//
|
||||||
panelManager.setup_dock();
|
panelManager.setup_dock();
|
||||||
/*
|
|
||||||
GdlDock const *dock = panelManager.get_dock();
|
|
||||||
|
|
||||||
gtk_box_pack_start(GTK_BOX(dockContainer.gobj()),
|
|
||||||
GTK_WIDGET(panelManager.get_dock_bar()), FALSE, FALSE, 0);
|
|
||||||
gtk_box_pack_start(GTK_BOX(dockContainer.gobj()),
|
|
||||||
GTK_WIDGET(dock), TRUE, TRUE, 0);
|
|
||||||
*/
|
|
||||||
dockContainer.pack_start(panelManager.get_dock_bar(),false,false,0);
|
dockContainer.pack_start(panelManager.get_dock_bar(),false,false,0);
|
||||||
dockContainer.pack_start(panelManager.get_dock(),true,true,0);
|
dockContainer.pack_start(panelManager.get_dock(),true,true,0);
|
||||||
baseContainer.pack_start(dockContainer, PACK_EXPAND_WIDGET);
|
baseContainer.pack_start(dockContainer, PACK_EXPAND_WIDGET);
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue