Make Class Builder into a plugin.
Add some function pointers to the plugin API (for the class builder). Don't use G_MODULE_BIND_LAZY when loading plugins otherwise we can potentially get unresolved symbols at runtime, causing a segfault. Capitalize 2 menu item labels. git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@1659 ea778897-0a13-0410-b9d1-a72fbfd435f5
This commit is contained in:
parent
66bdb5d9fb
commit
451c5b0e7e
16
ChangeLog
16
ChangeLog
@ -1,3 +1,19 @@
|
||||
2007-07-04 Nick Treleaven <nick.treleaven@btinternet.com>
|
||||
|
||||
* src/utils.c, src/utils.h:
|
||||
Add comment for utils_free_pointers() warning not to use it if any
|
||||
pointers may be NULL.
|
||||
* plugins/Makefile.am, plugins/classbuilder.c, src/templates.c,
|
||||
src/interface.c, src/templates.h, src/tools.c, src/tools.h,
|
||||
src/plugindata.h, src/callbacks.c, src/callbacks.h, src/plugins.c,
|
||||
po/POTFILES.in, geany.glade:
|
||||
Make Class Builder into a plugin.
|
||||
Add some function pointers to the plugin API (for the class builder).
|
||||
Don't use G_MODULE_BIND_LAZY when loading plugins otherwise we can
|
||||
potentially get unresolved symbols at runtime, causing a segfault.
|
||||
Capitalize 2 menu item labels.
|
||||
|
||||
|
||||
2007-07-02 Enrico Tröger <enrico.troeger@uvena.de>
|
||||
|
||||
* src/symbols.c, tagmanager/conf.c:
|
||||
|
||||
101
geany.glade
101
geany.glade
@ -58,7 +58,7 @@
|
||||
<property name="use_underline">True</property>
|
||||
|
||||
<child internal-child="image">
|
||||
<widget class="GtkImage" id="image1776">
|
||||
<widget class="GtkImage" id="image1877">
|
||||
<property name="visible">True</property>
|
||||
<property name="stock">gtk-new</property>
|
||||
<property name="icon_size">1</property>
|
||||
@ -148,7 +148,7 @@
|
||||
<signal name="activate" handler="on_save_all1_activate" last_modification_time="Thu, 02 Jun 2005 14:15:30 GMT"/>
|
||||
|
||||
<child internal-child="image">
|
||||
<widget class="GtkImage" id="image1777">
|
||||
<widget class="GtkImage" id="image1878">
|
||||
<property name="visible">True</property>
|
||||
<property name="stock">gtk-save</property>
|
||||
<property name="icon_size">1</property>
|
||||
@ -169,7 +169,7 @@
|
||||
<signal name="activate" handler="on_toolbutton23_clicked" last_modification_time="Mon, 24 Jul 2006 19:26:04 GMT"/>
|
||||
|
||||
<child internal-child="image">
|
||||
<widget class="GtkImage" id="image1778">
|
||||
<widget class="GtkImage" id="image1879">
|
||||
<property name="visible">True</property>
|
||||
<property name="stock">gtk-revert-to-saved</property>
|
||||
<property name="icon_size">1</property>
|
||||
@ -189,7 +189,7 @@
|
||||
<property name="use_underline">True</property>
|
||||
|
||||
<child internal-child="image">
|
||||
<widget class="GtkImage" id="image1779">
|
||||
<widget class="GtkImage" id="image1880">
|
||||
<property name="visible">True</property>
|
||||
<property name="stock">gtk-revert-to-saved</property>
|
||||
<property name="icon_size">1</property>
|
||||
@ -285,7 +285,7 @@
|
||||
<signal name="activate" handler="on_close_all1_activate" last_modification_time="Thu, 02 Jun 2005 14:15:30 GMT"/>
|
||||
|
||||
<child internal-child="image">
|
||||
<widget class="GtkImage" id="image1780">
|
||||
<widget class="GtkImage" id="image1881">
|
||||
<property name="visible">True</property>
|
||||
<property name="stock">gtk-close</property>
|
||||
<property name="icon_size">1</property>
|
||||
@ -493,7 +493,7 @@
|
||||
<signal name="activate" handler="on_menu_increase_indent1_activate" last_modification_time="Tue, 01 Aug 2006 10:28:54 GMT"/>
|
||||
|
||||
<child internal-child="image">
|
||||
<widget class="GtkImage" id="image1781">
|
||||
<widget class="GtkImage" id="image1882">
|
||||
<property name="visible">True</property>
|
||||
<property name="stock">gtk-indent</property>
|
||||
<property name="icon_size">1</property>
|
||||
@ -514,7 +514,7 @@
|
||||
<signal name="activate" handler="on_menu_decrease_indent1_activate" last_modification_time="Tue, 01 Aug 2006 10:28:54 GMT"/>
|
||||
|
||||
<child internal-child="image">
|
||||
<widget class="GtkImage" id="image1782">
|
||||
<widget class="GtkImage" id="image1883">
|
||||
<property name="visible">True</property>
|
||||
<property name="stock">gtk-unindent</property>
|
||||
<property name="icon_size">1</property>
|
||||
@ -570,7 +570,7 @@
|
||||
<property name="use_underline">True</property>
|
||||
|
||||
<child internal-child="image">
|
||||
<widget class="GtkImage" id="image1783">
|
||||
<widget class="GtkImage" id="image1884">
|
||||
<property name="visible">True</property>
|
||||
<property name="stock">gtk-add</property>
|
||||
<property name="icon_size">1</property>
|
||||
@ -602,7 +602,7 @@
|
||||
<property name="use_underline">True</property>
|
||||
|
||||
<child internal-child="image">
|
||||
<widget class="GtkImage" id="image1784">
|
||||
<widget class="GtkImage" id="image1885">
|
||||
<property name="visible">True</property>
|
||||
<property name="stock">gtk-add</property>
|
||||
<property name="icon_size">1</property>
|
||||
@ -687,7 +687,7 @@
|
||||
<property name="use_underline">True</property>
|
||||
|
||||
<child internal-child="image">
|
||||
<widget class="GtkImage" id="image1785">
|
||||
<widget class="GtkImage" id="image1886">
|
||||
<property name="visible">True</property>
|
||||
<property name="stock">gtk-add</property>
|
||||
<property name="icon_size">1</property>
|
||||
@ -784,7 +784,7 @@
|
||||
<signal name="activate" handler="on_replace1_activate" last_modification_time="Sun, 23 Oct 2005 13:22:36 GMT"/>
|
||||
|
||||
<child internal-child="image">
|
||||
<widget class="GtkImage" id="image1786">
|
||||
<widget class="GtkImage" id="image1887">
|
||||
<property name="visible">True</property>
|
||||
<property name="stock">gtk-find-and-replace</property>
|
||||
<property name="icon_size">1</property>
|
||||
@ -850,7 +850,7 @@
|
||||
<signal name="activate" handler="on_go_to_line1_activate" last_modification_time="Tue, 23 May 2006 17:10:49 GMT"/>
|
||||
|
||||
<child internal-child="image">
|
||||
<widget class="GtkImage" id="image1787">
|
||||
<widget class="GtkImage" id="image1888">
|
||||
<property name="visible">True</property>
|
||||
<property name="stock">gtk-jump-to</property>
|
||||
<property name="icon_size">1</property>
|
||||
@ -874,7 +874,7 @@
|
||||
<property name="use_underline">True</property>
|
||||
|
||||
<child>
|
||||
<widget class="GtkMenu" id="menuitem3_menu">
|
||||
<widget class="GtkMenu" id="menu_view1_menu">
|
||||
|
||||
<child>
|
||||
<widget class="GtkImageMenuItem" id="menu_change_font1">
|
||||
@ -885,7 +885,7 @@
|
||||
<signal name="activate" handler="on_change_font1_activate" last_modification_time="Fri, 22 Apr 2005 18:58:45 GMT"/>
|
||||
|
||||
<child internal-child="image">
|
||||
<widget class="GtkImage" id="image1788">
|
||||
<widget class="GtkImage" id="image1889">
|
||||
<property name="visible">True</property>
|
||||
<property name="stock">gtk-select-font</property>
|
||||
<property name="icon_size">1</property>
|
||||
@ -907,7 +907,7 @@
|
||||
<child>
|
||||
<widget class="GtkMenuItem" id="menu_toggle_all_additional_widgets1">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">Toggle all additional widgets</property>
|
||||
<property name="label" translatable="yes">Toggle All Additional Widgets</property>
|
||||
<property name="use_underline">True</property>
|
||||
<signal name="activate" handler="on_menu_toggle_all_additional_widgets1_activate" last_modification_time="Sun, 06 May 2007 14:13:10 GMT"/>
|
||||
</widget>
|
||||
@ -1021,7 +1021,7 @@
|
||||
<property name="use_underline">True</property>
|
||||
|
||||
<child>
|
||||
<widget class="GtkMenu" id="menu_item4_menu">
|
||||
<widget class="GtkMenu" id="menu_document1_menu">
|
||||
|
||||
<child>
|
||||
<widget class="GtkCheckMenuItem" id="menu_line_breaking1">
|
||||
@ -1245,7 +1245,7 @@
|
||||
<signal name="activate" handler="on_project_new1_activate" last_modification_time="Thu, 18 Jan 2007 22:16:24 GMT"/>
|
||||
|
||||
<child internal-child="image">
|
||||
<widget class="GtkImage" id="image1789">
|
||||
<widget class="GtkImage" id="image1890">
|
||||
<property name="visible">True</property>
|
||||
<property name="stock">gtk-new</property>
|
||||
<property name="icon_size">1</property>
|
||||
@ -1266,7 +1266,7 @@
|
||||
<signal name="activate" handler="on_project_open1_activate" last_modification_time="Mon, 15 Jan 2007 17:34:17 GMT"/>
|
||||
|
||||
<child internal-child="image">
|
||||
<widget class="GtkImage" id="image1790">
|
||||
<widget class="GtkImage" id="image1891">
|
||||
<property name="visible">True</property>
|
||||
<property name="stock">gtk-open</property>
|
||||
<property name="icon_size">1</property>
|
||||
@ -1287,7 +1287,7 @@
|
||||
<signal name="activate" handler="on_project_close1_activate" last_modification_time="Mon, 15 Jan 2007 17:34:17 GMT"/>
|
||||
|
||||
<child internal-child="image">
|
||||
<widget class="GtkImage" id="image1791">
|
||||
<widget class="GtkImage" id="image1892">
|
||||
<property name="visible">True</property>
|
||||
<property name="stock">gtk-close</property>
|
||||
<property name="icon_size">1</property>
|
||||
@ -1345,7 +1345,7 @@
|
||||
<signal name="activate" handler="on_show_color_chooser1_activate" last_modification_time="Wed, 22 Jun 2005 18:10:21 GMT"/>
|
||||
|
||||
<child internal-child="image">
|
||||
<widget class="GtkImage" id="image1792">
|
||||
<widget class="GtkImage" id="image1893">
|
||||
<property name="visible">True</property>
|
||||
<property name="stock">gtk-select-color</property>
|
||||
<property name="icon_size">1</property>
|
||||
@ -1376,49 +1376,6 @@
|
||||
<signal name="activate" handler="on_menu_insert_special_chars1_activate" last_modification_time="Tue, 12 Dec 2006 22:03:01 GMT"/>
|
||||
</widget>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkImageMenuItem" id="menu_create_class1">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">Create cla_ss</property>
|
||||
<property name="use_underline">True</property>
|
||||
|
||||
<child internal-child="image">
|
||||
<widget class="GtkImage" id="image1861">
|
||||
<property name="visible">True</property>
|
||||
<property name="stock">gtk-add</property>
|
||||
<property name="icon_size">1</property>
|
||||
<property name="xalign">0.5</property>
|
||||
<property name="yalign">0.5</property>
|
||||
<property name="xpad">0</property>
|
||||
<property name="ypad">0</property>
|
||||
</widget>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkMenu" id="menu_create_class1_menu">
|
||||
|
||||
<child>
|
||||
<widget class="GtkMenuItem" id="menu_create_cpp_class">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">C++ class</property>
|
||||
<property name="use_underline">True</property>
|
||||
<signal name="activate" handler="on_menu_create_cpp_class_activate" last_modification_time="Mon, 11 Jun 2007 10:49:53 GMT"/>
|
||||
</widget>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkMenuItem" id="menu_create_gtk_class">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">GTK+ class</property>
|
||||
<property name="use_underline">True</property>
|
||||
<signal name="activate" handler="on_menu_create_gtk_class_activate" last_modification_time="Mon, 11 Jun 2007 10:50:17 GMT"/>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
@ -1431,7 +1388,7 @@
|
||||
<property name="use_underline">True</property>
|
||||
|
||||
<child>
|
||||
<widget class="GtkMenu" id="menu_item5_menu">
|
||||
<widget class="GtkMenu" id="menu_help1_menu">
|
||||
|
||||
<child>
|
||||
<widget class="GtkImageMenuItem" id="help1">
|
||||
@ -2698,7 +2655,7 @@
|
||||
<signal name="activate" handler="on_menu_increase_indent1_activate" last_modification_time="Tue, 01 Aug 2006 10:31:38 GMT"/>
|
||||
|
||||
<child internal-child="image">
|
||||
<widget class="GtkImage" id="image1693">
|
||||
<widget class="GtkImage" id="image1894">
|
||||
<property name="visible">True</property>
|
||||
<property name="stock">gtk-indent</property>
|
||||
<property name="icon_size">1</property>
|
||||
@ -2719,7 +2676,7 @@
|
||||
<signal name="activate" handler="on_menu_decrease_indent1_activate" last_modification_time="Tue, 01 Aug 2006 10:31:38 GMT"/>
|
||||
|
||||
<child internal-child="image">
|
||||
<widget class="GtkImage" id="image1694">
|
||||
<widget class="GtkImage" id="image1895">
|
||||
<property name="visible">True</property>
|
||||
<property name="stock">gtk-unindent</property>
|
||||
<property name="icon_size">1</property>
|
||||
@ -2775,7 +2732,7 @@
|
||||
<property name="use_underline">True</property>
|
||||
|
||||
<child internal-child="image">
|
||||
<widget class="GtkImage" id="image1695">
|
||||
<widget class="GtkImage" id="image1896">
|
||||
<property name="visible">True</property>
|
||||
<property name="stock">gtk-add</property>
|
||||
<property name="icon_size">1</property>
|
||||
@ -2807,7 +2764,7 @@
|
||||
<property name="use_underline">True</property>
|
||||
|
||||
<child internal-child="image">
|
||||
<widget class="GtkImage" id="image1696">
|
||||
<widget class="GtkImage" id="image1897">
|
||||
<property name="visible">True</property>
|
||||
<property name="stock">gtk-add</property>
|
||||
<property name="icon_size">1</property>
|
||||
@ -2875,7 +2832,7 @@
|
||||
<widget class="GtkMenuItem" id="insert_bsd_license_notice1">
|
||||
<property name="visible">True</property>
|
||||
<property name="tooltip" translatable="yes">Inserts a BSD licence notice (should be done at the beginning of the file)</property>
|
||||
<property name="label" translatable="yes">Insert BSD license Notice</property>
|
||||
<property name="label" translatable="yes">Insert BSD License Notice</property>
|
||||
<property name="use_underline">True</property>
|
||||
<signal name="activate" handler="on_comments_bsd_activate" last_modification_time="Fri, 05 Jan 2007 13:32:16 GMT"/>
|
||||
</widget>
|
||||
@ -2892,7 +2849,7 @@
|
||||
<property name="use_underline">True</property>
|
||||
|
||||
<child internal-child="image">
|
||||
<widget class="GtkImage" id="image1697">
|
||||
<widget class="GtkImage" id="image1898">
|
||||
<property name="visible">True</property>
|
||||
<property name="stock">gtk-add</property>
|
||||
<property name="icon_size">1</property>
|
||||
@ -2931,7 +2888,7 @@
|
||||
<signal name="activate" handler="on_find_usage1_activate" last_modification_time="Fri, 27 May 2005 21:55:12 GMT"/>
|
||||
|
||||
<child internal-child="image">
|
||||
<widget class="GtkImage" id="image1698">
|
||||
<widget class="GtkImage" id="image1899">
|
||||
<property name="visible">True</property>
|
||||
<property name="stock">gtk-find</property>
|
||||
<property name="icon_size">1</property>
|
||||
@ -2986,7 +2943,7 @@
|
||||
<signal name="activate" handler="on_go_to_line_activate" last_modification_time="Sat, 16 Jul 2005 11:20:32 GMT"/>
|
||||
|
||||
<child internal-child="image">
|
||||
<widget class="GtkImage" id="image1699">
|
||||
<widget class="GtkImage" id="image1900">
|
||||
<property name="visible">True</property>
|
||||
<property name="stock">gtk-jump-to</property>
|
||||
<property name="icon_size">1</property>
|
||||
|
||||
@ -8,20 +8,24 @@ AM_CFLAGS = -Wall
|
||||
plugindir = $(libdir)/geany
|
||||
|
||||
demoplugin_la_LDFLAGS = -module -avoid-version
|
||||
classbuilder_la_LDFLAGS = -module -avoid-version
|
||||
|
||||
if PLUGINS
|
||||
|
||||
# Plugins to be installed
|
||||
plugin_LTLIBRARIES = \
|
||||
demoplugin.la
|
||||
demoplugin.la \
|
||||
classbuilder.la
|
||||
|
||||
# Plugins not to be installed
|
||||
#noinst_LTLIBRARIES = \
|
||||
#demoplugin.la
|
||||
|
||||
demoplugin_la_SOURCES = demoplugin.c
|
||||
classbuilder_la_SOURCES = classbuilder.c
|
||||
|
||||
demoplugin_la_LIBADD = $(GTK_LIBS)
|
||||
classbuilder_la_LIBADD = $(GTK_LIBS)
|
||||
|
||||
endif # PLUGINS
|
||||
|
||||
|
||||
859
plugins/classbuilder.c
Normal file
859
plugins/classbuilder.c
Normal file
@ -0,0 +1,859 @@
|
||||
/*
|
||||
* classbuilder.c - this file is part of Geany, a fast and lightweight IDE
|
||||
*
|
||||
* Copyright 2007 Alexander Rodin <rodin(dot)alexander(at)gmail(dot)com>
|
||||
* Copyright 2007 Enrico Tröger <enrico.troeger@uvena.de>
|
||||
* Copyright 2007 Nick Treleaven <nick.treleaven@btinternet.com>
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
/* Class Builder - creates source files containing a new class interface and definition. */
|
||||
|
||||
#include "geany.h"
|
||||
#include "plugindata.h"
|
||||
#include "support.h"
|
||||
#include "filetypes.h"
|
||||
#include "document.h"
|
||||
|
||||
|
||||
enum
|
||||
{
|
||||
GEANY_CLASS_TYPE_CPP,
|
||||
GEANY_CLASS_TYPE_GTK
|
||||
};
|
||||
|
||||
typedef struct _ClassInfo ClassInfo;
|
||||
|
||||
struct _ClassInfo
|
||||
{
|
||||
gint type;
|
||||
gchar *class_name;
|
||||
gchar *class_name_up;
|
||||
gchar *class_name_low;
|
||||
gchar *base_name;
|
||||
gchar *base_gtype;
|
||||
gchar *header;
|
||||
gchar *header_guard;
|
||||
gchar *base_include;
|
||||
gchar *base_decl;
|
||||
gchar *constructor_decl;
|
||||
gchar *destructor_decl;
|
||||
gchar *source;
|
||||
gchar *constructor_impl;
|
||||
gchar *destructor_impl;
|
||||
gchar *gtk_destructor_registration;
|
||||
};
|
||||
|
||||
typedef struct _CreateClassDialog
|
||||
{
|
||||
gint class_type;
|
||||
GtkWidget *dialog;
|
||||
GtkWidget *class_name_entry;
|
||||
GtkWidget *header_entry;
|
||||
GtkWidget *source_entry;
|
||||
GtkWidget *base_name_entry;
|
||||
GtkWidget *base_header_entry;
|
||||
GtkWidget *base_header_global_box;
|
||||
GtkWidget *base_gtype_entry;
|
||||
GtkWidget *create_constructor_box;
|
||||
GtkWidget *create_destructor_box;
|
||||
GtkWidget *gtk_constructor_type_entry;
|
||||
} CreateClassDialog;
|
||||
|
||||
|
||||
static PluginData *plugin_data;
|
||||
|
||||
#define doc_array plugin_data->doc_array
|
||||
// can't use document as a macro because it's currently a typename
|
||||
#define documents plugin_data->document
|
||||
#define scintilla plugin_data->sci
|
||||
#define templates plugin_data->templates
|
||||
#define utils plugin_data->utils
|
||||
|
||||
|
||||
static struct
|
||||
{
|
||||
GtkWidget *menu_item;
|
||||
}
|
||||
local_data;
|
||||
|
||||
|
||||
static const gchar templates_cpp_class_header[] = "{fileheader}\n\n\
|
||||
#ifndef {header_guard}\n\
|
||||
#define {header_guard}\n\
|
||||
{base_include}\n\
|
||||
class {class_name}{base_decl}\n\
|
||||
{\n\
|
||||
public:\n\
|
||||
{constructor_decl}\
|
||||
{destructor_decl}\
|
||||
\n\
|
||||
private:\n\
|
||||
// add your private declarations\n\
|
||||
};\n\
|
||||
\n\
|
||||
#endif // {header_guard}\n\
|
||||
";
|
||||
|
||||
static const gchar templates_cpp_class_source[] = "{fileheader}\n\n\
|
||||
#include \"{header}\"\n\
|
||||
\n\
|
||||
{constructor_impl}\n\
|
||||
{destructor_impl}\n\
|
||||
";
|
||||
|
||||
static const gchar templates_gtk_class_header[] = "{fileheader}\n\n\
|
||||
#ifndef __{header_guard}__\n\
|
||||
#define __{header_guard}__\n\
|
||||
{base_include}\n\
|
||||
G_BEGIN_DECLS\n\
|
||||
\n\
|
||||
#define {class_name_up}_TYPE ({class_name_low}_get_type())\n\
|
||||
#define {class_name_up}(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),\\\n\
|
||||
{class_name_up}_TYPE, {class_name}))\n\
|
||||
#define {class_name_up}_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),\\\n\
|
||||
{class_name_up}_TYPE, {class_name}Class))\n\
|
||||
#define IS_{class_name_up}(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),\\\n\
|
||||
{class_name_up}_TYPE))\n\
|
||||
#define IS_{class_name_up}_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),\\\n\
|
||||
{class_name_up}_TYPE))\n\
|
||||
\n\
|
||||
typedef struct _{class_name} {class_name};\n\
|
||||
typedef struct _{class_name}Class {class_name}Class;\n\
|
||||
\n\
|
||||
struct _{class_name}\n\
|
||||
{\n\
|
||||
{base_name} parent;\n\
|
||||
/* add your public declarations here */\n\
|
||||
};\n\
|
||||
\n\
|
||||
struct _{class_name}Class\n\
|
||||
{\n\
|
||||
{base_name}Class parent_class;\n\
|
||||
};\n\
|
||||
\n\
|
||||
GType {class_name_low}_get_type (void);\n\
|
||||
{constructor_decl}\
|
||||
\n\
|
||||
G_END_DECLS\n\
|
||||
\n\
|
||||
#endif /* __{header_guard}__ */\n\
|
||||
";
|
||||
|
||||
static const gchar templates_gtk_class_source[] = "{fileheader}\n\
|
||||
#include \"{header}\"\n\
|
||||
\n\
|
||||
typedef struct _{class_name}Private {class_name}Private;\n\
|
||||
\n\
|
||||
#define {class_name_up}_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE((obj),\\\n\
|
||||
{class_name_up}_TYPE, {class_name}Private))\n\
|
||||
\n\
|
||||
struct _{class_name}Private\n\
|
||||
{\n\
|
||||
/* add your private declarations here */\n\
|
||||
};\n\
|
||||
\n\
|
||||
static void {class_name_low}_class_init ({class_name}Class *klass);\n\
|
||||
static void {class_name_low}_init ({class_name} *self);\n\
|
||||
{destructor_decl}\
|
||||
\n\
|
||||
/* Local data */\n\
|
||||
static {base_name}Class *parent_class = NULL;\n\
|
||||
\n\
|
||||
GType {class_name_low}_get_type(void)\n\
|
||||
{\n\
|
||||
static GType self_type = 0;\n\
|
||||
if (! self_type)\n\
|
||||
{\n\
|
||||
static const GTypeInfo self_info = \n\
|
||||
{\n\
|
||||
sizeof({class_name}Class),\n\
|
||||
NULL, /* base_init */\n\
|
||||
NULL, /* base_finalize */\n\
|
||||
(GClassInitFunc){class_name_low}_class_init,\n\
|
||||
NULL, /* class_finalize */\n\
|
||||
NULL, /* class_data */\n\
|
||||
sizeof({class_name}),\n\
|
||||
0,\n\
|
||||
(GInstanceInitFunc){class_name_low}_init,\n\
|
||||
};\n\
|
||||
\n\
|
||||
self_type = g_type_register_static({base_gtype}, \"{class_name}\", &self_info, 0);\
|
||||
}\n\
|
||||
\n\
|
||||
return self_type;\n\
|
||||
}\n\
|
||||
\n\
|
||||
static void {class_name_low}_class_init({class_name}Class *klass)\n\
|
||||
{\n\
|
||||
{gtk_destructor_registration}\n\
|
||||
parent_class = ({base_name}Class*)g_type_class_peek({base_gtype});\n\
|
||||
g_type_class_add_private((gpointer)klass, sizeof({class_name}Private));\n\
|
||||
}\n\
|
||||
\n\
|
||||
static void {class_name_low}_init({class_name} *self)\n\
|
||||
{\n\
|
||||
\n\
|
||||
}\n\
|
||||
\n\
|
||||
{constructor_impl}\n\
|
||||
{destructor_impl}\n\
|
||||
";
|
||||
|
||||
|
||||
static void cc_dlg_on_set_sensitive_toggled(GtkWidget *toggle_button, GtkWidget *target_widget);
|
||||
static void cc_dlg_on_class_name_entry_changed(GtkWidget *entry, CreateClassDialog *cc_dlg);
|
||||
static void cc_dlg_on_base_name_entry_changed(GtkWidget *entry, CreateClassDialog *cc_dlg);
|
||||
static void cc_dlg_on_create_class(CreateClassDialog *cc_dlg);
|
||||
|
||||
|
||||
VERSION_CHECK(3)
|
||||
|
||||
PLUGIN_INFO(_("Class Builder"), _("Creates source files for new class types."))
|
||||
|
||||
|
||||
/* I don't want this to be in the plugin API because it can cause leaks if any pointers
|
||||
* are NULL -ntrel. */
|
||||
/* Frees all passed pointers if they are *ALL* non-NULL.
|
||||
* Do not use if any pointers may be NULL.
|
||||
* The first argument is nothing special, it will also be freed.
|
||||
* The list must be ended with NULL. */
|
||||
static void
|
||||
utils_free_pointers(gpointer first, ...)
|
||||
{
|
||||
va_list a;
|
||||
gpointer sa;
|
||||
|
||||
for (va_start(a, first); (sa = va_arg(a, gpointer), sa!=NULL);)
|
||||
{
|
||||
if (sa != NULL)
|
||||
g_free(sa);
|
||||
}
|
||||
va_end(a);
|
||||
|
||||
if (first != NULL)
|
||||
g_free(first);
|
||||
}
|
||||
|
||||
|
||||
static gchar*
|
||||
get_template_class_header(ClassInfo *class_info)
|
||||
{
|
||||
switch (class_info->type)
|
||||
{
|
||||
case GEANY_CLASS_TYPE_CPP:
|
||||
{
|
||||
gchar *fileheader = NULL;
|
||||
gchar *template;
|
||||
|
||||
fileheader = templates->get_template_fileheader(GEANY_FILETYPES_C, class_info->header);
|
||||
template = g_strdup(templates_cpp_class_header);
|
||||
template = utils->str_replace(template, "{fileheader}", fileheader);
|
||||
template = utils->str_replace(template, "{header_guard}", class_info->header_guard);
|
||||
template = utils->str_replace(template, "{base_include}", class_info->base_include);
|
||||
template = utils->str_replace(template, "{class_name}", class_info->class_name);
|
||||
template = utils->str_replace(template, "{base_decl}", class_info->base_decl);
|
||||
template = utils->str_replace(template, "{constructor_decl}",
|
||||
class_info->constructor_decl);
|
||||
template = utils->str_replace(template, "{destructor_decl}",
|
||||
class_info->destructor_decl);
|
||||
|
||||
return template;
|
||||
}
|
||||
case GEANY_CLASS_TYPE_GTK:
|
||||
{
|
||||
gchar *fileheader = NULL;
|
||||
gchar *template;
|
||||
|
||||
fileheader = templates->get_template_fileheader(GEANY_FILETYPES_C, class_info->header);
|
||||
template = g_strdup(templates_gtk_class_header);
|
||||
template = utils->str_replace(template, "{fileheader}", fileheader);
|
||||
template = utils->str_replace(template, "{header_guard}", class_info->header_guard);
|
||||
template = utils->str_replace(template, "{base_include}", class_info->base_include);
|
||||
template = utils->str_replace(template, "{class_name}", class_info->class_name);
|
||||
template = utils->str_replace(template, "{class_name_up}", class_info->class_name_up);
|
||||
template = utils->str_replace(template, "{class_name_low}", class_info->class_name_low);
|
||||
template = utils->str_replace(template, "{base_name}", class_info->base_name);
|
||||
template = utils->str_replace(template, "{constructor_decl}",
|
||||
class_info->constructor_decl);
|
||||
|
||||
return template;
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static gchar*
|
||||
get_template_class_source(ClassInfo *class_info)
|
||||
{
|
||||
switch (class_info->type)
|
||||
{
|
||||
case GEANY_CLASS_TYPE_CPP:
|
||||
{
|
||||
gchar *fileheader = NULL;
|
||||
gchar *template;
|
||||
|
||||
fileheader = templates->get_template_fileheader(GEANY_FILETYPES_C, class_info->source);
|
||||
template = g_strdup(templates_cpp_class_source);
|
||||
template = utils->str_replace(template, "{fileheader}", fileheader);
|
||||
template = utils->str_replace(template, "{header}", class_info->header);
|
||||
template = utils->str_replace(template, "{class_name}", class_info->class_name);
|
||||
template = utils->str_replace(template, "{base_include}", class_info->base_include);
|
||||
template = utils->str_replace(template, "{base_name}", class_info->base_name);
|
||||
template = utils->str_replace(template, "{constructor_impl}",
|
||||
class_info->constructor_impl);
|
||||
template = utils->str_replace(template, "{destructor_impl}",
|
||||
class_info->destructor_impl);
|
||||
|
||||
return template;
|
||||
}
|
||||
case GEANY_CLASS_TYPE_GTK:
|
||||
{
|
||||
gchar *fileheader = NULL;
|
||||
gchar *template;
|
||||
|
||||
fileheader = templates->get_template_fileheader(GEANY_FILETYPES_C, class_info->source);
|
||||
template = g_strdup(templates_gtk_class_source);
|
||||
template = utils->str_replace(template, "{fileheader}", fileheader);
|
||||
template = utils->str_replace(template, "{header}", class_info->header);
|
||||
template = utils->str_replace(template, "{class_name}", class_info->class_name);
|
||||
template = utils->str_replace(template, "{class_name_up}", class_info->class_name_up);
|
||||
template = utils->str_replace(template, "{class_name_low}", class_info->class_name_low);
|
||||
template = utils->str_replace(template, "{base_name}", class_info->base_name);
|
||||
template = utils->str_replace(template, "{base_gtype}", class_info->base_gtype);
|
||||
template = utils->str_replace(template, "{destructor_decl}", class_info->destructor_decl);
|
||||
template = utils->str_replace(template, "{constructor_impl}",
|
||||
class_info->constructor_impl);
|
||||
template = utils->str_replace(template, "{destructor_impl}",
|
||||
class_info->destructor_impl);
|
||||
template = utils->str_replace(template, "{gtk_destructor_registration}",
|
||||
class_info->gtk_destructor_registration);
|
||||
|
||||
return template;
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
void show_dialog_create_class(gint type)
|
||||
{
|
||||
CreateClassDialog *cc_dlg;
|
||||
GtkWidget *main_box;
|
||||
GtkWidget *frame;
|
||||
GtkWidget *vbox;
|
||||
GtkWidget *hbox;
|
||||
GtkWidget *label;
|
||||
|
||||
cc_dlg = g_new0(CreateClassDialog, 1);
|
||||
cc_dlg->class_type = type;
|
||||
|
||||
cc_dlg->dialog = gtk_dialog_new_with_buttons(_("Create class"),
|
||||
GTK_WINDOW(plugin_data->app->window),
|
||||
GTK_DIALOG_MODAL,
|
||||
GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT,
|
||||
GTK_STOCK_OK, GTK_RESPONSE_OK,
|
||||
NULL);
|
||||
gtk_container_set_border_width(GTK_CONTAINER(cc_dlg->dialog), 5);
|
||||
g_signal_connect_swapped(G_OBJECT(cc_dlg->dialog), "destroy",
|
||||
G_CALLBACK(g_free), (gpointer)cc_dlg);
|
||||
|
||||
main_box = GTK_DIALOG(cc_dlg->dialog)->vbox;
|
||||
gtk_box_set_spacing(GTK_BOX(main_box), 10);
|
||||
|
||||
frame = gtk_frame_new(_("Class"));
|
||||
gtk_container_add(GTK_CONTAINER(main_box), frame);
|
||||
gtk_widget_show(frame);
|
||||
|
||||
vbox = gtk_vbox_new(FALSE, 10);
|
||||
gtk_container_set_border_width(GTK_CONTAINER(vbox), 5);
|
||||
gtk_container_add(GTK_CONTAINER(frame), vbox);
|
||||
gtk_widget_show(vbox);
|
||||
|
||||
hbox = gtk_hbox_new(FALSE, 10);
|
||||
gtk_container_add(GTK_CONTAINER(vbox), hbox);
|
||||
gtk_widget_show(hbox);
|
||||
|
||||
label = gtk_label_new(_("Class name:"));
|
||||
gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
|
||||
gtk_widget_show(label);
|
||||
|
||||
cc_dlg->class_name_entry = gtk_entry_new();
|
||||
gtk_box_pack_start(GTK_BOX(hbox), cc_dlg->class_name_entry, TRUE, TRUE, 0);
|
||||
gtk_widget_show(cc_dlg->class_name_entry);
|
||||
g_signal_connect(G_OBJECT(cc_dlg->class_name_entry), "changed",
|
||||
G_CALLBACK(cc_dlg_on_class_name_entry_changed), cc_dlg);
|
||||
|
||||
hbox = gtk_hbox_new(FALSE, 10);
|
||||
gtk_container_add(GTK_CONTAINER(vbox), hbox);
|
||||
gtk_widget_show(hbox);
|
||||
|
||||
label = gtk_label_new(_("Header file:"));
|
||||
gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
|
||||
gtk_widget_show(label);
|
||||
|
||||
cc_dlg->header_entry = gtk_entry_new();
|
||||
gtk_container_add(GTK_CONTAINER(hbox), cc_dlg->header_entry);
|
||||
gtk_widget_show(cc_dlg->header_entry);
|
||||
|
||||
hbox = gtk_hbox_new(FALSE, 10);
|
||||
gtk_container_add(GTK_CONTAINER(vbox), hbox);
|
||||
gtk_widget_show(hbox);
|
||||
|
||||
label = gtk_label_new(_("Source file:"));
|
||||
gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
|
||||
gtk_widget_show(label);
|
||||
|
||||
cc_dlg->source_entry = gtk_entry_new();
|
||||
gtk_container_add(GTK_CONTAINER(hbox), cc_dlg->source_entry);
|
||||
gtk_widget_show(cc_dlg->source_entry);
|
||||
|
||||
frame = gtk_frame_new(_("Inheritance"));
|
||||
gtk_container_add(GTK_CONTAINER(main_box), frame);
|
||||
gtk_widget_show(frame);
|
||||
|
||||
vbox = gtk_vbox_new(FALSE, 10);
|
||||
gtk_container_set_border_width(GTK_CONTAINER(vbox), 5);
|
||||
gtk_container_add(GTK_CONTAINER(frame), vbox);
|
||||
gtk_widget_show(vbox);
|
||||
|
||||
hbox = gtk_hbox_new(FALSE, 10);
|
||||
gtk_container_add(GTK_CONTAINER(vbox), hbox);
|
||||
gtk_widget_show(hbox);
|
||||
|
||||
label = gtk_label_new(_("Base class:"));
|
||||
gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
|
||||
gtk_widget_show(label);
|
||||
|
||||
cc_dlg->base_name_entry = gtk_entry_new();
|
||||
if (type == GEANY_CLASS_TYPE_GTK)
|
||||
gtk_entry_set_text(GTK_ENTRY(cc_dlg->base_name_entry), "GObject");
|
||||
gtk_container_add(GTK_CONTAINER(hbox), cc_dlg->base_name_entry);
|
||||
gtk_widget_show(cc_dlg->base_name_entry);
|
||||
g_signal_connect(G_OBJECT(cc_dlg->base_name_entry), "changed",
|
||||
G_CALLBACK(cc_dlg_on_base_name_entry_changed), (gpointer)cc_dlg);
|
||||
|
||||
hbox = gtk_hbox_new(FALSE, 10);
|
||||
gtk_container_add(GTK_CONTAINER(vbox), hbox);
|
||||
gtk_widget_show(hbox);
|
||||
|
||||
label = gtk_label_new(_("Base header:"));
|
||||
gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
|
||||
gtk_widget_show(label);
|
||||
|
||||
cc_dlg->base_header_entry = gtk_entry_new();
|
||||
if (type == GEANY_CLASS_TYPE_GTK)
|
||||
gtk_entry_set_text(GTK_ENTRY(cc_dlg->base_header_entry), "glib-object.h");
|
||||
gtk_container_add(GTK_CONTAINER(hbox), cc_dlg->base_header_entry);
|
||||
gtk_widget_show(cc_dlg->base_header_entry);
|
||||
|
||||
cc_dlg->base_header_global_box = gtk_check_button_new_with_label(_("Global"));
|
||||
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cc_dlg->base_header_global_box), TRUE);
|
||||
gtk_box_pack_end(GTK_BOX(hbox), cc_dlg->base_header_global_box, FALSE, FALSE, 0);
|
||||
gtk_widget_show(cc_dlg->base_header_global_box);
|
||||
|
||||
if (type == GEANY_CLASS_TYPE_GTK)
|
||||
{
|
||||
hbox = gtk_hbox_new(FALSE, 10);
|
||||
gtk_container_add(GTK_CONTAINER(vbox), hbox);
|
||||
gtk_widget_show(hbox);
|
||||
|
||||
label = gtk_label_new(_("Base GType:"));
|
||||
gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
|
||||
gtk_widget_show(label);
|
||||
|
||||
cc_dlg->base_gtype_entry = gtk_entry_new();
|
||||
gtk_entry_set_text(GTK_ENTRY(cc_dlg->base_gtype_entry), "GTK_TYPE_OBJECT");
|
||||
gtk_container_add(GTK_CONTAINER(hbox), cc_dlg->base_gtype_entry);
|
||||
gtk_widget_show(cc_dlg->base_gtype_entry);
|
||||
}
|
||||
|
||||
frame = gtk_frame_new(_("Options"));
|
||||
gtk_container_add(GTK_CONTAINER(main_box), frame);
|
||||
gtk_widget_show(frame);
|
||||
|
||||
vbox = gtk_vbox_new(FALSE, 10);
|
||||
gtk_container_add(GTK_CONTAINER(frame), vbox);
|
||||
gtk_widget_show(vbox);
|
||||
|
||||
hbox = gtk_hbox_new(FALSE, 10);
|
||||
gtk_container_add(GTK_CONTAINER(vbox), hbox);
|
||||
gtk_widget_show(hbox);
|
||||
|
||||
cc_dlg->create_constructor_box = gtk_check_button_new_with_label(_("Create constructor"));
|
||||
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cc_dlg->create_constructor_box), TRUE);
|
||||
gtk_container_add(GTK_CONTAINER(hbox), cc_dlg->create_constructor_box);
|
||||
gtk_widget_show(cc_dlg->create_constructor_box);
|
||||
|
||||
cc_dlg->create_destructor_box = gtk_check_button_new_with_label(_("Create destructor"));
|
||||
gtk_container_add(GTK_CONTAINER(hbox), cc_dlg->create_destructor_box);
|
||||
gtk_widget_show(cc_dlg->create_destructor_box);
|
||||
|
||||
if (type == GEANY_CLASS_TYPE_GTK)
|
||||
{
|
||||
hbox = gtk_hbox_new(FALSE, 10);
|
||||
gtk_container_add(GTK_CONTAINER(vbox), hbox);
|
||||
gtk_widget_show(hbox);
|
||||
g_signal_connect(G_OBJECT(cc_dlg->create_constructor_box), "toggled",
|
||||
G_CALLBACK(cc_dlg_on_set_sensitive_toggled), (gpointer)hbox);
|
||||
|
||||
label = gtk_label_new(_("GTK+ constructor type"));
|
||||
gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
|
||||
gtk_widget_show(label);
|
||||
|
||||
cc_dlg->gtk_constructor_type_entry = gtk_entry_new();
|
||||
gtk_entry_set_text(GTK_ENTRY(cc_dlg->gtk_constructor_type_entry), "GObject");
|
||||
gtk_container_add(GTK_CONTAINER(hbox), cc_dlg->gtk_constructor_type_entry);
|
||||
gtk_widget_show(cc_dlg->gtk_constructor_type_entry);
|
||||
}
|
||||
|
||||
if (gtk_dialog_run(GTK_DIALOG(cc_dlg->dialog)) == GTK_RESPONSE_OK)
|
||||
cc_dlg_on_create_class(cc_dlg);
|
||||
|
||||
gtk_widget_destroy(cc_dlg->dialog);
|
||||
// g_object_unref(G_OBJECT(cc_dlg->dialog));
|
||||
}
|
||||
|
||||
|
||||
static void cc_dlg_on_set_sensitive_toggled(GtkWidget *toggle_button, GtkWidget *target_widget)
|
||||
{
|
||||
g_return_if_fail(toggle_button != NULL);
|
||||
g_return_if_fail(GTK_IS_TOGGLE_BUTTON(toggle_button));
|
||||
g_return_if_fail(target_widget != NULL);
|
||||
g_return_if_fail(GTK_IS_WIDGET(target_widget));
|
||||
|
||||
gtk_widget_set_sensitive(target_widget,
|
||||
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toggle_button)));
|
||||
}
|
||||
|
||||
|
||||
static void cc_dlg_on_class_name_entry_changed(GtkWidget *entry, CreateClassDialog *cc_dlg)
|
||||
{
|
||||
gchar *class_name_down;
|
||||
gchar *class_header;
|
||||
gchar *class_source;
|
||||
|
||||
g_return_if_fail(entry != NULL);
|
||||
g_return_if_fail(GTK_IS_ENTRY(entry));
|
||||
g_return_if_fail(cc_dlg != NULL);
|
||||
|
||||
class_name_down = g_ascii_strdown(gtk_entry_get_text(GTK_ENTRY(entry)), -1);
|
||||
class_header = g_strconcat(class_name_down, ".h", NULL);
|
||||
if (cc_dlg->class_type == GEANY_CLASS_TYPE_CPP)
|
||||
class_source = g_strconcat(class_name_down, ".cpp", NULL);
|
||||
else
|
||||
class_source = g_strconcat(class_name_down, ".c", NULL);
|
||||
|
||||
gtk_entry_set_text(GTK_ENTRY(cc_dlg->header_entry), class_header);
|
||||
gtk_entry_set_text(GTK_ENTRY(cc_dlg->source_entry), class_source);
|
||||
|
||||
g_free(class_name_down);
|
||||
g_free(class_header);
|
||||
g_free(class_source);
|
||||
}
|
||||
|
||||
|
||||
static gchar* str_case_split(const gchar *str, gchar splitter)
|
||||
{
|
||||
GString *result;
|
||||
|
||||
g_return_val_if_fail(str != NULL, NULL);
|
||||
if (*str == '\0')
|
||||
return g_strdup("");
|
||||
|
||||
result = g_string_new(NULL);
|
||||
g_string_append_c(result, *str);
|
||||
while (*(++str) != '\0')
|
||||
{
|
||||
if (g_ascii_isupper(*str) && g_ascii_islower(result->str[result->len - 1]))
|
||||
g_string_append_c(result, splitter);
|
||||
g_string_append_c(result, *str);
|
||||
}
|
||||
return g_string_free(result, FALSE);
|
||||
}
|
||||
|
||||
|
||||
static void cc_dlg_on_base_name_entry_changed(GtkWidget *entry, CreateClassDialog *cc_dlg)
|
||||
{
|
||||
gchar *base_name_splitted;
|
||||
gchar *base_header;
|
||||
gchar *tmp;
|
||||
|
||||
g_return_if_fail(entry != NULL);
|
||||
g_return_if_fail(GTK_IS_ENTRY(entry));
|
||||
g_return_if_fail(cc_dlg != NULL);
|
||||
|
||||
base_name_splitted = str_case_split(gtk_entry_get_text(GTK_ENTRY(entry)), '_');
|
||||
if (! g_ascii_strncasecmp(gtk_entry_get_text(GTK_ENTRY(entry)), "gtk", 3))
|
||||
tmp = g_strconcat("gtk/", gtk_entry_get_text(GTK_ENTRY(entry)), ".h", NULL);
|
||||
else if (utils->str_equal(gtk_entry_get_text(GTK_ENTRY(entry)), "GObject"))
|
||||
tmp = g_strdup("glib-object.h");
|
||||
else
|
||||
tmp = g_strconcat(gtk_entry_get_text(GTK_ENTRY(entry)), ".h", NULL);
|
||||
base_header = g_ascii_strdown(tmp, -1);
|
||||
g_free(tmp);
|
||||
|
||||
gtk_entry_set_text(GTK_ENTRY(cc_dlg->base_header_entry), base_header);
|
||||
|
||||
if (cc_dlg->class_type == GEANY_CLASS_TYPE_GTK)
|
||||
{
|
||||
gchar *base_gtype;
|
||||
if (! g_ascii_strncasecmp(gtk_entry_get_text(GTK_ENTRY(entry)), "gtk", 3))
|
||||
tmp = g_strdup_printf("%.3s_TYPE%s",
|
||||
base_name_splitted,
|
||||
base_name_splitted + 3);
|
||||
else if (utils->str_equal(gtk_entry_get_text(GTK_ENTRY(entry)), "GObject"))
|
||||
tmp = g_strdup("G_TYPE_OBJECT");
|
||||
else
|
||||
tmp = g_strconcat(base_name_splitted, "_TYPE", NULL);
|
||||
base_gtype = g_ascii_strup(tmp, -1);
|
||||
gtk_entry_set_text(GTK_ENTRY(cc_dlg->base_gtype_entry), base_gtype);
|
||||
|
||||
g_free(base_gtype);
|
||||
g_free(tmp);
|
||||
}
|
||||
|
||||
g_free(base_name_splitted);
|
||||
g_free(base_header);
|
||||
}
|
||||
|
||||
|
||||
static void cc_dlg_on_create_class(CreateClassDialog *cc_dlg)
|
||||
{
|
||||
ClassInfo *class_info;
|
||||
gint idx;
|
||||
gchar *text;
|
||||
gchar *tmp;
|
||||
|
||||
g_return_if_fail(cc_dlg != NULL);
|
||||
|
||||
if (utils->str_equal(gtk_entry_get_text(GTK_ENTRY(cc_dlg->class_name_entry)), ""))
|
||||
return;
|
||||
|
||||
class_info = g_new0(ClassInfo, 1);
|
||||
class_info->type = cc_dlg->class_type;
|
||||
class_info->class_name = g_strdup(gtk_entry_get_text(GTK_ENTRY(cc_dlg->class_name_entry)));
|
||||
tmp = str_case_split(class_info->class_name, '_');
|
||||
class_info->class_name_up = g_ascii_strup(tmp, -1);
|
||||
class_info->class_name_low = g_ascii_strdown(class_info->class_name_up, -1);
|
||||
if (! utils->str_equal(gtk_entry_get_text(GTK_ENTRY(cc_dlg->base_name_entry)), ""))
|
||||
{
|
||||
class_info->base_name = g_strdup(gtk_entry_get_text(GTK_ENTRY(cc_dlg->base_name_entry)));
|
||||
class_info->base_include = g_strdup_printf("\n#include %c%s%c\n",
|
||||
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(cc_dlg->base_header_global_box)) ?
|
||||
'<' : '\"',
|
||||
gtk_entry_get_text(GTK_ENTRY(cc_dlg->base_header_entry)),
|
||||
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(cc_dlg->base_header_global_box)) ?
|
||||
'>' : '\"');
|
||||
}
|
||||
else
|
||||
{
|
||||
class_info->base_name = g_strdup("");
|
||||
class_info->base_include = g_strdup("");
|
||||
}
|
||||
class_info->header = g_strdup(gtk_entry_get_text(GTK_ENTRY(cc_dlg->header_entry)));
|
||||
class_info->header_guard = g_ascii_strup(class_info->header, -1);
|
||||
g_strdelimit(class_info->header_guard, ".", '_');
|
||||
switch (class_info->type)
|
||||
{
|
||||
case GEANY_CLASS_TYPE_CPP:
|
||||
{
|
||||
class_info->source = g_strdup(gtk_entry_get_text(GTK_ENTRY(cc_dlg->source_entry)));
|
||||
if (! utils->str_equal(class_info->base_name, ""))
|
||||
class_info->base_decl = g_strdup_printf(": public %s", class_info->base_name);
|
||||
else
|
||||
class_info->base_decl = g_strdup("");
|
||||
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(cc_dlg->create_constructor_box)))
|
||||
{
|
||||
gchar *base_constructor;
|
||||
|
||||
if (utils->str_equal(class_info->base_name, ""))
|
||||
base_constructor = g_strdup("");
|
||||
else
|
||||
base_constructor = g_strdup_printf("\t: %s()\n", class_info->base_name);
|
||||
class_info->constructor_decl = g_strdup_printf("%s();\n", class_info->class_name);
|
||||
class_info->constructor_impl = g_strdup_printf("\n%s::%s()\n%s{\n\t\n}\n",
|
||||
class_info->class_name, class_info->class_name, base_constructor);
|
||||
g_free(base_constructor);
|
||||
}
|
||||
else
|
||||
{
|
||||
class_info->constructor_decl = g_strdup("");
|
||||
class_info->constructor_impl = g_strdup("");
|
||||
}
|
||||
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(cc_dlg->create_destructor_box)))
|
||||
{
|
||||
class_info->destructor_decl =
|
||||
g_strdup_printf("virtual ~%s();\n", class_info->class_name);
|
||||
class_info->destructor_impl = g_strdup_printf("\n%s::~%s()\n{\n\t\n}\n",
|
||||
class_info->class_name, class_info->class_name);
|
||||
}
|
||||
else
|
||||
{
|
||||
class_info->destructor_decl = g_strdup("");
|
||||
class_info->destructor_impl = g_strdup("");
|
||||
}
|
||||
break;
|
||||
}
|
||||
case GEANY_CLASS_TYPE_GTK:
|
||||
{
|
||||
class_info->base_gtype = g_strdup(gtk_entry_get_text(
|
||||
GTK_ENTRY(cc_dlg->base_gtype_entry)));
|
||||
class_info->source = g_strdup(gtk_entry_get_text(GTK_ENTRY(cc_dlg->source_entry)));
|
||||
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(cc_dlg->create_constructor_box)))
|
||||
{
|
||||
class_info->constructor_decl = g_strdup_printf("%s*\t%s_new\t\t\t(void);\n",
|
||||
gtk_entry_get_text(GTK_ENTRY(cc_dlg->gtk_constructor_type_entry)),
|
||||
class_info->class_name_low);
|
||||
class_info->constructor_impl = g_strdup_printf("\n"
|
||||
"%s* %s_new(void)\n"
|
||||
"{\n"
|
||||
"\treturn (%s*)g_object_new(%s_TYPE, NULL);\n"
|
||||
"}\n",
|
||||
gtk_entry_get_text(GTK_ENTRY(cc_dlg->gtk_constructor_type_entry)),
|
||||
class_info->class_name_low,
|
||||
gtk_entry_get_text(GTK_ENTRY(cc_dlg->gtk_constructor_type_entry)),
|
||||
class_info->class_name_up);
|
||||
}
|
||||
else
|
||||
{
|
||||
class_info->constructor_decl = g_strdup("");
|
||||
class_info->constructor_impl = g_strdup("");
|
||||
}
|
||||
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(cc_dlg->create_destructor_box)))
|
||||
{
|
||||
class_info->gtk_destructor_registration =
|
||||
g_strdup_printf("GObjectClass *g_object_class;\n\n"
|
||||
"\tg_object_class = G_OBJECT_CLASS(klass);\n\n"
|
||||
"\tg_object_class->finalize = %s_finalize;\n",
|
||||
class_info->class_name_low);
|
||||
class_info->destructor_decl =
|
||||
g_strdup_printf("static void %s_finalize\t\t\t(GObject *object);\n",
|
||||
class_info->class_name_low);
|
||||
class_info->destructor_impl = g_strdup_printf("\n"
|
||||
"void %s_finalize(GObject *object)\n"
|
||||
"{\n"
|
||||
"\t%s *self;\n\n"
|
||||
"\tg_return_if_fail(object != NULL);\n"
|
||||
"\tg_return_if_fail(IS_%s(object));\n\n"
|
||||
"\tself = %s(object);\n\n"
|
||||
"\tif (G_OBJECT_CLASS(parent_class)->finalize)\n"
|
||||
"\t\t(* G_OBJECT_CLASS(parent_class)->finalize)(object);\n"
|
||||
"}\n",
|
||||
class_info->class_name_low,
|
||||
class_info->class_name,
|
||||
class_info->class_name_up,
|
||||
class_info->class_name_up);
|
||||
}
|
||||
else
|
||||
{
|
||||
class_info->gtk_destructor_registration = g_strdup("");
|
||||
class_info->destructor_decl = g_strdup("");
|
||||
class_info->destructor_impl = g_strdup("");
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// only create the files if the filename is not empty
|
||||
if (! utils->str_equal(class_info->source, ""))
|
||||
{
|
||||
text = get_template_class_source(class_info);
|
||||
idx = documents->new_file(class_info->source, NULL);
|
||||
scintilla->set_text(doc_list[idx].sci, text);
|
||||
g_free(text);
|
||||
}
|
||||
|
||||
if (! utils->str_equal(class_info->header, ""))
|
||||
{
|
||||
text = get_template_class_header(class_info);
|
||||
idx = documents->new_file(class_info->header, NULL);
|
||||
scintilla->set_text(doc_list[idx].sci, text);
|
||||
g_free(text);
|
||||
}
|
||||
|
||||
utils_free_pointers(tmp, class_info->class_name, class_info->class_name_up,
|
||||
class_info->base_name, class_info->class_name_low, class_info->base_include,
|
||||
class_info->header, class_info->header_guard, class_info->source, class_info->base_decl,
|
||||
class_info->constructor_decl, class_info->constructor_impl,
|
||||
class_info->gtk_destructor_registration, class_info->destructor_decl,
|
||||
class_info->destructor_impl, class_info->base_gtype, class_info, NULL);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
on_menu_create_cpp_class_activate (GtkMenuItem *menuitem,
|
||||
gpointer user_data)
|
||||
{
|
||||
show_dialog_create_class(GEANY_CLASS_TYPE_CPP);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
on_menu_create_gtk_class_activate (GtkMenuItem *menuitem,
|
||||
gpointer user_data)
|
||||
{
|
||||
show_dialog_create_class(GEANY_CLASS_TYPE_GTK);
|
||||
}
|
||||
|
||||
|
||||
void init(PluginData *data)
|
||||
{
|
||||
GtkWidget *menu_create_class1;
|
||||
GtkWidget *image1861;
|
||||
GtkWidget *menu_create_class1_menu;
|
||||
GtkWidget *menu_create_cpp_class;
|
||||
GtkWidget *menu_create_gtk_class;
|
||||
|
||||
plugin_data = data;
|
||||
|
||||
menu_create_class1 = gtk_image_menu_item_new_with_mnemonic (_("Create Cla_ss"));
|
||||
gtk_container_add (GTK_CONTAINER (data->tools_menu), menu_create_class1);
|
||||
|
||||
image1861 = gtk_image_new_from_stock ("gtk-add", GTK_ICON_SIZE_MENU);
|
||||
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_create_class1), image1861);
|
||||
|
||||
menu_create_class1_menu = gtk_menu_new ();
|
||||
gtk_menu_item_set_submenu (GTK_MENU_ITEM (menu_create_class1), menu_create_class1_menu);
|
||||
|
||||
menu_create_cpp_class = gtk_menu_item_new_with_mnemonic (_("C++ class"));
|
||||
gtk_container_add (GTK_CONTAINER (menu_create_class1_menu), menu_create_cpp_class);
|
||||
|
||||
menu_create_gtk_class = gtk_menu_item_new_with_mnemonic (_("GTK+ class"));
|
||||
gtk_container_add (GTK_CONTAINER (menu_create_class1_menu), menu_create_gtk_class);
|
||||
|
||||
g_signal_connect ((gpointer) menu_create_cpp_class, "activate",
|
||||
G_CALLBACK (on_menu_create_cpp_class_activate),
|
||||
NULL);
|
||||
g_signal_connect ((gpointer) menu_create_gtk_class, "activate",
|
||||
G_CALLBACK (on_menu_create_gtk_class_activate),
|
||||
NULL);
|
||||
|
||||
gtk_widget_show_all(menu_create_class1);
|
||||
|
||||
local_data.menu_item = menu_create_class1;
|
||||
}
|
||||
|
||||
|
||||
void cleanup()
|
||||
{
|
||||
gtk_widget_destroy(local_data.menu_item);
|
||||
}
|
||||
@ -33,3 +33,4 @@ src/ui_utils.c
|
||||
src/utils.c
|
||||
src/vte.c
|
||||
src/win32.c
|
||||
plugins/classbuilder.c
|
||||
|
||||
@ -1587,8 +1587,14 @@ on_comments_fileheader_activate (GtkMenuItem *menuitem,
|
||||
{
|
||||
gint idx = document_get_cur_idx();
|
||||
gchar *text;
|
||||
gchar *fname;
|
||||
filetype *ft;
|
||||
|
||||
text = templates_get_template_fileheader(idx);
|
||||
g_return_if_fail(DOC_IDX_VALID(idx));
|
||||
|
||||
ft = doc_list[idx].file_type;
|
||||
fname = doc_list[idx].file_name;
|
||||
text = templates_get_template_fileheader(FILETYPE_ID(ft), fname);
|
||||
|
||||
sci_insert_text(doc_list[idx].sci, 0, text);
|
||||
sci_goto_pos(doc_list[idx].sci, 0, FALSE);
|
||||
@ -2300,18 +2306,3 @@ gboolean on_motion_event(GtkWidget *widget, GdkEventMotion *event, gpointer user
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
on_menu_create_cpp_class_activate (GtkMenuItem *menuitem,
|
||||
gpointer user_data)
|
||||
{
|
||||
tools_show_dialog_create_class(GEANY_CLASS_TYPE_CPP);
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
on_menu_create_gtk_class_activate (GtkMenuItem *menuitem,
|
||||
gpointer user_data)
|
||||
{
|
||||
tools_show_dialog_create_class(GEANY_CLASS_TYPE_GTK);
|
||||
}
|
||||
|
||||
|
||||
@ -617,10 +617,3 @@ on_motion_event (GtkWidget *widget,
|
||||
GdkEventMotion *event,
|
||||
gpointer user_data);
|
||||
|
||||
void
|
||||
on_menu_create_cpp_class_activate (GtkMenuItem *menuitem,
|
||||
gpointer user_data);
|
||||
|
||||
void
|
||||
on_menu_create_gtk_class_activate (GtkMenuItem *menuitem,
|
||||
gpointer user_data);
|
||||
|
||||
371
src/interface.c
371
src/interface.c
@ -37,7 +37,7 @@ create_window1 (void)
|
||||
GtkWidget *file1_menu;
|
||||
GtkWidget *menu_new1;
|
||||
GtkWidget *menu_new_with_template1;
|
||||
GtkWidget *image1776;
|
||||
GtkWidget *image1877;
|
||||
GtkWidget *menu_new_with_template1_menu;
|
||||
GtkWidget *invisible2;
|
||||
GtkWidget *separator12;
|
||||
@ -48,11 +48,11 @@ create_window1 (void)
|
||||
GtkWidget *menu_save1;
|
||||
GtkWidget *menu_save_as1;
|
||||
GtkWidget *menu_save_all1;
|
||||
GtkWidget *image1777;
|
||||
GtkWidget *image1878;
|
||||
GtkWidget *menu_reload1;
|
||||
GtkWidget *image1778;
|
||||
GtkWidget *image1879;
|
||||
GtkWidget *menu_reload_as1;
|
||||
GtkWidget *image1779;
|
||||
GtkWidget *image1880;
|
||||
GtkWidget *menu_reload_as1_menu;
|
||||
GtkWidget *invisible7;
|
||||
GtkWidget *separator21;
|
||||
@ -64,7 +64,7 @@ create_window1 (void)
|
||||
GtkWidget *separator14;
|
||||
GtkWidget *menu_close1;
|
||||
GtkWidget *menu_close_all1;
|
||||
GtkWidget *image1780;
|
||||
GtkWidget *image1881;
|
||||
GtkWidget *menu_separatormenuitem1;
|
||||
GtkWidget *menu_quit1;
|
||||
GtkWidget *edit1;
|
||||
@ -90,20 +90,20 @@ create_window1 (void)
|
||||
GtkWidget *menu_duplicate_line1;
|
||||
GtkWidget *separator29;
|
||||
GtkWidget *menu_increase_indent1;
|
||||
GtkWidget *image1781;
|
||||
GtkWidget *image1882;
|
||||
GtkWidget *menu_decrease_indent1;
|
||||
GtkWidget *image1782;
|
||||
GtkWidget *image1883;
|
||||
GtkWidget *separator37;
|
||||
GtkWidget *send_selection_to2;
|
||||
GtkWidget *send_selection_to2_menu;
|
||||
GtkWidget *invisible13;
|
||||
GtkWidget *separator18;
|
||||
GtkWidget *insert_include2;
|
||||
GtkWidget *image1783;
|
||||
GtkWidget *image1884;
|
||||
GtkWidget *insert_include2_menu;
|
||||
GtkWidget *invisible4;
|
||||
GtkWidget *add_comments1;
|
||||
GtkWidget *image1784;
|
||||
GtkWidget *image1885;
|
||||
GtkWidget *add_comments1_menu;
|
||||
GtkWidget *menu_add_changelog_entry1;
|
||||
GtkWidget *insert_file_header1;
|
||||
@ -112,7 +112,7 @@ create_window1 (void)
|
||||
GtkWidget *insert_gpl_notice2;
|
||||
GtkWidget *insert_bsd_license_notice2;
|
||||
GtkWidget *insert_date1;
|
||||
GtkWidget *image1785;
|
||||
GtkWidget *image1886;
|
||||
GtkWidget *insert_date1_menu;
|
||||
GtkWidget *invisible8;
|
||||
GtkWidget *separator9;
|
||||
@ -124,7 +124,7 @@ create_window1 (void)
|
||||
GtkWidget *find_previous1;
|
||||
GtkWidget *find_in_files1;
|
||||
GtkWidget *replace1;
|
||||
GtkWidget *image1786;
|
||||
GtkWidget *image1887;
|
||||
GtkWidget *separator33;
|
||||
GtkWidget *find_nextsel1;
|
||||
GtkWidget *find_prevsel1;
|
||||
@ -132,11 +132,11 @@ create_window1 (void)
|
||||
GtkWidget *next_message1;
|
||||
GtkWidget *separator32;
|
||||
GtkWidget *go_to_line1;
|
||||
GtkWidget *image1787;
|
||||
GtkWidget *image1888;
|
||||
GtkWidget *menu_view1;
|
||||
GtkWidget *menuitem3_menu;
|
||||
GtkWidget *menu_view1_menu;
|
||||
GtkWidget *menu_change_font1;
|
||||
GtkWidget *image1788;
|
||||
GtkWidget *image1889;
|
||||
GtkWidget *menu_separator4;
|
||||
GtkWidget *menu_toggle_all_additional_widgets1;
|
||||
GtkWidget *menu_fullscreen1;
|
||||
@ -150,7 +150,7 @@ create_window1 (void)
|
||||
GtkWidget *menu_zoom_out1;
|
||||
GtkWidget *normal_size1;
|
||||
GtkWidget *menu_document1;
|
||||
GtkWidget *menu_item4_menu;
|
||||
GtkWidget *menu_document1_menu;
|
||||
GtkWidget *menu_line_breaking1;
|
||||
GtkWidget *menu_use_auto_indentation1;
|
||||
GtkWidget *set_file_readonly1;
|
||||
@ -179,27 +179,22 @@ create_window1 (void)
|
||||
GtkWidget *menu_project1;
|
||||
GtkWidget *menu_project1_menu;
|
||||
GtkWidget *project_new1;
|
||||
GtkWidget *image1789;
|
||||
GtkWidget *image1890;
|
||||
GtkWidget *project_open1;
|
||||
GtkWidget *image1790;
|
||||
GtkWidget *image1891;
|
||||
GtkWidget *project_close1;
|
||||
GtkWidget *image1791;
|
||||
GtkWidget *image1892;
|
||||
GtkWidget *separator34;
|
||||
GtkWidget *project_properties1;
|
||||
GtkWidget *menu_build1;
|
||||
GtkWidget *tools1;
|
||||
GtkWidget *tools1_menu;
|
||||
GtkWidget *menu_choose_color1;
|
||||
GtkWidget *image1792;
|
||||
GtkWidget *image1893;
|
||||
GtkWidget *menu_count_words1;
|
||||
GtkWidget *menu_insert_special_chars1;
|
||||
GtkWidget *menu_create_class1;
|
||||
GtkWidget *image1861;
|
||||
GtkWidget *menu_create_class1_menu;
|
||||
GtkWidget *menu_create_cpp_class;
|
||||
GtkWidget *menu_create_gtk_class;
|
||||
GtkWidget *menu_help1;
|
||||
GtkWidget *menu_item5_menu;
|
||||
GtkWidget *menu_help1_menu;
|
||||
GtkWidget *help1;
|
||||
GtkWidget *keyboard_shortcuts1;
|
||||
GtkWidget *website1;
|
||||
@ -300,9 +295,9 @@ create_window1 (void)
|
||||
gtk_widget_show (menu_new_with_template1);
|
||||
gtk_container_add (GTK_CONTAINER (file1_menu), menu_new_with_template1);
|
||||
|
||||
image1776 = gtk_image_new_from_stock ("gtk-new", GTK_ICON_SIZE_MENU);
|
||||
gtk_widget_show (image1776);
|
||||
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_new_with_template1), image1776);
|
||||
image1877 = gtk_image_new_from_stock ("gtk-new", GTK_ICON_SIZE_MENU);
|
||||
gtk_widget_show (image1877);
|
||||
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_new_with_template1), image1877);
|
||||
|
||||
menu_new_with_template1_menu = gtk_menu_new ();
|
||||
gtk_menu_item_set_submenu (GTK_MENU_ITEM (menu_new_with_template1), menu_new_with_template1_menu);
|
||||
@ -345,25 +340,25 @@ create_window1 (void)
|
||||
gtk_container_add (GTK_CONTAINER (file1_menu), menu_save_all1);
|
||||
gtk_tooltips_set_tip (tooltips, menu_save_all1, _("Saves all open files"), NULL);
|
||||
|
||||
image1777 = gtk_image_new_from_stock ("gtk-save", GTK_ICON_SIZE_MENU);
|
||||
gtk_widget_show (image1777);
|
||||
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_save_all1), image1777);
|
||||
image1878 = gtk_image_new_from_stock ("gtk-save", GTK_ICON_SIZE_MENU);
|
||||
gtk_widget_show (image1878);
|
||||
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_save_all1), image1878);
|
||||
|
||||
menu_reload1 = gtk_image_menu_item_new_with_mnemonic (_("_Reload"));
|
||||
gtk_widget_show (menu_reload1);
|
||||
gtk_container_add (GTK_CONTAINER (file1_menu), menu_reload1);
|
||||
|
||||
image1778 = gtk_image_new_from_stock ("gtk-revert-to-saved", GTK_ICON_SIZE_MENU);
|
||||
gtk_widget_show (image1778);
|
||||
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_reload1), image1778);
|
||||
image1879 = gtk_image_new_from_stock ("gtk-revert-to-saved", GTK_ICON_SIZE_MENU);
|
||||
gtk_widget_show (image1879);
|
||||
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_reload1), image1879);
|
||||
|
||||
menu_reload_as1 = gtk_image_menu_item_new_with_mnemonic (_("R_eload As"));
|
||||
gtk_widget_show (menu_reload_as1);
|
||||
gtk_container_add (GTK_CONTAINER (file1_menu), menu_reload_as1);
|
||||
|
||||
image1779 = gtk_image_new_from_stock ("gtk-revert-to-saved", GTK_ICON_SIZE_MENU);
|
||||
gtk_widget_show (image1779);
|
||||
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_reload_as1), image1779);
|
||||
image1880 = gtk_image_new_from_stock ("gtk-revert-to-saved", GTK_ICON_SIZE_MENU);
|
||||
gtk_widget_show (image1880);
|
||||
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_reload_as1), image1880);
|
||||
|
||||
menu_reload_as1_menu = gtk_menu_new ();
|
||||
gtk_menu_item_set_submenu (GTK_MENU_ITEM (menu_reload_as1), menu_reload_as1_menu);
|
||||
@ -414,9 +409,9 @@ create_window1 (void)
|
||||
gtk_container_add (GTK_CONTAINER (file1_menu), menu_close_all1);
|
||||
gtk_tooltips_set_tip (tooltips, menu_close_all1, _("Closes all open files"), NULL);
|
||||
|
||||
image1780 = gtk_image_new_from_stock ("gtk-close", GTK_ICON_SIZE_MENU);
|
||||
gtk_widget_show (image1780);
|
||||
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_close_all1), image1780);
|
||||
image1881 = gtk_image_new_from_stock ("gtk-close", GTK_ICON_SIZE_MENU);
|
||||
gtk_widget_show (image1881);
|
||||
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_close_all1), image1881);
|
||||
|
||||
menu_separatormenuitem1 = gtk_separator_menu_item_new ();
|
||||
gtk_widget_show (menu_separatormenuitem1);
|
||||
@ -524,17 +519,17 @@ create_window1 (void)
|
||||
gtk_widget_show (menu_increase_indent1);
|
||||
gtk_container_add (GTK_CONTAINER (menu_format1_menu), menu_increase_indent1);
|
||||
|
||||
image1781 = gtk_image_new_from_stock ("gtk-indent", GTK_ICON_SIZE_MENU);
|
||||
gtk_widget_show (image1781);
|
||||
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_increase_indent1), image1781);
|
||||
image1882 = gtk_image_new_from_stock ("gtk-indent", GTK_ICON_SIZE_MENU);
|
||||
gtk_widget_show (image1882);
|
||||
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_increase_indent1), image1882);
|
||||
|
||||
menu_decrease_indent1 = gtk_image_menu_item_new_with_mnemonic (_("_Decrease Indent"));
|
||||
gtk_widget_show (menu_decrease_indent1);
|
||||
gtk_container_add (GTK_CONTAINER (menu_format1_menu), menu_decrease_indent1);
|
||||
|
||||
image1782 = gtk_image_new_from_stock ("gtk-unindent", GTK_ICON_SIZE_MENU);
|
||||
gtk_widget_show (image1782);
|
||||
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_decrease_indent1), image1782);
|
||||
image1883 = gtk_image_new_from_stock ("gtk-unindent", GTK_ICON_SIZE_MENU);
|
||||
gtk_widget_show (image1883);
|
||||
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_decrease_indent1), image1883);
|
||||
|
||||
separator37 = gtk_separator_menu_item_new ();
|
||||
gtk_widget_show (separator37);
|
||||
@ -560,9 +555,9 @@ create_window1 (void)
|
||||
gtk_widget_show (insert_include2);
|
||||
gtk_container_add (GTK_CONTAINER (edit1_menu), insert_include2);
|
||||
|
||||
image1783 = gtk_image_new_from_stock ("gtk-add", GTK_ICON_SIZE_MENU);
|
||||
gtk_widget_show (image1783);
|
||||
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (insert_include2), image1783);
|
||||
image1884 = gtk_image_new_from_stock ("gtk-add", GTK_ICON_SIZE_MENU);
|
||||
gtk_widget_show (image1884);
|
||||
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (insert_include2), image1884);
|
||||
|
||||
insert_include2_menu = gtk_menu_new ();
|
||||
gtk_menu_item_set_submenu (GTK_MENU_ITEM (insert_include2), insert_include2_menu);
|
||||
@ -574,9 +569,9 @@ create_window1 (void)
|
||||
gtk_widget_show (add_comments1);
|
||||
gtk_container_add (GTK_CONTAINER (edit1_menu), add_comments1);
|
||||
|
||||
image1784 = gtk_image_new_from_stock ("gtk-add", GTK_ICON_SIZE_MENU);
|
||||
gtk_widget_show (image1784);
|
||||
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (add_comments1), image1784);
|
||||
image1885 = gtk_image_new_from_stock ("gtk-add", GTK_ICON_SIZE_MENU);
|
||||
gtk_widget_show (image1885);
|
||||
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (add_comments1), image1885);
|
||||
|
||||
add_comments1_menu = gtk_menu_new ();
|
||||
gtk_menu_item_set_submenu (GTK_MENU_ITEM (add_comments1), add_comments1_menu);
|
||||
@ -615,9 +610,9 @@ create_window1 (void)
|
||||
gtk_widget_show (insert_date1);
|
||||
gtk_container_add (GTK_CONTAINER (edit1_menu), insert_date1);
|
||||
|
||||
image1785 = gtk_image_new_from_stock ("gtk-add", GTK_ICON_SIZE_MENU);
|
||||
gtk_widget_show (image1785);
|
||||
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (insert_date1), image1785);
|
||||
image1886 = gtk_image_new_from_stock ("gtk-add", GTK_ICON_SIZE_MENU);
|
||||
gtk_widget_show (image1886);
|
||||
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (insert_date1), image1886);
|
||||
|
||||
insert_date1_menu = gtk_menu_new ();
|
||||
gtk_menu_item_set_submenu (GTK_MENU_ITEM (insert_date1), insert_date1_menu);
|
||||
@ -661,9 +656,9 @@ create_window1 (void)
|
||||
gtk_widget_show (replace1);
|
||||
gtk_container_add (GTK_CONTAINER (search1_menu), replace1);
|
||||
|
||||
image1786 = gtk_image_new_from_stock ("gtk-find-and-replace", GTK_ICON_SIZE_MENU);
|
||||
gtk_widget_show (image1786);
|
||||
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (replace1), image1786);
|
||||
image1887 = gtk_image_new_from_stock ("gtk-find-and-replace", GTK_ICON_SIZE_MENU);
|
||||
gtk_widget_show (image1887);
|
||||
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (replace1), image1887);
|
||||
|
||||
separator33 = gtk_separator_menu_item_new ();
|
||||
gtk_widget_show (separator33);
|
||||
@ -696,120 +691,120 @@ create_window1 (void)
|
||||
gtk_widget_show (go_to_line1);
|
||||
gtk_container_add (GTK_CONTAINER (search1_menu), go_to_line1);
|
||||
|
||||
image1787 = gtk_image_new_from_stock ("gtk-jump-to", GTK_ICON_SIZE_MENU);
|
||||
gtk_widget_show (image1787);
|
||||
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (go_to_line1), image1787);
|
||||
image1888 = gtk_image_new_from_stock ("gtk-jump-to", GTK_ICON_SIZE_MENU);
|
||||
gtk_widget_show (image1888);
|
||||
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (go_to_line1), image1888);
|
||||
|
||||
menu_view1 = gtk_menu_item_new_with_mnemonic (_("_View"));
|
||||
gtk_widget_show (menu_view1);
|
||||
gtk_container_add (GTK_CONTAINER (menubar1), menu_view1);
|
||||
|
||||
menuitem3_menu = gtk_menu_new ();
|
||||
gtk_menu_item_set_submenu (GTK_MENU_ITEM (menu_view1), menuitem3_menu);
|
||||
menu_view1_menu = gtk_menu_new ();
|
||||
gtk_menu_item_set_submenu (GTK_MENU_ITEM (menu_view1), menu_view1_menu);
|
||||
|
||||
menu_change_font1 = gtk_image_menu_item_new_with_mnemonic (_("Change _Font"));
|
||||
gtk_widget_show (menu_change_font1);
|
||||
gtk_container_add (GTK_CONTAINER (menuitem3_menu), menu_change_font1);
|
||||
gtk_container_add (GTK_CONTAINER (menu_view1_menu), menu_change_font1);
|
||||
gtk_tooltips_set_tip (tooltips, menu_change_font1, _("Change the default font"), NULL);
|
||||
|
||||
image1788 = gtk_image_new_from_stock ("gtk-select-font", GTK_ICON_SIZE_MENU);
|
||||
gtk_widget_show (image1788);
|
||||
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_change_font1), image1788);
|
||||
image1889 = gtk_image_new_from_stock ("gtk-select-font", GTK_ICON_SIZE_MENU);
|
||||
gtk_widget_show (image1889);
|
||||
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_change_font1), image1889);
|
||||
|
||||
menu_separator4 = gtk_separator_menu_item_new ();
|
||||
gtk_widget_show (menu_separator4);
|
||||
gtk_container_add (GTK_CONTAINER (menuitem3_menu), menu_separator4);
|
||||
gtk_container_add (GTK_CONTAINER (menu_view1_menu), menu_separator4);
|
||||
gtk_widget_set_sensitive (menu_separator4, FALSE);
|
||||
|
||||
menu_toggle_all_additional_widgets1 = gtk_menu_item_new_with_mnemonic (_("Toggle all additional widgets"));
|
||||
menu_toggle_all_additional_widgets1 = gtk_menu_item_new_with_mnemonic (_("Toggle All Additional Widgets"));
|
||||
gtk_widget_show (menu_toggle_all_additional_widgets1);
|
||||
gtk_container_add (GTK_CONTAINER (menuitem3_menu), menu_toggle_all_additional_widgets1);
|
||||
gtk_container_add (GTK_CONTAINER (menu_view1_menu), menu_toggle_all_additional_widgets1);
|
||||
|
||||
menu_fullscreen1 = gtk_check_menu_item_new_with_mnemonic (_("Full_screen"));
|
||||
gtk_widget_show (menu_fullscreen1);
|
||||
gtk_container_add (GTK_CONTAINER (menuitem3_menu), menu_fullscreen1);
|
||||
gtk_container_add (GTK_CONTAINER (menu_view1_menu), menu_fullscreen1);
|
||||
|
||||
menu_show_messages_window1 = gtk_check_menu_item_new_with_mnemonic (_("Show Message _Window"));
|
||||
gtk_widget_show (menu_show_messages_window1);
|
||||
gtk_container_add (GTK_CONTAINER (menuitem3_menu), menu_show_messages_window1);
|
||||
gtk_container_add (GTK_CONTAINER (menu_view1_menu), menu_show_messages_window1);
|
||||
gtk_tooltips_set_tip (tooltips, menu_show_messages_window1, _("Toggle the window with status and compiler messages on and off"), NULL);
|
||||
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_show_messages_window1), TRUE);
|
||||
|
||||
menu_show_toolbar1 = gtk_check_menu_item_new_with_mnemonic (_("Show _Toolbar"));
|
||||
gtk_widget_show (menu_show_toolbar1);
|
||||
gtk_container_add (GTK_CONTAINER (menuitem3_menu), menu_show_toolbar1);
|
||||
gtk_container_add (GTK_CONTAINER (menu_view1_menu), menu_show_toolbar1);
|
||||
gtk_tooltips_set_tip (tooltips, menu_show_toolbar1, _("Toggle the toolbar on and off"), NULL);
|
||||
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_show_toolbar1), TRUE);
|
||||
|
||||
menu_show_sidebar1 = gtk_check_menu_item_new_with_mnemonic (_("Show Side_bar"));
|
||||
gtk_widget_show (menu_show_sidebar1);
|
||||
gtk_container_add (GTK_CONTAINER (menuitem3_menu), menu_show_sidebar1);
|
||||
gtk_container_add (GTK_CONTAINER (menu_view1_menu), menu_show_sidebar1);
|
||||
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_show_sidebar1), TRUE);
|
||||
|
||||
menu_markers_margin1 = gtk_check_menu_item_new_with_mnemonic (_("Show _Markers Margin"));
|
||||
gtk_widget_show (menu_markers_margin1);
|
||||
gtk_container_add (GTK_CONTAINER (menuitem3_menu), menu_markers_margin1);
|
||||
gtk_container_add (GTK_CONTAINER (menu_view1_menu), menu_markers_margin1);
|
||||
gtk_tooltips_set_tip (tooltips, menu_markers_margin1, _("Shows or hides the small margin right of the line numbers, which is used to mark lines."), NULL);
|
||||
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_markers_margin1), TRUE);
|
||||
|
||||
menu_linenumber_margin1 = gtk_check_menu_item_new_with_mnemonic (_("Show _Line Numbers"));
|
||||
gtk_widget_show (menu_linenumber_margin1);
|
||||
gtk_container_add (GTK_CONTAINER (menuitem3_menu), menu_linenumber_margin1);
|
||||
gtk_container_add (GTK_CONTAINER (menu_view1_menu), menu_linenumber_margin1);
|
||||
gtk_tooltips_set_tip (tooltips, menu_linenumber_margin1, _("Shows or hides the Line Number margin."), NULL);
|
||||
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_linenumber_margin1), TRUE);
|
||||
|
||||
menu_separator5 = gtk_separator_menu_item_new ();
|
||||
gtk_widget_show (menu_separator5);
|
||||
gtk_container_add (GTK_CONTAINER (menuitem3_menu), menu_separator5);
|
||||
gtk_container_add (GTK_CONTAINER (menu_view1_menu), menu_separator5);
|
||||
gtk_widget_set_sensitive (menu_separator5, FALSE);
|
||||
|
||||
menu_zoom_in1 = gtk_image_menu_item_new_from_stock ("gtk-zoom-in", accel_group);
|
||||
gtk_widget_show (menu_zoom_in1);
|
||||
gtk_container_add (GTK_CONTAINER (menuitem3_menu), menu_zoom_in1);
|
||||
gtk_container_add (GTK_CONTAINER (menu_view1_menu), menu_zoom_in1);
|
||||
|
||||
menu_zoom_out1 = gtk_image_menu_item_new_from_stock ("gtk-zoom-out", accel_group);
|
||||
gtk_widget_show (menu_zoom_out1);
|
||||
gtk_container_add (GTK_CONTAINER (menuitem3_menu), menu_zoom_out1);
|
||||
gtk_container_add (GTK_CONTAINER (menu_view1_menu), menu_zoom_out1);
|
||||
|
||||
normal_size1 = gtk_image_menu_item_new_from_stock ("gtk-zoom-100", accel_group);
|
||||
gtk_widget_show (normal_size1);
|
||||
gtk_container_add (GTK_CONTAINER (menuitem3_menu), normal_size1);
|
||||
gtk_container_add (GTK_CONTAINER (menu_view1_menu), normal_size1);
|
||||
|
||||
menu_document1 = gtk_menu_item_new_with_mnemonic (_("_Document"));
|
||||
gtk_widget_show (menu_document1);
|
||||
gtk_container_add (GTK_CONTAINER (menubar1), menu_document1);
|
||||
|
||||
menu_item4_menu = gtk_menu_new ();
|
||||
gtk_menu_item_set_submenu (GTK_MENU_ITEM (menu_document1), menu_item4_menu);
|
||||
menu_document1_menu = gtk_menu_new ();
|
||||
gtk_menu_item_set_submenu (GTK_MENU_ITEM (menu_document1), menu_document1_menu);
|
||||
|
||||
menu_line_breaking1 = gtk_check_menu_item_new_with_mnemonic (_("_Line Wrapping"));
|
||||
gtk_widget_show (menu_line_breaking1);
|
||||
gtk_container_add (GTK_CONTAINER (menu_item4_menu), menu_line_breaking1);
|
||||
gtk_container_add (GTK_CONTAINER (menu_document1_menu), menu_line_breaking1);
|
||||
gtk_tooltips_set_tip (tooltips, menu_line_breaking1, _("Wrap the line at the window border and continue it on the next line. Note: line wrapping has a high performance cost for large documents so should be disabled on slow machines."), NULL);
|
||||
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_line_breaking1), TRUE);
|
||||
|
||||
menu_use_auto_indentation1 = gtk_check_menu_item_new_with_mnemonic (_("_Use Auto-indentation"));
|
||||
gtk_widget_show (menu_use_auto_indentation1);
|
||||
gtk_container_add (GTK_CONTAINER (menu_item4_menu), menu_use_auto_indentation1);
|
||||
gtk_container_add (GTK_CONTAINER (menu_document1_menu), menu_use_auto_indentation1);
|
||||
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_use_auto_indentation1), TRUE);
|
||||
|
||||
set_file_readonly1 = gtk_check_menu_item_new_with_mnemonic (_("Read _Only"));
|
||||
gtk_widget_show (set_file_readonly1);
|
||||
gtk_container_add (GTK_CONTAINER (menu_item4_menu), set_file_readonly1);
|
||||
gtk_container_add (GTK_CONTAINER (menu_document1_menu), set_file_readonly1);
|
||||
gtk_tooltips_set_tip (tooltips, set_file_readonly1, _("Treat this file as read-only. No changes can be made."), NULL);
|
||||
|
||||
menu_write_unicode_bom1 = gtk_check_menu_item_new_with_mnemonic (_("_Write Unicode BOM"));
|
||||
gtk_widget_show (menu_write_unicode_bom1);
|
||||
gtk_container_add (GTK_CONTAINER (menu_item4_menu), menu_write_unicode_bom1);
|
||||
gtk_container_add (GTK_CONTAINER (menu_document1_menu), menu_write_unicode_bom1);
|
||||
|
||||
separator10 = gtk_separator_menu_item_new ();
|
||||
gtk_widget_show (separator10);
|
||||
gtk_container_add (GTK_CONTAINER (menu_item4_menu), separator10);
|
||||
gtk_container_add (GTK_CONTAINER (menu_document1_menu), separator10);
|
||||
gtk_widget_set_sensitive (separator10, FALSE);
|
||||
|
||||
set_filetype1 = gtk_menu_item_new_with_mnemonic (_("Set File_type"));
|
||||
gtk_widget_show (set_filetype1);
|
||||
gtk_container_add (GTK_CONTAINER (menu_item4_menu), set_filetype1);
|
||||
gtk_container_add (GTK_CONTAINER (menu_document1_menu), set_filetype1);
|
||||
|
||||
set_filetype1_menu = gtk_menu_new ();
|
||||
gtk_menu_item_set_submenu (GTK_MENU_ITEM (set_filetype1), set_filetype1_menu);
|
||||
@ -819,7 +814,7 @@ create_window1 (void)
|
||||
|
||||
set_encoding1 = gtk_menu_item_new_with_mnemonic (_("Set _Encoding"));
|
||||
gtk_widget_show (set_encoding1);
|
||||
gtk_container_add (GTK_CONTAINER (menu_item4_menu), set_encoding1);
|
||||
gtk_container_add (GTK_CONTAINER (menu_document1_menu), set_encoding1);
|
||||
|
||||
set_encoding1_menu = gtk_menu_new ();
|
||||
gtk_menu_item_set_submenu (GTK_MENU_ITEM (set_encoding1), set_encoding1_menu);
|
||||
@ -829,7 +824,7 @@ create_window1 (void)
|
||||
|
||||
menu_line_endings1 = gtk_menu_item_new_with_mnemonic (_("Set Line E_ndings"));
|
||||
gtk_widget_show (menu_line_endings1);
|
||||
gtk_container_add (GTK_CONTAINER (menu_item4_menu), menu_line_endings1);
|
||||
gtk_container_add (GTK_CONTAINER (menu_document1_menu), menu_line_endings1);
|
||||
|
||||
menu_line_endings1_menu = gtk_menu_new ();
|
||||
gtk_menu_item_set_submenu (GTK_MENU_ITEM (menu_line_endings1), menu_line_endings1_menu);
|
||||
@ -854,41 +849,41 @@ create_window1 (void)
|
||||
|
||||
separator8 = gtk_separator_menu_item_new ();
|
||||
gtk_widget_show (separator8);
|
||||
gtk_container_add (GTK_CONTAINER (menu_item4_menu), separator8);
|
||||
gtk_container_add (GTK_CONTAINER (menu_document1_menu), separator8);
|
||||
gtk_widget_set_sensitive (separator8, FALSE);
|
||||
|
||||
menu_replace_tabs = gtk_menu_item_new_with_mnemonic (_("_Replace Tabs by Spaces"));
|
||||
gtk_widget_show (menu_replace_tabs);
|
||||
gtk_container_add (GTK_CONTAINER (menu_item4_menu), menu_replace_tabs);
|
||||
gtk_container_add (GTK_CONTAINER (menu_document1_menu), menu_replace_tabs);
|
||||
gtk_tooltips_set_tip (tooltips, menu_replace_tabs, _("Replaces all tabs in document by spaces."), NULL);
|
||||
|
||||
separator22 = gtk_separator_menu_item_new ();
|
||||
gtk_widget_show (separator22);
|
||||
gtk_container_add (GTK_CONTAINER (menu_item4_menu), separator22);
|
||||
gtk_container_add (GTK_CONTAINER (menu_document1_menu), separator22);
|
||||
gtk_widget_set_sensitive (separator22, FALSE);
|
||||
|
||||
menu_fold_all1 = gtk_menu_item_new_with_mnemonic (_("_Fold All"));
|
||||
gtk_widget_show (menu_fold_all1);
|
||||
gtk_container_add (GTK_CONTAINER (menu_item4_menu), menu_fold_all1);
|
||||
gtk_container_add (GTK_CONTAINER (menu_document1_menu), menu_fold_all1);
|
||||
gtk_tooltips_set_tip (tooltips, menu_fold_all1, _("Folds all contractible code blocks"), NULL);
|
||||
|
||||
menu_unfold_all1 = gtk_menu_item_new_with_mnemonic (_("_Unfold All"));
|
||||
gtk_widget_show (menu_unfold_all1);
|
||||
gtk_container_add (GTK_CONTAINER (menu_item4_menu), menu_unfold_all1);
|
||||
gtk_container_add (GTK_CONTAINER (menu_document1_menu), menu_unfold_all1);
|
||||
gtk_tooltips_set_tip (tooltips, menu_unfold_all1, _("Unfolds all contracted code blocks"), NULL);
|
||||
|
||||
separator23 = gtk_separator_menu_item_new ();
|
||||
gtk_widget_show (separator23);
|
||||
gtk_container_add (GTK_CONTAINER (menu_item4_menu), separator23);
|
||||
gtk_container_add (GTK_CONTAINER (menu_document1_menu), separator23);
|
||||
gtk_widget_set_sensitive (separator23, FALSE);
|
||||
|
||||
remove_markers1 = gtk_menu_item_new_with_mnemonic (_("Remove _Markers"));
|
||||
gtk_widget_show (remove_markers1);
|
||||
gtk_container_add (GTK_CONTAINER (menu_item4_menu), remove_markers1);
|
||||
gtk_container_add (GTK_CONTAINER (menu_document1_menu), remove_markers1);
|
||||
|
||||
menu_remove_indicators1 = gtk_menu_item_new_with_mnemonic (_("Remove Error _Indicators"));
|
||||
gtk_widget_show (menu_remove_indicators1);
|
||||
gtk_container_add (GTK_CONTAINER (menu_item4_menu), menu_remove_indicators1);
|
||||
gtk_container_add (GTK_CONTAINER (menu_document1_menu), menu_remove_indicators1);
|
||||
gtk_tooltips_set_tip (tooltips, menu_remove_indicators1, _("Removes all error indicators in the current document."), NULL);
|
||||
|
||||
menu_project1 = gtk_menu_item_new_with_mnemonic (_("_Project"));
|
||||
@ -902,25 +897,25 @@ create_window1 (void)
|
||||
gtk_widget_show (project_new1);
|
||||
gtk_container_add (GTK_CONTAINER (menu_project1_menu), project_new1);
|
||||
|
||||
image1789 = gtk_image_new_from_stock ("gtk-new", GTK_ICON_SIZE_MENU);
|
||||
gtk_widget_show (image1789);
|
||||
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (project_new1), image1789);
|
||||
image1890 = gtk_image_new_from_stock ("gtk-new", GTK_ICON_SIZE_MENU);
|
||||
gtk_widget_show (image1890);
|
||||
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (project_new1), image1890);
|
||||
|
||||
project_open1 = gtk_image_menu_item_new_with_mnemonic (_("_Open"));
|
||||
gtk_widget_show (project_open1);
|
||||
gtk_container_add (GTK_CONTAINER (menu_project1_menu), project_open1);
|
||||
|
||||
image1790 = gtk_image_new_from_stock ("gtk-open", GTK_ICON_SIZE_MENU);
|
||||
gtk_widget_show (image1790);
|
||||
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (project_open1), image1790);
|
||||
image1891 = gtk_image_new_from_stock ("gtk-open", GTK_ICON_SIZE_MENU);
|
||||
gtk_widget_show (image1891);
|
||||
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (project_open1), image1891);
|
||||
|
||||
project_close1 = gtk_image_menu_item_new_with_mnemonic (_("_Close"));
|
||||
gtk_widget_show (project_close1);
|
||||
gtk_container_add (GTK_CONTAINER (menu_project1_menu), project_close1);
|
||||
|
||||
image1791 = gtk_image_new_from_stock ("gtk-close", GTK_ICON_SIZE_MENU);
|
||||
gtk_widget_show (image1791);
|
||||
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (project_close1), image1791);
|
||||
image1892 = gtk_image_new_from_stock ("gtk-close", GTK_ICON_SIZE_MENU);
|
||||
gtk_widget_show (image1892);
|
||||
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (project_close1), image1892);
|
||||
|
||||
separator34 = gtk_separator_menu_item_new ();
|
||||
gtk_widget_show (separator34);
|
||||
@ -947,9 +942,9 @@ create_window1 (void)
|
||||
gtk_container_add (GTK_CONTAINER (tools1_menu), menu_choose_color1);
|
||||
gtk_tooltips_set_tip (tooltips, menu_choose_color1, _("Open a color chooser dialog, to interactively pick colors from a palette."), NULL);
|
||||
|
||||
image1792 = gtk_image_new_from_stock ("gtk-select-color", GTK_ICON_SIZE_MENU);
|
||||
gtk_widget_show (image1792);
|
||||
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_choose_color1), image1792);
|
||||
image1893 = gtk_image_new_from_stock ("gtk-select-color", GTK_ICON_SIZE_MENU);
|
||||
gtk_widget_show (image1893);
|
||||
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_choose_color1), image1893);
|
||||
|
||||
menu_count_words1 = gtk_menu_item_new_with_mnemonic (_("_Word Count"));
|
||||
gtk_widget_show (menu_count_words1);
|
||||
@ -960,53 +955,34 @@ create_window1 (void)
|
||||
gtk_widget_show (menu_insert_special_chars1);
|
||||
gtk_container_add (GTK_CONTAINER (tools1_menu), menu_insert_special_chars1);
|
||||
|
||||
menu_create_class1 = gtk_image_menu_item_new_with_mnemonic (_("Create cla_ss"));
|
||||
gtk_widget_show (menu_create_class1);
|
||||
gtk_container_add (GTK_CONTAINER (tools1_menu), menu_create_class1);
|
||||
|
||||
image1861 = gtk_image_new_from_stock ("gtk-add", GTK_ICON_SIZE_MENU);
|
||||
gtk_widget_show (image1861);
|
||||
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_create_class1), image1861);
|
||||
|
||||
menu_create_class1_menu = gtk_menu_new ();
|
||||
gtk_menu_item_set_submenu (GTK_MENU_ITEM (menu_create_class1), menu_create_class1_menu);
|
||||
|
||||
menu_create_cpp_class = gtk_menu_item_new_with_mnemonic (_("C++ class"));
|
||||
gtk_widget_show (menu_create_cpp_class);
|
||||
gtk_container_add (GTK_CONTAINER (menu_create_class1_menu), menu_create_cpp_class);
|
||||
|
||||
menu_create_gtk_class = gtk_menu_item_new_with_mnemonic (_("GTK+ class"));
|
||||
gtk_widget_show (menu_create_gtk_class);
|
||||
gtk_container_add (GTK_CONTAINER (menu_create_class1_menu), menu_create_gtk_class);
|
||||
|
||||
menu_help1 = gtk_menu_item_new_with_mnemonic (_("_Help"));
|
||||
gtk_widget_show (menu_help1);
|
||||
gtk_container_add (GTK_CONTAINER (menubar1), menu_help1);
|
||||
|
||||
menu_item5_menu = gtk_menu_new ();
|
||||
gtk_menu_item_set_submenu (GTK_MENU_ITEM (menu_help1), menu_item5_menu);
|
||||
menu_help1_menu = gtk_menu_new ();
|
||||
gtk_menu_item_set_submenu (GTK_MENU_ITEM (menu_help1), menu_help1_menu);
|
||||
|
||||
help1 = gtk_image_menu_item_new_from_stock ("gtk-help", accel_group);
|
||||
gtk_widget_show (help1);
|
||||
gtk_container_add (GTK_CONTAINER (menu_item5_menu), help1);
|
||||
gtk_container_add (GTK_CONTAINER (menu_help1_menu), help1);
|
||||
|
||||
keyboard_shortcuts1 = gtk_menu_item_new_with_mnemonic (_("_Keyboard Shortcuts"));
|
||||
gtk_widget_show (keyboard_shortcuts1);
|
||||
gtk_container_add (GTK_CONTAINER (menu_item5_menu), keyboard_shortcuts1);
|
||||
gtk_container_add (GTK_CONTAINER (menu_help1_menu), keyboard_shortcuts1);
|
||||
gtk_tooltips_set_tip (tooltips, keyboard_shortcuts1, _("Shows a list of all keyboard shortcuts for Geany."), NULL);
|
||||
|
||||
website1 = gtk_menu_item_new_with_mnemonic (_("_Website"));
|
||||
gtk_widget_show (website1);
|
||||
gtk_container_add (GTK_CONTAINER (menu_item5_menu), website1);
|
||||
gtk_container_add (GTK_CONTAINER (menu_help1_menu), website1);
|
||||
|
||||
separator16 = gtk_separator_menu_item_new ();
|
||||
gtk_widget_show (separator16);
|
||||
gtk_container_add (GTK_CONTAINER (menu_item5_menu), separator16);
|
||||
gtk_container_add (GTK_CONTAINER (menu_help1_menu), separator16);
|
||||
gtk_widget_set_sensitive (separator16, FALSE);
|
||||
|
||||
menu_info1 = gtk_image_menu_item_new_from_stock ("gtk-about", accel_group);
|
||||
gtk_widget_show (menu_info1);
|
||||
gtk_container_add (GTK_CONTAINER (menu_item5_menu), menu_info1);
|
||||
gtk_container_add (GTK_CONTAINER (menu_help1_menu), menu_info1);
|
||||
|
||||
toolbar1 = gtk_toolbar_new ();
|
||||
gtk_widget_show (toolbar1);
|
||||
@ -1532,12 +1508,6 @@ create_window1 (void)
|
||||
g_signal_connect ((gpointer) menu_insert_special_chars1, "activate",
|
||||
G_CALLBACK (on_menu_insert_special_chars1_activate),
|
||||
NULL);
|
||||
g_signal_connect ((gpointer) menu_create_cpp_class, "activate",
|
||||
G_CALLBACK (on_menu_create_cpp_class_activate),
|
||||
NULL);
|
||||
g_signal_connect ((gpointer) menu_create_gtk_class, "activate",
|
||||
G_CALLBACK (on_menu_create_gtk_class_activate),
|
||||
NULL);
|
||||
g_signal_connect ((gpointer) help1, "activate",
|
||||
G_CALLBACK (on_help1_activate),
|
||||
NULL);
|
||||
@ -1635,7 +1605,7 @@ create_window1 (void)
|
||||
GLADE_HOOKUP_OBJECT (window1, file1_menu, "file1_menu");
|
||||
GLADE_HOOKUP_OBJECT (window1, menu_new1, "menu_new1");
|
||||
GLADE_HOOKUP_OBJECT (window1, menu_new_with_template1, "menu_new_with_template1");
|
||||
GLADE_HOOKUP_OBJECT (window1, image1776, "image1776");
|
||||
GLADE_HOOKUP_OBJECT (window1, image1877, "image1877");
|
||||
GLADE_HOOKUP_OBJECT (window1, menu_new_with_template1_menu, "menu_new_with_template1_menu");
|
||||
GLADE_HOOKUP_OBJECT (window1, invisible2, "invisible2");
|
||||
GLADE_HOOKUP_OBJECT (window1, separator12, "separator12");
|
||||
@ -1646,11 +1616,11 @@ create_window1 (void)
|
||||
GLADE_HOOKUP_OBJECT (window1, menu_save1, "menu_save1");
|
||||
GLADE_HOOKUP_OBJECT (window1, menu_save_as1, "menu_save_as1");
|
||||
GLADE_HOOKUP_OBJECT (window1, menu_save_all1, "menu_save_all1");
|
||||
GLADE_HOOKUP_OBJECT (window1, image1777, "image1777");
|
||||
GLADE_HOOKUP_OBJECT (window1, image1878, "image1878");
|
||||
GLADE_HOOKUP_OBJECT (window1, menu_reload1, "menu_reload1");
|
||||
GLADE_HOOKUP_OBJECT (window1, image1778, "image1778");
|
||||
GLADE_HOOKUP_OBJECT (window1, image1879, "image1879");
|
||||
GLADE_HOOKUP_OBJECT (window1, menu_reload_as1, "menu_reload_as1");
|
||||
GLADE_HOOKUP_OBJECT (window1, image1779, "image1779");
|
||||
GLADE_HOOKUP_OBJECT (window1, image1880, "image1880");
|
||||
GLADE_HOOKUP_OBJECT (window1, menu_reload_as1_menu, "menu_reload_as1_menu");
|
||||
GLADE_HOOKUP_OBJECT (window1, invisible7, "invisible7");
|
||||
GLADE_HOOKUP_OBJECT (window1, separator21, "separator21");
|
||||
@ -1662,7 +1632,7 @@ create_window1 (void)
|
||||
GLADE_HOOKUP_OBJECT (window1, separator14, "separator14");
|
||||
GLADE_HOOKUP_OBJECT (window1, menu_close1, "menu_close1");
|
||||
GLADE_HOOKUP_OBJECT (window1, menu_close_all1, "menu_close_all1");
|
||||
GLADE_HOOKUP_OBJECT (window1, image1780, "image1780");
|
||||
GLADE_HOOKUP_OBJECT (window1, image1881, "image1881");
|
||||
GLADE_HOOKUP_OBJECT (window1, menu_separatormenuitem1, "menu_separatormenuitem1");
|
||||
GLADE_HOOKUP_OBJECT (window1, menu_quit1, "menu_quit1");
|
||||
GLADE_HOOKUP_OBJECT (window1, edit1, "edit1");
|
||||
@ -1688,20 +1658,20 @@ create_window1 (void)
|
||||
GLADE_HOOKUP_OBJECT (window1, menu_duplicate_line1, "menu_duplicate_line1");
|
||||
GLADE_HOOKUP_OBJECT (window1, separator29, "separator29");
|
||||
GLADE_HOOKUP_OBJECT (window1, menu_increase_indent1, "menu_increase_indent1");
|
||||
GLADE_HOOKUP_OBJECT (window1, image1781, "image1781");
|
||||
GLADE_HOOKUP_OBJECT (window1, image1882, "image1882");
|
||||
GLADE_HOOKUP_OBJECT (window1, menu_decrease_indent1, "menu_decrease_indent1");
|
||||
GLADE_HOOKUP_OBJECT (window1, image1782, "image1782");
|
||||
GLADE_HOOKUP_OBJECT (window1, image1883, "image1883");
|
||||
GLADE_HOOKUP_OBJECT (window1, separator37, "separator37");
|
||||
GLADE_HOOKUP_OBJECT (window1, send_selection_to2, "send_selection_to2");
|
||||
GLADE_HOOKUP_OBJECT (window1, send_selection_to2_menu, "send_selection_to2_menu");
|
||||
GLADE_HOOKUP_OBJECT (window1, invisible13, "invisible13");
|
||||
GLADE_HOOKUP_OBJECT (window1, separator18, "separator18");
|
||||
GLADE_HOOKUP_OBJECT (window1, insert_include2, "insert_include2");
|
||||
GLADE_HOOKUP_OBJECT (window1, image1783, "image1783");
|
||||
GLADE_HOOKUP_OBJECT (window1, image1884, "image1884");
|
||||
GLADE_HOOKUP_OBJECT (window1, insert_include2_menu, "insert_include2_menu");
|
||||
GLADE_HOOKUP_OBJECT (window1, invisible4, "invisible4");
|
||||
GLADE_HOOKUP_OBJECT (window1, add_comments1, "add_comments1");
|
||||
GLADE_HOOKUP_OBJECT (window1, image1784, "image1784");
|
||||
GLADE_HOOKUP_OBJECT (window1, image1885, "image1885");
|
||||
GLADE_HOOKUP_OBJECT (window1, add_comments1_menu, "add_comments1_menu");
|
||||
GLADE_HOOKUP_OBJECT (window1, menu_add_changelog_entry1, "menu_add_changelog_entry1");
|
||||
GLADE_HOOKUP_OBJECT (window1, insert_file_header1, "insert_file_header1");
|
||||
@ -1710,7 +1680,7 @@ create_window1 (void)
|
||||
GLADE_HOOKUP_OBJECT (window1, insert_gpl_notice2, "insert_gpl_notice2");
|
||||
GLADE_HOOKUP_OBJECT (window1, insert_bsd_license_notice2, "insert_bsd_license_notice2");
|
||||
GLADE_HOOKUP_OBJECT (window1, insert_date1, "insert_date1");
|
||||
GLADE_HOOKUP_OBJECT (window1, image1785, "image1785");
|
||||
GLADE_HOOKUP_OBJECT (window1, image1886, "image1886");
|
||||
GLADE_HOOKUP_OBJECT (window1, insert_date1_menu, "insert_date1_menu");
|
||||
GLADE_HOOKUP_OBJECT (window1, invisible8, "invisible8");
|
||||
GLADE_HOOKUP_OBJECT (window1, separator9, "separator9");
|
||||
@ -1722,7 +1692,7 @@ create_window1 (void)
|
||||
GLADE_HOOKUP_OBJECT (window1, find_previous1, "find_previous1");
|
||||
GLADE_HOOKUP_OBJECT (window1, find_in_files1, "find_in_files1");
|
||||
GLADE_HOOKUP_OBJECT (window1, replace1, "replace1");
|
||||
GLADE_HOOKUP_OBJECT (window1, image1786, "image1786");
|
||||
GLADE_HOOKUP_OBJECT (window1, image1887, "image1887");
|
||||
GLADE_HOOKUP_OBJECT (window1, separator33, "separator33");
|
||||
GLADE_HOOKUP_OBJECT (window1, find_nextsel1, "find_nextsel1");
|
||||
GLADE_HOOKUP_OBJECT (window1, find_prevsel1, "find_prevsel1");
|
||||
@ -1730,11 +1700,11 @@ create_window1 (void)
|
||||
GLADE_HOOKUP_OBJECT (window1, next_message1, "next_message1");
|
||||
GLADE_HOOKUP_OBJECT (window1, separator32, "separator32");
|
||||
GLADE_HOOKUP_OBJECT (window1, go_to_line1, "go_to_line1");
|
||||
GLADE_HOOKUP_OBJECT (window1, image1787, "image1787");
|
||||
GLADE_HOOKUP_OBJECT (window1, image1888, "image1888");
|
||||
GLADE_HOOKUP_OBJECT (window1, menu_view1, "menu_view1");
|
||||
GLADE_HOOKUP_OBJECT (window1, menuitem3_menu, "menuitem3_menu");
|
||||
GLADE_HOOKUP_OBJECT (window1, menu_view1_menu, "menu_view1_menu");
|
||||
GLADE_HOOKUP_OBJECT (window1, menu_change_font1, "menu_change_font1");
|
||||
GLADE_HOOKUP_OBJECT (window1, image1788, "image1788");
|
||||
GLADE_HOOKUP_OBJECT (window1, image1889, "image1889");
|
||||
GLADE_HOOKUP_OBJECT (window1, menu_separator4, "menu_separator4");
|
||||
GLADE_HOOKUP_OBJECT (window1, menu_toggle_all_additional_widgets1, "menu_toggle_all_additional_widgets1");
|
||||
GLADE_HOOKUP_OBJECT (window1, menu_fullscreen1, "menu_fullscreen1");
|
||||
@ -1748,7 +1718,7 @@ create_window1 (void)
|
||||
GLADE_HOOKUP_OBJECT (window1, menu_zoom_out1, "menu_zoom_out1");
|
||||
GLADE_HOOKUP_OBJECT (window1, normal_size1, "normal_size1");
|
||||
GLADE_HOOKUP_OBJECT (window1, menu_document1, "menu_document1");
|
||||
GLADE_HOOKUP_OBJECT (window1, menu_item4_menu, "menu_item4_menu");
|
||||
GLADE_HOOKUP_OBJECT (window1, menu_document1_menu, "menu_document1_menu");
|
||||
GLADE_HOOKUP_OBJECT (window1, menu_line_breaking1, "menu_line_breaking1");
|
||||
GLADE_HOOKUP_OBJECT (window1, menu_use_auto_indentation1, "menu_use_auto_indentation1");
|
||||
GLADE_HOOKUP_OBJECT (window1, set_file_readonly1, "set_file_readonly1");
|
||||
@ -1776,27 +1746,22 @@ create_window1 (void)
|
||||
GLADE_HOOKUP_OBJECT (window1, menu_project1, "menu_project1");
|
||||
GLADE_HOOKUP_OBJECT (window1, menu_project1_menu, "menu_project1_menu");
|
||||
GLADE_HOOKUP_OBJECT (window1, project_new1, "project_new1");
|
||||
GLADE_HOOKUP_OBJECT (window1, image1789, "image1789");
|
||||
GLADE_HOOKUP_OBJECT (window1, image1890, "image1890");
|
||||
GLADE_HOOKUP_OBJECT (window1, project_open1, "project_open1");
|
||||
GLADE_HOOKUP_OBJECT (window1, image1790, "image1790");
|
||||
GLADE_HOOKUP_OBJECT (window1, image1891, "image1891");
|
||||
GLADE_HOOKUP_OBJECT (window1, project_close1, "project_close1");
|
||||
GLADE_HOOKUP_OBJECT (window1, image1791, "image1791");
|
||||
GLADE_HOOKUP_OBJECT (window1, image1892, "image1892");
|
||||
GLADE_HOOKUP_OBJECT (window1, separator34, "separator34");
|
||||
GLADE_HOOKUP_OBJECT (window1, project_properties1, "project_properties1");
|
||||
GLADE_HOOKUP_OBJECT (window1, menu_build1, "menu_build1");
|
||||
GLADE_HOOKUP_OBJECT (window1, tools1, "tools1");
|
||||
GLADE_HOOKUP_OBJECT (window1, tools1_menu, "tools1_menu");
|
||||
GLADE_HOOKUP_OBJECT (window1, menu_choose_color1, "menu_choose_color1");
|
||||
GLADE_HOOKUP_OBJECT (window1, image1792, "image1792");
|
||||
GLADE_HOOKUP_OBJECT (window1, image1893, "image1893");
|
||||
GLADE_HOOKUP_OBJECT (window1, menu_count_words1, "menu_count_words1");
|
||||
GLADE_HOOKUP_OBJECT (window1, menu_insert_special_chars1, "menu_insert_special_chars1");
|
||||
GLADE_HOOKUP_OBJECT (window1, menu_create_class1, "menu_create_class1");
|
||||
GLADE_HOOKUP_OBJECT (window1, image1861, "image1861");
|
||||
GLADE_HOOKUP_OBJECT (window1, menu_create_class1_menu, "menu_create_class1_menu");
|
||||
GLADE_HOOKUP_OBJECT (window1, menu_create_cpp_class, "menu_create_cpp_class");
|
||||
GLADE_HOOKUP_OBJECT (window1, menu_create_gtk_class, "menu_create_gtk_class");
|
||||
GLADE_HOOKUP_OBJECT (window1, menu_help1, "menu_help1");
|
||||
GLADE_HOOKUP_OBJECT (window1, menu_item5_menu, "menu_item5_menu");
|
||||
GLADE_HOOKUP_OBJECT (window1, menu_help1_menu, "menu_help1_menu");
|
||||
GLADE_HOOKUP_OBJECT (window1, help1, "help1");
|
||||
GLADE_HOOKUP_OBJECT (window1, keyboard_shortcuts1, "keyboard_shortcuts1");
|
||||
GLADE_HOOKUP_OBJECT (window1, website1, "website1");
|
||||
@ -1994,20 +1959,20 @@ create_edit_menu1 (void)
|
||||
GtkWidget *menu_duplicate_line2;
|
||||
GtkWidget *separator31;
|
||||
GtkWidget *menu_increase_indent2;
|
||||
GtkWidget *image1693;
|
||||
GtkWidget *image1894;
|
||||
GtkWidget *menu_decrease_indent2;
|
||||
GtkWidget *image1694;
|
||||
GtkWidget *image1895;
|
||||
GtkWidget *separator38;
|
||||
GtkWidget *send_selection_to1;
|
||||
GtkWidget *send_selection_to1_menu;
|
||||
GtkWidget *invisible12;
|
||||
GtkWidget *separator17;
|
||||
GtkWidget *insert_include1;
|
||||
GtkWidget *image1695;
|
||||
GtkWidget *image1896;
|
||||
GtkWidget *insert_include1_menu;
|
||||
GtkWidget *invisible3;
|
||||
GtkWidget *comments;
|
||||
GtkWidget *image1696;
|
||||
GtkWidget *image1897;
|
||||
GtkWidget *comments_menu;
|
||||
GtkWidget *add_changelog_entry2;
|
||||
GtkWidget *insert_file_header2;
|
||||
@ -2016,18 +1981,18 @@ create_edit_menu1 (void)
|
||||
GtkWidget *insert_gpl_notice1;
|
||||
GtkWidget *insert_bsd_license_notice1;
|
||||
GtkWidget *insert_date2;
|
||||
GtkWidget *image1697;
|
||||
GtkWidget *image1898;
|
||||
GtkWidget *insert_date2_menu;
|
||||
GtkWidget *invisible10;
|
||||
GtkWidget *separator7;
|
||||
GtkWidget *find_usage1;
|
||||
GtkWidget *image1698;
|
||||
GtkWidget *image1899;
|
||||
GtkWidget *goto_tag_definition1;
|
||||
GtkWidget *goto_tag_declaration1;
|
||||
GtkWidget *context_action1;
|
||||
GtkWidget *separator15;
|
||||
GtkWidget *go_to_line;
|
||||
GtkWidget *image1699;
|
||||
GtkWidget *image1900;
|
||||
GtkAccelGroup *accel_group;
|
||||
GtkTooltips *tooltips;
|
||||
|
||||
@ -2134,17 +2099,17 @@ create_edit_menu1 (void)
|
||||
gtk_widget_show (menu_increase_indent2);
|
||||
gtk_container_add (GTK_CONTAINER (menu_format2_menu), menu_increase_indent2);
|
||||
|
||||
image1693 = gtk_image_new_from_stock ("gtk-indent", GTK_ICON_SIZE_MENU);
|
||||
gtk_widget_show (image1693);
|
||||
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_increase_indent2), image1693);
|
||||
image1894 = gtk_image_new_from_stock ("gtk-indent", GTK_ICON_SIZE_MENU);
|
||||
gtk_widget_show (image1894);
|
||||
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_increase_indent2), image1894);
|
||||
|
||||
menu_decrease_indent2 = gtk_image_menu_item_new_with_mnemonic (_("_Decrease Indent"));
|
||||
gtk_widget_show (menu_decrease_indent2);
|
||||
gtk_container_add (GTK_CONTAINER (menu_format2_menu), menu_decrease_indent2);
|
||||
|
||||
image1694 = gtk_image_new_from_stock ("gtk-unindent", GTK_ICON_SIZE_MENU);
|
||||
gtk_widget_show (image1694);
|
||||
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_decrease_indent2), image1694);
|
||||
image1895 = gtk_image_new_from_stock ("gtk-unindent", GTK_ICON_SIZE_MENU);
|
||||
gtk_widget_show (image1895);
|
||||
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_decrease_indent2), image1895);
|
||||
|
||||
separator38 = gtk_separator_menu_item_new ();
|
||||
gtk_widget_show (separator38);
|
||||
@ -2170,9 +2135,9 @@ create_edit_menu1 (void)
|
||||
gtk_widget_show (insert_include1);
|
||||
gtk_container_add (GTK_CONTAINER (edit_menu1), insert_include1);
|
||||
|
||||
image1695 = gtk_image_new_from_stock ("gtk-add", GTK_ICON_SIZE_MENU);
|
||||
gtk_widget_show (image1695);
|
||||
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (insert_include1), image1695);
|
||||
image1896 = gtk_image_new_from_stock ("gtk-add", GTK_ICON_SIZE_MENU);
|
||||
gtk_widget_show (image1896);
|
||||
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (insert_include1), image1896);
|
||||
|
||||
insert_include1_menu = gtk_menu_new ();
|
||||
gtk_menu_item_set_submenu (GTK_MENU_ITEM (insert_include1), insert_include1_menu);
|
||||
@ -2184,9 +2149,9 @@ create_edit_menu1 (void)
|
||||
gtk_widget_show (comments);
|
||||
gtk_container_add (GTK_CONTAINER (edit_menu1), comments);
|
||||
|
||||
image1696 = gtk_image_new_from_stock ("gtk-add", GTK_ICON_SIZE_MENU);
|
||||
gtk_widget_show (image1696);
|
||||
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (comments), image1696);
|
||||
image1897 = gtk_image_new_from_stock ("gtk-add", GTK_ICON_SIZE_MENU);
|
||||
gtk_widget_show (image1897);
|
||||
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (comments), image1897);
|
||||
|
||||
comments_menu = gtk_menu_new ();
|
||||
gtk_menu_item_set_submenu (GTK_MENU_ITEM (comments), comments_menu);
|
||||
@ -2216,7 +2181,7 @@ create_edit_menu1 (void)
|
||||
gtk_container_add (GTK_CONTAINER (comments_menu), insert_gpl_notice1);
|
||||
gtk_tooltips_set_tip (tooltips, insert_gpl_notice1, _("Inserts a GPL notice (should be done at the beginning of the file)"), NULL);
|
||||
|
||||
insert_bsd_license_notice1 = gtk_menu_item_new_with_mnemonic (_("Insert BSD license Notice"));
|
||||
insert_bsd_license_notice1 = gtk_menu_item_new_with_mnemonic (_("Insert BSD License Notice"));
|
||||
gtk_widget_show (insert_bsd_license_notice1);
|
||||
gtk_container_add (GTK_CONTAINER (comments_menu), insert_bsd_license_notice1);
|
||||
gtk_tooltips_set_tip (tooltips, insert_bsd_license_notice1, _("Inserts a BSD licence notice (should be done at the beginning of the file)"), NULL);
|
||||
@ -2225,9 +2190,9 @@ create_edit_menu1 (void)
|
||||
gtk_widget_show (insert_date2);
|
||||
gtk_container_add (GTK_CONTAINER (edit_menu1), insert_date2);
|
||||
|
||||
image1697 = gtk_image_new_from_stock ("gtk-add", GTK_ICON_SIZE_MENU);
|
||||
gtk_widget_show (image1697);
|
||||
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (insert_date2), image1697);
|
||||
image1898 = gtk_image_new_from_stock ("gtk-add", GTK_ICON_SIZE_MENU);
|
||||
gtk_widget_show (image1898);
|
||||
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (insert_date2), image1898);
|
||||
|
||||
insert_date2_menu = gtk_menu_new ();
|
||||
gtk_menu_item_set_submenu (GTK_MENU_ITEM (insert_date2), insert_date2_menu);
|
||||
@ -2244,9 +2209,9 @@ create_edit_menu1 (void)
|
||||
gtk_widget_show (find_usage1);
|
||||
gtk_container_add (GTK_CONTAINER (edit_menu1), find_usage1);
|
||||
|
||||
image1698 = gtk_image_new_from_stock ("gtk-find", GTK_ICON_SIZE_MENU);
|
||||
gtk_widget_show (image1698);
|
||||
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (find_usage1), image1698);
|
||||
image1899 = gtk_image_new_from_stock ("gtk-find", GTK_ICON_SIZE_MENU);
|
||||
gtk_widget_show (image1899);
|
||||
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (find_usage1), image1899);
|
||||
|
||||
goto_tag_definition1 = gtk_menu_item_new_with_mnemonic (_("Go to Tag Definition"));
|
||||
gtk_widget_show (goto_tag_definition1);
|
||||
@ -2270,9 +2235,9 @@ create_edit_menu1 (void)
|
||||
gtk_container_add (GTK_CONTAINER (edit_menu1), go_to_line);
|
||||
gtk_tooltips_set_tip (tooltips, go_to_line, _("Goto to the entered line"), NULL);
|
||||
|
||||
image1699 = gtk_image_new_from_stock ("gtk-jump-to", GTK_ICON_SIZE_MENU);
|
||||
gtk_widget_show (image1699);
|
||||
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (go_to_line), image1699);
|
||||
image1900 = gtk_image_new_from_stock ("gtk-jump-to", GTK_ICON_SIZE_MENU);
|
||||
gtk_widget_show (image1900);
|
||||
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (go_to_line), image1900);
|
||||
|
||||
g_signal_connect ((gpointer) undo1, "activate",
|
||||
G_CALLBACK (on_undo1_activate),
|
||||
@ -2381,20 +2346,20 @@ create_edit_menu1 (void)
|
||||
GLADE_HOOKUP_OBJECT (edit_menu1, menu_duplicate_line2, "menu_duplicate_line2");
|
||||
GLADE_HOOKUP_OBJECT (edit_menu1, separator31, "separator31");
|
||||
GLADE_HOOKUP_OBJECT (edit_menu1, menu_increase_indent2, "menu_increase_indent2");
|
||||
GLADE_HOOKUP_OBJECT (edit_menu1, image1693, "image1693");
|
||||
GLADE_HOOKUP_OBJECT (edit_menu1, image1894, "image1894");
|
||||
GLADE_HOOKUP_OBJECT (edit_menu1, menu_decrease_indent2, "menu_decrease_indent2");
|
||||
GLADE_HOOKUP_OBJECT (edit_menu1, image1694, "image1694");
|
||||
GLADE_HOOKUP_OBJECT (edit_menu1, image1895, "image1895");
|
||||
GLADE_HOOKUP_OBJECT (edit_menu1, separator38, "separator38");
|
||||
GLADE_HOOKUP_OBJECT (edit_menu1, send_selection_to1, "send_selection_to1");
|
||||
GLADE_HOOKUP_OBJECT (edit_menu1, send_selection_to1_menu, "send_selection_to1_menu");
|
||||
GLADE_HOOKUP_OBJECT (edit_menu1, invisible12, "invisible12");
|
||||
GLADE_HOOKUP_OBJECT (edit_menu1, separator17, "separator17");
|
||||
GLADE_HOOKUP_OBJECT (edit_menu1, insert_include1, "insert_include1");
|
||||
GLADE_HOOKUP_OBJECT (edit_menu1, image1695, "image1695");
|
||||
GLADE_HOOKUP_OBJECT (edit_menu1, image1896, "image1896");
|
||||
GLADE_HOOKUP_OBJECT (edit_menu1, insert_include1_menu, "insert_include1_menu");
|
||||
GLADE_HOOKUP_OBJECT (edit_menu1, invisible3, "invisible3");
|
||||
GLADE_HOOKUP_OBJECT (edit_menu1, comments, "comments");
|
||||
GLADE_HOOKUP_OBJECT (edit_menu1, image1696, "image1696");
|
||||
GLADE_HOOKUP_OBJECT (edit_menu1, image1897, "image1897");
|
||||
GLADE_HOOKUP_OBJECT (edit_menu1, comments_menu, "comments_menu");
|
||||
GLADE_HOOKUP_OBJECT (edit_menu1, add_changelog_entry2, "add_changelog_entry2");
|
||||
GLADE_HOOKUP_OBJECT (edit_menu1, insert_file_header2, "insert_file_header2");
|
||||
@ -2403,18 +2368,18 @@ create_edit_menu1 (void)
|
||||
GLADE_HOOKUP_OBJECT (edit_menu1, insert_gpl_notice1, "insert_gpl_notice1");
|
||||
GLADE_HOOKUP_OBJECT (edit_menu1, insert_bsd_license_notice1, "insert_bsd_license_notice1");
|
||||
GLADE_HOOKUP_OBJECT (edit_menu1, insert_date2, "insert_date2");
|
||||
GLADE_HOOKUP_OBJECT (edit_menu1, image1697, "image1697");
|
||||
GLADE_HOOKUP_OBJECT (edit_menu1, image1898, "image1898");
|
||||
GLADE_HOOKUP_OBJECT (edit_menu1, insert_date2_menu, "insert_date2_menu");
|
||||
GLADE_HOOKUP_OBJECT (edit_menu1, invisible10, "invisible10");
|
||||
GLADE_HOOKUP_OBJECT (edit_menu1, separator7, "separator7");
|
||||
GLADE_HOOKUP_OBJECT (edit_menu1, find_usage1, "find_usage1");
|
||||
GLADE_HOOKUP_OBJECT (edit_menu1, image1698, "image1698");
|
||||
GLADE_HOOKUP_OBJECT (edit_menu1, image1899, "image1899");
|
||||
GLADE_HOOKUP_OBJECT (edit_menu1, goto_tag_definition1, "goto_tag_definition1");
|
||||
GLADE_HOOKUP_OBJECT (edit_menu1, goto_tag_declaration1, "goto_tag_declaration1");
|
||||
GLADE_HOOKUP_OBJECT (edit_menu1, context_action1, "context_action1");
|
||||
GLADE_HOOKUP_OBJECT (edit_menu1, separator15, "separator15");
|
||||
GLADE_HOOKUP_OBJECT (edit_menu1, go_to_line, "go_to_line");
|
||||
GLADE_HOOKUP_OBJECT (edit_menu1, image1699, "image1699");
|
||||
GLADE_HOOKUP_OBJECT (edit_menu1, image1900, "image1900");
|
||||
GLADE_HOOKUP_OBJECT_NO_REF (edit_menu1, tooltips, "tooltips");
|
||||
|
||||
gtk_menu_set_accel_group (GTK_MENU (edit_menu1), accel_group);
|
||||
|
||||
@ -27,7 +27,7 @@
|
||||
|
||||
/* The API version should be incremented whenever any plugin data types below are
|
||||
* modified. */
|
||||
static const gint api_version = 2;
|
||||
static const gint api_version = 3;
|
||||
|
||||
/* The ABI version should be incremented whenever existing fields in the plugin
|
||||
* data types below have to be changed or reordered. It should stay the same if fields
|
||||
@ -68,6 +68,11 @@ PluginInfo;
|
||||
}
|
||||
|
||||
|
||||
typedef struct DocumentFuncs DocumentFuncs;
|
||||
typedef struct ScintillaFuncs ScintillaFuncs;
|
||||
typedef struct TemplateFuncs TemplateFuncs;
|
||||
typedef struct UtilsFuncs UtilsFuncs;
|
||||
|
||||
/* These are fields and functions owned by Geany.
|
||||
* Fields will be appended when needed by plugin authors.
|
||||
* Note: Remember to increment api_version (and abi_version if necessary) when
|
||||
@ -76,10 +81,41 @@ typedef struct PluginData
|
||||
{
|
||||
MyApp *app; // Geany application data fields
|
||||
|
||||
/* Almost all plugins should add menu items to the Tools menu only */
|
||||
GtkWidget *tools_menu;
|
||||
GtkWidget *tools_menu; // Almost all plugins should add menu items to the Tools menu only
|
||||
|
||||
GArray *doc_array; // array of document pointers
|
||||
|
||||
DocumentFuncs *document;
|
||||
ScintillaFuncs *sci;
|
||||
TemplateFuncs *templates;
|
||||
UtilsFuncs *utils;
|
||||
}
|
||||
PluginData;
|
||||
|
||||
|
||||
struct filetype;
|
||||
|
||||
struct DocumentFuncs
|
||||
{
|
||||
gint (*new_file) (const gchar *filename, struct filetype *ft);
|
||||
};
|
||||
|
||||
struct _ScintillaObject;
|
||||
|
||||
struct ScintillaFuncs
|
||||
{
|
||||
void (*set_text) (struct _ScintillaObject *sci, const gchar *text);
|
||||
};
|
||||
|
||||
struct TemplateFuncs
|
||||
{
|
||||
gchar* (*get_template_fileheader) (gint filetype_idx, const gchar *fname);
|
||||
};
|
||||
|
||||
struct UtilsFuncs
|
||||
{
|
||||
gboolean (*str_equal) (const gchar *a, const gchar *b);
|
||||
gchar* (*str_replace) (gchar *haystack, const gchar *needle, const gchar *replacement);
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@ -32,11 +32,12 @@
|
||||
#include "plugindata.h"
|
||||
#include "support.h"
|
||||
#include "utils.h"
|
||||
#include "document.h"
|
||||
#include "templates.h"
|
||||
#include "sciwrappers.h"
|
||||
|
||||
|
||||
typedef struct Plugin Plugin;
|
||||
|
||||
struct Plugin
|
||||
typedef struct Plugin
|
||||
{
|
||||
GModule *module;
|
||||
gchar *filename; // plugin filename (/path/libname.so)
|
||||
@ -45,11 +46,46 @@ struct Plugin
|
||||
PluginInfo* (*info) (); /* Returns plugin name, description */
|
||||
void (*init) (PluginData *data); /* Called when the plugin is enabled */
|
||||
void (*cleanup) (); /* Called when the plugin is disabled or when Geany exits */
|
||||
};
|
||||
}
|
||||
Plugin;
|
||||
|
||||
|
||||
static DocumentFuncs doc_funcs;
|
||||
static ScintillaFuncs sci_funcs;
|
||||
static TemplateFuncs template_funcs;
|
||||
static UtilsFuncs utils_funcs;
|
||||
|
||||
static GList *plugin_list = NULL;
|
||||
|
||||
|
||||
static void
|
||||
init_function_pointers()
|
||||
{
|
||||
doc_funcs.new_file = &document_new_file;
|
||||
|
||||
template_funcs.get_template_fileheader = &templates_get_template_fileheader;
|
||||
|
||||
sci_funcs.set_text = &sci_set_text;
|
||||
|
||||
utils_funcs.str_equal = &utils_str_equal;
|
||||
utils_funcs.str_replace = &utils_str_replace;
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
init_plugin_data(PluginData *data)
|
||||
{
|
||||
data->app = app;
|
||||
data->tools_menu = lookup_widget(app->window, "tools1_menu");
|
||||
data->doc_array = doc_array;
|
||||
|
||||
data->document = &doc_funcs;
|
||||
data->sci = &sci_funcs;
|
||||
data->templates = &template_funcs;
|
||||
data->utils = &utils_funcs;
|
||||
}
|
||||
|
||||
|
||||
/* Prevent the same plugin filename being loaded more than once.
|
||||
* Note: g_module_name always returns the .so name, even when Plugin::filename
|
||||
* is an .la file. */
|
||||
@ -108,7 +144,10 @@ plugin_new(const gchar *fname)
|
||||
g_return_val_if_fail(fname, NULL);
|
||||
g_return_val_if_fail(g_module_supported(), NULL);
|
||||
|
||||
module = g_module_open(fname, G_MODULE_BIND_LAZY);
|
||||
/* Don't use G_MODULE_BIND_LAZY otherwise we can get unresolved symbols at runtime,
|
||||
* causing a segfault.
|
||||
* Without that flag the module will safely fail to load. */
|
||||
module = g_module_open(fname, 0);
|
||||
if (! module)
|
||||
{
|
||||
g_warning("%s", g_module_error());
|
||||
@ -148,8 +187,7 @@ plugin_new(const gchar *fname)
|
||||
plugin->filename = g_strdup(fname);
|
||||
plugin->module = module;
|
||||
|
||||
plugin->data.app = app;
|
||||
plugin->data.tools_menu = lookup_widget(app->window, "tools1_menu");
|
||||
init_plugin_data(&plugin->data);
|
||||
|
||||
g_module_symbol(module, "init", (void *) &plugin->init);
|
||||
g_module_symbol(module, "cleanup", (void *) &plugin->cleanup);
|
||||
@ -192,6 +230,8 @@ void plugins_init()
|
||||
const gchar *path = LIBDIR;
|
||||
GSList *list, *item;
|
||||
|
||||
init_function_pointers();
|
||||
|
||||
list = utils_get_file_list(path, NULL, NULL);
|
||||
|
||||
for (item = list; item != NULL; item = g_slist_next(item))
|
||||
|
||||
246
src/templates.c
246
src/templates.c
@ -206,128 +206,6 @@ end\n\
|
||||
x = StdClass.new\n\
|
||||
";
|
||||
|
||||
static const gchar templates_cpp_class_header[] = "{fileheader}\n\n\
|
||||
#ifndef {header_guard}\n\
|
||||
#define {header_guard}\n\
|
||||
{base_include}\n\
|
||||
class {class_name}{base_decl}\n\
|
||||
{\n\
|
||||
public:\n\
|
||||
{constructor_decl}\
|
||||
{destructor_decl}\
|
||||
\n\
|
||||
private:\n\
|
||||
// add your private declarations\n\
|
||||
};\n\
|
||||
\n\
|
||||
#endif // {header_guard}\n\
|
||||
";
|
||||
|
||||
static const gchar templates_cpp_class_source[] = "{fileheader}\n\n\
|
||||
#include \"{header}\"\n\
|
||||
\n\
|
||||
{constructor_impl}\n\
|
||||
{destructor_impl}\n\
|
||||
";
|
||||
|
||||
static const gchar templates_gtk_class_header[] = "{fileheader}\n\n\
|
||||
#ifndef __{header_guard}__\n\
|
||||
#define __{header_guard}__\n\
|
||||
{base_include}\n\
|
||||
G_BEGIN_DECLS\n\
|
||||
\n\
|
||||
#define {class_name_up}_TYPE ({class_name_low}_get_type())\n\
|
||||
#define {class_name_up}(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),\\\n\
|
||||
{class_name_up}_TYPE, {class_name}))\n\
|
||||
#define {class_name_up}_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),\\\n\
|
||||
{class_name_up}_TYPE, {class_name}Class))\n\
|
||||
#define IS_{class_name_up}(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),\\\n\
|
||||
{class_name_up}_TYPE))\n\
|
||||
#define IS_{class_name_up}_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),\\\n\
|
||||
{class_name_up}_TYPE))\n\
|
||||
\n\
|
||||
typedef struct _{class_name} {class_name};\n\
|
||||
typedef struct _{class_name}Class {class_name}Class;\n\
|
||||
\n\
|
||||
struct _{class_name}\n\
|
||||
{\n\
|
||||
{base_name} parent;\n\
|
||||
/* add your public declarations here */\n\
|
||||
};\n\
|
||||
\n\
|
||||
struct _{class_name}Class\n\
|
||||
{\n\
|
||||
{base_name}Class parent_class;\n\
|
||||
};\n\
|
||||
\n\
|
||||
GType {class_name_low}_get_type (void);\n\
|
||||
{constructor_decl}\
|
||||
\n\
|
||||
G_END_DECLS\n\
|
||||
\n\
|
||||
#endif /* __{header_guard}__ */\n\
|
||||
";
|
||||
|
||||
static const gchar templates_gtk_class_source[] = "{fileheader}\n\
|
||||
#include \"{header}\"\n\
|
||||
\n\
|
||||
typedef struct _{class_name}Private {class_name}Private;\n\
|
||||
\n\
|
||||
#define {class_name_up}_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE((obj),\\\n\
|
||||
{class_name_up}_TYPE, {class_name}Private))\n\
|
||||
\n\
|
||||
struct _{class_name}Private\n\
|
||||
{\n\
|
||||
/* add your private declarations here */\n\
|
||||
};\n\
|
||||
\n\
|
||||
static void {class_name_low}_class_init ({class_name}Class *klass);\n\
|
||||
static void {class_name_low}_init ({class_name} *self);\n\
|
||||
{destructor_decl}\
|
||||
\n\
|
||||
/* Local data */\n\
|
||||
static {base_name}Class *parent_class = NULL;\n\
|
||||
\n\
|
||||
GType {class_name_low}_get_type(void)\n\
|
||||
{\n\
|
||||
static GType self_type = 0;\n\
|
||||
if (! self_type)\n\
|
||||
{\n\
|
||||
static const GTypeInfo self_info = \n\
|
||||
{\n\
|
||||
sizeof({class_name}Class),\n\
|
||||
NULL, /* base_init */\n\
|
||||
NULL, /* base_finalize */\n\
|
||||
(GClassInitFunc){class_name_low}_class_init,\n\
|
||||
NULL, /* class_finalize */\n\
|
||||
NULL, /* class_data */\n\
|
||||
sizeof({class_name}),\n\
|
||||
0,\n\
|
||||
(GInstanceInitFunc){class_name_low}_init,\n\
|
||||
};\n\
|
||||
\n\
|
||||
self_type = g_type_register_static({base_gtype}, \"{class_name}\", &self_info, 0);\
|
||||
}\n\
|
||||
\n\
|
||||
return self_type;\n\
|
||||
}\n\
|
||||
\n\
|
||||
static void {class_name_low}_class_init({class_name}Class *klass)\n\
|
||||
{\n\
|
||||
{gtk_destructor_registration}\n\
|
||||
parent_class = ({base_name}Class*)g_type_class_peek({base_gtype});\n\
|
||||
g_type_class_add_private((gpointer)klass, sizeof({class_name}Private));\n\
|
||||
}\n\
|
||||
\n\
|
||||
static void {class_name_low}_init({class_name} *self)\n\
|
||||
{\n\
|
||||
\n\
|
||||
}\n\
|
||||
\n\
|
||||
{constructor_impl}\n\
|
||||
{destructor_impl}\n\
|
||||
";
|
||||
|
||||
static gchar *templates[GEANY_MAX_TEMPLATES];
|
||||
static gchar *ft_templates[GEANY_MAX_FILE_TYPES] = {NULL};
|
||||
|
||||
@ -633,16 +511,18 @@ gchar *templates_get_template_licence(gint filetype_idx, gint licence_type)
|
||||
}
|
||||
|
||||
|
||||
static gchar *get_file_header(filetype *ft, const gchar *fname)
|
||||
gchar *templates_get_template_fileheader(gint filetype_idx, const gchar *fname)
|
||||
{
|
||||
gchar *template = g_strdup(templates[GEANY_TEMPLATE_FILEHEADER]);
|
||||
gchar *shortname;
|
||||
gchar *result;
|
||||
gchar *date = utils_get_date_time();
|
||||
filetype_id ft_id = filetype_idx;
|
||||
filetype *ft = filetypes[ft_id];
|
||||
|
||||
if (fname == NULL)
|
||||
{
|
||||
if (FILETYPE_ID(ft) == GEANY_FILETYPES_ALL)
|
||||
if (ft_id == GEANY_FILETYPES_ALL)
|
||||
shortname = g_strdup(GEANY_STRING_UNTITLED);
|
||||
else
|
||||
shortname = g_strconcat(GEANY_STRING_UNTITLED, ".", ft->extension, NULL);
|
||||
@ -658,7 +538,7 @@ static gchar *get_file_header(filetype *ft, const gchar *fname)
|
||||
|
||||
template = utils_str_replace(template, "{datetime}", date);
|
||||
|
||||
result = make_comment_block(template, FILETYPE_ID(ft), 8);
|
||||
result = make_comment_block(template, ft_id, 8);
|
||||
|
||||
g_free(template);
|
||||
g_free(shortname);
|
||||
@ -667,19 +547,6 @@ static gchar *get_file_header(filetype *ft, const gchar *fname)
|
||||
}
|
||||
|
||||
|
||||
gchar *templates_get_template_fileheader(gint idx)
|
||||
{
|
||||
gchar *fname;
|
||||
filetype *ft;
|
||||
|
||||
g_return_val_if_fail(DOC_IDX_VALID(idx), NULL);
|
||||
ft = doc_list[idx].file_type;
|
||||
fname = doc_list[idx].file_name;
|
||||
|
||||
return get_file_header(ft, fname);
|
||||
}
|
||||
|
||||
|
||||
static gchar *get_file_template(filetype *ft)
|
||||
{
|
||||
filetype_id ft_id = FILETYPE_ID(ft);
|
||||
@ -688,7 +555,7 @@ static gchar *get_file_template(filetype *ft)
|
||||
}
|
||||
|
||||
|
||||
gchar *templates_get_template_new_file(filetype *ft)
|
||||
gchar *templates_get_template_new_file(struct filetype *ft)
|
||||
{
|
||||
gchar *ft_template = NULL;
|
||||
gchar *file_header = NULL;
|
||||
@ -696,7 +563,7 @@ gchar *templates_get_template_new_file(filetype *ft)
|
||||
if (FILETYPE_ID(ft) == GEANY_FILETYPES_ALL)
|
||||
return get_file_template(ft);
|
||||
|
||||
file_header = get_file_header(ft, NULL); // file template only used for new files
|
||||
file_header = templates_get_template_fileheader(ft->id, NULL); // file template only used for new files
|
||||
ft_template = get_file_template(ft);
|
||||
ft_template = utils_str_replace(ft_template, "{fileheader}", file_header);
|
||||
g_free(file_header);
|
||||
@ -766,102 +633,3 @@ static gchar *templates_replace_all(gchar *text, const gchar *year, const gchar
|
||||
return text;
|
||||
}
|
||||
|
||||
gchar* templates_get_template_class_header(ClassInfo *class_info)
|
||||
{
|
||||
switch (class_info->type)
|
||||
{
|
||||
case GEANY_CLASS_TYPE_CPP:
|
||||
{
|
||||
gchar *fileheader = NULL;
|
||||
gchar *template;
|
||||
|
||||
fileheader = get_file_header(filetypes[GEANY_FILETYPES_C], class_info->header);
|
||||
template = g_strdup(templates_cpp_class_header);
|
||||
template = utils_str_replace(template, "{fileheader}", fileheader);
|
||||
template = utils_str_replace(template, "{header_guard}", class_info->header_guard);
|
||||
template = utils_str_replace(template, "{base_include}", class_info->base_include);
|
||||
template = utils_str_replace(template, "{class_name}", class_info->class_name);
|
||||
template = utils_str_replace(template, "{base_decl}", class_info->base_decl);
|
||||
template = utils_str_replace(template, "{constructor_decl}",
|
||||
class_info->constructor_decl);
|
||||
template = utils_str_replace(template, "{destructor_decl}",
|
||||
class_info->destructor_decl);
|
||||
|
||||
return template;
|
||||
}
|
||||
case GEANY_CLASS_TYPE_GTK:
|
||||
{
|
||||
gchar *fileheader = NULL;
|
||||
gchar *template;
|
||||
|
||||
fileheader = get_file_header(filetypes[GEANY_FILETYPES_C], class_info->header);
|
||||
template = g_strdup(templates_gtk_class_header);
|
||||
template = utils_str_replace(template, "{fileheader}", fileheader);
|
||||
template = utils_str_replace(template, "{header_guard}", class_info->header_guard);
|
||||
template = utils_str_replace(template, "{base_include}", class_info->base_include);
|
||||
template = utils_str_replace(template, "{class_name}", class_info->class_name);
|
||||
template = utils_str_replace(template, "{class_name_up}", class_info->class_name_up);
|
||||
template = utils_str_replace(template, "{class_name_low}", class_info->class_name_low);
|
||||
template = utils_str_replace(template, "{base_name}", class_info->base_name);
|
||||
template = utils_str_replace(template, "{constructor_decl}",
|
||||
class_info->constructor_decl);
|
||||
|
||||
return template;
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
gchar* templates_get_template_class_source(ClassInfo *class_info)
|
||||
{
|
||||
switch (class_info->type)
|
||||
{
|
||||
case GEANY_CLASS_TYPE_CPP:
|
||||
{
|
||||
gchar *fileheader = NULL;
|
||||
gchar *template;
|
||||
|
||||
fileheader = get_file_header(filetypes[GEANY_FILETYPES_C], class_info->source);
|
||||
template = g_strdup(templates_cpp_class_source);
|
||||
template = utils_str_replace(template, "{fileheader}", fileheader);
|
||||
template = utils_str_replace(template, "{header}", class_info->header);
|
||||
template = utils_str_replace(template, "{class_name}", class_info->class_name);
|
||||
template = utils_str_replace(template, "{base_include}", class_info->base_include);
|
||||
template = utils_str_replace(template, "{base_name}", class_info->base_name);
|
||||
template = utils_str_replace(template, "{constructor_impl}",
|
||||
class_info->constructor_impl);
|
||||
template = utils_str_replace(template, "{destructor_impl}",
|
||||
class_info->destructor_impl);
|
||||
|
||||
return template;
|
||||
}
|
||||
case GEANY_CLASS_TYPE_GTK:
|
||||
{
|
||||
gchar *fileheader = NULL;
|
||||
gchar *template;
|
||||
|
||||
fileheader = get_file_header(filetypes[GEANY_FILETYPES_C], class_info->source);
|
||||
template = g_strdup(templates_gtk_class_source);
|
||||
template = utils_str_replace(template, "{fileheader}", fileheader);
|
||||
template = utils_str_replace(template, "{header}", class_info->header);
|
||||
template = utils_str_replace(template, "{class_name}", class_info->class_name);
|
||||
template = utils_str_replace(template, "{class_name_up}", class_info->class_name_up);
|
||||
template = utils_str_replace(template, "{class_name_low}", class_info->class_name_low);
|
||||
template = utils_str_replace(template, "{base_name}", class_info->base_name);
|
||||
template = utils_str_replace(template, "{base_gtype}", class_info->base_gtype);
|
||||
template = utils_str_replace(template, "{destructor_decl}", class_info->destructor_decl);
|
||||
template = utils_str_replace(template, "{constructor_impl}",
|
||||
class_info->constructor_impl);
|
||||
template = utils_str_replace(template, "{destructor_impl}",
|
||||
class_info->destructor_impl);
|
||||
template = utils_str_replace(template, "{gtk_destructor_registration}",
|
||||
class_info->gtk_destructor_registration);
|
||||
|
||||
return template;
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
@ -24,30 +24,6 @@
|
||||
#ifndef GEANY_TEMPLATES_H
|
||||
#define GEANY_TEMPLATES_H 1
|
||||
|
||||
#include "filetypes.h"
|
||||
|
||||
typedef struct _ClassInfo ClassInfo;
|
||||
|
||||
void templates_init(void);
|
||||
|
||||
gchar *templates_get_template_fileheader(gint idx);
|
||||
|
||||
gchar *templates_get_template_new_file(filetype *ft);
|
||||
|
||||
gchar *templates_get_template_changelog(void);
|
||||
|
||||
gchar *templates_get_template_generic(gint template);
|
||||
|
||||
gchar *templates_get_template_function(gint filetype_idx, const gchar *func_name);
|
||||
|
||||
gchar *templates_get_template_licence(gint filetype_idx, gint licence_type);
|
||||
|
||||
gchar *templates_get_template_class_header(ClassInfo *class_info);
|
||||
|
||||
gchar *templates_get_template_class_source(ClassInfo *class_info);
|
||||
|
||||
void templates_free_templates(void);
|
||||
|
||||
enum
|
||||
{
|
||||
GEANY_TEMPLATE_GPL = 0,
|
||||
@ -58,30 +34,22 @@ enum
|
||||
GEANY_MAX_TEMPLATES
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
GEANY_CLASS_TYPE_CPP,
|
||||
GEANY_CLASS_TYPE_GTK
|
||||
};
|
||||
struct filetype;
|
||||
|
||||
struct _ClassInfo
|
||||
{
|
||||
gint type;
|
||||
gchar *class_name;
|
||||
gchar *class_name_up;
|
||||
gchar *class_name_low;
|
||||
gchar *base_name;
|
||||
gchar *base_gtype;
|
||||
gchar *header;
|
||||
gchar *header_guard;
|
||||
gchar *base_include;
|
||||
gchar *base_decl;
|
||||
gchar *constructor_decl;
|
||||
gchar *destructor_decl;
|
||||
gchar *source;
|
||||
gchar *constructor_impl;
|
||||
gchar *destructor_impl;
|
||||
gchar *gtk_destructor_registration;
|
||||
};
|
||||
void templates_init(void);
|
||||
|
||||
gchar *templates_get_template_fileheader(gint filetype_idx, const gchar *fname);
|
||||
|
||||
gchar *templates_get_template_new_file(struct filetype *ft);
|
||||
|
||||
gchar *templates_get_template_changelog(void);
|
||||
|
||||
gchar *templates_get_template_generic(gint template);
|
||||
|
||||
gchar *templates_get_template_function(gint filetype_idx, const gchar *func_name);
|
||||
|
||||
gchar *templates_get_template_licence(gint filetype_idx, gint licence_type);
|
||||
|
||||
void templates_free_templates(void);
|
||||
|
||||
#endif
|
||||
|
||||
466
src/tools.c
466
src/tools.c
@ -56,22 +56,6 @@ enum
|
||||
N_COLUMNS
|
||||
};
|
||||
|
||||
typedef struct _CreateClassDialog
|
||||
{
|
||||
gint class_type;
|
||||
GtkWidget *dialog;
|
||||
GtkWidget *class_name_entry;
|
||||
GtkWidget *header_entry;
|
||||
GtkWidget *source_entry;
|
||||
GtkWidget *base_name_entry;
|
||||
GtkWidget *base_header_entry;
|
||||
GtkWidget *base_header_global_box;
|
||||
GtkWidget *base_gtype_entry;
|
||||
GtkWidget *create_constructor_box;
|
||||
GtkWidget *create_destructor_box;
|
||||
GtkWidget *gtk_constructor_type_entry;
|
||||
} CreateClassDialog;
|
||||
|
||||
static GtkWidget *sc_dialog = NULL;
|
||||
static GtkTreeStore *sc_store = NULL;
|
||||
static GtkTreeView *sc_tree = NULL;
|
||||
@ -83,11 +67,6 @@ static void sc_on_tree_row_activated
|
||||
static void sc_fill_store(GtkTreeStore *store);
|
||||
static gboolean sc_insert(GtkTreeModel *model, GtkTreeIter *iter);
|
||||
|
||||
static void cc_dlg_on_set_sensitive_toggled(GtkWidget *toggle_button, GtkWidget *target_widget);
|
||||
static void cc_dlg_on_class_name_entry_changed(GtkWidget *entry, CreateClassDialog *cc_dlg);
|
||||
static void cc_dlg_on_base_name_entry_changed(GtkWidget *entry, CreateClassDialog *cc_dlg);
|
||||
static void cc_dlg_on_create_class(CreateClassDialog *cc_dlg);
|
||||
|
||||
|
||||
void tools_show_dialog_insert_special_chars()
|
||||
{
|
||||
@ -923,448 +902,3 @@ void tools_create_insert_custom_command_menu_items()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void tools_show_dialog_create_class(gint type)
|
||||
{
|
||||
CreateClassDialog *cc_dlg;
|
||||
GtkWidget *main_box;
|
||||
GtkWidget *frame;
|
||||
GtkWidget *vbox;
|
||||
GtkWidget *hbox;
|
||||
GtkWidget *label;
|
||||
|
||||
cc_dlg = g_new0(CreateClassDialog, 1);
|
||||
cc_dlg->class_type = type;
|
||||
|
||||
cc_dlg->dialog = gtk_dialog_new_with_buttons(_("Create class"),
|
||||
GTK_WINDOW(app->window),
|
||||
GTK_DIALOG_MODAL,
|
||||
GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT,
|
||||
GTK_STOCK_OK, GTK_RESPONSE_OK,
|
||||
NULL);
|
||||
gtk_container_set_border_width(GTK_CONTAINER(cc_dlg->dialog), 5);
|
||||
g_signal_connect_swapped(G_OBJECT(cc_dlg->dialog), "destroy",
|
||||
G_CALLBACK(g_free), (gpointer)cc_dlg);
|
||||
|
||||
main_box = GTK_DIALOG(cc_dlg->dialog)->vbox;
|
||||
gtk_box_set_spacing(GTK_BOX(main_box), 10);
|
||||
|
||||
frame = gtk_frame_new(_("Class"));
|
||||
gtk_container_add(GTK_CONTAINER(main_box), frame);
|
||||
gtk_widget_show(frame);
|
||||
|
||||
vbox = gtk_vbox_new(FALSE, 10);
|
||||
gtk_container_set_border_width(GTK_CONTAINER(vbox), 5);
|
||||
gtk_container_add(GTK_CONTAINER(frame), vbox);
|
||||
gtk_widget_show(vbox);
|
||||
|
||||
hbox = gtk_hbox_new(FALSE, 10);
|
||||
gtk_container_add(GTK_CONTAINER(vbox), hbox);
|
||||
gtk_widget_show(hbox);
|
||||
|
||||
label = gtk_label_new(_("Class name:"));
|
||||
gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
|
||||
gtk_widget_show(label);
|
||||
|
||||
cc_dlg->class_name_entry = gtk_entry_new();
|
||||
gtk_box_pack_start(GTK_BOX(hbox), cc_dlg->class_name_entry, TRUE, TRUE, 0);
|
||||
gtk_widget_show(cc_dlg->class_name_entry);
|
||||
g_signal_connect(G_OBJECT(cc_dlg->class_name_entry), "changed",
|
||||
G_CALLBACK(cc_dlg_on_class_name_entry_changed), cc_dlg);
|
||||
|
||||
hbox = gtk_hbox_new(FALSE, 10);
|
||||
gtk_container_add(GTK_CONTAINER(vbox), hbox);
|
||||
gtk_widget_show(hbox);
|
||||
|
||||
label = gtk_label_new(_("Header file:"));
|
||||
gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
|
||||
gtk_widget_show(label);
|
||||
|
||||
cc_dlg->header_entry = gtk_entry_new();
|
||||
gtk_container_add(GTK_CONTAINER(hbox), cc_dlg->header_entry);
|
||||
gtk_widget_show(cc_dlg->header_entry);
|
||||
|
||||
hbox = gtk_hbox_new(FALSE, 10);
|
||||
gtk_container_add(GTK_CONTAINER(vbox), hbox);
|
||||
gtk_widget_show(hbox);
|
||||
|
||||
label = gtk_label_new(_("Source file:"));
|
||||
gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
|
||||
gtk_widget_show(label);
|
||||
|
||||
cc_dlg->source_entry = gtk_entry_new();
|
||||
gtk_container_add(GTK_CONTAINER(hbox), cc_dlg->source_entry);
|
||||
gtk_widget_show(cc_dlg->source_entry);
|
||||
|
||||
frame = gtk_frame_new(_("Inheritance"));
|
||||
gtk_container_add(GTK_CONTAINER(main_box), frame);
|
||||
gtk_widget_show(frame);
|
||||
|
||||
vbox = gtk_vbox_new(FALSE, 10);
|
||||
gtk_container_set_border_width(GTK_CONTAINER(vbox), 5);
|
||||
gtk_container_add(GTK_CONTAINER(frame), vbox);
|
||||
gtk_widget_show(vbox);
|
||||
|
||||
hbox = gtk_hbox_new(FALSE, 10);
|
||||
gtk_container_add(GTK_CONTAINER(vbox), hbox);
|
||||
gtk_widget_show(hbox);
|
||||
|
||||
label = gtk_label_new(_("Base class:"));
|
||||
gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
|
||||
gtk_widget_show(label);
|
||||
|
||||
cc_dlg->base_name_entry = gtk_entry_new();
|
||||
if (type == GEANY_CLASS_TYPE_GTK)
|
||||
gtk_entry_set_text(GTK_ENTRY(cc_dlg->base_name_entry), "GObject");
|
||||
gtk_container_add(GTK_CONTAINER(hbox), cc_dlg->base_name_entry);
|
||||
gtk_widget_show(cc_dlg->base_name_entry);
|
||||
g_signal_connect(G_OBJECT(cc_dlg->base_name_entry), "changed",
|
||||
G_CALLBACK(cc_dlg_on_base_name_entry_changed), (gpointer)cc_dlg);
|
||||
|
||||
hbox = gtk_hbox_new(FALSE, 10);
|
||||
gtk_container_add(GTK_CONTAINER(vbox), hbox);
|
||||
gtk_widget_show(hbox);
|
||||
|
||||
label = gtk_label_new(_("Base header:"));
|
||||
gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
|
||||
gtk_widget_show(label);
|
||||
|
||||
cc_dlg->base_header_entry = gtk_entry_new();
|
||||
if (type == GEANY_CLASS_TYPE_GTK)
|
||||
gtk_entry_set_text(GTK_ENTRY(cc_dlg->base_header_entry), "glib-object.h");
|
||||
gtk_container_add(GTK_CONTAINER(hbox), cc_dlg->base_header_entry);
|
||||
gtk_widget_show(cc_dlg->base_header_entry);
|
||||
|
||||
cc_dlg->base_header_global_box = gtk_check_button_new_with_label(_("Global"));
|
||||
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cc_dlg->base_header_global_box), TRUE);
|
||||
gtk_box_pack_end(GTK_BOX(hbox), cc_dlg->base_header_global_box, FALSE, FALSE, 0);
|
||||
gtk_widget_show(cc_dlg->base_header_global_box);
|
||||
|
||||
if (type == GEANY_CLASS_TYPE_GTK)
|
||||
{
|
||||
hbox = gtk_hbox_new(FALSE, 10);
|
||||
gtk_container_add(GTK_CONTAINER(vbox), hbox);
|
||||
gtk_widget_show(hbox);
|
||||
|
||||
label = gtk_label_new(_("Base GType:"));
|
||||
gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
|
||||
gtk_widget_show(label);
|
||||
|
||||
cc_dlg->base_gtype_entry = gtk_entry_new();
|
||||
gtk_entry_set_text(GTK_ENTRY(cc_dlg->base_gtype_entry), "GTK_TYPE_OBJECT");
|
||||
gtk_container_add(GTK_CONTAINER(hbox), cc_dlg->base_gtype_entry);
|
||||
gtk_widget_show(cc_dlg->base_gtype_entry);
|
||||
}
|
||||
|
||||
frame = gtk_frame_new(_("Options"));
|
||||
gtk_container_add(GTK_CONTAINER(main_box), frame);
|
||||
gtk_widget_show(frame);
|
||||
|
||||
vbox = gtk_vbox_new(FALSE, 10);
|
||||
gtk_container_add(GTK_CONTAINER(frame), vbox);
|
||||
gtk_widget_show(vbox);
|
||||
|
||||
hbox = gtk_hbox_new(FALSE, 10);
|
||||
gtk_container_add(GTK_CONTAINER(vbox), hbox);
|
||||
gtk_widget_show(hbox);
|
||||
|
||||
cc_dlg->create_constructor_box = gtk_check_button_new_with_label(_("Create constructor"));
|
||||
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cc_dlg->create_constructor_box), TRUE);
|
||||
gtk_container_add(GTK_CONTAINER(hbox), cc_dlg->create_constructor_box);
|
||||
gtk_widget_show(cc_dlg->create_constructor_box);
|
||||
|
||||
cc_dlg->create_destructor_box = gtk_check_button_new_with_label(_("Create destructor"));
|
||||
gtk_container_add(GTK_CONTAINER(hbox), cc_dlg->create_destructor_box);
|
||||
gtk_widget_show(cc_dlg->create_destructor_box);
|
||||
|
||||
if (type == GEANY_CLASS_TYPE_GTK)
|
||||
{
|
||||
hbox = gtk_hbox_new(FALSE, 10);
|
||||
gtk_container_add(GTK_CONTAINER(vbox), hbox);
|
||||
gtk_widget_show(hbox);
|
||||
g_signal_connect(G_OBJECT(cc_dlg->create_constructor_box), "toggled",
|
||||
G_CALLBACK(cc_dlg_on_set_sensitive_toggled), (gpointer)hbox);
|
||||
|
||||
label = gtk_label_new(_("GTK+ constructor type"));
|
||||
gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
|
||||
gtk_widget_show(label);
|
||||
|
||||
cc_dlg->gtk_constructor_type_entry = gtk_entry_new();
|
||||
gtk_entry_set_text(GTK_ENTRY(cc_dlg->gtk_constructor_type_entry), "GObject");
|
||||
gtk_container_add(GTK_CONTAINER(hbox), cc_dlg->gtk_constructor_type_entry);
|
||||
gtk_widget_show(cc_dlg->gtk_constructor_type_entry);
|
||||
}
|
||||
|
||||
if (gtk_dialog_run(GTK_DIALOG(cc_dlg->dialog)) == GTK_RESPONSE_OK)
|
||||
cc_dlg_on_create_class(cc_dlg);
|
||||
|
||||
gtk_widget_destroy(cc_dlg->dialog);
|
||||
// g_object_unref(G_OBJECT(cc_dlg->dialog));
|
||||
}
|
||||
|
||||
|
||||
static void cc_dlg_on_set_sensitive_toggled(GtkWidget *toggle_button, GtkWidget *target_widget)
|
||||
{
|
||||
g_return_if_fail(toggle_button != NULL);
|
||||
g_return_if_fail(GTK_IS_TOGGLE_BUTTON(toggle_button));
|
||||
g_return_if_fail(target_widget != NULL);
|
||||
g_return_if_fail(GTK_IS_WIDGET(target_widget));
|
||||
|
||||
gtk_widget_set_sensitive(target_widget,
|
||||
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toggle_button)));
|
||||
}
|
||||
|
||||
|
||||
static void cc_dlg_on_class_name_entry_changed(GtkWidget *entry, CreateClassDialog *cc_dlg)
|
||||
{
|
||||
gchar *class_name_down;
|
||||
gchar *class_header;
|
||||
gchar *class_source;
|
||||
|
||||
g_return_if_fail(entry != NULL);
|
||||
g_return_if_fail(GTK_IS_ENTRY(entry));
|
||||
g_return_if_fail(cc_dlg != NULL);
|
||||
|
||||
class_name_down = g_ascii_strdown(gtk_entry_get_text(GTK_ENTRY(entry)), -1);
|
||||
class_header = g_strconcat(class_name_down, ".h", NULL);
|
||||
if (cc_dlg->class_type == GEANY_CLASS_TYPE_CPP)
|
||||
class_source = g_strconcat(class_name_down, ".cpp", NULL);
|
||||
else
|
||||
class_source = g_strconcat(class_name_down, ".c", NULL);
|
||||
|
||||
gtk_entry_set_text(GTK_ENTRY(cc_dlg->header_entry), class_header);
|
||||
gtk_entry_set_text(GTK_ENTRY(cc_dlg->source_entry), class_source);
|
||||
|
||||
g_free(class_name_down);
|
||||
g_free(class_header);
|
||||
g_free(class_source);
|
||||
}
|
||||
|
||||
|
||||
static gchar* str_case_split(const gchar *str, gchar splitter)
|
||||
{
|
||||
GString *result;
|
||||
|
||||
g_return_val_if_fail(str != NULL, NULL);
|
||||
if (*str == '\0')
|
||||
return g_strdup("");
|
||||
|
||||
result = g_string_new(NULL);
|
||||
g_string_append_c(result, *str);
|
||||
while (*(++str) != '\0')
|
||||
{
|
||||
if (g_ascii_isupper(*str) && g_ascii_islower(result->str[result->len - 1]))
|
||||
g_string_append_c(result, splitter);
|
||||
g_string_append_c(result, *str);
|
||||
}
|
||||
return g_string_free(result, FALSE);
|
||||
}
|
||||
|
||||
|
||||
static void cc_dlg_on_base_name_entry_changed(GtkWidget *entry, CreateClassDialog *cc_dlg)
|
||||
{
|
||||
gchar *base_name_splitted;
|
||||
gchar *base_header;
|
||||
gchar *tmp;
|
||||
|
||||
g_return_if_fail(entry != NULL);
|
||||
g_return_if_fail(GTK_IS_ENTRY(entry));
|
||||
g_return_if_fail(cc_dlg != NULL);
|
||||
|
||||
base_name_splitted = str_case_split(gtk_entry_get_text(GTK_ENTRY(entry)), '_');
|
||||
if (! g_ascii_strncasecmp(gtk_entry_get_text(GTK_ENTRY(entry)), "gtk", 3))
|
||||
tmp = g_strconcat("gtk/", gtk_entry_get_text(GTK_ENTRY(entry)), ".h", NULL);
|
||||
else if (utils_str_equal(gtk_entry_get_text(GTK_ENTRY(entry)), "GObject"))
|
||||
tmp = g_strdup("glib-object.h");
|
||||
else
|
||||
tmp = g_strconcat(gtk_entry_get_text(GTK_ENTRY(entry)), ".h", NULL);
|
||||
base_header = g_ascii_strdown(tmp, -1);
|
||||
g_free(tmp);
|
||||
|
||||
gtk_entry_set_text(GTK_ENTRY(cc_dlg->base_header_entry), base_header);
|
||||
|
||||
if (cc_dlg->class_type == GEANY_CLASS_TYPE_GTK)
|
||||
{
|
||||
gchar *base_gtype;
|
||||
if (! g_ascii_strncasecmp(gtk_entry_get_text(GTK_ENTRY(entry)), "gtk", 3))
|
||||
tmp = g_strdup_printf("%.3s_TYPE%s",
|
||||
base_name_splitted,
|
||||
base_name_splitted + 3);
|
||||
else if (utils_str_equal(gtk_entry_get_text(GTK_ENTRY(entry)), "GObject"))
|
||||
tmp = g_strdup("G_TYPE_OBJECT");
|
||||
else
|
||||
tmp = g_strconcat(base_name_splitted, "_TYPE", NULL);
|
||||
base_gtype = g_ascii_strup(tmp, -1);
|
||||
gtk_entry_set_text(GTK_ENTRY(cc_dlg->base_gtype_entry), base_gtype);
|
||||
|
||||
g_free(base_gtype);
|
||||
g_free(tmp);
|
||||
}
|
||||
|
||||
g_free(base_name_splitted);
|
||||
g_free(base_header);
|
||||
}
|
||||
|
||||
|
||||
static void cc_dlg_on_create_class(CreateClassDialog *cc_dlg)
|
||||
{
|
||||
ClassInfo *class_info;
|
||||
gint idx;
|
||||
gchar *text;
|
||||
gchar *tmp;
|
||||
|
||||
g_return_if_fail(cc_dlg != NULL);
|
||||
|
||||
if (utils_str_equal(gtk_entry_get_text(GTK_ENTRY(cc_dlg->class_name_entry)), ""))
|
||||
return;
|
||||
|
||||
class_info = g_new0(ClassInfo, 1);
|
||||
class_info->type = cc_dlg->class_type;
|
||||
class_info->class_name = g_strdup(gtk_entry_get_text(GTK_ENTRY(cc_dlg->class_name_entry)));
|
||||
tmp = str_case_split(class_info->class_name, '_');
|
||||
class_info->class_name_up = g_ascii_strup(tmp, -1);
|
||||
class_info->class_name_low = g_ascii_strdown(class_info->class_name_up, -1);
|
||||
if (! utils_str_equal(gtk_entry_get_text(GTK_ENTRY(cc_dlg->base_name_entry)), ""))
|
||||
{
|
||||
class_info->base_name = g_strdup(gtk_entry_get_text(GTK_ENTRY(cc_dlg->base_name_entry)));
|
||||
class_info->base_include = g_strdup_printf("\n#include %c%s%c\n",
|
||||
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(cc_dlg->base_header_global_box)) ?
|
||||
'<' : '\"',
|
||||
gtk_entry_get_text(GTK_ENTRY(cc_dlg->base_header_entry)),
|
||||
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(cc_dlg->base_header_global_box)) ?
|
||||
'>' : '\"');
|
||||
}
|
||||
else
|
||||
{
|
||||
class_info->base_name = g_strdup("");
|
||||
class_info->base_include = g_strdup("");
|
||||
}
|
||||
class_info->header = g_strdup(gtk_entry_get_text(GTK_ENTRY(cc_dlg->header_entry)));
|
||||
class_info->header_guard = g_ascii_strup(class_info->header, -1);
|
||||
g_strdelimit(class_info->header_guard, ".", '_');
|
||||
switch (class_info->type)
|
||||
{
|
||||
case GEANY_CLASS_TYPE_CPP:
|
||||
{
|
||||
class_info->source = g_strdup(gtk_entry_get_text(GTK_ENTRY(cc_dlg->source_entry)));
|
||||
if (! utils_str_equal(class_info->base_name, ""))
|
||||
class_info->base_decl = g_strdup_printf(": public %s", class_info->base_name);
|
||||
else
|
||||
class_info->base_decl = g_strdup("");
|
||||
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(cc_dlg->create_constructor_box)))
|
||||
{
|
||||
gchar *base_constructor;
|
||||
|
||||
if (utils_str_equal(class_info->base_name, ""))
|
||||
base_constructor = g_strdup("");
|
||||
else
|
||||
base_constructor = g_strdup_printf("\t: %s()\n", class_info->base_name);
|
||||
class_info->constructor_decl = g_strdup_printf("%s();\n", class_info->class_name);
|
||||
class_info->constructor_impl = g_strdup_printf("\n%s::%s()\n%s{\n\t\n}\n",
|
||||
class_info->class_name, class_info->class_name, base_constructor);
|
||||
g_free(base_constructor);
|
||||
}
|
||||
else
|
||||
{
|
||||
class_info->constructor_decl = g_strdup("");
|
||||
class_info->constructor_impl = g_strdup("");
|
||||
}
|
||||
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(cc_dlg->create_destructor_box)))
|
||||
{
|
||||
class_info->destructor_decl =
|
||||
g_strdup_printf("virtual ~%s();\n", class_info->class_name);
|
||||
class_info->destructor_impl = g_strdup_printf("\n%s::~%s()\n{\n\t\n}\n",
|
||||
class_info->class_name, class_info->class_name);
|
||||
}
|
||||
else
|
||||
{
|
||||
class_info->destructor_decl = g_strdup("");
|
||||
class_info->destructor_impl = g_strdup("");
|
||||
}
|
||||
break;
|
||||
}
|
||||
case GEANY_CLASS_TYPE_GTK:
|
||||
{
|
||||
class_info->base_gtype = g_strdup(gtk_entry_get_text(
|
||||
GTK_ENTRY(cc_dlg->base_gtype_entry)));
|
||||
class_info->source = g_strdup(gtk_entry_get_text(GTK_ENTRY(cc_dlg->source_entry)));
|
||||
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(cc_dlg->create_constructor_box)))
|
||||
{
|
||||
class_info->constructor_decl = g_strdup_printf("%s*\t%s_new\t\t\t(void);\n",
|
||||
gtk_entry_get_text(GTK_ENTRY(cc_dlg->gtk_constructor_type_entry)),
|
||||
class_info->class_name_low);
|
||||
class_info->constructor_impl = g_strdup_printf("\n"
|
||||
"%s* %s_new(void)\n"
|
||||
"{\n"
|
||||
"\treturn (%s*)g_object_new(%s_TYPE, NULL);\n"
|
||||
"}\n",
|
||||
gtk_entry_get_text(GTK_ENTRY(cc_dlg->gtk_constructor_type_entry)),
|
||||
class_info->class_name_low,
|
||||
gtk_entry_get_text(GTK_ENTRY(cc_dlg->gtk_constructor_type_entry)),
|
||||
class_info->class_name_up);
|
||||
}
|
||||
else
|
||||
{
|
||||
class_info->constructor_decl = g_strdup("");
|
||||
class_info->constructor_impl = g_strdup("");
|
||||
}
|
||||
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(cc_dlg->create_destructor_box)))
|
||||
{
|
||||
class_info->gtk_destructor_registration =
|
||||
g_strdup_printf("GObjectClass *g_object_class;\n\n"
|
||||
"\tg_object_class = G_OBJECT_CLASS(klass);\n\n"
|
||||
"\tg_object_class->finalize = %s_finalize;\n",
|
||||
class_info->class_name_low);
|
||||
class_info->destructor_decl =
|
||||
g_strdup_printf("static void %s_finalize\t\t\t(GObject *object);\n",
|
||||
class_info->class_name_low);
|
||||
class_info->destructor_impl = g_strdup_printf("\n"
|
||||
"void %s_finalize(GObject *object)\n"
|
||||
"{\n"
|
||||
"\t%s *self;\n\n"
|
||||
"\tg_return_if_fail(object != NULL);\n"
|
||||
"\tg_return_if_fail(IS_%s(object));\n\n"
|
||||
"\tself = %s(object);\n\n"
|
||||
"\tif (G_OBJECT_CLASS(parent_class)->finalize)\n"
|
||||
"\t\t(* G_OBJECT_CLASS(parent_class)->finalize)(object);\n"
|
||||
"}\n",
|
||||
class_info->class_name_low,
|
||||
class_info->class_name,
|
||||
class_info->class_name_up,
|
||||
class_info->class_name_up);
|
||||
}
|
||||
else
|
||||
{
|
||||
class_info->gtk_destructor_registration = g_strdup("");
|
||||
class_info->destructor_decl = g_strdup("");
|
||||
class_info->destructor_impl = g_strdup("");
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// only create the files if the filename is not empty
|
||||
if (! utils_str_equal(class_info->source, ""))
|
||||
{
|
||||
text = templates_get_template_class_source(class_info);
|
||||
idx = document_new_file(class_info->source, NULL);
|
||||
sci_set_text(doc_list[idx].sci, text);
|
||||
g_free(text);
|
||||
}
|
||||
|
||||
if (! utils_str_equal(class_info->header, ""))
|
||||
{
|
||||
text = templates_get_template_class_header(class_info);
|
||||
idx = document_new_file(class_info->header, NULL);
|
||||
sci_set_text(doc_list[idx].sci, text);
|
||||
g_free(text);
|
||||
}
|
||||
|
||||
utils_free_pointers(tmp, class_info->class_name, class_info->class_name_up,
|
||||
class_info->base_name, class_info->class_name_low, class_info->base_include,
|
||||
class_info->header, class_info->header_guard, class_info->source, class_info->base_decl,
|
||||
class_info->constructor_decl, class_info->constructor_impl,
|
||||
class_info->gtk_destructor_registration, class_info->destructor_decl,
|
||||
class_info->destructor_impl, class_info->base_gtype, class_info, NULL);
|
||||
}
|
||||
|
||||
|
||||
@ -31,6 +31,4 @@ void tools_create_insert_custom_command_menu_items();
|
||||
|
||||
void tools_execute_custom_command(gint idx, const gchar *command);
|
||||
|
||||
void tools_show_dialog_create_class(gint type);
|
||||
|
||||
#endif
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user