Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 16 additions & 20 deletions orangecontrib/imageanalytics/widgets/owimageembedding.py
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down Expand Up @@ -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: ",

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this could be disabled when the above checkbox is not checked.

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,
Expand All @@ -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()
Expand Down Expand Up @@ -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]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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()