The R Project SVN R

Rev

Rev 62583 | Rev 63182 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 62583 Rev 63181
Line 102... Line 102...
102
    EditorData p = getdata(t);
102
    EditorData p = getdata(t);
103
    FILE *f;
103
    FILE *f;
104
    char *buffer = NULL, tmp[MAX_PATH+50];
104
    char *buffer = NULL, tmp[MAX_PATH+50];
105
    const char *sname;
105
    const char *sname;
106
    long num = 1, bufsize;
106
    long num = 1, bufsize;
-
 
107
    const void *vmax = vmaxget();
107
 
108
 
108
    if(enc == CE_UTF8) {
109
    if(enc == CE_UTF8) {
109
	wchar_t wname[MAX_PATH+1];
110
	wchar_t wname[MAX_PATH+1];
110
	Rf_utf8towcs(wname, name, MAX_PATH+1);
111
	Rf_utf8towcs(wname, name, MAX_PATH+1);
111
	f = R_wfopen(wname, L"r");
112
	f = R_wfopen(wname, L"r");
Line 139... Line 140...
139
    setlimittext(t, 2 * strlen(buffer));
140
    setlimittext(t, 2 * strlen(buffer));
140
    settext(t, buffer);
141
    settext(t, buffer);
141
    gsetmodified(t, 0);
142
    gsetmodified(t, 0);
142
    free(buffer);
143
    free(buffer);
143
    fclose(f);
144
    fclose(f);
-
 
145
    vmaxset(vmax)
144
}
146
}
145
 
147
 
146
static void editor_save_file(editor c, const char *name, int enc)
148
static void editor_save_file(editor c, const char *name, int enc)
147
{
149
{
148
    textbox t = getdata(c);
150
    textbox t = getdata(c);
Line 151... Line 153...
151
    const char *sname;
153
    const char *sname;
152
 
154
 
153
    if (name == NULL)
155
    if (name == NULL)
154
	return;
156
	return;
155
    else {
157
    else {
-
 
158
	const void *vmax = vmaxget();
156
	if(enc == CE_UTF8) {
159
	if(enc == CE_UTF8) {
157
	    wchar_t wname[MAX_PATH+1];
160
	    wchar_t wname[MAX_PATH+1];
158
	    Rf_utf8towcs(wname, name, MAX_PATH+1);
161
	    Rf_utf8towcs(wname, name, MAX_PATH+1);
159
	    sname = reEnc(name, CE_UTF8, CE_NATIVE, 3);
162
	    sname = reEnc(name, CE_UTF8, CE_NATIVE, 3);
160
	    f = R_wfopen(wname, L"w");
163
	    f = R_wfopen(wname, L"w");
Line 167... Line 170...
167
	    askok(buf);
170
	    askok(buf);
168
	    return;
171
	    return;
169
	}
172
	}
170
	fprintf(f, "%s", gettext(t));
173
	fprintf(f, "%s", gettext(t));
171
	fclose(f);
174
	fclose(f);
-
 
175
	vmaxset(vmax);
172
    }
176
    }
173
}
177
}
174
 
178
 
175
static void editorsaveas(editor c)
179
static void editorsaveas(editor c)
176
{
180
{
Line 179... Line 183...
179
    wchar_t *wname;
183
    wchar_t *wname;
180
 
184
 
181
    setuserfilterW(L"R files (*.R)\0*.R\0S files (*.q, *.ssc, *.S)\0*.q;*.ssc;*.S\0All files (*.*)\0*.*\0\0");
185
    setuserfilterW(L"R files (*.R)\0*.R\0S files (*.q, *.ssc, *.S)\0*.q;*.ssc;*.S\0All files (*.*)\0*.*\0\0");
182
    wname = askfilesaveW(G_("Save script as"), "");
186
    wname = askfilesaveW(G_("Save script as"), "");
183
    if (wname) {
187
    if (wname) {
-
 
188
	const void *vmax = vmaxget();
184
	char name[4*MAX_PATH+1];
189
	char name[4*MAX_PATH+1];
185
	const char *tname;
190
	const char *tname;
186
	wcstoutf8(name, wname, MAX_PATH);
191
	wcstoutf8(name, wname, MAX_PATH);
187
	/* now check if it has an extension */
192
	/* now check if it has an extension */
188
	char *q = strchr(name, '.');
193
	char *q = strchr(name, '.');
Line 191... Line 196...
191
	editor_save_file(c, name, CE_UTF8);
196
	editor_save_file(c, name, CE_UTF8);
192
	p->file = 1;
197
	p->file = 1;
193
	strncpy(p->filename, tname, MAX_PATH+1);
198
	strncpy(p->filename, tname, MAX_PATH+1);
194
	gsetmodified(t, 0);
199
	gsetmodified(t, 0);
195
	editor_set_title(c, tname);
200
	editor_set_title(c, tname);
-
 
201
	vmaxset(vmax);
196
    }
202
    }
197
    show(c);
203
    show(c);
198
}
204
}
199
 
205
 
200
static void menueditorsaveas(control m)
206
static void menueditorsaveas(control m)
Line 374... Line 380...
374
 
380
 
375
    int i; textbox t; EditorData p;
381
    int i; textbox t; EditorData p;
376
    setuserfilterW(L"R files (*.R)\0*.R\0S files (*.q, *.ssc, *.S)\0*.q;*.ssc;*.S\0All files (*.*)\0*.*\0\0");
382
    setuserfilterW(L"R files (*.R)\0*.R\0S files (*.q, *.ssc, *.S)\0*.q;*.ssc;*.S\0All files (*.*)\0*.*\0\0");
377
    wname = askfilenameW(G_("Open script"), default_name); /* returns NULL if open dialog cancelled */
383
    wname = askfilenameW(G_("Open script"), default_name); /* returns NULL if open dialog cancelled */
378
    if (wname) {
384
    if (wname) {
-
 
385
	const void *vmax = vmaxget();
379
	wcstoutf8(name, wname, MAX_PATH);
386
	wcstoutf8(name, wname, MAX_PATH);
380
	/* check if file is already open in an editor. If so, close and open again */
387
	/* check if file is already open in an editor. If so, close and open again */
381
	for (i = 0; i < neditors; ++i) {
388
	for (i = 0; i < neditors; ++i) {
382
	    t = getdata(REditors[i]);
389
	    t = getdata(REditors[i]);
383
	    p = getdata(t);
390
	    p = getdata(t);
Line 386... Line 393...
386
		break;
393
		break;
387
	    }
394
	    }
388
	}
395
	}
389
	title = reEnc(name, CE_UTF8, CE_NATIVE, 3);
396
	title = reEnc(name, CE_UTF8, CE_NATIVE, 3);
390
	Rgui_Edit(name, CE_UTF8, title, 0);
397
	Rgui_Edit(name, CE_UTF8, title, 0);
-
 
398
	vmaxset(vmax);
391
    } else show(RConsole);
399
    } else show(RConsole);
392
}
400
}
393
 
401
 
394
void menueditoropen(control m)
402
void menueditoropen(control m)
395
{
403
{