Start using GResource

This converts our existing ui files for the main programs to resources and adds
a template for xed-view-frame
This commit is contained in:
JosephMcc 2017-02-08 21:04:10 -08:00
parent 3cfd0f3d5f
commit e3e316ea8a
20 changed files with 626 additions and 685 deletions

View File

@ -182,6 +182,7 @@ GLIB_GSETTINGS
dnl ================================================================
dnl Misc
dnl ================================================================
AC_PATH_PROG(GLIB_COMPILE_RESOURCES, glib-compile-resources)
AC_PATH_PROG(GLIB_GENMARSHAL, glib-genmarshal)
AC_PATH_PROG(GLIB_MKENUMS, glib-mkenums)

1
debian/rules vendored
View File

@ -7,6 +7,7 @@ DHFLAGS=--parallel
override_dh_install:
rm -rfv debian/tmp/usr/lib/*/xed/plugins/*.la
rm -rfv debian/tmp/usr/lib/*/xed/*.la
dh_install --fail-missing
override_dh_auto_configure:

View File

@ -4,4 +4,3 @@ usr/share/glib-2.0
usr/share/help
usr/share/locale
usr/share/xed/icons
usr/share/xed/ui/

1
debian/xed.install vendored
View File

@ -3,6 +3,7 @@ usr/lib/*/xed/girepository-1.0/
usr/lib/xed/xed-bugreport.sh
usr/lib/*/xed/plugins/*.plugin
usr/lib/*/xed/plugins/*.so
usr/lib/*/xed/*.so
usr/share/applications/xed.desktop
usr/share/dbus-1/
usr/share/man/

View File

@ -2,7 +2,7 @@
bin_PROGRAMS = xed
noinst_LTLIBRARIES = libxed.la
pkglib_LTLIBRARIES = libxed.la
AM_CPPFLAGS = \
-I$(top_srcdir) \
@ -24,7 +24,7 @@ xed_LDADD = \
xed_LDFLAGS = -export-dynamic -no-undefined -export-symbols-regex "^[[^_]].*"
libxed_la_LDFLAGS = -export-dynamic -no-undefined -export-symbols-regex "^[[^_]].*"
libxed_la_LDFLAGS = -avoid-version -export-dynamic -no-undefined -export-symbols-regex "^[^_].*"
# XED_LIBS must be the last to ensure correct order on some platforms
libxed_la_LIBADD = $(XED_LIBS)
@ -87,10 +87,15 @@ headerdir = $(prefix)/include/xed
header_DATA = \
$(INST_H_FILES)
BUILT_SOURCES_PRIVATE = \
xed-resources.c
libxed_c_files = \
xed-app.c \
xed-app-activatable.c \
xed-view-activatable.c \
xed-window-activatable.c \
xed-resources.c \
xed-close-button.c \
xed-close-confirmation-dialog.c \
xed-commands-documents.c \
@ -127,10 +132,8 @@ libxed_c_files = \
xed-tab-label.c \
xed-utils.c \
xed-view.c \
xed-view-activatable.c \
xed-view-frame.c \
xed-window.c \
xed-window-activatable.c
xed-window.c
libxed_la_SOURCES = \
$(BUILT_SOURCES) \
@ -156,29 +159,28 @@ xed-marshal.c: xed-marshal.list $(GLIB_GENMARSHAL)
$(AM_V_GEN) echo "#include \"xed-marshal.h\"" > $@ && \
$(GLIB_GENMARSHAL) $< --body --prefix=xed_marshal >> $@
uidir = $(datadir)/xed/ui/
ui_DATA = \
xed-ui.xml \
xed-searchbar.ui \
xed-print-preferences.ui \
xed-encodings-dialog.ui \
xed-preferences-dialog.ui
xed-resources.c: resources/xed.gresource.xml $(shell $(GLIB_COMPILE_RESOURCES) --sourcedir=$(srcdir)/resources --generate-dependencies $(srcdir)/resources/xed.gresource.xml)
$(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir)/resources --generate-source $(srcdir)/resources/xed.gresource.xml
EXTRA_DIST = \
$(ui_DATA) \
xed-enum-types.h.template \
xed-enum-types.c.template \
xed-marshal.list \
xed.rc
xed.rc \
resources/xed.gresource.xml \
resources/ui/xed-ui.xml \
resources/ui/xed-encodings-dialog.ui \
resources/ui/xed-preferences-dialog.ui \
resources/ui/xed-print-preferences.ui \
resources/ui/xed-searchbar.ui \
resources/ui/xed-view-frame.ui
CLEANFILES = $(BUILT_SOURCES)
CLEANFILES = $(BUILT_SOURCES) $(BUILT_SOURCES_PRIVATE)
if HAVE_INTROSPECTION
-include $(INTROSPECTION_MAKEFILE)
INTROSPECTION_GIRS = Xed-1.0.gir
Xed-1.0.gir: xed
INTROSPECTION_SCANNER_ARGS = -I$(top_srcdir) --warn-all
Xed_1_0_gir_NAMESPACE = Xed
@ -199,6 +201,6 @@ CLEANFILES += \
endif
dist-hook:
cd $(distdir); rm -f $(BUILT_SOURCES)
cd $(distdir); rm -f $(BUILT_SOURCES) $(BUILT_SOURCES_PRIVATE)
-include $(top_srcdir)/git.mk

View File

@ -0,0 +1,56 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<!-- interface-requires gtk+ 3.8 -->
<template class="XedViewFrame" parent="GtkOverlay">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="has_focus">False</property>
<property name="is_focus">False</property>
<child>
<object class="GtkScrolledWindow" id="scrolledwindow">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="has_focus">False</property>
<property name="is_focus">False</property>
<property name="shadow_type">none</property>
<child>
<object class="XedView" id="view">
<property name="visible">True</property>
<property name="can_focus">True</property>
</object>
</child>
</object>
</child>
<child type="overlay">
<object class="GtkRevealer" id="revealer">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">end</property>
<property name="valign">start</property>
<child>
<object class="GtkFrame" id="frame">
<property name="visible">True</property>
<property name="can_focus">False</property>
<style>
<class name="xed-goto-line-box"/>
</style>
<child>
<object class="GtkBox" id="hbox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">horizontal</property>
<child>
<object class="GtkEntry" id="search_entry">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="width_chars">25</property>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
</template>
</interface>

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<gresources>
<gresource prefix="/org/x/editor">
<file preprocess="xml-stripblanks">ui/xed-ui.xml</file>
<file preprocess="xml-stripblanks">ui/xed-encodings-dialog.ui</file>
<file preprocess="xml-stripblanks">ui/xed-preferences-dialog.ui</file>
<file preprocess="xml-stripblanks">ui/xed-print-preferences.ui</file>
<file preprocess="xml-stripblanks">ui/xed-searchbar.ui</file>
<file preprocess="xml-stripblanks">ui/xed-view-frame.ui</file>
</gresource>
</gresources>

View File

@ -322,14 +322,12 @@ init_liststore_available (XedEncodingsDialog *dialog)
static void
xed_encodings_dialog_init (XedEncodingsDialog *dlg)
{
GtkBuilder *builder;
GtkWidget *content;
GtkCellRenderer *cell_renderer;
GtkTreeModel *sort_model;
GtkTreeViewColumn *column;
GtkTreeSelection *selection;
GtkWidget *error_widget;
gboolean ret;
gchar *file;
gchar *root_objects[] = {
"encodings-dialog-contents",
NULL
@ -355,27 +353,16 @@ xed_encodings_dialog_init (XedEncodingsDialog *dlg)
g_signal_connect (dlg, "response", G_CALLBACK (response_handler), dlg);
file = xed_dirs_get_ui_file ("xed-encodings-dialog.ui");
ret = xed_utils_get_ui_objects (file,
root_objects,
&error_widget,
"encodings-dialog-contents", &content,
"add-button", &dlg->priv->add_button,
"remove-button", &dlg->priv->remove_button,
"available-treeview", &dlg->priv->available_treeview,
"displayed-treeview", &dlg->priv->displayed_treeview,
NULL);
g_free (file);
if (!ret)
{
gtk_widget_show (error_widget);
gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dlg))), error_widget, TRUE, TRUE, 0);
gtk_container_set_border_width (GTK_CONTAINER (error_widget), 5);
return;
}
builder = gtk_builder_new ();
gtk_builder_add_objects_from_resource (builder, "/org/x/editor/ui/xed-encodings-dialog.ui",
root_objects, NULL);
content = GTK_WIDGET (gtk_builder_get_object (builder, "encodings-dialog-contents"));
g_object_ref (content);
dlg->priv->add_button = GTK_WIDGET (gtk_builder_get_object (builder, "add-button"));
dlg->priv->remove_button = GTK_WIDGET (gtk_builder_get_object (builder, "remove-button"));
dlg->priv->available_treeview = GTK_WIDGET (gtk_builder_get_object (builder, "available-treeview"));
dlg->priv->displayed_treeview = GTK_WIDGET (gtk_builder_get_object (builder, "displayed-treeview"));
g_object_unref (builder);
gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dlg))), content, TRUE, TRUE, 0);
g_object_unref (content);

View File

@ -1070,15 +1070,12 @@ setup_plugins_page (XedPreferencesDialog *dlg)
static void
xed_preferences_dialog_init (XedPreferencesDialog *dlg)
{
GtkWidget *error_widget;
gboolean ret;
gchar *file;
GtkBuilder *builder;
gchar *root_objects[] = {
"notebook",
"adjustment1",
"adjustment2",
"adjustment3",
"install_scheme_image",
NULL
};
@ -1106,52 +1103,35 @@ xed_preferences_dialog_init (XedPreferencesDialog *dlg)
g_signal_connect (dlg, "response",
G_CALLBACK (dialog_response_handler), NULL);
file = xed_dirs_get_ui_file ("xed-preferences-dialog.ui");
ret = xed_utils_get_ui_objects (file, root_objects, &error_widget,
"notebook", &dlg->priv->notebook,
"display_line_numbers_checkbutton", &dlg->priv->display_line_numbers_checkbutton,
"highlight_current_line_checkbutton", &dlg->priv->highlight_current_line_checkbutton,
"bracket_matching_checkbutton", &dlg->priv->bracket_matching_checkbutton,
"wrap_text_checkbutton", &dlg->priv->wrap_text_checkbutton,
"split_checkbutton", &dlg->priv->split_checkbutton,
"right_margin_checkbutton", &dlg->priv->right_margin_checkbutton,
"right_margin_position_spinbutton", &dlg->priv->right_margin_position_spinbutton,
"right_margin_position_hbox", &dlg->priv->right_margin_position_hbox,
"tabs_width_spinbutton", &dlg->priv->tabs_width_spinbutton,
"tabs_width_hbox", &dlg->priv->tabs_width_hbox,
"insert_spaces_checkbutton", &dlg->priv->insert_spaces_checkbutton,
"auto_indent_checkbutton", &dlg->priv->auto_indent_checkbutton,
"autosave_hbox", &dlg->priv->autosave_hbox,
"backup_copy_checkbutton", &dlg->priv->backup_copy_checkbutton,
"auto_save_checkbutton", &dlg->priv->auto_save_checkbutton,
"auto_save_spinbutton", &dlg->priv->auto_save_spinbutton,
"tab_scrolling_checkbutton", &dlg->priv->tab_scrolling_checkbutton,
"default_font_checkbutton", &dlg->priv->default_font_checkbutton,
"font_button", &dlg->priv->font_button,
"font_hbox", &dlg->priv->font_hbox,
"schemes_treeview", &dlg->priv->schemes_treeview,
"install_scheme_button", &dlg->priv->install_scheme_button,
"uninstall_scheme_button", &dlg->priv->uninstall_scheme_button,
"plugin_manager_place_holder", &dlg->priv->plugin_manager_place_holder,
NULL);
g_free (file);
if (!ret)
{
gtk_widget_show (error_widget);
gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dlg))), error_widget, TRUE, TRUE, 0);
return;
}
builder = gtk_builder_new ();
gtk_builder_add_objects_from_resource (builder, "/org/x/editor/ui/xed-preferences-dialog.ui", root_objects, NULL);
dlg->priv->notebook = GTK_WIDGET (gtk_builder_get_object (builder, "notebook"));
g_object_ref (dlg->priv->notebook);
dlg->priv->display_line_numbers_checkbutton = GTK_WIDGET (gtk_builder_get_object (builder, "display_line_numbers_checkbutton"));
dlg->priv->highlight_current_line_checkbutton = GTK_WIDGET (gtk_builder_get_object (builder, "highlight_current_line_checkbutton"));
dlg->priv->bracket_matching_checkbutton = GTK_WIDGET (gtk_builder_get_object (builder, "bracket_matching_checkbutton"));
dlg->priv->wrap_text_checkbutton = GTK_WIDGET (gtk_builder_get_object (builder, "wrap_text_checkbutton"));
dlg->priv->split_checkbutton = GTK_WIDGET (gtk_builder_get_object (builder, "split_checkbutton"));
dlg->priv->right_margin_checkbutton = GTK_WIDGET (gtk_builder_get_object (builder, "right_margin_checkbutton"));
dlg->priv->right_margin_position_spinbutton = GTK_WIDGET (gtk_builder_get_object (builder, "right_margin_position_spinbutton"));
dlg->priv->right_margin_position_hbox = GTK_WIDGET (gtk_builder_get_object (builder, "right_margin_position_hbox"));
dlg->priv->tabs_width_spinbutton = GTK_WIDGET (gtk_builder_get_object (builder, "tabs_width_spinbutton"));
dlg->priv->tabs_width_hbox = GTK_WIDGET (gtk_builder_get_object (builder, "tabs_width_hbox"));
dlg->priv->insert_spaces_checkbutton = GTK_WIDGET (gtk_builder_get_object (builder, "insert_spaces_checkbutton"));
dlg->priv->auto_indent_checkbutton = GTK_WIDGET (gtk_builder_get_object (builder, "auto_indent_checkbutton"));
dlg->priv->autosave_hbox = GTK_WIDGET (gtk_builder_get_object (builder, "autosave_hbox"));
dlg->priv->backup_copy_checkbutton = GTK_WIDGET (gtk_builder_get_object (builder, "backup_copy_checkbutton"));
dlg->priv->auto_save_checkbutton = GTK_WIDGET (gtk_builder_get_object (builder, "auto_save_checkbutton"));
dlg->priv->auto_save_spinbutton = GTK_WIDGET (gtk_builder_get_object (builder, "auto_save_spinbutton"));
dlg->priv->tab_scrolling_checkbutton = GTK_WIDGET (gtk_builder_get_object (builder, "tab_scrolling_checkbutton"));
dlg->priv->default_font_checkbutton = GTK_WIDGET (gtk_builder_get_object (builder, "default_font_checkbutton"));
dlg->priv->font_button = GTK_WIDGET (gtk_builder_get_object (builder, "font_button"));
dlg->priv->font_hbox = GTK_WIDGET (gtk_builder_get_object (builder, "font_hbox"));
dlg->priv->schemes_treeview = GTK_WIDGET (gtk_builder_get_object (builder, "schemes_treeview"));
dlg->priv->install_scheme_button = GTK_WIDGET (gtk_builder_get_object (builder, "install_scheme_button"));
dlg->priv->uninstall_scheme_button = GTK_WIDGET (gtk_builder_get_object (builder, "uninstall_scheme_button"));
dlg->priv->plugin_manager_place_holder = GTK_WIDGET (gtk_builder_get_object (builder, "plugin_manager_place_holder"));
g_object_unref (builder);
gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dlg))), dlg->priv->notebook, FALSE, FALSE, 0);
g_object_unref (dlg->priv->notebook);

View File

@ -109,7 +109,8 @@ static guint print_job_signals[LAST_SIGNAL] = { 0 };
G_DEFINE_TYPE (XedPrintJob, xed_print_job, G_TYPE_OBJECT)
static void
set_view (XedPrintJob *job, XedView *view)
set_view (XedPrintJob *job,
XedView *view)
{
job->priv->view = view;
job->priv->doc = XED_DOCUMENT (gtk_text_view_get_buffer (GTK_TEXT_VIEW (view)));
@ -161,10 +162,14 @@ xed_print_job_finalize (GObject *object)
g_free (job->priv->status_string);
if (job->priv->compositor != NULL)
{
g_object_unref (job->priv->compositor);
}
if (job->priv->operation != NULL)
{
g_object_unref (job->priv->operation);
}
G_OBJECT_CLASS (xed_print_job_parent_class)->finalize (object);
}
@ -251,19 +256,13 @@ wrap_mode_checkbutton_toggled (GtkToggleButton *button,
{
if (!gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (job->priv->text_wrapping_checkbutton)))
{
gtk_widget_set_sensitive (job->priv->do_not_split_checkbutton,
FALSE);
gtk_toggle_button_set_inconsistent (
GTK_TOGGLE_BUTTON (job->priv->do_not_split_checkbutton),
TRUE);
gtk_widget_set_sensitive (job->priv->do_not_split_checkbutton, FALSE);
gtk_toggle_button_set_inconsistent (GTK_TOGGLE_BUTTON (job->priv->do_not_split_checkbutton), TRUE);
}
else
{
gtk_widget_set_sensitive (job->priv->do_not_split_checkbutton,
TRUE);
gtk_toggle_button_set_inconsistent (
GTK_TOGGLE_BUTTON (job->priv->do_not_split_checkbutton),
FALSE);
gtk_widget_set_sensitive (job->priv->do_not_split_checkbutton, TRUE);
gtk_toggle_button_set_inconsistent (GTK_TOGGLE_BUTTON (job->priv->do_not_split_checkbutton), FALSE);
}
}
@ -293,12 +292,10 @@ static GObject *
create_custom_widget_cb (GtkPrintOperation *operation,
XedPrintJob *job)
{
gboolean ret;
GtkWidget *widget;
GtkWidget *error_widget;
GtkBuilder *builder;
GtkWidget *contents;
guint line_numbers;
GtkWrapMode wrap_mode;
gchar *file;
gboolean syntax_hl;
gboolean print_header;
gchar *font_body, *font_header, *font_numbers;
@ -308,33 +305,26 @@ create_custom_widget_cb (GtkPrintOperation *operation,
NULL
};
file = xed_dirs_get_ui_file ("xed-print-preferences.ui");
ret = xed_utils_get_ui_objects (file,
root_objects,
&error_widget,
"contents", &widget,
"syntax_checkbutton", &job->priv->syntax_checkbutton,
"line_numbers_checkbutton", &job->priv->line_numbers_checkbutton,
"line_numbers_hbox", &job->priv->line_numbers_hbox,
"line_numbers_spinbutton", &job->priv->line_numbers_spinbutton,
"page_header_checkbutton", &job->priv->page_header_checkbutton,
"text_wrapping_checkbutton", &job->priv->text_wrapping_checkbutton,
"do_not_split_checkbutton", &job->priv->do_not_split_checkbutton,
"fonts_table", &job->priv->fonts_table,
"body_font_label", &job->priv->body_font_label,
"body_fontbutton", &job->priv->body_fontbutton,
"headers_font_label", &job->priv->headers_font_label,
"headers_fontbutton", &job->priv->headers_fontbutton,
"numbers_font_label", &job->priv->numbers_font_label,
"numbers_fontbutton", &job->priv->numbers_fontbutton,
"restore_button", &job->priv->restore_button,
NULL);
g_free (file);
if (!ret)
{
return G_OBJECT (error_widget);
}
builder = gtk_builder_new ();
gtk_builder_add_objects_from_resource (builder, "/org/x/editor/ui/xed-print-preferences.ui", root_objects, NULL);
contents = GTK_WIDGET (gtk_builder_get_object (builder, "contents"));
g_object_ref (contents);
job->priv->syntax_checkbutton = GTK_WIDGET (gtk_builder_get_object (builder, "syntax_checkbutton"));
job->priv->line_numbers_checkbutton = GTK_WIDGET (gtk_builder_get_object (builder, "line_numbers_checkbutton"));
job->priv->line_numbers_hbox = GTK_WIDGET (gtk_builder_get_object (builder, "line_numbers_hbox"));
job->priv->line_numbers_spinbutton = GTK_WIDGET (gtk_builder_get_object (builder, "line_numbers_spinbutton"));
job->priv->page_header_checkbutton = GTK_WIDGET (gtk_builder_get_object (builder, "page_header_checkbutton"));
job->priv->text_wrapping_checkbutton = GTK_WIDGET (gtk_builder_get_object (builder, "text_wrapping_checkbutton"));
job->priv->do_not_split_checkbutton = GTK_WIDGET (gtk_builder_get_object (builder, "do_not_split_checkbutton"));
job->priv->fonts_table = GTK_WIDGET (gtk_builder_get_object (builder, "fonts_table"));
job->priv->body_font_label = GTK_WIDGET (gtk_builder_get_object (builder, "body_font_label"));
job->priv->body_fontbutton = GTK_WIDGET (gtk_builder_get_object (builder, "body_fontbutton"));
job->priv->headers_font_label = GTK_WIDGET (gtk_builder_get_object (builder, "headers_font_label"));
job->priv->headers_fontbutton = GTK_WIDGET (gtk_builder_get_object (builder, "headers_fontbutton"));
job->priv->numbers_font_label = GTK_WIDGET (gtk_builder_get_object (builder, "numbers_font_label"));
job->priv->numbers_fontbutton = GTK_WIDGET (gtk_builder_get_object (builder, "numbers_fontbutton"));
job->priv->restore_button = GTK_WIDGET (gtk_builder_get_object (builder, "restore_button"));
g_object_unref (builder);
/* Get all settings values */
syntax_hl = g_settings_get_boolean (job->priv->print_settings, XED_SETTINGS_PRINT_SYNTAX_HIGHLIGHTING);
@ -360,8 +350,7 @@ create_custom_widget_cb (GtkPrintOperation *operation,
}
else
{
gtk_spin_button_set_value (GTK_SPIN_BUTTON (job->priv->line_numbers_spinbutton),
1);
gtk_spin_button_set_value (GTK_SPIN_BUTTON (job->priv->line_numbers_spinbutton), 1);
gtk_widget_set_sensitive (job->priv->line_numbers_hbox, FALSE);
}
@ -371,22 +360,16 @@ create_custom_widget_cb (GtkPrintOperation *operation,
switch (wrap_mode)
{
case GTK_WRAP_WORD:
gtk_toggle_button_set_active (
GTK_TOGGLE_BUTTON (job->priv->text_wrapping_checkbutton), TRUE);
gtk_toggle_button_set_active (
GTK_TOGGLE_BUTTON (job->priv->do_not_split_checkbutton), TRUE);
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (job->priv->text_wrapping_checkbutton), TRUE);
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (job->priv->do_not_split_checkbutton), TRUE);
break;
case GTK_WRAP_CHAR:
gtk_toggle_button_set_active (
GTK_TOGGLE_BUTTON (job->priv->text_wrapping_checkbutton), TRUE);
gtk_toggle_button_set_active (
GTK_TOGGLE_BUTTON (job->priv->do_not_split_checkbutton), FALSE);
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (job->priv->text_wrapping_checkbutton), TRUE);
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (job->priv->do_not_split_checkbutton), FALSE);
break;
default:
gtk_toggle_button_set_active (
GTK_TOGGLE_BUTTON (job->priv->text_wrapping_checkbutton), FALSE);
gtk_toggle_button_set_inconsistent (
GTK_TOGGLE_BUTTON (job->priv->do_not_split_checkbutton), TRUE);
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (job->priv->text_wrapping_checkbutton), FALSE);
gtk_toggle_button_set_inconsistent (GTK_TOGGLE_BUTTON (job->priv->do_not_split_checkbutton), TRUE);
}
gtk_widget_set_sensitive (job->priv->do_not_split_checkbutton, wrap_mode != GTK_WRAP_NONE);
@ -401,24 +384,16 @@ create_custom_widget_cb (GtkPrintOperation *operation,
gtk_font_button_set_font_name (GTK_FONT_BUTTON (job->priv->numbers_fontbutton), font_numbers);
g_free (font_numbers);
g_signal_connect (job->priv->line_numbers_checkbutton,
"toggled",
G_CALLBACK (line_numbers_checkbutton_toggled),
job);
g_signal_connect (job->priv->text_wrapping_checkbutton,
"toggled",
G_CALLBACK (wrap_mode_checkbutton_toggled),
job);
g_signal_connect (job->priv->do_not_split_checkbutton,
"toggled",
G_CALLBACK (wrap_mode_checkbutton_toggled),
job);
g_signal_connect (job->priv->restore_button,
"clicked",
G_CALLBACK (restore_button_clicked),
job);
g_signal_connect (job->priv->line_numbers_checkbutton, "toggled",
G_CALLBACK (line_numbers_checkbutton_toggled), job);
g_signal_connect (job->priv->text_wrapping_checkbutton, "toggled",
G_CALLBACK (wrap_mode_checkbutton_toggled), job);
g_signal_connect (job->priv->do_not_split_checkbutton, "toggled",
G_CALLBACK (wrap_mode_checkbutton_toggled), job);
g_signal_connect (job->priv->restore_button, "clicked",
G_CALLBACK (restore_button_clicked), job);
return G_OBJECT (widget);
return G_OBJECT (contents);
}
static void
@ -576,16 +551,12 @@ preview_cb (GtkPrintOperation *op,
{
job->priv->preview = xed_print_preview_new (op, gtk_preview, context);
g_signal_connect_after (gtk_preview,
"ready",
G_CALLBACK (preview_ready),
job);
g_signal_connect_after (gtk_preview, "ready",
G_CALLBACK (preview_ready), job);
/* FIXME: should this go in the preview widget itself? */
g_signal_connect (job->priv->preview,
"destroy",
G_CALLBACK (preview_destroyed),
gtk_preview);
g_signal_connect (job->priv->preview, "destroy",
G_CALLBACK (preview_destroyed), gtk_preview);
return TRUE;
}
@ -614,7 +585,9 @@ paginate_cb (GtkPrintOperation *operation,
/* When previewing, the progress is just for pagination, when printing
* it's split between pagination and rendering */
if (!job->priv->is_preview)
{
job->priv->progress /= 2.0;
}
g_signal_emit (job, print_job_signals[PRINTING], 0, job->priv->status);
@ -639,9 +612,7 @@ draw_page_cb (GtkPrintOperation *operation,
job->priv->status = XED_PRINT_JOB_STATUS_DRAWING;
job->priv->status_string = g_strdup_printf ("Rendering page %d of %d...",
page_nr + 1,
n_pages);
job->priv->status_string = g_strdup_printf ("Rendering page %d of %d...", page_nr + 1, n_pages);
job->priv->progress = page_nr / (2.0 * n_pages) + 0.5;
@ -721,12 +692,14 @@ xed_print_job_print (XedPrintJob *job,
job->priv->operation = gtk_print_operation_new ();
if (settings)
gtk_print_operation_set_print_settings (priv->operation,
settings);
{
gtk_print_operation_set_print_settings (priv->operation, settings);
}
if (page_setup != NULL)
gtk_print_operation_set_default_page_setup (priv->operation,
page_setup);
{
gtk_print_operation_set_default_page_setup (priv->operation, page_setup);
}
job_name = xed_document_get_short_name_for_display (priv->doc);
gtk_print_operation_set_job_name (priv->operation, job_name);
@ -734,48 +707,28 @@ xed_print_job_print (XedPrintJob *job,
gtk_print_operation_set_embed_page_setup (priv->operation, TRUE);
gtk_print_operation_set_custom_tab_label (priv->operation,
_("Text Editor"));
gtk_print_operation_set_custom_tab_label (priv->operation, _("Text Editor"));
gtk_print_operation_set_allow_async (priv->operation, TRUE);
g_signal_connect (priv->operation,
"create-custom-widget",
G_CALLBACK (create_custom_widget_cb),
job);
g_signal_connect (priv->operation,
"custom-widget-apply",
G_CALLBACK (custom_widget_apply_cb),
job);
g_signal_connect (priv->operation,
"begin-print",
G_CALLBACK (begin_print_cb),
job);
g_signal_connect (priv->operation,
"preview",
G_CALLBACK (preview_cb),
job);
g_signal_connect (priv->operation,
"paginate",
G_CALLBACK (paginate_cb),
job);
g_signal_connect (priv->operation,
"draw-page",
G_CALLBACK (draw_page_cb),
job);
g_signal_connect (priv->operation,
"end-print",
G_CALLBACK (end_print_cb),
job);
g_signal_connect (priv->operation,
"done",
G_CALLBACK (done_cb),
job);
g_signal_connect (priv->operation, "create-custom-widget",
G_CALLBACK (create_custom_widget_cb), job);
g_signal_connect (priv->operation, "custom-widget-apply",
G_CALLBACK (custom_widget_apply_cb), job);
g_signal_connect (priv->operation, "begin-print",
G_CALLBACK (begin_print_cb), job);
g_signal_connect (priv->operation, "preview",
G_CALLBACK (preview_cb), job);
g_signal_connect (priv->operation, "paginate",
G_CALLBACK (paginate_cb), job);
g_signal_connect (priv->operation, "draw-page",
G_CALLBACK (draw_page_cb), job);
g_signal_connect (priv->operation, "end-print",
G_CALLBACK (end_print_cb), job);
g_signal_connect (priv->operation, "done",
G_CALLBACK (done_cb), job);
return gtk_print_operation_run (priv->operation,
action,
parent,
error);
return gtk_print_operation_run (priv->operation, action, parent, error);
}
static void
@ -797,9 +750,7 @@ xed_print_job_new (XedView *view)
g_return_val_if_fail (XED_IS_VIEW (view), NULL);
job = XED_PRINT_JOB (g_object_new (XED_TYPE_PRINT_JOB,
"view", view,
NULL));
job = XED_PRINT_JOB (g_object_new (XED_TYPE_PRINT_JOB, "view", view, NULL));
return job;
}

View File

@ -18,13 +18,6 @@
#define XED_SEARCHBAR_GET_PRIVATE(object)(G_TYPE_INSTANCE_GET_PRIVATE ((object), XED_TYPE_SEARCHBAR, XedSearchbarPrivate))
// typedef enum
// {
// SEARCH,
// REPLACE
// } SearchMode;
enum
{
SHOW_REPLACE,
@ -666,35 +659,32 @@ xed_searchbar_init (XedSearchbar *searchbar)
{
GtkWidget *content;
GtkSizeGroup *size_group;
GtkWidget *error_widget;
GtkStyleContext *context;
GtkCssProvider *provider;
gchar *file;
GtkBuilder *builder;
gchar *root_objects[] = { "searchbar_content", NULL };
const gchar *data = ".button {padding: 0;}";
searchbar->priv = XED_SEARCHBAR_GET_PRIVATE (searchbar);
file = xed_dirs_get_ui_file ("xed-searchbar.ui");
xed_utils_get_ui_objects (file,
root_objects,
&error_widget,
"searchbar_content", &content,
"revealer", &searchbar->priv->revealer,
"grid", &searchbar->priv->grid,
"search_label", &searchbar->priv->search_label,
"replace_with_label", &searchbar->priv->replace_label,
"regex_checkbutton", &searchbar->priv->regex_checkbutton,
"match_case_checkbutton", &searchbar->priv->match_case_checkbutton,
"entire_word_checkbutton", &searchbar->priv->entire_word_checkbutton,
"wrap_around_checkbutton", &searchbar->priv->wrap_around_checkbutton,
"find_button", &searchbar->priv->find_button,
"find_prev_button", &searchbar->priv->find_prev_button,
"replace_button", &searchbar->priv->replace_button,
"replace_all_button", &searchbar->priv->replace_all_button,
"close_button", &searchbar->priv->close_button,
NULL);
g_free (file);
builder = gtk_builder_new ();
gtk_builder_add_objects_from_resource (builder, "/org/x/editor/ui/xed-searchbar.ui", root_objects, NULL);
content = GTK_WIDGET (gtk_builder_get_object (builder, "searchbar_content"));
g_object_ref (content);
searchbar->priv->revealer = GTK_WIDGET (gtk_builder_get_object (builder, "revealer"));
searchbar->priv->grid = GTK_WIDGET (gtk_builder_get_object (builder, "grid"));
searchbar->priv->search_label = GTK_WIDGET (gtk_builder_get_object (builder, "search_label"));
searchbar->priv->replace_label = GTK_WIDGET (gtk_builder_get_object (builder, "replace_with_label"));
searchbar->priv->regex_checkbutton = GTK_WIDGET (gtk_builder_get_object (builder, "regex_checkbutton"));
searchbar->priv->match_case_checkbutton = GTK_WIDGET (gtk_builder_get_object (builder, "match_case_checkbutton"));
searchbar->priv->entire_word_checkbutton = GTK_WIDGET (gtk_builder_get_object (builder, "entire_word_checkbutton"));
searchbar->priv->wrap_around_checkbutton = GTK_WIDGET (gtk_builder_get_object (builder, "wrap_around_checkbutton"));
searchbar->priv->find_button = GTK_WIDGET (gtk_builder_get_object (builder, "find_button"));
searchbar->priv->find_prev_button = GTK_WIDGET (gtk_builder_get_object (builder, "find_prev_button"));
searchbar->priv->replace_button = GTK_WIDGET (gtk_builder_get_object (builder, "replace_button"));
searchbar->priv->replace_all_button = GTK_WIDGET (gtk_builder_get_object (builder, "replace_all_button"));
searchbar->priv->close_button = GTK_WIDGET (gtk_builder_get_object (builder, "close_button"));
g_object_unref (builder);
gtk_style_context_add_class (gtk_widget_get_style_context (GTK_WIDGET (searchbar)), "xed-searchbar");

View File

@ -37,12 +37,9 @@
#define SEARCH_POPUP_MARGIN 12
#define XED_VIEW_FRAME_GET_PRIVATE(object)(G_TYPE_INSTANCE_GET_PRIVATE((object), XED_TYPE_VIEW_FRAME, XedViewFramePrivate))
struct _XedViewFramePrivate
{
GtkWidget *view;
GtkWidget *overlay;
GtkTextMark *start_mark;
@ -68,7 +65,7 @@ typedef enum
SEARCH_STATE_NOT_FOUND
} SearchState;
G_DEFINE_TYPE (XedViewFrame, xed_view_frame, GTK_TYPE_BOX)
G_DEFINE_TYPE_WITH_PRIVATE (XedViewFrame, xed_view_frame, GTK_TYPE_OVERLAY)
static void
xed_view_frame_finalize (GObject *object)
@ -389,32 +386,18 @@ search_entry_populate_popup (GtkEntry *entry,
G_CALLBACK (search_enable_popdown), frame);
}
static GtkWidget *
create_search_widget (XedViewFrame *frame)
static void
setup_search_widget (XedViewFrame *frame)
{
GtkWidget *search_widget;
GtkWidget *hbox;
GtkStyleContext *context;
/* wrap it in a frame, so we can specify borders etc */
search_widget = gtk_frame_new (NULL);
context = gtk_widget_get_style_context (search_widget);
gtk_style_context_add_class (context, "xed-goto-line-box");
gtk_widget_show (search_widget);
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
gtk_container_add (GTK_CONTAINER (search_widget), hbox);
gtk_widget_show (hbox);
g_signal_connect (hbox, "key-press-event",
g_signal_connect (frame->priv->revealer, "key-press-event",
G_CALLBACK (search_widget_key_press_event), frame);
/* add entry */
frame->priv->search_entry = gtk_entry_new ();
gtk_widget_set_tooltip_text (frame->priv->search_entry, _("Line you want to move the cursor to"));
gtk_entry_set_icon_from_icon_name (GTK_ENTRY (frame->priv->search_entry),
GTK_ENTRY_ICON_PRIMARY, "go-jump-symbolic");
gtk_widget_show (frame->priv->search_entry);
// frame->priv->search_entry = gtk_entry_new ();
// gtk_widget_set_tooltip_text (frame->priv->search_entry, _("Line you want to move the cursor to"));
// gtk_entry_set_icon_from_icon_name (GTK_ENTRY (frame->priv->search_entry),
// GTK_ENTRY_ICON_PRIMARY, "go-jump-symbolic");
// gtk_widget_show (frame->priv->search_entry);
g_signal_connect (frame->priv->search_entry, "activate",
G_CALLBACK (search_entry_activate), frame);
@ -426,10 +409,6 @@ create_search_widget (XedViewFrame *frame)
G_CALLBACK (search_init), frame);
frame->priv->search_entry_focus_out_id = g_signal_connect (frame->priv->search_entry, "focus-out-event",
G_CALLBACK (search_entry_focus_out_event), frame);
gtk_container_add (GTK_CONTAINER (hbox), frame->priv->search_entry);
return search_widget;
}
static void
@ -496,6 +475,7 @@ static void
xed_view_frame_class_init (XedViewFrameClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
object_class->finalize = xed_view_frame_finalize;
object_class->dispose = xed_view_frame_dispose;
@ -517,7 +497,10 @@ xed_view_frame_class_init (XedViewFrameClass *klass)
G_PARAM_READABLE |
G_PARAM_STATIC_STRINGS));
g_type_class_add_private (object_class, sizeof (XedViewFramePrivate));
gtk_widget_class_set_template_from_resource (widget_class, "/org/x/editor/ui/xed-view-frame.ui");
gtk_widget_class_bind_template_child_private (widget_class, XedViewFrame, view);
gtk_widget_class_bind_template_child_private (widget_class, XedViewFrame, revealer);
gtk_widget_class_bind_template_child_private (widget_class, XedViewFrame, search_entry);
}
static GMountOperation *
@ -535,47 +518,23 @@ xed_view_frame_init (XedViewFrame *frame)
{
XedDocument *doc;
GtkSourceFile *file;
GtkWidget *sw;
GdkRGBA transparent = {0, 0, 0, 0};
frame->priv = XED_VIEW_FRAME_GET_PRIVATE (frame);
frame->priv = xed_view_frame_get_instance_private (frame);
gtk_orientable_set_orientation (GTK_ORIENTABLE (frame), GTK_ORIENTATION_VERTICAL);
gtk_widget_init_template (GTK_WIDGET (frame));
doc = xed_document_new ();
gtk_widget_override_background_color (GTK_WIDGET (frame), 0, &transparent);
doc = xed_view_frame_get_document (frame);
file = xed_document_get_file (doc);
gtk_source_file_set_mount_operation_factory (file, view_frame_mount_operation_factory, frame, NULL);
frame->priv->view = xed_view_new (doc);
gtk_widget_set_vexpand (frame->priv->view, TRUE);
gtk_widget_show (frame->priv->view);
setup_search_widget (frame);
g_object_unref (doc);
/* Create the scrolled window */
sw = gtk_scrolled_window_new (NULL, NULL);
gtk_container_add (GTK_CONTAINER (sw), frame->priv->view);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
gtk_widget_show (sw);
frame->priv->overlay = gtk_overlay_new ();
gtk_container_add (GTK_CONTAINER (frame->priv->overlay), sw);
gtk_widget_override_background_color (frame->priv->overlay, 0, &transparent);
gtk_widget_show (frame->priv->overlay);
gtk_box_pack_start (GTK_BOX (frame), frame->priv->overlay, TRUE, TRUE, 0);
/* Add revealer */
frame->priv->revealer = gtk_revealer_new ();
gtk_container_add (GTK_CONTAINER (frame->priv->revealer), create_search_widget (frame));
gtk_widget_show (frame->priv->revealer);
gtk_widget_set_halign (frame->priv->revealer, GTK_ALIGN_END);
gtk_widget_set_valign (frame->priv->revealer, GTK_ALIGN_START);
gtk_widget_set_margin_end (frame->priv->revealer, SEARCH_POPUP_MARGIN);
gtk_widget_set_margin_start (frame->priv->revealer, SEARCH_POPUP_MARGIN);
gtk_overlay_add_overlay (GTK_OVERLAY (frame->priv->overlay), frame->priv->revealer);
}
XedViewFrame *

View File

@ -43,14 +43,14 @@ typedef struct _XedViewFramePrivate XedViewFramePrivate;
struct _XedViewFrame
{
GtkBox parent;
GtkOverlay parent;
XedViewFramePrivate *priv;
};
struct _XedViewFrameClass
{
GtkBoxClass parent_class;
GtkOverlayClass parent_class;
};
GType xed_view_frame_get_type (void) G_GNUC_CONST;

View File

@ -528,6 +528,12 @@ xed_view_delete_from_cursor (GtkTextView *text_view,
}
}
static GtkTextBuffer *
xed_view_create_buffer (GtkTextView *text_view)
{
return GTK_TEXT_BUFFER (xed_document_new ());
}
static void
xed_view_class_init (XedViewClass *klass)
{
@ -562,6 +568,7 @@ xed_view_class_init (XedViewClass *klass)
widget_class->realize = xed_view_realize;
text_view_class->delete_from_cursor = xed_view_delete_from_cursor;
text_view_class->create_buffer = xed_view_create_buffer;
/* A new signal DROP_URIS has been added to allow plugins to intercept
* the default dnd behaviour of 'text/uri-list'. XedView now handles

View File

@ -30,7 +30,6 @@
#include "xed-settings.h"
#define LANGUAGE_NONE (const gchar *)"LangNone"
#define XED_UIFILE "xed-ui.xml"
#define TAB_WIDTH_DATA "XedWindowTabWidthData"
#define LANGUAGE_DATA "XedWindowLanguageData"
@ -1263,15 +1262,12 @@ create_menu_bar_and_toolbar (XedWindow *window,
g_object_unref (action_group);
window->priv->panes_action_group = action_group;
/* now load the UI definition */
ui_file = xed_dirs_get_ui_file (XED_UIFILE);
gtk_ui_manager_add_ui_from_file (manager, ui_file, &error);
gtk_ui_manager_add_ui_from_resource (manager, "/org/x/editor/ui/xed-ui.xml", &error);
if (error != NULL)
{
g_warning("Could not merge %s: %s", ui_file, error->message);
g_warning ("Could not add ui definition: %s", error->message);
g_error_free (error);
}
g_free (ui_file);
/* show tooltips in the statusbar */
g_signal_connect(manager, "connect_proxy", G_CALLBACK (connect_proxy_cb), window);