SF.net SVN: geany-plugins: [38] trunk/instantsave/src/instantsave.c
eht16 at users.sourceforge.net
eht16 at xxxxx
Tue May 20 18:11:58 UTC 2008
Revision: 38
http://geany-plugins.svn.sourceforge.net/geany-plugins/?rev=38&view=rev
Author: eht16
Date: 2008-05-20 11:11:58 -0700 (Tue, 20 May 2008)
Log Message:
-----------
Add new GeanyFunctions API.
Make the code compatible with current Geany API.
Add the filetype's default extension to the new filename.
Modified Paths:
--------------
trunk/instantsave/src/instantsave.c
Modified: trunk/instantsave/src/instantsave.c
===================================================================
--- trunk/instantsave/src/instantsave.c 2008-05-20 18:08:10 UTC (rev 37)
+++ trunk/instantsave/src/instantsave.c 2008-05-20 18:11:58 UTC (rev 38)
@@ -33,6 +33,7 @@
#include "support.h"
#include "document.h"
#include "filetypes.h"
+#include "utils.h"
#include "plugindata.h"
#include "pluginmacros.h"
@@ -40,16 +41,17 @@
PluginFields *plugin_fields;
GeanyData *geany_data;
+GeanyFunctions *geany_functions;
-PLUGIN_VERSION_CHECK(51)
+PLUGIN_VERSION_CHECK(60)
PLUGIN_INFO(_("Instant Save"), _("Save instantly new files without an explicit Save As dialog."),
"0.1", "Enrico Tröger")
static gchar *config_file;
-static gint default_ft_uid; /* this is the filetype uid, not a filetype id */
+static gchar *default_ft;
static void on_document_new(GObject *obj, gint idx, gpointer user_data)
@@ -58,15 +60,20 @@
{
gchar *new_filename;
gint fd;
+ GeanyFiletype *ft = p_filetypes->lookup_by_name(default_ft);
fd = g_file_open_tmp("gis_XXXXXX", &new_filename, NULL);
if (fd != -1)
close(fd); /* close the returned file descriptor as we only need the filename */
+ if (ft != NULL)
+ /* add the filetype's default extension to the new filename */
+ setptr(new_filename, g_strconcat(new_filename, ".", ft->extension, NULL));
+
doc_list[idx].file_name = new_filename;
- if (FILETYPE_ID(doc_list[idx].file_type) == GEANY_FILETYPES_ALL)
- p_document->set_filetype(idx, p_filetypes->get_from_uid(default_ft_uid));
+ if (FILETYPE_ID(doc_list[idx].file_type) == GEANY_FILETYPES_NONE)
+ p_document->set_filetype(idx, p_filetypes->lookup_by_name(default_ft));
/* force saving the file to enable all the related actions(tab name, filetype, etc.) */
p_document->save_file(idx, TRUE);
@@ -114,8 +121,8 @@
"instantsave", G_DIR_SEPARATOR_S, "instantsave.conf", NULL);
g_key_file_load_from_file(config, config_file, G_KEY_FILE_NONE, NULL);
- default_ft_uid = p_utils->get_setting_integer(config, "instantsave", "default_ft",
- geany_data->filetypes[GEANY_FILETYPES_ALL]->uid);
+ default_ft = p_utils->get_setting_string(config, "instantsave", "default_ft",
+ filetypes[GEANY_FILETYPES_NONE]->name);
locale_init();
@@ -127,7 +134,6 @@
{
GtkWidget *dialog, *label, *vbox, *combo;
gint i;
- filetype *ft;
dialog = gtk_dialog_new_with_buttons(_("Instant Save"),
GTK_WINDOW(parent), GTK_DIALOG_DESTROY_WITH_PARENT,
@@ -141,12 +147,13 @@
gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
combo = gtk_combo_box_new_text();
- for (i = 0; i < GEANY_MAX_FILE_TYPES; i++)
+ for (i = 0; i < filetypes_array->len; i++)
{
- gtk_combo_box_append_text(GTK_COMBO_BOX(combo), geany_data->filetypes[i]->name);
+ gtk_combo_box_append_text(GTK_COMBO_BOX(combo), filetypes[i]->name);
+
+ if (p_utils->str_equal(filetypes[i]->name, default_ft))
+ gtk_combo_box_set_active(GTK_COMBO_BOX(combo), i);
}
- ft = p_filetypes->get_from_uid(default_ft_uid);
- gtk_combo_box_set_active(GTK_COMBO_BOX(combo), FILETYPE_ID(ft));
gtk_combo_box_set_wrap_width(GTK_COMBO_BOX(combo), 3);
gtk_box_pack_start(GTK_BOX(vbox), combo, FALSE, FALSE, 0);
@@ -158,13 +165,12 @@
GKeyFile *config = g_key_file_new();
gchar *data;
gchar *config_dir = g_path_get_dirname(config_file);
- gint selected_ft_id;
- selected_ft_id = gtk_combo_box_get_active(GTK_COMBO_BOX(combo));
- default_ft_uid = geany_data->filetypes[selected_ft_id]->uid;
+ g_free(default_ft);
+ default_ft = gtk_combo_box_get_active_text(GTK_COMBO_BOX(combo));
g_key_file_load_from_file(config, config_file, G_KEY_FILE_NONE, NULL);
- g_key_file_set_integer(config, "instantsave", "default_ft", default_ft_uid);
+ g_key_file_set_string(config, "instantsave", "default_ft", default_ft);
if (! g_file_test(config_dir, G_FILE_TEST_IS_DIR) && p_utils->mkdir(config_dir, TRUE) != 0)
{
@@ -189,4 +195,5 @@
void cleanup(void)
{
g_free(config_file);
+ g_free(default_ft);
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Plugins-Commits
mailing list