You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

ovdCAboutScenarioDialog.cpp 6.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. #include "ovdCAboutScenarioDialog.h"
  2. namespace OpenViBE {
  3. namespace Designer {
  4. static void buttonMetaboxReset_clicked(GtkWidget* /*widget*/, gpointer data) { gtk_entry_set_text(GTK_ENTRY(data), CIdentifier::random().str().c_str()); }
  5. bool CAboutScenarioDialog::run()
  6. {
  7. GtkBuilder* interface = gtk_builder_new(); // glade_xml_new(m_guiFilename.toASCIIString(), "scenario_about", nullptr);
  8. gtk_builder_add_from_file(interface, m_guiFilename.toASCIIString(), nullptr);
  9. gtk_builder_connect_signals(interface, nullptr);
  10. GtkWidget* dialog = GTK_WIDGET(gtk_builder_get_object(interface, "scenario_about"));
  11. GtkWidget* name = GTK_WIDGET(gtk_builder_get_object(interface, "scenario_about-entry_name"));
  12. GtkWidget* authorName = GTK_WIDGET(gtk_builder_get_object(interface, "scenario_about-entry_author_name"));
  13. GtkWidget* authorCompanyName = GTK_WIDGET(gtk_builder_get_object(interface, "scenario_about-entry_company_name"));
  14. GtkWidget* category = GTK_WIDGET(gtk_builder_get_object(interface, "scenario_about-entry_category"));
  15. GtkWidget* version = GTK_WIDGET(gtk_builder_get_object(interface, "scenario_about-entry_version"));
  16. GtkWidget* documentationPage = GTK_WIDGET(gtk_builder_get_object(interface, "scenario_about-entry_documentation_page"));
  17. GtkWidget* addedSoftwareVersion = GTK_WIDGET(gtk_builder_get_object(interface, "scenario_about-entry_added_software_version"));
  18. GtkWidget* updatedSoftwareVersion = GTK_WIDGET(gtk_builder_get_object(interface, "scenario_about-entry_update_software_version"));
  19. GtkWidget* metaboxId = GTK_WIDGET(gtk_builder_get_object(interface, "scenario_about-entry_metabox_id"));
  20. GtkWidget* resetMetaboxId = GTK_WIDGET(gtk_builder_get_object(interface, "scenario_about-button_reset_metabox_id"));
  21. const gulong signalHandlerId = g_signal_connect(G_OBJECT(resetMetaboxId), "clicked", G_CALLBACK(buttonMetaboxReset_clicked), metaboxId);
  22. GtkWidget* shortDesc = GTK_WIDGET(gtk_builder_get_object(interface, "scenario_about-textview_short_description"));
  23. GtkWidget* detailedDesc = GTK_WIDGET(gtk_builder_get_object(interface, "scenario_about-textview_detailed_description"));
  24. g_object_unref(interface);
  25. gtk_entry_set_text(GTK_ENTRY(name), m_scenario.getAttributeValue(OV_AttributeId_Scenario_Name).toASCIIString());
  26. gtk_entry_set_text(GTK_ENTRY(authorName), m_scenario.getAttributeValue(OV_AttributeId_Scenario_Author).toASCIIString());
  27. gtk_entry_set_text(GTK_ENTRY(authorCompanyName), m_scenario.getAttributeValue(OV_AttributeId_Scenario_Company).toASCIIString());
  28. gtk_entry_set_text(GTK_ENTRY(category), m_scenario.getAttributeValue(OV_AttributeId_Scenario_Category).toASCIIString());
  29. gtk_entry_set_text(GTK_ENTRY(version), m_scenario.getAttributeValue(OV_AttributeId_Scenario_Version).toASCIIString());
  30. gtk_entry_set_text(GTK_ENTRY(documentationPage), m_scenario.getAttributeValue(OV_AttributeId_Scenario_DocumentationPage).toASCIIString());
  31. gtk_entry_set_text(GTK_ENTRY(addedSoftwareVersion), m_scenario.getAttributeValue(OV_AttributeId_Scenario_AddedSoftwareVersion).toASCIIString());
  32. gtk_entry_set_text(GTK_ENTRY(updatedSoftwareVersion), m_scenario.getAttributeValue(OV_AttributeId_Scenario_UpdatedSoftwareVersion).toASCIIString());
  33. if (m_scenario.isMetabox()) { gtk_entry_set_text(GTK_ENTRY(metaboxId), m_scenario.getAttributeValue(OVP_AttributeId_Metabox_ID).toASCIIString()); }
  34. else
  35. {
  36. gtk_widget_set_sensitive(metaboxId, FALSE);
  37. gtk_widget_set_sensitive(resetMetaboxId, FALSE);
  38. }
  39. GtkTextBuffer* shortDescBuffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(shortDesc));
  40. gtk_text_buffer_set_text(shortDescBuffer, m_scenario.getAttributeValue(OV_AttributeId_Scenario_ShortDescription).toASCIIString(), -1);
  41. GtkTextBuffer* detailedDescBuffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(detailedDesc));
  42. gtk_text_buffer_set_text(detailedDescBuffer, m_scenario.getAttributeValue(OV_AttributeId_Scenario_DetailedDescription).toASCIIString(), -1);
  43. gtk_dialog_run(GTK_DIALOG(dialog));
  44. g_signal_handler_disconnect(G_OBJECT(resetMetaboxId), signalHandlerId);
  45. m_scenario.setAttributeValue(OV_AttributeId_Scenario_Name, gtk_entry_get_text(GTK_ENTRY(name)));
  46. m_scenario.setAttributeValue(OV_AttributeId_Scenario_Author, gtk_entry_get_text(GTK_ENTRY(authorName)));
  47. m_scenario.setAttributeValue(OV_AttributeId_Scenario_Company, gtk_entry_get_text(GTK_ENTRY(authorCompanyName)));
  48. m_scenario.setAttributeValue(OV_AttributeId_Scenario_Category, gtk_entry_get_text(GTK_ENTRY(category)));
  49. m_scenario.setAttributeValue(OV_AttributeId_Scenario_Version, gtk_entry_get_text(GTK_ENTRY(version)));
  50. m_scenario.setAttributeValue(OV_AttributeId_Scenario_DocumentationPage, gtk_entry_get_text(GTK_ENTRY(documentationPage)));
  51. m_scenario.setAttributeValue(OV_AttributeId_Scenario_AddedSoftwareVersion, gtk_entry_get_text(GTK_ENTRY(addedSoftwareVersion)));
  52. m_scenario.setAttributeValue(OV_AttributeId_Scenario_UpdatedSoftwareVersion, gtk_entry_get_text(GTK_ENTRY(updatedSoftwareVersion)));
  53. if (m_scenario.isMetabox())
  54. {
  55. const CString id(gtk_entry_get_text(GTK_ENTRY(metaboxId)));
  56. CIdentifier tmp;
  57. if (!tmp.fromString(id))
  58. {
  59. m_kernelCtx.getLogManager() << Kernel::LogLevel_Error << "Invalid identifier " << id
  60. << " is not in the \"(0x[0-9a-f]{1-8}, 0x[0-9a-f]{1-8})\" format. ";
  61. m_kernelCtx.getLogManager() << "Reverting to " << m_scenario.getAttributeValue(OVP_AttributeId_Metabox_ID).toASCIIString() << ".\n";
  62. }
  63. else { m_scenario.setAttributeValue(OVP_AttributeId_Metabox_ID, id); }
  64. }
  65. GtkTextIter start, end;
  66. gtk_text_buffer_get_start_iter(shortDescBuffer, &start);
  67. gtk_text_buffer_get_end_iter(shortDescBuffer, &end);
  68. m_scenario.setAttributeValue(OV_AttributeId_Scenario_ShortDescription,
  69. gtk_text_buffer_get_text(gtk_text_view_get_buffer(GTK_TEXT_VIEW(shortDesc)), &start, &end, FALSE));
  70. gtk_text_buffer_get_start_iter(detailedDescBuffer, &start);
  71. gtk_text_buffer_get_end_iter(detailedDescBuffer, &end);
  72. m_scenario.setAttributeValue(OV_AttributeId_Scenario_DetailedDescription,
  73. gtk_text_buffer_get_text(gtk_text_view_get_buffer(GTK_TEXT_VIEW(detailedDesc)), &start, &end, FALSE));
  74. gtk_widget_destroy(dialog);
  75. return true;
  76. }
  77. } // namespace Designer
  78. } // namespace OpenViBE