Use webbrowser instead of get_available_screencast_viewer (#745)

* improve opening tutorial

* improve show_tutorial_dialog

* improve show_tutorial_dialog

* remove not implemented

* remove unncessary package QtWebEngineWidgets

* remove commented import of QtWebEngineWidgets
This commit is contained in:
WEN Hao 2021-05-12 00:20:54 +08:00 committed by GitHub
parent c4e8cd8390
commit 91c23d0a9d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 69 additions and 19 deletions

View File

@ -8,6 +8,8 @@ import platform
import re import re
import sys import sys
import subprocess import subprocess
import shutil
import webbrowser as wb
from functools import partial from functools import partial
from collections import defaultdict from collections import defaultdict
@ -83,6 +85,8 @@ class MainWindow(QMainWindow, WindowMixin):
self.settings.load() self.settings.load()
settings = self.settings settings = self.settings
self.os_name = platform.system()
# Load string bundle for i18n # Load string bundle for i18n
self.string_bundle = StringBundle.get_bundle() self.string_bundle = StringBundle.get_bundle()
get_str = lambda str_id: self.string_bundle.get_string(str_id) get_str = lambda str_id: self.string_bundle.get_string(str_id)
@ -104,7 +108,7 @@ class MainWindow(QMainWindow, WindowMixin):
self._no_selection_slot = False self._no_selection_slot = False
self._beginner = True self._beginner = True
self.screencast_viewer = self.get_available_screencast_viewer() self.screencast_viewer = self.get_available_screencast_viewer() # deprecated
self.screencast = "https://youtu.be/p0nR2YsCY_U" self.screencast = "https://youtu.be/p0nR2YsCY_U"
# Load predefined classes to the list # Load predefined classes to the list
@ -286,8 +290,12 @@ class MainWindow(QMainWindow, WindowMixin):
'Ctrl+A', 'hide', get_str('showAllBoxDetail'), 'Ctrl+A', 'hide', get_str('showAllBoxDetail'),
enabled=False) enabled=False)
help = action(get_str('tutorial'), self.show_tutorial_dialog, None, 'help', get_str('tutorialDetail')) # help = action(get_str('tutorial'), self.show_tutorial_dialog, None, 'help', get_str('tutorialDetail'))
# show_info = action(get_str('info'), self.show_info_dialog, None, 'help', get_str('info'))
help_default = action(get_str('tutorialDefault'), self.show_default_tutorial_dialog, None, 'help', get_str('tutorialDetail'))
help_chrome = action(get_str('tutorialChrome'), self.show_chrome_tutorial_dialog, None, 'help', get_str('tutorialDetail'))
show_info = action(get_str('info'), self.show_info_dialog, None, 'help', get_str('info')) show_info = action(get_str('info'), self.show_info_dialog, None, 'help', get_str('info'))
# show_shortcuts = action(get_str('shortcut'), self.show_shortcuts_dialog, None, 'help', get_str('shortcut'))
zoom = QWidgetAction(self) zoom = QWidgetAction(self)
zoom.setDefaultWidget(self.zoom_widget) zoom.setDefaultWidget(self.zoom_widget)
@ -397,7 +405,12 @@ class MainWindow(QMainWindow, WindowMixin):
add_actions(self.menus.file, add_actions(self.menus.file,
(open, open_dir, change_save_dir, open_annotation, copy_prev_bounding, self.menus.recentFiles, save, save_format, save_as, close, reset_all, delete_image, quit)) (open, open_dir, change_save_dir, open_annotation, copy_prev_bounding, self.menus.recentFiles, save, save_format, save_as, close, reset_all, delete_image, quit))
add_actions(self.menus.help, (help, show_info)) if self.os_name == "Windows":
# add_actions(self.menus.help, (help_default, help_chrome, show_info, show_shortcuts))
add_actions(self.menus.help, (help_default, help_chrome, show_info))
else:
# add_actions(self.menus.help, (help_default, show_info, show_shortcuts))
add_actions(self.menus.help, (help_default, show_info))
add_actions(self.menus.view, ( add_actions(self.menus.view, (
self.auto_saving, self.auto_saving,
self.single_class_mode, self.single_class_mode,
@ -635,24 +648,51 @@ class MainWindow(QMainWindow, WindowMixin):
return not self.beginner() return not self.beginner()
def get_available_screencast_viewer(self): def get_available_screencast_viewer(self):
os_name = platform.system() # deprecated, use webbrowser instead
# os_name = platform.system()
if os_name == 'Windows': if self.os_name == 'Windows':
return ['C:\\Program Files\\Internet Explorer\\iexplore.exe'] return ['C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe']
elif os_name == 'Linux': elif self.os_name == 'Linux':
return ['xdg-open'] return ['xdg-open']
elif os_name == 'Darwin': elif self.os_name == 'Darwin':
return ['open'] return ['open']
# Callbacks # # Callbacks #
def show_tutorial_dialog(self): # def show_tutorial_dialog(self):
subprocess.Popen(self.screencast_viewer + [self.screencast]) # subprocess.Popen(self.screencast_viewer + [self.screencast])
def show_tutorial_dialog(self, browser='default'):
if browser.lower() == 'default':
wb.open(self.screencast, new=2)
elif browser.lower() == 'chrome' and self.os_name == 'Windows':
if shutil.which(browser.lower()): # 'chrome' not in wb._browsers in windows
wb.register('chrome', None, wb.BackgroundBrowser('chrome'))
else:
chrome_path="D:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe"
if os.path.isfile(chrome_path):
wb.register('chrome', None, wb.BackgroundBrowser(chrome_path))
try:
wb.get('chrome').open(self.screencast, new=2)
except:
wb.open(self.screencast, new=2)
elif browser.lower() in wb._browsers:
wb.get(browser.lower()).open(self.screencast, new=2)
def show_default_tutorial_dialog(self):
self.show_tutorial_dialog(browser='default')
def show_chrome_tutorial_dialog(self):
self.show_tutorial_dialog(browser='chrome')
def show_info_dialog(self): def show_info_dialog(self):
from libs.__init__ import __version__ from libs.__init__ import __version__
msg = u'Name:{0} \nApp Version:{1} \n{2} '.format(__appname__, __version__, sys.version_info) msg = u'Name:{0} \nApp Version:{1} \n{2} '.format(__appname__, __version__, sys.version_info)
QMessageBox.information(self, u'Information', msg) QMessageBox.information(self, u'Information', msg)
def show_shortcuts_dialog(self):
msg = u'To write....' # TODO
QMessageBox.information(self, u'Shortcuts', msg)
def create_shape(self): def create_shape(self):
assert self.beginner() assert self.beginner()
self.canvas.set_editing(False) self.canvas.set_editing(False)
@ -1428,15 +1468,12 @@ class MainWindow(QMainWindow, WindowMixin):
def delete_image(self): def delete_image(self):
delete_path = self.file_path delete_path = self.file_path
if delete_path is not None: if delete_path is not None:
del self.m_img_list[self.cur_img_idx]
self.file_list_widget.takeItem(self.cur_img_idx)
self.cur_img_idx -= 1 # self.open_next_img will increment idx.
self.img_count -= 1
self.open_next_image() self.open_next_image()
self.cur_img_idx -= 1
self.img_count -= 1
if os.path.exists(delete_path): if os.path.exists(delete_path):
os.remove(delete_path) os.remove(delete_path)
self.import_dir_images(self.last_open_dir)
def reset_all(self): def reset_all(self):
self.settings.reset() self.settings.reset()

View File

@ -1,5 +1,10 @@
#!/usr/bin/env python #!/usr/bin/env python
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
"""
if items were added in files in the resources/strings folder,
then execute "pyrcc5 resources.qrc -o resources.py" in the root directory
and execute "pyrcc5 ../resources.qrc -o resources.py" in the libs directory
"""
import re import re
import os import os
import sys import sys

View File

@ -12,7 +12,10 @@ verifyImgDetail=验证图像
saveDetail=保存标签文件 saveDetail=保存标签文件
openFileDetail=打开图像文件 openFileDetail=打开图像文件
fitWidthDetail=调整宽度适应到窗口宽度 fitWidthDetail=调整宽度适应到窗口宽度
tutorial=YouTube教学 tutorialDefault=YouTube教学(Default Web Browser, Recommended)
tutorialChrome=YouTube教学(Chrome)
info=版本信息
shortcut=快捷键
editLabel=编辑标签 editLabel=编辑标签
openAnnotationDetail=打开标签文件 openAnnotationDetail=打开标签文件
quit=退出 quit=退出

View File

@ -12,7 +12,10 @@ verifyImgDetail=驗證圖像
saveDetail=將標籤存到 saveDetail=將標籤存到
openFileDetail=打開圖像 openFileDetail=打開圖像
fitWidthDetail=調整到窗口寬度 fitWidthDetail=調整到窗口寬度
tutorial=YouTube教學 tutorialDefault=YouTube教學(Default Web Browser, Recommended)
tutorialChrome=YouTube教學(Chrome)
info=版本信息
shortcut=快捷鍵
editLabel=編輯標籤 editLabel=編輯標籤
openAnnotationDetail=打開標籤文件 openAnnotationDetail=打開標籤文件
quit=結束 quit=結束

View File

@ -33,9 +33,11 @@ delBox=Delete RectBox
delBoxDetail=Remove the box delBoxDetail=Remove the box
dupBox=Duplicate RectBox dupBox=Duplicate RectBox
dupBoxDetail=Create a duplicate of the selected box dupBoxDetail=Create a duplicate of the selected box
tutorial=Tutorial tutorialDefault=Tutorial(Default Web Browser, Recommended)
tutorialChrome=Tutorial(Chrome)
tutorialDetail=Show demo tutorialDetail=Show demo
info=Information info=Information
shortcut=Keyboard shortcuts
zoomin=Zoom In zoomin=Zoom In
zoominDetail=Increase zoom level zoominDetail=Increase zoom level
zoomout=Zoom Out zoomout=Zoom Out