glom r1442 - in trunk: . glom/utility_widgets
- From: jhs svn gnome org
- To: svn-commits-list gnome org
- Subject: glom r1442 - in trunk: . glom/utility_widgets
- Date: Thu, 28 Feb 2008 13:41:06 +0000 (GMT)
Author: jhs
Date: Thu Feb 28 13:41:06 2008
New Revision: 1442
URL: http://svn.gnome.org/viewvc/glom?rev=1442&view=rev
Log:
2008-02-28 Johannes Schmid <johannes schmid openismus com>
* glom/utility_widgets/dragbar.cc:
* glom/utility_widgets/dragbutton.cc:
* glom/utility_widgets/dragbutton.h:
* glom/utility_widgets/flowtable.cc:
* glom/utility_widgets/sidebar.cc:
* glom/utility_widgets/sidebar.h:
Use EggToolPalette for the developer drag and drop toolbar
Modified:
trunk/ChangeLog
trunk/glom/utility_widgets/dragbar.cc
trunk/glom/utility_widgets/dragbutton.cc
trunk/glom/utility_widgets/dragbutton.h
trunk/glom/utility_widgets/flowtable.cc
trunk/glom/utility_widgets/sidebar.cc
trunk/glom/utility_widgets/sidebar.h
Modified: trunk/glom/utility_widgets/dragbar.cc
==============================================================================
--- trunk/glom/utility_widgets/dragbar.cc (original)
+++ trunk/glom/utility_widgets/dragbar.cc Thu Feb 28 13:41:06 2008
@@ -25,12 +25,16 @@
#include "config.h"
#include "layoutwidgetbase.h"
+#include "eggtoolpalette/eggtoolitemgroup.h"
namespace Glom
{
DragBar::DragBar()
-{
+{
+ // Does look ugly otherwise
+ set_size_request(100, 200);
+
Gtk::Image* image_item =
Gtk::manage (new Gtk::Image(GLOM_ICON_DIR "/glom-field.png"));
Gtk::Image* image_button =
@@ -43,20 +47,28 @@
Gtk::Image* image_notebook =
Gtk::manage (new Gtk::Image(GLOM_ICON_DIR "/glom-notebook.png"));
+
DragButton* drag_group = Gtk::manage(new DragButton(*image_group, LayoutWidgetBase::TYPE_GROUP));
DragButton* drag_notebook = Gtk::manage(new DragButton(*image_notebook, LayoutWidgetBase::TYPE_NOTEBOOK));
DragButton* drag_item = Gtk::manage(new DragButton(*image_item, LayoutWidgetBase::TYPE_FIELD));
DragButton* drag_button = Gtk::manage(new DragButton(*image_button, LayoutWidgetBase::TYPE_BUTTON));
DragButton* drag_text = Gtk::manage(new DragButton(*image_text, LayoutWidgetBase::TYPE_TEXT));
-
- add_button (*drag_group);
- add_button (*drag_notebook);
- add_button (*drag_item);
- add_button (*drag_button);
- add_button (*drag_text);
+ GtkContainer* container_group = GTK_CONTAINER(egg_tool_item_group_new(_("Container")));
+ gtk_container_add (container_group, GTK_WIDGET(drag_group->gobj()));
+ gtk_container_add (container_group, GTK_WIDGET(drag_notebook->gobj()));
+
+ GtkContainer* fields_group = GTK_CONTAINER(egg_tool_item_group_new(_("Fields")));
+ gtk_container_add (fields_group, GTK_WIDGET(drag_item->gobj()));
+ gtk_container_add (fields_group, GTK_WIDGET(drag_button->gobj()));
+ gtk_container_add (fields_group, GTK_WIDGET(drag_text->gobj()));
+ add_group (EGG_TOOL_ITEM_GROUP(container_group));
+ add_group (EGG_TOOL_ITEM_GROUP(fields_group));
+
+ set_drag_source();
+
show_all_children();
}
Modified: trunk/glom/utility_widgets/dragbutton.cc
==============================================================================
--- trunk/glom/utility_widgets/dragbutton.cc (original)
+++ trunk/glom/utility_widgets/dragbutton.cc Thu Feb 28 13:41:06 2008
@@ -23,10 +23,11 @@
namespace Glom
{
-DragButton::DragButton(Gtk::Image& image, LayoutWidgetBase::enumType type)
+DragButton::DragButton(Gtk::Image& image, LayoutWidgetBase::enumType type) :
+ Gtk::ToolButton(image)
{
- set_image(image);
m_type = type;
+ g_object_set_data (G_OBJECT(gobj()), "glom-type", GINT_TO_POINTER(type));
std::list<Gtk::TargetEntry> targetentries;
targetentries.push_back(Gtk::TargetEntry(get_target()));
drag_source_set(targetentries, Gdk::MODIFIER_MASK,
@@ -46,7 +47,7 @@
void DragButton::on_drag_begin(const Glib::RefPtr<Gdk::DragContext>& drag_context)
{
- drag_context->set_icon (dynamic_cast<Gtk::Image*>(get_image())->get_pixbuf(), 0, 0);
+ drag_context->set_icon (dynamic_cast<Gtk::Image*>(get_icon_widget())->get_pixbuf(), 0, 0);
}
} // namespace Glom
Modified: trunk/glom/utility_widgets/dragbutton.h
==============================================================================
--- trunk/glom/utility_widgets/dragbutton.h (original)
+++ trunk/glom/utility_widgets/dragbutton.h Thu Feb 28 13:41:06 2008
@@ -30,7 +30,7 @@
namespace Glom
{
-class DragButton : public Gtk::Button
+class DragButton : public Gtk::ToolButton
{
public:
DragButton(Gtk::Image& image, LayoutWidgetBase::enumType type);
Modified: trunk/glom/utility_widgets/flowtable.cc
==============================================================================
--- trunk/glom/utility_widgets/flowtable.cc (original)
+++ trunk/glom/utility_widgets/flowtable.cc Thu Feb 28 13:41:06 2008
@@ -26,6 +26,7 @@
#include "imageglom.h"
#include "layoutwidgetbase.h"
#include "placeholder-glom.h"
+#include "eggtoolpalette/eggtoolpalette.h"
#include <gtk/gtkwidget.h>
#include <gdk/gdktypes.h>
#include <iostream>
@@ -331,7 +332,7 @@
set_flags(Gtk::NO_WINDOW);
set_redraw_on_allocate(false);
std::list<Gtk::TargetEntry> drag_targets;
- Gtk::TargetEntry drag_target(DragButton::get_target());
+ Gtk::TargetEntry drag_target(egg_tool_palette_get_drag_target_item());
drag_targets.push_back(drag_target);
drag_dest_set(drag_targets);
}
@@ -431,7 +432,7 @@
if (!(child.get_flags() & Gtk::NO_WINDOW))
{
std::list<Gtk::TargetEntry> new_targets;
- new_targets.push_back(Gtk::TargetEntry(DragButton::get_target()));
+ new_targets.push_back(Gtk::TargetEntry(egg_tool_palette_get_drag_target_item()));
Glib::RefPtr<Gtk::TargetList> targets =
child.drag_dest_get_target_list ();
// The widget has already a default drag destination - add more targets
@@ -1148,27 +1149,36 @@
void FlowTable::on_drag_data_received(const Glib::RefPtr<Gdk::DragContext>& drag_context, int drag_x, int drag_y, const Gtk::SelectionData& selection_data, guint, guint time)
{
- LayoutWidgetBase::enumType type = static_cast<LayoutWidgetBase::enumType>(*selection_data.get_data());
- LayoutWidgetBase* above = dnd_find_datawidget ();
- switch (type)
- {
- case LayoutWidgetBase::TYPE_FIELD:
- on_dnd_add_layout_item_field(above);
- break;
- case LayoutWidgetBase::TYPE_BUTTON:
- on_dnd_add_layout_item_button(above);
- break;
- case LayoutWidgetBase::TYPE_TEXT:
- on_dnd_add_layout_item_text(above);
- break;
- case LayoutWidgetBase::TYPE_GROUP:
- on_dnd_add_layout_group(above);
- break;
- case LayoutWidgetBase::TYPE_NOTEBOOK:
- on_dnd_add_layout_notebook(above);
- break;
- default:
- std::cerr << "Unknown drop type: " << type << std::endl;
+ Gtk::Widget* palette = drag_get_source_widget (drag_context);
+ while (palette && !EGG_IS_TOOL_PALETTE (palette->gobj()))
+ palette = palette->get_parent();
+ if (palette)
+ {
+ GtkWidget* tool_item = egg_tool_palette_get_drag_item (EGG_TOOL_PALETTE (palette->gobj()), selection_data.gobj());
+ LayoutWidgetBase::enumType type =
+ static_cast<LayoutWidgetBase::enumType>(GPOINTER_TO_INT(g_object_get_data(G_OBJECT(tool_item), "glom-type")));
+
+ LayoutWidgetBase* above = dnd_find_datawidget ();
+ switch (type)
+ {
+ case LayoutWidgetBase::TYPE_FIELD:
+ on_dnd_add_layout_item_field(above);
+ break;
+ case LayoutWidgetBase::TYPE_BUTTON:
+ on_dnd_add_layout_item_button(above);
+ break;
+ case LayoutWidgetBase::TYPE_TEXT:
+ on_dnd_add_layout_item_text(above);
+ break;
+ case LayoutWidgetBase::TYPE_GROUP:
+ on_dnd_add_layout_group(above);
+ break;
+ case LayoutWidgetBase::TYPE_NOTEBOOK:
+ on_dnd_add_layout_notebook(above);
+ break;
+ default:
+ std::cerr << "Unknown drop type: " << type << std::endl;
+ }
}
change_dnd_status(false);
}
Modified: trunk/glom/utility_widgets/sidebar.cc
==============================================================================
--- trunk/glom/utility_widgets/sidebar.cc (original)
+++ trunk/glom/utility_widgets/sidebar.cc Thu Feb 28 13:41:06 2008
@@ -24,11 +24,11 @@
{
SideBar::SideBar()
-{
- set_snap_edge(Gtk::POS_LEFT);
- set_handle_position(Gtk::POS_TOP);
-
- add(m_box);
+{
+ palette = EGG_TOOL_PALETTE(egg_tool_palette_new ());
+ Gtk::Container* container = Glib::wrap(GTK_CONTAINER(palette));
+
+ add(*container);
show_all_children();
}
@@ -37,15 +37,20 @@
}
-void SideBar::add_button(Gtk::Button& button)
+void SideBar::add_group(EggToolItemGroup* group)
+{
+ gtk_container_add(GTK_CONTAINER(palette), GTK_WIDGET(group));
+}
+
+void SideBar::remove_group(EggToolItemGroup* group)
{
- button.set_relief(Gtk::RELIEF_HALF);
- m_box.pack_start(button, false, false, 0);
+ gtk_container_remove(GTK_CONTAINER(palette), GTK_WIDGET(group));
}
-void SideBar::remove_button(Gtk::Button& button)
+void SideBar::set_drag_source()
{
- m_box.remove(button);
+ // It's important to call this AFTER all groups have been added
+ egg_tool_palette_set_drag_source (palette);
}
} // namespace Glom
Modified: trunk/glom/utility_widgets/sidebar.h
==============================================================================
--- trunk/glom/utility_widgets/sidebar.h (original)
+++ trunk/glom/utility_widgets/sidebar.h Thu Feb 28 13:41:06 2008
@@ -25,21 +25,25 @@
#include <gtkmm/handlebox.h>
#include <gtkmm/box.h>
#include <gtkmm/button.h>
+#include "eggtoolpalette/eggtoolpalette.h"
+#include "eggtoolpalette/eggtoolitemgroup.h"
namespace Glom
{
-class SideBar : public Gtk::HandleBox
+class SideBar : public Gtk::VBox
{
public:
SideBar();
~SideBar();
- void add_button(Gtk::Button& button);
- void remove_button(Gtk::Button& button);
+ void add_group (EggToolItemGroup* group);
+ void remove_group (EggToolItemGroup* group);
+
+ void set_drag_source();
private:
- Gtk::VBox m_box;
+ EggToolPalette* palette;
};
} //namespace Glom
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]