summaryrefslogtreecommitdiffstats
path: root/src/ui
diff options
context:
space:
mode:
authorMarc Jeanmougin <marc@jeanmougin.fr>2017-10-01 21:57:52 +0000
committerMarc Jeanmougin <marc@jeanmougin.fr>2017-10-01 21:57:52 +0000
commitc20891fabc8c3ee2251e0545878e06545b6f0cdd (patch)
treec19727ea5ec4c7fb90b7e4512a3cc5fb89f58945 /src/ui
parentMerge branch 'master' of gitlab.com:inkscape/inkscape (diff)
downloadinkscape-c20891fabc8c3ee2251e0545878e06545b6f0cdd.tar.gz
inkscape-c20891fabc8c3ee2251e0545878e06545b6f0cdd.zip
First batch
Diffstat (limited to 'src/ui')
-rw-r--r--src/ui/contextmenu.cpp2
-rw-r--r--src/ui/dialog/clonetiler.cpp8
-rw-r--r--src/ui/dialog/grid-arrange-tab.cpp10
-rw-r--r--src/ui/dialog/tags.cpp8
-rw-r--r--src/ui/interface.cpp91
-rw-r--r--src/ui/widget/color-notebook.cpp5
6 files changed, 55 insertions, 69 deletions
diff --git a/src/ui/contextmenu.cpp b/src/ui/contextmenu.cpp
index 1bc87574e..3ca752c82 100644
--- a/src/ui/contextmenu.cpp
+++ b/src/ui/contextmenu.cpp
@@ -253,7 +253,7 @@ context_menu_item_on_my_deselect(void */*object*/, SPAction *action)
// TODO: Update this to allow radio items to be used
-void ContextMenu::AppendItemFromVerb(Inkscape::Verb *verb)//, SPDesktop *view)//, bool radio, GSList *group)
+void ContextMenu::AppendItemFromVerb(Inkscape::Verb *verb)
{
SPAction *action;
SPDesktop *view = _desktop;
diff --git a/src/ui/dialog/clonetiler.cpp b/src/ui/dialog/clonetiler.cpp
index 5c9b31fb1..71edcf259 100644
--- a/src/ui/dialog/clonetiler.cpp
+++ b/src/ui/dialog/clonetiler.cpp
@@ -1993,18 +1993,16 @@ void CloneTiler::remove(bool do_undo/* = true*/)
SPObject *parent = obj->parent;
// remove old tiling
- GSList *to_delete = NULL;
+ std::vector<SPObject *> to_delete;
for (auto& child: parent->children) {
if (is_a_clone_of (&child, obj)) {
- to_delete = g_slist_prepend (to_delete, &child);
+ to_delete.push_back(&child);
}
}
- for (GSList *i = to_delete; i; i = i->next) {
- SPObject *obj = reinterpret_cast<SPObject *>(i->data);
+ for (auto obj:to_delete) {
g_assert(obj != NULL);
obj->deleteObject();
}
- g_slist_free (to_delete);
change_selection (selection);
diff --git a/src/ui/dialog/grid-arrange-tab.cpp b/src/ui/dialog/grid-arrange-tab.cpp
index 6e08645cf..c16e60c5f 100644
--- a/src/ui/dialog/grid-arrange-tab.cpp
+++ b/src/ui/dialog/grid-arrange-tab.cpp
@@ -298,15 +298,14 @@ g_print("\n row = %f col = %f selection x= %f selection y = %f", total_row_h
std::vector<SPItem*>::iterator it = sorted.begin();
for (row_cnt=0; ((it != sorted.end()) && (row_cnt<NoOfRows)); ++row_cnt) {
- GSList *current_row = NULL;
+ std::vector<SPItem *> current_row;
col_cnt = 0;
for(;it!=sorted.end()&&col_cnt<NoOfCols;++it) {
- current_row = g_slist_append (current_row, *it);
+ current_row.push_back(*it);
col_cnt++;
}
- for (; current_row != NULL; current_row = current_row->next) {
- SPItem *item=SP_ITEM(current_row->data);
+ for (auto item:current_row) {
Inkscape::XML::Node *repr = item->getRepr();
Geom::OptRect b = item->documentVisualBounds();
Geom::Point min;
@@ -330,10 +329,9 @@ g_print("\n row = %f col = %f selection x= %f selection y = %f", total_row_h
Geom::Affine const affine = Geom::Affine(Geom::Translate(move));
item->set_i2d_affine(item->i2dt_affine() * affine);
item->doWriteTransform(item->transform);
- SP_OBJECT (current_row->data)->updateRepr();
+ item->updateRepr();
cnt +=1;
}
- g_slist_free (current_row);
}
DocumentUndo::done(desktop->getDocument(), SP_VERB_SELECTION_ARRANGE,
diff --git a/src/ui/dialog/tags.cpp b/src/ui/dialog/tags.cpp
index 176719995..5a5417eb5 100644
--- a/src/ui/dialog/tags.cpp
+++ b/src/ui/dialog/tags.cpp
@@ -1103,14 +1103,6 @@ void TagsPanel::setDesktop( SPDesktop* desktop )
setDocument(_desktop, _desktop->doc());
}
}
-/*
- GSList const *layers = _desktop->doc()->getResourceList( "layer" );
- g_message( "layers list starts at %p", layers );
- for ( GSList const *iter=layers ; iter ; iter = iter->next ) {
- SPObject *layer=static_cast<SPObject *>(iter->data);
- g_message(" {%s} [%s]", layer->id, layer->label() );
- }
-*/
deskTrack.setBase(desktop);
}
diff --git a/src/ui/interface.cpp b/src/ui/interface.cpp
index 7a9b92378..f6a353b33 100644
--- a/src/ui/interface.cpp
+++ b/src/ui/interface.cpp
@@ -25,6 +25,8 @@
#include "ui/dialog/dialog-manager.h"
#include <gtkmm/icontheme.h>
+#include <gtkmm/radiomenuitem.h>
+#include <gtkmm/separatormenuitem.h>
#include "file.h"
#include <glibmm/miscutils.h>
@@ -220,19 +222,14 @@ sp_create_window(SPViewWidget *vw, bool editable)
if ( completeDropTargets == 0 || completeDropTargetsCount == 0 )
{
- std::vector<gchar*> types;
-
- GSList *list = gdk_pixbuf_get_formats();
- while ( list ) {
- int i = 0;
- GdkPixbufFormat *one = (GdkPixbufFormat*)list->data;
- gchar** typesXX = gdk_pixbuf_format_get_mime_types(one);
- for ( i = 0; typesXX[i]; i++ ) {
- types.push_back(g_strdup(typesXX[i]));
- }
- g_strfreev(typesXX);
+ std::vector<Glib::ustring> types;
- list = g_slist_next(list);
+ std::vector<Gdk::PixbufFormat> list = Gdk::Pixbuf::get_formats();
+ for (auto one:list) {
+ std::vector<Glib::ustring> typesXX = one.get_mime_types();
+ for (auto i:typesXX) {
+ types.push_back(i);
+ }
}
completeDropTargetsCount = nui_drop_target_entries + types.size();
completeDropTargets = new GtkTargetEntry[completeDropTargetsCount];
@@ -241,8 +238,8 @@ sp_create_window(SPViewWidget *vw, bool editable)
}
int pos = nui_drop_target_entries;
- for (std::vector<gchar*>::iterator it = types.begin() ; it != types.end() ; ++it) {
- completeDropTargets[pos].target = *it;
+ for (std::vector<Glib::ustring>::iterator it = types.begin() ; it != types.end() ; ++it) {
+ completeDropTargets[pos].target = g_strdup((*it).c_str());
completeDropTargets[pos].flags = 0;
completeDropTargets[pos].info = IMAGE_DATA;
pos++;
@@ -451,14 +448,14 @@ static GtkWidget *sp_ui_menu_append_item_from_verb(GtkMenu *men
Inkscape::UI::View::View *view,
bool show_icon = false,
bool radio = false,
- GSList *group = NULL)
+ Gtk::RadioMenuItem::Group *group = NULL)
{
- GtkWidget *item;
+ Gtk::Widget *item;
// Just create a menu separator if this isn't a real action.
// Otherwise, create a real menu item
if (verb->get_code() == SP_VERB_NONE) {
- item = gtk_separator_menu_item_new();
+ item = new Gtk::SeparatorMenuItem();
} else {
SPAction *action = verb->get_action(Inkscape::ActionContext(view));
@@ -467,9 +464,9 @@ static GtkWidget *sp_ui_menu_append_item_from_verb(GtkMenu *men
// Create the menu item itself, either as a radio menu item, or just
// a regular menu item depending on whether the "radio" flag is set
if (radio) {
- item = gtk_radio_menu_item_new(group);
+ item = new Gtk::RadioMenuItem(*group);
} else {
- item = gtk_menu_item_new();
+ item = new Gtk::MenuItem();
}
// Create a box to contain all the widgets (icon, label, accelerator)
@@ -490,8 +487,8 @@ static GtkWidget *sp_ui_menu_append_item_from_verb(GtkMenu *men
GtkAccelGroup *accel_group = sp_shortcut_get_accel_group();
gtk_menu_set_accel_group(menu, accel_group);
- sp_shortcut_add_accelerator(item, sp_shortcut_get_primary(verb));
- gtk_accel_label_set_accel_widget(GTK_ACCEL_LABEL(label), item);
+ sp_shortcut_add_accelerator(item->gobj(), sp_shortcut_get_primary(verb));
+ gtk_accel_label_set_accel_widget(GTK_ACCEL_LABEL(label), item->gobj());
GtkWidget *icon;
@@ -508,33 +505,34 @@ static GtkWidget *sp_ui_menu_append_item_from_verb(GtkMenu *men
gtk_box_pack_start(GTK_BOX(box), label, TRUE, TRUE, 0);
// Finally, pack all the widgets into the menu item
- gtk_container_add(GTK_CONTAINER(item), box);
+ gtk_container_add(GTK_CONTAINER(item->gobj()), box);
action->signal_set_sensitive.connect(
sigc::bind<0>(
sigc::ptr_fun(&gtk_widget_set_sensitive),
- item));
+ item->gobj()));
action->signal_set_name.connect(
sigc::bind<0>(
sigc::ptr_fun(&sp_ui_menu_item_set_name),
- item));
+ item->gobj()));
if (!action->sensitive) {
- gtk_widget_set_sensitive(item, FALSE);
+ item->set_sensitive(false);
}
- gtk_widget_set_events(item, GDK_KEY_PRESS_MASK);
- g_object_set_data(G_OBJECT(item), "view", (gpointer) view);
- g_signal_connect( G_OBJECT(item), "activate", G_CALLBACK(sp_ui_menu_activate), action );
- g_signal_connect( G_OBJECT(item), "select", G_CALLBACK(sp_ui_menu_select_action), action );
- g_signal_connect( G_OBJECT(item), "deselect", G_CALLBACK(sp_ui_menu_deselect_action), action );
+ gtk_widget_set_events(item->gobj(), GDK_KEY_PRESS_MASK);
+
+ g_object_set_data(G_OBJECT(item->gobj()), "view", (gpointer) view);
+ g_signal_connect( G_OBJECT(item->gobj()), "activate", G_CALLBACK(sp_ui_menu_activate), action );
+ g_signal_connect( G_OBJECT(item->gobj()), "select", G_CALLBACK(sp_ui_menu_select_action), action );
+ g_signal_connect( G_OBJECT(item->gobj()), "deselect", G_CALLBACK(sp_ui_menu_deselect_action), action );
}
- gtk_widget_show_all(item);
- gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
+ item->show_all();
+ gtk_menu_shell_append(GTK_MENU_SHELL(menu), item->gobj());
- return item;
+ return item->gobj();
} // end of sp_ui_menu_append_item_from_verb
@@ -769,25 +767,24 @@ static void addTaskMenuItems(GtkMenu *menu, Inkscape::UI::View::View *view)
0, 0
};
- GSList *group = 0;
+ Gtk::RadioMenuItem::Group group;
int count = 0;
gint active = Inkscape::UI::UXManager::getInstance()->getDefaultTask( dynamic_cast<SPDesktop*>(view) );
for (gchar const **strs = data; strs[0]; strs += 2, count++)
{
- GtkWidget *item = gtk_radio_menu_item_new_with_label( group, strs[0] );
- group = gtk_radio_menu_item_get_group( GTK_RADIO_MENU_ITEM(item) );
+ Gtk::RadioMenuItem *item = new Gtk::RadioMenuItem(group,Glib::ustring(strs[0]));
if ( count == active )
{
- gtk_check_menu_item_set_active( GTK_CHECK_MENU_ITEM(item), TRUE );
+ item->set_active();
}
- g_object_set_data( G_OBJECT(item), "view", view );
- g_signal_connect( G_OBJECT(item), "toggled", reinterpret_cast<GCallback>(taskToggled), GINT_TO_POINTER(count) );
- g_signal_connect( G_OBJECT(item), "select", G_CALLBACK(sp_ui_menu_select), const_cast<gchar*>(strs[1]) );
- g_signal_connect( G_OBJECT(item), "deselect", G_CALLBACK(sp_ui_menu_deselect), 0 );
+ g_object_set_data( G_OBJECT(item->gobj()), "view", view );
+ g_signal_connect( G_OBJECT(item->gobj()), "toggled", reinterpret_cast<GCallback>(taskToggled), GINT_TO_POINTER(count) );
+ g_signal_connect( G_OBJECT(item->gobj()), "select", G_CALLBACK(sp_ui_menu_select), const_cast<gchar*>(strs[1]) );
+ g_signal_connect( G_OBJECT(item->gobj()), "deselect", G_CALLBACK(sp_ui_menu_deselect), 0 );
- gtk_widget_show( item );
- gtk_menu_shell_append( GTK_MENU_SHELL(menu), item );
+ item->show();
+ gtk_menu_shell_append( GTK_MENU_SHELL(menu), GTK_WIDGET(item->gobj()) );
}
}
@@ -831,7 +828,7 @@ static void sp_ui_build_dyn_menus(Inkscape::XML::Node *menus, GtkWidget *menu, I
{
if (menus == NULL) return;
if (menu == NULL) return;
- GSList *group = NULL;
+ Gtk::RadioMenuItem::Group group;
for (Inkscape::XML::Node *menu_pntr = menus;
menu_pntr != NULL;
@@ -863,8 +860,7 @@ static void sp_ui_build_dyn_menus(Inkscape::XML::Node *menus, GtkWidget *menu, I
if (verb != NULL) {
if (menu_pntr->attribute("radio") != NULL) {
- GtkWidget *item = sp_ui_menu_append_item_from_verb (GTK_MENU(menu), verb, view, show_icon, true, group);
- group = gtk_radio_menu_item_get_group( GTK_RADIO_MENU_ITEM(item));
+ GtkWidget *item = sp_ui_menu_append_item_from_verb (GTK_MENU(menu), verb, view, show_icon, true, &group);
if (menu_pntr->attribute("default") != NULL) {
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (item), TRUE);
}
@@ -880,7 +876,8 @@ static void sp_ui_build_dyn_menus(Inkscape::XML::Node *menus, GtkWidget *menu, I
}
} else {
sp_ui_menu_append_item_from_verb(GTK_MENU(menu), verb, view, show_icon);
- group = NULL;
+ Gtk::RadioMenuItem::Group group2;
+ group = group2;
}
} else {
gchar string[120];
diff --git a/src/ui/widget/color-notebook.cpp b/src/ui/widget/color-notebook.cpp
index a4df8187f..ba333d0ed 100644
--- a/src/ui/widget/color-notebook.cpp
+++ b/src/ui/widget/color-notebook.cpp
@@ -22,6 +22,7 @@
#include <glibmm/i18n.h>
#include <gtkmm/label.h>
#include <gtkmm/notebook.h>
+#include <gtkmm/radiobutton.h>
#include "preferences.h"
#include "widgets/spw-utilities.h"
@@ -325,8 +326,8 @@ void ColorNotebook::_addPage(Page &page)
_buttons[page_num] = gtk_radio_button_new_with_label(NULL, mode_name.c_str());
gtk_toggle_button_set_mode(GTK_TOGGLE_BUTTON(_buttons[page_num]), FALSE);
if (page_num > 0) {
- GSList *group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(_buttons[0]));
- gtk_radio_button_set_group(GTK_RADIO_BUTTON(_buttons[page_num]), group);
+ auto g = Glib::wrap(GTK_RADIO_BUTTON(_buttons[0]))->get_group();
+ Glib::wrap(GTK_RADIO_BUTTON(_buttons[page_num]))->set_group(g);
}
gtk_widget_show(_buttons[page_num]);
gtk_box_pack_start(GTK_BOX(_buttonbox), _buttons[page_num], TRUE, TRUE, 0);