Skip to content

Commit

Permalink
rework eds_changed in eds-editor
Browse files Browse the repository at this point in the history
  • Loading branch information
ryanpdx committed Feb 11, 2023
1 parent 837002e commit 62b3d47
Show file tree
Hide file tree
Showing 7 changed files with 132 additions and 62 deletions.
13 changes: 8 additions & 5 deletions eds_utils/eds_editor/eds_notebook.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,8 @@ def __init__(self, file_path: str, parent_window: Gtk.Window):
self.tpdo_page = PDOPage(self.eds, self.parent_window, 'TPDO')
self.dc_page = DeviceCommissioningPage(self.eds)

self._eds_changed_reset()

self.append_page(self.gi_page, Gtk.Label.new('General Info'))
self.append_page(self.od_page, Gtk.Label.new('Object Dictionary'))
self.append_page(self.rpdo_page, Gtk.Label.new('RPDOs'))
Expand Down Expand Up @@ -72,7 +74,7 @@ def _eds_changed_reset(self):
def save_eds(self, file_path=''):
'''Save the eds file'''

if file_path:
if not file_path:
file_path = self.file_path

write_eds(self.eds, file_path)
Expand All @@ -88,7 +90,7 @@ def save_eds(self, file_path=''):
def _save_eds_tmp(self):
'''Save a tempory eds file'''

if self.eds_changed: # only save a temp if something has changed
if self.eds_has_changed: # only save a temp if something has changed
write_eds(self.eds, self.tmp_file_path)

self._eds_changed_reset()
Expand All @@ -102,12 +104,13 @@ def eds_file(self) -> str:
return basename(self.file_path)

@property
def eds_changed(self) -> bool:
def eds_has_changed(self) -> bool:
'''bool: Flag if the eds file has change and not been saved.'''

ret = False
if True in [self.gi_page.eds_changed, self.od_page.eds_changed, self.rpdo_page.eds_changed,
self.tpdo_page.eds_changed, self.dc_page.eds_changed]:
if True in [self.gi_page.eds_has_changed, self.od_page.eds_has_changed,
self.rpdo_page.eds_has_changed, self.tpdo_page.eds_has_changed,
self.dc_page.eds_has_changed]:
ret = True

return ret
35 changes: 21 additions & 14 deletions eds_utils/eds_editor/pages/device_commissioning_page.py
Original file line number Diff line number Diff line change
Expand Up @@ -93,32 +93,39 @@ def __init__(self, eds: EDS):
self.refresh()

def _on_node_name_changed(self, entry: Gtk.Entry):
self._eds.device_commissioning.node_name = entry.get_text()
self._eds_changed = True
if self._eds.device_commissioning.node_name != entry.get_text():
self._eds.device_commissioning.node_name = entry.get_text()
self.eds_changed()

def _on_node_id_changed(self, spin: Gtk.SpinButton):
self._eds.device_commissioning.node_id = spin.get_value()
self._eds_changed = True
if self._eds.device_commissioning.node_id != spin.get_value():
self._eds.device_commissioning.node_id = spin.get_value()
self.eds_changed()

def _on_network_name_changed(self, entry: Gtk.Entry):
self._eds.device_commissioning.network_name = entry.get_text()
self._eds_changed = True
if self._eds.device_commissioning.network_name != entry.get_text():
self._eds.device_commissioning.network_name = entry.get_text()
self.eds_changed()

def _on_net_number_changed(self, spin: Gtk.SpinButton):
self._eds.device_commissioning.net_number = spin.get_value()
self._eds_changed = True
if self._eds.device_commissioning.net_number != spin.get_value():
self._eds.device_commissioning.net_number = spin.get_value()
self.eds_changed()

def _on_baud_rate_changed(self, check: Gtk.CheckButton):
self._eds.device_commissioning.baud_rate = int(check.get_label()[:-5])
self._eds_changed = True
if self._eds.device_commissioning.baud_rate != int(check.get_label()[:-5]):
self._eds.device_commissioning.baud_rate = int(check.get_label()[:-5])
self.eds_changed()

def _on_lss_serial_number_changed(self, spin: Gtk.SpinButton):
self._eds.device_commissioning.lss_serialnumber = spin.get_value()
self._eds_changed = True
if self._eds.device_commissioning.lss_serialnumber != spin.get_value():
self._eds.device_commissioning.lss_serialnumber = spin.get_value()
self.eds_changed()

def _on_canopen_manager_changed(self, switch: Gtk.Switch):
self._eds.device_commissioning.canopen_manager = switch.get_state()
self._eds_changed = True
if self._eds.device_commissioning.canopen_manager != switch.get_state():
self._eds.device_commissioning.canopen_manager = switch.get_state()
self.eds_changed()

def refresh(self):
'''Refresh the page'''
Expand Down
56 changes: 42 additions & 14 deletions eds_utils/eds_editor/pages/general_info_page.py
Original file line number Diff line number Diff line change
Expand Up @@ -259,43 +259,71 @@ def on_now_button_clicked(self, button: Gtk.Button):
self._modification_dt.set_text(datetime.now().strftime(self.DT_FORMAT))

def _on_file_version_changed(self, spin: Gtk.SpinButton):
self._eds.file_info = spin.get_value()
if self._eds.file_info != spin.get_value():
self._eds.file_info = spin.get_value()
self.eds_changed()

def _on_file_revision_changed(self, spin: Gtk.SpinButton):
self._eds.file_revision = spin.get_value()
if self._eds.file_revision != spin.get_value():
self._eds.file_revision = spin.get_value()
self.eds_changed()

def _on_description_changed(self, entry: Gtk.Entry):
self._eds.file_info.description = entry.get_text()
if self._eds.file_info.description != entry.get_text():
self._eds.file_info.description = entry.get_text()
self.eds_changed()

def _on_vendor_name_changed(self, entry: Gtk.Entry):
self._eds.device_info.vendor_name = entry.get_text()
if self._eds.device_info.vendor_name != entry.get_text():
self._eds.device_info.vendor_name = entry.get_text()
self.eds_changed()

def _on_vendor_number_changed(self, spin: Gtk.SpinButton):
self._eds.device_info.vendor_number = spin.get_value()
if self._eds.device_info.vendor_number != spin.get_value():
self._eds.device_info.vendor_number = spin.get_value()
self.eds_changed()

def _on_product_name_changed(self, entry: Gtk.Entry):
self._eds.device_info.product_name = entry.get_text()
if self._eds.device_info.product_name != entry.get_text():
self._eds.device_info.product_name = entry.get_text()
self.eds_changed()

def _on_product_number_changed(self, spin: Gtk.SpinButton):
self._eds.device_info.product_number = spin.get_value()
if self._eds.device_info.product_number != spin.get_value():
self._eds.device_info.product_number = spin.get_value()
self.eds_changed()

def _on_revision_number_changed(self, spin: Gtk.SpinButton):
self._eds.device_info.revision_number = spin.get_value()
if self._eds.device_info.revision_number != spin.get_value():
self._eds.device_info.revision_number = spin.get_value()
self.eds_changed()

def _on_order_code_changed(self, entry: Gtk.Entry):
self._eds.device_info.order_code = entry.get_text()
if self._eds.device_info.order_code != entry.get_text():
self._eds.device_info.order_code = entry.get_text()
self.eds_changed()

def _on_simple_boot_up_master_changed(self, switch: Gtk.Switch):
self._eds.device_info.simple_boot_up_master = switch.get_value()
if self._eds.device_info.simple_boot_up_master != switch.get_value():
self._eds.device_info.simple_boot_up_master = switch.get_value()
self.eds_changed()

def _on_simple_boot_up_slave_changed(self, switch: Gtk.Switch):
self._eds.device_info.simple_boot_up_slave = switch.get_value()
if self._eds.device_info.simple_boot_up_slave != switch.get_value():
self._eds.device_info.simple_boot_up_slave = switch.get_value()
self.eds_changed()

def _on_dynamic_channel_support_changed(self, switch: Gtk.Switch):
self._eds.device_info.dynamic_channel_supperted = switch.get_value()
if self._eds.device_info.dynamic_channel_supperted != switch.get_value():
self._eds.device_info.dynamic_channel_supperted = switch.get_value()
self.eds_changed()

def _on_group_messaging_changed(self, switch: Gtk.Switch):
self._eds.device_info.group_messaging = switch.get_value()
if self._eds.device_info.group_messaging != switch.get_value():
self._eds.device_info.group_messaging = switch.get_value()
self.eds_changed()

def _on_lss_supported_changed(self, switch: Gtk.Switch):
self._eds.device_info.lss_supported = switch.get_value()
if self._eds.device_info.lss_supported != switch.get_value():
self._eds.device_info.lss_supported = switch.get_value()
self.eds_changed()
70 changes: 44 additions & 26 deletions eds_utils/eds_editor/pages/object_dictionary_page.py
Original file line number Diff line number Diff line change
Expand Up @@ -198,45 +198,63 @@ def __init__(self, eds: EDS, parent_window: Gtk.Window):
self.refresh()

def _on_parametere_name_changed(self, entry: Gtk.Entry):
if self._selected_obj:
if self._selected_obj and self._selected_obj.parameter_name != entry.get_text():
self._selected_obj.parameter_name = entry.get_text()
self.eds_changed()

def _on_obj_denotation_changed(self, entry: Gtk.Entry):
if self._selected_obj:
if self._selected_obj and self._selected_obj.denotation != entry.get_text():
self._selected_obj.denotation = entry.get_text()
self.eds_changed()

def _on_obj_access_type_changed(self, dropdown: Gtk.DropDown):
if self._selected_obj:
self._selected_obj.access_type = AccessType[dropdown.get_value()]
access_type = AccessType[dropdown.get_value()]
if self._selected_obj and self._selected_obj.access_type != access_type:
self._selected_obj.access_type = access_type
self.eds_changed()

def _on_obj_comment_changed(self, buffer: Gtk.TextBuffer):
if self._selected_obj:
self._selected_obj.comments = buffer.get_text(buffer.get_start_iter(),
buffer.get_end_iter(), False)
text = buffer.get_text(buffer.get_start_iter(), buffer.get_end_iter(), False)
if self._selected_obj and self._selected_obj.comments != text:
self._selected_obj.comments = text
self.eds_changed()

def _on_obj_data_type_changed(self, dropdown: Gtk.DropDown):
if self._selected_obj:
self._selected_obj.data_type = DataType[dropdown.get_value()]
data_type = DataType[dropdown.get_value()]
if self._selected_obj and self._selected_obj.data_type != data_type:
self._selected_obj.data_type = data_type
self.eds_changed()

def _on_obj_pdo_mapping_changed(self, switch: Gtk.Switch):
if self._selected_obj:
self._selected_obj.pdo_mapping = switch.get_state()
state = switch.get_state()
if self._selected_obj and self._selected_obj.pdo_mapping != state:
self._selected_obj.pdo_mapping = state
self.eds_changed()

def _on_obj_default_value_changed(self, entry: Gtk.Entry):
if self._selected_obj:
self._selected_obj.default_value = entry.get_text()
text = entry.get_text()
if self._selected_obj and self._selected_obj.default_value != text:
self._selected_obj.default_value = text
self.eds_changed()

def _on_obj_low_limit_changed(self, entry: Gtk.Entry):
if self._selected_obj:
self._selected_obj.low_limit = entry.get_text()
text = entry.get_text()
if self._selected_obj and self._selected_obj.low_limit != text:
self._selected_obj.low_limit = text
self.eds_changed()

def _on_obj_high_limit_changed(self, entry: Gtk.Entry):
if self._selected_obj:
self._selected_obj.high_limit = entry.get_text()
text = entry.get_text()
if self._selected_obj and self._selected_obj.high_limit != text:
self._selected_obj.high_limit = text
self.eds_changed()

def _on_obj_storage_loc_changed(self, dropdown: Gtk.DropDown):
if self._selected_obj:
self._selected_obj.storage_location = self._eds.storage_location[dropdown.get_value()]
if self._eds.storage_locations:
storage_location = self._eds.storage_locations[dropdown.get_value()]
if self._selected_obj and self._selected_obj.storage_location != storage_location:
self._selected_obj.storage_location = storage_location
self.eds_changed()

def on_search_entry(self, entry):
'''Callback on search filter entry for parameter names'''
Expand Down Expand Up @@ -394,7 +412,7 @@ def add_treeview_obj(self, index: int, subindex: int, name: str):
The name of the new object.
'''

self._eds_changed = True
self.eds_changed()
index_str = f'0x{index:X}'

index_found = False
Expand Down Expand Up @@ -450,7 +468,7 @@ def remove_treeview_obj(self, index: int, subindex: int):
The subindex of the object to remove.
'''

self._eds_changed = True
self.eds_changed()

for i in self._indexes_store:
if index == str2int(i[0]):
Expand Down Expand Up @@ -478,7 +496,7 @@ def update_obj(self, index: int, subindex: int, name: str):
The name of the new object.
'''

self._eds_changed = True
self.eds_changed()

for i in self._indexes_store:
if index == str2int(i[0]):
Expand All @@ -502,7 +520,7 @@ def add_treeview_object_on_click(self, button: Gtk.Button):
def add_treeview_object_response(self, dialog: Gtk.Dialog, response: int):
'''Parses the response to the add object dialog.'''

self._eds_changed = True
self.eds_changed()

new_index, new_subindex, new_obj_type = dialog.get_response()

Expand Down Expand Up @@ -564,7 +582,7 @@ def remove_treeview_object_on_click(self, button: Gtk.Button):
if self._selected_index not in self._eds.indexes:
return # nothing to delete

self._eds_changed = True
self.eds_changed()

# remove from od
if self._selected_subindex is None:
Expand All @@ -586,7 +604,7 @@ def copy_object_on_click(self, button: Gtk.Button):
def copy_treeview_object_response(self, dialog: Gtk.Dialog, response: int):
'''Parses the response to the copy object dialog..'''

self._eds_changed = True
self.eds_changed()

new_index, new_subindex = dialog.get_response()

Expand Down Expand Up @@ -624,7 +642,7 @@ def move_object_on_click(self, button: Gtk.Button):
def move_treeview_object_response(self, dialog: Gtk.Dialog, response: int):
'''Parses the response to the move object dialog..'''

self._eds_changed = True
self.eds_changed()

new_index, new_subindex = dialog.get_response()

Expand Down
7 changes: 6 additions & 1 deletion eds_utils/eds_editor/pages/page.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,16 @@ def __init__(self, eds: EDS):
self._eds_changed = False

@property
def eds_changed(self) -> bool:
def eds_has_changed(self) -> bool:
'''bool: a flag to see if eds info has changed.'''

return self._eds_changed

def eds_changed(self):
'''Set the eds_changed flag'''

self._eds_changed = True

def eds_changed_reset(self):
'''Reset the eds changed flag.'''

Expand Down
Loading

0 comments on commit 62b3d47

Please sign in to comment.