diff --git a/orangecontrib/imageanalytics/widgets/owimageembedding.py b/orangecontrib/imageanalytics/widgets/owimageembedding.py index db1bbc3e..25c42a03 100644 --- a/orangecontrib/imageanalytics/widgets/owimageembedding.py +++ b/orangecontrib/imageanalytics/widgets/owimageembedding.py @@ -98,6 +98,9 @@ class Error(OWWidget.Error): cb_image_attr_current_id = Setting(default=0) cb_embedder_current_id = Setting(default=0) + custom_server = Setting(default=False) + server_url = Setting(default="") + _previous_attr_id = None _previous_embedder_id = None @@ -153,6 +156,15 @@ def _setup_layout(self): widget_box, EMBEDDERS_INFO[current_embedder]["description"] ) + advanced_box = gui.widgetBox(self.controlArea, 'Custom server') + self.use_custom_server_cb = gui.checkBox( + advanced_box, self, 'custom_server', "Use private server", + callback=self.changed_server_url) + self.server_url_box = gui.lineEdit( + advanced_box, self, 'server_url', label="Server URL: ", + tooltip='The url of the server for calculating image embeddings', + orientation=Qt.Horizontal, callback=self.changed_server_url) + self.auto_commit_widget = gui.auto_commit( widget=self.buttonsArea, master=self, @@ -168,26 +180,6 @@ def _setup_layout(self): self.buttonsArea.layout().addWidget(self.cancel_button) self.cancel_button.setDisabled(True) - def set_input_data_summary(self, data): - if data is None: - self.info.set_input_summary(self.info.NoInput) - else: - self.info.set_input_summary( - str(len(data)), f"Data have {len(data)} instances" - ) - - def set_output_data_summary(self, data_emb, data_skip): - if data_emb is None and data_skip is None: - self.info.set_output_summary(self.info.NoOutput) - else: - success = 0 if data_emb is None else len(data_emb) - skip = 0 if data_skip is None else len(data_skip) - self.info.set_output_summary( - f"{success}", - f"{success} images successfully embedded ,\n" - f"{skip} images skipped.", - ) - @Inputs.images def set_data(self, data): self.Warning.clear() @@ -220,6 +212,10 @@ def set_data(self, data): def _cb_image_attr_changed(self): self._cb_changed() + def changed_server_url(self): + self._init_server_connection() + self.server_url_box.setDisabled(not self.custom_server) + def _cb_embedder_changed(self): self.Warning.switched_local_embedder.clear() current_embedder = self.embedders[self.cb_embedder_current_id] diff --git a/orangecontrib/imageanalytics/widgets/tests/test_owimageembedding.py b/orangecontrib/imageanalytics/widgets/tests/test_owimageembedding.py index 1fbb1d2e..e21f23ee 100644 --- a/orangecontrib/imageanalytics/widgets/tests/test_owimageembedding.py +++ b/orangecontrib/imageanalytics/widgets/tests/test_owimageembedding.py @@ -199,6 +199,25 @@ def test_rerun_on_new_data(self): 1, len(self.get_output(self.widget.Outputs.embeddings)) ) + def test_url_changed(self): + """ + This test set if the urls are changed correctly + The test may fail if default url will be changed + """ + w = self.widget + + w.use_custom_server_cb.setChecked(False) + self.assertEqual(w._image_embedder._server_url, w.SERVER_URL_DEFAULT) + + w.use_custom_server_cb.setChecked(True) + w.server_url_box.setText("") + w.changed_server_url() + + w.use_custom_server_cb.setChecked(True) + w.server_url_box.setText(w.SERVER_URL_DEFAULT) + w.changed_server_url() + self.assertEqual(w._image_embedder._server_url, w.SERVER_URL_DEFAULT) + if __name__ == "__main__": unittest.main()