2005-11-22 12:26:26 +00:00
|
|
|
/*
|
|
|
|
* utils.h - this file is part of Geany, a fast and lightweight IDE
|
|
|
|
*
|
2007-01-14 17:36:42 +00:00
|
|
|
* Copyright 2005-2007 Enrico Tröger <enrico.troeger@uvena.de>
|
2007-01-14 17:09:17 +00:00
|
|
|
* Copyright 2006-2007 Nick Treleaven <nick.treleaven@btinternet.com>
|
2005-11-22 12:26:26 +00:00
|
|
|
*
|
|
|
|
* 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
|
2006-05-12 16:11:14 +00:00
|
|
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
2005-11-22 12:26:26 +00:00
|
|
|
*
|
2005-11-27 20:49:50 +00:00
|
|
|
* $Id$
|
2005-11-22 12:26:26 +00:00
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
#ifndef GEANY_UTILS_H
|
|
|
|
#define GEANY_UTILS_H 1
|
|
|
|
|
2007-04-30 16:16:15 +00:00
|
|
|
// Returns: TRUE if ptr points to a non-zero value.
|
|
|
|
#define NZV(ptr) \
|
|
|
|
((ptr) && (ptr)[0])
|
|
|
|
|
2007-05-24 16:00:48 +00:00
|
|
|
/* Free's ptr (if not NULL), then assigns result to it.
|
|
|
|
* result can be an expression using the 'old' value of ptr.
|
|
|
|
* It prevents a memory leak compared with: ptr = func(ptr); */
|
|
|
|
#define setptr(ptr, result)\
|
|
|
|
{\
|
|
|
|
gpointer tmp = ptr;\
|
|
|
|
ptr = result;\
|
|
|
|
g_free(tmp);\
|
|
|
|
}
|
|
|
|
|
2005-11-22 12:26:26 +00:00
|
|
|
|
2006-05-15 19:44:09 +00:00
|
|
|
void utils_start_browser(const gchar *uri);
|
2005-11-22 12:26:26 +00:00
|
|
|
|
|
|
|
/* taken from anjuta, to determine the EOL mode of the file */
|
|
|
|
gint utils_get_line_endings(gchar* buffer, glong size);
|
|
|
|
|
|
|
|
gboolean utils_isbrace(gchar c);
|
|
|
|
|
2006-06-29 18:22:11 +00:00
|
|
|
gboolean utils_is_opening_brace(gchar c);
|
|
|
|
|
2006-06-19 13:27:09 +00:00
|
|
|
gboolean utils_goto_file_line(const gchar *file, gboolean is_tm_filename, gint line);
|
2005-11-22 12:26:26 +00:00
|
|
|
|
|
|
|
gboolean utils_goto_line(gint idx, gint line);
|
|
|
|
|
2005-12-12 16:19:30 +00:00
|
|
|
gint utils_write_file(const gchar *filename, const gchar *text);
|
2005-11-22 12:26:26 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* (stolen from anjuta and modified)
|
|
|
|
* Search backward through size bytes looking for a '<', then return the tag if any
|
|
|
|
* @return The tag name
|
|
|
|
*/
|
|
|
|
gchar *utils_find_open_xml_tag(const gchar sel[], gint size, gboolean check_tag);
|
|
|
|
|
2006-12-18 13:04:18 +00:00
|
|
|
gboolean utils_check_disk_status(gint idx, gboolean force);
|
2005-11-22 12:26:26 +00:00
|
|
|
|
|
|
|
//gchar *utils_get_current_tag(gint idx, gint direction);
|
2006-06-16 17:11:09 +00:00
|
|
|
gint utils_get_current_function(gint idx, const gchar **tagname);
|
2005-11-22 12:26:26 +00:00
|
|
|
|
|
|
|
/* returns the end-of-line character(s) length of the specified editor */
|
|
|
|
gint utils_get_eol_char_len(gint idx);
|
|
|
|
|
|
|
|
/* returns the end-of-line character(s) of the specified editor */
|
|
|
|
gchar *utils_get_eol_char(gint idx);
|
|
|
|
|
|
|
|
/* mainly debug function, to get TRUE or FALSE as ascii from a gboolean */
|
|
|
|
gchar *utils_btoa(gboolean sbool);
|
|
|
|
|
|
|
|
gboolean utils_atob(const gchar *str);
|
|
|
|
|
|
|
|
gboolean utils_is_absolute_path(const gchar *path);
|
|
|
|
|
|
|
|
gdouble utils_scale_round(gdouble val, gdouble factor);
|
|
|
|
|
2006-12-07 16:09:45 +00:00
|
|
|
/* (taken from libexo from os-cillation)
|
|
|
|
* NULL-safe string comparison. Returns TRUE if both a and b are
|
|
|
|
* NULL or if a and b refer to valid strings which are equal.
|
|
|
|
*/
|
|
|
|
gboolean utils_str_equal(const gchar *a, const gchar *b);
|
|
|
|
|
2005-11-22 12:26:26 +00:00
|
|
|
/* removes the extension from filename and return the result in
|
|
|
|
* a newly allocated string */
|
|
|
|
gchar *utils_remove_ext_from_filename(const gchar *filename);
|
|
|
|
|
|
|
|
|
|
|
|
gchar utils_brace_opposite(gchar ch);
|
|
|
|
|
2006-09-05 14:24:47 +00:00
|
|
|
gchar *utils_get_hostname();
|
2005-11-22 12:26:26 +00:00
|
|
|
|
2006-07-26 17:02:16 +00:00
|
|
|
gint utils_make_settings_dir(const gchar *dir, const gchar *data_dir, const gchar *doc_dir);
|
2005-11-22 12:26:26 +00:00
|
|
|
|
|
|
|
gchar *utils_str_replace(gchar *haystack, const gchar *needle, const gchar *replacement);
|
|
|
|
|
|
|
|
gint utils_strpos(const gchar* haystack, const gchar * needle);
|
|
|
|
|
2006-09-05 14:24:47 +00:00
|
|
|
gchar *utils_get_date_time();
|
2005-11-22 12:26:26 +00:00
|
|
|
|
2006-09-05 14:24:47 +00:00
|
|
|
gchar *utils_get_date();
|
2006-08-19 12:56:30 +00:00
|
|
|
|
2005-11-22 12:26:26 +00:00
|
|
|
gchar *utils_get_initials(gchar *name);
|
|
|
|
|
|
|
|
gboolean utils_get_setting_boolean(GKeyFile *config, const gchar *section, const gchar *key, const gboolean default_value);
|
|
|
|
|
|
|
|
gint utils_get_setting_integer(GKeyFile *config, const gchar *section, const gchar *key, const gint default_value);
|
|
|
|
|
|
|
|
gchar *utils_get_setting_string(GKeyFile *config, const gchar *section, const gchar *key, const gchar *default_value);
|
|
|
|
|
|
|
|
void utils_switch_document(gint direction);
|
|
|
|
|
2005-11-27 20:49:50 +00:00
|
|
|
void utils_replace_filename(gint idx);
|
|
|
|
|
2005-12-11 02:16:02 +00:00
|
|
|
gchar *utils_get_hex_from_color(GdkColor *color);
|
|
|
|
|
2006-01-26 21:32:46 +00:00
|
|
|
gchar *utils_get_current_file_dir();
|
|
|
|
|
2006-09-05 14:24:47 +00:00
|
|
|
void utils_beep();
|
2006-02-06 06:34:32 +00:00
|
|
|
|
2006-02-22 13:41:50 +00:00
|
|
|
gchar *utils_make_human_readable_str(unsigned long long size, unsigned long block_size,
|
|
|
|
unsigned long display_unit);
|
|
|
|
|
2006-07-27 20:57:13 +00:00
|
|
|
/* utils_strtod() converts a string containing a hex colour ("0x00ff00") into an integer.
|
|
|
|
* Basically, it is the same as strtod() would do, but it does not understand hex colour values,
|
|
|
|
* before ANSI-C99. With with_route set, it takes strings of the format "#00ff00". */
|
|
|
|
gint utils_strtod(const gchar *source, gchar **end, gboolean with_route);
|
2006-05-05 16:07:40 +00:00
|
|
|
|
2006-07-01 12:02:30 +00:00
|
|
|
// returned string must be freed.
|
|
|
|
gchar *utils_get_current_time_string();
|
|
|
|
|
2007-03-01 21:45:43 +00:00
|
|
|
GIOChannel *utils_set_up_io_channel(gint fd, GIOCondition cond, gboolean nblock,
|
|
|
|
GIOFunc func, gpointer data);
|
2006-07-13 14:30:44 +00:00
|
|
|
|
2006-07-17 10:42:26 +00:00
|
|
|
gchar **utils_read_file_in_array(const gchar *filename);
|
|
|
|
|
2006-07-19 11:30:59 +00:00
|
|
|
/* Contributed by Stefan Oltmanns, thanks.
|
|
|
|
* Replaces \\, \r, \n, \t and \uXXX by their real counterparts */
|
|
|
|
gboolean utils_str_replace_escape(gchar *string);
|
|
|
|
|
2006-08-03 13:27:30 +00:00
|
|
|
/* Wraps a string in place, replacing a space with a newline character.
|
|
|
|
* wrapstart is the minimum position to start wrapping or -1 for default */
|
|
|
|
gboolean utils_wrap_string(gchar *string, gint wrapstart);
|
|
|
|
|
2006-08-12 21:36:55 +00:00
|
|
|
/* Simple wrapper for g_locale_from_utf8; returns a copy of utf8_text on failure. */
|
|
|
|
gchar *utils_get_locale_from_utf8(const gchar *utf8_text);
|
|
|
|
|
|
|
|
/* Simple wrapper for g_locale_to_utf8; returns a copy of locale_text on failure. */
|
|
|
|
gchar *utils_get_utf8_from_locale(const gchar *locale_text);
|
|
|
|
|
2007-04-23 15:52:44 +00:00
|
|
|
|
2007-07-04 11:14:05 +00:00
|
|
|
/* 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. */
|
2007-04-23 15:52:44 +00:00
|
|
|
void utils_free_pointers(gpointer first, ...) G_GNUC_NULL_TERMINATED;
|
2007-01-14 17:09:17 +00:00
|
|
|
|
2007-04-23 15:52:44 +00:00
|
|
|
/* Creates a string array deep copy of a series of non-NULL strings.
|
|
|
|
* The first argument is nothing special.
|
|
|
|
* The list must be ended with NULL.
|
|
|
|
* If first is NULL, NULL is returned. */
|
|
|
|
gchar **utils_strv_new(gchar *first, ...) G_GNUC_NULL_TERMINATED;
|
2007-02-08 16:26:45 +00:00
|
|
|
|
2007-05-11 11:42:00 +00:00
|
|
|
|
2007-03-10 17:26:03 +00:00
|
|
|
gint utils_mkdir(const gchar *path, gboolean create_parent_dirs);
|
2007-01-17 23:44:08 +00:00
|
|
|
|
2007-05-11 11:42:00 +00:00
|
|
|
/* Gets a sorted list of files in the specified directory. */
|
|
|
|
GSList *utils_get_file_list(const gchar *path, guint *length, GError **error);
|
|
|
|
|
2005-11-22 12:26:26 +00:00
|
|
|
#endif
|