SF.net SVN: geany-plugins:[150] trunk/geanylatex
frlan at users.sourceforge.net
frlan at xxxxx
Sun Aug 31 23:29:25 UTC 2008
Revision: 150
http://geany-plugins.svn.sourceforge.net/geany-plugins/?rev=150&view=rev
Author: frlan
Date: 2008-08-31 23:29:18 +0000 (Sun, 31 Aug 2008)
Log Message:
-----------
GeanyLaTeX: Ported build system of spellcheck plugin
Modified Paths:
--------------
trunk/geanylatex/ChangeLog
trunk/geanylatex/Makefile.am
trunk/geanylatex/configure.in
trunk/geanylatex/makefile.win32
Added Paths:
-----------
trunk/geanylatex/po/
trunk/geanylatex/po/ChangeLog
trunk/geanylatex/po/POTFILES.in
trunk/geanylatex/po/geanylatex.pot
trunk/geanylatex/src/
trunk/geanylatex/src/Makefile.am
trunk/geanylatex/src/datatypes.h
trunk/geanylatex/src/geanylatex.c
trunk/geanylatex/src/latexencodings.c
trunk/geanylatex/src/latexencodings.h
trunk/geanylatex/src/letters.c
trunk/geanylatex/src/letters.h
Removed Paths:
-------------
trunk/geanylatex/datatypes.h
trunk/geanylatex/geanylatex.c
trunk/geanylatex/latexencodings.c
trunk/geanylatex/latexencodings.h
trunk/geanylatex/letters.c
trunk/geanylatex/letters.h
Modified: trunk/geanylatex/ChangeLog
===================================================================
--- trunk/geanylatex/ChangeLog 2008-08-31 23:08:49 UTC (rev 149)
+++ trunk/geanylatex/ChangeLog 2008-08-31 23:29:18 UTC (rev 150)
@@ -1,3 +1,8 @@
+2008-09-01 Frank Lanitz <frank(at)frank(dot)uvena(dot)de>
+
+ * Ported build system of spellcheck plugin.
+
+
2008-07-15 Frank Lanitz <frank(at)frank(dot)uvena(dot)de>
* Make plugin work together with Geany plugin API v78.
Modified: trunk/geanylatex/Makefile.am
===================================================================
--- trunk/geanylatex/Makefile.am 2008-08-31 23:08:49 UTC (rev 149)
+++ trunk/geanylatex/Makefile.am 2008-08-31 23:29:18 UTC (rev 150)
@@ -1,17 +1,17 @@
-## Makefile.am -- Process this file with automake to produce Makefile.in
-#SUBDIRS = tests
+SUBDIRS = src po
-noinst_HEADERS = makefile.win32
+EXTRA_DIST = \
+ autogen.sh \
+ makefile.win32 \
+ po/LINGUAS
-lib_LTLIBRARIES = geanylatex.la
-geanylatex_la_SOURCES = geanylatex.c letters.c latexencodings.c latexencodings.h letters.h datatypes.h
-geanylatex_la_LDFLAGS = -module -avoid-version
-geanylatex_la_LIBADD = @GEANY_LIBS@
+dist-bzip2: distdir
+ BZIP2=$(BZIP2_ENV) $(AMTAR) --bzip2 -chof $(distdir).tar.bz2 $(distdir)
+ -rm -rf $(distdir)
-AM_CPPFLAGS = @GEANY_CFLAGS@ -DGEANY_DISABLE_DEPRECATED
+sign:
+ if test -f $(PACKAGE)-$(VERSION).tar.gz; then \
+ gpg --detach-sign --digest-algo SHA512 $(PACKAGE)-$(VERSION).tar.gz; fi
+ if test -f $(PACKAGE)-$(VERSION).tar.bz2; then \
+ gpg --detach-sign --digest-algo SHA512 $(PACKAGE)-$(VERSION).tar.bz2; fi
-GEANY_DIR = $(shell geany --print-prefix | grep lib)
-
-install: .libs/$(PACKAGE).so
- mkdir -p $(DESTDIR)$(GEANY_DIR)/geany
- cp $< $(DESTDIR)$(GEANY_DIR)/geany/
Modified: trunk/geanylatex/configure.in
===================================================================
--- trunk/geanylatex/configure.in 2008-08-31 23:08:49 UTC (rev 149)
+++ trunk/geanylatex/configure.in 2008-08-31 23:29:18 UTC (rev 150)
@@ -1,17 +1,61 @@
-dnl Process this file with autoconf to produce a configure script.
+# Process this file with autoconf to produce a configure script.
-AC_PREREQ(2.59)
+AC_INIT(configure.in)
+AM_INIT_AUTOMAKE(geanylatex, 0.2svn)
-AC_INIT([geanylatex], [0.2-dev], [frank at frank.uvena.de])
+AM_CONFIG_HEADER(config.h)
-AM_INIT_AUTOMAKE([1.9 foreign])
+AC_PROG_CC
-AC_PROG_CC
+AC_DISABLE_STATIC
AM_PROG_LIBTOOL
+LIBTOOL="$LIBTOOL --silent"
+AC_PROG_INSTALL
+
+# checking for Geany
PKG_CHECK_MODULES(GEANY, [geany >= 0.15])
-AC_SUBST(GEANY_CFLAGS)
-AC_SUBST(GEANY_LIBS)
+AC_SUBST(GTK_CFLAGS)
+AC_SUBST(GTK_LIBS)
-AC_CONFIG_FILES([Makefile])
-AC_OUTPUT
+GEANY_VERSION=`$PKG_CONFIG --modversion geany`
+GTK_VERSION=`$PKG_CONFIG --modversion gtk+-2.0`
+
+# i18n
+GETTEXT_PACKAGE=geanylatex
+AC_SUBST(GETTEXT_PACKAGE)
+AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE", [Gettext package.])
+
+ALL_LINGUAS="`sed -e '/^#/d' $srcdir/po/LINGUAS`" # take all languages found in file po/LINGUAS
+
+AM_GLIB_GNU_GETTEXT
+# workaround for intltool bug (http://bugzilla.gnome.org/show_bug.cgi?id=490845)
+if test "x$MSGFMT" = "xno"; then
+ AC_MSG_ERROR([msgfmt not found. Please install the gettext package.])
+fi
+
+# intltool hack to define install_sh on Debian/Ubuntu systems
+if test "x$install_sh" = "x"; then
+ install_sh="`pwd`/install-sh"
+ AC_SUBST(install_sh)
+fi
+
+# get the plugin installed at the correct location for Geany
+# TODO find a way to NOT override --libdir command line option if given
+libdir="`$PKG_CONFIG --variable=libdir geany`/geany"
+
+
+AC_OUTPUT([
+Makefile
+src/Makefile
+po/Makefile.in
+])
+
+echo "----------------------------------------"
+echo "Install geanylatex plugin binary in : ${libdir}"
+echo "Install geanylatex in : ${prefix}"
+echo "Using Geany version : ${GEANY_VERSION}"
+echo "Using GTK version : ${GTK_VERSION}"
+echo ""
+echo "Configuration is done OK."
+echo ""
Deleted: trunk/geanylatex/datatypes.h
===================================================================
--- trunk/geanylatex/datatypes.h 2008-08-31 23:08:49 UTC (rev 149)
+++ trunk/geanylatex/datatypes.h 2008-08-31 23:29:18 UTC (rev 150)
@@ -1,40 +0,0 @@
-/*
- * datatypes.h
- *
- * Copyright 2008 Frank Lanitz <frank(at)frank(dot)uvena(dot)de>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA 02110-1301, USA.
- */
-
-#ifndef DATATYPES_H
-#define DATATYPES_H
-
-typedef struct
-{
- gint cat;
- gchar *label;
- gchar *latex;
-} SubMenuTemplate;
-
-
-typedef struct
-{
- gint cat;
- gchar *label;
- gboolean sorted;
-} CategoryName;
-
-#endif
Deleted: trunk/geanylatex/geanylatex.c
===================================================================
--- trunk/geanylatex/geanylatex.c 2008-08-31 23:08:49 UTC (rev 149)
+++ trunk/geanylatex/geanylatex.c 2008-08-31 23:29:18 UTC (rev 150)
@@ -1,866 +0,0 @@
-/*
- * geanylatex.c - Plugin to let Geany better work together with LaTeX
- *
- * Copyright 2007-2008 Frank Lanitz <frank(at)frank(dot)uvena(dot)de>
- * For long list of friendly supporters please have a look at THANKS.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-
-/* LaTeX plugin */
-/* This plugin improves the work with LaTeX and Geany.*/
-
-#include "geany.h"
-#include "support.h"
-#include "plugindata.h"
-#include "document.h"
-#include "editor.h"
-#include "filetypes.h"
-#include "templates.h"
-#include "utils.h"
-#include "ui_utils.h"
-#include "keybindings.h"
-#include "prefs.h"
-#include "pluginmacros.h"
-
-#include "datatypes.h"
-#include "letters.h"
-#include "latexencodings.h"
-
-typedef void (*SubMenuCallback) (G_GNUC_UNUSED GtkMenuItem * menuitem, G_GNUC_UNUSED gpointer gdata);
-
-PluginInfo *plugin_info;
-PluginFields *plugin_fields;
-GeanyData *geany_data;
-GeanyFunctions *geany_functions;
-
-
-PLUGIN_VERSION_CHECK(78)
-PLUGIN_SET_INFO(_("LaTeX"), _("Plugin to make Geany better support LaTeX"), "0.2-dev",
- "Frank Lanitz <frank at frank.uvena.de>")
-
-GtkWidget *menu_latex = NULL;
-GtkWidget *menu_latex_menu = NULL;
-GtkWidget *menu_latex_wizzard = NULL;
-GtkWidget *menu_latex_menu_special_char = NULL;
-GtkWidget *menu_latex_menu_special_char_submenu = NULL;
-GtkWidget *menu_latex_ref = NULL;
-GtkWidget *menu_latex_label = NULL;
-
-/* Doing some basic keybinding stuff */
-enum
-{
- LATEX_WIZZARD_KB,
- LATEX_INSERT_LABEL_KB,
- LATEX_INSERT_REF_KB,
- COUNT_KB
-};
-
-PLUGIN_KEY_GROUP(geanylatex, COUNT_KB)
-
-
-#define TEMPLATE_LATEX "\
-\\documentclass[{CLASSOPTION}]{{DOCUMENTCLASS}}\n\
-{ENCODING}\
-{TITLE}\
-{AUTHOR}\
-{DATE}\
-\\begin{document}\n\
-\n\
-\\end{document}\n"
-
-#define create_sub_menu(base_menu, menu, item, title) \
- (menu) = gtk_menu_new(); \
- (item) = gtk_menu_item_new_with_mnemonic((title)); \
- gtk_menu_item_set_submenu(GTK_MENU_ITEM((item)), (menu)); \
- gtk_container_add(GTK_CONTAINER(base_menu), (item)); \
- gtk_widget_show((item));
-
-#define MAX_MENU_ENTRIES 20
-
-static void
-insert_string(gchar *string)
-{
- GeanyDocument *doc = NULL;
-
- doc = p_document->get_current();
-
- if (doc != NULL)
- {
- gint pos = p_sci->get_current_position(doc->editor->sci);
- p_sci->insert_text(doc->editor->sci, pos, string);
- }
-}
-
-
-inline gchar*
-get_latex_command(gint tab_index)
-{
- return char_array[tab_index].latex;
-}
-
-static void
-char_insert_activated(G_GNUC_UNUSED GtkMenuItem * menuitem, G_GNUC_UNUSED gpointer gdata)
-{
- insert_string(get_latex_command(GPOINTER_TO_INT(gdata)));
-}
-
-static void
-insert_label_activated(G_GNUC_UNUSED GtkMenuItem * menuitem, G_GNUC_UNUSED gpointer gdata)
-{
- GtkWidget *dialog = NULL;
- GtkWidget *vbox = NULL;
- GtkWidget *label = NULL;
- GtkWidget *textbox_label = NULL;
- GtkWidget *table = NULL;
-
- dialog = gtk_dialog_new_with_buttons(_("Insert label"),
- GTK_WINDOW(geany->main_widgets->window),
- GTK_DIALOG_DESTROY_WITH_PARENT, GTK_STOCK_CANCEL,
- GTK_RESPONSE_CANCEL, GTK_STOCK_OK, GTK_RESPONSE_ACCEPT,
- NULL);
- vbox = p_ui->dialog_vbox_new(GTK_DIALOG(dialog));
- gtk_widget_set_name(dialog, "GeanyDialog");
- gtk_box_set_spacing(GTK_BOX(vbox), 10);
-
- table = gtk_table_new(1, 2, FALSE);
- gtk_table_set_col_spacings(GTK_TABLE(table), 6);
- gtk_table_set_row_spacings(GTK_TABLE(table), 6);
-
- label = gtk_label_new(_("Label name:"));
- textbox_label = gtk_entry_new();
-
- gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
-
- gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 0, 1);
- gtk_table_attach_defaults(GTK_TABLE(table), textbox_label, 1, 2, 0, 1);
- gtk_container_add(GTK_CONTAINER(vbox), table);
-
- gtk_widget_show_all(vbox);
-
- if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT)
- {
- gchar *label_str = NULL;
- label_str = g_strconcat("\\label{", g_strdup(gtk_entry_get_text(GTK_ENTRY(textbox_label))), "}", NULL);
- insert_string(label_str);
- }
- gtk_widget_destroy(dialog);
-}
-
-static void
-insert_ref_activated(G_GNUC_UNUSED GtkMenuItem * menuitem, G_GNUC_UNUSED gpointer gdata)
-{
- GtkWidget *dialog;
- GtkWidget *vbox = NULL;
- GtkWidget *label_ref = NULL;
- GtkWidget *textbox_ref = NULL;
- GtkWidget *table = NULL;
- GtkWidget *radio1 = NULL;
- GtkWidget *radio2 = NULL;
-
- dialog = gtk_dialog_new_with_buttons(_("Insert reference"),
- GTK_WINDOW(geany->main_widgets->window),
- GTK_DIALOG_DESTROY_WITH_PARENT, GTK_STOCK_CANCEL,
- GTK_RESPONSE_CANCEL, GTK_STOCK_OK, GTK_RESPONSE_ACCEPT,
- NULL);
- vbox = p_ui->dialog_vbox_new(GTK_DIALOG(dialog));
- gtk_widget_set_name(dialog, "GeanyDialog");
- gtk_box_set_spacing(GTK_BOX(vbox), 10);
-
- table = gtk_table_new(1, 2, FALSE);
- gtk_table_set_col_spacings(GTK_TABLE(table), 6);
- gtk_table_set_row_spacings(GTK_TABLE(table), 6);
-
- label_ref = gtk_label_new(_("Ref name:"));
- textbox_ref = gtk_entry_new();
-
- gtk_misc_set_alignment(GTK_MISC(label_ref), 0, 0.5);
-
- gtk_table_attach_defaults(GTK_TABLE(table), label_ref, 0, 1, 0, 1);
- gtk_table_attach_defaults(GTK_TABLE(table), textbox_ref, 1, 2, 0, 1);
- gtk_container_add(GTK_CONTAINER(vbox), table);
-
- radio1 = gtk_radio_button_new_with_label(NULL,
- _("standard reference"));
- gtk_button_set_focus_on_click(GTK_BUTTON(radio1), FALSE);
- gtk_container_add(GTK_CONTAINER(vbox), radio1);
-
- radio2 = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(radio1),
- _("page reference"));
- gtk_button_set_focus_on_click(GTK_BUTTON(radio2), FALSE);
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio2), FALSE);
- gtk_container_add(GTK_CONTAINER(vbox), radio2);
-
- gtk_widget_show_all(vbox);
-
-
- if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT)
- {
- gchar *ref_string = NULL;
-
- ref_string = g_strdup(gtk_entry_get_text(GTK_ENTRY(textbox_ref)));
-
- if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(radio2)) == FALSE)
- {
- ref_string = g_strconcat("\\ref{", ref_string, "}", NULL);
- }
- else
- {
- ref_string = g_strconcat("\\pageref{", ref_string, "}", NULL);
- }
-
- if (ref_string != NULL)
- {
- insert_string(ref_string);
- g_free(ref_string);
- }
- }
-
- gtk_widget_destroy(dialog);
-}
-
-static void character_create_menu_item(GtkWidget *menu, const gchar *label, gint letter, SubMenuCallback callback)
-{
- GtkWidget *tmp;
-
- tmp = gtk_menu_item_new_with_label(label);
- gtk_widget_show(tmp);
- gtk_container_add(GTK_CONTAINER(menu), tmp);
- g_signal_connect((gpointer) tmp, "activate", G_CALLBACK(callback), GINT_TO_POINTER(letter));
-}
-
-/* returns -1, if there are more than gint can work with or any other error
- * returns 0, if categorie is empty
- * if gint categorie is -1, function will count every element.
- * Useful, if there is no need for a categorie check.*/
-gint
-count_menu_entries(SubMenuTemplate *tmp, gint categorie)
-{
- // TODO: Reset max value for to stop before it's too late
- gint i;
- gint count = 0;
- if (categorie == -1)
- {
- for (i =1; tmp[i].label != NULL; i++)
- {
- count = count + 1;
- }
- }
- else
- {
- for (i = 1; tmp[i].label != NULL; i++)
- {
- if (tmp[i].cat == categorie)
- {
- count = count + 1;
- }
- if (i >= 256)
- {
- count = -1;
- break;
- }
- }
- }
- return count;
-}
-
-gint
-count_menu_cat_entries(CategoryName *tmp)
-{
- gint i;
-
- for (i = 0; tmp[i].label != NULL; i++);
- return i;
-}
-
-void sub_menu_init(GtkWidget *base_menu, SubMenuTemplate *menu_template, CategoryName *category_name, SubMenuCallback callback_function)
-{
- gint i;
- gint j;
- gint max_menu_entries = MAX_MENU_ENTRIES;
- gint categories = count_menu_cat_entries(category_name);
- GtkWidget *sub_menu = NULL;
- GtkWidget *sub_menu_cat[categories][2];
- GtkWidget *active_submenu = NULL;
-
- // Creates sub menus based on information from letter.h
- for (i = 0; i < categories; i++)
- {
- if (count_menu_entries(menu_template, i) > 0)
- {
- create_sub_menu(base_menu, sub_menu_cat[i][0],
- sub_menu_cat[i][1], category_name[i].label);
- }
- }
-
- // Searching for all categories
- for (i = 0; i < categories; i++)
- {
- gboolean split = FALSE;
- gboolean last_sub_menu = FALSE;
- gboolean sorted = category_name[i].sorted;
- gint local_count = 0; // To check whether we need to build up a new sub sub menu.
- gint item_count = count_menu_entries(menu_template, i);
-
- if (item_count < 1)
- continue;
-
- // Default is, not to split anything to make menu not
- // deeper than realy needed.
- if (item_count > max_menu_entries)
- {
- split = TRUE;
- }
-
- // Setting active sub menu to sub menu of catagorie
- sub_menu = sub_menu_cat[i][0];
- active_submenu = sub_menu;
- // Finding entries for each categorie
-
- for (j = 0; menu_template[j].latex != NULL; j++)
- {
- if (menu_template[j].cat == i)
- {
- // Creates a new sub sub menu if needed
- if (split == TRUE && (local_count % max_menu_entries) == 0)
- {
- gint next_split_point = 0;
- GtkWidget *tmp = NULL;
- GtkWidget *tmp_item = NULL;
-
- sub_menu = active_submenu;
-
- for (next_split_point = 0;
- next_split_point < max_menu_entries ; next_split_point ++)
- {
- if (menu_template[j+next_split_point].cat != i)
- {
- last_sub_menu = TRUE;
- break;
- }
-
- }
-
- if (sorted == TRUE)
- {
- create_sub_menu(sub_menu_cat[i][0], tmp, tmp_item, g_strconcat(menu_template[j].label, " ... ", menu_template[j + next_split_point-1].label, NULL));
-
- sub_menu = tmp;
- }
- else if (sorted == FALSE)
- {
- if (last_sub_menu == FALSE)
- {
- create_sub_menu(sub_menu, tmp, tmp_item, _("More"));
- sub_menu = active_submenu;
- active_submenu = tmp;
- }
- }
- }
-
- // Sets the counter to keep in track if a new submenu needs to be build up
- local_count = local_count + 1;
- character_create_menu_item(sub_menu, g_strconcat(menu_template[j].label, "\t", menu_template[j].latex, NULL), j, callback_function);
- }
- }
- }
-}
-
-static int
-find_latex_enc(gint l_geany_enc)
-{
- guint i;
- for (i = 0; i < LATEX_ENCODINGS_MAX; i++)
- {
- if (latex_encodings[i].geany_enc == l_geany_enc)
- return i;
- }
- return LATEX_ENCODING_NONE;
-}
-
-
-static void
-show_output(const gchar * output, const gchar * name, const gint local_enc)
-{
- GeanyDocument *doc = NULL;
- GeanyFiletype *ft = p_filetypes->lookup_by_name("LaTeX");
-
- if (output)
- {
- doc = p_document->new_file(name, ft, output);
- p_document->set_encoding(doc, p_encodings->get_charset_from_index(latex_encodings[local_enc].geany_enc));
- }
-
-}
-
-static void
-wizard_activated(G_GNUC_UNUSED GtkMenuItem * menuitem, G_GNUC_UNUSED gpointer gdata)
-{
- gint i;
- GString *code = NULL;
- gchar *author = NULL;
- gchar *date = NULL;
- gchar *output = NULL;
- gchar *classoptions = NULL;
- gchar *title = NULL;
- gchar *enc_latex_char = NULL;
- gchar *documentclass_str = NULL;
- gchar *papersize = NULL;
- gchar *draft = NULL;
- gchar *scriptsize = NULL;
- gint documentclass_int;
- gint encoding_int;
- gint papersize_int;
- gint scriptsize_int;
- GtkWidget *dialog = NULL;
- GtkWidget *vbox = NULL;
- GtkWidget *label_documentclass = NULL;
- GtkWidget *documentclass_combobox = NULL;
- GtkWidget *label_encoding = NULL;
- GtkWidget *encoding_combobox = NULL;
- GtkWidget *scriptsize_combobox = NULL;
- GtkWidget *label_scriptsize = NULL;
- GtkWidget *table = NULL;
- GtkWidget *checkbox_KOMA = NULL;
- GtkWidget *author_textbox = NULL;
- GtkWidget *label_author = NULL;
- GtkWidget *date_textbox = NULL;
- GtkWidget *label_date = NULL;
- GtkWidget *title_textbox = NULL;
- GtkWidget *label_title = NULL;
- GtkWidget *papersize_combobox = NULL;
- GtkWidget *label_papersize = NULL;
- GtkWidget *checkbox_draft = NULL;
- gboolean KOMA_active = TRUE;
- gboolean draft_active = FALSE;
-
- GtkTooltips *tooltip = NULL;
-
- tooltip = gtk_tooltips_new();
-
- // Creating and formating table
- table = gtk_table_new(2, 6, FALSE);
- gtk_table_set_col_spacings(GTK_TABLE(table), 6);
- gtk_table_set_row_spacings(GTK_TABLE(table), 6);
-
- // Documentclass
- label_documentclass = gtk_label_new(_("Documentclass:"));
- documentclass_combobox = gtk_combo_box_new_text();
- gtk_tooltips_set_tip(tooltip, documentclass_combobox,
- _("Chooce the kind of document you want to write"), NULL);
- gtk_combo_box_insert_text(GTK_COMBO_BOX(documentclass_combobox), 0, "Book");
- gtk_combo_box_insert_text(GTK_COMBO_BOX(documentclass_combobox), 1, "Article");
- gtk_combo_box_insert_text(GTK_COMBO_BOX(documentclass_combobox), 2, "Report");
-
- gtk_combo_box_set_active(GTK_COMBO_BOX(documentclass_combobox), 0);
-
- gtk_misc_set_alignment(GTK_MISC(label_documentclass), 0, 0.5);
-
- gtk_table_attach_defaults(GTK_TABLE(table), label_documentclass, 0, 1, 0, 1);
- gtk_table_attach_defaults(GTK_TABLE(table), documentclass_combobox, 1, 2, 0, 1);
-
- // Encoding
- label_encoding = gtk_label_new(_("Encoding:"));
-
- encoding_combobox = gtk_combo_box_new_text();
- gtk_tooltips_set_tip(tooltip, encoding_combobox,
- _("Set the encoding for your new document"), NULL);
- for (i = 0; i < LATEX_ENCODINGS_MAX; i++)
- {
- gtk_combo_box_insert_text(GTK_COMBO_BOX(encoding_combobox), i,
- latex_encodings[i].name);
- }
-
- gtk_combo_box_set_active(GTK_COMBO_BOX(encoding_combobox), find_latex_enc(geany_data->file_prefs->default_new_encoding));
-
- gtk_misc_set_alignment(GTK_MISC(label_encoding), 0, 0.5);
-
- gtk_table_attach_defaults(GTK_TABLE(table), label_encoding, 0, 1, 1, 2);
- gtk_table_attach_defaults(GTK_TABLE(table), encoding_combobox, 1, 2, 1, 2);
-
- // Scriptsize
- label_scriptsize = gtk_label_new(_("Scriptsize:"));
- scriptsize_combobox = gtk_combo_box_new_text();
- gtk_tooltips_set_tip(tooltip, scriptsize_combobox,
- _("Set the default script size of your new document"), NULL);
- gtk_combo_box_insert_text(GTK_COMBO_BOX(scriptsize_combobox), 0, "10pt");
- gtk_combo_box_insert_text(GTK_COMBO_BOX(scriptsize_combobox), 1, "11pt");
- gtk_combo_box_insert_text(GTK_COMBO_BOX(scriptsize_combobox), 2, "12pt");
-
- gtk_combo_box_set_active(GTK_COMBO_BOX(scriptsize_combobox), 0);
-
- gtk_misc_set_alignment(GTK_MISC(label_scriptsize), 0, 0.5);
-
- gtk_table_attach_defaults(GTK_TABLE(table), label_scriptsize, 0, 1, 2, 3);
- gtk_table_attach_defaults(GTK_TABLE(table), scriptsize_combobox, 1, 2, 2, 3);
-
- // Author
- label_author = gtk_label_new(_("Author:"));
- author_textbox = gtk_entry_new();
- gtk_tooltips_set_tip(tooltip, author_textbox,
- _("Sets the entry of \\author command. In most cases here should stay your name"), NULL);
- if (geany_data->template_prefs->developer != NULL)
- {
- author = geany_data->template_prefs->developer;
- gtk_entry_set_text(GTK_ENTRY(author_textbox), author);
- }
- gtk_misc_set_alignment(GTK_MISC(label_author), 0, 0.5);
- gtk_table_attach_defaults(GTK_TABLE(table), label_author, 0, 1, 3, 4);
- gtk_table_attach_defaults(GTK_TABLE(table), author_textbox, 1, 2, 3, 4);
-
- // Date
- label_date = gtk_label_new(_("Date:"));
- date_textbox = gtk_entry_new();
- gtk_tooltips_set_tip(tooltip, date_textbox,
- _("Sets the entry of the \\date command inside header of your newly created LaTeX-document. Keeping it at \\today is a good decision if you don't need any fixed date."), NULL);
- gtk_entry_set_text(GTK_ENTRY(date_textbox), "\\today");
- gtk_misc_set_alignment(GTK_MISC(label_date), 0, 0.5);
- gtk_table_attach_defaults(GTK_TABLE(table), label_date, 0, 1, 4, 5);
- gtk_table_attach_defaults(GTK_TABLE(table), date_textbox, 1, 2, 4, 5);
-
- // Title of the new document
- label_title = gtk_label_new(_("Title:"));
- title_textbox = gtk_entry_new();
- gtk_tooltips_set_tip(tooltip, title_textbox, _("Sets the title of your newly document."),
- NULL);
- gtk_misc_set_alignment(GTK_MISC(label_title), 0, 0.5);
- gtk_table_attach_defaults(GTK_TABLE(table), label_title, 0, 1, 5, 6);
- gtk_table_attach_defaults(GTK_TABLE(table), title_textbox, 1, 2, 5, 6);
-
- // Papersize
- label_papersize = gtk_label_new(_("Paper size:"));
- papersize_combobox = gtk_combo_box_new_text();
- gtk_tooltips_set_tip(tooltip, papersize_combobox,
- _("Chooce the paper format for the new created document"), NULL);
- gtk_combo_box_insert_text(GTK_COMBO_BOX(papersize_combobox), 0, "A4");
- gtk_combo_box_insert_text(GTK_COMBO_BOX(papersize_combobox), 1, "A5");
- gtk_combo_box_insert_text(GTK_COMBO_BOX(papersize_combobox), 2, "A6");
-
- gtk_combo_box_set_active(GTK_COMBO_BOX(papersize_combobox), 0);
-
- gtk_misc_set_alignment(GTK_MISC(label_papersize), 0, 0.5);
-
- gtk_table_attach_defaults(GTK_TABLE(table), label_papersize, 0, 1, 6, 7);
- gtk_table_attach_defaults(GTK_TABLE(table), papersize_combobox, 1, 2, 6, 7);
-
- gtk_widget_show_all(table);
-
- // Buidling the wizard-dialog and showing it
- dialog = gtk_dialog_new_with_buttons(_("LaTeX-Wizard"),
- GTK_WINDOW(geany->main_widgets->window),
- GTK_DIALOG_DESTROY_WITH_PARENT, GTK_STOCK_CANCEL,
- GTK_RESPONSE_CANCEL, GTK_STOCK_OK, GTK_RESPONSE_ACCEPT,
- NULL);
- vbox = p_ui->dialog_vbox_new(GTK_DIALOG(dialog));
- gtk_widget_set_name(dialog, "GeanyDialog");
- gtk_box_set_spacing(GTK_BOX(vbox), 10);
- gtk_container_add(GTK_CONTAINER(vbox), table);
-
- checkbox_KOMA = gtk_check_button_new_with_label(_("Use KOMA-script classes if possible"));
- gtk_tooltips_set_tip(tooltip, checkbox_KOMA,
- _
- ("Uses the KOMA-script classes by Markus Kohm.\nKeep in mind: To compile your document these classes have to been installed before."),
- NULL);
- gtk_button_set_focus_on_click(GTK_BUTTON(checkbox_KOMA), FALSE);
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbox_KOMA), KOMA_active);
- gtk_box_pack_start(GTK_BOX(vbox), checkbox_KOMA, FALSE, FALSE, 5);
-
- checkbox_draft = gtk_check_button_new_with_label(_("Use draft mode"));
- gtk_tooltips_set_tip(tooltip, checkbox_draft,
- _("Set the draft flag inside new created documents to get documents with a number of debugging helpers"), NULL);
- gtk_button_set_focus_on_click(GTK_BUTTON(checkbox_draft), FALSE);
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbox_draft), draft_active);
- gtk_box_pack_start(GTK_BOX(vbox), checkbox_draft, FALSE, FALSE, 5);
-
- gtk_widget_show_all(vbox);
-
- if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT)
- {
- KOMA_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkbox_KOMA));
- draft_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkbox_draft));
- documentclass_int = gtk_combo_box_get_active(GTK_COMBO_BOX(documentclass_combobox));
- encoding_int = gtk_combo_box_get_active(GTK_COMBO_BOX(encoding_combobox));
- enc_latex_char = g_strconcat("\\usepackage[", latex_encodings[encoding_int].latex,"]{inputenc}\n", NULL);
- author = g_strdup(gtk_entry_get_text(GTK_ENTRY(author_textbox)));
- date = g_strdup(gtk_entry_get_text(GTK_ENTRY(date_textbox)));
- title = g_strdup(gtk_entry_get_text(GTK_ENTRY(title_textbox)));
- papersize_int = gtk_combo_box_get_active(GTK_COMBO_BOX(papersize_combobox));
- switch (papersize_int)
- {
- case 0:
- {
- papersize = g_utf8_casefold("a4paper", -1);
- break;
- }
- case 1:
- {
- papersize = g_utf8_casefold("a5paper", -1);
- break;
- }
- case 2:
- {
- papersize = g_utf8_casefold("a6paper", -1);
- break;
- }
- }
-
- scriptsize_int = gtk_combo_box_get_active(GTK_COMBO_BOX(scriptsize_combobox));
- switch (scriptsize_int)
- {
- case 0:
- {
- scriptsize = g_strconcat("10pt", NULL);
- break;
- }
- case 1:
- {
- scriptsize = g_strconcat("11pt", NULL);
- break;
- }
- case 2:
- {
- scriptsize = g_strconcat("12pt", NULL);
- break;
- }
- }
-
- if (papersize != NULL)
- {
- classoptions = g_strconcat(papersize, NULL);
- }
- if (classoptions != NULL && draft_active == TRUE)
- {
- draft = g_utf8_casefold("draft", -1);
- classoptions = g_strconcat(classoptions,",", draft, NULL);
- }
- else if (classoptions == NULL && draft_active == TRUE)
- {
- draft = g_utf8_casefold("draft", -1);
- classoptions = g_strconcat(draft, NULL);
- }
- if (classoptions != NULL && scriptsize != NULL)
- {
- classoptions = g_strconcat(classoptions, ",", scriptsize, NULL);
- }
- else if (classoptions == NULL && scriptsize != NULL)
- {
- classoptions = g_strconcat(scriptsize, NULL);
- }
-
- if (KOMA_active)
- {
- switch (documentclass_int)
- {
- case 0:
- {
- documentclass_str = g_utf8_casefold("scrbook", -1);
- break;
- }
- case 1:
- {
- documentclass_str = g_utf8_casefold("scrartcl", -1);
- break;
- }
- case 2:
- {
- documentclass_str = g_utf8_casefold("scrreprt", -1);
- break;
- }
- }
- }
- else
- {
- switch (documentclass_int)
- {
- case 0:
- {
- documentclass_str = g_utf8_casefold("book", -1);
- break;
- }
- case 1:
- {
- documentclass_str = g_utf8_casefold("article", -1);
- break;
- }
- case 2:
- {
- documentclass_str = g_utf8_casefold("report", -1);
- break;
- }
- }
- }
-
- code = g_string_new(TEMPLATE_LATEX);
-
- if (classoptions != NULL)
- {
- p_utils->string_replace_all(code, "{CLASSOPTION}", classoptions);
- g_free(classoptions);
- }
- if (documentclass_str != NULL)
- {
- p_utils->string_replace_all(code, "{DOCUMENTCLASS}", documentclass_str);
- g_free(documentclass_str);
- }
- if (enc_latex_char != NULL)
- {
- p_utils->string_replace_all(code, "{ENCODING}", enc_latex_char);
- g_free(enc_latex_char);
- }
- if (author != NULL)
- {
- if (author[0] != '\0')
- {
- author = g_strconcat("\\author{", author, "}\n", NULL);
- p_utils->string_replace_all(code, "{AUTHOR}", author);
- }
- else
- p_utils->string_replace_all(code, "{AUTHOR}", "\% \\author{}\n");
- g_free(author);
- }
- if (date != NULL)
- {
- if (date[0] != '\0')
- {
- date = g_strconcat("\\date{", date, "}\n", NULL);
- p_utils->string_replace_all(code, "{DATE}", date);
- }
- else
- p_utils->string_replace_all(code, "{DATE}", "\% \\date{}\n");
- g_free(date);
- }
- if (title != NULL)
- {
- if (title[0] != '\0')
- {
- title = g_strconcat("\\title{", title, "}\n", NULL);
- p_utils->string_replace_all(code, "{TITLE}", title);
- }
- else
- p_utils->string_replace_all(code, "{TITLE}", "\% \\title{} \n");
- g_free(title);
- }
- output = g_string_free(code, FALSE);
- show_output(output, NULL, encoding_int);
- }
- gtk_widget_destroy(dialog);
-}
-
-static void
-update_menu_items()
-{
- GeanyDocument *doc = NULL;
- gboolean have_file;
-
- doc = p_document->get_current();
- have_file = doc && doc->file_name && g_path_is_absolute(doc->file_name);
-
- if (have_file)
- {
- gtk_widget_set_sensitive(menu_latex_menu_special_char, TRUE);
- gtk_widget_set_sensitive(menu_latex_ref, TRUE);
- gtk_widget_set_sensitive(menu_latex_label, TRUE);
- }
- else
- {
- gtk_widget_set_sensitive(menu_latex_menu_special_char, FALSE);
- gtk_widget_set_sensitive(menu_latex_ref, FALSE);
- gtk_widget_set_sensitive(menu_latex_label, FALSE);
- }
-
- gtk_widget_set_sensitive(menu_latex_wizzard, TRUE);
-
-}
-
-static void kblabel_insert(G_GNUC_UNUSED guint key_id)
-{
- insert_label_activated(NULL, NULL);
-}
-
-static void kbref_insert(G_GNUC_UNUSED guint key_id)
-{
- insert_ref_activated(NULL, NULL);
-}
-
-static void kbwizard(G_GNUC_UNUSED guint key_id)
-{
- wizard_activated(NULL, NULL);
-}
-
-void
-plugin_init(G_GNUC_UNUSED GeanyData * data)
-{
- GtkTooltips *tooltips = NULL;
-
- gchar *kblabel_insert_label = _("Insert \\label");
- gchar *kblabel_insert_ref = _("Insert \\ref");
- gchar *kblabel_wizard = _("Run LaTeX-Wizard");
-
- init_encodings_latex();
-
- tooltips = gtk_tooltips_new();
-
- menu_latex = gtk_menu_item_new_with_mnemonic(_("_LaTeX"));
- gtk_container_add(GTK_CONTAINER(geany->main_widgets->tools_menu), menu_latex);
- g_signal_connect((gpointer) menu_latex, "activate", G_CALLBACK(update_menu_items), NULL);
-
- menu_latex_menu = gtk_menu_new();
- gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_latex), menu_latex_menu);
-
- menu_latex_wizzard = gtk_menu_item_new_with_mnemonic(_("LaTeX-_Wizard"));
- gtk_container_add(GTK_CONTAINER(menu_latex_menu), menu_latex_wizzard);
- gtk_tooltips_set_tip(tooltips, menu_latex_wizzard,
- _("Starts a Wizard to create easily LaTeX-dokuments"), NULL);
-
- g_signal_connect((gpointer) menu_latex_wizzard, "activate",
- G_CALLBACK(wizard_activated), NULL);
-
- menu_latex_menu_special_char = gtk_menu_item_new_with_mnemonic(_("Insert _Special Character"));
- gtk_tooltips_set_tip(tooltips, menu_latex_menu_special_char,
- _("Helps to use some not very common letters and signs"), NULL);
- gtk_container_add(GTK_CONTAINER(menu_latex_menu), menu_latex_menu_special_char);
-
- menu_latex_menu_special_char_submenu = gtk_menu_new();
- gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_latex_menu_special_char), menu_latex_menu_special_char_submenu);
- sub_menu_init(menu_latex_menu_special_char_submenu, char_array, cat_names, char_insert_activated);
-
- menu_latex_ref = gtk_menu_item_new_with_mnemonic(_("Insert _Reference"));
- gtk_tooltips_set_tip(tooltips, menu_latex_ref,
- _("Inserting references to the document"), NULL);
- gtk_container_add(GTK_CONTAINER(menu_latex_menu), menu_latex_ref);
- g_signal_connect((gpointer) menu_latex_ref, "activate", G_CALLBACK(insert_ref_activated), NULL);
-
- menu_latex_label = gtk_menu_item_new_with_mnemonic(_("Insert _Label"));
- gtk_tooltips_set_tip(tooltips, menu_latex_label,
- _("Helps at inserting labels to a docuemnt"), NULL);
- gtk_container_add(GTK_CONTAINER(menu_latex_menu), menu_latex_label);
- g_signal_connect((gpointer) menu_latex_label, "activate", G_CALLBACK(insert_label_activated), NULL);
-
- /* init keybindins */
- p_keybindings->set_item(plugin_key_group, LATEX_WIZZARD_KB, kbwizard,
- 0, 0, "run_latex_wizard", kblabel_wizard, menu_latex_wizzard);
- p_keybindings->set_item(plugin_key_group, LATEX_INSERT_LABEL_KB, kblabel_insert,
- 0, 0, "insert_latex_label", kblabel_insert_label, menu_latex_wizzard);
- p_keybindings->set_item(plugin_key_group, LATEX_INSERT_REF_KB, kbref_insert,
- 0, 0, "insert_latex_ref", kblabel_insert_ref, menu_latex_wizzard);
- gtk_widget_show_all(menu_latex);
- plugin_fields->menu_item = menu_latex;
-}
-
-void
-plugin_cleanup()
-{
- gtk_widget_destroy(plugin_fields->menu_item);
-}
Deleted: trunk/geanylatex/latexencodings.c
===================================================================
--- trunk/geanylatex/latexencodings.c 2008-08-31 23:08:49 UTC (rev 149)
+++ trunk/geanylatex/latexencodings.c 2008-08-31 23:29:18 UTC (rev 150)
@@ -1,55 +0,0 @@
-/*
- * latexencodings.h
- *
- * Copyright 2008 Frank Lanitz <frank(at)frank(dot)uvena(dot)de>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA 02110-1301, USA.
- */
-
-#include <gtk/gtk.h>
-#include "support.h"
-#include "encodings.h"
-#include "latexencodings.h"
-
-LaTeXEncodings latex_encodings[LATEX_ENCODINGS_MAX];
-
-#define fill(Charset, Name, LaTeX, GeanyEnc) \
- latex_encodings[Charset].charset = Charset; \
- latex_encodings[Charset].name = Name; \
- latex_encodings[Charset].latex = LaTeX; \
- latex_encodings[Charset].geany_enc = GeanyEnc;
-
-void init_encodings_latex(void)
-{
- fill(LATEX_ENCODING_UTF_8, _("UTF-8"), "utf8x", GEANY_ENCODING_UTF_8);
- fill(LATEX_ENCODING_ASCII, _("US-ASCII"), "ascii", GEANY_ENCODING_ISO_8859_1);
- fill(LATEX_ENCODING_ISO_8859_1, _("ISO-8859-1 (Latin-1)"), "latin1",
- GEANY_ENCODING_ISO_8859_1);
- fill(LATEX_ENCODING_ISO_8859_2, _("ISO-8859-2 (Latin-2)"), "latin2",
- GEANY_ENCODING_ISO_8859_2);
- fill(LATEX_ENCODING_ISO_8859_3, _("ISO-8859-3 (Latin-3)"), "latin3",
- GEANY_ENCODING_ISO_8859_3);
- fill(LATEX_ENCODING_ISO_8859_4, _("ISO-8859-4 (Latin-4)"), "latin4",
- GEANY_ENCODING_ISO_8859_4);
- fill(LATEX_ENCODING_ISO_8859_5, _("ISO-8859-5 (Latin-5)"), "latin5",
- GEANY_ENCODING_ISO_8859_5);
- fill(LATEX_ENCODING_ISO_8859_9, _("ISO-8859-9 (Latin-9)"), "latin9",
- GEANY_ENCODING_ISO_8859_9);
- fill(LATEX_ENCODING_ISO_8859_10, _("ISO-8859-10 (Latin-10)"), "latin10", GEANY_ENCODING_ISO_8859_10);
- fill(LATEX_ENCODING_IBM_850, _("IBM 850 code page"), "cp850", GEANY_ENCODING_IBM_850);
- fill(LATEX_ENCODING_IBM_852, _("IBM 852 code page"), "cp852", GEANY_ENCODING_IBM_852);
- fill(LATEX_ENCODING_NONE, _("Misc"), NULL, GEANY_ENCODING_NONE);
-}
Deleted: trunk/geanylatex/latexencodings.h
===================================================================
--- trunk/geanylatex/latexencodings.h 2008-08-31 23:08:49 UTC (rev 149)
+++ trunk/geanylatex/latexencodings.h 2008-08-31 23:29:18 UTC (rev 150)
@@ -1,56 +0,0 @@
-/*
- * latexencodings.h
- *
- * Copyright 2008 Frank Lanitz <frank(at)frank(dot)uvena(dot)de>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA 02110-1301, USA.
- */
-
-#ifndef LATEXEXCODINGS_H
-#define LATEXEXCODINGS_H
-
-
-typedef enum
-{
- LATEX_ENCODING_UTF_8 = 0,
- LATEX_ENCODING_ASCII,
- LATEX_ENCODING_ISO_8859_1,
- LATEX_ENCODING_ISO_8859_2,
- LATEX_ENCODING_ISO_8859_3,
- LATEX_ENCODING_ISO_8859_4,
- LATEX_ENCODING_ISO_8859_5,
- LATEX_ENCODING_ISO_8859_9,
- LATEX_ENCODING_ISO_8859_10,
- LATEX_ENCODING_IBM_850,
- LATEX_ENCODING_IBM_852,
- LATEX_ENCODING_NONE,
- LATEX_ENCODINGS_MAX
-} LaTeXEncodingIndex;
-
-
-typedef struct
-{
- LaTeXEncodingIndex charset;
- gchar *name;
- gchar *latex;
- gint geany_enc;
-} LaTeXEncodings;
-
-extern LaTeXEncodings latex_encodings[LATEX_ENCODINGS_MAX];
-
-void init_encodings_latex(void);
-
-#endif
Deleted: trunk/geanylatex/letters.c
===================================================================
--- trunk/geanylatex/letters.c 2008-08-31 23:08:49 UTC (rev 149)
+++ trunk/geanylatex/letters.c 2008-08-31 23:29:18 UTC (rev 150)
@@ -1,222 +0,0 @@
-/*
- * letters.h
- *
- * Copyright 2008 Frank Lanitz <frank(at)frank(dot)uvena(dot)de>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA 02110-1301, USA.
- */
-
-#include <gtk/gtk.h>
-#include "support.h"
-#include "datatypes.h"
-#include "letters.h"
-
-enum
-{
- GREEK_LETTERS = 0,
- GERMAN_LETTERS,
- MISC_LETTERS,
- ARROW_CHAR,
- RELATIONAL_SIGNS,
- BINARY_OPERATIONS,
- LETTERS_END
-};
-
-CategoryName cat_names[] = {
- { GREEK_LETTERS, N_("Greek letters"), TRUE},
- { GERMAN_LETTERS, N_("German umlauts"), TRUE},
- { MISC_LETTERS, N_("Misc"), FALSE},
- { ARROW_CHAR, N_("Arrow characters"), FALSE},
- { RELATIONAL_SIGNS, N_("Relational"), FALSE},
- { BINARY_OPERATIONS, N_("Binary operation"), FALSE},
- { 0, NULL, FALSE}
-};
-
-/* Entries need to be sorted by categorie (1st field) or some random
- * features will occure.
- * AAABBBCCC is valid
- * AAACCCBBB is valid
- * ACABCBACB is _not_ valid and will course trouble */
-SubMenuTemplate char_array[] = {
- // Greek characters
- {GREEK_LETTERS, "Α", "\\Alpha" },
- {GREEK_LETTERS, "α", "\\alpha" },
- {GREEK_LETTERS, "Β", "\\Beta" },
- {GREEK_LETTERS, "β", "\\beta" },
- {GREEK_LETTERS, "Γ", "\\Gamma" },
- {GREEK_LETTERS, "γ", "\\gamma" },
- {GREEK_LETTERS, "Δ", "\\Delta" },
- {GREEK_LETTERS, "δ", "\\Delta" },
- {GREEK_LETTERS, "δ", "\\delta" },
- {GREEK_LETTERS, "Ε", "\\Epsilon" },
- {GREEK_LETTERS, "ε", "\\epsilon" },
- {GREEK_LETTERS, "Ζ", "\\Zeta" },
- {GREEK_LETTERS, "ζ", "\\zeta" },
- {GREEK_LETTERS, "Η", "\\Eta" },
- {GREEK_LETTERS, "η", "\\eta" },
- {GREEK_LETTERS, "Θ", "\\Theta" },
- {GREEK_LETTERS, "θ", "\\theta" },
- {GREEK_LETTERS, "Ι", "\\Iota" },
- {GREEK_LETTERS, "ι", "\\iota" },
- {GREEK_LETTERS, "Κ", "\\Kappa" },
- {GREEK_LETTERS, "κ", "\\kappa" },
- {GREEK_LETTERS, "Λ", "\\Lambda" },
- {GREEK_LETTERS, "λ", "\\lambda" },
- {GREEK_LETTERS, "Μ", "\\Mu" },
- {GREEK_LETTERS, "μ", "\\mu" },
- {GREEK_LETTERS, "Ν", "\\Nu" },
- {GREEK_LETTERS, "ν", "\\nu" },
- {GREEK_LETTERS, "Ξ", "\\Xi" },
- {GREEK_LETTERS, "ξ", "\\xi" },
- {GREEK_LETTERS, "Ο", "\\Omicron" },
- {GREEK_LETTERS, "ο", "\\omicron" },
- {GREEK_LETTERS, "Π", "\\Pi" },
- {GREEK_LETTERS, "π", "\\pi" },
- {GREEK_LETTERS, "Ρ", "\\Rho" },
- {GREEK_LETTERS, "ρ", "\\rho" },
- {GREEK_LETTERS, "Σ", "\\Sigma" },
- {GREEK_LETTERS, "ς", "\\sigmaf" },
- {GREEK_LETTERS, "σ", "\\sigma" },
- {GREEK_LETTERS, "Τ", "\\Tau" },
- {GREEK_LETTERS, "τ", "\\tau" },
- {GREEK_LETTERS, "Υ", "\\Upsilon" },
- {GREEK_LETTERS, "υ", "\\upsilon" },
- {GREEK_LETTERS, "Φ", "\\Phi" },
- {GREEK_LETTERS, "φ", "\\phi" },
- {GREEK_LETTERS, "Χ", "\\Chi" },
- {GREEK_LETTERS, "χ", "\\chi" },
- {GREEK_LETTERS, "Ψ", "\\Psi" },
- {GREEK_LETTERS, "ψ", "\\psi" },
- {GREEK_LETTERS, "Ω", "\\Omega" },
- {GREEK_LETTERS, "ω", "\\omega" },
- {GREEK_LETTERS, "ϑ", "\\thetasym" },
- {GREEK_LETTERS, "ϒ", "\\upsih" },
- {GREEK_LETTERS, "ϖ", "\\piv" },
-
- // German Umlaute
- {GERMAN_LETTERS, "ä","\"a"},
- {GERMAN_LETTERS, "ü","\"u"},
- {GERMAN_LETTERS, "ö","\"o"},
- {GERMAN_LETTERS, "ß","\"s"},
-
- //// Czech characters
- //{"ě","\\v{e}"},
- //{"š","\\v{s}"},
- //{"č","\\v[c}"},
- //{"ř","\\v{r}"},
- //{"ž","\\v{z}"},
- //{"ý",""},
- //{"á",""},
- //{"í",""},
- //{"é",""},
- //{"Ě","\\v{E}"},
- //{"Š","\\v{S}"},
- //{"Č","\\v{C}"},
- //{"Ř","\\v{R}"},
- //{"Ž","\\v{Z}"},
- //{"Ý",""},
- //{"Á",""},
- //{"Í",""},
- //{"É",""},
- //// Misc
- {MISC_LETTERS, "\\","\\backslash"},
- {MISC_LETTERS, "€", "\\euro"},
- {ARROW_CHAR, "←", "\\leftarrow" },
- {ARROW_CHAR, "↑", "\\uparrow" },
- {ARROW_CHAR, "→", "\\rightarrow" },
- {ARROW_CHAR, "↓", "\\downarrow" },
- {ARROW_CHAR, "↔", "\\leftrightarrow" },
- {ARROW_CHAR, "⇐", "\\Leftarrow" },
- {ARROW_CHAR, "⇑", "\\Uparrow" },
- {ARROW_CHAR, "⇒", "\\Rightarrow" },
- {ARROW_CHAR, "⇓", "\\Downarrow" },
- {ARROW_CHAR, "⇔", "\\Leftrightarrow" },
- {RELATIONAL_SIGNS, "\u2264", "\\leq"},
- {RELATIONAL_SIGNS, "\u2265", "\\geq"},
- {RELATIONAL_SIGNS, "\u220E", "\\qed"},
- {RELATIONAL_SIGNS, "\u2261", "\\equiv"},
- {RELATIONAL_SIGNS, "\u22A7", "\\models"},
- {RELATIONAL_SIGNS, "\u227A", "\\prec"},
- {RELATIONAL_SIGNS, "\u227B", "\\succ"},
- {RELATIONAL_SIGNS, "\u223C", "\\sim"},
- {RELATIONAL_SIGNS, "\u27C2", "\\perp"},
- {RELATIONAL_SIGNS, "\u2AAF", "\\preceq"},
- {RELATIONAL_SIGNS, "\u2AB0", "\\succeq"},
- {RELATIONAL_SIGNS, "\u2243", "\\simeq"},
- {RELATIONAL_SIGNS, "\u2223", "\\mid"},
- {RELATIONAL_SIGNS, "\u226A", "\\ll"},
- {RELATIONAL_SIGNS, "\u226B", "\\gg"},
- {RELATIONAL_SIGNS, "\u224D", "\\asymp"},
- {RELATIONAL_SIGNS, "\u2225", "\\parallel"},
- {RELATIONAL_SIGNS, "\u2282", "\\subset"},
- {RELATIONAL_SIGNS, "\u2283", "\\supset"},
- {RELATIONAL_SIGNS, "\u2248", "\\approx"},
- {RELATIONAL_SIGNS, "\u22C8", "\\bowtie"},
- {RELATIONAL_SIGNS, "\u2286", "\\subseteq"},
- {RELATIONAL_SIGNS, "\u2287", "\\supseteq"},
- {RELATIONAL_SIGNS, "\u2245", "\\cong"},
- {RELATIONAL_SIGNS, "\u2A1D", "\\Join"},
- {RELATIONAL_SIGNS, "\u228F", "\\sqsubset"},
- {RELATIONAL_SIGNS, "\u2290", "\\sqsupset"},
- {RELATIONAL_SIGNS, "\u2260", "\\neq"},
- {RELATIONAL_SIGNS, "\u2323", "\\smile"},
- {RELATIONAL_SIGNS, "\u2291", "\\sqsubseteq"},
- {RELATIONAL_SIGNS, "\u2292", "\\sqsupseteq"},
- {RELATIONAL_SIGNS, "\u2250", "\\doteq"},
- {RELATIONAL_SIGNS, "\u2322", "\\frown"},
- {RELATIONAL_SIGNS, "\u2208", "\\in"},
- {RELATIONAL_SIGNS, "\u220B", "\\ni"},
- {RELATIONAL_SIGNS, "\u221D", "\\propto"},
- {RELATIONAL_SIGNS, "\u22A2", "\\vdash"},
- {RELATIONAL_SIGNS, "\u22A3", "\\dashv"},
- {BINARY_OPERATIONS, "\u00B1", "\\pm"},
- {BINARY_OPERATIONS, "\u2213", "\\mp"},
- {BINARY_OPERATIONS, "\u00D7", "\\times"},
- {BINARY_OPERATIONS, "\u00F7", "\\div"},
- {BINARY_OPERATIONS, "\u2217", "\\ast"},
- {BINARY_OPERATIONS, "\u22C6", "\\star"},
- {BINARY_OPERATIONS, "\u2218", "\\circ"},
- {BINARY_OPERATIONS, "\u2219", "\\bullet"},
- {BINARY_OPERATIONS, "\u22C5", "\\cdot"},
- {BINARY_OPERATIONS, "\u2229", "\\cap"},
- {BINARY_OPERATIONS, "\u222A", "\\cup"},
- {BINARY_OPERATIONS, "\u228E", "\\uplus"},
- {BINARY_OPERATIONS, "\u2293", "\\sqcap"},
- {BINARY_OPERATIONS, "\u2228", "\\vee"},
- {BINARY_OPERATIONS, "\u2227", "\\wedge"},
- {BINARY_OPERATIONS, "\u2216", "\\setminus"},
- {BINARY_OPERATIONS, "\u2240", "\\wr"},
- {BINARY_OPERATIONS, "\u22C4", "\\diamond"},
- {BINARY_OPERATIONS, "\u25B3", "\\bigtriangleup"},
- {BINARY_OPERATIONS, "\u25BD", "\\bigtriangledown"},
- {BINARY_OPERATIONS, "\u25C1", "\\triangleleft"},
- {BINARY_OPERATIONS, "\u25B7", "\\triangleright"},
- {BINARY_OPERATIONS, "", "\\lhd"},
- {BINARY_OPERATIONS, "", "\\rhd"},
- {BINARY_OPERATIONS, "", "\\unlhd"},
- {BINARY_OPERATIONS, "", "\\unrhd"},
- {BINARY_OPERATIONS, "\u2295", "\\oplus"},
- {BINARY_OPERATIONS, "\u2296", "\\ominus"},
- {BINARY_OPERATIONS, "\u2297", "\\otimes"},
- {BINARY_OPERATIONS, "\u2205", "\\oslash"},
- {BINARY_OPERATIONS, "\u2299", "\\odot"},
- {BINARY_OPERATIONS, "\u25CB", "\\bigcirc"},
- {BINARY_OPERATIONS, "\u2020", "\\dagger"},
- {BINARY_OPERATIONS, "\u2021", "\\ddagger"},
- {BINARY_OPERATIONS, "\u2A3F", "\\amalg"},
- {0, NULL, NULL},
-
-};
Deleted: trunk/geanylatex/letters.h
===================================================================
--- trunk/geanylatex/letters.h 2008-08-31 23:08:49 UTC (rev 149)
+++ trunk/geanylatex/letters.h 2008-08-31 23:29:18 UTC (rev 150)
@@ -1,32 +0,0 @@
-/*
- * letters.h
- *
- * Copyright 2008 Frank Lanitz <frank(at)frank(dot)uvena(dot)de>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA 02110-1301, USA.
- */
-
-
-#ifndef LETTERS_H
-#define LETTER_H
-
-#include "datatypes.h"
-
-extern SubMenuTemplate char_array[];
-
-extern CategoryName cat_names[];
-
-#endif
Modified: trunk/geanylatex/makefile.win32
===================================================================
--- trunk/geanylatex/makefile.win32 2008-08-31 23:08:49 UTC (rev 149)
+++ trunk/geanylatex/makefile.win32 2008-08-31 23:29:18 UTC (rev 150)
@@ -1,61 +1,60 @@
-# Running make creates config.h then calls the sub makefiles.
-#
-# Other targets are:
-# deps: delete the dependencies so they are regenerated on next make
-# clean: clean all generated files
-#
-# localwin32.mk is an optional file to override make variables.
-# Use localwin32.mk instead of editing variables as it is included in sub
-# makefiles.
-# localwin32.mk to set PREFIX instead of the default C:\libs
-# For MSYS use localwin32.mk to set CP and RM.
-# By default this will work in a Windows command prompt.
-
-CC = gcc
-CP = copy
-RM = del
-PREFIX = C:\libs
-GEANY_SRC = c:\geany_svn
-TARGET = geanylatex.dll
-.SUFFIXES: .c .o
--include localwin32.mk
-
-OBJS = geanylatex.o
-INCLUDEDIRS= -I.. \
- -I$(GEANY_SRC) \
- -I$(GEANY_SRC)\src \
- -I$(GEANY_SRC)\plugins \
- -I$(GEANY_SRC)\tagmanager\include \
- -I$(GEANY_SRC)\scintilla\include \
- -I$(PREFIX)/include/gtk-2.0 \
- -I$(PREFIX)/lib/gtk-2.0/include \
- -I$(PREFIX)/include/atk-1.0 \
- -I$(PREFIX)/include/pango-1.0 \
- -I$(PREFIX)/include/cairo \
- -I$(PREFIX)/include/glib-2.0 \
- -I$(PREFIX)/lib/glib-2.0/include \
- -I$(PREFIX)/include/gettext \
- -I$(PREFIX)/include
-ALL_GTK_LIBS= \
- -L"$(PREFIX)/lib" \
- -lgtk-win32-2.0 -lgdk-win32-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lpangowin32-1.0 -lgdi32 \
- -lpango-1.0 -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lglib-2.0 -lintl -liconv
-CCFLAGS=-Wall -O2 -mms-bitfields -DHAVE_CONFIG_H
-
-
-all: $(TARGET)
-
-deps.mak:
- $(CC) -MM $(CCFLAGS) $(INCLUDEDIRS) *.c >deps.mak
-
-.c.o:
- $(CC) $(CCFLAGS) $(INCLUDEDIRS) -c $<
-
-$(TARGET): $(OBJS) deps.mak
- $(CC) -shared $(OBJS) $(ALL_GTK_LIBS) -o $(TARGET)
-
-clean:
- -$(RM) deps.mak *.o *.dll
-
-# Generate header dependencies with "make deps.mak"
-include deps.mak
+#
+# localwin32.mk is an optional file to override make variables.
+# Use localwin32.mk instead of editing variables as it is included in sub
+# makefiles.
+# localwin32.mk to set PREFIX instead of the default C:\libs
+# For MSYS use localwin32.mk to set CP and RM.
+# By default this will work in a Windows command prompt.
+
+CC = gcc
+CP = copy
+RM = del
+PREFIX = C:\libs
+
+GEANY_SRC = c:\geany_svn
+TARGET = geanylatex.dll
+.SUFFIXES: .c .o
+-include localwin32.mk
+
+
+OBJS = geanylatex.o
+INCLUDEDIRS= -I. \
+ -I$(GEANY_SRC) \
+ -I$(GEANY_SRC)\src \
+ -I$(GEANY_SRC)\plugins \
+ -I$(GEANY_SRC)\tagmanager\include \
+ -I$(GEANY_SRC)\scintilla\include \
+ -I$(PREFIX)/include/gtk-2.0 \
+ -I$(PREFIX)/lib/gtk-2.0/include \
+ -I$(PREFIX)/include/atk-1.0 \
+ -I$(PREFIX)/include/pango-1.0 \
+ -I$(PREFIX)/include/cairo \
+ -I$(PREFIX)/include/glib-2.0 \
+ -I$(PREFIX)/lib/glib-2.0/include \
+ -I$(PREFIX)/include/gettext \
+ -I$(PREFIX)/include \
+ -I$(ASPELL_PREFIX)/interfaces/cc
+
+ALL_GTK_LIBS= \
+ -L"$(PREFIX)/lib" \
+ -lgtk-win32-2.0 -lgdk-win32-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lpangowin32-1.0 -lgdi32 \
+ -lpango-1.0 -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lglib-2.0 -lintl -liconv
+CCFLAGS=-Wall -O2 -mms-bitfields -DHAVE_CONFIG_H
+
+
+all: $(TARGET)
+
+deps.mak:
+ $(CC) -MM $(CCFLAGS) $(INCLUDEDIRS) src/*.c >deps.mak
+
+spellcheck.o:
+ $(CC) $(CCFLAGS) $(INCLUDEDIRS) -c $<
+
+$(TARGET): deps.mak $(OBJS)
+ $(CC) -shared $(OBJS) $(ALL_GTK_LIBS) -o $(TARGET)
+
+clean:
+ -$(RM) deps.mak *.o *.dll
+
+# Generate header dependencies with "make deps.mak"
+include deps.mak
Added: trunk/geanylatex/po/POTFILES.in
===================================================================
--- trunk/geanylatex/po/POTFILES.in (rev 0)
+++ trunk/geanylatex/po/POTFILES.in 2008-08-31 23:29:18 UTC (rev 150)
@@ -0,0 +1,3 @@
+src/geanylatex.c
+src/latexencodings.c
+src/letters.c
Added: trunk/geanylatex/po/geanylatex.pot
===================================================================
--- trunk/geanylatex/po/geanylatex.pot (rev 0)
+++ trunk/geanylatex/po/geanylatex.pot 2008-08-31 23:29:18 UTC (rev 150)
@@ -0,0 +1,194 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-09-01 01:20+0200\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: src/geanylatex.c:51
+msgid "LaTeX"
+msgstr ""
+
+#: src/geanylatex.c:51
+msgid "Plugin to make Geany better support LaTeX"
+msgstr ""
+
+#: src/geanylatex.c:129
+msgid "Insert label"
+msgstr ""
+
+#: src/geanylatex.c:142
+msgid "Label name:"
+msgstr ""
+
+#: src/geanylatex.c:173
+msgid "Insert reference"
+msgstr ""
+
+#: src/geanylatex.c:186
+msgid "Ref name:"
+msgstr ""
+
+#: src/geanylatex.c:196
+msgid "standard reference"
+msgstr ""
+
+#: src/geanylatex.c:201
+msgid "page reference"
+msgstr ""
+
+#: src/geanylatex.c:366
+msgid "More"
+msgstr ""
+
+#. Documentclass
+#: src/geanylatex.c:459
+msgid "Documentclass:"
+msgstr ""
+
+#: src/geanylatex.c:462
+msgid "Chooce the kind of document you want to write"
+msgstr ""
+
+#. Encoding
+#: src/geanylatex.c:475
+msgid "Encoding:"
+msgstr ""
+
+#: src/geanylatex.c:479
+msgid "Set the encoding for your new document"
+msgstr ""
+
+#. Scriptsize
+#: src/geanylatex.c:494
+msgid "Scriptsize:"
+msgstr ""
+
+#: src/geanylatex.c:497
+msgid "Set the default script size of your new document"
+msgstr ""
+
+#. Author
+#: src/geanylatex.c:510
+msgid "Author:"
+msgstr ""
+
+#: src/geanylatex.c:513
+msgid ""
+"Sets the entry of \\author command. In most cases here should stay your name"
+msgstr ""
+
+#. Date
+#: src/geanylatex.c:524
+msgid "Date:"
+msgstr ""
+
+#: src/geanylatex.c:527
+msgid ""
+"Sets the entry of the \\date command inside header of your newly created "
+"LaTeX-document. Keeping it at \\today is a good decision if you don't need "
+"any fixed date."
+msgstr ""
+
+#. Title of the new document
+#: src/geanylatex.c:534
+msgid "Title:"
+msgstr ""
+
+#: src/geanylatex.c:536
+msgid "Sets the title of your newly document."
+msgstr ""
+
+#. Papersize
+#: src/geanylatex.c:543
+msgid "Paper size:"
+msgstr ""
+
+#: src/geanylatex.c:546
+msgid "Chooce the paper format for the new created document"
+msgstr ""
+
+#. Buidling the wizard-dialog and showing it
+#: src/geanylatex.c:561
+msgid "LaTeX-Wizard"
+msgstr ""
+
+#: src/geanylatex.c:571
+msgid "Use KOMA-script classes if possible"
+msgstr ""
+
+#: src/geanylatex.c:574
+msgid ""
+"Uses the KOMA-script classes by Markus Kohm.\n"
+"Keep in mind: To compile your document these classes have to been installed "
+"before."
+msgstr ""
+
+#: src/geanylatex.c:580
+msgid "Use draft mode"
+msgstr ""
+
+#: src/geanylatex.c:582
+msgid ""
+"Set the draft flag inside new created documents to get documents with a "
+"number of debugging helpers"
+msgstr ""
+
+#: src/geanylatex.c:807
+msgid "Insert \\label"
+msgstr ""
+
+#: src/geanylatex.c:808
+msgid "Insert \\ref"
+msgstr ""
+
+#: src/geanylatex.c:809
+msgid "Run LaTeX-Wizard"
+msgstr ""
+
+#: src/geanylatex.c:815
+msgid "_LaTeX"
+msgstr ""
+
+#: src/geanylatex.c:822
+msgid "LaTeX-_Wizard"
+msgstr ""
+
+#: src/geanylatex.c:825
+msgid "Starts a Wizard to create easily LaTeX-dokuments"
+msgstr ""
+
+#: src/geanylatex.c:830
+msgid "Insert _Special Character"
+msgstr ""
+
+#: src/geanylatex.c:832
+msgid "Helps to use some not very common letters and signs"
+msgstr ""
+
+#: src/geanylatex.c:839
+msgid "Insert _Reference"
+msgstr ""
+
+#: src/geanylatex.c:841
+msgid "Inserting references to the document"
+msgstr ""
+
+#: src/geanylatex.c:845
+msgid "Insert _Label"
+msgstr ""
+
+#: src/geanylatex.c:847
+msgid "Helps at inserting labels to a docuemnt"
+msgstr ""
Added: trunk/geanylatex/src/Makefile.am
===================================================================
--- trunk/geanylatex/src/Makefile.am (rev 0)
+++ trunk/geanylatex/src/Makefile.am 2008-08-31 23:29:18 UTC (rev 150)
@@ -0,0 +1,6 @@
+lib_LTLIBRARIES = geanylatex.la
+geanylatex_la_SOURCES = geanylatex.c datatypes.h latexencodings.c latexencodings.h letters.c letters.h
+geanylatex_la_LDFLAGS = -module -avoid-version
+geanylatex_la_LIBADD = @GEANY_LIBS@ $(INTLLIBS)
+
+AM_CFLAGS = @GEANY_CFLAGS@ -DLOCALEDIR=\""$(localedir)"\"
Copied: trunk/geanylatex/src/datatypes.h (from rev 143, trunk/geanylatex/datatypes.h)
===================================================================
--- trunk/geanylatex/src/datatypes.h (rev 0)
+++ trunk/geanylatex/src/datatypes.h 2008-08-31 23:29:18 UTC (rev 150)
@@ -0,0 +1,40 @@
+/*
+ * datatypes.h
+ *
+ * Copyright 2008 Frank Lanitz <frank(at)frank(dot)uvena(dot)de>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301, USA.
+ */
+
+#ifndef DATATYPES_H
+#define DATATYPES_H
+
+typedef struct
+{
+ gint cat;
+ gchar *label;
+ gchar *latex;
+} SubMenuTemplate;
+
+
+typedef struct
+{
+ gint cat;
+ gchar *label;
+ gboolean sorted;
+} CategoryName;
+
+#endif
Copied: trunk/geanylatex/src/geanylatex.c (from rev 143, trunk/geanylatex/geanylatex.c)
===================================================================
--- trunk/geanylatex/src/geanylatex.c (rev 0)
+++ trunk/geanylatex/src/geanylatex.c 2008-08-31 23:29:18 UTC (rev 150)
@@ -0,0 +1,866 @@
+/*
+ * geanylatex.c - Plugin to let Geany better work together with LaTeX
+ *
+ * Copyright 2007-2008 Frank Lanitz <frank(at)frank(dot)uvena(dot)de>
+ * For long list of friendly supporters please have a look at THANKS.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+/* LaTeX plugin */
+/* This plugin improves the work with LaTeX and Geany.*/
+
+#include "geany.h"
+#include "support.h"
+#include "plugindata.h"
+#include "document.h"
+#include "editor.h"
+#include "filetypes.h"
+#include "templates.h"
+#include "utils.h"
+#include "ui_utils.h"
+#include "keybindings.h"
+#include "prefs.h"
+#include "pluginmacros.h"
+
+#include "datatypes.h"
+#include "letters.h"
+#include "latexencodings.h"
+
+typedef void (*SubMenuCallback) (G_GNUC_UNUSED GtkMenuItem * menuitem, G_GNUC_UNUSED gpointer gdata);
+
+PluginInfo *plugin_info;
+PluginFields *plugin_fields;
+GeanyData *geany_data;
+GeanyFunctions *geany_functions;
+
+
+PLUGIN_VERSION_CHECK(78)
+PLUGIN_SET_INFO(_("LaTeX"), _("Plugin to make Geany better support LaTeX"), "0.2-dev",
+ "Frank Lanitz <frank at frank.uvena.de>")
+
+GtkWidget *menu_latex = NULL;
+GtkWidget *menu_latex_menu = NULL;
+GtkWidget *menu_latex_wizzard = NULL;
+GtkWidget *menu_latex_menu_special_char = NULL;
+GtkWidget *menu_latex_menu_special_char_submenu = NULL;
+GtkWidget *menu_latex_ref = NULL;
+GtkWidget *menu_latex_label = NULL;
+
+/* Doing some basic keybinding stuff */
+enum
+{
+ LATEX_WIZZARD_KB,
+ LATEX_INSERT_LABEL_KB,
+ LATEX_INSERT_REF_KB,
+ COUNT_KB
+};
+
+PLUGIN_KEY_GROUP(geanylatex, COUNT_KB)
+
+
+#define TEMPLATE_LATEX "\
+\\documentclass[{CLASSOPTION}]{{DOCUMENTCLASS}}\n\
+{ENCODING}\
+{TITLE}\
+{AUTHOR}\
+{DATE}\
+\\begin{document}\n\
+\n\
+\\end{document}\n"
+
+#define create_sub_menu(base_menu, menu, item, title) \
+ (menu) = gtk_menu_new(); \
+ (item) = gtk_menu_item_new_with_mnemonic((title)); \
+ gtk_menu_item_set_submenu(GTK_MENU_ITEM((item)), (menu)); \
+ gtk_container_add(GTK_CONTAINER(base_menu), (item)); \
+ gtk_widget_show((item));
+
+#define MAX_MENU_ENTRIES 20
+
+static void
+insert_string(gchar *string)
+{
+ GeanyDocument *doc = NULL;
+
+ doc = p_document->get_current();
+
+ if (doc != NULL)
+ {
+ gint pos = p_sci->get_current_position(doc->editor->sci);
+ p_sci->insert_text(doc->editor->sci, pos, string);
+ }
+}
+
+
+inline gchar*
+get_latex_command(gint tab_index)
+{
+ return char_array[tab_index].latex;
+}
+
+static void
+char_insert_activated(G_GNUC_UNUSED GtkMenuItem * menuitem, G_GNUC_UNUSED gpointer gdata)
+{
+ insert_string(get_latex_command(GPOINTER_TO_INT(gdata)));
+}
+
+static void
+insert_label_activated(G_GNUC_UNUSED GtkMenuItem * menuitem, G_GNUC_UNUSED gpointer gdata)
+{
+ GtkWidget *dialog = NULL;
+ GtkWidget *vbox = NULL;
+ GtkWidget *label = NULL;
+ GtkWidget *textbox_label = NULL;
+ GtkWidget *table = NULL;
+
+ dialog = gtk_dialog_new_with_buttons(_("Insert label"),
+ GTK_WINDOW(geany->main_widgets->window),
+ GTK_DIALOG_DESTROY_WITH_PARENT, GTK_STOCK_CANCEL,
+ GTK_RESPONSE_CANCEL, GTK_STOCK_OK, GTK_RESPONSE_ACCEPT,
+ NULL);
+ vbox = p_ui->dialog_vbox_new(GTK_DIALOG(dialog));
+ gtk_widget_set_name(dialog, "GeanyDialog");
+ gtk_box_set_spacing(GTK_BOX(vbox), 10);
+
+ table = gtk_table_new(1, 2, FALSE);
+ gtk_table_set_col_spacings(GTK_TABLE(table), 6);
+ gtk_table_set_row_spacings(GTK_TABLE(table), 6);
+
+ label = gtk_label_new(_("Label name:"));
+ textbox_label = gtk_entry_new();
+
+ gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
+
+ gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 0, 1);
+ gtk_table_attach_defaults(GTK_TABLE(table), textbox_label, 1, 2, 0, 1);
+ gtk_container_add(GTK_CONTAINER(vbox), table);
+
+ gtk_widget_show_all(vbox);
+
+ if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT)
+ {
+ gchar *label_str = NULL;
+ label_str = g_strconcat("\\label{", g_strdup(gtk_entry_get_text(GTK_ENTRY(textbox_label))), "}", NULL);
+ insert_string(label_str);
+ }
+ gtk_widget_destroy(dialog);
+}
+
+static void
+insert_ref_activated(G_GNUC_UNUSED GtkMenuItem * menuitem, G_GNUC_UNUSED gpointer gdata)
+{
+ GtkWidget *dialog;
+ GtkWidget *vbox = NULL;
+ GtkWidget *label_ref = NULL;
+ GtkWidget *textbox_ref = NULL;
+ GtkWidget *table = NULL;
+ GtkWidget *radio1 = NULL;
+ GtkWidget *radio2 = NULL;
+
+ dialog = gtk_dialog_new_with_buttons(_("Insert reference"),
+ GTK_WINDOW(geany->main_widgets->window),
+ GTK_DIALOG_DESTROY_WITH_PARENT, GTK_STOCK_CANCEL,
+ GTK_RESPONSE_CANCEL, GTK_STOCK_OK, GTK_RESPONSE_ACCEPT,
+ NULL);
+ vbox = p_ui->dialog_vbox_new(GTK_DIALOG(dialog));
+ gtk_widget_set_name(dialog, "GeanyDialog");
+ gtk_box_set_spacing(GTK_BOX(vbox), 10);
+
+ table = gtk_table_new(1, 2, FALSE);
+ gtk_table_set_col_spacings(GTK_TABLE(table), 6);
+ gtk_table_set_row_spacings(GTK_TABLE(table), 6);
+
+ label_ref = gtk_label_new(_("Ref name:"));
+ textbox_ref = gtk_entry_new();
+
+ gtk_misc_set_alignment(GTK_MISC(label_ref), 0, 0.5);
+
+ gtk_table_attach_defaults(GTK_TABLE(table), label_ref, 0, 1, 0, 1);
+ gtk_table_attach_defaults(GTK_TABLE(table), textbox_ref, 1, 2, 0, 1);
+ gtk_container_add(GTK_CONTAINER(vbox), table);
+
+ radio1 = gtk_radio_button_new_with_label(NULL,
+ _("standard reference"));
+ gtk_button_set_focus_on_click(GTK_BUTTON(radio1), FALSE);
+ gtk_container_add(GTK_CONTAINER(vbox), radio1);
+
+ radio2 = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(radio1),
+ _("page reference"));
+ gtk_button_set_focus_on_click(GTK_BUTTON(radio2), FALSE);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio2), FALSE);
+ gtk_container_add(GTK_CONTAINER(vbox), radio2);
+
+ gtk_widget_show_all(vbox);
+
+
+ if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT)
+ {
+ gchar *ref_string = NULL;
+
+ ref_string = g_strdup(gtk_entry_get_text(GTK_ENTRY(textbox_ref)));
+
+ if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(radio2)) == FALSE)
+ {
+ ref_string = g_strconcat("\\ref{", ref_string, "}", NULL);
+ }
+ else
+ {
+ ref_string = g_strconcat("\\pageref{", ref_string, "}", NULL);
+ }
+
+ if (ref_string != NULL)
+ {
+ insert_string(ref_string);
+ g_free(ref_string);
+ }
+ }
+
+ gtk_widget_destroy(dialog);
+}
+
+static void character_create_menu_item(GtkWidget *menu, const gchar *label, gint letter, SubMenuCallback callback)
+{
+ GtkWidget *tmp;
+
+ tmp = gtk_menu_item_new_with_label(label);
+ gtk_widget_show(tmp);
+ gtk_container_add(GTK_CONTAINER(menu), tmp);
+ g_signal_connect((gpointer) tmp, "activate", G_CALLBACK(callback), GINT_TO_POINTER(letter));
+}
+
+/* returns -1, if there are more than gint can work with or any other error
+ * returns 0, if categorie is empty
+ * if gint categorie is -1, function will count every element.
+ * Useful, if there is no need for a categorie check.*/
+gint
+count_menu_entries(SubMenuTemplate *tmp, gint categorie)
+{
+ // TODO: Reset max value for to stop before it's too late
+ gint i;
+ gint count = 0;
+ if (categorie == -1)
+ {
+ for (i =1; tmp[i].label != NULL; i++)
+ {
+ count = count + 1;
+ }
+ }
+ else
+ {
+ for (i = 1; tmp[i].label != NULL; i++)
+ {
+ if (tmp[i].cat == categorie)
+ {
+ count = count + 1;
+ }
+ if (i >= 256)
+ {
+ count = -1;
+ break;
+ }
+ }
+ }
+ return count;
+}
+
+gint
+count_menu_cat_entries(CategoryName *tmp)
+{
+ gint i;
+
+ for (i = 0; tmp[i].label != NULL; i++);
+ return i;
+}
+
+void sub_menu_init(GtkWidget *base_menu, SubMenuTemplate *menu_template, CategoryName *category_name, SubMenuCallback callback_function)
+{
+ gint i;
+ gint j;
+ gint max_menu_entries = MAX_MENU_ENTRIES;
+ gint categories = count_menu_cat_entries(category_name);
+ GtkWidget *sub_menu = NULL;
+ GtkWidget *sub_menu_cat[categories][2];
+ GtkWidget *active_submenu = NULL;
+
+ // Creates sub menus based on information from letter.h
+ for (i = 0; i < categories; i++)
+ {
+ if (count_menu_entries(menu_template, i) > 0)
+ {
+ create_sub_menu(base_menu, sub_menu_cat[i][0],
+ sub_menu_cat[i][1], category_name[i].label);
+ }
+ }
+
+ // Searching for all categories
+ for (i = 0; i < categories; i++)
+ {
+ gboolean split = FALSE;
+ gboolean last_sub_menu = FALSE;
+ gboolean sorted = category_name[i].sorted;
+ gint local_count = 0; // To check whether we need to build up a new sub sub menu.
+ gint item_count = count_menu_entries(menu_template, i);
+
+ if (item_count < 1)
+ continue;
+
+ // Default is, not to split anything to make menu not
+ // deeper than realy needed.
+ if (item_count > max_menu_entries)
+ {
+ split = TRUE;
+ }
+
+ // Setting active sub menu to sub menu of catagorie
+ sub_menu = sub_menu_cat[i][0];
+ active_submenu = sub_menu;
+ // Finding entries for each categorie
+
+ for (j = 0; menu_template[j].latex != NULL; j++)
+ {
+ if (menu_template[j].cat == i)
+ {
+ // Creates a new sub sub menu if needed
+ if (split == TRUE && (local_count % max_menu_entries) == 0)
+ {
+ gint next_split_point = 0;
+ GtkWidget *tmp = NULL;
+ GtkWidget *tmp_item = NULL;
+
+ sub_menu = active_submenu;
+
+ for (next_split_point = 0;
+ next_split_point < max_menu_entries ; next_split_point ++)
+ {
+ if (menu_template[j+next_split_point].cat != i)
+ {
+ last_sub_menu = TRUE;
+ break;
+ }
+
+ }
+
+ if (sorted == TRUE)
+ {
+ create_sub_menu(sub_menu_cat[i][0], tmp, tmp_item, g_strconcat(menu_template[j].label, " ... ", menu_template[j + next_split_point-1].label, NULL));
+
+ sub_menu = tmp;
+ }
+ else if (sorted == FALSE)
+ {
+ if (last_sub_menu == FALSE)
+ {
+ create_sub_menu(sub_menu, tmp, tmp_item, _("More"));
+ sub_menu = active_submenu;
+ active_submenu = tmp;
+ }
+ }
+ }
+
+ // Sets the counter to keep in track if a new submenu needs to be build up
+ local_count = local_count + 1;
+ character_create_menu_item(sub_menu, g_strconcat(menu_template[j].label, "\t", menu_template[j].latex, NULL), j, callback_function);
+ }
+ }
+ }
+}
+
+static int
+find_latex_enc(gint l_geany_enc)
+{
+ guint i;
+ for (i = 0; i < LATEX_ENCODINGS_MAX; i++)
+ {
+ if (latex_encodings[i].geany_enc == l_geany_enc)
+ return i;
+ }
+ return LATEX_ENCODING_NONE;
+}
+
+
+static void
+show_output(const gchar * output, const gchar * name, const gint local_enc)
+{
+ GeanyDocument *doc = NULL;
+ GeanyFiletype *ft = p_filetypes->lookup_by_name("LaTeX");
+
+ if (output)
+ {
+ doc = p_document->new_file(name, ft, output);
+ p_document->set_encoding(doc, p_encodings->get_charset_from_index(latex_encodings[local_enc].geany_enc));
+ }
+
+}
+
+static void
+wizard_activated(G_GNUC_UNUSED GtkMenuItem * menuitem, G_GNUC_UNUSED gpointer gdata)
+{
+ gint i;
+ GString *code = NULL;
+ gchar *author = NULL;
+ gchar *date = NULL;
+ gchar *output = NULL;
+ gchar *classoptions = NULL;
+ gchar *title = NULL;
+ gchar *enc_latex_char = NULL;
+ gchar *documentclass_str = NULL;
+ gchar *papersize = NULL;
+ gchar *draft = NULL;
+ gchar *scriptsize = NULL;
+ gint documentclass_int;
+ gint encoding_int;
+ gint papersize_int;
+ gint scriptsize_int;
+ GtkWidget *dialog = NULL;
+ GtkWidget *vbox = NULL;
+ GtkWidget *label_documentclass = NULL;
+ GtkWidget *documentclass_combobox = NULL;
+ GtkWidget *label_encoding = NULL;
+ GtkWidget *encoding_combobox = NULL;
+ GtkWidget *scriptsize_combobox = NULL;
+ GtkWidget *label_scriptsize = NULL;
+ GtkWidget *table = NULL;
+ GtkWidget *checkbox_KOMA = NULL;
+ GtkWidget *author_textbox = NULL;
+ GtkWidget *label_author = NULL;
+ GtkWidget *date_textbox = NULL;
+ GtkWidget *label_date = NULL;
+ GtkWidget *title_textbox = NULL;
+ GtkWidget *label_title = NULL;
+ GtkWidget *papersize_combobox = NULL;
+ GtkWidget *label_papersize = NULL;
+ GtkWidget *checkbox_draft = NULL;
+ gboolean KOMA_active = TRUE;
+ gboolean draft_active = FALSE;
+
+ GtkTooltips *tooltip = NULL;
+
+ tooltip = gtk_tooltips_new();
+
+ // Creating and formating table
+ table = gtk_table_new(2, 6, FALSE);
+ gtk_table_set_col_spacings(GTK_TABLE(table), 6);
+ gtk_table_set_row_spacings(GTK_TABLE(table), 6);
+
+ // Documentclass
+ label_documentclass = gtk_label_new(_("Documentclass:"));
+ documentclass_combobox = gtk_combo_box_new_text();
+ gtk_tooltips_set_tip(tooltip, documentclass_combobox,
+ _("Chooce the kind of document you want to write"), NULL);
+ gtk_combo_box_insert_text(GTK_COMBO_BOX(documentclass_combobox), 0, "Book");
+ gtk_combo_box_insert_text(GTK_COMBO_BOX(documentclass_combobox), 1, "Article");
+ gtk_combo_box_insert_text(GTK_COMBO_BOX(documentclass_combobox), 2, "Report");
+
+ gtk_combo_box_set_active(GTK_COMBO_BOX(documentclass_combobox), 0);
+
+ gtk_misc_set_alignment(GTK_MISC(label_documentclass), 0, 0.5);
+
+ gtk_table_attach_defaults(GTK_TABLE(table), label_documentclass, 0, 1, 0, 1);
+ gtk_table_attach_defaults(GTK_TABLE(table), documentclass_combobox, 1, 2, 0, 1);
+
+ // Encoding
+ label_encoding = gtk_label_new(_("Encoding:"));
+
+ encoding_combobox = gtk_combo_box_new_text();
+ gtk_tooltips_set_tip(tooltip, encoding_combobox,
+ _("Set the encoding for your new document"), NULL);
+ for (i = 0; i < LATEX_ENCODINGS_MAX; i++)
+ {
+ gtk_combo_box_insert_text(GTK_COMBO_BOX(encoding_combobox), i,
+ latex_encodings[i].name);
+ }
+
+ gtk_combo_box_set_active(GTK_COMBO_BOX(encoding_combobox), find_latex_enc(geany_data->file_prefs->default_new_encoding));
+
+ gtk_misc_set_alignment(GTK_MISC(label_encoding), 0, 0.5);
+
+ gtk_table_attach_defaults(GTK_TABLE(table), label_encoding, 0, 1, 1, 2);
+ gtk_table_attach_defaults(GTK_TABLE(table), encoding_combobox, 1, 2, 1, 2);
+
+ // Scriptsize
+ label_scriptsize = gtk_label_new(_("Scriptsize:"));
+ scriptsize_combobox = gtk_combo_box_new_text();
+ gtk_tooltips_set_tip(tooltip, scriptsize_combobox,
+ _("Set the default script size of your new document"), NULL);
+ gtk_combo_box_insert_text(GTK_COMBO_BOX(scriptsize_combobox), 0, "10pt");
+ gtk_combo_box_insert_text(GTK_COMBO_BOX(scriptsize_combobox), 1, "11pt");
+ gtk_combo_box_insert_text(GTK_COMBO_BOX(scriptsize_combobox), 2, "12pt");
+
+ gtk_combo_box_set_active(GTK_COMBO_BOX(scriptsize_combobox), 0);
+
+ gtk_misc_set_alignment(GTK_MISC(label_scriptsize), 0, 0.5);
+
+ gtk_table_attach_defaults(GTK_TABLE(table), label_scriptsize, 0, 1, 2, 3);
+ gtk_table_attach_defaults(GTK_TABLE(table), scriptsize_combobox, 1, 2, 2, 3);
+
+ // Author
+ label_author = gtk_label_new(_("Author:"));
+ author_textbox = gtk_entry_new();
+ gtk_tooltips_set_tip(tooltip, author_textbox,
+ _("Sets the entry of \\author command. In most cases here should stay your name"), NULL);
+ if (geany_data->template_prefs->developer != NULL)
+ {
+ author = geany_data->template_prefs->developer;
+ gtk_entry_set_text(GTK_ENTRY(author_textbox), author);
+ }
+ gtk_misc_set_alignment(GTK_MISC(label_author), 0, 0.5);
+ gtk_table_attach_defaults(GTK_TABLE(table), label_author, 0, 1, 3, 4);
+ gtk_table_attach_defaults(GTK_TABLE(table), author_textbox, 1, 2, 3, 4);
+
+ // Date
+ label_date = gtk_label_new(_("Date:"));
+ date_textbox = gtk_entry_new();
+ gtk_tooltips_set_tip(tooltip, date_textbox,
+ _("Sets the entry of the \\date command inside header of your newly created LaTeX-document. Keeping it at \\today is a good decision if you don't need any fixed date."), NULL);
+ gtk_entry_set_text(GTK_ENTRY(date_textbox), "\\today");
+ gtk_misc_set_alignment(GTK_MISC(label_date), 0, 0.5);
+ gtk_table_attach_defaults(GTK_TABLE(table), label_date, 0, 1, 4, 5);
+ gtk_table_attach_defaults(GTK_TABLE(table), date_textbox, 1, 2, 4, 5);
+
+ // Title of the new document
+ label_title = gtk_label_new(_("Title:"));
+ title_textbox = gtk_entry_new();
+ gtk_tooltips_set_tip(tooltip, title_textbox, _("Sets the title of your newly document."),
+ NULL);
+ gtk_misc_set_alignment(GTK_MISC(label_title), 0, 0.5);
+ gtk_table_attach_defaults(GTK_TABLE(table), label_title, 0, 1, 5, 6);
+ gtk_table_attach_defaults(GTK_TABLE(table), title_textbox, 1, 2, 5, 6);
+
+ // Papersize
+ label_papersize = gtk_label_new(_("Paper size:"));
+ papersize_combobox = gtk_combo_box_new_text();
+ gtk_tooltips_set_tip(tooltip, papersize_combobox,
+ _("Chooce the paper format for the new created document"), NULL);
+ gtk_combo_box_insert_text(GTK_COMBO_BOX(papersize_combobox), 0, "A4");
+ gtk_combo_box_insert_text(GTK_COMBO_BOX(papersize_combobox), 1, "A5");
+ gtk_combo_box_insert_text(GTK_COMBO_BOX(papersize_combobox), 2, "A6");
+
+ gtk_combo_box_set_active(GTK_COMBO_BOX(papersize_combobox), 0);
+
+ gtk_misc_set_alignment(GTK_MISC(label_papersize), 0, 0.5);
+
+ gtk_table_attach_defaults(GTK_TABLE(table), label_papersize, 0, 1, 6, 7);
+ gtk_table_attach_defaults(GTK_TABLE(table), papersize_combobox, 1, 2, 6, 7);
+
+ gtk_widget_show_all(table);
+
+ // Buidling the wizard-dialog and showing it
+ dialog = gtk_dialog_new_with_buttons(_("LaTeX-Wizard"),
+ GTK_WINDOW(geany->main_widgets->window),
+ GTK_DIALOG_DESTROY_WITH_PARENT, GTK_STOCK_CANCEL,
+ GTK_RESPONSE_CANCEL, GTK_STOCK_OK, GTK_RESPONSE_ACCEPT,
+ NULL);
+ vbox = p_ui->dialog_vbox_new(GTK_DIALOG(dialog));
+ gtk_widget_set_name(dialog, "GeanyDialog");
+ gtk_box_set_spacing(GTK_BOX(vbox), 10);
+ gtk_container_add(GTK_CONTAINER(vbox), table);
+
+ checkbox_KOMA = gtk_check_button_new_with_label(_("Use KOMA-script classes if possible"));
+ gtk_tooltips_set_tip(tooltip, checkbox_KOMA,
+ _
+ ("Uses the KOMA-script classes by Markus Kohm.\nKeep in mind: To compile your document these classes have to been installed before."),
+ NULL);
+ gtk_button_set_focus_on_click(GTK_BUTTON(checkbox_KOMA), FALSE);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbox_KOMA), KOMA_active);
+ gtk_box_pack_start(GTK_BOX(vbox), checkbox_KOMA, FALSE, FALSE, 5);
+
+ checkbox_draft = gtk_check_button_new_with_label(_("Use draft mode"));
+ gtk_tooltips_set_tip(tooltip, checkbox_draft,
+ _("Set the draft flag inside new created documents to get documents with a number of debugging helpers"), NULL);
+ gtk_button_set_focus_on_click(GTK_BUTTON(checkbox_draft), FALSE);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbox_draft), draft_active);
+ gtk_box_pack_start(GTK_BOX(vbox), checkbox_draft, FALSE, FALSE, 5);
+
+ gtk_widget_show_all(vbox);
+
+ if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT)
+ {
+ KOMA_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkbox_KOMA));
+ draft_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkbox_draft));
+ documentclass_int = gtk_combo_box_get_active(GTK_COMBO_BOX(documentclass_combobox));
+ encoding_int = gtk_combo_box_get_active(GTK_COMBO_BOX(encoding_combobox));
+ enc_latex_char = g_strconcat("\\usepackage[", latex_encodings[encoding_int].latex,"]{inputenc}\n", NULL);
+ author = g_strdup(gtk_entry_get_text(GTK_ENTRY(author_textbox)));
+ date = g_strdup(gtk_entry_get_text(GTK_ENTRY(date_textbox)));
+ title = g_strdup(gtk_entry_get_text(GTK_ENTRY(title_textbox)));
+ papersize_int = gtk_combo_box_get_active(GTK_COMBO_BOX(papersize_combobox));
+ switch (papersize_int)
+ {
+ case 0:
+ {
+ papersize = g_utf8_casefold("a4paper", -1);
+ break;
+ }
+ case 1:
+ {
+ papersize = g_utf8_casefold("a5paper", -1);
+ break;
+ }
+ case 2:
+ {
+ papersize = g_utf8_casefold("a6paper", -1);
+ break;
+ }
+ }
+
+ scriptsize_int = gtk_combo_box_get_active(GTK_COMBO_BOX(scriptsize_combobox));
+ switch (scriptsize_int)
+ {
+ case 0:
+ {
+ scriptsize = g_strconcat("10pt", NULL);
+ break;
+ }
+ case 1:
+ {
+ scriptsize = g_strconcat("11pt", NULL);
+ break;
+ }
+ case 2:
+ {
+ scriptsize = g_strconcat("12pt", NULL);
+ break;
+ }
+ }
+
+ if (papersize != NULL)
+ {
+ classoptions = g_strconcat(papersize, NULL);
+ }
+ if (classoptions != NULL && draft_active == TRUE)
+ {
+ draft = g_utf8_casefold("draft", -1);
+ classoptions = g_strconcat(classoptions,",", draft, NULL);
+ }
+ else if (classoptions == NULL && draft_active == TRUE)
+ {
+ draft = g_utf8_casefold("draft", -1);
+ classoptions = g_strconcat(draft, NULL);
+ }
+ if (classoptions != NULL && scriptsize != NULL)
+ {
+ classoptions = g_strconcat(classoptions, ",", scriptsize, NULL);
+ }
+ else if (classoptions == NULL && scriptsize != NULL)
+ {
+ classoptions = g_strconcat(scriptsize, NULL);
+ }
+
+ if (KOMA_active)
+ {
+ switch (documentclass_int)
+ {
+ case 0:
+ {
+ documentclass_str = g_utf8_casefold("scrbook", -1);
+ break;
+ }
+ case 1:
+ {
+ documentclass_str = g_utf8_casefold("scrartcl", -1);
+ break;
+ }
+ case 2:
+ {
+ documentclass_str = g_utf8_casefold("scrreprt", -1);
+ break;
+ }
+ }
+ }
+ else
+ {
+ switch (documentclass_int)
+ {
+ case 0:
+ {
+ documentclass_str = g_utf8_casefold("book", -1);
+ break;
+ }
+ case 1:
+ {
+ documentclass_str = g_utf8_casefold("article", -1);
+ break;
+ }
+ case 2:
+ {
+ documentclass_str = g_utf8_casefold("report", -1);
+ break;
+ }
+ }
+ }
+
+ code = g_string_new(TEMPLATE_LATEX);
+
+ if (classoptions != NULL)
+ {
+ p_utils->string_replace_all(code, "{CLASSOPTION}", classoptions);
+ g_free(classoptions);
+ }
+ if (documentclass_str != NULL)
+ {
+ p_utils->string_replace_all(code, "{DOCUMENTCLASS}", documentclass_str);
+ g_free(documentclass_str);
+ }
+ if (enc_latex_char != NULL)
+ {
+ p_utils->string_replace_all(code, "{ENCODING}", enc_latex_char);
+ g_free(enc_latex_char);
+ }
+ if (author != NULL)
+ {
+ if (author[0] != '\0')
+ {
+ author = g_strconcat("\\author{", author, "}\n", NULL);
+ p_utils->string_replace_all(code, "{AUTHOR}", author);
+ }
+ else
+ p_utils->string_replace_all(code, "{AUTHOR}", "\% \\author{}\n");
+ g_free(author);
+ }
+ if (date != NULL)
+ {
+ if (date[0] != '\0')
+ {
+ date = g_strconcat("\\date{", date, "}\n", NULL);
+ p_utils->string_replace_all(code, "{DATE}", date);
+ }
+ else
+ p_utils->string_replace_all(code, "{DATE}", "\% \\date{}\n");
+ g_free(date);
+ }
+ if (title != NULL)
+ {
+ if (title[0] != '\0')
+ {
+ title = g_strconcat("\\title{", title, "}\n", NULL);
+ p_utils->string_replace_all(code, "{TITLE}", title);
+ }
+ else
+ p_utils->string_replace_all(code, "{TITLE}", "\% \\title{} \n");
+ g_free(title);
+ }
+ output = g_string_free(code, FALSE);
+ show_output(output, NULL, encoding_int);
+ }
+ gtk_widget_destroy(dialog);
+}
+
+static void
+update_menu_items()
+{
+ GeanyDocument *doc = NULL;
+ gboolean have_file;
+
+ doc = p_document->get_current();
+ have_file = doc && doc->file_name && g_path_is_absolute(doc->file_name);
+
+ if (have_file)
+ {
+ gtk_widget_set_sensitive(menu_latex_menu_special_char, TRUE);
+ gtk_widget_set_sensitive(menu_latex_ref, TRUE);
+ gtk_widget_set_sensitive(menu_latex_label, TRUE);
+ }
+ else
+ {
+ gtk_widget_set_sensitive(menu_latex_menu_special_char, FALSE);
+ gtk_widget_set_sensitive(menu_latex_ref, FALSE);
+ gtk_widget_set_sensitive(menu_latex_label, FALSE);
+ }
+
+ gtk_widget_set_sensitive(menu_latex_wizzard, TRUE);
+
+}
+
+static void kblabel_insert(G_GNUC_UNUSED guint key_id)
+{
+ insert_label_activated(NULL, NULL);
+}
+
+static void kbref_insert(G_GNUC_UNUSED guint key_id)
+{
+ insert_ref_activated(NULL, NULL);
+}
+
+static void kbwizard(G_GNUC_UNUSED guint key_id)
+{
+ wizard_activated(NULL, NULL);
+}
+
+void
+plugin_init(G_GNUC_UNUSED GeanyData * data)
+{
+ GtkTooltips *tooltips = NULL;
+
+ gchar *kblabel_insert_label = _("Insert \\label");
+ gchar *kblabel_insert_ref = _("Insert \\ref");
+ gchar *kblabel_wizard = _("Run LaTeX-Wizard");
+
+ init_encodings_latex();
+
+ tooltips = gtk_tooltips_new();
+
+ menu_latex = gtk_menu_item_new_with_mnemonic(_("_LaTeX"));
+ gtk_container_add(GTK_CONTAINER(geany->main_widgets->tools_menu), menu_latex);
+ g_signal_connect((gpointer) menu_latex, "activate", G_CALLBACK(update_menu_items), NULL);
+
+ menu_latex_menu = gtk_menu_new();
+ gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_latex), menu_latex_menu);
+
+ menu_latex_wizzard = gtk_menu_item_new_with_mnemonic(_("LaTeX-_Wizard"));
+ gtk_container_add(GTK_CONTAINER(menu_latex_menu), menu_latex_wizzard);
+ gtk_tooltips_set_tip(tooltips, menu_latex_wizzard,
+ _("Starts a Wizard to create easily LaTeX-dokuments"), NULL);
+
+ g_signal_connect((gpointer) menu_latex_wizzard, "activate",
+ G_CALLBACK(wizard_activated), NULL);
+
+ menu_latex_menu_special_char = gtk_menu_item_new_with_mnemonic(_("Insert _Special Character"));
+ gtk_tooltips_set_tip(tooltips, menu_latex_menu_special_char,
+ _("Helps to use some not very common letters and signs"), NULL);
+ gtk_container_add(GTK_CONTAINER(menu_latex_menu), menu_latex_menu_special_char);
+
+ menu_latex_menu_special_char_submenu = gtk_menu_new();
+ gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_latex_menu_special_char), menu_latex_menu_special_char_submenu);
+ sub_menu_init(menu_latex_menu_special_char_submenu, char_array, cat_names, char_insert_activated);
+
+ menu_latex_ref = gtk_menu_item_new_with_mnemonic(_("Insert _Reference"));
+ gtk_tooltips_set_tip(tooltips, menu_latex_ref,
+ _("Inserting references to the document"), NULL);
+ gtk_container_add(GTK_CONTAINER(menu_latex_menu), menu_latex_ref);
+ g_signal_connect((gpointer) menu_latex_ref, "activate", G_CALLBACK(insert_ref_activated), NULL);
+
+ menu_latex_label = gtk_menu_item_new_with_mnemonic(_("Insert _Label"));
+ gtk_tooltips_set_tip(tooltips, menu_latex_label,
+ _("Helps at inserting labels to a docuemnt"), NULL);
+ gtk_container_add(GTK_CONTAINER(menu_latex_menu), menu_latex_label);
+ g_signal_connect((gpointer) menu_latex_label, "activate", G_CALLBACK(insert_label_activated), NULL);
+
+ /* init keybindins */
+ p_keybindings->set_item(plugin_key_group, LATEX_WIZZARD_KB, kbwizard,
+ 0, 0, "run_latex_wizard", kblabel_wizard, menu_latex_wizzard);
+ p_keybindings->set_item(plugin_key_group, LATEX_INSERT_LABEL_KB, kblabel_insert,
+ 0, 0, "insert_latex_label", kblabel_insert_label, menu_latex_wizzard);
+ p_keybindings->set_item(plugin_key_group, LATEX_INSERT_REF_KB, kbref_insert,
+ 0, 0, "insert_latex_ref", kblabel_insert_ref, menu_latex_wizzard);
+ gtk_widget_show_all(menu_latex);
+ plugin_fields->menu_item = menu_latex;
+}
+
+void
+plugin_cleanup()
+{
+ gtk_widget_destroy(plugin_fields->menu_item);
+}
Copied: trunk/geanylatex/src/latexencodings.c (from rev 143, trunk/geanylatex/latexencodings.c)
===================================================================
--- trunk/geanylatex/src/latexencodings.c (rev 0)
+++ trunk/geanylatex/src/latexencodings.c 2008-08-31 23:29:18 UTC (rev 150)
@@ -0,0 +1,55 @@
+/*
+ * latexencodings.h
+ *
+ * Copyright 2008 Frank Lanitz <frank(at)frank(dot)uvena(dot)de>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301, USA.
+ */
+
+#include <gtk/gtk.h>
+#include "support.h"
+#include "encodings.h"
+#include "latexencodings.h"
+
+LaTeXEncodings latex_encodings[LATEX_ENCODINGS_MAX];
+
+#define fill(Charset, Name, LaTeX, GeanyEnc) \
+ latex_encodings[Charset].charset = Charset; \
+ latex_encodings[Charset].name = Name; \
+ latex_encodings[Charset].latex = LaTeX; \
+ latex_encodings[Charset].geany_enc = GeanyEnc;
+
+void init_encodings_latex(void)
+{
+ fill(LATEX_ENCODING_UTF_8, _("UTF-8"), "utf8x", GEANY_ENCODING_UTF_8);
+ fill(LATEX_ENCODING_ASCII, _("US-ASCII"), "ascii", GEANY_ENCODING_ISO_8859_1);
+ fill(LATEX_ENCODING_ISO_8859_1, _("ISO-8859-1 (Latin-1)"), "latin1",
+ GEANY_ENCODING_ISO_8859_1);
+ fill(LATEX_ENCODING_ISO_8859_2, _("ISO-8859-2 (Latin-2)"), "latin2",
+ GEANY_ENCODING_ISO_8859_2);
+ fill(LATEX_ENCODING_ISO_8859_3, _("ISO-8859-3 (Latin-3)"), "latin3",
+ GEANY_ENCODING_ISO_8859_3);
+ fill(LATEX_ENCODING_ISO_8859_4, _("ISO-8859-4 (Latin-4)"), "latin4",
+ GEANY_ENCODING_ISO_8859_4);
+ fill(LATEX_ENCODING_ISO_8859_5, _("ISO-8859-5 (Latin-5)"), "latin5",
+ GEANY_ENCODING_ISO_8859_5);
+ fill(LATEX_ENCODING_ISO_8859_9, _("ISO-8859-9 (Latin-9)"), "latin9",
+ GEANY_ENCODING_ISO_8859_9);
+ fill(LATEX_ENCODING_ISO_8859_10, _("ISO-8859-10 (Latin-10)"), "latin10", GEANY_ENCODING_ISO_8859_10);
+ fill(LATEX_ENCODING_IBM_850, _("IBM 850 code page"), "cp850", GEANY_ENCODING_IBM_850);
+ fill(LATEX_ENCODING_IBM_852, _("IBM 852 code page"), "cp852", GEANY_ENCODING_IBM_852);
+ fill(LATEX_ENCODING_NONE, _("Misc"), NULL, GEANY_ENCODING_NONE);
+}
Copied: trunk/geanylatex/src/latexencodings.h (from rev 143, trunk/geanylatex/latexencodings.h)
===================================================================
--- trunk/geanylatex/src/latexencodings.h (rev 0)
+++ trunk/geanylatex/src/latexencodings.h 2008-08-31 23:29:18 UTC (rev 150)
@@ -0,0 +1,56 @@
+/*
+ * latexencodings.h
+ *
+ * Copyright 2008 Frank Lanitz <frank(at)frank(dot)uvena(dot)de>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301, USA.
+ */
+
+#ifndef LATEXEXCODINGS_H
+#define LATEXEXCODINGS_H
+
+
+typedef enum
+{
+ LATEX_ENCODING_UTF_8 = 0,
+ LATEX_ENCODING_ASCII,
+ LATEX_ENCODING_ISO_8859_1,
+ LATEX_ENCODING_ISO_8859_2,
+ LATEX_ENCODING_ISO_8859_3,
+ LATEX_ENCODING_ISO_8859_4,
+ LATEX_ENCODING_ISO_8859_5,
+ LATEX_ENCODING_ISO_8859_9,
+ LATEX_ENCODING_ISO_8859_10,
+ LATEX_ENCODING_IBM_850,
+ LATEX_ENCODING_IBM_852,
+ LATEX_ENCODING_NONE,
+ LATEX_ENCODINGS_MAX
+} LaTeXEncodingIndex;
+
+
+typedef struct
+{
+ LaTeXEncodingIndex charset;
+ gchar *name;
+ gchar *latex;
+ gint geany_enc;
+} LaTeXEncodings;
+
+extern LaTeXEncodings latex_encodings[LATEX_ENCODINGS_MAX];
+
+void init_encodings_latex(void);
+
+#endif
Copied: trunk/geanylatex/src/letters.c (from rev 143, trunk/geanylatex/letters.c)
===================================================================
--- trunk/geanylatex/src/letters.c (rev 0)
+++ trunk/geanylatex/src/letters.c 2008-08-31 23:29:18 UTC (rev 150)
@@ -0,0 +1,222 @@
+/*
+ * letters.h
+ *
+ * Copyright 2008 Frank Lanitz <frank(at)frank(dot)uvena(dot)de>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301, USA.
+ */
+
+#include <gtk/gtk.h>
+#include "support.h"
+#include "datatypes.h"
+#include "letters.h"
+
+enum
+{
+ GREEK_LETTERS = 0,
+ GERMAN_LETTERS,
+ MISC_LETTERS,
+ ARROW_CHAR,
+ RELATIONAL_SIGNS,
+ BINARY_OPERATIONS,
+ LETTERS_END
+};
+
+CategoryName cat_names[] = {
+ { GREEK_LETTERS, N_("Greek letters"), TRUE},
+ { GERMAN_LETTERS, N_("German umlauts"), TRUE},
+ { MISC_LETTERS, N_("Misc"), FALSE},
+ { ARROW_CHAR, N_("Arrow characters"), FALSE},
+ { RELATIONAL_SIGNS, N_("Relational"), FALSE},
+ { BINARY_OPERATIONS, N_("Binary operation"), FALSE},
+ { 0, NULL, FALSE}
+};
+
+/* Entries need to be sorted by categorie (1st field) or some random
+ * features will occure.
+ * AAABBBCCC is valid
+ * AAACCCBBB is valid
+ * ACABCBACB is _not_ valid and will course trouble */
+SubMenuTemplate char_array[] = {
+ // Greek characters
+ {GREEK_LETTERS, "Α", "\\Alpha" },
+ {GREEK_LETTERS, "α", "\\alpha" },
+ {GREEK_LETTERS, "Β", "\\Beta" },
+ {GREEK_LETTERS, "β", "\\beta" },
+ {GREEK_LETTERS, "Γ", "\\Gamma" },
+ {GREEK_LETTERS, "γ", "\\gamma" },
+ {GREEK_LETTERS, "Δ", "\\Delta" },
+ {GREEK_LETTERS, "δ", "\\Delta" },
+ {GREEK_LETTERS, "δ", "\\delta" },
+ {GREEK_LETTERS, "Ε", "\\Epsilon" },
+ {GREEK_LETTERS, "ε", "\\epsilon" },
+ {GREEK_LETTERS, "Ζ", "\\Zeta" },
+ {GREEK_LETTERS, "ζ", "\\zeta" },
+ {GREEK_LETTERS, "Η", "\\Eta" },
+ {GREEK_LETTERS, "η", "\\eta" },
+ {GREEK_LETTERS, "Θ", "\\Theta" },
+ {GREEK_LETTERS, "θ", "\\theta" },
+ {GREEK_LETTERS, "Ι", "\\Iota" },
+ {GREEK_LETTERS, "ι", "\\iota" },
+ {GREEK_LETTERS, "Κ", "\\Kappa" },
+ {GREEK_LETTERS, "κ", "\\kappa" },
+ {GREEK_LETTERS, "Λ", "\\Lambda" },
+ {GREEK_LETTERS, "λ", "\\lambda" },
+ {GREEK_LETTERS, "Μ", "\\Mu" },
+ {GREEK_LETTERS, "μ", "\\mu" },
+ {GREEK_LETTERS, "Ν", "\\Nu" },
+ {GREEK_LETTERS, "ν", "\\nu" },
+ {GREEK_LETTERS, "Ξ", "\\Xi" },
+ {GREEK_LETTERS, "ξ", "\\xi" },
+ {GREEK_LETTERS, "Ο", "\\Omicron" },
+ {GREEK_LETTERS, "ο", "\\omicron" },
+ {GREEK_LETTERS, "Π", "\\Pi" },
+ {GREEK_LETTERS, "π", "\\pi" },
+ {GREEK_LETTERS, "Ρ", "\\Rho" },
+ {GREEK_LETTERS, "ρ", "\\rho" },
+ {GREEK_LETTERS, "Σ", "\\Sigma" },
+ {GREEK_LETTERS, "ς", "\\sigmaf" },
+ {GREEK_LETTERS, "σ", "\\sigma" },
+ {GREEK_LETTERS, "Τ", "\\Tau" },
+ {GREEK_LETTERS, "τ", "\\tau" },
+ {GREEK_LETTERS, "Υ", "\\Upsilon" },
+ {GREEK_LETTERS, "υ", "\\upsilon" },
+ {GREEK_LETTERS, "Φ", "\\Phi" },
+ {GREEK_LETTERS, "φ", "\\phi" },
+ {GREEK_LETTERS, "Χ", "\\Chi" },
+ {GREEK_LETTERS, "χ", "\\chi" },
+ {GREEK_LETTERS, "Ψ", "\\Psi" },
+ {GREEK_LETTERS, "ψ", "\\psi" },
+ {GREEK_LETTERS, "Ω", "\\Omega" },
+ {GREEK_LETTERS, "ω", "\\omega" },
+ {GREEK_LETTERS, "ϑ", "\\thetasym" },
+ {GREEK_LETTERS, "ϒ", "\\upsih" },
+ {GREEK_LETTERS, "ϖ", "\\piv" },
+
+ // German Umlaute
+ {GERMAN_LETTERS, "ä","\"a"},
+ {GERMAN_LETTERS, "ü","\"u"},
+ {GERMAN_LETTERS, "ö","\"o"},
+ {GERMAN_LETTERS, "ß","\"s"},
+
+ //// Czech characters
+ //{"ě","\\v{e}"},
+ //{"š","\\v{s}"},
+ //{"č","\\v[c}"},
+ //{"ř","\\v{r}"},
+ //{"ž","\\v{z}"},
+ //{"ý",""},
+ //{"á",""},
+ //{"í",""},
+ //{"é",""},
+ //{"Ě","\\v{E}"},
+ //{"Š","\\v{S}"},
+ //{"Č","\\v{C}"},
+ //{"Ř","\\v{R}"},
+ //{"Ž","\\v{Z}"},
+ //{"Ý",""},
+ //{"Á",""},
+ //{"Í",""},
+ //{"É",""},
+ //// Misc
+ {MISC_LETTERS, "\\","\\backslash"},
+ {MISC_LETTERS, "€", "\\euro"},
+ {ARROW_CHAR, "←", "\\leftarrow" },
+ {ARROW_CHAR, "↑", "\\uparrow" },
+ {ARROW_CHAR, "→", "\\rightarrow" },
+ {ARROW_CHAR, "↓", "\\downarrow" },
+ {ARROW_CHAR, "↔", "\\leftrightarrow" },
+ {ARROW_CHAR, "⇐", "\\Leftarrow" },
+ {ARROW_CHAR, "⇑", "\\Uparrow" },
+ {ARROW_CHAR, "⇒", "\\Rightarrow" },
+ {ARROW_CHAR, "⇓", "\\Downarrow" },
+ {ARROW_CHAR, "⇔", "\\Leftrightarrow" },
+ {RELATIONAL_SIGNS, "\u2264", "\\leq"},
+ {RELATIONAL_SIGNS, "\u2265", "\\geq"},
+ {RELATIONAL_SIGNS, "\u220E", "\\qed"},
+ {RELATIONAL_SIGNS, "\u2261", "\\equiv"},
+ {RELATIONAL_SIGNS, "\u22A7", "\\models"},
+ {RELATIONAL_SIGNS, "\u227A", "\\prec"},
+ {RELATIONAL_SIGNS, "\u227B", "\\succ"},
+ {RELATIONAL_SIGNS, "\u223C", "\\sim"},
+ {RELATIONAL_SIGNS, "\u27C2", "\\perp"},
+ {RELATIONAL_SIGNS, "\u2AAF", "\\preceq"},
+ {RELATIONAL_SIGNS, "\u2AB0", "\\succeq"},
+ {RELATIONAL_SIGNS, "\u2243", "\\simeq"},
+ {RELATIONAL_SIGNS, "\u2223", "\\mid"},
+ {RELATIONAL_SIGNS, "\u226A", "\\ll"},
+ {RELATIONAL_SIGNS, "\u226B", "\\gg"},
+ {RELATIONAL_SIGNS, "\u224D", "\\asymp"},
+ {RELATIONAL_SIGNS, "\u2225", "\\parallel"},
+ {RELATIONAL_SIGNS, "\u2282", "\\subset"},
+ {RELATIONAL_SIGNS, "\u2283", "\\supset"},
+ {RELATIONAL_SIGNS, "\u2248", "\\approx"},
+ {RELATIONAL_SIGNS, "\u22C8", "\\bowtie"},
+ {RELATIONAL_SIGNS, "\u2286", "\\subseteq"},
+ {RELATIONAL_SIGNS, "\u2287", "\\supseteq"},
+ {RELATIONAL_SIGNS, "\u2245", "\\cong"},
+ {RELATIONAL_SIGNS, "\u2A1D", "\\Join"},
+ {RELATIONAL_SIGNS, "\u228F", "\\sqsubset"},
+ {RELATIONAL_SIGNS, "\u2290", "\\sqsupset"},
+ {RELATIONAL_SIGNS, "\u2260", "\\neq"},
+ {RELATIONAL_SIGNS, "\u2323", "\\smile"},
+ {RELATIONAL_SIGNS, "\u2291", "\\sqsubseteq"},
+ {RELATIONAL_SIGNS, "\u2292", "\\sqsupseteq"},
+ {RELATIONAL_SIGNS, "\u2250", "\\doteq"},
+ {RELATIONAL_SIGNS, "\u2322", "\\frown"},
+ {RELATIONAL_SIGNS, "\u2208", "\\in"},
+ {RELATIONAL_SIGNS, "\u220B", "\\ni"},
+ {RELATIONAL_SIGNS, "\u221D", "\\propto"},
+ {RELATIONAL_SIGNS, "\u22A2", "\\vdash"},
+ {RELATIONAL_SIGNS, "\u22A3", "\\dashv"},
+ {BINARY_OPERATIONS, "\u00B1", "\\pm"},
+ {BINARY_OPERATIONS, "\u2213", "\\mp"},
+ {BINARY_OPERATIONS, "\u00D7", "\\times"},
+ {BINARY_OPERATIONS, "\u00F7", "\\div"},
+ {BINARY_OPERATIONS, "\u2217", "\\ast"},
+ {BINARY_OPERATIONS, "\u22C6", "\\star"},
+ {BINARY_OPERATIONS, "\u2218", "\\circ"},
+ {BINARY_OPERATIONS, "\u2219", "\\bullet"},
+ {BINARY_OPERATIONS, "\u22C5", "\\cdot"},
+ {BINARY_OPERATIONS, "\u2229", "\\cap"},
+ {BINARY_OPERATIONS, "\u222A", "\\cup"},
+ {BINARY_OPERATIONS, "\u228E", "\\uplus"},
+ {BINARY_OPERATIONS, "\u2293", "\\sqcap"},
+ {BINARY_OPERATIONS, "\u2228", "\\vee"},
+ {BINARY_OPERATIONS, "\u2227", "\\wedge"},
+ {BINARY_OPERATIONS, "\u2216", "\\setminus"},
+ {BINARY_OPERATIONS, "\u2240", "\\wr"},
+ {BINARY_OPERATIONS, "\u22C4", "\\diamond"},
+ {BINARY_OPERATIONS, "\u25B3", "\\bigtriangleup"},
+ {BINARY_OPERATIONS, "\u25BD", "\\bigtriangledown"},
+ {BINARY_OPERATIONS, "\u25C1", "\\triangleleft"},
+ {BINARY_OPERATIONS, "\u25B7", "\\triangleright"},
+ {BINARY_OPERATIONS, "", "\\lhd"},
+ {BINARY_OPERATIONS, "", "\\rhd"},
+ {BINARY_OPERATIONS, "", "\\unlhd"},
+ {BINARY_OPERATIONS, "", "\\unrhd"},
+ {BINARY_OPERATIONS, "\u2295", "\\oplus"},
+ {BINARY_OPERATIONS, "\u2296", "\\ominus"},
+ {BINARY_OPERATIONS, "\u2297", "\\otimes"},
+ {BINARY_OPERATIONS, "\u2205", "\\oslash"},
+ {BINARY_OPERATIONS, "\u2299", "\\odot"},
+ {BINARY_OPERATIONS, "\u25CB", "\\bigcirc"},
+ {BINARY_OPERATIONS, "\u2020", "\\dagger"},
+ {BINARY_OPERATIONS, "\u2021", "\\ddagger"},
+ {BINARY_OPERATIONS, "\u2A3F", "\\amalg"},
+ {0, NULL, NULL},
+
+};
Copied: trunk/geanylatex/src/letters.h (from rev 143, trunk/geanylatex/letters.h)
===================================================================
--- trunk/geanylatex/src/letters.h (rev 0)
+++ trunk/geanylatex/src/letters.h 2008-08-31 23:29:18 UTC (rev 150)
@@ -0,0 +1,32 @@
+/*
+ * letters.h
+ *
+ * Copyright 2008 Frank Lanitz <frank(at)frank(dot)uvena(dot)de>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301, USA.
+ */
+
+
+#ifndef LETTERS_H
+#define LETTER_H
+
+#include "datatypes.h"
+
+extern SubMenuTemplate char_array[];
+
+extern CategoryName cat_names[];
+
+#endif
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Plugins-Commits
mailing list