summaryrefslogtreecommitdiffstats
path: root/src/ui/dialog/document-properties.cpp
diff options
context:
space:
mode:
authorJabier Arraiza Cenoz <jabier.arraiza@marker.es>2016-10-02 22:44:54 +0000
committerjabiertxof <info@marker.es>2016-10-02 22:44:54 +0000
commit90e142963afd950b2868434075890054aef090b3 (patch)
treeedcaf3d0d85b614e5f327fb58c909ffee5207e26 /src/ui/dialog/document-properties.cpp
parentAdded some widgets from caligraphic tool (diff)
parentAdjust dock size to minimum width during canvas table size allocation signal. (diff)
downloadinkscape-90e142963afd950b2868434075890054aef090b3.tar.gz
inkscape-90e142963afd950b2868434075890054aef090b3.zip
Update to trunk and some fixes
(bzr r14865.1.14)
Diffstat (limited to 'src/ui/dialog/document-properties.cpp')
-rw-r--r--src/ui/dialog/document-properties.cpp246
1 files changed, 74 insertions, 172 deletions
diff --git a/src/ui/dialog/document-properties.cpp b/src/ui/dialog/document-properties.cpp
index 12eaba72a..053549b73 100644
--- a/src/ui/dialog/document-properties.cpp
+++ b/src/ui/dialog/document-properties.cpp
@@ -25,27 +25,17 @@
#include "ui/widget/notebook-page.h"
#include "document-properties.h"
#include "display/canvas-grid.h"
-#include "document.h"
-#include "desktop.h"
-#include "inkscape.h"
#include "io/sys.h"
-#include "preferences.h"
#include "ui/shape-editor.h"
-#include "sp-namedview.h"
#include "sp-root.h"
#include "sp-script.h"
#include "style.h"
-#include "svg/stringstream.h"
#include "ui/tools-switch.h"
-#include "ui/widget/color-picker.h"
-#include "ui/widget/scalar-unit.h"
#include "ui/dialog/filedialog.h"
#include "verbs.h"
#include "widgets/icon.h"
#include "xml/node-event-vector.h"
-#include "xml/repr.h"
-#include <algorithm> // std::min
#include "rdf.h"
#include "ui/widget/entity-entry.h"
@@ -54,11 +44,9 @@
#include "color-profile.h"
#endif // defined(HAVE_LIBLCMS1) || defined(HAVE_LIBLCMS2)
-#include <gtkmm/imagemenuitem.h>
#include <gtkmm/stock.h>
-#include <gtkmm/table.h>
+#include <gtkmm/imagemenuitem.h>
-#include <2geom/transforms.h>
#include "ui/icon-names.h"
using std::pair;
@@ -223,25 +211,16 @@ DocumentProperties::~DocumentProperties()
* widget in columns 2-3; (non-0, 0) means label in columns 1-3; and
* (non-0, non-0) means two widgets in columns 2 and 3.
*/
-#if WITH_GTKMM_3_0
inline void attach_all(Gtk::Grid &table, Gtk::Widget *const arr[], unsigned const n, int start = 0, int docum_prop_flag = 0)
-#else
-inline void attach_all(Gtk::Table &table, Gtk::Widget *const arr[], unsigned const n, int start = 0, int docum_prop_flag = 0)
-#endif
{
for (unsigned i = 0, r = start; i < n; i += 2) {
if (arr[i] && arr[i+1]) {
-#if WITH_GTKMM_3_0
arr[i]->set_hexpand();
arr[i+1]->set_hexpand();
arr[i]->set_valign(Gtk::ALIGN_CENTER);
arr[i+1]->set_valign(Gtk::ALIGN_CENTER);
table.attach(*arr[i], 1, r, 1, 1);
table.attach(*arr[i+1], 2, r, 1, 1);
-#else
- table.attach(*arr[i], 1, 2, r, r+1, Gtk::FILL|Gtk::EXPAND, (Gtk::AttachOptions)0,0,0);
- table.attach(*arr[i+1], 2, 3, r, r+1, Gtk::FILL|Gtk::EXPAND, (Gtk::AttachOptions)0,0,0);
-#endif
} else {
if (arr[i+1]) {
Gtk::AttachOptions yoptions = (Gtk::AttachOptions)0;
@@ -252,7 +231,6 @@ inline void attach_all(Gtk::Table &table, Gtk::Widget *const arr[], unsigned con
if (docum_prop_flag) {
// this sets the padding for subordinate widgets on the "Page" page
if( i==(n-8) || i==(n-10) ) {
-#if WITH_GTKMM_3_0
arr[i+1]->set_hexpand();
arr[i+1]->set_margin_left(20);
arr[i+1]->set_margin_right(20);
@@ -263,11 +241,7 @@ inline void attach_all(Gtk::Table &table, Gtk::Widget *const arr[], unsigned con
arr[i+1]->set_valign(Gtk::ALIGN_CENTER);
table.attach(*arr[i+1], 1, r, 2, 1);
-#else
- table.attach(*arr[i+1], 1, 3, r, r+1, Gtk::FILL|Gtk::EXPAND, yoptions, 20,0);
-#endif
} else {
-#if WITH_GTKMM_3_0
arr[i+1]->set_hexpand();
if (yoptions & Gtk::EXPAND)
@@ -276,46 +250,31 @@ inline void attach_all(Gtk::Table &table, Gtk::Widget *const arr[], unsigned con
arr[i+1]->set_valign(Gtk::ALIGN_CENTER);
table.attach(*arr[i+1], 1, r, 2, 1);
-#else
- table.attach(*arr[i+1], 1, 3, r, r+1, Gtk::FILL|Gtk::EXPAND, yoptions, 0,0);
-#endif
}
} else {
-#if WITH_GTKMM_3_0
arr[i+1]->set_hexpand();
-
+
if (yoptions & Gtk::EXPAND)
arr[i+1]->set_vexpand();
else
arr[i+1]->set_valign(Gtk::ALIGN_CENTER);
table.attach(*arr[i+1], 1, r, 2, 1);
-#else
- table.attach(*arr[i+1], 1, 3, r, r+1, Gtk::FILL|Gtk::EXPAND, yoptions, 0,0);
-#endif
}
} else if (arr[i]) {
Gtk::Label& label = reinterpret_cast<Gtk::Label&>(*arr[i]);
label.set_alignment (0.0);
-#if WITH_GTKMM_3_0
label.set_hexpand();
label.set_valign(Gtk::ALIGN_CENTER);
table.attach(label, 0, r, 3, 1);
-#else
- table.attach (label, 0, 3, r, r+1, Gtk::FILL|Gtk::EXPAND, (Gtk::AttachOptions)0,0,0);
-#endif
} else {
Gtk::HBox *space = Gtk::manage (new Gtk::HBox);
space->set_size_request (SPACE_SIZE_X, SPACE_SIZE_Y);
-#if WITH_GTKMM_3_0
space->set_halign(Gtk::ALIGN_CENTER);
space->set_valign(Gtk::ALIGN_CENTER);
table.attach(*space, 0, r, 1, 1);
-#else
- table.attach (*space, 0, 1, r, r+1, (Gtk::AttachOptions)0, (Gtk::AttachOptions)0,0,0);
-#endif
}
}
++r;
@@ -428,13 +387,30 @@ void DocumentProperties::build_snap()
#if defined(HAVE_LIBLCMS1) || defined(HAVE_LIBLCMS2)
/// Populates the available color profiles combo box
void DocumentProperties::populate_available_profiles(){
- _combo_avail.remove_all(); // Clear any existing items in the combo box
+ _AvailableProfilesListStore->clear(); // Clear any existing items in the combo box
// Iterate through the list of profiles and add the name to the combo box.
- std::vector<std::pair<Glib::ustring, Glib::ustring> > pairs = ColorProfile::getProfileFilesWithNames();
- for ( std::vector<std::pair<Glib::ustring, Glib::ustring> >::const_iterator it = pairs.begin(); it != pairs.end(); ++it ) {
+ std::vector<std::pair<std::pair<Glib::ustring, bool>, Glib::ustring> > pairs = ColorProfile::getProfileFilesWithNames();
+ bool home = true; // initial value doesn't matter, it's just to avoid a compiler warning
+ for ( std::vector<std::pair<std::pair<Glib::ustring, bool>, Glib::ustring> >::const_iterator it = pairs.begin(); it != pairs.end(); ++it ) {
+ Gtk::TreeModel::Row row;
+ Glib::ustring file = it->first.first;
Glib::ustring name = it->second;
- _combo_avail.append(name);
+
+ // add a separator between profiles from the user's home directory and system profiles
+ if (it != pairs.begin() && it->first.second != home)
+ {
+ row = *(_AvailableProfilesListStore->append());
+ row[_AvailableProfilesListColumns.fileColumn] = "<separator>";
+ row[_AvailableProfilesListColumns.nameColumn] = "<separator>";
+ row[_AvailableProfilesListColumns.separatorColumn] = true;
+ }
+ home = it->first.second;
+
+ row = *(_AvailableProfilesListStore->append());
+ row[_AvailableProfilesListColumns.fileColumn] = file;
+ row[_AvailableProfilesListColumns.nameColumn] = name;
+ row[_AvailableProfilesListColumns.separatorColumn] = false;
}
}
@@ -442,7 +418,7 @@ void DocumentProperties::populate_available_profiles(){
* Cleans up name to remove disallowed characters.
* Some discussion at http://markmail.org/message/bhfvdfptt25kgtmj
* Allowed ASCII first characters: ':', 'A'-'Z', '_', 'a'-'z'
- * Allowed ASCII remaining chars add: '-', '.', '0'-'9',
+ * Allowed ASCII remaining chars add: '-', '.', '0'-'9',
*
* @param str the string to clean up.
*/
@@ -474,24 +450,23 @@ static void sanitizeName( Glib::ustring& str )
/// Links the selected color profile in the combo box to the document
void DocumentProperties::linkSelectedProfile()
{
-//store this profile in the SVG document (create <color-profile> element in the XML)
+ //store this profile in the SVG document (create <color-profile> element in the XML)
// TODO remove use of 'active' desktop
SPDesktop *desktop = SP_ACTIVE_DESKTOP;
if (!desktop){
g_warning("No active desktop");
} else {
- // Find the index of the currently-selected row in the color profiles combobox
- int row = _combo_avail.get_active_row_number();
+ // Find the index of the currently-selected row in the color profiles combobox
+ Gtk::TreeModel::iterator iter = _AvailableProfilesList.get_active();
- if (row == -1){
+ if (!iter) {
g_warning("No color profile available.");
return;
}
- // Read the filename and description from the list of available profiles
- std::vector<std::pair<Glib::ustring, Glib::ustring> > pairs = ColorProfile::getProfileFilesWithNames();
- Glib::ustring file = pairs[row].first;
- Glib::ustring name = pairs[row].second;
+ // Read the filename and description from the list of available profiles
+ Glib::ustring file = (*iter)[_AvailableProfilesListColumns.fileColumn];
+ Glib::ustring name = (*iter)[_AvailableProfilesListColumns.nameColumn];
std::vector<SPObject *> current = SP_ACTIVE_DOCUMENT->getResourceList( "iccprofile" );
for (std::vector<SPObject *>::const_iterator it = current.begin(); it != current.end(); ++it) {
SPObject* obj = *it;
@@ -511,7 +486,7 @@ void DocumentProperties::linkSelectedProfile()
// Checks whether there is a defs element. Creates it when needed
Inkscape::XML::Node *defsRepr = sp_repr_lookup_name(xml_doc, "svg:defs");
- if (!defsRepr){
+ if (!defsRepr) {
defsRepr = xml_doc->createElement("svg:defs");
xml_doc->root()->addChild(defsRepr, NULL);
}
@@ -529,6 +504,20 @@ void DocumentProperties::linkSelectedProfile()
}
}
+struct _cmp {
+ bool operator()(const SPObject * const & a, const SPObject * const & b)
+ {
+ const Inkscape::ColorProfile &a_prof = reinterpret_cast<const Inkscape::ColorProfile &>(*a);
+ const Inkscape::ColorProfile &b_prof = reinterpret_cast<const Inkscape::ColorProfile &>(*b);
+ gchar *a_name_casefold = g_utf8_casefold(a_prof.name, -1 );
+ gchar *b_name_casefold = g_utf8_casefold(b_prof.name, -1 );
+ int result = g_strcmp0(a_name_casefold, b_name_casefold);
+ g_free(a_name_casefold);
+ g_free(b_name_casefold);
+ return result < 0;
+ }
+};
+
void DocumentProperties::populate_linked_profiles_box()
{
_LinkedProfilesListStore->clear();
@@ -536,7 +525,8 @@ void DocumentProperties::populate_linked_profiles_box()
if (! current.empty()) {
_emb_profiles_observer.set((*(current.begin()))->parent);
}
- for (std::vector<SPObject *>::const_iterator it = current.begin(); it != current.end(); ++it) {
+ std::set<SPObject *, _cmp> _current (current.begin(), current.end());
+ for (std::set<SPObject *, _cmp>::const_iterator it = _current.begin(); it != _current.end(); ++it) {
SPObject* obj = *it;
Inkscape::ColorProfile* prof = reinterpret_cast<Inkscape::ColorProfile*>(obj);
Gtk::TreeModel::Row row = *(_LinkedProfilesListStore->append());
@@ -629,6 +619,12 @@ void DocumentProperties::removeSelectedProfile(){
onColorProfileSelectRow();
}
+bool DocumentProperties::_AvailableProfilesList_separator(const Glib::RefPtr<Gtk::TreeModel>& model, const Gtk::TreeModel::iterator& iter)
+{
+ bool separator = (*iter)[_AvailableProfilesListColumns.separatorColumn];
+ return separator;
+}
+
void DocumentProperties::build_cms()
{
_page_cms->show();
@@ -648,55 +644,38 @@ void DocumentProperties::build_cms()
label_link->set_alignment(0.0);
-#if WITH_GTKMM_3_0
label_link->set_hexpand();
label_link->set_valign(Gtk::ALIGN_CENTER);
_page_cms->table().attach(*label_link, 0, row, 3, 1);
-#else
- _page_cms->table().attach(*label_link, 0, 3, row, row + 1, Gtk::FILL|Gtk::EXPAND, (Gtk::AttachOptions)0, 0, 0);
-#endif
row++;
-#if WITH_GTKMM_3_0
_LinkedProfilesListScroller.set_hexpand();
_LinkedProfilesListScroller.set_valign(Gtk::ALIGN_CENTER);
_page_cms->table().attach(_LinkedProfilesListScroller, 0, row, 3, 1);
-#else
- _page_cms->table().attach(_LinkedProfilesListScroller, 0, 3, row, row + 1, Gtk::FILL|Gtk::EXPAND, (Gtk::AttachOptions)0, 0, 0);
-#endif
row++;
Gtk::HBox* spacer = Gtk::manage(new Gtk::HBox());
spacer->set_size_request(SPACE_SIZE_X, SPACE_SIZE_Y);
-#if WITH_GTKMM_3_0
spacer->set_hexpand();
spacer->set_valign(Gtk::ALIGN_CENTER);
_page_cms->table().attach(*spacer, 0, row, 3, 1);
-#else
- _page_cms->table().attach(*spacer, 0, 3, row, row + 1, Gtk::FILL|Gtk::EXPAND, (Gtk::AttachOptions)0, 0, 0);
-#endif
row++;
label_avail->set_alignment(0.0);
-#if WITH_GTKMM_3_0
label_avail->set_hexpand();
label_avail->set_valign(Gtk::ALIGN_CENTER);
_page_cms->table().attach(*label_avail, 0, row, 3, 1);
-#else
- _page_cms->table().attach(*label_avail, 0, 3, row, row + 1, Gtk::FILL|Gtk::EXPAND, (Gtk::AttachOptions)0, 0, 0);
-#endif
row++;
-#if WITH_GTKMM_3_0
- _combo_avail.set_hexpand();
- _combo_avail.set_valign(Gtk::ALIGN_CENTER);
- _page_cms->table().attach(_combo_avail, 0, row, 1, 1);
+ _AvailableProfilesList.set_hexpand();
+ _AvailableProfilesList.set_valign(Gtk::ALIGN_CENTER);
+ _page_cms->table().attach(_AvailableProfilesList, 0, row, 1, 1);
_link_btn.set_halign(Gtk::ALIGN_CENTER);
_link_btn.set_valign(Gtk::ALIGN_CENTER);
@@ -707,11 +686,12 @@ void DocumentProperties::build_cms()
_unlink_btn.set_halign(Gtk::ALIGN_CENTER);
_unlink_btn.set_valign(Gtk::ALIGN_CENTER);
_page_cms->table().attach(_unlink_btn, 2, row, 1, 1);
-#else
- _page_cms->table().attach(_combo_avail, 0, 1, row, row + 1, Gtk::FILL|Gtk::EXPAND, (Gtk::AttachOptions)0, 0, 0);
- _page_cms->table().attach(_link_btn, 1, 2, row, row + 1, (Gtk::AttachOptions)0, (Gtk::AttachOptions)0, 2, 0);
- _page_cms->table().attach(_unlink_btn, 2, 3, row, row + 1, (Gtk::AttachOptions)0, (Gtk::AttachOptions)0, 0, 0);
-#endif
+
+ // Set up the Avialable Profiles combo box
+ _AvailableProfilesListStore = Gtk::ListStore::create(_AvailableProfilesListColumns);
+ _AvailableProfilesList.set_model(_AvailableProfilesListStore);
+ _AvailableProfilesList.pack_start(_AvailableProfilesListColumns.nameColumn);
+ _AvailableProfilesList.set_row_separator_func(sigc::mem_fun(*this, &DocumentProperties::_AvailableProfilesList_separator));
populate_available_profiles();
@@ -772,41 +752,27 @@ void DocumentProperties::build_scripting()
gint row = 0;
label_external->set_alignment(0.0);
-
-#if WITH_GTKMM_3_0
label_external->set_hexpand();
label_external->set_valign(Gtk::ALIGN_CENTER);
_page_external_scripts->table().attach(*label_external, 0, row, 3, 1);
-#else
- _page_external_scripts->table().attach(*label_external, 0, 3, row, row + 1, Gtk::FILL|Gtk::EXPAND, (Gtk::AttachOptions)0, 0, 0);
-#endif
row++;
-#if WITH_GTKMM_3_0
_ExternalScriptsListScroller.set_hexpand();
_ExternalScriptsListScroller.set_valign(Gtk::ALIGN_CENTER);
_page_external_scripts->table().attach(_ExternalScriptsListScroller, 0, row, 3, 1);
-#else
- _page_external_scripts->table().attach(_ExternalScriptsListScroller, 0, 3, row, row + 1, Gtk::FILL|Gtk::EXPAND, (Gtk::AttachOptions)0, 0, 0);
-#endif
row++;
Gtk::HBox* spacer_external = Gtk::manage(new Gtk::HBox());
spacer_external->set_size_request(SPACE_SIZE_X, SPACE_SIZE_Y);
-#if WITH_GTKMM_3_0
spacer_external->set_hexpand();
spacer_external->set_valign(Gtk::ALIGN_CENTER);
_page_external_scripts->table().attach(*spacer_external, 0, row, 3, 1);
-#else
- _page_external_scripts->table().attach(*spacer_external, 0, 3, row, row + 1, Gtk::FILL|Gtk::EXPAND, (Gtk::AttachOptions)0, 0, 0);
-#endif
row++;
-#if WITH_GTKMM_3_0
_script_entry.set_hexpand();
_script_entry.set_valign(Gtk::ALIGN_CENTER);
_page_external_scripts->table().attach(_script_entry, 0, row, 1, 1);
@@ -820,11 +786,6 @@ void DocumentProperties::build_scripting()
_external_remove_btn.set_halign(Gtk::ALIGN_CENTER);
_external_remove_btn.set_valign(Gtk::ALIGN_CENTER);
_page_external_scripts->table().attach(_external_remove_btn, 2, row, 1, 1);
-#else
- _page_external_scripts->table().attach(_script_entry, 0, 1, row, row + 1, Gtk::FILL|Gtk::EXPAND, (Gtk::AttachOptions)0, 0, 0);
- _page_external_scripts->table().attach(_external_add_btn, 1, 2, row, row + 1, (Gtk::AttachOptions)0, (Gtk::AttachOptions)0, 2, 0);
- _page_external_scripts->table().attach(_external_remove_btn, 2, 3, row, row + 1, (Gtk::AttachOptions)0, (Gtk::AttachOptions)0, 0, 0);
-#endif
//# Set up the External Scripts box
_ExternalScriptsListStore = Gtk::ListStore::create(_ExternalScriptsListColumns);
@@ -845,12 +806,6 @@ void DocumentProperties::build_scripting()
_embed_remove_btn.set_tooltip_text(_("Remove"));
docprops_style_button(_embed_remove_btn, INKSCAPE_ICON("list-remove"));
-#if !WITH_GTKMM_3_0
- // TODO: This has been removed from Gtkmm 3.0. Check that
- // everything still looks OK!
- _embed_button_box.set_child_min_width( 16 );
- _embed_button_box.set_spacing( 4 );
-#endif
_embed_button_box.set_layout (Gtk::BUTTONBOX_START);
_embed_button_box.add(_embed_new_btn);
_embed_button_box.add(_embed_remove_btn);
@@ -859,47 +814,29 @@ void DocumentProperties::build_scripting()
row = 0;
label_embedded->set_alignment(0.0);
-
-#if WITH_GTKMM_3_0
label_embedded->set_hexpand();
label_embedded->set_valign(Gtk::ALIGN_CENTER);
_page_embedded_scripts->table().attach(*label_embedded, 0, row, 3, 1);
-#else
- _page_embedded_scripts->table().attach(*label_embedded, 0, 3, row, row + 1, Gtk::FILL|Gtk::EXPAND, (Gtk::AttachOptions)0, 0, 0);
-#endif
row++;
-#if WITH_GTKMM_3_0
_EmbeddedScriptsListScroller.set_hexpand();
_EmbeddedScriptsListScroller.set_valign(Gtk::ALIGN_CENTER);
_page_embedded_scripts->table().attach(_EmbeddedScriptsListScroller, 0, row, 3, 1);
-#else
- _page_embedded_scripts->table().attach(_EmbeddedScriptsListScroller, 0, 3, row, row + 1, Gtk::FILL|Gtk::EXPAND, (Gtk::AttachOptions)0, 0, 0);
-#endif
row++;
-#if WITH_GTKMM_3_0
_embed_button_box.set_hexpand();
_embed_button_box.set_valign(Gtk::ALIGN_CENTER);
_page_embedded_scripts->table().attach(_embed_button_box, 0, row, 1, 1);
-#else
- _page_embedded_scripts->table().attach(_embed_button_box, 0, 1, row, row + 1, Gtk::FILL|Gtk::EXPAND, (Gtk::AttachOptions)0, 0, 0);
-#endif
row++;
Gtk::HBox* spacer_embedded = Gtk::manage(new Gtk::HBox());
spacer_embedded->set_size_request(SPACE_SIZE_X, SPACE_SIZE_Y);
-
-#if WITH_GTKMM_3_0
spacer_embedded->set_hexpand();
spacer_embedded->set_valign(Gtk::ALIGN_CENTER);
_page_embedded_scripts->table().attach(*spacer_embedded, 0, row, 3, 1);
-#else
- _page_embedded_scripts->table().attach(*spacer_embedded, 0, 3, row, row + 1, Gtk::FILL|Gtk::EXPAND, (Gtk::AttachOptions)0, 0, 0);
-#endif
row++;
@@ -915,24 +852,15 @@ void DocumentProperties::build_scripting()
label_embedded_content->set_markup (_("<b>Content:</b>"));
label_embedded_content->set_alignment(0.0);
-
-#if WITH_GTKMM_3_0
label_embedded_content->set_hexpand();
label_embedded_content->set_valign(Gtk::ALIGN_CENTER);
_page_embedded_scripts->table().attach(*label_embedded_content, 0, row, 3, 1);
-#else
- _page_embedded_scripts->table().attach(*label_embedded_content, 0, 3, row, row + 1, Gtk::FILL|Gtk::EXPAND, (Gtk::AttachOptions)0, 0, 0);
-#endif
row++;
-#if WITH_GTKMM_3_0
_EmbeddedContentScroller.set_hexpand();
_EmbeddedContentScroller.set_valign(Gtk::ALIGN_CENTER);
_page_embedded_scripts->table().attach(_EmbeddedContentScroller, 0, row, 3, 1);
-#else
- _page_embedded_scripts->table().attach(_EmbeddedContentScroller, 0, 3, row, row + 1, Gtk::FILL|Gtk::EXPAND, (Gtk::AttachOptions)0, 0, 0);
-#endif
_EmbeddedContentScroller.add(_EmbeddedContent);
_EmbeddedContentScroller.set_shadow_type(Gtk::SHADOW_IN);
@@ -994,12 +922,8 @@ void DocumentProperties::build_metadata()
label->set_markup (_("<b>Dublin Core Entities</b>"));
label->set_alignment (0.0);
-#if WITH_GTKMM_3_0
label->set_valign(Gtk::ALIGN_CENTER);
_page_metadata1->table().attach (*label, 0,0,3,1);
-#else
- _page_metadata1->table().attach (*label, 0,3,0,1, Gtk::FILL, (Gtk::AttachOptions)0,0,0);
-#endif
/* add generic metadata entry areas */
struct rdf_work_entity_t * entity;
@@ -1010,8 +934,6 @@ void DocumentProperties::build_metadata()
_rdflist.push_back (w);
Gtk::HBox *space = Gtk::manage (new Gtk::HBox);
space->set_size_request (SPACE_SIZE_X, SPACE_SIZE_Y);
-
-#if WITH_GTKMM_3_0
space->set_valign(Gtk::ALIGN_CENTER);
_page_metadata1->table().attach(*space, 0, row, 1, 1);
@@ -1021,11 +943,6 @@ void DocumentProperties::build_metadata()
w->_packable->set_hexpand();
w->_packable->set_valign(Gtk::ALIGN_CENTER);
_page_metadata1->table().attach(*w->_packable, 2, row, 1, 1);
-#else
- _page_metadata1->table().attach (*space, 0,1, row, row+1, Gtk::FILL, (Gtk::AttachOptions)0,0,0);
- _page_metadata1->table().attach (w->_label, 1,2, row, row+1, Gtk::FILL, (Gtk::AttachOptions)0,0,0);
- _page_metadata1->table().attach (*w->_packable, 2,3, row, row+1, Gtk::FILL|Gtk::EXPAND, (Gtk::AttachOptions)0,0,0);
-#endif
}
}
@@ -1034,11 +951,7 @@ void DocumentProperties::build_metadata()
Gtk::Button *button_load = Gtk::manage (new Gtk::Button(_("Use _default"),1));
button_load->set_tooltip_text(_("Use the previously saved default metadata here"));
-#if WITH_GTKMM_3_0
- Gtk::ButtonBox *box_buttons = Gtk::manage (new Gtk::ButtonBox);
-#else
- Gtk::HButtonBox *box_buttons = Gtk::manage (new Gtk::HButtonBox);
-#endif
+ auto box_buttons = Gtk::manage (new Gtk::ButtonBox);
box_buttons->set_layout(Gtk::BUTTONBOX_END);
box_buttons->set_spacing(4);
@@ -1056,12 +969,8 @@ void DocumentProperties::build_metadata()
llabel->set_markup (_("<b>License</b>"));
llabel->set_alignment (0.0);
-#if WITH_GTKMM_3_0
llabel->set_valign(Gtk::ALIGN_CENTER);
_page_metadata2->table().attach(*llabel, 0, row, 3, 1);
-#else
- _page_metadata2->table().attach (*llabel, 0,3, row, row+1, Gtk::FILL, (Gtk::AttachOptions)0,0,0);
-#endif
/* add license selector pull-down and URI */
++row;
@@ -1069,17 +978,12 @@ void DocumentProperties::build_metadata()
Gtk::HBox *space = Gtk::manage (new Gtk::HBox);
space->set_size_request (SPACE_SIZE_X, SPACE_SIZE_Y);
-#if WITH_GTKMM_3_0
space->set_valign(Gtk::ALIGN_CENTER);
_page_metadata2->table().attach(*space, 0, row, 1, 1);
_licensor.set_hexpand();
_licensor.set_valign(Gtk::ALIGN_CENTER);
_page_metadata2->table().attach(_licensor, 1, row, 3, 1);
-#else
- _page_metadata2->table().attach (*space, 0,1, row, row+1, Gtk::FILL, (Gtk::AttachOptions)0,0,0);
- _page_metadata2->table().attach (_licensor, 1,3, row, row+1, Gtk::EXPAND|Gtk::FILL, (Gtk::AttachOptions)0,0,0);
-#endif
}
void DocumentProperties::addExternalScript(){
@@ -1272,12 +1176,7 @@ void DocumentProperties::changeEmbeddedScript(){
for (std::vector<SPObject *>::const_iterator it = current.begin(); it != current.end(); ++it) {
SPObject* obj = *it;
if (id == obj->getId()){
-
- int count=0;
- for ( SPObject *child = obj->children ; child; child = child->next )
- {
- count++;
- }
+ int count = (int) obj->children.size();
if (count>1)
g_warning("TODO: Found a script element with multiple (%d) child nodes! We must implement support for that!", count);
@@ -1321,8 +1220,11 @@ void DocumentProperties::editEmbeddedScript(){
//XML Tree being used directly here while it shouldn't be.
Inkscape::XML::Node *repr = obj->getRepr();
if (repr){
- SPObject *child;
- while (NULL != (child = obj->firstChild())) child->deleteObject();
+ auto tmp = obj->children | boost::adaptors::transformed([](SPObject& o) { return &o; });
+ std::vector<SPObject*> vec(tmp.begin(), tmp.end());
+ for (auto &child: vec) {
+ child->deleteObject();
+ }
obj->appendChildRepr(xml_doc->createTextNode(_EmbeddedContent.get_buffer()->get_text().c_str()));
//TODO repr->set_content(_EmbeddedContent.get_buffer()->get_text());
@@ -1693,7 +1595,7 @@ void DocumentProperties::onDocUnitChange()
// Disable changing of SVG Units. The intent here is to change the units in the UI, not the units in SVG.
// This code should be moved (and fixed) once we have an "SVG Units" setting that sets what units are used in SVG data.
-#if 0
+#if 0
// Set viewBox
if (doc->getRoot()->viewBox_set) {
gdouble scale = Inkscape::Util::Quantity::convert(1, old_doc_unit, doc_unit);
@@ -1703,12 +1605,12 @@ void DocumentProperties::onDocUnitChange()
Inkscape::Util::Quantity height = doc->getHeight();
doc->setViewBox(Geom::Rect::from_xywh(0, 0, width.value(doc_unit), height.value(doc_unit)));
}
-
+
// TODO: Fix bug in nodes tool instead of switching away from it
if (tools_active(getDesktop()) == TOOLS_NODES) {
tools_switch(getDesktop(), TOOLS_SELECT);
}
-
+
// Scale and translate objects
// set transform options to scale all things with the transform, so all things scale properly after the viewbox change.
/// \todo this "low-level" code of changing viewbox/unit should be moved somewhere else
@@ -1748,7 +1650,7 @@ void DocumentProperties::onDocUnitChange()
#endif
doc->setModifiedSinceSave();
-
+
DocumentUndo::done(doc, SP_VERB_NONE, _("Changed default display unit"));
}