Add the --ellipsize option to info, error, warning and question dialogs

This option will help people who need to add huge texts in their dialogs
and the window size get's very huge due amount of size that GtkLabel
requests
This commit is contained in:
Arx Cruz 2014-05-20 16:05:32 -03:00
parent 86f6329fc1
commit ec0c2f3292
3 changed files with 48 additions and 2 deletions

View File

@ -159,6 +159,9 @@ zenity_msg (ZenityData *data, ZenityMsgData *msg_data)
gtk_label_set_markup (GTK_LABEL (text), g_strcompress (msg_data->dialog_text)); gtk_label_set_markup (GTK_LABEL (text), g_strcompress (msg_data->dialog_text));
} }
if (msg_data->ellipsize)
gtk_label_set_ellipsize (GTK_LABEL(text), PANGO_ALIGN_RIGHT);
if (msg_data->dialog_icon) if (msg_data->dialog_icon)
gtk_image_set_from_icon_name (GTK_IMAGE (image), msg_data->dialog_icon, GTK_ICON_SIZE_DIALOG); gtk_image_set_from_icon_name (GTK_IMAGE (image), msg_data->dialog_icon, GTK_ICON_SIZE_DIALOG);
@ -176,6 +179,7 @@ zenity_msg (ZenityData *data, ZenityMsgData *msg_data)
gtk_main (); gtk_main ();
} }
static void static void
zenity_msg_dialog_response (GtkWidget *widget, int response, gpointer data) zenity_msg_dialog_response (GtkWidget *widget, int response, gpointer data)
{ {

View File

@ -47,6 +47,7 @@ static gchar *zenity_general_ok_button;
static gchar *zenity_general_cancel_button; static gchar *zenity_general_cancel_button;
static gboolean zenity_general_modal; static gboolean zenity_general_modal;
static gint zenity_general_attach; static gint zenity_general_attach;
static gboolean zenity_general_dialog_ellipsize;
/* Calendar Dialog Options */ /* Calendar Dialog Options */
static gboolean zenity_calendar_active; static gboolean zenity_calendar_active;
@ -389,6 +390,14 @@ static GOptionEntry error_options[] = {
&zenity_general_dialog_no_markup, &zenity_general_dialog_no_markup,
N_("Do not enable pango markup") N_("Do not enable pango markup")
}, },
{
"ellipsize",
'\0',
G_OPTION_FLAG_NOALIAS,
G_OPTION_ARG_NONE,
&zenity_general_dialog_ellipsize,
N_("Enable ellipsize in dialog text. This fix the high window size with big texts")
},
{ {
NULL NULL
} }
@ -439,6 +448,14 @@ static GOptionEntry info_options[] = {
&zenity_general_dialog_no_markup, &zenity_general_dialog_no_markup,
N_("Do not enable pango markup") N_("Do not enable pango markup")
}, },
{
"ellipsize",
'\0',
G_OPTION_FLAG_NOALIAS,
G_OPTION_ARG_NONE,
&zenity_general_dialog_ellipsize,
N_("Enable ellipsize in dialog text. This fix the high window size with big texts")
},
{ {
NULL NULL
} }
@ -809,6 +826,14 @@ static GOptionEntry question_options[] = {
N_("Give cancel button focus by default"), N_("Give cancel button focus by default"),
NULL NULL
}, },
{
"ellipsize",
'\0',
G_OPTION_FLAG_NOALIAS,
G_OPTION_ARG_NONE,
&zenity_general_dialog_ellipsize,
N_("Enable ellipsize in dialog text. This fix the high window size with big texts")
},
{ {
NULL NULL
} }
@ -939,6 +964,14 @@ static GOptionEntry warning_options[] = {
&zenity_general_dialog_no_markup, &zenity_general_dialog_no_markup,
N_("Do not enable pango markup") N_("Do not enable pango markup")
}, },
{
"ellipsize",
'\0',
G_OPTION_FLAG_NOALIAS,
G_OPTION_ARG_NONE,
&zenity_general_dialog_ellipsize,
N_("Enable ellipsize in dialog text. This fix the high window size with big texts")
},
{ {
NULL NULL
} }
@ -1646,6 +1679,7 @@ zenity_general_post_callback (GOptionContext *context,
results->data->cancel_label = zenity_general_cancel_button; results->data->cancel_label = zenity_general_cancel_button;
results->data->modal = zenity_general_modal; results->data->modal = zenity_general_modal;
results->data->attach = zenity_general_attach; results->data->attach = zenity_general_attach;
return TRUE; return TRUE;
} }
@ -1741,6 +1775,7 @@ zenity_error_post_callback (GOptionContext *context,
results->msg_data->mode = ZENITY_MSG_ERROR; results->msg_data->mode = ZENITY_MSG_ERROR;
results->msg_data->no_wrap = zenity_general_dialog_no_wrap; results->msg_data->no_wrap = zenity_general_dialog_no_wrap;
results->msg_data->no_markup = zenity_general_dialog_no_markup; results->msg_data->no_markup = zenity_general_dialog_no_markup;
results->msg_data->ellipsize = zenity_general_dialog_ellipsize;
} }
return TRUE; return TRUE;
@ -1760,6 +1795,7 @@ zenity_info_post_callback (GOptionContext *context,
results->msg_data->mode = ZENITY_MSG_INFO; results->msg_data->mode = ZENITY_MSG_INFO;
results->msg_data->no_wrap = zenity_general_dialog_no_wrap; results->msg_data->no_wrap = zenity_general_dialog_no_wrap;
results->msg_data->no_markup = zenity_general_dialog_no_markup; results->msg_data->no_markup = zenity_general_dialog_no_markup;
results->msg_data->ellipsize = zenity_general_dialog_ellipsize;
} }
return TRUE; return TRUE;
@ -1936,6 +1972,7 @@ zenity_question_post_callback (GOptionContext *context,
results->msg_data->mode = ZENITY_MSG_QUESTION; results->msg_data->mode = ZENITY_MSG_QUESTION;
results->msg_data->no_wrap = zenity_general_dialog_no_wrap; results->msg_data->no_wrap = zenity_general_dialog_no_wrap;
results->msg_data->no_markup = zenity_general_dialog_no_markup; results->msg_data->no_markup = zenity_general_dialog_no_markup;
results->msg_data->ellipsize = zenity_general_dialog_ellipsize;
results->msg_data->default_cancel = zenity_question_default_cancel; results->msg_data->default_cancel = zenity_question_default_cancel;
} }
@ -1983,6 +2020,7 @@ zenity_warning_post_callback (GOptionContext *context,
results->msg_data->mode = ZENITY_MSG_WARNING; results->msg_data->mode = ZENITY_MSG_WARNING;
results->msg_data->no_wrap = zenity_general_dialog_no_wrap; results->msg_data->no_wrap = zenity_general_dialog_no_wrap;
results->msg_data->no_markup = zenity_general_dialog_no_markup; results->msg_data->no_markup = zenity_general_dialog_no_markup;
results->msg_data->ellipsize = zenity_general_dialog_ellipsize;
} }
return TRUE; return TRUE;
@ -2405,10 +2443,13 @@ zenity_option_parse (gint argc, gchar **argv)
if(results->mode == MODE_FILE || results->mode == MODE_ERROR || results->mode == MODE_WARNING || results->mode == MODE_INFO) if(results->mode == MODE_FILE || results->mode == MODE_ERROR || results->mode == MODE_WARNING || results->mode == MODE_INFO)
zenity_option_error (zenity_option_get_name (general_options, &zenity_general_cancel_button), ERROR_SUPPORT); zenity_option_error (zenity_option_get_name (general_options, &zenity_general_cancel_button), ERROR_SUPPORT);
if (zenity_general_dialog_no_wrap) if (zenity_general_dialog_no_wrap)
if (results->mode != MODE_INFO && results->mode != MODE_ERROR && results->mode != MODE_QUESTION && results->mode != MODE_WARNING && results->mode != MODE_TEXTINFO) if (results->mode != MODE_INFO && results->mode != MODE_ERROR && results->mode != MODE_QUESTION && results->mode != MODE_WARNING && results->mode != MODE_TEXTINFO)
zenity_option_error (zenity_option_get_name (text_options, &zenity_general_dialog_no_wrap), ERROR_SUPPORT); zenity_option_error (zenity_option_get_name (text_options, &zenity_general_dialog_no_wrap), ERROR_SUPPORT);
if (zenity_general_dialog_ellipsize)
if (results->mode != MODE_INFO && results->mode != MODE_ERROR && results->mode != MODE_QUESTION && results->mode != MODE_WARNING)
zenity_option_error (zenity_option_get_name (text_options, &zenity_general_dialog_ellipsize), ERROR_SUPPORT);
return results; return results;
} }

View File

@ -67,6 +67,7 @@ typedef struct {
gboolean no_wrap; gboolean no_wrap;
gboolean no_markup; gboolean no_markup;
gboolean default_cancel; gboolean default_cancel;
gboolean ellipsize;
} ZenityMsgData; } ZenityMsgData;
typedef struct { typedef struct {