Skip to content

Commit

Permalink
refinement refs #15267
Browse files Browse the repository at this point in the history
  • Loading branch information
namdre committed Jul 30, 2024
1 parent f8cf9c4 commit 6b59964
Show file tree
Hide file tree
Showing 4 changed files with 95 additions and 1 deletion.
2 changes: 2 additions & 0 deletions src/netedit/dialogs/options/GNEOptionsDialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -339,6 +339,8 @@ GNEOptionsDialog::GNEOptionsDialog(GNEApplicationWindow* GNEApp, GUIIcon icon, O
// continue depending of type
if (type == "STR") {
myInputOptionEntries.push_back(new GNEOptionsDialogElements::InputString(this, myEntriesFrame, topic, entry, description, defaultValue));
} else if (type == "TIME") {
myInputOptionEntries.push_back(new GNEOptionsDialogElements::InputTime(this, myEntriesFrame, topic, entry, description, defaultValue));
} else if ((type == "FILE") || (type == "NETWORK") || (type == "ADDITIONAL") || (type == "ROUTE") || (type == "DATA")) {
myInputOptionEntries.push_back(new GNEOptionsDialogElements::InputFilename(this, myEntriesFrame, topic, entry, description, defaultValue));
} else if (type == "BOOL") {
Expand Down
61 changes: 61 additions & 0 deletions src/netedit/dialogs/options/GNEOptionsDialogElements.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -449,6 +449,67 @@ GNEOptionsDialogElements::InputFloat::parseFloat(const std::string& value) const
}
}

// ---------------------------------------------------------------------------
// GNEOptionsDialogElements::InputTime - methods
// ---------------------------------------------------------------------------

GNEOptionsDialogElements::InputTime::InputTime(GNEOptionsDialog* GUIDialogOptions, FXComposite* parent, const std::string& topic,
const std::string& name, const std::string& description, const std::string& defaultValue) :
InputOption(GUIDialogOptions, parent, topic, name, description, parseTime(defaultValue)) {
myTimeTextField = new FXTextField(myContentFrame, GUIDesignTextFieldNCol, this, MID_GNE_SET_ATTRIBUTE, GUIDesignTextField);
myTimeTextField->setText(toString(myGUIDialogOptions->myOptionsContainer.getString(name)).c_str());
updateOption();
}


void
GNEOptionsDialogElements::InputTime::updateOption() {
myTimeTextField->setText(toString(myGUIDialogOptions->myOptionsContainer.getString(myName)).c_str());
}


void
GNEOptionsDialogElements::InputTime::restoreOption() {
myTimeTextField->setText(toString(myGUIDialogOptions->myOriginalOptionsContainer.getString(myName)).c_str());
}


long
GNEOptionsDialogElements::InputTime::onCmdSetOption(FXObject*, FXSelector, void*) {
// avoid empty values
if (myTimeTextField->getText().empty()) {
myTimeTextField->setText(myDefaultValue.c_str());
} else {
myGUIDialogOptions->myOptionsContainer.resetWritable();
myGUIDialogOptions->myOptionsContainer.set(myName, myTimeTextField->getText().text());
myGUIDialogOptions->myOptionsModified = true;
}
return 1;
}


long
GNEOptionsDialogElements::InputTime::onCmdResetOption(FXObject*, FXSelector, void*) {
myTimeTextField->setText(myDefaultValue.c_str());
return 1;
}


std::string
GNEOptionsDialogElements::InputTime::getValue() const {
return myTimeTextField->getText().text();
}


std::string
GNEOptionsDialogElements::InputTime::parseTime(const std::string& value) const {
try {
return time2string(string2time(value));
} catch (...) {
return value;
}
}

// ---------------------------------------------------------------------------
// GNEOptionsDialogElements::InputFilename - methods
// ---------------------------------------------------------------------------
Expand Down
31 changes: 31 additions & 0 deletions src/netedit/dialogs/options/GNEOptionsDialogElements.h
Original file line number Diff line number Diff line change
Expand Up @@ -281,6 +281,37 @@ class GNEOptionsDialogElements {
FXTextField* myFloatTextField = nullptr;
};

/// @brief input float
class InputTime : public InputOption {

public:
/// @brief constructor
InputTime(GNEOptionsDialog* GUIDialogOptions, FXComposite* parent, const std::string& topic,
const std::string& name, const std::string& description, const std::string& defaultValue);

/// @brief update option
void updateOption();

/// @brief restore option
void restoreOption();

/// @brief called when user set value in textField/button/checkBox
long onCmdSetOption(FXObject*, FXSelector, void*);

/// @brief called when user press reset button
long onCmdResetOption(FXObject*, FXSelector, void*);

private:
/// @brief get value
std::string getValue() const;

/// @brief parse float xx to xx.00
std::string parseTime(const std::string& value) const;

/// @brief text field
FXTextField* myTimeTextField = nullptr;
};

/// @brief input filename
class InputFilename : public InputOption {
/// @brief FOX-declaration
Expand Down
2 changes: 1 addition & 1 deletion src/utils/handlers/TemplateHandler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,7 @@ TemplateHandler::addOption(std::string value, const std::string& synonymes, cons
if ((type == "STR") || (type == "string")) {
option = new Option_String(value);
} else if ((type == "TIME") || (type == "time")) {
option = new Option_String(value);
option = new Option_String(value, "TIME");
} else if ((type == "INT") || (type == "int")) {
option = new Option_Integer(0);
if (value.empty()) {
Expand Down

0 comments on commit 6b59964

Please sign in to comment.