516 lines
24 KiB
Python
516 lines
24 KiB
Python
from PyQt5.QtWidgets import (QWidget, QVBoxLayout, QHBoxLayout, QGridLayout, QLabel, QLineEdit,
|
|
QPushButton, QTabWidget, QCheckBox, QFrame, QDialog, QDialogButtonBox,
|
|
QFontDialog, QMenuBar, QAction, QMessageBox, QToolBar, QFileDialog, QInputDialog)
|
|
from PyQt5.QtCore import Qt
|
|
|
|
from PyQt5.Qsci import QsciScintilla, QsciLexerPython
|
|
from qfluentwidgets import CalendarPicker, PrimaryPushButton
|
|
from qfluentwidgets import FluentIcon as FIF
|
|
|
|
class BusinessSettings(QDialog):
|
|
def __init__(self, current_api_keys, config_manager, max_business_count=5, parent=None):
|
|
super().__init__(parent)
|
|
self.setMinimumSize(900, 900) # 설정된 최소 크기
|
|
self.setWindowTitle("상세 사업자 설정")
|
|
|
|
self.config_manager = config_manager
|
|
self.max_business_count = max_business_count
|
|
self.etc_number = 5
|
|
self.current_api_keys = current_api_keys
|
|
self.business_info = [{} for _ in range(max_business_count)]
|
|
self.market_info = [{} for _ in range(max_business_count)]
|
|
# self.selected_markets = {market: True for market in ["쿠팡", "스마트스토어", "ESM", "11번가-국내", "11번가-글로벌", "롯데온", "인터파크", "위메프", "옥션1.0"]}
|
|
self.selected_markets = {market: True for market in self.config_manager.valid_markets}
|
|
|
|
self.tab_layouts = []
|
|
self.business_info_layouts = []
|
|
self.market_info_widgets = []
|
|
self.alias_edits = []
|
|
self.reg_number_edits = []
|
|
self.name_edits = []
|
|
self.reg_date_edits = []
|
|
self.phone_edits = []
|
|
self.etc_titles = [[] for _ in range(max_business_count)]
|
|
self.etc_contexts = [[] for _ in range(max_business_count)]
|
|
self.market_checkboxes = [{} for _ in range(max_business_count)]
|
|
self.market_tabs = [[] for _ in range(max_business_count)]
|
|
|
|
self.initUI()
|
|
|
|
self.changeButton_Text()
|
|
self.load_business_info() # Load business info on initialization
|
|
|
|
def initUI(self):
|
|
self.setLayout(QVBoxLayout())
|
|
|
|
# 상단 버튼 레이아웃
|
|
top_layout = QHBoxLayout()
|
|
top_frame = QFrame(self)
|
|
top_frame.setLayout(top_layout)
|
|
top_frame.setFrameShape(QFrame.StyledPanel)
|
|
top_frame.setFixedHeight(int(self.height() * 0.1))
|
|
|
|
self.save_button = QPushButton("저장")
|
|
self.save_button.clicked.connect(self.save_business_info) # Connect save button to method
|
|
|
|
self.refersh_button = QPushButton("새로고침")
|
|
self.refersh_button.clicked.connect(lambda: self.load_business_info())
|
|
self.cancel_button = QPushButton("취소")
|
|
self.cancel_button.clicked.connect(lambda: self.reject())
|
|
self.setup_market_button = QPushButton("설정마켓")
|
|
self.setup_market_button.clicked.connect(self.show_market_setup)
|
|
|
|
top_layout.addWidget(self.save_button)
|
|
top_layout.addWidget(self.refersh_button)
|
|
top_layout.addWidget(self.cancel_button)
|
|
top_layout.addWidget(self.setup_market_button)
|
|
self.layout().addWidget(top_frame)
|
|
|
|
# QTabWidget 설정
|
|
# 내용 레이아웃
|
|
self.tab_widget = QTabWidget()
|
|
self.tab_widget.setTabsClosable(False)
|
|
self.layout().addWidget(self.tab_widget)
|
|
|
|
for i in range(self.max_business_count):
|
|
tab = QWidget()
|
|
self.tab_layouts.append(QVBoxLayout())
|
|
|
|
self.business_info_layouts.append(self.create_business_info_layout(i))
|
|
self.market_info_widgets.append(self.create_market_info_widget(i))
|
|
print(f"객체접근 테스트 Init: {self.alias_edits[0].text()}")
|
|
|
|
self.tab_layouts[i].addLayout(self.business_info_layouts[i])
|
|
self.tab_layouts[i].addWidget(self.market_info_widgets[i])
|
|
tab.setLayout(self.tab_layouts[i])
|
|
|
|
self.tab_layouts[i].setStretch(0, 3)
|
|
self.tab_layouts[i].setStretch(1, 2)
|
|
self.tab_widget.addTab(tab, f"{i + 1}사업자")
|
|
|
|
|
|
self.tab_widget.currentChanged.connect(self.update_tab_styles)
|
|
self.tab_widget.currentChanged.connect(self.changeButton_Text)
|
|
self.update_tab_styles()
|
|
|
|
def load_business_info(self):
|
|
# print(f"객체접근 테스트 : {self.alias_edits[0].text()}")
|
|
for i in range(self.max_business_count):
|
|
section = f"BUSINESS_{i+1}"
|
|
business_info = self.config_manager.get_business_info(section)
|
|
self.business_info[i] = {
|
|
"사업자별칭": business_info.get("사업자별칭", ""),
|
|
"사업자등록번호": business_info.get("사업자등록번호", ""),
|
|
"상호명": business_info.get("상호명", ""),
|
|
"등록날짜": business_info.get("등록날짜", ""),
|
|
"응대전화번호": business_info.get("응대전화번호", "")
|
|
}
|
|
|
|
for j in range(self.etc_number):
|
|
title_key = f"기타정보Title{j+1}"
|
|
context_key = f"기타정보Context{j+1}"
|
|
self.business_info[i][title_key] = self.config_manager.get(section, title_key, fallback="")
|
|
self.business_info[i][context_key] = self.config_manager.get(section, context_key, fallback="")
|
|
|
|
|
|
# 마켓 정보 불러오기
|
|
api_keys = self.config_manager.get_api_keys(section)
|
|
for market, fields in self.market_info[i].items():
|
|
for label in fields.keys():
|
|
key = label.replace(' ', '_')
|
|
# print(f"market : {market}")
|
|
# print(f"fields : {fields}")
|
|
# print(f"key : {key}")
|
|
# print(f"label : {label}")
|
|
# print(f"api_keys[market][key] : {api_keys.get(market, {}).get(key, '')}")
|
|
fields[label].setText(api_keys.get(market, {}).get(key, ''))
|
|
|
|
self.selected_markets[i] = self.config_manager.get_active_markets(i + 1)
|
|
if not self.selected_markets[i]: # 활성화된 마켓 정보가 없을 경우
|
|
self.selected_markets[i] = {market: True for market in self.config_manager.valid_markets}
|
|
|
|
self.update_widgets(i)
|
|
|
|
def update_widgets(self, index):
|
|
business = self.business_info[index]
|
|
self.alias_edits[index].setText(business.get("사업자별칭", ""))
|
|
self.reg_number_edits[index].setText(business.get("사업자등록번호", ""))
|
|
self.name_edits[index].setText(business.get("상호명", ""))
|
|
self.reg_date_edits[index].setText(business.get("등록날짜", ""))
|
|
self.phone_edits[index].setText(business.get("응대전화번호", ""))
|
|
for j in range(self.etc_number):
|
|
# self.etc_titles[index][j].setText(business.get(f"etc{j+1}_title", ""))
|
|
# self.etc_contexts[index][j].setText(business.get(f"etc{j+1}_context", ""))
|
|
self.etc_titles[index][j].setText(business.get(f"기타정보Title{j+1}", ""))
|
|
self.etc_contexts[index][j].setText(business.get(f"기타정보Context{j+1}", ""))
|
|
|
|
|
|
def save_business_info(self):
|
|
for i in range(self.max_business_count):
|
|
section = f"BUSINESS_{i+1}"
|
|
self.business_info[i] = {
|
|
"사업자별칭": self.alias_edits[i].text(),
|
|
"사업자등록번호": self.reg_number_edits[i].text(),
|
|
"상호명": self.name_edits[i].text(),
|
|
"등록날짜": self.reg_date_edits[i].text(),
|
|
"응대전화번호": self.phone_edits[i].text()
|
|
}
|
|
|
|
# 기타정보 저장
|
|
for j in range(self.etc_number):
|
|
self.business_info[i][f"기타정보Title{j+1}"] = self.etc_titles[i][j].text()
|
|
self.business_info[i][f"기타정보Context{j+1}"] = self.etc_contexts[i][j].text()
|
|
|
|
# 사업자 정보 저장
|
|
self.config_manager.set_business_info(i + 1, self.business_info[i])
|
|
|
|
# 마켓 API 정보 저장
|
|
api_keys = {}
|
|
for market, fields in self.market_info[i].items():
|
|
api_keys[market] = {label: line_edit.text() for label, line_edit in fields.items()}
|
|
self.config_manager.set_api_keys(i + 1, api_keys)
|
|
|
|
# 활성 마켓 정보 저장
|
|
self.config_manager.set_active_markets(i + 1, self.selected_markets[i])
|
|
|
|
|
|
self.config_manager.save()
|
|
# print("저장된 사업자 정보:", self.business_info)
|
|
# print("저장된 마켓 정보:", self.market_info)
|
|
|
|
def changeButton_Text(self, current_index = 1):
|
|
current_index = self.tab_widget.currentIndex()
|
|
self.save_button.setText(f"{current_index + 1}사업자 설정 저장")
|
|
self.refersh_button.setText(f"{current_index + 1}사업자 새로고침")
|
|
self.setup_market_button.setText(f"{current_index + 1}사업자 설정마켓")
|
|
|
|
|
|
def create_business_info_layout(self, index):
|
|
business_layout = QGridLayout()
|
|
|
|
# print(f"alias_edits 갯수 : {len(self.alias_edits)}")
|
|
|
|
|
|
alias_label = QLabel("사업자별칭:")
|
|
alias_edit = QLineEdit()
|
|
alias_edit.textChanged.connect(lambda text, idx=index: self.update_tab_title(text, idx))
|
|
self.alias_edits.append(alias_edit)
|
|
business_layout.addWidget(alias_label, 0, 0)
|
|
business_layout.addWidget(alias_edit, 0, 1)
|
|
|
|
# print(f"alias_edits 갯수 : {len(self.alias_edits)}")
|
|
|
|
# print(f"객체접근 테스트 : {self.alias_edits[0].text()}")
|
|
|
|
reg_number_label = QLabel("사업자등록번호:")
|
|
reg_number_label.setAlignment(Qt.AlignCenter)
|
|
reg_number_edit = QLineEdit()
|
|
reg_number_edit.setMinimumWidth(60)
|
|
self.reg_number_edits.append(reg_number_edit)
|
|
business_layout.addWidget(reg_number_label, 1, 0)
|
|
business_layout.addWidget(reg_number_edit, 1, 1)
|
|
|
|
name_label = QLabel("상호명:")
|
|
name_label.setAlignment(Qt.AlignCenter)
|
|
name_edit = QLineEdit()
|
|
name_edit.setMinimumWidth(60)
|
|
self.name_edits.append(name_edit)
|
|
business_layout.addWidget(name_label, 2, 0)
|
|
business_layout.addWidget(name_edit, 2, 1)
|
|
|
|
reg_date_label = QLabel("등록날짜:")
|
|
reg_date_label.setAlignment(Qt.AlignCenter)
|
|
reg_date_edit = CalendarPicker(self)
|
|
reg_date_edit.setMinimumWidth(60)
|
|
reg_date_edit.dateChanged.connect(lambda t: print(t.toString()))
|
|
self.reg_date_edits.append(reg_date_edit)
|
|
business_layout.addWidget(reg_date_label, 3, 0)
|
|
business_layout.addWidget(reg_date_edit, 3, 1)
|
|
|
|
phone_label = QLabel("응대전화번호:")
|
|
phone_label.setAlignment(Qt.AlignCenter)
|
|
phone_edit = QLineEdit()
|
|
phone_edit.setMinimumWidth(60)
|
|
self.phone_edits.append(phone_edit)
|
|
business_layout.addWidget(phone_label, 4, 0)
|
|
business_layout.addWidget(phone_edit, 4, 1)
|
|
|
|
for j in range(self.etc_number):
|
|
label = f"기타정보Title{j+1}"
|
|
|
|
# etc_push_btn = QPushButton(label)
|
|
etc_push_btn = PrimaryPushButton(FIF.INFO, label, self)
|
|
|
|
etc_push_btn.setMinimumWidth(80)
|
|
# etc_push_btn.setText(label)
|
|
etc_push_btn.clicked.connect(lambda checked, lbl=label, idx=index, btn=etc_push_btn: self.show_other_info_dialog(lbl, idx, btn))
|
|
etc_push_btn.setText(label)
|
|
self.etc_titles[index].append(etc_push_btn)
|
|
# business_layout.addWidget(etc_title_label, 5 + j * 2, 0)
|
|
business_layout.addWidget(etc_push_btn, j, 3)
|
|
|
|
# etc_context_label = QLabel(f"기타정보Context{j+1}:")
|
|
# etc_context_edit = QLineEdit()
|
|
# self.etc_contexts[index].append(etc_context_edit)
|
|
# # business_layout.addWidget(etc_context_label, 6 + j * 2, 0)
|
|
# # business_layout.addWidget(etc_context_edit, 6 + j * 2, 1)
|
|
|
|
etc_context_edit = QsciScintilla()
|
|
content_lexer = QsciLexerPython()
|
|
etc_context_edit.setLexer(content_lexer)
|
|
etc_context_edit.setMargins(1)
|
|
self.etc_contexts[index].append(etc_context_edit)
|
|
|
|
return business_layout
|
|
|
|
|
|
def create_market_info_widget(self, index):
|
|
layout = QTabWidget()
|
|
self.market_tabs[index] = layout
|
|
|
|
market_tabs = {
|
|
"쿠팡": [("쿠팡id", ""), ("업체코드", ""), ("accesskey", ""), ("secretkey", ""), ("배송프로필번호", "")],
|
|
"스마트스토어": [("업로드할스마트스토어계정id", ""), ("업로드할스마트스토어계정pw", ""), ("애플리케이션id", ""), ("애플리케이션시크릿", ""), ("배송프로필번호", "")],
|
|
"esm": [("옥션id", ""), ("지마켓id", ""), ("배송프로필번호", "")],
|
|
"11번가-국내": [("apikey", ""), ("배송프로필번호", "")],
|
|
"11번가-글로벌": [("apikey", ""), ("배송프로필번호", "")],
|
|
"롯데온": [("apikey", ""), ("배송프로필번호", "")],
|
|
"인터파크": [("상품상태재고수정인증키", ""), ("상품상태재고수정비밀키", ""),
|
|
("상품재고조회인증키", ""), ("상품재고조회비밀키", ""),
|
|
("상품정보조회인증", ""), ("상품정보조회비밀키", ""),
|
|
("상품수정인증키", ""), ("상품수정비밀키", ""),
|
|
("상품등록인증키", ""), ("상품등록비밀키", ""),
|
|
("반품배송지조회인증키", ""), ("반품배송지조회비밀키", ""),
|
|
("반품배송지등록인증키", ""), ("반품배송지등록비밀키", ""),
|
|
("상품qna등록인증키", ""), ("상품qna등록비밀키", ""),
|
|
("상품qna조회인증키", ""), ("상품qna조회비밀키", ""),
|
|
("인터파크업체번호", ""), ("공급계약일련번호", ""),
|
|
("배송프로필번호", "")],
|
|
"위메프": [("apikey", ""), ("배송프로필번호", "")],
|
|
"옥션1.0": [("멤버id", ""), ("apikey", ""), ("배송프로필번호", "")]
|
|
}
|
|
|
|
for market, fields in market_tabs.items():
|
|
tab = QWidget()
|
|
tab_layout = QGridLayout()
|
|
self.market_info[index][market] = {}
|
|
for i, (label_text, placeholder) in enumerate(fields):
|
|
tab_layout.addWidget(QLabel(label_text), i, 0)
|
|
line_edit = QLineEdit(placeholder)
|
|
tab_layout.addWidget(line_edit, i, 1)
|
|
self.market_info[index][market][label_text] = line_edit
|
|
tab.setLayout(tab_layout)
|
|
layout.addTab(tab, market)
|
|
|
|
return layout
|
|
|
|
def show_market_setup(self):
|
|
set_market_dialog = QDialog(self)
|
|
set_market_dialog.setWindowTitle("설정 마켓")
|
|
set_market_dialog.setLayout(QVBoxLayout())
|
|
layout = set_market_dialog.layout()
|
|
|
|
current_tab = self.tab_widget.currentIndex()
|
|
active_markets = self.selected_markets[current_tab]
|
|
print(f"active_markets : {active_markets}")
|
|
|
|
|
|
all_select_checkbox = QCheckBox("전체선택")
|
|
all_select_checkbox.setChecked(all(active_markets.values()))
|
|
all_select_checkbox.stateChanged.connect(lambda state: self.toggle_all_checkboxes(state, current_tab))
|
|
layout.addWidget(all_select_checkbox)
|
|
|
|
market_layout = QGridLayout()
|
|
markets = list(active_markets.keys())
|
|
print(f"markets : {markets}")
|
|
self.market_checkboxes[current_tab] = {}
|
|
|
|
for i, market in enumerate(markets):
|
|
checkbox = QCheckBox(market)
|
|
print(f"market : {market}")
|
|
print(f"active_markets[{market}] : {active_markets[market]}")
|
|
checkbox.setChecked(active_markets[market])
|
|
self.market_checkboxes[current_tab][market] = checkbox
|
|
market_layout.addWidget(checkbox, i // 3, i % 3)
|
|
|
|
layout.addLayout(market_layout)
|
|
|
|
button_box = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel)
|
|
# button_box.accepted.connect(lambda: self.save_market_settings(current_tab))
|
|
button_box.accepted.connect(set_market_dialog.accept)
|
|
button_box.rejected.connect(set_market_dialog.reject)
|
|
layout.addWidget(button_box)
|
|
|
|
|
|
if set_market_dialog.exec() == QDialog.Accepted:
|
|
for market, checkbox in self.market_checkboxes[current_tab].items():
|
|
self.selected_markets[current_tab][market] = checkbox.isChecked()
|
|
self.update_market_tabs(current_tab)
|
|
|
|
def update_market_tabs(self, current_tab):
|
|
market_info_widget = self.market_info_widgets[current_tab]
|
|
active_markets = self.selected_markets[current_tab]
|
|
for j in range(market_info_widget.count()):
|
|
market_name = market_info_widget.tabText(j)
|
|
market_info_widget.setTabVisible(j, active_markets.get(market_name, False))
|
|
|
|
def toggle_all_checkboxes(self, state, tab_index):
|
|
is_checked = state == Qt.Checked
|
|
for checkbox in self.market_checkboxes[tab_index].values():
|
|
checkbox.setChecked(is_checked)
|
|
|
|
def save_market_settings(self, tab_index):
|
|
active_markets = self.selected_markets[tab_index]
|
|
for market, checkbox in self.market_checkboxes[tab_index].items():
|
|
active_markets[market] = checkbox.isChecked()
|
|
self.config_manager.set_active_markets(tab_index + 1, active_markets)
|
|
|
|
# def update_market_tabs(self, current_tab):
|
|
# # tab = self.tab_widget.widget(current_tab)
|
|
# print("update_market_tabs")
|
|
# market_info_widget = self.market_info_widgets[current_tab]
|
|
# active_markets = self.selected_markets[current_tab]
|
|
# for j in range(market_info_widget.count()):
|
|
# market_tab = market_info_widget.widget(j)
|
|
# market_name = market_info_widget.tabText(j)
|
|
# market_tab.setVisible(active_markets.get(market_name, False))
|
|
|
|
|
|
def show_other_info_dialog(self, label, index, button):
|
|
info_number = ''.join(filter(str.isdigit, label))
|
|
|
|
set_etc_dialog = QDialog(self)
|
|
set_etc_dialog.setWindowTitle("기타정보 설정")
|
|
set_etc_dialog.setMinimumSize(400,600)
|
|
layout = QVBoxLayout(set_etc_dialog)
|
|
|
|
# 메뉴 바 생성
|
|
menu_bar = QMenuBar()
|
|
layout.setMenuBar(menu_bar)
|
|
|
|
# 폰트 선택 메뉴 추가
|
|
font_menu = menu_bar.addMenu('Font')
|
|
select_font_action = QAction('Select Font', self)
|
|
font_menu.addAction(select_font_action)
|
|
|
|
title_layout = QHBoxLayout()
|
|
title_layout.addWidget(QLabel("제목"))
|
|
title_input = QLineEdit()
|
|
title_layout.addWidget(title_input, 3)
|
|
layout.addLayout(title_layout)
|
|
|
|
# Toolbar 추가
|
|
toolbar = QToolBar()
|
|
layout.addWidget(toolbar)
|
|
|
|
# 라인 번호 표시 토글 버튼 추가
|
|
toggle_line_numbers_action = QAction("Line Numbers", self)
|
|
toggle_line_numbers_action.setCheckable(True)
|
|
toggle_line_numbers_action.setChecked(True)
|
|
toggle_line_numbers_action.toggled.connect(lambda state: content_editor.setMargins(state))
|
|
toolbar.addAction(toggle_line_numbers_action)
|
|
|
|
# 폰트 종류 선택 버튼 추가
|
|
font_type_action = QAction("Font Type", self)
|
|
font_type_action.triggered.connect(lambda: self.select_font(content_editor))
|
|
toolbar.addAction(font_type_action)
|
|
|
|
# 이미지 삽입 버튼 추가
|
|
insert_image_action = QAction("Insert Image", self)
|
|
insert_image_action.triggered.connect(lambda: self.insert_image(content_editor))
|
|
toolbar.addAction(insert_image_action)
|
|
|
|
content_layout = QVBoxLayout()
|
|
content_layout.addWidget(QLabel("내용"))
|
|
# content_editor = QsciScintilla()
|
|
# content_lexer = QsciLexerPython()
|
|
# content_editor.setLexer(content_lexer)
|
|
# content_editor.setMargins(1)
|
|
content_editor = self.etc_contexts[index][int(info_number)-1]
|
|
content_layout.addWidget(content_editor)
|
|
layout.addLayout(content_layout)
|
|
|
|
button_box = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel)
|
|
button_box.accepted.connect(lambda: set_etc_dialog.accept())
|
|
button_box.rejected.connect(lambda: set_etc_dialog.reject())
|
|
layout.addWidget(button_box)
|
|
|
|
# 폰트 선택 메뉴 동작 연결
|
|
select_font_action.triggered.connect(lambda: self.select_font(content_editor))
|
|
|
|
# label에서 숫자만 추출하여 적절한 키 형식으로 변환
|
|
|
|
info_title_key = f"기타정보Title{info_number}"
|
|
info_context_key = f"기타정보Context{info_number}"
|
|
|
|
# 기존 정보가 없으면 초기화
|
|
if info_title_key not in self.business_info[index] or info_context_key not in self.business_info[index]:
|
|
self.business_info[index][info_title_key] = ""
|
|
self.business_info[index][info_context_key] = ""
|
|
print(f"기존 값이 없으므로 기타정보 초기화")
|
|
|
|
# 기존 정보가 있으면 로드
|
|
old_title = self.business_info[index].get(info_title_key, "")
|
|
old_content = self.business_info[index].get(info_context_key, "")
|
|
# print(f"self.business_info : {self.business_info}")
|
|
print(f"index : {index}")
|
|
print(f"info_title_key : {info_title_key}")
|
|
print(f"info_context_key : {info_context_key}")
|
|
|
|
title_input.setText(old_title)
|
|
print(f"기존 값 old_title 입력 : {old_title}")
|
|
content_editor.setText(old_content)
|
|
print(f"기존 값 old_content 입력 : {old_content}")
|
|
|
|
if set_etc_dialog.exec() == QDialog.Accepted:
|
|
new_title = title_input.text()
|
|
new_content = content_editor.text()
|
|
# old_title = self.other_info[index][label].get("title", "")
|
|
# old_content = self.other_info[index][label].get("content", "")
|
|
|
|
if new_title != old_title or new_content != old_content:
|
|
confirmation = QMessageBox.question(self, "변경 사항 확인", "내용이 변경되었습니다. 저장하시겠습니까?",
|
|
QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
|
|
if confirmation == QMessageBox.Yes:
|
|
if new_title == "":
|
|
new_title = label
|
|
self.business_info[index][info_title_key] = new_title
|
|
self.business_info[index][info_context_key] = new_content
|
|
button.setText(new_title)
|
|
|
|
else:
|
|
if new_title == "":
|
|
new_title = label
|
|
self.business_info[index][info_title_key] = new_title
|
|
self.business_info[index][info_context_key] = new_content
|
|
|
|
button.setText(new_title)
|
|
|
|
# Print the other_info dictionary for debugging
|
|
print(self.business_info)
|
|
|
|
def insert_image(self, content_editor):
|
|
file_name, _ = QFileDialog.getOpenFileName(self, "Insert Image", "", "Images (*.png *.xpm *.jpg)")
|
|
if file_name:
|
|
content_editor.insert(f"")
|
|
|
|
def select_font(self, content_editor):
|
|
font, ok = QFontDialog.getFont()
|
|
if ok:
|
|
content_editor.setFont(font)
|
|
|
|
def update_tab_title(self, text, index):
|
|
if text:
|
|
self.tab_widget.setTabText(index, text)
|
|
else:
|
|
self.tab_widget.setTabText(index, f"{index + 1}사업자")
|
|
|
|
def update_tab_styles(self):
|
|
for i in range(self.tab_widget.count()):
|
|
tab_bar = self.tab_widget.tabBar()
|
|
if i == self.tab_widget.currentIndex():
|
|
tab_bar.setTabTextColor(i, Qt.black)
|
|
tab_bar.setStyleSheet("QTabBar::tab:selected { background: lightgreen; }")
|
|
else:
|
|
tab_bar.setTabTextColor(i, Qt.black)
|
|
tab_bar.setStyleSheet("QTabBar::tab:!selected { background: transparent; }") |