Commit 8e2d31db authored by Naba Kumar's avatar Naba Kumar

Fixed a crash bug. Activates plugin in correct way. Fixed crash in

	* libanjuta/anjuta-ui.c: Fixed a crash bug.
	* libanjuta/anjuta-plugin.c, libanjuta/plugins.c: Activates plugin
	in correct way.
	* plugins/file-manager/plugin.c: Fixed crash in unloading.
	* plugins/file-loader/plugin.c: Added comments.
	* plugins/build-basic-autotools/plugin.c: Added comments.
	* plugins/devhelp/plugin.c: Fixed crash bug. Added comments.

	* libanjuta/interfaces/libanjuta.idl,
	plugins/message-view/anjuta-msgman.c,
	plugins/message-view/message-view.c,
	plugins/message-view/message-view.h,
	plugins/message-view/plugin.c: Buffering and appending messages have
	been separated. message-view implementations cleaned up. Signals
	Emissions fixed. Messages now displayed in summary and details show
	as tooltip. Message color highlights fixed. Updated IAnjutaMessageView
	API.

	* plugins/message-view/anjuta-message-manager-plugin.glade: Organized
	preferences.

	* plugins/build-basic-autotools/Makefile.am,
	plugins/build-basic-autotools/build-basic-autotools.c: Added regex
	parsing of output to create message summaries. Uses new message view
	API.

	* plugins/editor/anjuta-document-manager.glade: Hidden unnecessary
	preferences to make dialog box smaller.

	* plugins/editor/search-replace.c: Fixed compile error with change
	in IAnjutaMessageView API.
parent a2d65242
2004-09-24 Naba Kumar <naba@gnome.org>
* libanjuta/anjuta-ui.c: Fixed a crash bug.
* libanjuta/anjuta-plugin.c, libanjuta/plugins.c: Activates plugin
in correct way.
* plugins/file-manager/plugin.c: Fixed crash in unloading.
* plugins/file-loader/plugin.c: Added comments.
* plugins/build-basic-autotools/plugin.c: Added comments.
* plugins/devhelp/plugin.c: Fixed crash bug. Added comments.
* libanjuta/interfaces/libanjuta.idl,
plugins/message-view/anjuta-msgman.c,
plugins/message-view/message-view.c,
plugins/message-view/message-view.h,
plugins/message-view/plugin.c: Buffering and appending messages have
been separated. message-view implementations cleaned up. Signals
Emissions fixed. Messages now displayed in summary and details show
as tooltip. Message color highlights fixed. Updated IAnjutaMessageView
API.
* plugins/message-view/anjuta-message-manager-plugin.glade: Organized
preferences.
* plugins/build-basic-autotools/Makefile.am,
plugins/build-basic-autotools/build-basic-autotools.c: Added regex
parsing of output to create message summaries. Uses new message view
API.
* plugins/editor/anjuta-document-manager.glade: Hidden unnecessary
preferences to make dialog box smaller.
* plugins/editor/search-replace.c: Fixed compile error with change
in IAnjutaMessageView API.
2004-09-21 Naba Kumar <naba@gnome.org>
* plugins/Makefile.am: Deletes old (installed) plugins before
......
......@@ -144,7 +144,8 @@ anjuta_plugin_set_property (GObject *object,
g_object_ref (plugin->shell);
if (ANJUTA_PLUGIN_GET_CLASS (object)->activate)
ANJUTA_PLUGIN_GET_CLASS (object)->activate (plugin);
// ANJUTA_PLUGIN_GET_CLASS (object)->activate (plugin);
anjuta_plugin_activate (ANJUTA_PLUGIN (object));
g_object_notify (object, "shell");
break;
......
......@@ -272,7 +272,7 @@ tree_store_row_deleted (GtkTreeModel *model, GtkTreePath *path, AnjutaUI *ui)
GtkAction *action;
GtkTreeIter iter;
gtk_tree_model_get_iter (model, &iter, path);
gtk_tree_model_get (model, &iter, COLUMN_DATA, &action);
gtk_tree_model_get (model, &iter, COLUMN_DATA, &action, -1);
if (action)
g_object_unref (action);
}
......
......@@ -382,15 +382,25 @@ interface IAnjutaDocumentManager
interface IAnjutaMessageView
{
enum Type
{
TYPE_NORMAL,
TYPE_INFO,
TYPE_WARNING,
TYPE_ERROR
}
// Signals
void ::message_clicked (const gchar *message);
void append (const gchar *message);
void ::buffer_flushed (const gchar *line);
/* Buffer methods */
void buffer_append (const gchar *text);
void append (Type type, const gchar *summary, const gchar *details);
void clear ();
void select_next ();
void select_previous ();
gint get_line ();
gchar* get_message ();
const gchar* get_current_message ();
GList* get_all_messages ();
}
......@@ -403,7 +413,7 @@ interface IAnjutaMessageManager
DOESNT_EXIST
}
void add_view (const gchar *name, const gchar *icon);
IAnjutaMessageView* add_view (const gchar *name, const gchar *icon);
void remove_view (IAnjutaMessageView *view);
IAnjutaMessageView* get_current_view ();
IAnjutaMessageView* get_view_by_name (const gchar *name);
......
......@@ -710,17 +710,17 @@ tool_set_update (AnjutaShell *shell, AvailableTool* selected_tool, gboolean load
AvailableTool *tool = l->data;
if (should_unload (installed_tools, selected_tool, tool)) {
/* FIXME: Unload the class and sharedlib if possible */
gboolean success = TRUE;
gboolean success;
AnjutaPlugin *anjuta_tool = ANJUTA_PLUGIN (tool_obj);
if (anjuta_plugin_deactivate (ANJUTA_PLUGIN (anjuta_tool))) {
anjuta_util_dialog_info (GTK_WINDOW (shell),
"Plugin '%s' do not want to be deactivated",
tool->name);
success = FALSE;
}
success = anjuta_plugin_deactivate (ANJUTA_PLUGIN (anjuta_tool));
if (success) {
g_object_unref (tool_obj);
g_hash_table_remove (installed_tools, tool);
} else {
anjuta_util_dialog_info (GTK_WINDOW (shell),
"Plugin '%s' do not want to be deactivated",
tool->name);
}
}
}
......
......@@ -25,6 +25,7 @@ anjuta_plugin_DATA = $(plugin_in_files:.plugin.in=.plugin)
INCLUDES = \
$(WARN_CFLAGS) \
$(DEPRECATED_FLAGS) \
$(PCRE_CFLAGS) \
$(LIBANJUTA_CFLAGS)
# Where to install the plugin
......@@ -39,6 +40,7 @@ libanjuta_build_basic_autotools_la_SOURCES = \
build-basic-autotools.h
# Plugin dependencies
libanjuta_build_basic_autotools_la_LIBADD = $(PCRE_LIBS)
EXTRA_DIST = \
$(plugin_in_files) \
......
......@@ -19,6 +19,9 @@
*/
#include <config.h>
#include <ctype.h>
#include <pcre.h>
#include <libgnomevfs/gnome-vfs-utils.h>
#include <libanjuta/anjuta-shell.h>
#include <libanjuta/anjuta-stock.h>
......@@ -33,22 +36,254 @@
gpointer parent_class;
typedef struct
{
gchar *pattern;
int options;
gchar *replace;
pcre *regex;
} BuildPattern;
/* Command processing */
typedef struct {
typedef struct
{
gchar *command;
IAnjutaMessageView *message_view;
AnjutaLauncher *launcher;
} BuildContext;
static BuildPattern patterns_list[] =
{
{"^\\s*gcc.*?\\-c\\s+([^\\s]+).*?\\-o\\s+(\\.libs/([^\\s]+?)\\.[^\\s]+).*$", 0, N_("Compiling \\1 --> \\3.lo [\\2]"), NULL},
{"^\\s*gcc.*?\\-o\\s+(\\.libs/([^\\s]+?)\\.[^\\s]+).*?\\-c\\s+([^\\s]+).*$", 0, N_("Compiling \\3 --> \\2.lo [\\1]"), NULL},
{"^\\s*gcc.*?\\-c\\s+([^\\s]+).*?\\-o\\s+([^\\s]+).*$", 0, N_("Compiling \\1 --> \\2"), NULL},
{"^\\s*gcc.*?\\-o\\s+([^\\s]+).*?\\-c\\s+([^\\s]+).*$", 0, N_("Compiling \\2 --> \\1"), NULL},
{"^\\s*gcc.*?\\-c\\s+([^\\s]+).*$", 0, "Compiling \\1", NULL},
{"^.*?libtool \\-\\-mode=compile", 0, N_("Invoking libtool for compilation"), NULL},
{"^\\s*gcc.*?\\s+\\-shared\\s+.*?\\-o\\s+([^\\s]+).*$", 0, N_("Building library \\1"), NULL},
{"^ar cru\\s+([^\\s]+).*$", 0, N_("Building library \\1"), NULL},
{"^\\s*gcc.*?\\-o\\s+([^\\s]+).*$", 0, N_("Building executable \\1"), NULL}
};
static void
build_regex_init ()
{
const char *error;
int erroffset;
int i;
if (patterns_list[0].regex)
return;
for (i = 0; i < G_N_ELEMENTS (patterns_list); i++)
{
patterns_list[i].regex =
pcre_compile(
patterns_list[i].pattern,
patterns_list[i].options,
&error, /* for error message */
&erroffset, /* for error offset */
NULL); /* use default character tables */
if (patterns_list[i].regex == NULL) {
g_warning ("PCRE compilarion failed: %s: %d", error, erroffset);
}
}
}
/* Regex processing */
static gchar*
build_get_summary (const gchar *details, BuildPattern* bp)
{
int rc;
int ovector[30];
const gchar *iter;
GString *ret;
gchar *final;
if (!bp || !bp->regex)
return NULL;
rc = pcre_exec(
bp->regex, /* result of pcre_compile() */
NULL, /* we didn’t study the pattern */
details, /* the subject string */
strlen (details),/* the length of the subject string */
0, /* start at offset 0 in the subject */
bp->options, /* default options */
ovector, /* vector for substring information */
30); /* number of elements in the vector */
if (rc < 0)
return NULL;
ret = g_string_new ("");
iter = bp->replace;
while (*iter != '\0')
{
if (*iter == '\\' && isdigit(*(iter + 1)))
{
char temp[2] = {0, 0};
temp[0] = *(iter + 1);
int idx = atoi (temp);
// g_message ("dodo: %d, %d, %d", idx, ovector[2*idx], ovector[2*idx+1]);
ret = g_string_append_len (ret, details + ovector[2*idx],
ovector[2*idx+1] - ovector[2*idx]);
iter += 2;
}
else
{
const gchar *start;
const gchar *end;
start = iter;
iter = g_utf8_next_char (iter);
end = iter;
ret = g_string_append_len (ret, start, end - start);
}
}
final = g_string_free (ret, FALSE);
if (strlen (final) <= 0) {
g_free (final);
final = NULL;
}
return final;
}
static void
on_build_mesg_arrived (AnjutaLauncher *launcher,
AnjutaLauncherOutputType output_type,
const gchar * mesg, gpointer user_data)
{
BuildContext *context = (BuildContext*)user_data;
ianjuta_message_view_append (context->message_view, mesg, NULL);
ianjuta_message_view_buffer_append (context->message_view, mesg, NULL);
}
static gboolean
parse_error_line (const gchar * line, gchar ** filename, int *lineno)
{
gint i = 0;
gint j = 0;
gint k = 0;
gchar *dummy;
while (line[i++] != ':')
{
if (i >= strlen (line) || i >= 512 || line[i - 1] == ' ')
{
goto down;
}
}
if (isdigit (line[i]))
{
j = i;
while (isdigit (line[i++])) ;
dummy = g_strndup (&line[j], i - j - 1);
*lineno = atoi (dummy);
if (dummy)
g_free (dummy);
dummy = g_strndup (line, j - 1);
*filename = g_strdup (g_strstrip (dummy));
if (dummy)
g_free (dummy);
return TRUE;
}
down:
i = strlen (line) - 1;
while (isspace (line[i]) == FALSE)
{
i--;
if (i < 0)
{
*filename = NULL;
*lineno = 0;
return FALSE;
}
}
k = i++;
while (line[i++] != ':')
{
if (i >= strlen (line) || i >= 512 || line[i - 1] == ' ')
{
*filename = NULL;
*lineno = 0;
return FALSE;
}
}
if (isdigit (line[i]))
{
j = i;
while (isdigit (line[i++])) ;
dummy = g_strndup (&line[j], i - j - 1);
*lineno = atoi (dummy);
if (dummy)
g_free (dummy);
dummy = g_strndup (&line[k], j - k - 1);
*filename = g_strdup (g_strstrip (dummy));
if (dummy)
g_free (dummy);
return TRUE;
}
*lineno = 0;
*filename = NULL;
return FALSE;
}
static void
on_build_mesg_format (IAnjutaMessageView *view, const gchar *line,
AnjutaPlugin *plugin)
{
gchar *dummy_fn, *summary;
gint dummy_int, re;
IAnjutaMessageViewType type;
g_return_if_fail (line != NULL);
type = IANJUTA_MESSAGE_VIEW_TYPE_NORMAL;
if (parse_error_line(line, &dummy_fn, &dummy_int))
{
if (strstr (line, _("warning:")) != NULL)
type = IANJUTA_MESSAGE_VIEW_TYPE_WARNING;
else
type = IANJUTA_MESSAGE_VIEW_TYPE_ERROR;
g_free(dummy_fn);
}
else if (strstr (line, ":") != NULL)
{
type = IANJUTA_MESSAGE_VIEW_TYPE_INFO;
}
for (re = 0; re < G_N_ELEMENTS (patterns_list); re++)
{
summary = build_get_summary (line, &patterns_list[re]);
if (summary)
break;
}
if (summary)
{
ianjuta_message_view_append (view, type, summary, line, NULL);
g_free (summary);
}
else
ianjuta_message_view_append (view, type, line, "", NULL);
}
static void
on_build_mesg_parse (IAnjutaMessageView *view, const gchar *line,
AnjutaPlugin *plugin)
{
gchar *filename;
gint lineno;
if (parse_error_line (line, &filename, &lineno))
{
/* Go to file and line number */
g_message ("Go to %s: %d", filename, lineno);
}
}
static void
......@@ -64,25 +299,15 @@ on_build_terminated (AnjutaLauncher *launcher,
buff1 = g_strdup_printf (_("Total time taken: %lu secs\n"), time_taken);
if (status)
{
ianjuta_message_view_append (context->message_view,
ianjuta_message_view_buffer_append (context->message_view,
_("Completed ... unsuccessful\n"), NULL);
/*
if (anjuta_preferences_get_int (ANJUTA_PREFERENCES (app->preferences),
DIALOG_ON_BUILD_COMPLETE))
anjuta_util_dialog_warning (NULL, _("Completed ... unsuccessful"));
*/
}
else
{
ianjuta_message_view_append (context->message_view,
ianjuta_message_view_buffer_append (context->message_view,
_("Completed ... successful\n"), NULL);
/*
if (anjuta_preferences_get_int (ANJUTA_PREFERENCES (app->preferences),
DIALOG_ON_BUILD_COMPLETE))
anjuta_status (_("Completed ... successful"));
*/
}
ianjuta_message_view_append (context->message_view, buff1, NULL);
ianjuta_message_view_buffer_append (context->message_view, buff1, NULL);
/*
if (anjuta_preferences_get_int (ANJUTA_PREFERENCES (app->preferences),
BEEP_ON_BUILD_COMPLETE))
......@@ -109,21 +334,27 @@ build_execute_command (BasicAutotoolsPlugin* plugin, const gchar *dir,
g_return_if_fail (command != NULL);
build_regex_init();
context = g_new0 (BuildContext, 1);
mesg_manager = anjuta_shell_get_interface (ANJUTA_PLUGIN (plugin)->shell,
IAnjutaMessageManager, NULL);
snprintf (mname, 128, _("Build %d"), ++message_pane_count);
ianjuta_message_manager_add_view (mesg_manager, mname,
ANJUTA_PIXMAP_MINI_BUILD, NULL);
context->message_view =
ianjuta_message_manager_get_view_by_name (mesg_manager, mname, NULL);
ianjuta_message_manager_add_view (mesg_manager, mname,
ANJUTA_PIXMAP_MINI_BUILD, NULL);
g_signal_connect (G_OBJECT (context->message_view), "buffer_flushed",
G_CALLBACK (on_build_mesg_format), plugin);
g_signal_connect (G_OBJECT (context->message_view), "message_clicked",
G_CALLBACK (on_build_mesg_parse), plugin);
context->launcher = anjuta_launcher_new ();
g_signal_connect (G_OBJECT (context->launcher), "child-exited",
G_CALLBACK (on_build_terminated), context);
ianjuta_message_view_append (context->message_view, command, NULL);
ianjuta_message_view_buffer_append (context->message_view, command, NULL);
ianjuta_message_view_buffer_append (context->message_view, "\n", NULL);
chdir (dir);
anjuta_launcher_execute (context->launcher, command,
on_build_mesg_arrived, context);
......@@ -197,7 +428,7 @@ fm_build (GtkAction *action, BasicAutotoolsPlugin *plugin)
dir = g_strdup (plugin->fm_current_filename);
else
dir = g_path_get_dirname (plugin->fm_current_filename);
build_execute_command (plugin, dir, "make");
build_execute_command (plugin, dir, "make -s");
}
static void
......@@ -470,7 +701,7 @@ activate_plugin (AnjutaPlugin *plugin)
ui = anjuta_shell_get_ui (plugin->shell, NULL);
/* register actions */
/* Add action group */
ba_plugin->build_action_group =
anjuta_ui_add_action_group_entries (ui,
"ActionGroupBuild",
......@@ -478,9 +709,10 @@ activate_plugin (AnjutaPlugin *plugin)
build_actions,
sizeof(build_actions)/sizeof(GtkActionEntry),
plugin);
/* Add UI */
ba_plugin->build_merge_id = anjuta_ui_merge (ui, UI_FILE);
/* Register value watches */
/* Add watches */
ba_plugin->fm_watch_id =
anjuta_plugin_add_watch (plugin, "file_manager_current_uri",
value_added_fm_current_uri,
......@@ -500,9 +732,15 @@ deactivate_plugin (AnjutaPlugin *plugin)
ui = anjuta_shell_get_ui (plugin->shell, NULL);
BasicAutotoolsPlugin *ba_plugin = (BasicAutotoolsPlugin*)plugin;
/* Remove watches */
anjuta_plugin_remove_watch (plugin, ba_plugin->fm_watch_id, TRUE);
anjuta_plugin_remove_watch (plugin, ba_plugin->project_watch_id, TRUE);
/* Remove UI */
anjuta_ui_unmerge (ui, ba_plugin->build_merge_id);
/* Remove action group */
anjuta_ui_remove_action_group (ui, ba_plugin->build_action_group);
return TRUE;
}
......
......@@ -205,15 +205,17 @@ activate_plugin (AnjutaPlugin *plugin)
ui = anjuta_shell_get_ui (plugin->shell, NULL);
priv = devhelp_plugin->priv;
/* Add all our editor actions */
/* Add action group */
priv->action_group =
anjuta_ui_add_action_group_entries (ui, "ActionGroupDevhelp",
_("Devhelp navigation operations"),
actions,
G_N_ELEMENTS (actions),
devhelp_plugin);
/* Adde UI */
devhelp_plugin->uiid = anjuta_ui_merge (ui, UI_FILE);
/* Add widgets */
anjuta_shell_add_widget (plugin->shell, priv->notebook,
"AnjutaDevhelpIndex", _("Help"), GTK_STOCK_HELP,
ANJUTA_SHELL_PLACEMENT_LEFT, NULL);
......@@ -229,9 +231,17 @@ deactivate_plugin (AnjutaPlugin *plugin)
{
AnjutaUI *ui = anjuta_shell_get_ui (plugin->shell, NULL);
g_message ("DevhelpPlugin: Dectivating Devhelp plugin ...");
/* Remove widgets */
anjuta_shell_remove_widget (plugin->shell, ((DevhelpPlugin*)plugin)->priv->browser_frame, NULL);
anjuta_shell_remove_widget (plugin->shell, ((DevhelpPlugin*)plugin)->priv->notebook, NULL);
/* Remove UI */
anjuta_ui_unmerge (ui, ((DevhelpPlugin*)plugin)->uiid);
/* Remove action group */
anjuta_ui_remove_action_group (ui, ((DevhelpPlugin*)plugin)->priv->action_group);
return TRUE;
}
......
......@@ -356,7 +356,8 @@ search_and_replace (void)
snprintf(buf, BUFSIZ, "%s:%ld:%s\n", fb->path
, mi->line + 1, match_line);
g_free(match_line);
ianjuta_message_view_append(view, buf, NULL);
ianjuta_message_view_append(view, IANJUTA_MESSAGE_VIEW_TYPE_NORMAL,
buf, "", NULL);
break;
case SA_REPLACE:
......
......@@ -554,12 +554,15 @@ activate_plugin (AnjutaPlugin *plugin)
g_message ("AnjutaFileLoaderPlugin: Activating File Loader plugin ...");
ui = anjuta_shell_get_ui (plugin->shell, NULL);
/* Add action group */
loader_plugin->action_group =
anjuta_ui_add_action_group_entries (ui, "ActionGroupLoader",
_("File Loader"),
actions_file,
G_N_ELEMENTS (actions_file),
plugin);
/* Add UI */
loader_plugin->uiid = anjuta_ui_merge (ui, UI_FILE);
/* create Recent files menu */
......@@ -582,6 +585,8 @@ activate_plugin (AnjutaPlugin *plugin)
}
else
g_warning ("Cannot retrive recent files submenu widget");
/* Add watches */
loader_plugin->fm_watch_id =
anjuta_plugin_add_watch (plugin, "file_manager_current_uri",
value_added_fm_current_uri,
......@@ -599,8 +604,11 @@ deactivate_plugin (AnjutaPlugin *plugin)
g_message ("AnjutaFileLoaderPlugin: Deactivating File Loader plugin ...");
ui = anjuta_shell_get_ui (plugin->shell, NULL);
/* Remove watches */
anjuta_plugin_remove_watch (plugin, loader_plugin->fm_watch_id, TRUE);
/* Remove UI */
anjuta_ui_unmerge (ui, loader_plugin->uiid);
/* Remove action group */
anjuta_ui_remove_action_group (ui, loader_plugin->action_group);
return TRUE;
}
......
......@@ -99,22 +99,22 @@ activate_plugin (AnjutaPlugin *plugin)
fm_plugin->prefs = anjuta_shell_get_preferences (plugin->shell, NULL);
fv_init (fm_plugin);
/* Action groups */
/* Add action group */
fm_plugin->action_group =
anjuta_ui_add_action_group_entries (fm_plugin->ui,
"ActionGroupFileManager",
_("File manager popup actions"),
popup_actions, 1, plugin);
/* Merge UI */
/* Add UI */
fm_plugin->merge_id =
anjuta_ui_merge (fm_plugin->ui, UI_FILE);
/* Added widget in shell */
/* Added widgets */
anjuta_shell_add_widget (plugin->shell, fm_plugin->scrolledwindow,
"AnjutaFileManager", _("Files"), GTK_STOCK_OPEN,
ANJUTA_SHELL_PLACEMENT_LEFT, NULL);
/* Add preferences page */
/* Add preferences */
gxml = glade_xml_new (PREFS_GLADE, "dialog.file.filter", NULL);
anjuta_preferences_add_page (fm_plugin->prefs,
......@@ -141,9 +141,21 @@ deactivate_plugin (AnjutaPlugin *plugin)
g_signal_handlers_disconnect_by_func (G_OBJECT (fm_plugin->prefs),
G_CALLBACK (preferences_changed),
fm_plugin);
/* Remove watches */
anjuta_plugin_remove_watch (plugin, fm_plugin->root_watch_id, FALSE);
/* Remove preferences */
/* FIXME: */
/* Remove widgets */
anjuta_shell_remove_widget (plugin->shell, fm_plugin->scrolledwindow, NULL);
/* Remove UI */
anjuta_ui_unmerge (fm_plugin->ui, fm_plugin->merge_id);
/* Remove action group */
anjuta_ui_remove_action_group (fm_plugin->ui, fm_plugin->action_group);
anjuta_plugin_remove_watch (plugin, fm_plugin->root_watch_id, FALSE);
fm_plugin->root_watch_id = 0;
fv_finalize(fm_plugin);
return TRUE;
......
......@@ -11,6 +11,11 @@
<property name="modal">False</property>
<property name="resizable">True</property>
<property name="destroy_with_parent">False</property>
<property name="decorated">True</property>
<property name="skip_taskbar_hint">False</property>
<property name="skip_pager_hint">False</property>
<property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
<property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
<child>
<widget class="GtkVBox" id="Messages">
......@@ -28,7 +33,7 @@
<child>
<widget class="GtkTable" id="table18">
<property name="border_width">9</property>
<property name="border_width">10</property>
<property name="visible">True</property>
<property name="n_rows">4</property>
<property name="n_columns">2</property>
......@@ -38,11 +43,11 @@
<child>
<widget class="GtkCheckButton" id="preferences_toggle:bool:0:0:truncat.messages">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="label" translatable="yes">Truncate long messages</property>
<property name="use_underline">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="focus_on_click">True</property>
<property name="active">False</property>
<property name="inconsistent">False</property>
<property name="draw_indicator">True</property>
......@@ -59,7 +64,6 @@
<child>
<widget class="GtkLabel" id="label136">
<property name="visible">True</property>
<property name="label" translatable="yes">Number of first characters to show:</property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
......@@ -83,7 +87,6 @@
<child>
<widget class="GtkLabel" id="label137">
<property name="visible">True</property>
<property name="label" translatable="yes">Number of last characters to show:</property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
......@@ -107,7 +110,6 @@
<child>
<widget class="GtkSpinButton" id="preferences_spin:int:50:0:truncat.mesg.last">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="climb_rate">1</property>
<property name="digits">0</property>
......@@ -129,7 +131,6 @@
<child>
<widget class="GtkSpinButton" id="preferences_spin:int:50:0:truncat.mesg.first">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="climb_rate">1</property>
<property name="digits">0</property>