summaryrefslogtreecommitdiff
path: root/fluid
diff options
context:
space:
mode:
authorMatthias Melcher <github@matthiasm.com>2023-08-26 17:58:10 +0200
committerMatthias Melcher <github@matthiasm.com>2023-08-29 01:38:39 +0200
commit496289fd3566c2bcbb229b1cb7280fc6eeadf9e7 (patch)
tree310a057d38b8534feb8899bd625c12bc5f1c9e1a /fluid
parent5da15de17469047d313cd574aaa4bc226bd4cae2 (diff)
FLUID: simplifies filename handling
Diffstat (limited to 'fluid')
-rw-r--r--fluid/Fd_Snap_Action.cxx13
-rw-r--r--fluid/Fd_Snap_Action.h8
-rw-r--r--fluid/alignment_panel.cxx21
-rw-r--r--fluid/alignment_panel.fl26
-rw-r--r--fluid/fluid.cxx8
5 files changed, 23 insertions, 53 deletions
diff --git a/fluid/Fd_Snap_Action.cxx b/fluid/Fd_Snap_Action.cxx
index 401ae856f..c1ac3982b 100644
--- a/fluid/Fd_Snap_Action.cxx
+++ b/fluid/Fd_Snap_Action.cxx
@@ -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;
diff --git a/fluid/Fd_Snap_Action.h b/fluid/Fd_Snap_Action.h
index e0c99b273..1355332a9 100644
--- a/fluid/Fd_Snap_Action.h
+++ b/fluid/Fd_Snap_Action.h
@@ -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*);
diff --git a/fluid/alignment_panel.cxx b/fluid/alignment_panel.cxx
index fa01f5e7e..81cd96b29 100644
--- a/fluid/alignment_panel.cxx
+++ b/fluid/alignment_panel.cxx
@@ -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);
}
diff --git a/fluid/alignment_panel.fl b/fluid/alignment_panel.fl
index c7eea9bd7..1ff9d2c99 100644
--- a/fluid/alignment_panel.fl
+++ b/fluid/alignment_panel.fl
@@ -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 {} {
diff --git a/fluid/fluid.cxx b/fluid/fluid.cxx
index 21ce8093a..aa1f5c1e4 100644
--- a/fluid/fluid.cxx
+++ b/fluid/fluid.cxx
@@ -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;