style cleanup: follow style guide for formatting of if/for/while loops, and else...
[blender.git] / source / blender / editors / space_file / fsmenu.h
index f4291673a3e02dac1819081851a75b23e2916f28..c926a4f382cb223e30aa417bffc6054ca33fd31b 100644 (file)
@@ -1,6 +1,4 @@
-/**
- * $Id$
- *
+/*
  * ***** BEGIN GPL LICENSE BLOCK *****
  *
  * This program is free software; you can redistribute it and/or
@@ -15,7 +13,7 @@
  *
  * 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., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  *
  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
  * All rights reserved.
  * 
  */
 
-#ifndef BSE_FSMENU_H
-#define BSE_FSMENU_H
+/** \file blender/editors/space_file/fsmenu.h
+ *  \ingroup spfile
+ */
 
-       /** Returns the number of entries in the Fileselect Menu */
-int            fsmenu_get_nentries             (void);
 
-       /** Returns true if the fsmenu entry at @a index exists and
-        * is a seperator.
-        */
-int    fsmenu_is_entry_a_separator     (int index);
+#ifndef __FSMENU_H__
+#define __FSMENU_H__
 
-       /** Returns the fsmenu entry at @a index (or NULL if a bad index)
-     * or a separator.
-        */
-char*  fsmenu_get_entry                (int index);
+/* XXX could become UserPref */
+#define FSMENU_RECENT_MAX 10
 
-       /** Returns a new menu description string representing the
-        * fileselect menu. Should be free'd with MEM_freeN.
-        */
-char*  fsmenu_build_menu               (void);
+typedef enum FSMenuCategory {
+       FS_CATEGORY_SYSTEM,
+       FS_CATEGORY_BOOKMARKS,
+       FS_CATEGORY_RECENT
+} FSMenuCategory;
 
-       /** Append a seperator to the FSMenu, inserts always follow the
-        * last seperator.
+struct FSMenu;
+
+struct FSMenu* fsmenu_get              (void);
+
+       /** Returns the number of entries in the Fileselect Menu */
+int            fsmenu_get_nentries             (struct FSMenu* fsmenu, FSMenuCategory category);
+
+       /** Returns the fsmenu entry at \a index (or NULL if a bad index)
+        * or a separator.
         */
-void   fsmenu_append_separator (void);
+char*  fsmenu_get_entry                (struct FSMenu* fsmenu, FSMenuCategory category, int index);
 
-       /** Inserts a new fsmenu entry with the given @a path.
+       /** Inserts a new fsmenu entry with the given \a path.
         * Duplicate entries are not added.
-        * @param sorted Should entry be inserted in sorted order?
+        * \param sorted Should entry be inserted in sorted order?
         */
-void   fsmenu_insert_entry             (char *path, int sorted, short save);
+void   fsmenu_insert_entry             (struct FSMenu* fsmenu, FSMenuCategory category, const char *path, int sorted, short save);
+
+       /** Return whether the entry was created by the user and can be saved and deleted */
+short   fsmenu_can_save                        (struct FSMenu* fsmenu, FSMenuCategory category, int index);
 
-       /** Removes the fsmenu entry at the given @a index. */
-void   fsmenu_remove_entry             (int index);
+       /** Removes the fsmenu entry at the given \a index. */
+void   fsmenu_remove_entry             (struct FSMenu* fsmenu, FSMenuCategory category, int index);
 
        /** saves the 'bookmarks' to the specified file */
-void   fsmenu_write_file(const char *filename);
+void   fsmenu_write_file               (struct FSMenu* fsmenu, const char *filename);
        
        /** reads the 'bookmarks' from the specified file */
-void   fsmenu_read_file(const char *filename);
+void   fsmenu_read_bookmarks   (struct FSMenu* fsmenu, const char *filename);
+
+       /** adds system specific directories */
+void   fsmenu_read_system      (struct FSMenu* fsmenu);
 
        /** Free's all the memory associated with the fsmenu */
-void   fsmenu_free                             (void);
+void   fsmenu_free                             (struct FSMenu* fsmenu);
 
 #endif