mirror of
https://github.com/onionshare/onionshare.git
synced 2024-10-01 01:35:40 -04:00
318 lines
10 KiB
Python
318 lines
10 KiB
Python
# -*- coding: utf-8 -*-
|
|
"""
|
|
OnionShare | https://onionshare.org/
|
|
|
|
Copyright (C) 2014-2018 Micah Lee <micah@micahflee.com>
|
|
|
|
This program is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation, either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
"""
|
|
import os
|
|
|
|
from onionshare import strings
|
|
from onionshare.onion import Onion
|
|
|
|
|
|
class GuiCommon:
|
|
"""
|
|
The shared code for all of the OnionShare GUI.
|
|
"""
|
|
|
|
MODE_SHARE = "share"
|
|
MODE_RECEIVE = "receive"
|
|
MODE_WEBSITE = "website"
|
|
MODE_CHAT = "chat"
|
|
|
|
def __init__(self, common, qtapp, local_only):
|
|
self.common = common
|
|
self.qtapp = qtapp
|
|
self.local_only = local_only
|
|
|
|
# Are we running in a flatpak package?
|
|
self.is_flatpak = os.path.exists("/.flatpak-info")
|
|
|
|
# Load settings
|
|
self.common.load_settings()
|
|
|
|
# Load strings
|
|
strings.load_strings(self.common)
|
|
|
|
# Start the Onion
|
|
self.onion = Onion(common)
|
|
|
|
# Lock filename
|
|
self.lock_filename = os.path.join(self.common.build_data_dir(), "lock")
|
|
|
|
# Events filenames
|
|
self.events_dir = os.path.join(self.common.build_data_dir(), "events")
|
|
if not os.path.exists(self.events_dir):
|
|
os.makedirs(self.events_dir, 0o700, True)
|
|
self.events_filename = os.path.join(self.events_dir, "events")
|
|
|
|
self.css = {
|
|
# OnionShareGui styles
|
|
"tab_widget": """
|
|
QTabBar::tab { width: 170px; height: 30px; }
|
|
""",
|
|
"tab_widget_new_tab_button": """
|
|
QPushButton {
|
|
font-weight: bold;
|
|
font-size: 20px;
|
|
}""",
|
|
"mode_new_tab_button": """
|
|
QPushButton {
|
|
font-weight: bold;
|
|
font-size: 30px;
|
|
color: #601f61;
|
|
}""",
|
|
"mode_header_label": """
|
|
QLabel {
|
|
color: #333333;
|
|
font-size: 30px;
|
|
}""",
|
|
"settings_button": """
|
|
QPushButton {
|
|
border: 0;
|
|
border-radius: 0;
|
|
}""",
|
|
"server_status_indicator_label": """
|
|
QLabel {
|
|
font-style: italic;
|
|
color: #666666;
|
|
padding: 2px;
|
|
}""",
|
|
"status_bar": """
|
|
QStatusBar {
|
|
font-style: italic;
|
|
color: #666666;
|
|
}
|
|
QStatusBar::item {
|
|
border: 0px;
|
|
}""",
|
|
# Common styles between modes and their child widgets
|
|
"mode_settings_toggle_advanced": """
|
|
QPushButton {
|
|
color: #3f7fcf;
|
|
text-align: left;
|
|
}
|
|
""",
|
|
"mode_info_label": """
|
|
QLabel {
|
|
font-size: 12px;
|
|
color: #666666;
|
|
}
|
|
""",
|
|
"server_status_url": """
|
|
QLabel {
|
|
background-color: #ffffff;
|
|
color: #000000;
|
|
padding: 10px;
|
|
border: 1px solid #666666;
|
|
font-size: 12px;
|
|
}
|
|
""",
|
|
"server_status_url_buttons": """
|
|
QPushButton {
|
|
color: #3f7fcf;
|
|
}
|
|
""",
|
|
"server_status_button_stopped": """
|
|
QPushButton {
|
|
background-color: #5fa416;
|
|
color: #ffffff;
|
|
padding: 10px 30px 10px 30px;
|
|
border: 0;
|
|
border-radius: 5px;
|
|
}""",
|
|
"server_status_button_working": """
|
|
QPushButton {
|
|
background-color: #4c8211;
|
|
color: #ffffff;
|
|
padding: 10px 30px 10px 30px;
|
|
border: 0;
|
|
border-radius: 5px;
|
|
font-style: italic;
|
|
}""",
|
|
"server_status_button_started": """
|
|
QPushButton {
|
|
background-color: #d0011b;
|
|
color: #ffffff;
|
|
padding: 10px 30px 10px 30px;
|
|
border: 0;
|
|
border-radius: 5px;
|
|
}""",
|
|
"downloads_uploads_empty": """
|
|
QWidget {
|
|
background-color: #ffffff;
|
|
border: 1px solid #999999;
|
|
}
|
|
QWidget QLabel {
|
|
background-color: none;
|
|
border: 0px;
|
|
}
|
|
""",
|
|
"downloads_uploads_empty_text": """
|
|
QLabel {
|
|
color: #999999;
|
|
}""",
|
|
"downloads_uploads_label": """
|
|
QLabel {
|
|
font-weight: bold;
|
|
font-size 14px;
|
|
text-align: center;
|
|
background-color: none;
|
|
border: none;
|
|
}""",
|
|
"downloads_uploads_clear": """
|
|
QPushButton {
|
|
color: #3f7fcf;
|
|
}
|
|
""",
|
|
"download_uploads_indicator": """
|
|
QLabel {
|
|
color: #ffffff;
|
|
background-color: #f44449;
|
|
font-weight: bold;
|
|
font-size: 10px;
|
|
padding: 2px;
|
|
border-radius: 7px;
|
|
text-align: center;
|
|
}""",
|
|
"downloads_uploads_progress_bar": """
|
|
QProgressBar {
|
|
border: 1px solid #4e064f;
|
|
background-color: #ffffff !important;
|
|
text-align: center;
|
|
color: #9b9b9b;
|
|
font-size: 14px;
|
|
}
|
|
QProgressBar::chunk {
|
|
background-color: #4e064f;
|
|
width: 10px;
|
|
}""",
|
|
"history_individual_file_timestamp_label": """
|
|
QLabel {
|
|
color: #666666;
|
|
}""",
|
|
"history_individual_file_status_code_label_2xx": """
|
|
QLabel {
|
|
color: #008800;
|
|
}""",
|
|
"history_individual_file_status_code_label_4xx": """
|
|
QLabel {
|
|
color: #cc0000;
|
|
}""",
|
|
# New tab
|
|
"new_tab_button_image": """
|
|
QLabel {
|
|
padding: 30px;
|
|
}
|
|
""",
|
|
"new_tab_button_text": """
|
|
QLabel {
|
|
border: 1px solid #efeff0;
|
|
border-radius: 4px;
|
|
background-color: #ffffff;
|
|
text-align: center;
|
|
color: #4e0d4e;
|
|
}
|
|
""",
|
|
# Share mode and child widget styles
|
|
"share_delete_all_files_button": """
|
|
QPushButton {
|
|
color: #3f7fcf;
|
|
}
|
|
""",
|
|
"share_zip_progess_bar": """
|
|
QProgressBar {
|
|
border: 1px solid #4e064f;
|
|
background-color: #ffffff !important;
|
|
text-align: center;
|
|
color: #9b9b9b;
|
|
}
|
|
QProgressBar::chunk {
|
|
border: 0px;
|
|
background-color: #4e064f;
|
|
width: 10px;
|
|
}""",
|
|
"share_filesize_warning": """
|
|
QLabel {
|
|
padding: 10px 0;
|
|
font-weight: bold;
|
|
color: #333333;
|
|
}
|
|
""",
|
|
"share_file_selection_drop_here_header_label": """
|
|
QLabel {
|
|
color: #333333;
|
|
font-size: 30px;
|
|
}""",
|
|
"share_file_selection_drop_here_label": """
|
|
QLabel {
|
|
color: #666666;
|
|
}""",
|
|
"share_file_selection_drop_count_label": """
|
|
QLabel {
|
|
color: #ffffff;
|
|
background-color: #f44449;
|
|
font-weight: bold;
|
|
padding: 5px 10px;
|
|
border-radius: 10px;
|
|
}""",
|
|
"share_file_list_drag_enter": """
|
|
FileList {
|
|
border: 3px solid #538ad0;
|
|
}
|
|
""",
|
|
"share_file_list_drag_leave": """
|
|
FileList {
|
|
border: none;
|
|
}
|
|
""",
|
|
"share_file_list_item_size": """
|
|
QLabel {
|
|
color: #666666;
|
|
font-size: 11px;
|
|
}""",
|
|
# Receive mode and child widget styles
|
|
"receive_file": """
|
|
QWidget {
|
|
background-color: #ffffff;
|
|
}
|
|
""",
|
|
"receive_file_size": """
|
|
QLabel {
|
|
color: #666666;
|
|
font-size: 11px;
|
|
}""",
|
|
# Settings dialog
|
|
"settings_version": """
|
|
QLabel {
|
|
color: #666666;
|
|
}""",
|
|
"settings_tor_status": """
|
|
QLabel {
|
|
background-color: #ffffff;
|
|
color: #000000;
|
|
padding: 10px;
|
|
}""",
|
|
"settings_whats_this": """
|
|
QLabel {
|
|
font-size: 12px;
|
|
}""",
|
|
"settings_connect_to_tor": """
|
|
QLabel {
|
|
font-style: italic;
|
|
}""",
|
|
}
|