Skip to content

Commit

Permalink
Implement gnc-make-date-option.
Browse files Browse the repository at this point in the history
  • Loading branch information
jralls committed Aug 1, 2021
1 parent 693e966 commit 86a2f15
Showing 1 changed file with 45 additions and 0 deletions.
45 changes: 45 additions & 0 deletions libgnucash/app-utils/gnc-optiondb.i
Expand Up @@ -878,6 +878,51 @@ wrap_unique_ptr(GncOptionDBPtr, GncOptionDB);
}
}

GncOption* gnc_make_date_option(const char* section,
const char* name, const char* key,
const char* doc_string,
const SCM default_val,
RelativeDatePeriodVec& period_set,
bool both)
{

try {
auto absolute{scm_date_absolute(default_val)};
auto ui_type = both ? GncOptionUIType::DATE_BOTH : absolute ?
GncOptionUIType::DATE_ABSOLUTE : GncOptionUIType::DATE_RELATIVE;
if (!period_set.empty())
{
auto retval{new GncOption{GncOptionDateValue(section, name, key,
doc_string, ui_type,
period_set)}};
if (absolute)
retval->set_default_value(scm_absolute_date_to_time64(default_val));
else
retval->set_default_value(scm_relative_date_get_period(default_val));
return retval;
}

if (absolute)
{
auto value{scm_absolute_date_to_time64(default_val)};
auto retval{new GncOption{GncOptionDateValue(section, name, key,
doc_string, ui_type,
value)}};
return retval;
}
auto value{scm_relative_date_get_period(default_val)};
auto retval{new GncOption{GncOptionDateValue(section, name, key,
doc_string, ui_type,
period_set)}};
return retval;
}
catch (const std::invalid_argument& err)
{
std::cerr <<"Date Option, value failed validation, option not creted.\n";
return nullptr;
}
}

GncOption* gnc_make_multichoice_option(const char* section,
const char* name, const char* key,
const char* doc_string,
Expand Down

0 comments on commit 86a2f15

Please sign in to comment.