mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2025-01-04 09:40:19 +00:00
Merge branch 'constraint-editor-work' into 'master'
Constraint editor work See merge request GNOME/gtk!2863
This commit is contained in:
commit
184886f893
@ -36,7 +36,7 @@ struct _ConstraintEditorWindow
|
|||||||
G_DEFINE_TYPE(ConstraintEditorWindow, constraint_editor_window, GTK_TYPE_APPLICATION_WINDOW);
|
G_DEFINE_TYPE(ConstraintEditorWindow, constraint_editor_window, GTK_TYPE_APPLICATION_WINDOW);
|
||||||
|
|
||||||
static GtkConstraintTarget *
|
static GtkConstraintTarget *
|
||||||
find_target (GListModel *model,
|
find_target (GListModel *model,
|
||||||
GtkConstraintTarget *orig)
|
GtkConstraintTarget *orig)
|
||||||
{
|
{
|
||||||
const char *name;
|
const char *name;
|
||||||
@ -163,20 +163,30 @@ constraint_editor_window_load (ConstraintEditorWindow *self,
|
|||||||
GtkConstraint *clone;
|
GtkConstraint *clone;
|
||||||
GtkConstraintTarget *target;
|
GtkConstraintTarget *target;
|
||||||
GtkConstraintTarget *source;
|
GtkConstraintTarget *source;
|
||||||
|
GtkConstraintAttribute source_attr;
|
||||||
|
|
||||||
item = g_list_model_get_item (list, i);
|
item = g_list_model_get_item (list, i);
|
||||||
constraint = GTK_CONSTRAINT (item);
|
constraint = GTK_CONSTRAINT (item);
|
||||||
|
|
||||||
target = gtk_constraint_get_target (constraint);
|
target = gtk_constraint_get_target (constraint);
|
||||||
source = gtk_constraint_get_source (constraint);
|
source = gtk_constraint_get_source (constraint);
|
||||||
clone = gtk_constraint_new (find_target (constraint_view_get_model (CONSTRAINT_VIEW (self->view)), target),
|
source_attr = gtk_constraint_get_source_attribute (constraint);
|
||||||
|
|
||||||
|
if (source == NULL && source_attr == GTK_CONSTRAINT_ATTRIBUTE_NONE)
|
||||||
|
clone = gtk_constraint_new_constant (find_target (constraint_view_get_model (CONSTRAINT_VIEW (self->view)), target),
|
||||||
gtk_constraint_get_target_attribute (constraint),
|
gtk_constraint_get_target_attribute (constraint),
|
||||||
gtk_constraint_get_relation (constraint),
|
gtk_constraint_get_relation (constraint),
|
||||||
find_target (constraint_view_get_model (CONSTRAINT_VIEW (self->view)), source),
|
|
||||||
gtk_constraint_get_target_attribute (constraint),
|
|
||||||
gtk_constraint_get_multiplier (constraint),
|
|
||||||
gtk_constraint_get_constant (constraint),
|
gtk_constraint_get_constant (constraint),
|
||||||
gtk_constraint_get_strength (constraint));
|
gtk_constraint_get_strength (constraint));
|
||||||
|
else
|
||||||
|
clone = gtk_constraint_new (find_target (constraint_view_get_model (CONSTRAINT_VIEW (self->view)), target),
|
||||||
|
gtk_constraint_get_target_attribute (constraint),
|
||||||
|
gtk_constraint_get_relation (constraint),
|
||||||
|
find_target (constraint_view_get_model (CONSTRAINT_VIEW (self->view)), source),
|
||||||
|
source_attr,
|
||||||
|
gtk_constraint_get_multiplier (constraint),
|
||||||
|
gtk_constraint_get_constant (constraint),
|
||||||
|
gtk_constraint_get_strength (constraint));
|
||||||
|
|
||||||
constraint_view_add_constraint (CONSTRAINT_VIEW (self->view), clone);
|
constraint_view_add_constraint (CONSTRAINT_VIEW (self->view), clone);
|
||||||
|
|
||||||
@ -300,7 +310,7 @@ save_response_cb (GtkNativeDialog *dialog,
|
|||||||
model = constraint_view_get_model (CONSTRAINT_VIEW (self->view));
|
model = constraint_view_get_model (CONSTRAINT_VIEW (self->view));
|
||||||
text = serialize_model (model);
|
text = serialize_model (model);
|
||||||
file = gtk_file_chooser_get_file (GTK_FILE_CHOOSER (dialog));
|
file = gtk_file_chooser_get_file (GTK_FILE_CHOOSER (dialog));
|
||||||
g_file_replace_contents (file, text, -1,
|
g_file_replace_contents (file, text, strlen (text),
|
||||||
NULL, FALSE,
|
NULL, FALSE,
|
||||||
G_FILE_CREATE_NONE,
|
G_FILE_CREATE_NONE,
|
||||||
NULL,
|
NULL,
|
||||||
|
@ -142,6 +142,9 @@ get_target (GListModel *model,
|
|||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
if (id == NULL)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
if (strcmp ("super", id) == 0)
|
if (strcmp ("super", id) == 0)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
@ -212,6 +215,22 @@ get_relation_nick (GtkConstraintRelation relation)
|
|||||||
return nick;
|
return nick;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static const char *
|
||||||
|
get_relation_display_name (GtkConstraintRelation relation)
|
||||||
|
{
|
||||||
|
switch (relation)
|
||||||
|
{
|
||||||
|
case GTK_CONSTRAINT_RELATION_LE:
|
||||||
|
return "≤";
|
||||||
|
case GTK_CONSTRAINT_RELATION_EQ:
|
||||||
|
return "=";
|
||||||
|
case GTK_CONSTRAINT_RELATION_GE:
|
||||||
|
return "≥";
|
||||||
|
default:
|
||||||
|
return "?";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static GtkConstraintStrength
|
static GtkConstraintStrength
|
||||||
get_strength (const char *id)
|
get_strength (const char *id)
|
||||||
{
|
{
|
||||||
@ -331,6 +350,7 @@ source_attr_changed (ConstraintEditor *editor)
|
|||||||
{
|
{
|
||||||
gtk_widget_set_sensitive (editor->source, TRUE);
|
gtk_widget_set_sensitive (editor->source, TRUE);
|
||||||
gtk_widget_set_sensitive (editor->multiplier, TRUE);
|
gtk_widget_set_sensitive (editor->multiplier, TRUE);
|
||||||
|
gtk_editable_set_text (GTK_EDITABLE (editor->multiplier), "1");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -347,7 +367,7 @@ constraint_editor_constraint_to_string (GtkConstraint *constraint)
|
|||||||
|
|
||||||
name = get_target_name (gtk_constraint_get_target (constraint));
|
name = get_target_name (gtk_constraint_get_target (constraint));
|
||||||
attr = get_attr_nick (gtk_constraint_get_target_attribute (constraint));
|
attr = get_attr_nick (gtk_constraint_get_target_attribute (constraint));
|
||||||
relation = get_relation_nick (gtk_constraint_get_relation (constraint));
|
relation = get_relation_display_name (gtk_constraint_get_relation (constraint));
|
||||||
|
|
||||||
if (name == NULL)
|
if (name == NULL)
|
||||||
name = "[ ]";
|
name = "[ ]";
|
||||||
@ -441,8 +461,12 @@ update_preview (ConstraintEditor *editor)
|
|||||||
static void
|
static void
|
||||||
update_button (ConstraintEditor *editor)
|
update_button (ConstraintEditor *editor)
|
||||||
{
|
{
|
||||||
if (gtk_combo_box_get_active_id (GTK_COMBO_BOX (editor->target)) != NULL &&
|
const char *target = gtk_combo_box_get_active_id (GTK_COMBO_BOX (editor->target));
|
||||||
gtk_combo_box_get_active_id (GTK_COMBO_BOX (editor->source)) != NULL)
|
const char *source = gtk_combo_box_get_active_id (GTK_COMBO_BOX (editor->source));
|
||||||
|
const char *source_attr = gtk_combo_box_get_active_id (GTK_COMBO_BOX (editor->source_attr));
|
||||||
|
|
||||||
|
if (target &&
|
||||||
|
(source || (source_attr && get_target_attr (source_attr) == GTK_CONSTRAINT_ATTRIBUTE_NONE)))
|
||||||
gtk_widget_set_sensitive (editor->button, TRUE);
|
gtk_widget_set_sensitive (editor->button, TRUE);
|
||||||
else
|
else
|
||||||
gtk_widget_set_sensitive (editor->button, FALSE);
|
gtk_widget_set_sensitive (editor->button, FALSE);
|
||||||
|
@ -78,6 +78,7 @@
|
|||||||
<object class="GtkComboBoxText" id="source_attr">
|
<object class="GtkComboBoxText" id="source_attr">
|
||||||
<signal name="changed" handler="update_preview" swapped="yes"/>
|
<signal name="changed" handler="update_preview" swapped="yes"/>
|
||||||
<signal name="changed" handler="source_attr_changed" swapped="yes"/>
|
<signal name="changed" handler="source_attr_changed" swapped="yes"/>
|
||||||
|
<signal name="changed" handler="update_button" swapped="yes"/>
|
||||||
<layout>
|
<layout>
|
||||||
<property name="column">2</property>
|
<property name="column">2</property>
|
||||||
<property name="row">3</property>
|
<property name="row">3</property>
|
||||||
|
@ -1431,18 +1431,18 @@ constraint_data_to_constraint (const ConstraintData *data,
|
|||||||
else
|
else
|
||||||
strength = GTK_CONSTRAINT_STRENGTH_REQUIRED;
|
strength = GTK_CONSTRAINT_STRENGTH_REQUIRED;
|
||||||
|
|
||||||
if (source != NULL && source_attr != GTK_CONSTRAINT_ATTRIBUTE_NONE)
|
if (source == NULL && source_attr == GTK_CONSTRAINT_ATTRIBUTE_NONE)
|
||||||
|
return gtk_constraint_new_constant (target, target_attr,
|
||||||
|
relation,
|
||||||
|
data->constant,
|
||||||
|
strength);
|
||||||
|
else
|
||||||
return gtk_constraint_new (target, target_attr,
|
return gtk_constraint_new (target, target_attr,
|
||||||
relation,
|
relation,
|
||||||
source, source_attr,
|
source, source_attr,
|
||||||
data->multiplier,
|
data->multiplier,
|
||||||
data->constant,
|
data->constant,
|
||||||
strength);
|
strength);
|
||||||
|
|
||||||
return gtk_constraint_new_constant (target, target_attr,
|
|
||||||
relation,
|
|
||||||
data->constant,
|
|
||||||
strength);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static GtkConstraintGuide *
|
static GtkConstraintGuide *
|
||||||
|
Loading…
Reference in New Issue
Block a user