Make comment field editable
This commit is contained in:
parent
a56bb9073a
commit
d2790f7f7e
@ -59,6 +59,8 @@
|
||||
<object class="GtkLabel" id="label_title">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="margin_left">2</property>
|
||||
<property name="margin_bottom">1</property>
|
||||
<property name="label" translatable="yes">Title</property>
|
||||
<property name="wrap">True</property>
|
||||
<attributes>
|
||||
@ -102,6 +104,8 @@
|
||||
<object class="GtkLabel" id="label_description">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="margin_left">2</property>
|
||||
<property name="margin_top">1</property>
|
||||
<property name="label" translatable="yes">Description</property>
|
||||
<property name="wrap">True</property>
|
||||
</object>
|
||||
@ -123,16 +127,22 @@
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
<object class="GtkLabel" id="label_comment">
|
||||
<object class="GtkEntry" id="entry_comment">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="label" translatable="yes">Comment</property>
|
||||
<attributes>
|
||||
<attribute name="style" value="italic"/>
|
||||
</attributes>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="tooltip_text" translatable="yes">Click here to add a comment.</property>
|
||||
<property name="editable">False</property>
|
||||
<property name="max_length">128</property>
|
||||
<property name="has_frame">False</property>
|
||||
<property name="placeholder_text" translatable="yes">Click here to add a comment.</property>
|
||||
<property name="input_hints">GTK_INPUT_HINT_SPELLCHECK | GTK_INPUT_HINT_NONE</property>
|
||||
<property name="enable_emoji_completion">True</property>
|
||||
<style>
|
||||
<class name="entry_comment"/>
|
||||
</style>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
@ -181,6 +191,7 @@
|
||||
<object class="GtkButton" id="button_properties">
|
||||
<property name="label">gtk-properties</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="sensitive">False</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="margin_left">4</property>
|
||||
|
@ -6,7 +6,7 @@ typedef struct _YacosCartItemPriv {
|
||||
|
||||
GtkWidget *label_title;
|
||||
GtkWidget *label_description;
|
||||
GtkWidget *label_comment;
|
||||
GtkWidget *entry_comment;
|
||||
GtkWidget *label_id;
|
||||
|
||||
GtkWidget *button_properties;
|
||||
@ -66,7 +66,7 @@ static void yacos_cart_item_class_init(YacosCartItemClass *klass)
|
||||
oclass->finalize = yacos_cart_item_finalize;
|
||||
}
|
||||
|
||||
static void yacos_ceart_item_button_delete_cb(GtkWidget *widget, gpointer user_data)
|
||||
static void yacos_cart_item_button_delete_cb(GtkWidget *widget, gpointer user_data)
|
||||
{
|
||||
YacosCartItem *self = (YacosCartItem *)user_data;
|
||||
|
||||
@ -75,6 +75,18 @@ static void yacos_ceart_item_button_delete_cb(GtkWidget *widget, gpointer user_d
|
||||
gtk_container_remove(GTK_CONTAINER(gtk_widget_get_parent(list_box_row)), list_box_row);
|
||||
}
|
||||
|
||||
static void yacos_cart_item_button_properties_cb(GtkWidget *widget, gpointer user_data)
|
||||
{
|
||||
YacosCartItem *self = (YacosCartItem *)user_data;
|
||||
|
||||
if (self->priv.status != YACOS_CART_ITEM_STATUS_VALID) {
|
||||
g_warning("Comments can only be set on valid entries.");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
static void yacos_cart_item_init(YacosCartItem *self)
|
||||
{
|
||||
GtkBuilder *builder;
|
||||
@ -84,7 +96,7 @@ static void yacos_cart_item_init(YacosCartItem *self)
|
||||
|
||||
self->priv.label_id = GTK_WIDGET(gtk_builder_get_object(builder, "label_id"));
|
||||
self->priv.label_title = GTK_WIDGET(gtk_builder_get_object(builder, "label_title"));
|
||||
self->priv.label_comment = GTK_WIDGET(gtk_builder_get_object(builder, "label_comment"));
|
||||
self->priv.entry_comment = GTK_WIDGET(gtk_builder_get_object(builder, "entry_comment"));
|
||||
self->priv.label_description = GTK_WIDGET(gtk_builder_get_object(builder, "label_description"));
|
||||
|
||||
self->priv.button_delete = GTK_WIDGET(gtk_builder_get_object(builder, "button_delete"));
|
||||
@ -101,13 +113,30 @@ static void yacos_cart_item_init(YacosCartItem *self)
|
||||
|
||||
g_signal_connect(self->priv.button_delete,
|
||||
"clicked",
|
||||
(GCallback) yacos_ceart_item_button_delete_cb,
|
||||
(GCallback) yacos_cart_item_button_delete_cb,
|
||||
self);
|
||||
g_signal_connect(self->priv.button_properties,
|
||||
"clicked",
|
||||
(GCallback) yacos_cart_item_button_properties_cb,
|
||||
self);
|
||||
|
||||
|
||||
gtk_container_add(GTK_CONTAINER(self), self->priv.box);
|
||||
|
||||
g_object_unref(builder);
|
||||
|
||||
GtkStyleContext *context;
|
||||
GtkCssProvider *provider;
|
||||
|
||||
context = gtk_widget_get_style_context (self->priv.entry_comment);
|
||||
provider = gtk_css_provider_new ();
|
||||
gtk_css_provider_load_from_data (GTK_CSS_PROVIDER (provider),
|
||||
".entry_comment {\n"
|
||||
" font-style: italic;\n"
|
||||
"}\n", -1, NULL);
|
||||
gtk_style_context_add_provider (context,
|
||||
GTK_STYLE_PROVIDER (provider),
|
||||
GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
|
||||
g_object_unref (provider);
|
||||
}
|
||||
|
||||
GtkWidget *yacos_cart_item_new(void)
|
||||
@ -144,7 +173,7 @@ static void yacos_cart_item_fetch_meta_cb (SoupSession *session, SoupMessage *ms
|
||||
gtk_label_set_text(GTK_LABEL(self->priv.label_title), "Unknown article");
|
||||
gtk_widget_override_color(self->priv.label_title, GTK_STATE_FLAG_NORMAL, &color_error);
|
||||
gtk_label_set_text(GTK_LABEL(self->priv.label_description), "This article will be ignored on checkout.");
|
||||
gtk_label_set_text(GTK_LABEL(self->priv.label_comment), "If you think this is an error, please contact a member of staff.");
|
||||
gtk_entry_set_text(GTK_ENTRY(self->priv.entry_comment), "If you think this is an error, please contact a member of staff.");
|
||||
self->priv.status = YACOS_CART_ITEM_STATUS_INVALID;
|
||||
return;
|
||||
}
|
||||
@ -169,12 +198,14 @@ static void yacos_cart_item_fetch_meta_cb (SoupSession *session, SoupMessage *ms
|
||||
|
||||
json_reader_read_member (reader, "comment");
|
||||
temp = json_reader_get_string_value (reader);
|
||||
gtk_label_set_text(GTK_LABEL(self->priv.label_comment), temp);
|
||||
gtk_entry_set_text(GTK_ENTRY(self->priv.entry_comment), temp);
|
||||
json_reader_end_member (reader);
|
||||
|
||||
g_object_unref (reader);
|
||||
g_object_unref (parser);
|
||||
|
||||
gtk_editable_set_editable(GTK_EDITABLE(self->priv.entry_comment), TRUE);
|
||||
gtk_widget_set_sensitive(self->priv.button_properties, TRUE);
|
||||
self->priv.status = YACOS_CART_ITEM_STATUS_VALID;
|
||||
}
|
||||
|
||||
@ -186,8 +217,7 @@ void yacos_cart_item_fetch_meta(YacosCartItem *self)
|
||||
|
||||
gtk_label_set_text(GTK_LABEL(self->priv.label_title), "Loading ...");
|
||||
gtk_label_set_text(GTK_LABEL(self->priv.label_description), "");
|
||||
gtk_label_set_text(GTK_LABEL(self->priv.label_comment), "");
|
||||
|
||||
gtk_entry_set_text(GTK_LABEL(self->priv.entry_comment), " ");
|
||||
|
||||
id_str = yacos_tag_id_to_str(self->priv.tag_id);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user