FLUID: simplifies filename handling

This commit is contained in:
Matthias Melcher 2023-08-26 17:58:10 +02:00
parent 5da15de174
commit 496289fd35
5 changed files with 23 additions and 53 deletions

View File

@ -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;

View File

@ -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*);

View File

@ -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);
}

View File

@ -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 {} {

View File

@ -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;