FLUID: simplifies filename handling
This commit is contained in:
parent
5da15de174
commit
496289fd35
@ -587,8 +587,7 @@ Fd_Layout_List::Fd_Layout_List()
|
||||
list_capacity_(2),
|
||||
list_is_static_(true),
|
||||
current_suite_(0),
|
||||
current_preset_(0),
|
||||
filename_(NULL)
|
||||
current_preset_(0)
|
||||
{
|
||||
fl_add_symbol("fd_beaker", fd_beaker, 1);
|
||||
fl_add_symbol("fd_user", fd_user, 1);
|
||||
@ -611,7 +610,6 @@ Fd_Layout_List::~Fd_Layout_List() {
|
||||
}
|
||||
::free(list_);
|
||||
}
|
||||
if (filename_) ::free(filename_);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -651,9 +649,9 @@ void Fd_Layout_List::update_menu_labels() {
|
||||
/**
|
||||
Load all user layouts from the FLUID user preferences.
|
||||
*/
|
||||
int Fd_Layout_List::load(const char *filename) {
|
||||
int Fd_Layout_List::load(const Fl_String &filename) {
|
||||
remove_all(FD_STORE_FILE);
|
||||
Fl_Preferences prefs(filename, "layout.fluid.fltk.org", NULL);
|
||||
Fl_Preferences prefs(filename.c_str(), "layout.fluid.fltk.org", NULL);
|
||||
read(prefs, FD_STORE_FILE);
|
||||
return 0;
|
||||
}
|
||||
@ -661,10 +659,9 @@ int Fd_Layout_List::load(const char *filename) {
|
||||
/**
|
||||
Save all user layouts to the FLUID user preferences.
|
||||
*/
|
||||
int Fd_Layout_List::save(const char *filename) {
|
||||
int Fd_Layout_List::save(const Fl_String &filename) {
|
||||
assert(this);
|
||||
assert(filename);
|
||||
Fl_Preferences prefs(filename, "layout.fluid.fltk.org", NULL);
|
||||
Fl_Preferences prefs(filename.c_str(), "layout.fluid.fltk.org", NULL);
|
||||
prefs.clear();
|
||||
write(prefs, FD_STORE_FILE);
|
||||
return 0;
|
||||
|
@ -19,6 +19,8 @@
|
||||
|
||||
#include "Fl_Window_Type.h"
|
||||
|
||||
#include <FL/Fl_String.H>
|
||||
|
||||
struct Fl_Menu_Item;
|
||||
|
||||
extern Fl_Menu_Item main_layout_submenu_[];
|
||||
@ -126,7 +128,7 @@ public:
|
||||
bool list_is_static_;
|
||||
int current_suite_;
|
||||
int current_preset_;
|
||||
char *filename_;
|
||||
Fl_String filename_;
|
||||
public:
|
||||
Fd_Layout_List();
|
||||
~Fd_Layout_List();
|
||||
@ -142,8 +144,8 @@ public:
|
||||
void rename(const char *name);
|
||||
void capacity(int);
|
||||
|
||||
int load(const char *filename);
|
||||
int save(const char *filename);
|
||||
int load(const Fl_String &filename);
|
||||
int save(const Fl_String &filename);
|
||||
void write(Fl_Preferences &prefs, int storage);
|
||||
void read(Fl_Preferences &prefs, int storage);
|
||||
void write(Fd_Project_Writer*);
|
||||
|
@ -482,26 +482,13 @@ static void cb_w_layout_menu_save(Fl_Menu_*, void*) {
|
||||
fnfc.type(Fl_Native_File_Chooser::BROWSE_SAVE_FILE);
|
||||
fnfc.options(Fl_Native_File_Chooser::SAVEAS_CONFIRM | Fl_Native_File_Chooser::USE_FILTER_EXT);
|
||||
fnfc.filter("FLUID Layouts\t*.fll\n");
|
||||
if (g_layout_list.filename_) {
|
||||
char *fn = fl_strdup(g_layout_list.filename_);
|
||||
char *name = (char*)fl_filename_name(fn);
|
||||
if (name > fn) {
|
||||
name[-1] = 0;
|
||||
fnfc.directory(fn);
|
||||
fnfc.preset_file(name);
|
||||
} else if (name) {
|
||||
fnfc.preset_file(name);
|
||||
} else {
|
||||
fnfc.preset_file("");
|
||||
}
|
||||
::free(fn);
|
||||
}
|
||||
Fl_String filename = g_layout_list.filename_;
|
||||
fnfc.directory(fl_filename_path(filename).c_str());
|
||||
fnfc.preset_file(fl_filename_name(filename).c_str());
|
||||
if (fnfc.show() != 0) return;
|
||||
const char *new_filename = fnfc.filename();
|
||||
if (!new_filename) return;
|
||||
if (g_layout_list.filename_)
|
||||
::free(g_layout_list.filename_);
|
||||
g_layout_list.filename_ = fl_strdup(new_filename);
|
||||
g_layout_list.filename_ = new_filename;
|
||||
g_layout_list.save(new_filename);
|
||||
}
|
||||
|
||||
|
@ -116,7 +116,7 @@ Function {make_settings_window()} {open
|
||||
xywh {10 10 320 530} selection_color 12 labelsize 11 labelcolor 255
|
||||
} {
|
||||
Fl_Group {} {
|
||||
label General open
|
||||
label General open selected
|
||||
image {icons/general_64.png} compress_image 1 xywh {10 60 320 480} labelsize 11
|
||||
code0 {o->image()->scale(36, 24);}
|
||||
} {
|
||||
@ -372,7 +372,7 @@ g_layout_list.update_dialogs();}
|
||||
w_layout_menu_delete->activate();
|
||||
}
|
||||
w_layout_menu_storage[suite.storage_]->setonly();
|
||||
}}
|
||||
}} open
|
||||
xywh {296 78 24 24}
|
||||
} {
|
||||
MenuItem w_layout_menu_rename {
|
||||
@ -440,25 +440,13 @@ g_layout_list.update_dialogs();}
|
||||
fnfc.type(Fl_Native_File_Chooser::BROWSE_SAVE_FILE);
|
||||
fnfc.options(Fl_Native_File_Chooser::SAVEAS_CONFIRM | Fl_Native_File_Chooser::USE_FILTER_EXT);
|
||||
fnfc.filter("FLUID Layouts\\t*.fll\\n");
|
||||
if (g_layout_list.filename_) {
|
||||
char *fn = fl_strdup(g_layout_list.filename_);
|
||||
char *name = (char*)fl_filename_name(g_layout_list.filename_);
|
||||
if (name > fn) {
|
||||
name[-1] = 0;
|
||||
fnfc.directory(fn);
|
||||
fnfc.preset_file(name);
|
||||
::free(fn);
|
||||
} else if (name) {
|
||||
fnfc.preset_file(name);
|
||||
::free(fn);
|
||||
}
|
||||
}
|
||||
Fl_String filename = g_layout_list.filename_;
|
||||
fnfc.directory(fl_filename_path(filename).c_str());
|
||||
fnfc.preset_file(fl_filename_name(filename).c_str());
|
||||
if (fnfc.show() != 0) return;
|
||||
const char *new_filename = fnfc.filename();
|
||||
if (!new_filename) return;
|
||||
if (g_layout_list.filename_)
|
||||
::free(g_layout_list.filename_);
|
||||
g_layout_list.filename_ = fl_strdup(new_filename);
|
||||
g_layout_list.filename_ = new_filename;
|
||||
g_layout_list.save(new_filename);}
|
||||
xywh {0 0 31 20} divider
|
||||
code0 {\#include <FL/Fl_Native_File_Chooser.H>}
|
||||
@ -988,7 +976,7 @@ Function {make_shell_window()} {open
|
||||
} {
|
||||
Fl_Button {} {
|
||||
label Clear
|
||||
callback {shell_run_terminal->clear();} selected
|
||||
callback {shell_run_terminal->clear();}
|
||||
xywh {10 395 94 25}
|
||||
}
|
||||
Fl_Box {} {
|
||||
|
@ -1040,9 +1040,7 @@ int write_code_files() {
|
||||
char cname[FL_PATH_MAX+1];
|
||||
char hname[FL_PATH_MAX+1];
|
||||
g_project.basename = fl_filename_name(filename);
|
||||
g_project.basename.resize(FL_PATH_MAX);
|
||||
fl_filename_setext(g_project.basename.data(), FL_PATH_MAX, "");
|
||||
g_project.basename.resize(g_project.basename.strlen());
|
||||
g_project.basename = fl_filename_setext(g_project.basename, "");
|
||||
if (g_project.code_file_name[0] == '.' && strchr(g_project.code_file_name.c_str(), '/') == NULL) {
|
||||
strlcpy(cname, fl_filename_name(filename), FL_PATH_MAX);
|
||||
fl_filename_setext(cname, FL_PATH_MAX, g_project.code_file_name.c_str());
|
||||
@ -1962,9 +1960,7 @@ void update_sourceview_cb(Fl_Button*, void*)
|
||||
sv_strings->scroll(top, 0);
|
||||
} else if (sv_source->visible_r() || sv_header->visible_r()) {
|
||||
g_project.basename = fl_filename_name(sv_source_filename);
|
||||
g_project.basename.resize(FL_PATH_MAX);
|
||||
fl_filename_setext(g_project.basename.data(), FL_PATH_MAX, "");
|
||||
g_project.basename.resize(g_project.basename.strlen());
|
||||
g_project.basename = fl_filename_setext(g_project.basename, "");
|
||||
Fl_String code_file_name_bak = g_project.code_file_name;
|
||||
g_project.code_file_name = sv_source_filename;
|
||||
Fl_String header_file_name_bak = g_project.header_file_name;
|
||||
|
Loading…
x
Reference in New Issue
Block a user