own fix r34446, was incorrect, fixed properly now.
[blender.git] / source / blender / makesdna / DNA_windowmanager_types.h
index 678cc85ee0f34dec15934978aa2b4a13c434d52d..a29ea4e9152a3672771863530c9f1bb83c3bd746 100644 (file)
@@ -15,7 +15,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) 2007 Blender Foundation.
  * All rights reserved.
@@ -81,22 +81,37 @@ typedef enum ReportType {
 enum ReportListFlags {
        RPT_PRINT = 1,
        RPT_STORE = 2,
-       RPT_FREE = 4,
+       RPT_FREE = 4
 };
+#
+#
 typedef struct Report {
        struct Report *next, *prev;
        short type; /* ReportType */
        short flag;
        int len; /* strlen(message), saves some time calculating the word wrap  */
-       char *typestr;
-       char *message;
+       const char *typestr;
+       const char *message;
 } Report;
+
+/* saved in the wm, dont remove */
 typedef struct ReportList {
        ListBase list;
        int printlevel; /* ReportType */
        int storelevel; /* ReportType */
        int flag, pad;
+       struct wmTimer *reporttimer;
 } ReportList;
+
+/* timer customdata to control reports display */
+#
+#
+typedef struct ReportTimerInfo {
+       float col[3];
+       float greyscale;
+       float widthfac;
+} ReportTimerInfo;
+
 /* reports need to be before wmWindowManager */
 
 
@@ -109,7 +124,7 @@ typedef struct wmWindowManager {
        
        int initialized;                /* set on file read */
        short file_saved;               /* indicator whether data was saved */
-       short pad;
+       short op_undo_depth;    /* operator stack depth to avoid nested undo pushes */
        
        ListBase operators;             /* operator registry */
        
@@ -121,17 +136,18 @@ typedef struct wmWindowManager {
        
        ListBase paintcursors;  /* extra overlay cursors to draw, like circles */
        
+       ListBase drags;                 /* active dragged items */
+       
        ListBase keyconfigs;                            /* known key configurations */
        struct wmKeyConfig *defaultconf;        /* default configuration, not saved */
-       int defaultactmap, pad2;                        /* active keymap from default for editing */
 
        ListBase timers;                                        /* active timers */
        struct wmTimer *autosavetimer;          /* timer for auto save */
 } wmWindowManager;
 
 /* wmWindowManager.initialized */
-#define WM_INIT_WINDOW         1<<0
-#define WM_INIT_KEYMAP         1<<1
+#define WM_INIT_WINDOW         (1<<0)
+#define WM_INIT_KEYMAP         (1<<1)
 
 /* the savable part, rest of data is local in ghostwinlay */
 typedef struct wmWindow {
@@ -155,9 +171,7 @@ typedef struct wmWindow {
        short cursor;           /* current mouse cursor type */
        short lastcursor;       /* for temp waitcursor */
        short addmousemove;     /* internal: tag this for extra mousemove event, makes cursors/buttons active on UI switching */
-       
-       short last_type; /* last event information, used for click */
-       short last_val;
+       short pad2[2];
 
        struct wmEvent *eventstate;     /* storage for event system */
        
@@ -183,70 +197,21 @@ typedef struct wmWindow {
 #
 typedef struct wmOperatorTypeMacro {
        struct wmOperatorTypeMacro *next, *prev;
-       
+
        /* operator id */
-       char idname[MAX_ID_NAME];
+       char idname[64];
        /* rna pointer to access properties, like keymap */
        struct IDProperty *properties;  /* operator properties, assigned to ptr->data and can be written to a file */
-       struct PointerRNA *ptr; 
+       struct PointerRNA *ptr;
 
 } wmOperatorTypeMacro;
 
-#
-#
-typedef struct wmOperatorType {
-       struct wmOperatorType *next, *prev;
-       
-       char *name;             /* text for ui, undo */
-       char *idname;           /* unique identifier */
-       char *description;      /* tooltips and python docs */
-       
-       /* this callback executes the operator without any interactive input,
-        * parameters may be provided through operator properties. cannot use
-        * any interface code or input device state.
-        * - see defines below for return values */
-       int (*exec)(struct bContext *, struct wmOperator *);
-
-       /* for modal temporary operators, initially invoke is called. then
-        * any further events are handled in modal. if the operation is
-        * cancelled due to some external reason, cancel is called
-        * - see defines below for return values */
-       int (*invoke)(struct bContext *, struct wmOperator *, struct wmEvent *);
-       int (*cancel)(struct bContext *, struct wmOperator *);
-       int (*modal)(struct bContext *, struct wmOperator *, struct wmEvent *);
-
-       /* verify if the operator can be executed in the current context, note
-        * that the operator might still fail to execute even if this return true */
-       int (*poll)(struct bContext *);
-       
-       /* optional panel for redo and repeat, autogenerated if not set */
-       void (*ui)(struct bContext *, struct wmOperator *, struct uiLayout *);
-       
-       /* rna for properties */
-       struct StructRNA *srna;
-       
-       /* struct wmOperatorTypeMacro */
-       ListBase macro;
-       
-       short flag;
-       
-       /* pointer to modal keymap, do not free! */
-       struct wmKeyMap *modalkeymap;
-       
-       /* only used for operators defined with python
-        * use to store pointers to python functions */
-       void *pyop_data;
-       int (*pyop_poll)(struct bContext *, struct wmOperatorType *ot);
-
-} wmOperatorType;
-
-
 /* partial copy of the event, for matching by eventhandler */
 typedef struct wmKeyMapItem {
        struct wmKeyMapItem *next, *prev;
        
        /* operator */
-       char idname[64];                                /* used to retrieve operator type pointer */
+       char idname[64];        /* used to retrieve operator type pointer */
        IDProperty *properties;                 /* operator properties, assigned to ptr->data and can be written to a file */
        
        /* modal */
@@ -262,7 +227,9 @@ typedef struct wmKeyMapItem {
        short flag;
 
        /* runtime */
-       short maptype, pad[2];                  /* keymap editor */
+       short maptype;                                  /* keymap editor */
+       short id;                                               /* unique identifier. Positive for kmi that override builtins, negative otherwise */
+       short pad;
        struct PointerRNA *ptr;                 /* rna pointer to access properties */
 } wmKeyMapItem;
 
@@ -281,7 +248,7 @@ typedef struct wmKeyMap {
        short regionid;         /* see above */
        
        short flag;                     /* general flags */
-       short pad;
+       short kmi_id;           /* last kmi id */
        
        /* runtime */
        int (*poll)(struct bContext *); /* verify if enabled in the current context */
@@ -289,23 +256,23 @@ typedef struct wmKeyMap {
 } wmKeyMap;
 
 /* wmKeyMap.flag */
-#define KEYMAP_MODAL           1       /* modal map, not using operatornames */
-#define KEYMAP_USER                    2       /* user created keymap */
+#define KEYMAP_MODAL                           1       /* modal map, not using operatornames */
+#define KEYMAP_USER                                    2       /* user created keymap */
+#define KEYMAP_EXPANDED                                4
+#define KEYMAP_CHILDREN_EXPANDED       8
 
 typedef struct wmKeyConfig {
        struct wmKeyConfig *next, *prev;
 
        char idname[64];                /* unique name */
        char basename[64];              /* idname of configuration this is derives from, "" if none */
-
+       
        ListBase keymaps;
        int actkeymap, flag;
 } wmKeyConfig;
 
 /* wmKeyConfig.flag */
-#define KEYCONF_TWOBUTTONMOUSE (1 << 1)
-#define KEYCONF_LMOUSESELECT   (1 << 2)
-#define KEYCONF_NONUMPAD               (1 << 3)
+#define KEYCONF_USER                   (1 << 1)
 
 /* this one is the operator itself, stored in files for macros etc */
 /* operator + operatortype should be able to redo entirely, but for different contextes */
@@ -313,20 +280,22 @@ typedef struct wmOperator {
        struct wmOperator *next, *prev;
 
        /* saved */
-       char idname[64];                        /* used to retrieve type pointer */
+       char idname[64];/* used to retrieve type pointer */
        IDProperty *properties;         /* saved, user-settable properties */
-       
+
        /* runtime */
-       wmOperatorType *type;           /* operator type definition from idname */
+       struct wmOperatorType *type;/* operator type definition from idname */
        void *customdata;                       /* custom storage, only while operator runs */
-       
+       void *py_instance;                      /* python stores the class instance here */
+
        struct PointerRNA *ptr;         /* rna pointer to access properties */
        struct ReportList *reports;     /* errors and warnings storage */
-       
+
        ListBase macro;                         /* list of operators, can be a tree */
        struct wmOperator *opm;         /* current running macro, not saved */
+       struct uiLayout *layout;        /* runtime for drawing */
        short flag, pad[3];
-       
+
 } wmOperator;
 
 /* operator type exec(), invoke() modal(), return values */
@@ -335,44 +304,12 @@ typedef struct wmOperator {
 #define OPERATOR_FINISHED              4
 /* add this flag if the event should pass through */
 #define OPERATOR_PASS_THROUGH  8
+/* in case operator got executed outside WM code... like via fileselect */
+#define OPERATOR_HANDLED               16
 
 /* wmOperator flag */
 #define OP_GRAB_POINTER                        1
 
-/* ************** wmEvent ************************ */
-/* for read-only rna access, dont save this */
-
-/* each event should have full modifier state */
-/* event comes from eventmanager and from keymap */
-typedef struct wmEvent {
-       struct wmEvent *next, *prev;
-       
-       short type;                     /* event code itself (short, is also in keymap) */
-       short val;                      /* press, release, scrollvalue */
-       short x, y;                     /* mouse pointer position, screen coord */
-       short mval[2];          /* region mouse position, name convention pre 2.5 :) */
-       short prevx, prevy;     /* previous mouse pointer position */
-       short unicode;          /* future, ghost? */
-       char ascii;                     /* from ghost */
-       char pad;
-       
-       /* modifier states */
-       short shift, ctrl, alt, oskey;  /* oskey is apple or windowskey, value denotes order of pressed */
-       short keymodifier;                              /* rawkey modifier */
-       
-       short pad1;
-       
-       /* keymap item, set by handler (weak?) */
-       const char *keymap_idname;
-       
-       /* custom data */
-       short custom;           /* custom data type, stylus, 6dof, see wm_event_types.h */
-       short customdatafree;
-       int pad2;
-       void *customdata;       /* ascii, unicode, mouse coords, angles, vectors, dragdrop info */
-       
-} wmEvent;
-
 typedef enum wmRadialControlMode {
        WM_RADIALCONTROL_SIZE,
        WM_RADIALCONTROL_STRENGTH,
@@ -380,4 +317,3 @@ typedef enum wmRadialControlMode {
 } wmRadialControlMode;
 
 #endif /* DNA_WINDOWMANAGER_TYPES_H */
-