Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoshua Leung <aligorith@gmail.com>2009-07-10 05:57:55 +0400
committerJoshua Leung <aligorith@gmail.com>2009-07-10 05:57:55 +0400
commit0051f1be8ea6e329649d4a476e6c4cb5d1d101ef (patch)
treeb96dd939058d529f88a990876e2ec002ea6a0c8f /source/blender/editors/space_file
parentd7a7081e633f458d3c68f6ccff5376c0340fe42e (diff)
parent9241559ab4c223d30a949f2e06c776642b69715c (diff)
NLA SoC: Merge from 2.5
21330 to 21469
Diffstat (limited to 'source/blender/editors/space_file')
-rw-r--r--source/blender/editors/space_file/file_intern.h6
-rw-r--r--source/blender/editors/space_file/file_ops.c117
-rw-r--r--source/blender/editors/space_file/file_panels.c7
-rw-r--r--source/blender/editors/space_file/filelist.c88
-rw-r--r--source/blender/editors/space_file/filelist.h6
-rw-r--r--source/blender/editors/space_file/filesel.c38
-rw-r--r--source/blender/editors/space_file/space_file.c96
7 files changed, 317 insertions, 41 deletions
diff --git a/source/blender/editors/space_file/file_intern.h b/source/blender/editors/space_file/file_intern.h
index 668e14c95e6..2f3fae47abb 100644
--- a/source/blender/editors/space_file/file_intern.h
+++ b/source/blender/editors/space_file/file_intern.h
@@ -65,17 +65,23 @@ void FILE_OT_loadimages(struct wmOperatorType *ot);
void FILE_OT_exec(struct wmOperatorType *ot);
void FILE_OT_cancel(struct wmOperatorType *ot);
void FILE_OT_parent(struct wmOperatorType *ot);
+void FILE_OT_previous(struct wmOperatorType *ot);
+void FILE_OT_next(struct wmOperatorType *ot);
void FILE_OT_refresh(struct wmOperatorType *ot);
void FILE_OT_bookmark_toggle(struct wmOperatorType *ot);
+void FILE_OT_filenum(struct wmOperatorType *ot);
int file_exec(bContext *C, struct wmOperator *unused);
int file_cancel_exec(bContext *C, struct wmOperator *unused);
int file_parent_exec(bContext *C, struct wmOperator *unused);
+int file_previous_exec(bContext *C, struct wmOperator *unused);
+int file_next_exec(bContext *C, struct wmOperator *unused);
int file_hilight_set(struct SpaceFile *sfile, struct ARegion *ar, int mx, int my);
/* filesel.c */
float file_string_width(const char* str);
float file_font_pointsize();
+void file_change_dir(struct SpaceFile *sfile);
/* file_panels.c */
void file_panels_register(struct ARegionType *art);
diff --git a/source/blender/editors/space_file/file_ops.c b/source/blender/editors/space_file/file_ops.c
index aaa1793efbb..c4435e85749 100644
--- a/source/blender/editors/space_file/file_ops.c
+++ b/source/blender/editors/space_file/file_ops.c
@@ -146,9 +146,7 @@ static void file_select(SpaceFile* sfile, ARegion* ar, const rcti* rect, short v
strcat(params->dir,"/");
params->file[0] = '\0';
BLI_cleanup_dir(G.sce, params->dir);
- filelist_setdir(sfile->files, params->dir);
- filelist_free(sfile->files);
- params->active_file = -1;
+ file_change_dir(sfile);
}
}
else if (file)
@@ -305,10 +303,8 @@ static int bookmark_select_invoke(bContext *C, wmOperator *op, wmEvent *event)
RNA_string_get(op->ptr, "dir", entry);
BLI_strncpy(params->dir, entry, sizeof(params->dir));
BLI_cleanup_dir(G.sce, params->dir);
- filelist_free(sfile->files);
- filelist_setdir(sfile->files, params->dir);
- params->file[0] = '\0';
- params->active_file = -1;
+ file_change_dir(sfile);
+ params->file[0] = '\0';
WM_event_add_notifier(C, NC_FILE|ND_PARAMS, NULL);
}
@@ -362,9 +358,9 @@ void FILE_OT_add_bookmark(wmOperatorType *ot)
static int bookmark_delete_invoke(bContext *C, wmOperator *op, wmEvent *event)
{
ScrArea *sa= CTX_wm_area(C);
- SpaceFile *sfile= (SpaceFile*)CTX_wm_space_data(C);
struct FSMenu* fsmenu = fsmenu_get();
int nentries = fsmenu_get_nentries(fsmenu, FS_CATEGORY_BOOKMARKS);
+
if(RNA_struct_find_property(op->ptr, "index")) {
int index = RNA_int_get(op->ptr, "index");
if ( (index >-1) && (index < nentries)) {
@@ -467,7 +463,10 @@ void FILE_OT_highlight(struct wmOperatorType *ot)
int file_cancel_exec(bContext *C, wmOperator *unused)
{
SpaceFile *sfile= (SpaceFile*)CTX_wm_space_data(C);
-
+
+ folderlist_free(sfile->folders_prev);
+ folderlist_free(sfile->folders_next);
+
WM_event_fileselect_event(C, sfile->op, EVT_FILESELECT_CANCEL);
sfile->op = NULL;
@@ -529,6 +528,9 @@ int file_exec(bContext *C, wmOperator *unused)
}
}
+ folderlist_free(sfile->folders_prev);
+ folderlist_free(sfile->folders_next);
+
fsmenu_insert_entry(fsmenu_get(), FS_CATEGORY_RECENT, sfile->params->dir,0, 1);
BLI_make_file_string(G.sce, name, BLI_gethome(), ".Bfs");
fsmenu_write_file(fsmenu_get(), name);
@@ -556,9 +558,7 @@ int file_parent_exec(bContext *C, wmOperator *unused)
if(sfile->params) {
BLI_parent_dir(sfile->params->dir);
- filelist_setdir(sfile->files, sfile->params->dir);
- filelist_free(sfile->files);
- sfile->params->active_file = -1;
+ file_change_dir(sfile);
}
WM_event_add_notifier(C, NC_FILE|ND_FILELIST, NULL);
@@ -583,17 +583,74 @@ int file_refresh_exec(bContext *C, wmOperator *unused)
{
SpaceFile *sfile= (SpaceFile*)CTX_wm_space_data(C);
+ file_change_dir(sfile);
+
+ WM_event_add_notifier(C, NC_FILE|ND_FILELIST, NULL);
+
+ return OPERATOR_FINISHED;
+
+}
+
+void FILE_OT_previous(struct wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Previous Folder";
+ ot->idname= "FILE_OT_previous";
+
+ /* api callbacks */
+ ot->exec= file_previous_exec;
+ ot->poll= ED_operator_file_active; /* <- important, handler is on window level */
+}
+
+int file_previous_exec(bContext *C, wmOperator *unused)
+{
+ SpaceFile *sfile= (SpaceFile*)CTX_wm_space_data(C);
+
if(sfile->params) {
- filelist_setdir(sfile->files, sfile->params->dir);
- filelist_free(sfile->files);
- sfile->params->active_file = -1;
+ if (!sfile->folders_next)
+ sfile->folders_next = folderlist_new();
+
+ folderlist_pushdir(sfile->folders_next, sfile->params->dir);
+ folderlist_popdir(sfile->folders_prev, sfile->params->dir);
+ folderlist_pushdir(sfile->folders_next, sfile->params->dir);
+
+ file_change_dir(sfile);
}
WM_event_add_notifier(C, NC_FILE|ND_FILELIST, NULL);
return OPERATOR_FINISHED;
+}
+void FILE_OT_next(struct wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Next Folder";
+ ot->idname= "FILE_OT_next";
+
+ /* api callbacks */
+ ot->exec= file_next_exec;
+ ot->poll= ED_operator_file_active; /* <- important, handler is on window level */
}
+int file_next_exec(bContext *C, wmOperator *unused)
+{
+ SpaceFile *sfile= (SpaceFile*)CTX_wm_space_data(C);
+ if(sfile->params) {
+ if (!sfile->folders_next)
+ sfile->folders_next = folderlist_new();
+
+ folderlist_pushdir(sfile->folders_prev, sfile->params->dir);
+ folderlist_popdir(sfile->folders_next, sfile->params->dir);
+
+ // update folder_prev so we can check for it in folderlist_clear_next()
+ folderlist_pushdir(sfile->folders_prev, sfile->params->dir);
+
+ file_change_dir(sfile);
+ }
+ WM_event_add_notifier(C, NC_FILE|ND_FILELIST, NULL);
+
+ return OPERATOR_FINISHED;
+}
void FILE_OT_refresh(struct wmOperatorType *ot)
{
@@ -685,3 +742,33 @@ void FILE_OT_bookmark_toggle(struct wmOperatorType *ot)
ot->exec= file_bookmark_toggle_exec;
ot->poll= ED_operator_file_active; /* <- important, handler is on window level */
}
+
+
+int file_filenum_exec(bContext *C, wmOperator *op)
+{
+ SpaceFile *sfile= (SpaceFile*)CTX_wm_space_data(C);
+
+ int inc = RNA_int_get(op->ptr, "increment");
+ if(sfile->params && (inc != 0)) {
+ BLI_newname(sfile->params->file, inc);
+ WM_event_add_notifier(C, NC_WINDOW, NULL);
+ }
+
+ return OPERATOR_FINISHED;
+
+}
+
+void FILE_OT_filenum(struct wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Increment Number in Filename";
+ ot->idname= "FILE_OT_filenum";
+
+ /* api callbacks */
+ ot->exec= file_filenum_exec;
+ ot->poll= ED_operator_file_active; /* <- important, handler is on window level */
+
+ /* props */
+ RNA_def_int(ot->srna, "increment", 1, 0, 100, "Increment", "", 0,100);
+}
+
diff --git a/source/blender/editors/space_file/file_panels.c b/source/blender/editors/space_file/file_panels.c
index 29c759d43c0..96366b9f82b 100644
--- a/source/blender/editors/space_file/file_panels.c
+++ b/source/blender/editors/space_file/file_panels.c
@@ -57,11 +57,9 @@ static void do_file_panel_events(bContext *C, void *arg, int event)
static void file_panel_category(const bContext *C, Panel *pa, FSMenuCategory category, int icon, int allow_delete)
{
uiBlock *block;
- uiStyle *style= U.uistyles.first;
- int i;
- int fontsize = file_font_pointsize();
struct FSMenu* fsmenu = fsmenu_get();
int nentries = fsmenu_get_nentries(fsmenu, category);
+ int i;
uiLayoutSetAlignment(pa->layout, UI_LAYOUT_ALIGN_LEFT);
block= uiLayoutFreeBlock(pa->layout);
@@ -162,4 +160,5 @@ void file_panels_register(ARegionType *art)
strcpy(pt->label, "Operator");
pt->draw= file_panel_operator;
BLI_addtail(&art->paneltypes, pt);
-} \ No newline at end of file
+}
+
diff --git a/source/blender/editors/space_file/filelist.c b/source/blender/editors/space_file/filelist.c
index 573aed72728..6e442c654ca 100644
--- a/source/blender/editors/space_file/filelist.c
+++ b/source/blender/editors/space_file/filelist.c
@@ -123,6 +123,12 @@ typedef struct FileList
ListBase threads;
} FileList;
+typedef struct FolderList
+{
+ struct FolderList *next, *prev;
+ char *foldername;
+} FolderList;
+
#define SPECIAL_IMG_SIZE 48
#define SPECIAL_IMG_ROWS 4
#define SPECIAL_IMG_COLS 4
@@ -354,6 +360,86 @@ void filelist_free_icons()
}
}
+//-----------------FOLDERLIST (previous/next) --------------//
+struct ListBase* folderlist_new()
+{
+ ListBase* p = MEM_callocN( sizeof(ListBase), "folderlist" );
+ return p;
+}
+
+void folderlist_popdir(struct ListBase* folderlist, char *dir)
+{
+ const char *prev_dir;
+ struct FolderList *folder;
+ folder = folderlist->last;
+
+ if(folder){
+ // remove the current directory
+ MEM_freeN(folder->foldername);
+ BLI_freelinkN(folderlist, folder);
+
+ folder = folderlist->last;
+ if(folder){
+ prev_dir = folder->foldername;
+ BLI_strncpy(dir, prev_dir, FILE_MAXDIR);
+ }
+ }
+ // delete the folder next or use setdir directly before PREVIOUS OP
+}
+
+void folderlist_pushdir(ListBase* folderlist, const char *dir)
+{
+ struct FolderList *folder, *previous_folder;
+ previous_folder = folderlist->last;
+
+ // check if already exists
+ if(previous_folder){
+ if(! strcmp(previous_folder->foldername, dir)){
+ return;
+ }
+ }
+
+ // create next folder element
+ folder = (FolderList*)MEM_mallocN(sizeof(FolderList),"FolderList");
+ folder->foldername = (char*)MEM_mallocN(sizeof(char)*(strlen(dir)+1), "foldername");
+ folder->foldername[0] = '\0';
+
+ BLI_strncpy(folder->foldername, dir, FILE_MAXDIR);
+
+ // add it to the end of the list
+ BLI_addtail(folderlist, folder);
+}
+
+int folderlist_clear_next(struct SpaceFile *sfile)
+{
+ struct FolderList *folder;
+
+ // if there is no folder_next there is nothing we can clear
+ if (!sfile->folders_next)
+ return 0;
+
+ // if previous_folder, next_folder or refresh_folder operators are executed it doesn't clear folder_next
+ folder = sfile->folders_prev->last;
+ if ((!folder) ||(!strcmp(folder->foldername, sfile->params->dir)))
+ return 0;
+
+ // eventually clear flist->folders_next
+ return 1;
+}
+
+void folderlist_free(ListBase* folderlist)
+{
+ FolderList *folder;
+ if (folderlist){
+ for(folder= folderlist->last; folder; folder= folderlist->last) {
+ MEM_freeN(folder->foldername);
+ BLI_freelinkN(folderlist, folder);
+ }
+ }
+ folderlist= NULL;
+}
+
+//------------------FILELIST------------------------//
struct FileList* filelist_new()
{
FileList* p = MEM_callocN( sizeof(FileList), "filelist" );
@@ -375,7 +461,7 @@ void filelist_free(struct FileList* filelist)
int i;
if (!filelist) {
- printf("Attemtping to delete empty filelist.\n");
+ printf("Attempting to delete empty filelist.\n");
return;
}
diff --git a/source/blender/editors/space_file/filelist.h b/source/blender/editors/space_file/filelist.h
index e929e028849..dd3c2c766c1 100644
--- a/source/blender/editors/space_file/filelist.h
+++ b/source/blender/editors/space_file/filelist.h
@@ -38,6 +38,7 @@ extern "C" {
#endif
struct FileList;
+struct FolderList;
struct direntry;
struct BlendHandle;
struct Scene;
@@ -70,6 +71,11 @@ int filelist_empty(struct FileList* filelist);
void filelist_parent(struct FileList* filelist);
void filelist_setfiletypes(struct FileList* filelist, short has_quicktime);
+struct ListBase * folderlist_new();
+void folderlist_free(struct ListBase* folderlist);
+void folderlist_popdir(struct ListBase* folderlist, char *dir);
+void folderlist_pushdir(struct ListBase* folderlist, const char *dir);
+int folderlist_clear_next(struct SpaceFile* sfile);
#ifdef __cplusplus
}
diff --git a/source/blender/editors/space_file/filesel.c b/source/blender/editors/space_file/filesel.c
index e1d81138e5a..476145d11a2 100644
--- a/source/blender/editors/space_file/filesel.c
+++ b/source/blender/editors/space_file/filesel.c
@@ -84,12 +84,12 @@
FileSelectParams* ED_fileselect_get_params(struct SpaceFile *sfile)
{
if (!sfile->params) {
- ED_fileselect_set_params(sfile, "", "/", 0, FILE_SHORTDISPLAY, 0, FILE_SORT_ALPHA);
+ ED_fileselect_set_params(sfile, "", NULL, "/", 0, FILE_SHORTDISPLAY, 0, FILE_SORT_ALPHA);
}
return sfile->params;
}
-short ED_fileselect_set_params(SpaceFile *sfile, const char *title, const char *path,
+short ED_fileselect_set_params(SpaceFile *sfile, const char *title, const char *last_dir, const char *path,
short flag, short display, short filter, short sort)
{
char name[FILE_MAX], dir[FILE_MAX], file[FILE_MAX];
@@ -107,14 +107,19 @@ short ED_fileselect_set_params(SpaceFile *sfile, const char *title, const char *
params->sort = sort;
BLI_strncpy(params->title, title, sizeof(params->title));
-
- BLI_strncpy(name, path, sizeof(name));
- BLI_convertstringcode(name, G.sce);
- BLI_split_dirfile(name, dir, file);
- BLI_strncpy(params->file, file, sizeof(params->file));
- BLI_strncpy(params->dir, dir, sizeof(params->dir));
- BLI_make_file_string(G.sce, params->dir, dir, ""); /* XXX needed ? - also solve G.sce */
+ if(last_dir){
+ BLI_strncpy(params->dir, last_dir, sizeof(params->dir));
+ }
+ else {
+ BLI_strncpy(name, path, sizeof(name));
+ BLI_convertstringcode(name, G.sce);
+
+ BLI_split_dirfile(name, dir, file);
+ BLI_strncpy(params->file, file, sizeof(params->file));
+ BLI_strncpy(params->dir, dir, sizeof(params->dir));
+ BLI_make_file_string(G.sce, params->dir, dir, ""); /* XXX needed ? - also solve G.sce */
+ }
return 1;
}
@@ -282,3 +287,18 @@ FileLayout* ED_fileselect_get_layout(struct SpaceFile *sfile, struct ARegion *ar
}
return sfile->layout;
}
+
+void file_change_dir(struct SpaceFile *sfile)
+{
+ if (sfile->params) {
+ filelist_setdir(sfile->files, sfile->params->dir);
+
+ if(folderlist_clear_next(sfile))
+ folderlist_free(sfile->folders_next);
+
+ folderlist_pushdir(sfile->folders_prev, sfile->params->dir);
+
+ filelist_free(sfile->files);
+ sfile->params->active_file = -1;
+ }
+}
diff --git a/source/blender/editors/space_file/space_file.c b/source/blender/editors/space_file/space_file.c
index 156c7d6f9be..3167d2809c9 100644
--- a/source/blender/editors/space_file/space_file.c
+++ b/source/blender/editors/space_file/space_file.c
@@ -34,6 +34,8 @@
#include "DNA_scene_types.h"
#include "DNA_screen_types.h"
+#include "RNA_access.h"
+
#include "MEM_guardedalloc.h"
#include "BIF_gl.h"
@@ -122,6 +124,18 @@ static void file_free(SpaceLink *sl)
sfile->files= NULL;
}
+ if(sfile->folders_prev) {
+ folderlist_free(sfile->folders_prev);
+ MEM_freeN(sfile->folders_prev);
+ sfile->folders_prev= NULL;
+ }
+
+ if(sfile->folders_next) {
+ folderlist_free(sfile->folders_next);
+ MEM_freeN(sfile->folders_next);
+ sfile->folders_next= NULL;
+ }
+
if (sfile->params) {
if(sfile->params->pupmenu)
MEM_freeN(sfile->params->pupmenu);
@@ -151,11 +165,15 @@ static SpaceLink *file_duplicate(SpaceLink *sl)
sfilen->op = NULL; /* file window doesn't own operators */
sfilen->files = filelist_new();
-
+ if(sfileo->folders_prev)
+ sfilen->folders_prev = MEM_dupallocN(sfileo->folders_prev);
+
+ if(sfileo->folders_next)
+ sfilen->folders_next = MEM_dupallocN(sfileo->folders_next);
+
if(sfileo->params) {
sfilen->params= MEM_dupallocN(sfileo->params);
-
- filelist_setdir(sfilen->files, sfilen->params->dir);
+ file_change_dir(sfilen);
}
if (sfileo->layout) {
sfilen->layout= MEM_dupallocN(sfileo->layout);
@@ -168,9 +186,11 @@ static void file_refresh(const bContext *C, ScrArea *sa)
SpaceFile *sfile= (SpaceFile*)CTX_wm_space_data(C);
FileSelectParams *params = ED_fileselect_get_params(sfile);
+ if (!sfile->folders_prev)
+ sfile->folders_prev = folderlist_new();
if (!sfile->files) {
sfile->files = filelist_new();
- filelist_setdir(sfile->files, params->dir);
+ file_change_dir(sfile);
params->active_file = -1; // added this so it opens nicer (ton)
}
filelist_hidedot(sfile->files, params->flag & FILE_HIDE_DOT);
@@ -211,8 +231,11 @@ static void file_main_area_init(wmWindowManager *wm, ARegion *ar)
UI_view2d_region_reinit(&ar->v2d, V2D_COMMONVIEW_LIST, ar->winx, ar->winy);
- /* own keymap */
- keymap= WM_keymap_listbase(wm, "File", SPACE_FILE, 0); /* XXX weak? */
+ /* own keymaps */
+ keymap= WM_keymap_listbase(wm, "File", SPACE_FILE, 0);
+ WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct);
+
+ keymap= WM_keymap_listbase(wm, "FileMain", SPACE_FILE, 0);
WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct);
@@ -290,35 +313,76 @@ void file_operatortypes(void)
WM_operatortype_append(FILE_OT_exec);
WM_operatortype_append(FILE_OT_cancel);
WM_operatortype_append(FILE_OT_parent);
+ WM_operatortype_append(FILE_OT_previous);
+ WM_operatortype_append(FILE_OT_next);
WM_operatortype_append(FILE_OT_refresh);
WM_operatortype_append(FILE_OT_bookmark_toggle);
WM_operatortype_append(FILE_OT_add_bookmark);
WM_operatortype_append(FILE_OT_delete_bookmark);
WM_operatortype_append(FILE_OT_hidedot);
+ WM_operatortype_append(FILE_OT_filenum);
}
/* NOTE: do not add .blend file reading on this level */
void file_keymap(struct wmWindowManager *wm)
{
+ wmKeymapItem *kmi;
+ /* keys for all areas */
ListBase *keymap= WM_keymap_listbase(wm, "File", SPACE_FILE, 0);
WM_keymap_add_item(keymap, "FILE_OT_bookmark_toggle", NKEY, KM_PRESS, 0, 0);
+ WM_keymap_add_item(keymap, "FILE_OT_parent", PKEY, KM_PRESS, 0, 0);
+ WM_keymap_add_item(keymap, "FILE_OT_add_bookmark", BKEY, KM_PRESS, KM_CTRL, 0);
+ WM_keymap_add_item(keymap, "FILE_OT_hidedot", HKEY, KM_PRESS, 0, 0);
+ WM_keymap_add_item(keymap, "FILE_OT_previous", BACKSPACEKEY, KM_PRESS, 0, 0);
+ WM_keymap_add_item(keymap, "FILE_OT_next", BACKSPACEKEY, KM_PRESS, KM_SHIFT, 0);
+
+ /* keys for main area */
+ keymap= WM_keymap_listbase(wm, "FileMain", SPACE_FILE, 0);
WM_keymap_add_item(keymap, "FILE_OT_select", LEFTMOUSE, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "FILE_OT_select_all_toggle", AKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "FILE_OT_select_border", BKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "FILE_OT_highlight", MOUSEMOVE, KM_ANY, 0, 0);
- WM_keymap_add_item(keymap, "FILE_OT_parent", PKEY, KM_PRESS, 0, 0);
- WM_keymap_add_item(keymap, "FILE_OT_add_bookmark", BKEY, KM_PRESS, KM_CTRL, 0);
- WM_keymap_add_item(keymap, "FILE_OT_hidedot", HKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "FILE_OT_loadimages", TIMER1, KM_ANY, KM_ANY, 0);
+ kmi = WM_keymap_add_item(keymap, "FILE_OT_filenum", PADPLUSKEY, KM_PRESS, 0, 0);
+ RNA_int_set(kmi->ptr, "increment", 1);
+ kmi = WM_keymap_add_item(keymap, "FILE_OT_filenum", PADPLUSKEY, KM_PRESS, KM_SHIFT, 0);
+ RNA_int_set(kmi->ptr, "increment", 10);
+ kmi = WM_keymap_add_item(keymap, "FILE_OT_filenum", PADPLUSKEY, KM_PRESS, KM_CTRL, 0);
+ RNA_int_set(kmi->ptr, "increment", 100);
+ kmi = WM_keymap_add_item(keymap, "FILE_OT_filenum", PADMINUS, KM_PRESS, 0,0);
+ RNA_int_set(kmi->ptr, "increment", -1);
+ kmi = WM_keymap_add_item(keymap, "FILE_OT_filenum", PADMINUS, KM_PRESS, KM_SHIFT, 0);
+ RNA_int_set(kmi->ptr, "increment", -10);
+ kmi = WM_keymap_add_item(keymap, "FILE_OT_filenum", PADMINUS, KM_PRESS, KM_CTRL, 0);
+ RNA_int_set(kmi->ptr, "increment",-100);
- keymap= WM_keymap_listbase(wm, "FileBookmark", SPACE_FILE, 0);
- WM_keymap_add_item(keymap, "FILE_OT_select_bookmark", LEFTMOUSE, KM_PRESS, 0, 0);
+ /* keys for button area (top) */
+ keymap= WM_keymap_listbase(wm, "FileButtons", SPACE_FILE, 0);
+ WM_keymap_add_item(keymap, "FILE_OT_filenum", PADPLUSKEY, KM_PRESS, 0, 0);
+ kmi = WM_keymap_add_item(keymap, "FILE_OT_filenum", PADPLUSKEY, KM_PRESS, 0, 0);
+ RNA_int_set(kmi->ptr, "increment", 1);
+ kmi = WM_keymap_add_item(keymap, "FILE_OT_filenum", PADPLUSKEY, KM_PRESS, KM_SHIFT, 0);
+ RNA_int_set(kmi->ptr, "increment", 10);
+ kmi = WM_keymap_add_item(keymap, "FILE_OT_filenum", PADPLUSKEY, KM_PRESS, KM_CTRL, 0);
+ RNA_int_set(kmi->ptr, "increment", 100);
+ kmi = WM_keymap_add_item(keymap, "FILE_OT_filenum", PADMINUS, KM_PRESS, 0, 0);
+ RNA_int_set(kmi->ptr, "increment", -1);
+ kmi = WM_keymap_add_item(keymap, "FILE_OT_filenum", PADMINUS, KM_PRESS, KM_SHIFT,0);
+ RNA_int_set(kmi->ptr, "increment", -10);
+ kmi = WM_keymap_add_item(keymap, "FILE_OT_filenum", PADMINUS, KM_PRESS, KM_CTRL,0);
+ RNA_int_set(kmi->ptr, "increment",-100);
}
static void file_channel_area_init(wmWindowManager *wm, ARegion *ar)
{
+ ListBase *keymap;
+
ED_region_panels_init(wm, ar);
+
+ /* own keymaps */
+ keymap= WM_keymap_listbase(wm, "File", SPACE_FILE, 0);
+ WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct);
}
static void file_channel_area_draw(const bContext *C, ARegion *ar)
@@ -348,7 +412,16 @@ static void file_header_area_draw(const bContext *C, ARegion *ar)
/* add handlers, stuff you only do once or on area/region changes */
static void file_ui_area_init(wmWindowManager *wm, ARegion *ar)
{
+ ListBase *keymap;
+
UI_view2d_region_reinit(&ar->v2d, V2D_COMMONVIEW_HEADER, ar->winx, ar->winy);
+
+ /* own keymap */
+ keymap= WM_keymap_listbase(wm, "File", SPACE_FILE, 0); /* XXX weak? */
+ WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct);
+
+ keymap= WM_keymap_listbase(wm, "FileButtons", SPACE_FILE, 0); /* XXX weak? */
+ WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct);
}
static void file_ui_area_draw(const bContext *C, ARegion *ar)
@@ -428,7 +501,6 @@ void ED_spacetype_file(void)
BLI_addhead(&st->regiontypes, art);
file_panels_register(art);
-
BKE_spacetype_register(st);
}