void GuiGraphics::change_group(int index)
{
- QString const group = groupCO->itemData(
+ QString const new_group = groupCO->itemData(
groupCO->currentIndex()).toString();
+
+ // check if the old group consisted only of this member
+ if (current_group_ != fromqstr(new_group)
+ && graphics::countGroupMembers(buffer(), current_group_) == 1) {
+ if (!new_group.isEmpty()) {
+ if (Alert::prompt(_("Dissolve previous group?"),
+ bformat(_("If you assign this graphic to group '%2$s',\n"
+ "the previously assigned group '%1$s' will be dissolved,\n"
+ "because this graphic was its only member.\n"
+ "How do you want to proceed?"),
+ from_utf8(current_group_), qstring_to_ucs4(new_group)),
+ 0, 0,
+ bformat(_("Stick with group '%1$s'"),
+ from_utf8(current_group_)),
+ bformat(_("Assign to group '%1$s' anyway"),
+ qstring_to_ucs4(new_group))) == 0) {
+ groupCO->setCurrentIndex(
+ groupCO->findData(toqstr(current_group_), Qt::MatchExactly));
+ return;
+ }
+ } else {
+ if (Alert::prompt(_("Dissolve previous group?"),
+ bformat(_("If you sign off this graphic from group '%1$s',\n"
+ "the group will be dissolved,\n"
+ "because this graphic was its only member.\n"
+ "How do you want to proceed?"),
+ from_utf8(current_group_)),
+ 0, 0,
+ bformat(_("Stick with group '%1$s'"),
+ from_utf8(current_group_)),
+ bformat(_("Sign off from group '%1$s'"),
+ from_utf8(current_group_))) == 0) {
+ groupCO->setCurrentIndex(
+ groupCO->findData(toqstr(current_group_), Qt::MatchExactly));
+ return;
+ }
+ }
+ }
- if (group.isEmpty()) {
+ if (new_group.isEmpty()) {
changed();
return;
}
- string grp = graphics::getGroupParams(buffer(), fromqstr(group));
+ string grp = graphics::getGroupParams(buffer(), fromqstr(new_group));
if (grp.empty()) {
// group does not exist yet
changed();
igp.groupId = fromqstr(groupCO->itemData(
groupCO->currentIndex()).toString());
+ current_group_ = igp.groupId;
}
{
InsetGraphics::string2params(data, buffer(), params_);
paramsToDialog(params_);
+ current_group_ = params_.groupId;
return true;
}
<string/>
</property>
<property name="text" >
- <string>Assigned to grou&p:</string>
+ <string>A&ssigned to group:</string>
</property>
<property name="buddy" >
<cstring>groupCO</cstring>
<item row="1" column="1" >
<widget class="QPushButton" name="newGroupPB" >
<property name="toolTip" >
- <string>Click to define a new graphics group</string>
+ <string>Click to define a new graphics group.</string>
</property>
<property name="text" >
- <string>De&fine new group...</string>
+ <string>O&pen new group...</string>
</property>
</widget>
</item>
}
+int countGroupMembers(Buffer const & b, string const & groupId)
+{
+ int n = 0;
+ if (groupId.empty())
+ return n;
+ Inset & inset = b.inset();
+ InsetIterator it = inset_iterator_begin(inset);
+ InsetIterator const end = inset_iterator_end(inset);
+ for (; it != end; ++it)
+ if (it->lyxCode() == GRAPHICS_CODE) {
+ InsetGraphics & ins = static_cast<InsetGraphics &>(*it);
+ if (ins.getParams().groupId == groupId)
+ ++n;
+ }
+ return n;
+}
+
+
string getGroupParams(Buffer const & b, string const & groupId)
{
if (groupId.empty())