* configure.ac:

* COPYING
	* gnoemoe/gm-app.c:
	* gnoemoe/dialogs/gm-preferences-dialog.c:
	* gnoemoe/gm-ui.h:
	* gnoemoe/widgets/gm-app-view.c:
	* gnoemoe/widgets/gm-editor-view.c:
	* gnoemoe/widgets/gm-commands.c:
	* gnoemoe/Makefile.am:
	* ui/gm-preferences.glade:
	* ui/gm-ui.xml:
	
	Made the code parser compile time optional
	
	* README: fixed indentation
	* po/Makefile.in.in: new and improved
This commit is contained in:
Jesse van den Kieboom 2006-08-12 15:24:31 +00:00
parent d2e3ffb9b2
commit a6548af4c9
14 changed files with 207 additions and 105 deletions

View File

@ -340,7 +340,8 @@ library. If this is what you want to do, use the GNU Library General
Public License instead of this License. Public License instead of this License.
These files are subject to the licence below: These files are subject to the licence below (only when configured without
--disable-parser):
gnoemoe/parser/ gnoemoe/parser/
ast.c, ast.h, functions.c, functions.h, ast.c, ast.h, functions.c, functions.h,
keywords.gperf, keywords.h, list.c, list.h, keywords.gperf, keywords.h, list.c, list.h,

View File

@ -1,3 +1,21 @@
2006-12-08 Jesse van den Kieboom <jesse@icecrew.nl>
* configure.ac:
* COPYING
* gnoemoe/gm-app.c:
* gnoemoe/dialogs/gm-preferences-dialog.c:
* gnoemoe/gm-ui.h:
* gnoemoe/widgets/gm-app-view.c:
* gnoemoe/widgets/gm-editor-view.c:
* gnoemoe/widgets/gm-commands.c:
* gnoemoe/Makefile.am:
* ui/gm-preferences.glade:
* ui/gm-ui.xml:
Made the code parser compile time optional
* README: fixed indentation
* po/Makefile.in.in: new and improved
2006-12-08 Jesse van den Kieboom <jesse@icecrew.nl> 2006-12-08 Jesse van den Kieboom <jesse@icecrew.nl>
* gnoemoe/gm-options.h: return false when loading fails * gnoemoe/gm-options.h: return false when loading fails

4
README
View File

@ -60,8 +60,8 @@ Simple install procedure:
% gzip -cd gnoemoe-2.0.10.tar.gz | tar xvf - # unpack the sources % gzip -cd gnoemoe-2.0.10.tar.gz | tar xvf - # unpack the sources
% cd gnoemoe-2.0.10 # change to the toplevel directory % cd gnoemoe-2.0.10 # change to the toplevel directory
% ./configure # run the `configure' script % ./configure # run the `configure' script
% make # build gedit % make # build gnoemoe
[ Become root if necessary ] [ Become root if necessary ]
% make install # install gedit % make install # install gnoemoe
See the file 'INSTALL' for more detailed information. See the file 'INSTALL' for more detailed information.

View File

@ -51,11 +51,23 @@ PKG_CHECK_MODULES(PACKAGE, [
AC_SUBST(PACKAGE_CFLAGS) AC_SUBST(PACKAGE_CFLAGS)
AC_SUBST(PACKAGE_LIBS) AC_SUBST(PACKAGE_LIBS)
dnl Check for perfect hash function generator
AC_CHECK_PROG([GPERF],[gperf],[gperf])
AC_PATH_PROG(GLIB_GENMARSHAL, glib-genmarshal) AC_PATH_PROG(GLIB_GENMARSHAL, glib-genmarshal)
AC_ARG_ENABLE(parser, [ --disable-parser disable use of the moo code parser in the editor],
parseren=$enableval, parseren=yes)
if test "_$parseren" = "_yes"; then
AC_DEFINE([HAVE_PARSER], 1, [MOO code parser is enabled])
AM_CONDITIONAL(HAS_PARSER, true)
parsermsg="enjoy parsing"
dnl Check for perfect hash function generator
AC_CHECK_PROG([GPERF],[gperf],[gperf])
else
AM_CONDITIONAL(HAS_PARSER, false)
parsermsg="(user disabled)"
fi
AC_ARG_ENABLE(ruby, [ --disable-ruby disable use of the ruby scripting support], AC_ARG_ENABLE(ruby, [ --disable-ruby disable use of the ruby scripting support],
rubyen=$enableval, rubyen=yes) rubyen=$enableval, rubyen=yes)
@ -216,6 +228,7 @@ data/Makefile
echo echo
echo Building with ruby ............. : $rubyen $rubymsg echo Building with ruby ............. : $rubyen $rubymsg
echo Building with parser ........... : $parseren $parsermsg
echo Building with libnotify ........ : $have_libnotify $libnotify_version echo Building with libnotify ........ : $have_libnotify $libnotify_version
echo Install prefix ................. : $prefix echo Install prefix ................. : $prefix
echo Install share .................. : $datadir echo Install share .................. : $datadir

View File

@ -1,6 +1,9 @@
## Process this file with automake to produce Makefile.in ## Process this file with automake to produce Makefile.in
# SUBDIRS = test
SUBDIRS = parser if HAS_PARSER
SUBDIRS = parser
endif
CLEANFILES = CLEANFILES =
INCLUDES = \ INCLUDES = \
-I$(srcdir) \ -I$(srcdir) \
@ -35,14 +38,17 @@ gnoemoe_SOURCES += $(BUILT_SOURCES) \
gm-debug.c gm-debug.h \ gm-debug.c gm-debug.h \
list.c list.h list.c list.h
EXTRA_DIST = gm-marshal.list \ EXTRA_DIST = gm-marshal.list \
widgets/Makefile.include \ widgets/Makefile.include \
dialogs/Makefile.include \ dialogs/Makefile.include \
mcp/Makefile.include \ mcp/Makefile.include \
mcp/Makefile.classes mcp/Makefile.classes
gnoemoe_LDADD = @PACKAGE_LIBS@ $(INTLLIBS) @RUBY_LIBS@ @NOTIFY_LIBS@ parser/libparser.la gnoemoe_LDADD = @PACKAGE_LIBS@ $(INTLLIBS) @RUBY_LIBS@ @NOTIFY_LIBS@
if HAS_PARSER
gnoemoe_LDADD += parser/libparser.la
endif
if HAS_RUBY if HAS_RUBY
gnoemoe_SOURCES += gm-scripts.c gm-scripts.h gnoemoe_SOURCES += gm-scripts.c gm-scripts.h

View File

@ -39,9 +39,12 @@ void on_gm_preferences_dialog_check_button_alt_editor_clicked(
GtkButton *button, gpointer user_data); GtkButton *button, gpointer user_data);
void on_gm_preferences_dialog_check_button_needs_terminal_clicked( void on_gm_preferences_dialog_check_button_needs_terminal_clicked(
GtkButton *button, gpointer user_data); GtkButton *button, gpointer user_data);
#ifdef HAVE_PARSER
void on_gm_preferences_dialog_check_button_auto_syntax_clicked( void on_gm_preferences_dialog_check_button_auto_syntax_clicked(
GtkButton *button, gpointer user_data); GtkButton *button, gpointer user_data);
#endif
gboolean on_gm_preferences_dialog_entry_alt_editor_focus_out(GtkEntry *entry, gboolean on_gm_preferences_dialog_entry_alt_editor_focus_out(GtkEntry *entry,
GdkEventFocus *event, gpointer user_data); GdkEventFocus *event, gpointer user_data);
@ -328,10 +331,14 @@ gm_preferences_dialog_run() {
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON( gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(
gm_preferences_dialog_widget("check_button_needs_terminal")), gm_preferences_dialog_widget("check_button_needs_terminal")),
gm_options_get_int(options, "editor_needs_terminal")); gm_options_get_int(options, "editor_needs_terminal"));
#ifdef HAVE_PARSER
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON( gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(
gm_preferences_dialog_widget("check_button_auto_syntax")), gm_preferences_dialog_widget("check_button_auto_syntax")),
gm_options_get_int(options, "auto_check_syntax")); gm_options_get_int(options, "auto_check_syntax"));
gtk_widget_show(gm_preferences_dialog_widget("frame_internal_editor"));
#endif
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON( gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(
gm_preferences_dialog_widget("check_button_show_object_number")), gm_preferences_dialog_widget("check_button_show_object_number")),
gm_options_get_int(options, "userlist_show_object_number")); gm_options_get_int(options, "userlist_show_object_number"));
@ -371,9 +378,12 @@ gm_preferences_dialog_run() {
glade_xml_signal_connect(preferences->xml, glade_xml_signal_connect(preferences->xml,
"on_check_button_needs_terminal_clicked", G_CALLBACK( "on_check_button_needs_terminal_clicked", G_CALLBACK(
on_gm_preferences_dialog_check_button_needs_terminal_clicked)); on_gm_preferences_dialog_check_button_needs_terminal_clicked));
#ifdef HAVE_PARSER
glade_xml_signal_connect(preferences->xml, glade_xml_signal_connect(preferences->xml,
"on_check_button_auto_syntax_clicked", G_CALLBACK( "on_check_button_auto_syntax_clicked", G_CALLBACK(
on_gm_preferences_dialog_check_button_auto_syntax_clicked)); on_gm_preferences_dialog_check_button_auto_syntax_clicked));
#endif
glade_xml_signal_connect(preferences->xml, glade_xml_signal_connect(preferences->xml,
"on_combo_box_scheme_changed", G_CALLBACK( "on_combo_box_scheme_changed", G_CALLBACK(
@ -499,6 +509,7 @@ on_gm_preferences_dialog_check_button_needs_terminal_clicked(
"editor_needs_terminal", active); "editor_needs_terminal", active);
} }
#ifdef HAVE_PARSER
void void
on_gm_preferences_dialog_check_button_auto_syntax_clicked( on_gm_preferences_dialog_check_button_auto_syntax_clicked(
GtkButton *button, gpointer user_data) { GtkButton *button, gpointer user_data) {
@ -507,7 +518,7 @@ on_gm_preferences_dialog_check_button_auto_syntax_clicked(
gm_options_set_int(gm_app_options(gm_app_instance()), gm_options_set_int(gm_app_options(gm_app_instance()),
"auto_check_syntax", active); "auto_check_syntax", active);
} }
#endif
gboolean gboolean
on_gm_preferences_dialog_entry_alt_editor_focus_out(GtkEntry *entry, on_gm_preferences_dialog_entry_alt_editor_focus_out(GtkEntry *entry,

View File

@ -42,7 +42,10 @@ struct poptOption poptions[] = {
#define GM_APP_GET_PRIVATE(object)(G_TYPE_INSTANCE_GET_PRIVATE((object), \ #define GM_APP_GET_PRIVATE(object)(G_TYPE_INSTANCE_GET_PRIVATE((object), \
GM_TYPE_APP, GmAppPrivate)) GM_TYPE_APP, GmAppPrivate))
void gm_app_destroy_worlds(GmApp *app);
static void gm_app_destroy_worlds(GmApp *app);
static void on_signal_term(int signum);
static void on_signal_hup(int signum);
struct _GmAppPrivate { struct _GmAppPrivate {
gchar *path; gchar *path;
@ -200,7 +203,7 @@ gm_app_init(GmApp *app) {
} }
/* Private functions */ /* Private functions */
void static void
gm_app_destroy_worlds(GmApp *app) { gm_app_destroy_worlds(GmApp *app) {
GList *item; GList *item;
@ -262,14 +265,18 @@ on_gm_app_save_session(GnomeClient * client, gint phase,
return TRUE; return TRUE;
} }
void static void
gm_app_create_settings(GmApp *app) { gm_app_create_settings(GmApp *app) {
app->priv->options = gm_options_new(); app->priv->options = gm_options_new();
gm_options_set(app->priv->options, "editor_alternative", "0"); gm_options_set(app->priv->options, "editor_alternative", "0");
gm_options_set(app->priv->options, "editor_embed", "0"); gm_options_set(app->priv->options, "editor_embed", "0");
gm_options_set(app->priv->options, "editor_needs_terminal", "0"); gm_options_set(app->priv->options, "editor_needs_terminal", "0");
#ifdef HAVE_PARSER
gm_options_set(app->priv->options, "auto_check_syntax", "1"); gm_options_set(app->priv->options, "auto_check_syntax", "1");
#endif
gm_options_set(app->priv->options, "worlds_saved_state", ""); gm_options_set(app->priv->options, "worlds_saved_state", "");
gm_options_set(app->priv->options, "search_direction_world", "1"); gm_options_set(app->priv->options, "search_direction_world", "1");
gm_options_set(app->priv->options, "search_direction", "0"); gm_options_set(app->priv->options, "search_direction", "0");
@ -301,7 +308,7 @@ gm_app_create_settings(GmApp *app) {
gm_options_set(app->priv->options, "userlist_use_state_icon", "1"); gm_options_set(app->priv->options, "userlist_use_state_icon", "1");
} }
void static void
gm_app_load_worlds(GmApp *app, gboolean autoload) { gm_app_load_worlds(GmApp *app, gboolean autoload) {
GDir *handle = g_dir_open(app->priv->worlds_path, 0, NULL); GDir *handle = g_dir_open(app->priv->worlds_path, 0, NULL);
char *name, *path; char *name, *path;
@ -337,7 +344,7 @@ gm_app_load_worlds(GmApp *app, gboolean autoload) {
} }
} }
void static void
gm_app_convert_old_color_configuration(GmApp *app, gchar const *colors_path) { gm_app_convert_old_color_configuration(GmApp *app, gchar const *colors_path) {
guint i; guint i;
gchar const *color, *value; gchar const *color, *value;
@ -392,7 +399,7 @@ gm_app_convert_old_color_configuration(GmApp *app, gchar const *colors_path) {
g_object_unref(G_OBJECT(table)); g_object_unref(G_OBJECT(table));
} }
void static void
gm_app_initialize(GmApp *app) { gm_app_initialize(GmApp *app) {
gchar *colors_path; gchar *colors_path;
@ -433,7 +440,7 @@ gm_app_initialize(GmApp *app) {
g_free(colors_path); g_free(colors_path);
} }
void static void
gm_app_run(GmApp *app) { gm_app_run(GmApp *app) {
gchar **wrlds; gchar **wrlds;
const gchar *savedState; const gchar *savedState;
@ -527,9 +534,7 @@ gm_app_new(int argc, char *argv[]) {
g_object_unref(G_OBJECT(app)); g_object_unref(G_OBJECT(app));
printf(_("Current version of GnoeMoe is %s\n"), VERSION); printf(_("Current version of GnoeMoe is %s\n"), VERSION);
return NULL; return NULL;
} }
return app; return app;
} }
@ -623,6 +628,9 @@ main(int argc, char *argv[]) {
application = gm_app_new(argc, argv); application = gm_app_new(argc, argv);
if (application) { if (application) {
signal(SIGTERM, on_signal_term);
signal(SIGHUP, on_signal_hup);
gm_app_run(application); gm_app_run(application);
g_object_unref(application); g_object_unref(application);
} }
@ -630,3 +638,13 @@ main(int argc, char *argv[]) {
return 0; return 0;
} }
/* Signal handlers */
static void
on_signal_term(int signum) {
gtk_main_quit();
}
static void
on_signal_hup(int signum) {
gtk_main_quit();
}

View File

@ -53,9 +53,11 @@ static const GtkActionEntry gm_editor_entries[] =
{"EditorSaveClose", GM_STOCK_SAVE_CLOSE, N_("Save and close"), NULL, {"EditorSaveClose", GM_STOCK_SAVE_CLOSE, N_("Save and close"), NULL,
N_("Save editor contents and close editor"), N_("Save editor contents and close editor"),
G_CALLBACK(on_action_editor_save_close)}, G_CALLBACK(on_action_editor_save_close)},
#ifdef HAVE_PARSER
{"EditorParse", GTK_STOCK_EXECUTE, N_("Check code"), "<control><shift>P", {"EditorParse", GTK_STOCK_EXECUTE, N_("Check code"), "<control><shift>P",
N_("Check code for warnings and errors"), N_("Check code for warnings and errors"),
G_CALLBACK(on_action_editor_parse)}, G_CALLBACK(on_action_editor_parse)},
#endif
{"EditorClose", GTK_STOCK_CLOSE, N_("Close"), NULL, {"EditorClose", GTK_STOCK_CLOSE, N_("Close"), NULL,
N_("Close current editor"), N_("Close current editor"),
G_CALLBACK(on_action_editor_close)} G_CALLBACK(on_action_editor_close)}

View File

@ -316,7 +316,10 @@ gm_app_view_create_ui(GmAppView *view) {
GError *error = NULL; GError *error = NULL;
GtkActionGroup *action_group; GtkActionGroup *action_group;
GtkAction *action; GtkAction *action;
#ifdef HAVE_PARSER
guint merge_id;
#endif
view->priv->manager = gtk_ui_manager_new(); view->priv->manager = gtk_ui_manager_new();
gtk_window_add_accel_group(GTK_WINDOW(view), gtk_window_add_accel_group(GTK_WINDOW(view),
@ -384,6 +387,18 @@ gm_app_view_create_ui(GmAppView *view) {
"/MenuBar/EditMenu/EditScriptsMenu"), FALSE); "/MenuBar/EditMenu/EditScriptsMenu"), FALSE);
#endif #endif
#ifdef HAVE_PARSER
merge_id = gtk_ui_manager_new_merge_id(view->priv->manager);
gtk_ui_manager_add_ui(view->priv->manager, merge_id,
"/MenuBar/EditorMenu/EditorMenuAdditions", "EditorParseMenu",
"EditorParse", GTK_UI_MANAGER_MENUITEM, FALSE);
merge_id = gtk_ui_manager_new_merge_id(view->priv->manager);
gtk_ui_manager_add_ui(view->priv->manager, merge_id,
"/ToolBar/EditorToolAdditions", "EditorParseTool",
"EditorParse", GTK_UI_MANAGER_TOOLITEM, FALSE);
#endif
action = gm_app_view_action(view, "/MenuBar/WorldMenu/WorldOpenMenu"); action = gm_app_view_action(view, "/MenuBar/WorldMenu/WorldOpenMenu");
g_object_set(action, "short-label", _("Open"), NULL); g_object_set(action, "short-label", _("Open"), NULL);
} }
@ -1572,11 +1587,13 @@ on_gm_app_view_world_view_notebook_switch_page(GtkNotebook *notebook,
gtk_action_group_set_sensitive(view->priv->editor_action_group, gtk_action_group_set_sensitive(view->priv->editor_action_group,
GM_IS_EDITOR_VIEW(page)); GM_IS_EDITOR_VIEW(page));
#ifdef HAVE_PARSER
if (GM_IS_EDITOR_VIEW(page)) { if (GM_IS_EDITOR_VIEW(page)) {
gtk_action_set_sensitive(gm_app_view_action(view, gtk_action_set_sensitive(gm_app_view_action(view,
"/ToolBar/EditorParseTool"), gm_editor_is_code( "/ToolBar/EditorToolAdditions/EditorParseTool"), gm_editor_is_code(
gm_editor_view_editor(GM_EDITOR_VIEW(page)))); gm_editor_view_editor(GM_EDITOR_VIEW(page))));
} }
#endif
} }
void void

View File

@ -198,10 +198,12 @@ on_action_editor_save_close(GtkAction *action, GmAppView *view) {
gm_editor_close(gm_editor_view_editor(editor_view)); gm_editor_close(gm_editor_view_editor(editor_view));
} }
#ifdef HAVE_PARSER
void void
on_action_editor_parse(GtkAction *action, GmAppView *view) { on_action_editor_parse(GtkAction *action, GmAppView *view) {
gm_editor_view_check_syntax(gm_app_view_active_editor_view(view)); gm_editor_view_check_syntax(gm_app_view_active_editor_view(view));
} }
#endif
void void
on_action_editor_close(GtkAction *action, GmAppView *view) { on_action_editor_close(GtkAction *action, GmAppView *view) {

View File

@ -1,3 +1,7 @@
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <gtksourceview/gtksourceview.h> #include <gtksourceview/gtksourceview.h>
@ -13,10 +17,13 @@
#include "gm-options.h" #include "gm-options.h"
#include "gm-color-table.h" #include "gm-color-table.h"
#include "gm-app.h" #include "gm-app.h"
#include "parser/gm-parser.h"
#include "gm-source-style-scheme.h" #include "gm-source-style-scheme.h"
#include "gm-searchable.h" #include "gm-searchable.h"
#ifdef HAVE_PARSER
#include "parser/gm-parser.h"
#endif
#define GM_EDITOR_VIEW_GET_PRIVATE(object)( \ #define GM_EDITOR_VIEW_GET_PRIVATE(object)( \
G_TYPE_INSTANCE_GET_PRIVATE((object), \ G_TYPE_INSTANCE_GET_PRIVATE((object), \
GM_TYPE_EDITOR_VIEW, GmEditorViewPrivate)) GM_TYPE_EDITOR_VIEW, GmEditorViewPrivate))
@ -24,7 +31,8 @@
struct _GmEditorViewPrivate { struct _GmEditorViewPrivate {
GmWorld *world; GmWorld *world;
GmEditor *editor; GmEditor *editor;
#ifdef HAVE_PARSER
GtkExpander *expander; GtkExpander *expander;
GtkWidget *message_area; GtkWidget *message_area;
GtkWidget *error_area; GtkWidget *error_area;
@ -32,12 +40,14 @@ struct _GmEditorViewPrivate {
GtkWidget *warning_label; GtkWidget *warning_label;
GtkWidget *error_frame; GtkWidget *error_frame;
GtkWidget *warning_frame; GtkWidget *warning_frame;
gboolean set_style; gboolean set_style;
guint timeout_handler; guint timeout_handler;
guint hide_error_handler; guint hide_error_handler;
gboolean expanding; gboolean expanding;
gboolean was_expanded; gboolean was_expanded;
#endif
GtkSourceView *source_view; GtkSourceView *source_view;
}; };
@ -71,10 +81,13 @@ void on_gm_editor_view_font_changed(GmColorTable *color_table,
gchar const *desc, GmEditorView *view); gchar const *desc, GmEditorView *view);
void on_gm_editor_view_modified_changed(GtkTextBuffer *buffer, void on_gm_editor_view_modified_changed(GtkTextBuffer *buffer,
GmEditorView *view); GmEditorView *view);
#ifdef HAVE_PARSER
void on_gm_editor_view_changed(GtkTextBuffer *buffer, void on_gm_editor_view_changed(GtkTextBuffer *buffer,
GmEditorView *view); GmEditorView *view);
void on_gm_editor_view_expander(GObject *object, GParamSpec *param_spec, void on_gm_editor_view_expander(GObject *object, GParamSpec *param_spec,
GmEditorView *view); GmEditorView *view);
#endif
G_DEFINE_TYPE_EXTENDED(GmEditorView, gm_editor_view, GTK_TYPE_VBOX, 0, \ G_DEFINE_TYPE_EXTENDED(GmEditorView, gm_editor_view, GTK_TYPE_VBOX, 0, \
G_IMPLEMENT_INTERFACE(GM_TYPE_SEARCHABLE, \ G_IMPLEMENT_INTERFACE(GM_TYPE_SEARCHABLE, \
@ -96,14 +109,17 @@ gm_editor_view_searchable_get_text_view(GmSearchable *sea) {
static void static void
gm_editor_view_finalize(GObject *object) { gm_editor_view_finalize(GObject *object) {
#ifdef HAVE_PARSER
GmEditorView *obj = GM_EDITOR_VIEW(object); GmEditorView *obj = GM_EDITOR_VIEW(object);
if (obj->priv->timeout_handler) { if (obj->priv->timeout_handler) {
g_source_remove(obj->priv->timeout_handler); g_source_remove(obj->priv->timeout_handler);
} }
if (obj->priv->hide_error_handler) { if (obj->priv->hide_error_handler) {
g_source_remove(obj->priv->hide_error_handler); g_source_remove(obj->priv->hide_error_handler);
} }
#endif
G_OBJECT_CLASS(gm_editor_view_parent_class)->finalize(object); G_OBJECT_CLASS(gm_editor_view_parent_class)->finalize(object);
} }
@ -209,15 +225,19 @@ gm_editor_view_create_source_view(GmEditorView *view) {
if (gm_editor_is_code(view->priv->editor)) { if (gm_editor_is_code(view->priv->editor)) {
gtk_source_buffer_set_highlight(GTK_SOURCE_BUFFER(buffer), TRUE); gtk_source_buffer_set_highlight(GTK_SOURCE_BUFFER(buffer), TRUE);
#ifdef HAVE_PARSER
g_signal_connect(buffer, "changed", g_signal_connect(buffer, "changed",
G_CALLBACK(on_gm_editor_view_changed), view); G_CALLBACK(on_gm_editor_view_changed), view);
#endif
} else { } else {
gtk_source_buffer_set_highlight(GTK_SOURCE_BUFFER(buffer), FALSE); gtk_source_buffer_set_highlight(GTK_SOURCE_BUFFER(buffer), FALSE);
gtk_source_buffer_set_check_brackets(GTK_SOURCE_BUFFER(buffer), FALSE); gtk_source_buffer_set_check_brackets(GTK_SOURCE_BUFFER(buffer), FALSE);
} }
#ifdef HAVE_PARSER
gtk_text_buffer_create_tag(buffer, "gm_error", "underline", gtk_text_buffer_create_tag(buffer, "gm_error", "underline",
PANGO_UNDERLINE_ERROR, NULL); PANGO_UNDERLINE_ERROR, NULL);
#endif
g_signal_connect(buffer, "modified_changed", g_signal_connect(buffer, "modified_changed",
G_CALLBACK(on_gm_editor_view_modified_changed), view); G_CALLBACK(on_gm_editor_view_modified_changed), view);
@ -227,6 +247,7 @@ gm_editor_view_create_source_view(GmEditorView *view) {
return GTK_SOURCE_VIEW(source_view); return GTK_SOURCE_VIEW(source_view);
} }
#ifdef HAVE_PARSER
static gboolean static gboolean
gm_editor_view_paint_message_area(GtkWidget *widget, GdkEventExpose *event, gm_editor_view_paint_message_area(GtkWidget *widget, GdkEventExpose *event,
GmEditorView *view) { GmEditorView *view) {
@ -336,6 +357,7 @@ gm_editor_view_create_message_area(GmEditorView *view) {
gtk_box_pack_start(GTK_BOX(view->priv->error_area), gtk_box_pack_start(GTK_BOX(view->priv->error_area),
view->priv->warning_frame, TRUE, TRUE, 0); view->priv->warning_frame, TRUE, TRUE, 0);
} }
#endif
static void static void
gm_editor_view_init(GmEditorView *obj) { gm_editor_view_init(GmEditorView *obj) {
@ -344,8 +366,10 @@ gm_editor_view_init(GmEditorView *obj) {
gtk_box_set_spacing(GTK_BOX(obj), 0); gtk_box_set_spacing(GTK_BOX(obj), 0);
gtk_box_set_homogeneous(GTK_BOX(obj), FALSE); gtk_box_set_homogeneous(GTK_BOX(obj), FALSE);
#ifdef HAVE_PARSER
gm_editor_view_create_message_area(obj); gm_editor_view_create_message_area(obj);
gtk_box_pack_start(GTK_BOX(obj), obj->priv->message_area, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(obj), obj->priv->message_area, FALSE, FALSE, 0);
#endif
} }
GmEditorView * GmEditorView *
@ -397,6 +421,7 @@ gm_editor_view_save(GmEditorView *view) {
gm_editor_save(view->priv->editor); gm_editor_save(view->priv->editor);
} }
#ifdef HAVE_PARSER
gboolean gboolean
gm_editor_view_no_errors(GmEditorView *view) { gm_editor_view_no_errors(GmEditorView *view) {
gtk_widget_hide(view->priv->message_area); gtk_widget_hide(view->priv->message_area);
@ -574,6 +599,14 @@ gm_editor_view_parse(GmEditorView *view) {
return ret; return ret;
} }
static gboolean
idle_grab_focus(gpointer user_data) {
g_message("Grabbing focus");
gtk_widget_grab_focus(GTK_WIDGET(user_data));
return FALSE;
}
void void
gm_editor_view_check_syntax(GmEditorView *view) { gm_editor_view_check_syntax(GmEditorView *view) {
int ret = gm_editor_view_parse(view); int ret = gm_editor_view_parse(view);
@ -583,6 +616,8 @@ gm_editor_view_check_syntax(GmEditorView *view) {
gtk_widget_hide(view->priv->message_area); gtk_widget_hide(view->priv->message_area);
gm_info_dialog(_("No errors are found"), gm_info_dialog(_("No errors are found"),
GTK_WINDOW(gm_find_parent(GTK_WIDGET(view), GTK_TYPE_WINDOW))); GTK_WINDOW(gm_find_parent(GTK_WIDGET(view), GTK_TYPE_WINDOW)));
g_timeout_add(100, idle_grab_focus, view->priv->source_view);
} else { } else {
gtk_expander_set_expanded(view->priv->expander, TRUE); gtk_expander_set_expanded(view->priv->expander, TRUE);
gtk_widget_show(view->priv->message_area); gtk_widget_show(view->priv->message_area);
@ -590,6 +625,7 @@ gm_editor_view_check_syntax(GmEditorView *view) {
gtk_widget_queue_draw(view->priv->message_area); gtk_widget_queue_draw(view->priv->message_area);
} }
} }
#endif
/* Callbacks */ /* Callbacks */
@ -620,6 +656,7 @@ on_gm_editor_view_modified_changed(GtkTextBuffer *buffer,
gtk_text_buffer_get_modified(buffer)); gtk_text_buffer_get_modified(buffer));
} }
#ifdef HAVE_PARSER
gboolean gboolean
gm_editor_view_timeout(GmEditorView *view) { gm_editor_view_timeout(GmEditorView *view) {
gm_editor_view_parse(view); gm_editor_view_parse(view);
@ -660,3 +697,4 @@ on_gm_editor_view_expander(GObject *object, GParamSpec *param_spec,
gtk_widget_queue_draw(view->priv->message_area); gtk_widget_queue_draw(view->priv->message_area);
} }
#endif

View File

@ -22,7 +22,6 @@ PACKAGE = @PACKAGE@
VERSION = @VERSION@ VERSION = @VERSION@
SHELL = /bin/sh SHELL = /bin/sh
@SET_MAKE@
srcdir = @srcdir@ srcdir = @srcdir@
top_srcdir = @top_srcdir@ top_srcdir = @top_srcdir@
@ -34,9 +33,8 @@ exec_prefix = @exec_prefix@
datadir = @datadir@ datadir = @datadir@
datarootdir = @datarootdir@ datarootdir = @datarootdir@
libdir = @libdir@ libdir = @libdir@
localedir = $(libdir)/locale DATADIRNAME = @DATADIRNAME@
gnulocaledir = $(datadir)/locale itlocaledir = $(prefix)/$(DATADIRNAME)/locale
gettextsrcdir = $(datadir)/glib-2.0/gettext/po
subdir = po subdir = po
install_sh = @install_sh@ install_sh = @install_sh@
# Automake >= 1.8 provides @mkdir_p@. # Automake >= 1.8 provides @mkdir_p@.
@ -46,7 +44,6 @@ mkdir_p = $(install_sh) -d
INSTALL = @INSTALL@ INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@ INSTALL_DATA = @INSTALL_DATA@
CC = @CC@
GMSGFMT = @GMSGFMT@ GMSGFMT = @GMSGFMT@
MSGFMT = @MSGFMT@ MSGFMT = @MSGFMT@
XGETTEXT = @XGETTEXT@ XGETTEXT = @XGETTEXT@
@ -55,31 +52,22 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
MSGMERGE = INTLTOOL_EXTRACT=$(INTLTOOL_EXTRACT) srcdir=$(srcdir) $(INTLTOOL_UPDATE) --gettext-package $(GETTEXT_PACKAGE) --dist MSGMERGE = INTLTOOL_EXTRACT=$(INTLTOOL_EXTRACT) srcdir=$(srcdir) $(INTLTOOL_UPDATE) --gettext-package $(GETTEXT_PACKAGE) --dist
GENPOT = INTLTOOL_EXTRACT=$(INTLTOOL_EXTRACT) srcdir=$(srcdir) $(INTLTOOL_UPDATE) --gettext-package $(GETTEXT_PACKAGE) --pot GENPOT = INTLTOOL_EXTRACT=$(INTLTOOL_EXTRACT) srcdir=$(srcdir) $(INTLTOOL_UPDATE) --gettext-package $(GETTEXT_PACKAGE) --pot
DEFS = @DEFS@ ALL_LINGUAS = @ALL_LINGUAS@
CFLAGS = @CFLAGS@
CPPFLAGS = @CPPFLAGS@
INCLUDES = -I.. -I$(top_srcdir)/intl PO_LINGUAS=$(shell if test -r $(srcdir)/LINGUAS; then grep -v "^\#" $(srcdir)/LINGUAS; fi)
COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) POFILES=$(shell if test -n "$(PO_LINGUAS)"; then LINGUAS="$(PO_LINGUAS)"; else LINGUAS="$(ALL_LINGUAS)"; fi; for lang in $$LINGUAS; do printf "$$lang.po "; done)
SOURCES = DISTFILES = ChangeLog Makefile.in.in POTFILES.in $(POFILES)
POFILES = @POFILES@
GMOFILES = @GMOFILES@
DISTFILES = ChangeLog Makefile.in.in POTFILES.in \
$(POFILES) $(SOURCES)
EXTRA_DISTFILES = POTFILES.skip Makevars LINGUAS EXTRA_DISTFILES = POTFILES.skip Makevars LINGUAS
POTFILES = \ POTFILES = \
#This Gets Replace for some reason
CATALOGS = @CATALOGS@ CATALOGS=$(shell if test -n "$(PO_LINGUAS)"; then LINGUAS="$(PO_LINGUAS)"; else LINGUAS="$(ALL_LINGUAS)"; fi; for lang in $$LINGUAS; do printf "$$lang.gmo "; done)
CATOBJEXT = @CATOBJEXT@
.SUFFIXES: .SUFFIXES:
.SUFFIXES: .c .o .po .pox .gmo .mo .msg .cat .SUFFIXES: .po .pox .gmo .mo .msg .cat
.c.o:
$(COMPILE) $<
.po.pox: .po.pox:
$(MAKE) $(GETTEXT_PACKAGE).pot $(MAKE) $(GETTEXT_PACKAGE).pot
@ -105,76 +93,63 @@ all-no:
$(GETTEXT_PACKAGE).pot: $(POTFILES) $(GETTEXT_PACKAGE).pot: $(POTFILES)
$(GENPOT) $(GENPOT)
install: install-exec install-data install: install-data
install-exec:
install-data: install-data-@USE_NLS@ install-data: install-data-@USE_NLS@
install-data-no: all install-data-no: all
install-data-yes: all install-data-yes: all
$(mkdir_p) $(DESTDIR)$(datadir) $(mkdir_p) $(DESTDIR)$(itlocaledir)
@catalogs='$(CATALOGS)'; \ if test -n "$(PO_LINGUAS)"; then \
for cat in $$catalogs; do \ linguas="$(PO_LINGUAS)"; \
cat=`basename $$cat`; \ else \
case "$$cat" in \ linguas="$(ALL_LINGUAS)"; \
*.gmo) destdir=$(gnulocaledir);; \ fi; \
*) destdir=$(localedir);; \ for lang in $$linguas; do \
esac; \ dir=$(DESTDIR)$(itlocaledir)/$$lang/LC_MESSAGES; \
lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
dir=$(DESTDIR)$$destdir/$$lang/LC_MESSAGES; \
$(mkdir_p) $$dir; \ $(mkdir_p) $$dir; \
if test -r $$cat; then \ if test -r $$lang.gmo; then \
$(INSTALL_DATA) $$cat $$dir/$(GETTEXT_PACKAGE).mo; \ $(INSTALL_DATA) $$lang.gmo $$dir/$(GETTEXT_PACKAGE).mo; \
echo "installing $$cat as $$dir/$(GETTEXT_PACKAGE).mo"; \ echo "installing $$lang.gmo as $$dir/$(GETTEXT_PACKAGE).mo"; \
else \ else \
$(INSTALL_DATA) $(srcdir)/$$cat $$dir/$(GETTEXT_PACKAGE).mo; \ $(INSTALL_DATA) $(srcdir)/$$lang.gmo $$dir/$(GETTEXT_PACKAGE).mo; \
echo "installing $(srcdir)/$$cat as" \ echo "installing $(srcdir)/$$lang.gmo as" \
"$$dir/$(GETTEXT_PACKAGE).mo"; \ "$$dir/$(GETTEXT_PACKAGE).mo"; \
fi; \ fi; \
if test -r $$cat.m; then \ if test -r $$lang.gmo.m; then \
$(INSTALL_DATA) $$cat.m $$dir/$(GETTEXT_PACKAGE).mo.m; \ $(INSTALL_DATA) $$lang.gmo.m $$dir/$(GETTEXT_PACKAGE).mo.m; \
echo "installing $$cat.m as $$dir/$(GETTEXT_PACKAGE).mo.m"; \ echo "installing $$lang.gmo.m as $$dir/$(GETTEXT_PACKAGE).mo.m"; \
else \ else \
if test -r $(srcdir)/$$cat.m ; then \ if test -r $(srcdir)/$$lang.gmo.m ; then \
$(INSTALL_DATA) $(srcdir)/$$cat.m \ $(INSTALL_DATA) $(srcdir)/$$lang.gmo.m \
$$dir/$(GETTEXT_PACKAGE).mo.m; \ $$dir/$(GETTEXT_PACKAGE).mo.m; \
echo "installing $(srcdir)/$$cat as" \ echo "installing $(srcdir)/$$lang.gmo.m as" \
"$$dir/$(GETTEXT_PACKAGE).mo.m"; \ "$$dir/$(GETTEXT_PACKAGE).mo.m"; \
else \ else \
true; \ true; \
fi; \ fi; \
fi; \ fi; \
done done
if test "$(PACKAGE)" = "glib"; then \
$(mkdir_p) $(DESTDIR)$(gettextsrcdir); \ # Empty stubs to satisfy archaic automake needs
$(INSTALL_DATA) $(srcdir)/Makefile.in.in \ dvi info tags TAGS ID:
$(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \
else \
: ; \
fi
# Define this as empty until I found a useful application. # Define this as empty until I found a useful application.
installcheck: installcheck:
uninstall: uninstall:
catalogs='$(CATALOGS)'; \ if test -n "$(PO_LINGUAS)"; then \
for cat in $$catalogs; do \ linguas="$(PO_LINGUAS)"; \
cat=`basename $$cat`; \ else \
lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \ linguas="$(ALL_LINGUAS)"; \
rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE).mo; \ fi; \
rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE).mo.m; \ for lang in $$linguas; do \
rm -f $(DESTDIR)$(gnulocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE).mo; \ rm -f $(DESTDIR)$(itlocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE).mo; \
rm -f $(DESTDIR)$(gnulocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE).mo.m; \ rm -f $(DESTDIR)$(itlocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE).mo.m; \
done done
if test "$(PACKAGE)" = "glib"; then \
rm -f $(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \
fi
check: all $(GETTEXT_PACKAGE).pot check: all $(GETTEXT_PACKAGE).pot
dvi info tags TAGS ID:
mostlyclean: mostlyclean:
rm -f core core.* *.pox $(GETTEXT_PACKAGE).pot *.old.po cat-id-tbl.tmp rm -f *.pox $(GETTEXT_PACKAGE).pot *.old.po cat-id-tbl.tmp
rm -fr *.o
rm -f .intltool-merge-cache rm -f .intltool-merge-cache
clean: mostlyclean clean: mostlyclean
@ -188,7 +163,7 @@ maintainer-clean: distclean
@echo "it deletes files that may require special tools to rebuild." @echo "it deletes files that may require special tools to rebuild."
rm -f Makefile.in.in rm -f Makefile.in.in
distdir = ../$(GETTEXT_PACKAGE)-$(VERSION)/$(subdir) distdir = ../$(PACKAGE)-$(VERSION)/$(subdir)
dist distdir: $(DISTFILES) dist distdir: $(DISTFILES)
dists="$(DISTFILES)"; \ dists="$(DISTFILES)"; \
extra_dists="$(EXTRA_DISTFILES)"; \ extra_dists="$(EXTRA_DISTFILES)"; \
@ -204,10 +179,12 @@ dist distdir: $(DISTFILES)
update-po: Makefile update-po: Makefile
$(MAKE) $(GETTEXT_PACKAGE).pot $(MAKE) $(GETTEXT_PACKAGE).pot
tmpdir=`pwd`; \ tmpdir=`pwd`; \
catalogs='$(CATALOGS)'; \ if test -n "$(PO_LINGUAS)"; then \
for cat in $$catalogs; do \ linguas="$(PO_LINGUAS)"; \
cat=`basename $$cat`; \ else \
lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \ linguas="$(ALL_LINGUAS)"; \
fi; \
for lang in $$linguas; do \
echo "$$lang:"; \ echo "$$lang:"; \
result="`$(MSGMERGE) -o $$tmpdir/$$lang.new.po $$lang`"; \ result="`$(MSGMERGE) -o $$tmpdir/$$lang.new.po $$lang`"; \
if $$result; then \ if $$result; then \
@ -223,7 +200,7 @@ update-po: Makefile
fi; \ fi; \
fi; \ fi; \
else \ else \
echo "msgmerge for $$cat failed!"; \ echo "msgmerge for $$lang.gmo failed!"; \
rm -f $$tmpdir/$$lang.new.po; \ rm -f $$tmpdir/$$lang.new.po; \
fi; \ fi; \
done done

View File

@ -1258,8 +1258,7 @@
</child> </child>
<child> <child>
<widget class="GtkFrame" id="frame16"> <widget class="GtkFrame" id="frame_internal_editor">
<property name="visible">True</property>
<property name="label_xalign">0</property> <property name="label_xalign">0</property>
<property name="label_yalign">0.5</property> <property name="label_yalign">0.5</property>
<property name="shadow_type">GTK_SHADOW_NONE</property> <property name="shadow_type">GTK_SHADOW_NONE</property>

View File

@ -35,7 +35,7 @@
<menu name="EditorMenu" action="Editor"> <menu name="EditorMenu" action="Editor">
<menuitem name="EditorSaveMenu" action="EditorSave"/> <menuitem name="EditorSaveMenu" action="EditorSave"/>
<menuitem name="EditorSaveCloseMenu" action="EditorSaveClose"/> <menuitem name="EditorSaveCloseMenu" action="EditorSaveClose"/>
<menuitem name="EditorParseMenu" action="EditorParse"/> <placeholder name="EditorMenuAdditions"/>
<separator/> <separator/>
<menuitem name="EditorCloseMenu" action="EditorClose"/> <menuitem name="EditorCloseMenu" action="EditorClose"/>
</menu> </menu>
@ -50,7 +50,7 @@
<separator/> <separator/>
<toolitem name="EditorSaveTool" action="EditorSave"/> <toolitem name="EditorSaveTool" action="EditorSave"/>
<toolitem name="EditorSaveCloseTool" action="EditorSaveClose"/> <toolitem name="EditorSaveCloseTool" action="EditorSaveClose"/>
<toolitem name="EditorParseTool" action="EditorParse"/> <placeholder name="EditorToolAdditions"/>
<separator/> <separator/>
<placeholder name="ToolOps_2"/> <placeholder name="ToolOps_2"/>
<separator/> <separator/>