Skip to content

Commit ac50a98

Browse files
Evgeni Raikhelclaude
andcommitted
fix(grid-overlay): write JSON defaults only on new file or Restore Defaults
- Add `is_new_file()` to config_file: tracks whether the config file was absent at load time; set true when load_from_file returns no data - ux-window.cpp: gate the grid set_nested calls on is_new_file(), so defaults are written only when the JSON file is first created - viewer.cpp: populate grid defaults in temp_cfg when Restore Defaults is pressed, so the section is (re)created on OK/Apply Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 9f945c0 commit ac50a98

4 files changed

Lines changed: 27 additions & 8 deletions

File tree

common/rs-config.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,16 +88,20 @@ config_file& config_file::instance()
8888
config_file::config_file( std::string const & filename )
8989
: _filename( filename )
9090
{
91+
bool file_loaded = false;
9192
try
9293
{
9394
auto j = rsutils::json_config::load_from_file( filename );
9495
if( j.exists() )
96+
{
9597
_j = std::move( j );
98+
file_loaded = true;
99+
}
96100
}
97101
catch(...)
98102
{
99-
100103
}
104+
_is_new_file = !file_loaded;
101105
}
102106

103107
void config_file::save()

common/rs-config.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,13 +78,15 @@ namespace rs2
7878
}
7979

8080
bool contains(const char* key) const;
81-
81+
8282
void save(const char* filename);
8383

8484
void reset();
8585

8686
void remove(const char* key);
8787

88+
bool is_new_file() const { return _is_new_file; }
89+
8890
static config_file& instance();
8991

9092
// Retrieves a value from a nested JSON structure using dot notation
@@ -190,5 +192,6 @@ namespace rs2
190192
std::map<std::string, std::string> _defaults;
191193
std::string _filename;
192194
rsutils::json _j;
195+
bool _is_new_file = false;
193196
};
194197
}

common/ux-window.cpp

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -88,15 +88,16 @@ namespace rs2
8888
config_file::instance().set_default(configurations::viewer::hwlogger_xml, "./HWLoggerEvents.xml");
8989

9090
#ifdef BUILD_VIEWPORT_GRID_OVERLAY
91+
if( config_file::instance().is_new_file() )
9192
{
9293
namespace cfg = configurations::viewer::viewport_grid;
9394
auto& cf = config_file::instance();
94-
cf.set_nested_default( cfg::horizontal_lines, 1 );
95-
cf.set_nested_default( cfg::vertical_lines, 1 );
96-
cf.set_nested_default( cfg::line_width, 1 );
97-
cf.set_nested_default( cfg::line_color_r, 255 );
98-
cf.set_nested_default( cfg::line_color_g, 255 );
99-
cf.set_nested_default( cfg::line_color_b, 255 );
95+
cf.set_nested( cfg::horizontal_lines, 1 );
96+
cf.set_nested( cfg::vertical_lines, 1 );
97+
cf.set_nested( cfg::line_width, 1 );
98+
cf.set_nested( cfg::line_color_r, 255 );
99+
cf.set_nested( cfg::line_color_g, 255 );
100+
cf.set_nested( cfg::line_color_b, 255 );
100101
}
101102
#endif
102103

common/viewer.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2983,6 +2983,17 @@ namespace rs2
29832983
{
29842984
reload_required = true;
29852985
temp_cfg = config_file();
2986+
#ifdef BUILD_VIEWPORT_GRID_OVERLAY
2987+
{
2988+
namespace cfg = configurations::viewer::viewport_grid;
2989+
temp_cfg.set_nested( cfg::horizontal_lines, 1 );
2990+
temp_cfg.set_nested( cfg::vertical_lines, 1 );
2991+
temp_cfg.set_nested( cfg::line_width, 1 );
2992+
temp_cfg.set_nested( cfg::line_color_r, 255 );
2993+
temp_cfg.set_nested( cfg::line_color_g, 255 );
2994+
temp_cfg.set_nested( cfg::line_color_b, 255 );
2995+
}
2996+
#endif
29862997
}
29872998
ImGui::SameLine();
29882999
if (ImGui::Button(" Export Settings "))

0 commit comments

Comments
 (0)