"Fossies" - the Fresh Open Source Software Archive

Member "geany-1.36/src/build.h" (28 Sep 2019, 5518 Bytes) of package /linux/misc/geany-1.36.tar.bz2:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file. For more information about "build.h" see the Fossies "Dox" file reference documentation and the latest Fossies "Diffs" side-by-side code changes report: 1.35_vs_1.36.

    1 /*
    2  *      build.h - this file is part of Geany, a fast and lightweight IDE
    3  *
    4  *      Copyright 2005 The Geany contributors
    5  *
    6  *      This program is free software; you can redistribute it and/or modify
    7  *      it under the terms of the GNU General Public License as published by
    8  *      the Free Software Foundation; either version 2 of the License, or
    9  *      (at your option) any later version.
   10  *
   11  *      This program is distributed in the hope that it will be useful,
   12  *      but WITHOUT ANY WARRANTY; without even the implied warranty of
   13  *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   14  *      GNU General Public License for more details.
   15  *
   16  *      You should have received a copy of the GNU General Public License along
   17  *      with this program; if not, write to the Free Software Foundation, Inc.,
   18  *      51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
   19  */
   20 
   21 /** @file build.h Interface to the Build menu functionality. */
   22 
   23 #ifndef GEANY_BUILD_H
   24 #define GEANY_BUILD_H 1
   25 
   26 #include "document.h"
   27 #include "filetypes.h"
   28 
   29 #include "gtkcompat.h"
   30 
   31 G_BEGIN_DECLS
   32 
   33 /** Groups of Build menu items. */
   34 typedef enum
   35 {
   36     GEANY_GBG_FT,       /**< filetype items */
   37     GEANY_GBG_NON_FT,   /**< non filetype items.*/
   38     GEANY_GBG_EXEC,     /**< execute items */
   39     GEANY_GBG_COUNT     /**< count of groups. */
   40 } GeanyBuildGroup;
   41 
   42 /** Build menu item sources in increasing priority */
   43 typedef enum
   44 {
   45     GEANY_BCS_DEF,      /**< Default values. */
   46     GEANY_BCS_FT,       /**< System filetype values. */
   47     GEANY_BCS_HOME_FT,  /**< Filetypes in ~/.config/geany/filedefs */
   48     GEANY_BCS_PREF,     /**< Preferences file ~/.config/geany/geany.conf */
   49     GEANY_BCS_PROJ_FT,  /**< Project file filetype command */
   50     GEANY_BCS_PROJ,     /**< Project file if open. */
   51     GEANY_BCS_COUNT     /**< Count of sources. */
   52 } GeanyBuildSource;
   53 
   54 /** The entries of a command for a menu item */
   55 typedef enum GeanyBuildCmdEntries
   56 {
   57     GEANY_BC_LABEL,             /**< The menu item label, _ marks mnemonic */
   58     GEANY_BC_COMMAND,           /**< The command to run. */
   59     GEANY_BC_WORKING_DIR,       /**< The directory to run in */
   60     GEANY_BC_CMDENTRIES_COUNT   /**< Count of entries */
   61 } GeanyBuildCmdEntries;
   62 
   63 void build_activate_menu_item(const GeanyBuildGroup grp, const guint cmd);
   64 
   65 const gchar *build_get_current_menu_item(const GeanyBuildGroup grp, const guint cmd,
   66                                          const GeanyBuildCmdEntries field);
   67 
   68 void build_remove_menu_item(const GeanyBuildSource src, const GeanyBuildGroup grp, const gint cmd);
   69 
   70 void build_set_menu_item(const GeanyBuildSource src, const GeanyBuildGroup grp,
   71                          const guint cmd, const GeanyBuildCmdEntries field, const gchar *value);
   72 
   73 guint build_get_group_count(const GeanyBuildGroup grp);
   74 
   75 
   76 #ifdef GEANY_PRIVATE
   77 
   78 /* include the fixed widgets in an array indexed by groups */
   79 #define GBG_FIXED GEANY_GBG_COUNT
   80 
   81 enum GeanyBuildFixedMenuItems
   82 {
   83     GBF_NEXT_ERROR,
   84     GBF_PREV_ERROR,
   85     GBF_COMMANDS,
   86     GBF_SEP_1,
   87     GBF_SEP_2,
   88     GBF_SEP_3,
   89     GBF_SEP_4,
   90     GBF_COUNT
   91 };
   92 
   93 typedef struct GeanyBuildInfo
   94 {
   95     GeanyBuildGroup  grp;
   96     guint            cmd;
   97     GPid             pid;   /* process id of the spawned process */
   98     gchar           *dir;
   99     guint            file_type_id;
  100     gchar           *custom_target;
  101     gint             message_count;
  102 } GeanyBuildInfo;
  103 
  104 extern GeanyBuildInfo build_info;
  105 
  106 /* * The command for a menu item. */
  107 typedef struct GeanyBuildCommand
  108 {
  109     /* * Pointers to g_string values of the command entries.
  110      * Must be freed if the pointer is changed. */
  111     gchar       *label;                     /* *< Menu item label */
  112     gchar       *command;                   /* *< Command to run */
  113     gchar       *working_dir;               /* *< working directory */
  114     gboolean     exists;                    /* *< If the entries have valid values. */
  115     gboolean     changed;                   /* *< Save on exit if @c changed, remove if not @c exist. */
  116     gboolean     old;                       /* *< Converted from old format. */
  117 } GeanyBuildCommand;
  118 
  119 typedef struct BuildMenuItems
  120 {
  121     GtkWidget       *menu;
  122     GtkWidget       **menu_item[GEANY_GBG_COUNT + 1];  /* +1 for fixed items */
  123 } BuildMenuItems;
  124 
  125 /* a structure defining the destinations for a set of groups of commands & regex */
  126 typedef struct BuildDestination
  127 {
  128     GeanyBuildCommand   **dst[GEANY_GBG_COUNT];
  129     gchar               **fileregexstr;
  130     gchar               **nonfileregexstr;
  131 } BuildDestination;
  132 
  133 /* opaque pointers returned from build functions and passed back to them */
  134 typedef struct BuildTableFields *BuildTableData;
  135 
  136 
  137 void build_init(void);
  138 
  139 void build_finalize(void);
  140 
  141 /* menu configuration dialog functions */
  142 GtkWidget *build_commands_table(GeanyDocument *doc, GeanyBuildSource dst, BuildTableData *data, GeanyFiletype *ft);
  143 
  144 void build_read_project(GeanyFiletype *ft, BuildTableData build_properties);
  145 
  146 void build_free_fields(BuildTableData data);
  147 
  148 /* build response decode assistance function */
  149 gboolean build_parse_make_dir(const gchar *string, gchar **prefix);
  150 
  151 /* build menu functions */
  152 
  153 void build_menu_update(GeanyDocument *doc);
  154 
  155 void build_toolbutton_build_clicked(GtkAction *action, gpointer user_data);
  156 
  157 GeanyBuildCommand *build_get_menu_item(const GeanyBuildSource src, const GeanyBuildGroup grp, const guint cmd);
  158 
  159 BuildMenuItems *build_get_menu_items(gint filetype_idx);
  160 
  161 /* load and store menu configuration */
  162 void build_load_menu(GKeyFile *config, GeanyBuildSource dst, gpointer ptr);
  163 
  164 void build_save_menu(GKeyFile *config, gpointer ptr, GeanyBuildSource src);
  165 
  166 void build_set_group_count(GeanyBuildGroup grp, gint count);
  167 
  168 gchar **build_get_regex(GeanyBuildGroup grp, GeanyFiletype *ft, guint *from);
  169 
  170 gboolean build_keybinding(guint key_id);
  171 
  172 #endif /* GEANY_PRIVATE */
  173 
  174 G_END_DECLS
  175 
  176 #endif /* GEANY_BUILD_H */