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
path: root/source
diff options
context:
space:
mode:
authorRob Haarsma <phaseIV@zonnet.nl>2003-04-28 15:17:21 +0400
committerRob Haarsma <phaseIV@zonnet.nl>2003-04-28 15:17:21 +0400
commit52f6a630ce7e1723e9aceb3fd395349e4098357b (patch)
treea64361cf9b26d2284f62934dc1130882867388e6 /source
parent71ffa4775252cb3dfe93011e24fc31ab7360bbb4 (diff)
Added rename/delete popups to the file and imageselect windows.
Redesigned the userpreference window layout. (not finished yet) Enhanced the texteditor with; a rightmousemenu, clipboard text support (for windows !) and the alt-m keystroke generates a 3d text object. (up to 1000 characters) (1, 2, 3, 4 and 7 from http://www.tncci.com/blender/feats.html)
Diffstat (limited to 'source')
-rw-r--r--source/blender/include/BIF_editfont.h3
-rw-r--r--source/blender/include/BIF_editoops.h1
-rw-r--r--source/blender/include/BIF_imasel.h2
-rw-r--r--source/blender/include/BSE_filesel.h1
-rw-r--r--source/blender/include/blendef.h24
-rw-r--r--source/blender/makesdna/DNA_userdef_types.h1
-rw-r--r--source/blender/render/intern/source/initrender.c2
-rw-r--r--source/blender/src/drawtext.c205
-rw-r--r--source/blender/src/drawview.c16
-rw-r--r--source/blender/src/editfont.c152
-rw-r--r--source/blender/src/editimasel.c63
-rw-r--r--source/blender/src/editoops.c48
-rw-r--r--source/blender/src/filesel.c67
-rw-r--r--source/blender/src/headerbuttons.c196
-rw-r--r--source/blender/src/space.c459
-rw-r--r--source/blender/src/toolbox.c17
16 files changed, 1125 insertions, 132 deletions
diff --git a/source/blender/include/BIF_editfont.h b/source/blender/include/BIF_editfont.h
index 0c05d5032ca..56cffef880c 100644
--- a/source/blender/include/BIF_editfont.h
+++ b/source/blender/include/BIF_editfont.h
@@ -38,6 +38,9 @@ void make_editText(void);
void load_editText(void);
void remake_editText(void);
void free_editText(void);
+void paste_editText(void);
+void txt_export_to_object(struct Text *text);
+
/**
* @attention The argument is discarded. It is there for
* compatibility.
diff --git a/source/blender/include/BIF_editoops.h b/source/blender/include/BIF_editoops.h
index 7c5905e1fa8..9ed9d38c84c 100644
--- a/source/blender/include/BIF_editoops.h
+++ b/source/blender/include/BIF_editoops.h
@@ -42,5 +42,6 @@ void set_select_flag_oops(void);
void swap_select_all_oops(void);
void transform_oops(int mode);
+void clever_numbuts_oops(void);
#endif
diff --git a/source/blender/include/BIF_imasel.h b/source/blender/include/BIF_imasel.h
index 01958f66964..079f8e372f9 100644
--- a/source/blender/include/BIF_imasel.h
+++ b/source/blender/include/BIF_imasel.h
@@ -55,5 +55,7 @@ void init_imaselspace(struct ScrArea *sa);
void check_imasel_copy(struct SpaceImaSel *simasel);
void free_imasel(struct SpaceImaSel *simasel);
+void clever_numbuts_imasel(void);
+
#endif
diff --git a/source/blender/include/BSE_filesel.h b/source/blender/include/BSE_filesel.h
index 960708d4010..084ca63778f 100644
--- a/source/blender/include/BSE_filesel.h
+++ b/source/blender/include/BSE_filesel.h
@@ -57,5 +57,6 @@ void free_filesel_spec(char *dir);
void winqreadfilespace(struct ScrArea *sa, void *spacedata, struct BWinEvent *evt);
void main_to_filelist(struct SpaceFile *sfile);
+void clever_numbuts_filesel(void);
#endif
diff --git a/source/blender/include/blendef.h b/source/blender/include/blendef.h
index 547d6edb1cc..4fdc799eaca 100644
--- a/source/blender/include/blendef.h
+++ b/source/blender/include/blendef.h
@@ -185,6 +185,10 @@
/* EVENT < 50: alone's en locals */
#define B_KEEPDATA 60
+#define B_CONSOLETOG 61
+#define B_DRAWINFO 62
+#define B_REDRCURW3D 63
+
#define B_SHOWSPLASH 70
#define B_RESETAUTOSAVE 71
@@ -270,6 +274,26 @@
#define B_FILEMENU 306
#define B_PACKFILE 307
+#define B_CONSOLEOUT 308
+#define B_CONSOLENUMLINES 309
+#define B_USERPREF 310
+#define B_LOADUIFONT 311
+#define B_SETLANGUAGE 312
+#define B_SETFONTSIZE 313
+#define B_SETENCODING 314
+#define B_SETTRANSBUTS 315
+
+/* Definitions for the fileselect buttons in user prefs */
+#define B_FONTDIRFILESEL 320
+#define B_TEXTUDIRFILESEL 321
+#define B_PLUGTEXDIRFILESEL 322
+#define B_PLUGSEQDIRFILESEL 323
+#define B_RENDERDIRFILESEL 324
+#define B_PYTHONDIRFILESEL 325
+#define B_SOUNDDIRFILESEL 326
+#define B_TEMPDIRFILESEL 327
+/* END Definitions for the fileselect buttons in user prefs */
+
/* IMAGE: 350 */
#define B_SIMAGEHOME 351
#define B_SIMABROWSE 352
diff --git a/source/blender/makesdna/DNA_userdef_types.h b/source/blender/makesdna/DNA_userdef_types.h
index 04d65d2b39b..b74cebbc9fb 100644
--- a/source/blender/makesdna/DNA_userdef_types.h
+++ b/source/blender/makesdna/DNA_userdef_types.h
@@ -85,6 +85,7 @@ extern UserDef U; /* from usiblender.c !!!! */
#define KEYINSERTOBJ 2
#define WHEELZOOMDIR 4
#define FILTERFILEEXTS 8
+#define DRAWVIEWINFO 16
/* transopts */
diff --git a/source/blender/render/intern/source/initrender.c b/source/blender/render/intern/source/initrender.c
index 1d7d7e89d60..50ff4ba802d 100644
--- a/source/blender/render/intern/source/initrender.c
+++ b/source/blender/render/intern/source/initrender.c
@@ -81,7 +81,9 @@
#include "BSE_drawview.h"
#include "BSE_sequence.h"
+#ifdef WITH_QUICKTIME
#include "quicktime_export.h"
+#endif
/* this module */
#include "render.h"
diff --git a/source/blender/src/drawtext.c b/source/blender/src/drawtext.c
index c41b9d8abaa..6cdff0f88c3 100644
--- a/source/blender/src/drawtext.c
+++ b/source/blender/src/drawtext.c
@@ -68,6 +68,7 @@
#include "BIF_keyval.h"
#include "BIF_interface.h"
#include "BIF_drawtext.h"
+#include "BIF_editfont.h"
#include "BIF_spacetypes.h"
#include "BIF_usiblender.h"
#include "BIF_screen.h"
@@ -742,6 +743,135 @@ static int jumptoline_interactive(SpaceText *st) {
}
}
+
+int bufferlength;
+static char *copybuffer = NULL;
+
+void txt_copy_selectbuffer (Text *text)
+{
+ int length=0;
+ TextLine *tmp, *linef, *linel;
+ int charf, charl;
+
+ if (!text) return;
+ if (!text->curl) return;
+ if (!text->sell) return;
+
+ if (!txt_has_sel(text)) return;
+
+ if (copybuffer) {
+ MEM_freeN(copybuffer);
+ copybuffer= NULL;
+ }
+
+ if (text->curl==text->sell) {
+ linef= linel= text->curl;
+
+ if (text->curc < text->selc) {
+ charf= text->curc;
+ charl= text->selc;
+ } else{
+ charf= text->selc;
+ charl= text->curc;
+ }
+ } else if (txt_get_span(text->curl, text->sell)<0) {
+ linef= text->sell;
+ linel= text->curl;
+
+ charf= text->selc;
+ charl= text->curc;
+ } else {
+ linef= text->curl;
+ linel= text->sell;
+
+ charf= text->curc;
+ charl= text->selc;
+ }
+
+ if (linef == linel) {
+ length= charl-charf;
+
+ copybuffer= MEM_mallocN(length+1, "cut buffera");
+
+ BLI_strncpy(copybuffer, linef->line + charf, length+1);
+ } else {
+ length+= linef->len - charf;
+ length+= charl;
+ length++; /* For the '\n' */
+
+ tmp= linef->next;
+ while (tmp && tmp!= linel) {
+ length+= tmp->len+1;
+ tmp= tmp->next;
+ }
+
+ copybuffer= MEM_mallocN(length+1, "cut bufferb");
+
+ strncpy(copybuffer, linef->line+ charf, linef->len-charf);
+ length= linef->len-charf;
+
+ copybuffer[length++]='\n';
+
+ tmp= linef->next;
+ while (tmp && tmp!=linel) {
+ strncpy(copybuffer+length, tmp->line, tmp->len);
+ length+= tmp->len;
+
+ copybuffer[length++]='\n';
+
+ tmp= tmp->next;
+ }
+ strncpy(copybuffer+length, linel->line, charl);
+ length+= charl;
+
+ copybuffer[length]=0;
+ }
+
+ bufferlength = length;
+}
+
+
+void txt_paste_clipboard(Text *text) {
+#ifdef _WIN32
+ char * buffer = NULL;
+
+ if ( OpenClipboard(NULL) ) {
+ HANDLE hData = GetClipboardData( CF_TEXT );
+ buffer = (char*)GlobalLock( hData );
+ txt_insert_buf(text, buffer);
+ GlobalUnlock( hData );
+ CloseClipboard();
+ }
+#endif
+}
+
+void txt_copy_clipboard(Text *text) {
+#ifdef _WIN32
+ txt_copy_selectbuffer(text);
+
+ if (OpenClipboard(NULL)) {
+ HLOCAL clipbuffer;
+ char* buffer;
+
+ EmptyClipboard();
+ clipbuffer = LocalAlloc(LMEM_FIXED,((bufferlength+1)));
+ buffer = (char *) LocalLock(clipbuffer);
+
+ strncpy(buffer, copybuffer, bufferlength);
+ buffer[bufferlength] = '\0';
+ LocalUnlock(clipbuffer);
+ SetClipboardData(CF_TEXT,clipbuffer);
+ CloseClipboard();
+ }
+
+ if (copybuffer) {
+ MEM_freeN(copybuffer);
+ copybuffer= NULL;
+ }
+#endif
+}
+
+
void winqreadtextspace(ScrArea *sa, void *spacedata, BWinEvent *evt)
{
unsigned short event= evt->event;
@@ -760,8 +890,7 @@ void winqreadtextspace(ScrArea *sa, void *spacedata, BWinEvent *evt)
text= st->text;
if (!text) {
- if (val && !ELEM(G.qual, 0, LR_SHIFTKEY)) {
- if (event==FKEY && (G.qual & LR_ALTKEY) && (G.qual & LR_SHIFTKEY)) {
+ if (event==RIGHTMOUSE) {
switch (pupmenu("File %t|New %x0|Open... %x1")) {
case 0:
st->text= add_empty_text();
@@ -774,7 +903,22 @@ void winqreadtextspace(ScrArea *sa, void *spacedata, BWinEvent *evt)
activate_fileselect(FILE_SPECIAL, "LOAD TEXT FILE", G.sce, add_text_fs);
break;
}
- } else if (event==QKEY) {
+ }
+ if (val && !ELEM(G.qual, 0, LR_SHIFTKEY)) {
+ if (event==FKEY && (G.qual & LR_ALTKEY) && (G.qual & LR_SHIFTKEY)) {
+ switch (pupmenu("File %t|New %x0|Open... %x1")) {
+ case 0:
+ st->text= add_empty_text();
+ st->top= 0;
+
+ allqueue(REDRAWTEXT, 0);
+ allqueue(REDRAWHEADERS, 0);
+ break;
+ case 1:
+ activate_fileselect(FILE_SPECIAL, "LOAD TEXT FILE", G.sce, add_text_fs);
+ break;
+ }
+ } else if (event==QKEY) {
if(okee("QUIT BLENDER")) exit_usiblender();
}
}
@@ -799,6 +943,35 @@ void winqreadtextspace(ScrArea *sa, void *spacedata, BWinEvent *evt)
if (val) {
do_textscroll(st, 1);
}
+ } else if (event==RIGHTMOUSE) {
+ if (val) {
+ p= pupmenu("File %t|New %x0|Open... %x1|Save %x2|Save As...%x3");
+
+ switch(p) {
+ case 0:
+ st->text= add_empty_text();
+ st->top= 0;
+
+ allqueue(REDRAWTEXT, 0);
+ allqueue(REDRAWHEADERS, 0);
+ break;
+
+ case 1:
+ activate_fileselect(FILE_SPECIAL, "LOAD TEXT FILE", G.sce, add_text_fs);
+ break;
+
+ case 3:
+ text->flags |= TXT_ISMEM;
+
+ case 2:
+ txt_write_file(text);
+ do_draw= 1;
+ break;
+
+ default:
+ break;
+ }
+ }
} else if (ascii) {
if (txt_add_char(text, ascii)) {
pop_space_text(st);
@@ -962,11 +1135,11 @@ void winqreadtextspace(ScrArea *sa, void *spacedata, BWinEvent *evt)
switch(event) {
case AKEY:
- if (G.qual & LR_CTRLKEY) {
+ if (G.qual & LR_ALTKEY) {
txt_move_bol(text, G.qual & LR_SHIFTKEY);
do_draw= 1;
pop_space_text(st);
- } else if (G.qual & LR_ALTKEY) {
+ } else if (G.qual & LR_CTRLKEY) {
txt_sel_all(text);
do_draw= 1;
}
@@ -974,7 +1147,11 @@ void winqreadtextspace(ScrArea *sa, void *spacedata, BWinEvent *evt)
case CKEY:
if (G.qual & LR_ALTKEY || G.qual & LR_CTRLKEY) {
- txt_copy_sel(text);
+ if(G.qual & LR_SHIFTKEY)
+ txt_copy_clipboard(text);
+ else
+ txt_copy_sel(text);
+
do_draw= 1;
}
break;
@@ -1007,6 +1184,13 @@ void winqreadtextspace(ScrArea *sa, void *spacedata, BWinEvent *evt)
}
break;
+ case MKEY:
+ if (G.qual & LR_ALTKEY) {
+ txt_export_to_object(text);
+ do_draw= 1;
+ }
+ break;
+
case PKEY:
if (G.qual & LR_ALTKEY) {
if (!BPY_txt_do_python(st)) {
@@ -1058,7 +1242,8 @@ void winqreadtextspace(ScrArea *sa, void *spacedata, BWinEvent *evt)
case UKEY:
if (G.qual & LR_ALTKEY) {
- if (G.qual & LR_SHIFTKEY) txt_print_undo(text);
+ if (G.qual & LR_SHIFTKEY) txt_do_redo(text);
+ //txt_print_undo(text); //debug buffer in console
else {
txt_do_undo(text);
do_draw= 1;
@@ -1068,7 +1253,11 @@ void winqreadtextspace(ScrArea *sa, void *spacedata, BWinEvent *evt)
case VKEY:
if (G.qual & LR_ALTKEY || G.qual & LR_CTRLKEY) {
- txt_paste(text);
+ if(G.qual & LR_SHIFTKEY)
+ txt_paste_clipboard(text);
+ else
+ txt_paste(text);
+
do_draw= 1;
pop_space_text(st);
}
diff --git a/source/blender/src/drawview.c b/source/blender/src/drawview.c
index 79ce9164300..5595f88a3ef 100644
--- a/source/blender/src/drawview.c
+++ b/source/blender/src/drawview.c
@@ -765,6 +765,19 @@ void drawname(Object *ob)
BMF_DrawString(G.font, ob->id.name+2);
}
+
+static void draw_selected_name(char *name)
+{
+ char info[128];
+
+ sprintf(info, "(%d) %s", CFRA, name);
+
+ cpack(0xFFFFFF);
+ glRasterPos2i(30, 10);
+ BMF_DrawString(G.fonts, info);
+}
+
+
static void draw_view_icon(void)
{
BIFIconID icon;
@@ -975,6 +988,9 @@ void drawview3dspace(ScrArea *sa, void *spacedata)
if(G.vd->persp>1) drawviewborder();
drawcursor();
draw_view_icon();
+
+ ob= OBACT;
+ if(ob!=0 && (U.uiflag & DRAWVIEWINFO)) draw_selected_name(ob->id.name+2);
persp(1);
diff --git a/source/blender/src/editfont.c b/source/blender/src/editfont.c
index 7f4cc730f9c..8e98a0ed8df 100644
--- a/source/blender/src/editfont.c
+++ b/source/blender/src/editfont.c
@@ -52,12 +52,14 @@
#include "DNA_object_types.h"
#include "DNA_vfont_types.h"
#include "DNA_scene_types.h"
+#include "DNA_text_types.h"
#include "BKE_displist.h"
#include "BKE_font.h"
#include "BKE_object.h"
#include "BKE_global.h"
#include "BKE_main.h"
+#include "BKE_utildefines.h"
#include "BIF_editfont.h"
#include "BIF_toolbox.h"
@@ -205,6 +207,7 @@ static char findaccent(char char1, char code)
else return char1;
}
+
static char *textbuf=0;
static char *oldstr;
@@ -226,6 +229,89 @@ static int insert_into_textbuf(Curve *cu, char c)
}
}
+
+static VFont *get_builtin_font(void)
+{
+ VFont *vf;
+
+ for (vf= G.main->vfont.first; vf; vf= vf->id.next)
+ if (BLI_streq(vf->name, "<builtin>"))
+ return vf;
+
+ return load_vfont("<builtin>");
+}
+
+
+void txt_export_to_object(struct Text *text)
+{
+ ID *id;
+ Curve *cu;
+ struct TextLine *tmp;
+ int nchars = 0;
+// char sdir[FILE_MAXDIR];
+// char sfile[FILE_MAXFILE];
+
+ if(!text) return;
+
+ id = (ID *)text;
+
+ if (G.obedit && G.obedit->type==OB_FONT) return;
+ check_editmode(OB_FONT);
+
+ add_object(OB_FONT);
+
+ base_init_from_view3d(BASACT, G.vd);
+ G.obedit= BASACT->object;
+ where_is_object(G.obedit);
+
+ cu= G.obedit->data;
+
+/*
+// renames object, careful with long filenames.
+
+ if (text->name) {
+ //ID *find_id(char *type, char *name)
+ BLI_split_dirfile(text->name, sdir, sfile);
+// rename_id((ID *)G.obedit, sfile);
+ rename_id((ID *)cu, sfile);
+ id->us++;
+ }
+*/
+ cu->vfont= get_builtin_font();
+ cu->vfont->id.us++;
+
+ tmp= text->lines.first;
+ while(cu->len<MAXTEXT && tmp) {
+ nchars += strlen(tmp->line) + 1;
+ tmp = tmp->next;
+ }
+
+ if(cu->str) MEM_freeN(cu->str);
+
+ cu->str= MEM_mallocN(nchars+1, "str");
+
+ tmp= text->lines.first;
+ strcpy(cu->str, tmp->line);
+ cu->len= strlen(tmp->line);
+ cu->pos= cu->len;
+
+ tmp= tmp->next;
+
+ while(cu->len<MAXTEXT && tmp) {
+ strcat(cu->str, "\n");
+ strcat(cu->str, tmp->line);
+ cu->len+= strlen(tmp->line) + 1;
+ cu->pos= cu->len;
+ tmp= tmp->next;
+ }
+
+ make_editText();
+ exit_editmode(1);
+
+ allqueue(REDRAWVIEW3D, 0);
+}
+
+
void do_textedit(unsigned short event, short val, char _ascii)
{
Curve *cu;
@@ -399,6 +485,59 @@ void do_textedit(unsigned short event, short val, char _ascii)
}
}
+
+void paste_editText(void)
+{
+ Curve *cu;
+ int file, filelen, doit= 0;
+ char *strp;
+
+
+#ifdef WIN32
+ file= open("C:\\windows\\temp\\cutbuf.txt", O_BINARY|O_RDONLY);
+
+// The following is more likely to work on all Win32 installations.
+// suggested by Douglas Toltzman. Needs windows include files...
+/*
+ char tempFileName[MAX_PATH];
+ DWORD pathlen;
+ static const char cutbufname[]="cutbuf.txt";
+
+ if ((pathlen=GetTempPath(sizeof(tempFileName),tempFileName)) > 0 &&
+ pathlen + sizeof(cutbufname) <= sizeof(tempFileName))
+ {
+ strcat(tempFileName,cutbufname);
+ file= open(tempFileName, O_BINARY|O_RDONLY);
+ }
+*/
+#else
+ file= open("/tmp/.cutbuffer", O_BINARY|O_RDONLY);
+#endif
+
+ if(file>0) {
+ cu= G.obedit->data;
+ filelen = BLI_filesize(file);
+
+ strp= MEM_mallocN(filelen+1, "tempstr");
+ read(file, strp, filelen);
+ close(file);
+ strp[filelen]= 0;
+ if(cu->len+filelen<MAXTEXT) {
+ strcat( textbuf, strp);
+ cu->len= strlen(textbuf);
+ cu->pos= cu->len;
+ }
+ MEM_freeN(strp);
+ doit = 1;
+ }
+ if(doit) {
+ text_to_curve(G.obedit, 0);
+ makeDispList(G.obedit);
+ allqueue(REDRAWVIEW3D, 0);
+ }
+}
+
+
void make_editText(void)
{
Curve *cu;
@@ -418,6 +557,7 @@ void make_editText(void)
textediting= 1;
}
+
void load_editText(void)
{
Curve *cu;
@@ -438,6 +578,7 @@ void load_editText(void)
textediting= 0;
}
+
void remake_editText(void)
{
Curve *cu;
@@ -455,6 +596,7 @@ void remake_editText(void)
allqueue(REDRAWVIEW3D, 0);
}
+
void free_editText(void)
{
if(oldstr) MEM_freeN(oldstr);
@@ -462,16 +604,6 @@ void free_editText(void)
textediting= 0;
}
-static VFont *get_builtin_font(void)
-{
- VFont *vf;
-
- for (vf= G.main->vfont.first; vf; vf= vf->id.next)
- if (BLI_streq(vf->name, "<builtin>"))
- return vf;
-
- return load_vfont("<builtin>");
-}
void add_primitiveFont(int dummy_argument)
{
diff --git a/source/blender/src/editimasel.c b/source/blender/src/editimasel.c
index c4da07e4c7c..d2c43a9efbf 100644
--- a/source/blender/src/editimasel.c
+++ b/source/blender/src/editimasel.c
@@ -62,6 +62,7 @@
#include "BIF_interface.h"
#include "BIF_imasel.h"
#include "BIF_mywindow.h"
+#include "BIF_toolbox.h"
#include "BSE_filesel.h"
#include "BSE_drawimasel.h"
@@ -94,6 +95,7 @@ void winqreadimaselspace(ScrArea *sa, void *spacedata, BWinEvent *evt)
short mval[2];
short area_event;
short queredraw = 0;
+ int ret = 0;
char name[256];
char *selname;
static double prevtime=0;
@@ -335,6 +337,15 @@ void winqreadimaselspace(ScrArea *sa, void *spacedata, BWinEvent *evt)
}
break;
+ case IKEY:
+ if ((G.qual == 0)&&(simasel->file)){
+ sprintf(name, "$IMAGEEDITOR %s%s", simasel->dir, simasel->file);
+ system(name);
+ queredraw = 1;
+ }
+
+ break;
+
case PKEY:
if(G.qual & LR_SHIFTKEY) {
extern char bprogname[]; /* usiblender.c */
@@ -353,15 +364,24 @@ void winqreadimaselspace(ScrArea *sa, void *spacedata, BWinEvent *evt)
}
break;
- case IKEY:
- if ((G.qual == 0)&&(simasel->file)){
- sprintf(name, "$IMAGEEDITOR %s%s", simasel->dir, simasel->file);
- system(name);
- queredraw = 1;
- }
+ case RKEY:
+ case XKEY:
+ if (simasel->hilite_ima){
+ strcpy(name, simasel->dir);
+ strcat(name, simasel->hilite_ima->file_name);
+ if( okee("Remove %s", name) ) {
+ ret = BLI_delete(name, 0, 0);
+ if (ret) {
+ error("Command failed, see console");
+ } else {
+ clear_ima_dir(simasel);
+ queredraw = 1;
+ }
+ }
+ }
break;
-
+
case PADPLUSKEY:
case EQUALKEY:
BLI_newname(simasel->file, +1);
@@ -411,3 +431,32 @@ void winqreadimaselspace(ScrArea *sa, void *spacedata, BWinEvent *evt)
}
+void clever_numbuts_imasel()
+{
+ SpaceImaSel *simasel;
+ static char orgname[FILE_MAXDIR+FILE_MAXFILE+12];
+ static char filename[FILE_MAXDIR+FILE_MAXFILE+12];
+ static char newname[FILE_MAXDIR+FILE_MAXFILE+12];
+ int len;
+
+ simasel= curarea->spacedata.first;
+ len = 110;
+
+ if (simasel->hilite_ima){
+ BLI_make_file_string(G.sce, orgname, simasel->dir, simasel->hilite_ima->file_name);
+ strcpy(filename, simasel->hilite_ima->file_name);
+
+ add_numbut(0, TEX, "", 0, len, filename, "Rename Image");
+ if( do_clever_numbuts("Rename Image", 1, REDRAW) ) {
+ BLI_make_file_string(G.sce, newname, simasel->dir, filename);
+
+ if( strcmp(orgname, newname) != 0 ) {
+ BLI_rename(orgname, newname);
+
+ clear_ima_dir(simasel);
+ }
+ }
+
+ scrarea_queue_winredraw(curarea);
+ }
+}
diff --git a/source/blender/src/editoops.c b/source/blender/src/editoops.c
index bf3f7d995a6..11ca482f7a7 100644
--- a/source/blender/src/editoops.c
+++ b/source/blender/src/editoops.c
@@ -59,6 +59,7 @@
#include "BKE_global.h"
#include "BKE_scene.h"
+#include "BKE_library.h"
#include "BKE_material.h"
#include "BIF_space.h"
@@ -67,6 +68,7 @@
#include "BIF_editview.h"
#include "BIF_drawscene.h"
#include "BIF_mywindow.h"
+#include "BIF_toolbox.h"
#include "BDR_editobject.h"
@@ -75,6 +77,7 @@
#include "blendef.h"
#include "mydevice.h"
+#include "interface.h"
typedef struct TransOops {
@@ -82,6 +85,8 @@ typedef struct TransOops {
float oldloc[2];
} TransOops;
+struct ID *idt;
+
static void oops_to_select_objects(void)
{
@@ -598,3 +603,46 @@ void select_backlinked_oops(void)
oops_to_select_objects(); /* ook redr */
}
+
+
+void clever_numbuts_oops()
+{
+ Oops *oops;
+ Object *ob;
+ ID *id = idt;
+ char str1[10];
+ static char naam[256];
+ static char naam2[256];
+ static short doit;
+ int len;
+
+ if(G.soops->lockpoin) {
+ oops= G.soops->lockpoin;
+ ob = (Object *)oops->id;
+ if(oops->type==ID_LI) strcpy(naam, ((Library *)oops->id)->name);
+ else strcpy(naam, oops->id->name);
+
+ strcpy(naam2, naam+2);
+ str1[0]= oops->id->name[0];
+ str1[1]= oops->id->name[1];
+ str1[2]= ':';
+ str1[3]= 0;
+ if(strcmp(str1, "SC:")==0) strcpy(str1, "SCE:");
+ else if(strcmp(str1, "SR:")==0) strcpy(str1, "SCR:");
+
+// if( GS(id->name)==ID_IP) len= 110;
+// else len= 120;
+ len = 110;
+
+ add_numbut(0, TEX, str1, 0, len, naam2, "Rename Object");
+ if((oops->type==ID_OB || oops->type==ID_ME) && ob->type != OB_EMPTY) {
+ // add_numbut(1, TEX, str1, 0, len, naam2, "Name Object");
+ add_numbut(1, TOG|SHO, "Rename Linked Data", 0, 0, &doit, "Rename corresponding Datablock as well");
+ do_clever_numbuts("Rename Datablock", 2, REDRAW);
+ } else {
+ do_clever_numbuts("Rename Datablock", 1, REDRAW);
+ }
+
+ rename_id((ID *)oops->id, naam2);
+ }
+}
diff --git a/source/blender/src/filesel.c b/source/blender/src/filesel.c
index 3c3b3c5d468..4db2c6de5d4 100644
--- a/source/blender/src/filesel.c
+++ b/source/blender/src/filesel.c
@@ -1783,6 +1783,20 @@ static void fs_fake_users(SpaceFile *sfile)
scrarea_queue_winredraw(curarea);
}
+
+static int get_hilited_entry(SpaceFile *sfile)
+{
+ int a, count=0;
+
+ for(a=0; a<sfile->totfile; a++) {
+ if(sfile->filelist[a].flags & HILITE) {
+ return a;
+ }
+ }
+ return -1;
+}
+
+
void winqreadfilespace(ScrArea *sa, void *spacedata, BWinEvent *evt)
{
unsigned short event= evt->event;
@@ -1992,6 +2006,25 @@ void winqreadfilespace(ScrArea *sa, void *spacedata, BWinEvent *evt)
reread_other_fs();
break;
+
+ case XKEY:
+ test = get_hilited_entry(sfile);
+
+ if (test != -1 && !(S_ISDIR(sfile->filelist[test].type))){
+ BLI_make_file_string(G.sce, str, sfile->dir, sfile->filelist[test].relname);
+
+ if( okee("Remove %s", str) ) {
+ ret = BLI_delete(str, 0, 0);
+ if (ret) {
+ error("Command failed, see console");
+ } else {
+ freefilelist(sfile);
+ do_draw= 1;
+ }
+ }
+ }
+ break;
+
case RKEY:
if(sfile->type==FILE_MAIN) {
databrowse_replace(sfile, groupname_to_code(sfile->dir));
@@ -2501,4 +2534,38 @@ void main_to_filelist(SpaceFile *sfile)
}
+void clever_numbuts_filesel()
+{
+ SpaceFile *sfile;
+ char orgname[FILE_MAXDIR+FILE_MAXFILE+12];
+ char filename[FILE_MAXDIR+FILE_MAXFILE+12];
+ char newname[FILE_MAXDIR+FILE_MAXFILE+12];
+ int test;
+ int len;
+
+ sfile= curarea->spacedata.first;
+
+ if(sfile->type==FILE_MAIN) return;
+
+ len = 110;
+ test = get_hilited_entry(sfile);
+
+ if (test != -1 && !(S_ISDIR(sfile->filelist[test].type))){
+ BLI_make_file_string(G.sce, orgname, sfile->dir, sfile->filelist[test].relname);
+ strcpy(filename, sfile->filelist[test].relname);
+
+ add_numbut(0, TEX, "", 0, len, filename, "Rename File");
+
+ if( do_clever_numbuts("Rename File", 1, REDRAW) ) {
+ BLI_make_file_string(G.sce, newname, sfile->dir, filename);
+
+ if( strcmp(orgname, newname) != 0 ) {
+ BLI_rename(orgname, newname);
+ freefilelist(sfile);
+ }
+ }
+
+ scrarea_queue_winredraw(curarea);
+ }
+}
diff --git a/source/blender/src/headerbuttons.c b/source/blender/src/headerbuttons.c
index c73c9ca9de9..994a13ed924 100644
--- a/source/blender/src/headerbuttons.c
+++ b/source/blender/src/headerbuttons.c
@@ -537,6 +537,84 @@ static void show_splash(void)
splash((void *)datatoc_splash_jpg, datatoc_splash_jpg_size, string);
}
+
+/* Functions for user preferences fileselect windows */
+
+void filesel_u_fontdir(char *name)
+{
+ char dir[FILE_MAXDIR], file[FILE_MAXFILE];
+ BLI_split_dirfile(name, dir, file);
+
+ strcpy(U.fontdir, dir);
+ allqueue(REDRAWALL, 0);
+}
+
+void filesel_u_textudir(char *name)
+{
+ char dir[FILE_MAXDIR], file[FILE_MAXFILE];
+ BLI_split_dirfile(name, dir, file);
+
+ strcpy(U.textudir, dir);
+ allqueue(REDRAWALL, 0);
+}
+
+void filesel_u_plugtexdir(char *name)
+{
+ char dir[FILE_MAXDIR], file[FILE_MAXFILE];
+ BLI_split_dirfile(name, dir, file);
+
+ strcpy(U.plugtexdir, dir);
+ allqueue(REDRAWALL, 0);
+}
+
+void filesel_u_plugseqdir(char *name)
+{
+ char dir[FILE_MAXDIR], file[FILE_MAXFILE];
+ BLI_split_dirfile(name, dir, file);
+
+ strcpy(U.plugseqdir, dir);
+ allqueue(REDRAWALL, 0);
+}
+
+void filesel_u_renderdir(char *name)
+{
+ char dir[FILE_MAXDIR], file[FILE_MAXFILE];
+ BLI_split_dirfile(name, dir, file);
+
+ strcpy(U.renderdir, dir);
+ allqueue(REDRAWALL, 0);
+}
+
+void filesel_u_pythondir(char *name)
+{
+ char dir[FILE_MAXDIR], file[FILE_MAXFILE];
+ BLI_split_dirfile(name, dir, file);
+
+ strcpy(U.pythondir, dir);
+ allqueue(REDRAWALL, 0);
+}
+
+void filesel_u_sounddir(char *name)
+{
+ char dir[FILE_MAXDIR], file[FILE_MAXFILE];
+ BLI_split_dirfile(name, dir, file);
+
+ strcpy(U.sounddir, dir);
+ allqueue(REDRAWALL, 0);
+}
+
+void filesel_u_tempdir(char *name)
+{
+ char dir[FILE_MAXDIR], file[FILE_MAXFILE];
+ BLI_split_dirfile(name, dir, file);
+
+ strcpy(U.tempdir, dir);
+ allqueue(REDRAWALL, 0);
+}
+
+/* END Functions for user preferences fileselect windows */
+
+
void do_global_buttons(unsigned short event)
{
ListBase *lb;
@@ -549,7 +627,9 @@ void do_global_buttons(unsigned short event)
Sequence *seq;
bAction *act;
ID *id, *idtest, *from;
+ ScrArea *sa;
int nr= 1;
+ char buf[FILE_MAXDIR+FILE_MAXFILE];
ob= OBACT;
@@ -1309,6 +1389,122 @@ void do_global_buttons(unsigned short event)
case B_LOADTEMP: /* is button uit space.c */
BIF_read_autosavefile();
break;
+
+ case B_USERPREF:
+ allqueue(REDRAWINFO, 0);
+// BIF_printf("userpref %d\n", U.userpref);
+ break;
+ case B_DRAWINFO: /* is button uit space.c *info* */
+ allqueue(REDRAWVIEW3D, 0);
+ break;
+
+ /* Fileselect windows for user preferences file paths */
+
+ case B_FONTDIRFILESEL: /* is button uit space.c *info* */
+ if(curarea->spacetype==SPACE_INFO) {
+ sa= closest_bigger_area();
+ areawinset(sa->win);
+ }
+
+ activate_fileselect(FILE_SPECIAL, "SELECT FONT PATH", U.fontdir, filesel_u_fontdir);
+ break;
+
+ case B_TEXTUDIRFILESEL: /* is button uit space.c *info* */
+ if(curarea->spacetype==SPACE_INFO) {
+ sa= closest_bigger_area();
+ areawinset(sa->win);
+ }
+
+ activate_fileselect(FILE_SPECIAL, "SELECT TEXTURE PATH", U.textudir, filesel_u_textudir);
+ break;
+
+ case B_PLUGTEXDIRFILESEL: /* is button uit space.c *info* */
+ if(curarea->spacetype==SPACE_INFO) {
+ sa= closest_bigger_area();
+ areawinset(sa->win);
+ }
+
+ activate_fileselect(FILE_SPECIAL, "SELECT TEX PLUGIN PATH", U.plugtexdir, filesel_u_plugtexdir);
+ break;
+
+ case B_PLUGSEQDIRFILESEL: /* is button uit space.c *info* */
+ if(curarea->spacetype==SPACE_INFO) {
+ sa= closest_bigger_area();
+ areawinset(sa->win);
+ }
+
+ activate_fileselect(FILE_SPECIAL, "SELECT SEQ PLUGIN PATH", U.plugseqdir, filesel_u_plugseqdir);
+ break;
+
+ case B_RENDERDIRFILESEL: /* is button uit space.c *info* */
+ if(curarea->spacetype==SPACE_INFO) {
+ sa= closest_bigger_area();
+ areawinset(sa->win);
+ }
+
+ activate_fileselect(FILE_SPECIAL, "SELECT RENDER PATH", U.renderdir, filesel_u_renderdir);
+ break;
+
+ case B_PYTHONDIRFILESEL: /* is button uit space.c *info* */
+ if(curarea->spacetype==SPACE_INFO) {
+ sa= closest_bigger_area();
+ areawinset(sa->win);
+ }
+
+ activate_fileselect(FILE_SPECIAL, "SELECT SCRIPT PATH", U.pythondir, filesel_u_pythondir);
+ break;
+
+ case B_SOUNDDIRFILESEL: /* is button uit space.c *info* */
+ if(curarea->spacetype==SPACE_INFO) {
+ sa= closest_bigger_area();
+ areawinset(sa->win);
+ }
+
+ activate_fileselect(FILE_SPECIAL, "SELECT SOUND PATH", U.sounddir, filesel_u_sounddir);
+ break;
+
+ case B_TEMPDIRFILESEL: /* is button uit space.c *info* */
+ if(curarea->spacetype==SPACE_INFO) {
+ sa= closest_bigger_area();
+ areawinset(sa->win);
+ }
+
+ activate_fileselect(FILE_SPECIAL, "SELECT TEMP FILE PATH", U.tempdir, filesel_u_tempdir);
+ break;
+
+ /* END Fileselect windows for user preferences file paths */
+
+
+#ifdef INTERNATIONAL
+ case B_LOADUIFONT: /* is button uit space.c *info* */
+ if(curarea->spacetype==SPACE_INFO) {
+ sa= closest_bigger_area();
+ areawinset(sa->win);
+ }
+ BLI_make_file_string("/", buf, U.fontdir, U.fontname);
+ activate_fileselect(FILE_SPECIAL, "LOAD UI FONT", buf, set_interface_font);
+ break;
+
+ case B_SETLANGUAGE: /* is button uit space.c *info* */
+ lang_setlanguage();
+ allqueue(REDRAWALL, 0);
+ break;
+
+ case B_SETFONTSIZE: /* is button uit space.c *info* */
+ FTF_SetSize(U.fontsize);
+ allqueue(REDRAWALL, 0);
+ break;
+
+ case B_SETTRANSBUTS: /* is button uit space.c *info* */
+ allqueue(REDRAWALL, 0);
+ break;
+
+ case B_SETENCODING: /* is button uit space.c *info* */
+ lang_setencoding();
+ allqueue(REDRAWALL, 0);
+ break;
+#endif
+
case B_FULL:
if(curarea->spacetype!=SPACE_INFO) {
area_fullscreen();
diff --git a/source/blender/src/space.c b/source/blender/src/space.c
index c35e616ace3..8968c9c0580 100644
--- a/source/blender/src/space.c
+++ b/source/blender/src/space.c
@@ -460,6 +460,14 @@ void winqreadview3dspace(ScrArea *sa, void *spacedata, BWinEvent *evt)
do_textedit(event, val, ascii);
}
break;
+ case VKEY:
+ if(G.qual & LR_ALTKEY) {
+ paste_editText();
+ doredraw= 1;
+ } else {
+ do_textedit(event, val, ascii);
+ }
+ break;
case PAD0: case PAD1: case PAD2: case PAD3: case PAD4:
case PAD5: case PAD6: case PAD7: case PAD8: case PAD9:
case PADENTER:
@@ -1265,7 +1273,9 @@ void drawinfospace(ScrArea *sa, void *spacedata)
{
uiBlock *block;
float fac;
- int dx;
+ short xpos, ypos, buth, rspace, dx, y1, y2, y3;
+ short smallprefbut, medprefbut, largeprefbut, smfileselbut;
+ short edgespace, midspace;
char naam[32];
if(curarea->win==0) return;
@@ -1278,123 +1288,362 @@ void drawinfospace(ScrArea *sa, void *spacedata)
sprintf(naam, "infowin %d", curarea->win);
block= uiNewBlock(&curarea->uiblocks, naam, UI_EMBOSSX, UI_HELV, curarea->win);
+// uiBlockSetEmboss(block, UI_EMBOSSM);
+
+
+// uiDefBut(block, LABEL,0,"Blender Settings", 1100,90,133,18, 0, 0, 0, 0, 0, "");
+
+ xpos = 45;
+ ypos = 12;
+ buth = 20;
+ rspace = 2;
+
+ dx= (1280-90)/6;
uiBlockSetCol(block, BUTBLUE);
- uiDefButS(block, TOG|BIT|0, B_RESETAUTOSAVE, "Auto Temp Save", 45,32,126,20, &(U.flag), 0, 0, 0, 0, "Enables/Disables the automatic temp. file saving");
- uiBlockSetCol(block, BUTGREY);
- uiDefBut(block, TEX, 0, "Dir:", 45,10,127,20, U.tempdir, 1.0, 63.0, 0, 0, "The directory for temp. files");
- uiDefButI(block, NUM, B_RESETAUTOSAVE, "Time:", 174,32,91,20, &(U.savetime), 1.0, 60.0, 0, 0, "The time in minutes to wait between temp. saves");
- uiBlockSetCol(block, BUTSALMON);
- uiDefBut(block, BUT, B_LOADTEMP, "Load Temp", 174,10,90,20, 0, 0, 0, 0, 0, "Loads the most recently saved temp file");
- uiBlockSetCol(block, BUTGREY);
- uiDefButS(block, NUM, 0, "Versions:", 281,10,86,42, &U.versions, 0.0, 32.0, 0, 0, "The number of old versions to maintain when saving");
-
- uiBlockSetCol(block, BUTYELLOW);
- uiDefButI(block, TOG|BIT|USERDEF_VERTEX_ARRAYS_BIT, 0, "Vertex arrays",
- 389,54,86,20, &(U.gameflags), 0, 0, 0, 0,
- "Toggle between vertex arrays on (less reliable) and off (more reliable)");
- uiDefButI(block, TOG|BIT|USERDEF_DISABLE_SOUND_BIT, B_SOUNDTOGGLE, "No sound",
- 478,54,86,20, &(U.gameflags), 0, 0, 0, 0,
- "Toggle between sound on and sound off");
-
- uiDefButI(block, TOG|BIT|USERDEF_DISABLE_MIPMAP_BIT, B_MIPMAPCHANGED, "No Mipmaps",
- 569,54,78,20, &(U.gameflags), 0, 0, 0, 0,
- "Toggle between Mipmap textures on (beautiful) and off (fast)");
-
- uiBlockSetCol(block, BUTGREEN);
- uiDefButS(block, TOG|BIT|4, 0, "Scene Global",
- 389,32,86,20, &(U.flag), 0, 0, 0, 0,
- "Forces the current Scene to be displayed in all Screens");
- uiDefButS(block, TOG|BIT|5, 0, "TrackBall",
- 389,10,86,20, &(U.flag), 0, 0, 0, 0,
- "Switches between trackball and turntable view rotation methods (MiddleMouse)");
- uiDefButS(block, TOG|BIT|12, 0, "2-Mouse",
- 478,10,86,20, &(U.flag), 0, 0, 0, 0,
- "Maps ALT+LeftMouse to MiddleMouse button");
- uiDefButS(block, TOG|BIT|8, 0, "Mat on Obj",
- 569,9,78,20, &(U.flag), 0, 0, 0, 0,
- "Sets whether Material data is linked to Obj or ObjData");
- uiDefButS(block, TOG|BIT|9, B_U_CAPSLOCK, "NoCapsLock",
- 478,32,86,20, &(U.flag), 0, 0, 0, 0,
- "Deactives the CapsLock button (only applies to text input)");
- uiDefButS(block, TOG|BIT|10, 0, "Viewmove",
- 569,32,78,20, &(U.flag), 0, 0, 0, 0,
- "Sets the default action for the middle mouse button");
-
- uiDefButS(block, TOG|BIT|13, 0, "noNumpad",
- 653,10,76,20, &(U.flag), 0, 0, 0, 0,
- "For laptops: keys 1 to 0 become numpad keys");
- uiDefButS(block, TOG|BIT|11, 0, "ToolTips",
- 653,32,76,20, &(U.flag), 0, 0, 0, 0,
- "Enables/Disables tooltips");
-
-// uiDefButS(block, ICONTOG|BIT|14, 0, ICON(), 733,10,50,42, &(U.flag), 0, 0, 0, 0, "Automatic keyframe insertion");
- uiDefButS(block, TOG|BIT|0, 0, "KeyAC", 733,32,50,20, &(U.uiflag), 0, 0, 0, 0, "Automatic keyframe insertion for actions");
- uiDefButS(block, TOG|BIT|1, 0, "KeyOB", 733,10,50,20, &(U.uiflag), 0, 0, 0, 0, "Automatic keyframe insertion for objects");
-
- uiDefButS(block, TOG|BIT|1, 0, "Grab Grid", 788,32,106,20, &(U.flag), 0, 0, 0, 0, "Changes default step mode for grabbing");
- uiDefButS(block, TOG|BIT|2, 0, "Rot", 842,10,52,20, &(U.flag), 0, 0, 0, 0, "Changes default step mode for rotation");
- uiDefButS(block, TOG|BIT|3, 0, "Size", 788,10,52,20, &(U.flag), 0, 0, 0, 0, "Changes default step mode for scaling");
-
- uiDefButS(block, TOG|BIT|0, 0, "Dupli Mesh", 902,32,90,20, &(U.dupflag), 0, 0, 0, 0, "Causes Mesh data to be duplicated with Shift+D");
- uiDefButS(block, TOG|BIT|9, 0, "Armature", 902,10,90,20, &(U.dupflag), 0, 0, 0, 0, "Causes Armature data to be duplicated with Shift+D");
-
- uiDefButS(block, TOG|BIT|1, 0, "Curve", 995,32,50,20, &(U.dupflag), 0, 0, 0, 0, "Causes Curve data to be duplicated with Shift+D");
- uiDefButS(block, TOG|BIT|2, 0, "Surf", 995,10,50,20, &(U.dupflag), 0, 0, 0, 0, "Causes Surface data to be duplicated with Shift+D");
- uiDefButS(block, TOG|BIT|3, 0, "Text", 1048,32,50,20, &(U.dupflag), 0, 0, 0, 0, "Causes Text data to be duplicated with Shift+D");
- uiDefButS(block, TOG|BIT|4, 0, "MBall", 1048,10,50,20, &(U.dupflag), 0, 0, 0, 0, "Causes Metaball data to be duplicated with Shift+D");
- uiDefButS(block, TOG|BIT|5, 0, "Lamp", 1101,32,50,20, &(U.dupflag), 0, 0, 0, 0, "Causes Lamp data to be duplicated with Shift+D");
- uiDefButS(block, TOG|BIT|6, 0, "Ipo", 1101,10,50,20, &(U.dupflag), 0, 0, 0, 0, "Causes Ipo data to be duplicated with Shift+D");
- uiDefButS(block, TOG|BIT|7, 0, "Material", 1153,32,70,20, &(U.dupflag), 0, 0, 0, 0, "Causes Material data to be duplicated with Shift+D");
- uiDefButS(block, TOG|BIT|8, 0, "Texture", 1153,10,70,20, &(U.dupflag), 0, 0, 0, 0, "Causes Texture data to be duplicated with Shift+D");
+ uiDefButI(block, ROW,B_USERPREF,"View & Controls",
+ xpos,ypos,(short)dx,buth,
+ &U.userpref,1.0,0.0, 0, 0,"");
+
+ uiDefButI(block, ROW,B_USERPREF,"Auto Save",
+ (short)(xpos+2*dx),ypos,(short)dx,buth,
+ &U.userpref,1.0,1.0, 0, 0,"");
+
+ uiDefButI(block, ROW,B_USERPREF,"Edit Methods",
+ (short)(xpos+dx),ypos,(short)dx,buth,
+ &U.userpref,1.0,2.0, 0, 0,"");
+
+ uiDefButI(block, ROW,B_USERPREF,"File Paths",
+ (short)(xpos+3*dx),ypos,(short)dx,buth,
+ &U.userpref,1.0,4.0, 0, 0,"");
+ uiDefButI(block, ROW,B_USERPREF,"Language & Colors",
+ (short)(xpos+4*dx),ypos,(short)dx,buth,
+ &U.userpref,1.0,5.0, 0, 0,"");
+ uiDefButI(block, ROW,B_USERPREF,"System & OpenGL",
+ (short)(xpos+5*dx),ypos,(short)dx,buth,
+ &U.userpref,1.0,3.0, 0, 0,"");
+
+ uiBlockSetEmboss(block, UI_EMBOSSX);
uiBlockSetCol(block, BUTGREY);
- uiDefButI(block, NUM, 0, "WLines",
- 1153,54,70,20, &U.wheellinescroll,
- 1.0, 32.0, 0, 0,
- "Mousewheel: The number of lines that get scrolled");
- uiDefButS(block, TOG|BIT|2, 0, "WZoom",
- 1081,54,70,20, &(U.uiflag), 0, 0, 0, 0,
- "Mousewheel: Swaps mousewheel zoom direction");
+ xpos = 45;
+ ypos = 58;
+ buth = 20;
+ rspace = 4;
+
+ smallprefbut = 94;
+ medprefbut = 193;
+ largeprefbut = 292;
+ smfileselbut = buth;
+
+ edgespace = 3;
+ midspace = 5;
- dx= (1280-90)/6;
+ y1 = ypos;
+ y2 = ypos+buth+rspace;
+ y3 = ypos+2*(buth+rspace);
+
+ /* line 2: left x co-ord, top y co-ord, width, height */
+
+ if (U.userpref == 0) { /* view & ctrl */
+
+ uiBlockSetCol(block, BUTGREEN);
+ uiDefButS(block, TOG|BIT|4, 0, "Scene Global",
+ 389,y2,86,20, &(U.flag), 0, 0, 0, 0,
+ "Forces the current Scene to be displayed in all Screens");
+ uiDefButS(block, TOG|BIT|5, 0, "TrackBall",
+ 389,y1,86,20, &(U.flag), 0, 0, 0, 0,
+ "Switches between trackball and turntable view rotation methods (MiddleMouse)");
+ uiDefButS(block, TOG|BIT|12, 0, "2-Mouse",
+ 478,y1,86,20, &(U.flag), 0, 0, 0, 0,
+ "Maps ALT+LeftMouse to MiddleMouse button");
+ uiDefButS(block, TOG|BIT|9, B_U_CAPSLOCK, "NoCapsLock",
+ 478,y2,86,20, &(U.flag), 0, 0, 0, 0,
+ "Deactives the CapsLock button (only applies to text input)");
+ uiDefButS(block, TOG|BIT|10, 0, "Viewmove",
+ 569,y2,78,20, &(U.flag), 0, 0, 0, 0,
+ "Sets the default action for the middle mouse button");
+
+ uiDefButS(block, TOG|BIT|13, 0, "noNumpad",
+ 653,y1,76,20, &(U.flag), 0, 0, 0, 0,
+ "For laptops: keys 1 to 0 become numpad keys");
+ uiDefButS(block, TOG|BIT|11, 0, "ToolTips",
+ 653,y2,76,20, &(U.flag), 0, 0, 0, 0,
+ "Enables/Disables tooltips");
+
+
+ uiDefButS(block, TOG|BIT|1, 0, "Grab Grid", 788,y2,106,20, &(U.flag), 0, 0, 0, 0, "Changes default step mode for grabbing");
+ uiDefButS(block, TOG|BIT|2, 0, "Rot", 842,y1,52,20, &(U.flag), 0, 0, 0, 0, "Changes default step mode for rotation");
+ uiDefButS(block, TOG|BIT|3, 0, "Size", 788,y1,52,20, &(U.flag), 0, 0, 0, 0, "Changes default step mode for scaling");
+
+ uiDefButI(block, NUM, 0, "WLines",
+ 1153,y2,70,20, &U.wheellinescroll,
+ 0.0, 32.0, 0, 0,
+ "Mousewheel: The number of lines that get scrolled");
+ uiDefButS(block, TOG|BIT|2, 0, "WZoom",
+ 1081,y2,70,20, &(U.uiflag), 0, 0, 0, 0,
+ "Mousewheel: Swaps mousewheel zoom direction");
+
+ uiDefButS(block, TOG|BIT|3, 0, "Exts",
+ 1009,y2,70,20, &(U.uiflag), 0, 0, 0, 0,
+ "ImageSelecter: Filter only filenames with extensions");
+
+ uiDefButS(block, TOG|BIT|4, B_DRAWINFO, "DrawInfo",
+ 937,y2,70,20, &(U.uiflag), 0, 0, 0, 0,
+ "3D View: Display active objectname and current framenumber");
+ } else if(U.userpref == 1) { /* autosave */
+
+ /* uiBlockSetCol(block, BUTBLUE); */
+
+ uiDefButS(block, TOG|BIT|0, B_RESETAUTOSAVE, "Auto Save Temp Files",
+ (xpos+edgespace),y2,medprefbut,buth,
+ &(U.flag), 0, 0, 0, 0, "Enables/Disables automatically saving temporary files");
+
+ /* uiBlockSetCol(block, BUTGREY); */
+
+ uiBlockSetCol(block, BUTSALMON);
+
+ uiDefBut(block, BUT, B_LOADTEMP, "Open Recent",
+ (xpos+edgespace),y1,medprefbut,buth,
+ 0, 0, 0, 0, 0, "Opens the most recently saved temporary file");
+
+ uiBlockSetCol(block, BUTGREY);
+
+ /* uiDefBut(block, TEX, 0, "Dir:",
+ 45,y1,260,buth,
+ U.tempdir, 1.0, 63.0, 0, 0, "The directory for temp. files"); */
+
+ uiDefButI(block, NUM, B_RESETAUTOSAVE, "Minutes:",
+ (xpos+edgespace+medprefbut+midspace),y2,medprefbut,buth,
+ &(U.savetime), 1.0, 60.0, 0, 0, "The time in minutes to wait between temp. saves");
+
+ // uiBlockSetCol(block, BUTSALMON);
+
+
+
+ // uiBlockSetCol(block, BUTGREY);
+
+ uiDefButS(block, NUM, 0, "Versions:",
+ (xpos+edgespace+medprefbut+midspace),y1,medprefbut,buth,
+ &U.versions, 0.0, 32.0, 0, 0, "The number of old versions to maintain when saving");
+
+ } else if (U.userpref == 2) { // edit methods
+
+ uiDefButS(block, TOG|BIT|8, 0, "Material on Object",
+ (xpos+edgespace+medprefbut+midspace),y2,medprefbut,buth,
+ &(U.flag), 0, 0, 0, 0, "Sets whether Material data is linked to Object or ObjData");
+
+ uiDefButS(block, TOG|BIT|0, 0, "Auto Key Action",
+ (xpos+edgespace),y1,medprefbut,buth,
+ &(U.uiflag), 0, 0, 0, 0, "Automatic keyframe insertion for actions");
+ uiDefButS(block, TOG|BIT|1, 0, "Auto Key Object",
+ (xpos+edgespace),y2,medprefbut,buth,
+ &(U.uiflag), 0, 0, 0, 0, "Automatic keyframe insertion for objects");
+
+ uiDefBut(block, LABEL,0,"Duplicate With Object:",
+ (xpos+edgespace+(3*midspace)+(3*medprefbut)+smallprefbut),y3,(largeprefbut),buth,
+ 0, 0, 0, 0, 0, "");
+
+ uiDefButS(block, TOG|BIT|0, 0, "Mesh",
+ (xpos+edgespace+(4*midspace)+(3*medprefbut)+smallprefbut),y2,smallprefbut,buth,
+ &(U.dupflag), 0, 0, 0, 0, "Causes Mesh data to be duplicated with Shift+D");
+ uiDefButS(block, TOG|BIT|9, 0, "Armature",
+ (xpos+edgespace+(4*midspace)+(3*medprefbut)+smallprefbut),y1,smallprefbut,buth,
+ &(U.dupflag), 0, 0, 0, 0, "Causes Armature data to be duplicated with Shift+D");
+
+ uiDefButS(block, TOG|BIT|2, 0, "Surface",
+ (xpos+edgespace+(5*midspace)+(3*medprefbut)+(2*smallprefbut)),y2,smallprefbut,buth,
+ &(U.dupflag), 0, 0, 0, 0, "Causes Surface data to be duplicated with Shift+D");
+ uiDefButS(block, TOG|BIT|6, 0, "Ipo",
+ (xpos+edgespace+(5*midspace)+(3*medprefbut)+(2*smallprefbut)),y1,smallprefbut,buth,
+ &(U.dupflag), 0, 0, 0, 0, "Causes Ipo data to be duplicated with Shift+D");
+
+ uiDefButS(block, TOG|BIT|1, 0, "Curve",
+ (xpos+edgespace+(6*midspace)+(3*medprefbut)+(3*smallprefbut)),y2,smallprefbut,buth,
+ &(U.dupflag), 0, 0, 0, 0, "Causes Curve data to be duplicated with Shift+D");
+ uiDefButS(block, TOG|BIT|7, 0, "Material",
+ (xpos+edgespace+(6*midspace)+(3*medprefbut)+(3*smallprefbut)),y1,smallprefbut,buth,
+ &(U.dupflag), 0, 0, 0, 0, "Causes Material data to be duplicated with Shift+D");
+
+ uiDefButS(block, TOG|BIT|3, 0, "Text",
+ (xpos+edgespace+(7*midspace)+(3*medprefbut)+(4*smallprefbut)),y2,smallprefbut,buth,
+ &(U.dupflag), 0, 0, 0, 0, "Causes Text data to be duplicated with Shift+D");
+ uiDefButS(block, TOG|BIT|8, 0, "Texture",
+ (xpos+edgespace+(7*midspace)+(3*medprefbut)+(4*smallprefbut)),y1,smallprefbut,buth,
+ &(U.dupflag), 0, 0, 0, 0, "Causes Texture data to be duplicated with Shift+D");
+
+ uiDefButS(block, TOG|BIT|4, 0, "Metaball",
+ (xpos+edgespace+(8*midspace)+(3*medprefbut)+(5*smallprefbut)),y2,smallprefbut,buth,
+ &(U.dupflag), 0, 0, 0, 0, "Causes Metaball data to be duplicated with Shift+D");
+ uiDefButS(block, TOG|BIT|5, 0, "Lamp",
+ (xpos+edgespace+(8*midspace)+(3*medprefbut)+(5*smallprefbut)),y1,smallprefbut,buth,
+ &(U.dupflag), 0, 0, 0, 0, "Causes Lamp data to be duplicated with Shift+D");
+
+
+ } else if (U.userpref == 3) { // system & opengl
+
+/*
+ uiBlockSetCol(block, BUTGREY);
+ uiDefButS(block, MENU|SHO, B_CONSOLEOUT, consolemethod_pup(),
+ 45, y2, 260, buth,
+ &U.console_out, 0, 0, 0, 0, "Select Console method");
+
+ uiDefButS(block, TOG|BIT|5, 0, "PrintEvents",
+ 45,y1,130,buth,
+ &(U.uiflag), 0, 0, 0, 0,
+ "Console: Print inputevents to console");
+ uiDefButS(block, NUM, B_CONSOLENUMLINES, "Max Lines:",
+ 175,y1,130,buth,
+ &U.console_buffer, 1.0, 4000.0, 0, 0,
+ "Console: Maximum number of Console lines");
+*/
+ uiBlockSetCol(block, BUTYELLOW);
+
+ uiDefButI(block, TOG|BIT|USERDEF_VERTEX_ARRAYS_BIT, 0, "Vertex arrays",
+ 400,y2,160,buth,
+ &(U.gameflags), 0, 0, 0, 0, "Toggle between vertex arrays on (less reliable) and off (more reliable)");
+ uiDefButI(block, TOG|BIT|USERDEF_DISABLE_MIPMAP_BIT, B_MIPMAPCHANGED, "No Mipmaps",
+ 560,y2,160,buth,
+ &(U.gameflags), 0, 0, 0, 0, "Toggle between Mipmap textures on (beautiful) and off (fast)");
+ uiDefButI(block, TOG|BIT|USERDEF_DISABLE_SOUND_BIT, B_SOUNDTOGGLE, "No sound",
+ 400,y1,160,buth,
+ &(U.gameflags), 0, 0, 0, 0, "Toggle between sound on and sound off");
+
+ } else if(U.userpref == 4) { //file paths
+
+ dx= (1280-90)/4;
+
+
+ uiDefBut(block, TEX, 0, "Fonts: ",
+ (xpos+edgespace),y2,(largeprefbut-smfileselbut),buth,
+ U.fontdir, 1.0, 63.0, 0, 0,
+ "The default directory to search for loading fonts");
+ uiDefIconBut(block, BUT, B_FONTDIRFILESEL, ICON_FILESEL,
+ (xpos+edgespace+largeprefbut-smfileselbut),y2,smfileselbut,buth,
+ 0, 0, 0, 0, 0,
+ "Select default font path");
+
+
+ uiDefBut(block, TEX, 0, "Textures: ",
+ (xpos+edgespace+largeprefbut+midspace),y2,(largeprefbut-smfileselbut),buth,
+ U.textudir, 1.0, 63.0, 0, 0,
+ "The default directory to search for textures");
+ uiDefIconBut(block, BUT, B_TEXTUDIRFILESEL, ICON_FILESEL,
+ (xpos+edgespace+(2*largeprefbut)+midspace-smfileselbut),y2,smfileselbut,buth,
+ 0, 0, 0, 0, 0,
+ "Select default texture path");
+
+ uiDefBut(block, TEX, 0, "TexPlugins: ",
+ (xpos+edgespace+(2*largeprefbut)+(2*midspace)),y2,(largeprefbut-smfileselbut),buth,
+ U.plugtexdir, 1.0, 63.0, 0, 0,
+ "The default directory to search for texture plugins");
+ uiDefIconBut(block, BUT, B_PLUGTEXDIRFILESEL, ICON_FILESEL,
+ (xpos+edgespace+(3*largeprefbut)+(2*midspace)-smfileselbut),y2,smfileselbut,buth,
+ 0, 0, 0, 0, 0,
+ "Select default texture plugin path");
+
+ uiDefBut(block, TEX, 0, "SeqPlugins: ",
+ (xpos+edgespace+(3*largeprefbut)+(3*midspace)),y2,(largeprefbut-smfileselbut),buth,
+ U.plugseqdir, 1.0, 63.0, 0, 0,
+ "The default directory to search for sequence plugins");
+ uiDefIconBut(block, BUT, B_PLUGSEQDIRFILESEL, ICON_FILESEL,
+ (xpos+edgespace+(4*largeprefbut)+(3*midspace)-smfileselbut),y2,smfileselbut,buth,
+ 0, 0, 0, 0, 0,
+ "Select default sequence plugin path");
+
+
+ uiDefBut(block, TEX, 0, "Render: ",
+ (xpos+edgespace),y1,(largeprefbut-smfileselbut),buth,
+ U.renderdir, 1.0, 63.0, 0, 0,
+ "The default directory for rendering output");
+ uiDefIconBut(block, BUT, B_RENDERDIRFILESEL, ICON_FILESEL,
+ (xpos+edgespace+largeprefbut-smfileselbut),y1,smfileselbut,buth,
+ 0, 0, 0, 0, 0,
+ "Select default render path");
+
+ uiDefBut(block, TEX, 0, "Python: ",
+ (xpos+edgespace+largeprefbut+midspace),y1,(largeprefbut-smfileselbut),buth,
+ U.pythondir, 1.0, 63.0, 0, 0,
+ "The default directory to search for Python scripts");
+ uiDefIconBut(block, BUT, B_PYTHONDIRFILESEL, ICON_FILESEL,
+ (xpos+edgespace+(2*largeprefbut)+midspace-smfileselbut),y1,smfileselbut,buth,
+ 0, 0, 0, 0, 0,
+ "Select default Python script path");
+
+ uiDefBut(block, TEX, 0, "Sounds: ",
+ (xpos+edgespace+(2*largeprefbut)+(2*midspace)),y1,(largeprefbut-smfileselbut),buth,
+ U.sounddir, 1.0, 63.0, 0, 0,
+ "The default directory to search for sounds");
+ uiDefIconBut(block, BUT, B_SOUNDDIRFILESEL, ICON_FILESEL,
+ (xpos+edgespace+(3*largeprefbut)+(2*midspace)-smfileselbut),y1,smfileselbut,buth,
+ 0, 0, 0, 0, 0,
+ "Select default sound path");
+
+ uiDefBut(block, TEX, 0, "Temp: ",
+ (xpos+edgespace+(3*largeprefbut)+(3*midspace)),y1,(largeprefbut-smfileselbut),buth,
+ U.tempdir, 1.0, 63.0, 0, 0, "The directory for storing temporary save files");
+ uiDefIconBut(block, BUT, B_TEMPDIRFILESEL, ICON_FILESEL,
+ (xpos+edgespace+(4*largeprefbut)+(3*midspace)-smfileselbut),y1,smfileselbut,buth,
+ 0, 0, 0, 0, 0,
+ "Select default temporary save file path");
+
+ } else if(U.userpref == 5) { //language & colors
+
+ dx= (1280-90)/6;
+#ifdef INTERNATIONAL
+ uiBlockSetCol(block, BUTSALMON);
+ uiDefBut(block, BUT, B_LOADUIFONT, "Load UI Font",
+ xpos,y2,(short)dx-10,buth,
+ 0, 0, 0, 0, 0, "Load new font for the interface");
+
+ uiBlockSetCol(block, BUTGREY);
+ uiDefButS(block, MENU|SHO, B_SETLANGUAGE, language_pup(),
+ xpos + (short)dx,y2,(short)dx-10,buth,
+ &U.language, 0, 0, 0, 0, "Choose interface language");
+
+ uiDefButS(block, MENU|SHO, B_SETENCODING, encoding_pup(),
+ xpos,y1,(short)dx-10,buth,
+ &U.encoding, 0, 0, 0, 0, "Set font encoding");
+
+ uiDefButI(block, MENU|INT, B_SETFONTSIZE, fontsize_pup(),
+ xpos + (short)dx,y1,(short)dx-10,buth,
+ &U.fontsize, 0, 0, 0, 0, "Set font size");
+
+ uiDefBut(block, LABEL,0,U.fontname,
+ xpos,y3,(short)dx-10,buth,
+ 0, 0, 0, 0, 0, "");
+
+ xpos = 320;
+ dx= (1280-90)/7.5;
+ uiDefButS(block, TOG|BIT|0, B_SETTRANSBUTS, "Translate Tooltips",
+ xpos + (short)dx,y2,(short)dx,buth,
+ &(U.transopts), 0, 0, 0, 0, "Apply translation to tooltips");
+ uiDefButS(block, TOG|BIT|1, B_SETTRANSBUTS, "Translate Buttons",
+ xpos + (short)dx,y1,(short)dx,buth,
+ &(U.transopts), 0, 0, 0, 0, "Apply translation to button titles");
+
+ uiDefButS(block, TOG|BIT|2, B_SETTRANSBUTS, "Translate Toolbox",
+ xpos + (short)2*dx,y2,(short)dx,buth,
+ &(U.transopts), 0, 0, 0, 0, "Apply translation to toolbox menu");
+
+ uiBlockSetCol(block, BUTSALMON);
+ uiDefButS(block, TOG|BIT|3, B_SETTRANSBUTS, "FTF All windows",
+ xpos + (short)2*dx,y1,(short)dx,buth,
+ &(U.transopts), 0, 0, 0, 0,
+ "Use FTF drawing for fileselect and textwindow "
+ "(under construction)");
+/* end of INTERNATIONAL */
+#endif
+ }
-#define _XPOS_ 45
-#define _YPOS_ 80
-#define _BUTH_ 20
-#define _RULESPACE_ 2
- uiDefBut(block, TEX, 0, "Python:",
- _XPOS_,_YPOS_-_BUTH_-_RULESPACE_,(short)dx,_BUTH_, U.pythondir, 1.0, 63.0, 0, 0,
- "The default directory for Python scripts");
- uiDefBut(block, TEX, 0, "Fonts:",
- _XPOS_,_YPOS_,(short)dx,_BUTH_, U.fontdir, 1.0, 63.0, 0, 0,
- "The default directory to search when loading fonts");
- uiDefBut(block, TEX, 0, "Render:",
- (short)(_XPOS_+dx),_YPOS_,(short)dx,_BUTH_, U.renderdir, 1.0, 63.0, 0, 0,
- "The default directory to choose for rendering");
- uiDefBut(block, TEX, 0, "Textures:",
- (short)(_XPOS_+2*dx),_YPOS_,(short)dx,_BUTH_, U.textudir, 1.0, 63.0, 0, 0,
- "The default directory to search when loading textures");
- uiDefBut(block, TEX, 0, "TexPlugin:",
- (short)(_XPOS_+3*dx),_YPOS_,(short)dx,_BUTH_, U.plugtexdir, 1.0, 63.0, 0, 0,
- "The default directory to search when loading texture plugins");
- uiDefBut(block, TEX, 0, "SeqPlugin:",
- (short)(_XPOS_+4*dx),_YPOS_,(short)dx,_BUTH_, U.plugseqdir, 1.0, 63.0, 0, 0,
- "The default directory to search when loading sequence plugins");
- uiDefBut(block, TEX, 0, "Sounds:",
- (short)(_XPOS_+5*dx),_YPOS_,(short)dx,_BUTH_, U.sounddir, 1.0, 63.0, 0, 0,
- "The default directory to search when loading sounds");
-#undef _XPOS_
-#undef _YPOS_
-#undef _BUTH_
-#undef _RULESPACE_
uiDrawBlock(block);
}
+
void winqreadinfospace(ScrArea *sa, void *spacedata, BWinEvent *evt)
{
unsigned short event= evt->event;
diff --git a/source/blender/src/toolbox.c b/source/blender/src/toolbox.c
index d84dedfd045..c16bc7ccb29 100644
--- a/source/blender/src/toolbox.c
+++ b/source/blender/src/toolbox.c
@@ -79,6 +79,8 @@
#include "BIF_editseq.h"
#include "BIF_editlattice.h"
#include "BIF_editsima.h"
+#include "BIF_editoops.h"
+#include "BIF_imasel.h"
#include "BIF_screen.h"
#include "BIF_tbcallback.h"
#include "BIF_editnla.h"
@@ -89,6 +91,7 @@
#include "BSE_editipo.h"
#include "BSE_buttons.h"
+#include "BSE_filesel.h"
#include "IMB_imbuf.h"
@@ -1424,11 +1427,21 @@ void clever_numbuts(void)
else if(curarea->spacetype==SPACE_IMAGE) {
clever_numbuts_sima();
}
+ else if(curarea->spacetype==SPACE_IMASEL) {
+ clever_numbuts_imasel();
+ }
else if(curarea->spacetype==SPACE_BUTS){
clever_numbuts_buts();
}
-
-
+ else if(curarea->spacetype==SPACE_OOPS) {
+ clever_numbuts_oops();
+ }
+// else if(curarea->spacetype==SPACE_ACTION){
+// stupid_damn_numbuts_action();
+// }
+ else if(curarea->spacetype==SPACE_FILE) {
+ clever_numbuts_filesel();
+ }
}