def __init__(self, main): """ Class to provide all methods to insert movie in database. :param main: Reference for main windows. """ super(InsertMovie, self).__init__() self.session = DB.get_session() self.movie = None self.cb_categories = [] self.main = main windows_title = texts.insert + ' ' + texts.movie_p self.setWindowTitle(windows_title) width = int(0.95 * main.frameSize().width()) height = int(0.8 * main.frameSize().height()) self.setGeometry(0, 0, width, height) self.tb_width = (0.5 * width) - 50 self.subwindow = QWidget() p = self.palette() p.setColor(self.backgroundRole(), QColor(230, 230, 250)) self.setPalette(p) self.setWidget(self.subwindow) self.vbox_main = QVBoxLayout(self.subwindow) # Search in IMDB self.pb_search_confirm_imdb = pb_create(texts.pb_imdb_search_confirm, height=25, width=200) self.pb_search_confirm_imdb.setToolTip(texts.imdb_search_tt) self.pb_search_confirm_imdb.setShortcut('CTRL+Alt+I') self.pb_search_confirm_imdb.clicked.connect(self.search_confirmed_imdb) self.pb_search_confirm_ad = pb_create(texts.pb_ad_search_confirm, height=25, width=300) self.pb_search_confirm_ad.setToolTip(texts.ad_search_tt) self.pb_search_confirm_ad.setShortcut('CTRL+Alt+D') self.pb_search_confirm_ad.clicked.connect(self.search_confirmed_ad) self.lb_imdb_url = QLabel(texts.lb_search_imdb) self.lb_imdb_url.setEnabled(False) self.lb_imdb_url.setHidden(True) self.le_imdb_url = le_create(tooltip=texts.imdb_search_tt) self.le_imdb_url.setEnabled(False) self.le_imdb_url.setHidden(True) self.lb_ad_url = QLabel(texts.lb_search_ad) self.lb_ad_url.setEnabled(False) self.lb_ad_url.setHidden(True) self.le_ad_url = le_create(tooltip=texts.ad_search_tt) self.le_ad_url.setEnabled(False) self.le_ad_url.setHidden(True) self.pb_search_imdb = pb_create(texts.pb_imdb_ad_search, height=25, width=200) self.pb_search_imdb.clicked.\ connect(lambda type: self.set_movie_scrapping('imdb')) self.pb_search_imdb.setShortcut('CTRL+Shift+I') self.pb_search_imdb.setEnabled(False) self.pb_search_imdb.setHidden(True) self.pb_search_ad = pb_create(texts.pb_imdb_ad_search, height=25, width=200) self.pb_search_ad.clicked.connect( lambda type: self.set_movie_scrapping('ad')) self.pb_search_ad.setShortcut('CTRL+Shift+A') self.pb_search_ad.setEnabled(False) self.pb_search_ad.setHidden(True) self.hbox_search = hbox_create([ self.pb_search_confirm_imdb, self.lb_imdb_url, self.le_imdb_url, self.pb_search_confirm_ad, self.lb_ad_url, self.le_ad_url ]) self.hbox_search.setContentsMargins(20, 10, 20, 0) self.hbox_pb_search = hbox_create([]) self.hbox_pb_search.setContentsMargins(20, 0, 20, 0) self.line = line_h_create('2px', '#000000') self.vbox_main.addLayout(self.hbox_search) self.vbox_main.addLayout(self.hbox_pb_search) self.vbox_main.addWidget(self.line) # Form Layout 1 self.fm_1 = QFormLayout() self.fm_1.setContentsMargins(20, 20, 20, 20) self.fm_1.setSpacing(10) # Title self.lb_title = QLabel(texts.title_s) self.le_title = le_create(255) self.fm_1.setWidget(0, QFormLayout.LabelRole, self.lb_title) self.fm_1.setWidget(0, QFormLayout.FieldRole, self.le_title) # Year self.lb_year = QLabel(texts.year_s) self.le_year = le_create(4) self.fm_1.setWidget(1, QFormLayout.LabelRole, self.lb_year) self.fm_1.setWidget(1, QFormLayout.FieldRole, self.le_year) # Media self.lb_media = QLabel(texts.media_s) media = db_select_all(self.session, Media) self.cb_media = cb_create() populate_combobox(self.cb_media, media) self.fm_1.setWidget(2, QFormLayout.LabelRole, self.lb_media) self.fm_1.setWidget(2, QFormLayout.FieldRole, self.cb_media) # Category 1 category = db_select_all(self.session, Category) self.lb_category_1 = QLabel(texts.category_1) self.cb_category_1 = cb_create() populate_combobox(self.cb_category_1, category) self.fm_1.setWidget(3, QFormLayout.LabelRole, self.lb_category_1) self.fm_1.setWidget(3, QFormLayout.FieldRole, self.cb_category_1) # Box box = db_select_all(self.session, Box) self.lb_box = QLabel(texts.box) self.cb_box = cb_create() populate_combobox(self.cb_box, box) self.fm_1.setWidget(4, QFormLayout.LabelRole, self.lb_box) self.fm_1.setWidget(4, QFormLayout.FieldRole, self.cb_box) # Poster self.lb_poster = QLabel(texts.poster) self.le_poster = le_create(255) self.fm_1.setWidget(5, QFormLayout.LabelRole, self.lb_poster) self.fm_1.setWidget(5, QFormLayout.FieldRole, self.le_poster) # Form Layout 2 self.fm_2 = QFormLayout() self.fm_2.setContentsMargins(20, 20, 20, 20) self.fm_2.setSpacing(10) # Original Title self.lb_original_title = QLabel(texts.original_title_s) self.le_original_title = le_create(255) self.fm_2.setWidget(0, QFormLayout.LabelRole, self.lb_original_title) self.fm_2.setWidget(0, QFormLayout.FieldRole, self.le_original_title) # Director director = db_select_all(self.session, Director) self.lb_director = QLabel(texts.director_s) self.cb_director = cb_create() populate_combobox(self.cb_director, director) self.fm_2.setWidget(1, QFormLayout.LabelRole, self.lb_director) self.fm_2.setWidget(1, QFormLayout.FieldRole, self.cb_director) self.lb_time = QLabel(texts.lb_time) self.le_time = le_create(10, texts.time_tt) self.fm_2.setWidget(2, QFormLayout.LabelRole, self.lb_time) self.fm_2.setWidget(2, QFormLayout.FieldRole, self.le_time) # Category 2 category = db_select_all(self.session, Category) self.lb_category_2 = QLabel(texts.category_1) self.cb_category_2 = cb_create() populate_combobox(self.cb_category_2, category) self.fm_2.setWidget(3, QFormLayout.LabelRole, self.lb_category_2) self.fm_2.setWidget(3, QFormLayout.FieldRole, self.cb_category_2) # KeyWord keyword = db_select_all(self.session, Keyword) self.lb_keyword = QLabel(texts.keyword) self.cb_keyword = cb_create() populate_combobox(self.cb_keyword, keyword) self.fm_2.setWidget(4, QFormLayout.LabelRole, self.lb_keyword) self.fm_2.setWidget(4, QFormLayout.FieldRole, self.cb_keyword) # Web URL self.lb_web_url = QLabel(texts.lb_url) self.le_web_url = le_create(255) self.fm_2.setWidget(5, QFormLayout.LabelRole, self.lb_web_url) self.fm_2.setWidget(5, QFormLayout.FieldRole, self.le_web_url) # Horizontal Layout for Frame layout self.hbox_fms = hbox_create([]) self.hbox_fms.addLayout(self.fm_1) self.hbox_fms.addLayout(self.fm_2) self.vbox_main.addLayout(self.hbox_fms) # Cast Summary self.hbox_summary_cast = hbox_create([]) self.hbox_summary_cast.setContentsMargins(20, 0, 20, 0) self.vbox_summary = QVBoxLayout() # Summary self.lb_summary = QLabel(texts.summary_s) self.le_summary = QTextEdit() self.vbox_summary.addWidget(self.lb_summary) self.vbox_summary.addWidget(self.le_summary) self.vbox_summary.setSpacing(20) self.hbox_summary_cast.addLayout(self.vbox_summary) self.hbox_summary_cast.setSpacing(20) # Cast Label Button self.vbox_cast = QVBoxLayout() self.lb_cast = QLabel(texts.cast_s) self.pb_add_row = QPushButton('+') self.pb_add_row.setToolTip(texts.pb_add_row_tt) self.pb_add_row.clicked.connect(self.table_add_rows) self.pb_add_row.setShortcut('Ctrl+T') self.hbox_cast = hbox_create([self.lb_cast, self.pb_add_row]) spacer = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) self.hbox_cast.addItem(spacer) self.vbox_cast.addLayout(self.hbox_cast) # Cast Table self.table = QTableWidget() self.table.setColumnCount(4) self.headers = [ texts.actor_s, texts.character_s, texts.order, texts.star.capitalize(), ] self.table.setHorizontalHeaderLabels(self.headers) self.table.setColumnWidth(0, 0.30 * self.tb_width) self.table.setColumnWidth(1, 0.40 * self.tb_width) self.table.setColumnWidth(2, 0.15 * self.tb_width) self.table.setColumnWidth(3, 0.15 * self.tb_width) self.rows = 0 self.cb_actor = [] self.cb_character = [] self.le_order = [] self.chbox_star = [] self.table_add_rows() self.vbox_cast.addWidget(self.table) self.hbox_summary_cast.addLayout(self.vbox_cast) self.vbox_main.addLayout(self.hbox_summary_cast) # Buttons Save Clear self.grid_layout = QGridLayout() self.grid_layout.setContentsMargins(10, 10, 10, 10) self.grid_layout.setSpacing(10) self.pb_save = pb_create(texts.pb_save, height=40) self.pb_save.clicked.connect(self.insert_movie) self.pb_save.setShortcut('Ctrl+S') self.grid_layout.addWidget(self.pb_save, 0, 0, 1, 1) self.pb_clear = pb_create(texts.pb_clear, height=40) self.pb_clear.clicked.connect(self.clear) self.pb_clear.setShortcut('Ctrl+L') self.grid_layout.addWidget(self.pb_clear, 0, 1, 1, 1) self.pb_help = pb_create(texts.pb_help, height=40) self.pb_help.clicked.connect(self.help) self.pb_help.setShortcut('Ctrl+H') self.grid_layout.addWidget(self.pb_help, 0, 2, 1, 1) self.pb_leave = pb_create(texts.pb_leave, height=40) self.pb_leave.clicked.connect(self.close) self.pb_leave.setShortcut('Ctrl+Q') self.grid_layout.addWidget(self.pb_leave, 0, 3, 1, 1) self.vbox_main.addLayout(self.grid_layout) # Tab Order self.le_title.setFocus() self.setTabOrder(self.le_title, self.le_original_title) self.setTabOrder(self.le_original_title, self.le_year) self.setTabOrder(self.le_year, self.cb_director) self.setTabOrder(self.cb_media, self.le_time) self.setTabOrder(self.le_time, self.cb_category_1) self.setTabOrder(self.cb_category_1, self.cb_category_2) self.setTabOrder(self.cb_category_2, self.cb_box) self.setTabOrder(self.cb_box, self.cb_keyword) self.setTabOrder(self.cb_keyword, self.le_poster) self.setTabOrder(self.le_poster, self.le_web_url) self.setTabOrder(self.le_web_url, self.le_summary)
def table_add_rows(self): """ Add rows in table cast. """ cb = cb_create() cb.setMaximumWidth(0.3 * self.tb_width) actor = self.session.query(Actor).order_by(Actor.name).all() populate_combobox(cb, actor) self.cb_actor.append(cb) cb = cb_create() cb.setMaximumWidth(0.4 * self.tb_width) character = self.session.query(Character). \ order_by(Character.name).all() populate_combobox(cb, character) self.cb_character.append(cb) le = le_create(5) le.setStyleSheet('padding: 10px;') self.le_order.append(le) self.le_order[self.rows].setText(str(self.rows + 1)) ch = QCheckBox(str(self.rows)) icon = QIcon() icon.addPixmap(QPixmap('images/star_withe_16.png'), QIcon.Normal, QIcon.Off) ch.setIcon(icon) ch.setToolTip(texts.rb_star_tt) self.chbox_star.append(ch) i = self.rows self.chbox_star[i].stateChanged. \ connect(lambda: self.chbox_star_changed(self.chbox_star[i])) i = self.rows hb = hbox_create([self.chbox_star[i]], 0) hb.setAlignment(Qt.AlignCenter) cell = QWidget() cell.setLayout(hb) self.table.insertRow(self.rows) self.table.setCellWidget(self.rows, 0, self.cb_actor[self.rows]) self.table.setCellWidget(self.rows, 1, self.cb_character[self.rows]) self.table.setCellWidget(self.rows, 2, self.le_order[self.rows]) self.table.setCellWidget(self.rows, 3, cell) if self.rows % 2 != 0: self.table.cellWidget( self.rows, 0).setStyleSheet('background-color: #E6E6E6;') self.table.cellWidget( self.rows, 1).setStyleSheet('background-color: #E6E6E6;') self.table.cellWidget(self.rows, 2).setStyleSheet( 'background-color: #E6E6E6; padding-left:10px;') self.table.cellWidget(self.rows, 3).setStyleSheet('background-color: #E6E6E6;' 'color: #E6E6E6;') else: self.table.cellWidget(self.rows, 3).setStyleSheet('color: #FFFFFF;') self.table.setRowHeight(self.rows, 35) self.rows += 1
def table_add_rows(self, id=None, order=None): """ Add rows to table. :param id: The id of creator. :param order: The order of creator. """ self.table.insertRow(self.rows) cb = cb_create('') creators = self.session.query(Creator).order_by(Creator.name).all() populate_combobox(cb, creators) self.cb_creator.append(cb) self.table.setCellWidget(self.rows, 0, self.cb_creator[self.rows]) le = QLineEdit() le.setAlignment(Qt.AlignHCenter) le.setPlaceholderText('press enter to confirm') self.le.append(le) self.table.setCellWidget(self.rows, 1, self.le[self.rows]) if order: self.le[self.rows].setText(str(order)) ch_del = None if id: ch_del = QCheckBox(str(id)) self.chbox_del.append(ch_del) hb_del = hbox_create([self.chbox_del[self.chbox_count]], 0) hb_del.setAlignment(Qt.AlignCenter) cell_del = QWidget() cell_del.setLayout(hb_del) self.table.setCellWidget(self.rows, 2, cell_del) self.chbox_count += 1 else: self.table.setItem(self.rows, 1, QTableWidgetItem(' ')) self.table.setItem(self.rows, 2, QTableWidgetItem(' ')) if self.rows % 2 != 0: self.table.cellWidget(self.rows, 0).setStyleSheet( 'background-color: #E6E6E6;' ) self.table.cellWidget(self.rows, 1).setStyleSheet( 'background-color: #E6E6E6;' ) le.setStyleSheet('background-color: #E6E6E6;') if ch_del: self.table.cellWidget(self.rows, 2).setStyleSheet( 'background-color: #E6E6E6;' 'color: #E6E6E6;' ) else: self.table.item(self.rows, 2).setBackground( QColor(230, 230, 230)) else: if ch_del: self.table.cellWidget(self.rows, 2).setStyleSheet( 'color: #FFFFFF;' ) self.table.setRowHeight(self.rows, 35) self.rows += 1
def __init__(self, main): """ Search movie by title. :param main: Reference for main windows. """ super(ViewSeriesSearchUrl, self).__init__() self.session = DB.get_session() self.main = main self.row_select = -1 text = texts.series_s + ' ' + texts.search_web_url self.setWindowTitle(text) self.width = int(0.8 * main.frameSize().width()) self.height = int(0.8 * main.frameSize().height()) self.setGeometry(0, 0, self.width, self.height) self.subwindow = QWidget() p = self.palette() p.setColor(self.backgroundRole(), QColor(230, 230, 250)) self.setPalette(p) self.setWidget(self.subwindow) self.vbox_main = QVBoxLayout(self.subwindow) self.vbox_main.setContentsMargins(20, 20, 20, 20) # Title self.lb_title = QLabel(texts.title_s) self.lb_title.setMaximumSize(QSize(100, 25)) series = db_select_all(self.session, Series) self.cb_title = cb_create() populate_combobox(self.cb_title, series) # Words text = texts.or_s + ' ' + texts.with_the_p + ' ' + texts.term_p self.lb_term = QLabel(text) self.le_term = le_create(30, texts.with_term_tt) self.le_term.setPlaceholderText('pressione enter') self.le_term.editingFinished.connect(self.query_term) # HBoxSearch self.hbox_search = hbox_create( [self.lb_title, self.cb_title, self.lb_term, self.le_term]) spacer = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) self.hbox_search.addItem(spacer) self.vbox_main.addLayout(self.hbox_search) # total self.lb_total = QLabel(texts.lb_total) self.le_total = le_create(255) self.le_total.setMaximumWidth(100) # Buttons self.pb_clear = pb_create(texts.pb_clear, 11, 30) self.pb_clear.setMaximumWidth(100) self.pb_clear.setShortcut('Ctrl+L') self.pb_clear.clicked.connect(self.clear) self.pb_leave = pb_create(texts.pb_leave, 11, 30) self.pb_leave.setMaximumWidth(100) self.pb_leave.setShortcut('Ctrl+Q') self.pb_leave.clicked.connect(self.close) # Hbox_result self.hbox_result = hbox_create( [self.lb_total, self.le_total, self.pb_clear, self.pb_leave]) spacer = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) self.hbox_result.addItem(spacer) self.vbox_main.addLayout(self.hbox_result) # Table self.table = QTableWidget() self.table.horizontalHeader().sectionClicked.connect( self.repaint_cells) self.rows = 0 self.clear_table() query = self.session.query(Series).all() self.set_table(query) self.vbox_main.addWidget(self.table) self.cb_title.currentIndexChanged.connect(self.query_title)
def __init__(self, main, type): """ Search movie or series by categories. :param main: Reference for main windows. :param type: String if is "movie" then search for movie if not search by "series". """ super(SearchMSCategory, self).__init__() self.session = DB.get_session() self.type = type self.main = main self.row_select = -1 if self.type == 'movie': self.obj = self.session.query(Movie).order_by(Movie.category_1_id) name = texts.movie_p else: self.obj = self.session.query(Series).order_by( Series.category_1_id) name = texts.series_p windows_title = texts.search + ' ' + name + ' ' + texts.for_ \ + ' ' + texts.category_p self.setWindowTitle(windows_title) self.width = int(0.9 * main.frameSize().width()) self.height = int(0.9 * main.frameSize().height()) self.setGeometry(0, 0, self.width, self.height) self.subwindow = QWidget() p = self.palette() p.setColor(self.backgroundRole(), QColor(230, 230, 250)) self.setPalette(p) self.setWidget(self.subwindow) self.vbox_main = QVBoxLayout(self.subwindow) self.vbox_main.setContentsMargins(20, 20, 20, 20) # Category self.lb_category = QLabel(texts.category_s) self.lb_category.setMaximumSize(QSize(100, 25)) if self.type == 'movie': categories = self.session.query(Category). \ filter(or_(Category.id == Movie.category_1_id, Category.id == Movie.category_2_id)).\ order_by(Category.name) else: categories = self.session.query(Category). \ filter(or_(Category.id == Series.category_1_id, Category.id == Series.category_2_id)).\ order_by(Category.name) self.cb_category = cb_create() populate_combobox(self.cb_category, categories) # total self.lb_total = QLabel(texts.lb_total) self.lb_total.setMaximumSize(QSize(100, 25)) self.le_total = le_create(255) # Buttons self.pb_clear = pb_create(texts.pb_clear, 11, 30) self.pb_clear.setShortcut('Ctrl+L') self.pb_clear.clicked.connect(self.clear) self.pb_leave = pb_create(texts.pb_leave, 11, 30) self.pb_leave.setShortcut('Ctrl+Q') self.pb_leave.clicked.connect(self.close) spacer = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) # Hbox self.hbox = hbox_create([ self.lb_category, self.cb_category, self.lb_total, self.le_total, self.pb_clear, self.pb_leave ]) self.hbox.addSpacerItem(spacer) self.vbox_main.addLayout(self.hbox) # Table self.table = QTableWidget() self.table.setObjectName('table-search') self.rows = 0 self.clear_table() self.set_table(self.obj) self.vbox_main.addWidget(self.table) self.cb_category.currentIndexChanged.connect(self.query_category)
def __init__(self, main): """ Class for edit creator. :param main: Reference for main windows. :param type: Type object, movie or series. """ super(EditCreator, self).__init__() self.session = DB.get_session() self.main = main self.id = None self.series_creator = None title = texts.edit + texts.series_s + texts.creator_p self.setWindowTitle(title) width = int(0.4 * main.frameSize().width()) height = int(0.6 * main.frameSize().height()) self.setGeometry(0, 0, width, height) self.subwindow = QWidget() p = self.palette() p.setColor(self.backgroundRole(), QColor(230, 230, 250)) self.setPalette(p) self.setWidget(self.subwindow) font = QFont() font.setPointSize(12) # Vbox Main self.vbox_main = QVBoxLayout(self.subwindow) self.vbox_main.setContentsMargins(20, 20, 20, 20) self.vbox_main.setSpacing(10) # Select Label and Combobox series = self.session.query(Series).all() self.lb_select = QLabel(texts.series_s) self.lb_select.setFont(font) self.lb_select.setFixedHeight(25) self.cb_select = cb_create('') self.cb_select.setFont(font) self.cb_select.setFixedHeight(30) populate_combobox(self.cb_select, series) self.vbox_main.addWidget(self.lb_select) self.vbox_main.addWidget(self.cb_select) self.lb_creator = QLabel(texts.creator_p) self.lb_creator.setFont(font) self.lb_creator.setFixedHeight(25) self.pb_add_row = pb_create('+', 11, 25, 50) self.pb_add_row.setToolTip(texts.pb_add_row_tt) self.pb_add_row.setShortcut('Ctrl+T') self.pb_add_row.clicked.connect(self.table_add_rows) self.hbox_creator = hbox_create([self.lb_creator, self.pb_add_row]) spacer = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) self.hbox_creator.addItem(spacer) self.vbox_main.addLayout(self.hbox_creator) # Creator Table self.table = QTableWidget() self.table.setColumnCount(3) self.table.setContentsMargins(20, 0, 0, 0) font = QFont() font.setPointSize(12) self.table.setHorizontalHeaderLabels([ texts.creator_s, texts.order, 'Del' ]) # table set column width self.table.setColumnWidth(0, int(0.60 * (width - 50))) self.table.setColumnWidth(1, int(0.20 * (width - 50))) self.table.setColumnWidth(2, int(0.20 * (width - 50))) # self.table.horizontalHeader().setFixedHeight(30) self.table.horizontalHeader().setFont(font) self.table.horizontalHeader().setStyleSheet( 'background-color: rgb(230, 230, 230);') self.table.verticalHeader().setVisible(False) self.vbox_main.addWidget(self.table) self.rows = 0 self.chbox_count = 0 self.cb_creator = [] self.le = [] self.chbox_del = [] # Buttons Save Clear self.grid_layout = QGridLayout() self.grid_layout.setContentsMargins(0, 0, 0, 0) self.grid_layout.setSpacing(10) self.pb_save = pb_create(texts.pb_save, height=40) self.pb_save.clicked.connect(self.save_series_creator) self.pb_save.setShortcut('Ctrl+S') self.grid_layout.addWidget(self.pb_save, 0, 0, 1, 1) self.pb_clear = pb_create(texts.pb_clear, height=40) self.pb_clear.clicked.connect(self.clear) self.pb_clear.setShortcut('Ctrl+L') self.grid_layout.addWidget(self.pb_clear, 0, 1, 1, 1) self.pb_help = pb_create(texts.pb_help, height=40) self.pb_help.clicked.connect(self.help) self.pb_help.setShortcut('Ctrl+H') self.grid_layout.addWidget(self.pb_help, 0, 2, 1, 1) self.pb_leave = pb_create(texts.pb_leave, height=40) self.pb_leave.clicked.connect(self.close) self.pb_save.setShortcut('Ctrl+Q') self.grid_layout.addWidget(self.pb_leave, 0, 3, 1, 1) self.vbox_main.addLayout(self.grid_layout) self.cb_select.currentIndexChanged.connect(self.selected_series)
def __init__(self, main, op): """ Class for edit category, actor, character, box, media and keyword according given op. :param main: Reference for main windows. :param op: String representing the class to be edited. """ super(EditOthers, self).__init__() self.main = main self.op = op self.session = DB.get_session() self.cls = None self.obj = None self.name = '' if self.op == 'category': self.cls = Category self.name = texts.category_s elif self.op == 'actor': self.cls = Actor self.name = texts.actor_s elif self.op == 'character': self.cls = Character self.name = texts.character_s elif self.op == 'box': self.cls = Box self.name = texts.box elif self.op == 'media': self.cls = Media self.name = texts.media_s elif self.op == 'keyword': self.cls = Keyword self.name = texts.keyword self.window_title = texts.edit + ' ' + self.name self.setWindowTitle(self.window_title) self.setGeometry(0, 0, 511, 205) self.subwindow = QWidget() p = self.palette() p.setColor(self.backgroundRole(), QColor(230, 230, 250)) self.setPalette(p) self.setWidget(self.subwindow) font = QFont() font.setPointSize(11) # Vbox Main self.vbox_main = QVBoxLayout(self.subwindow) self.vbox_main.setContentsMargins(20, 20, 20, 20) self.vbox_main.setSpacing(10) # Select Label and Combobox objs = db_select_all(self.session, self.cls) text = texts.select + ' ' + self.name self.lb_select = QLabel(text) self.lb_select.setFont(font) self.lb_select.setFixedHeight(25) self.cb_select = cb_create('') self.cb_select.setFont(font) self.cb_select.setFixedHeight(30) populate_combobox(self.cb_select, objs) self.cb_select.setEditable(False) self.vbox_main.addWidget(self.lb_select) self.vbox_main.addWidget(self.cb_select) # PB Select self.pb_select = pb_create(texts.pb_leave) self.pb_select.setFixedHeight(40) self.pb_select.setEnabled(True) self.pb_select.setHidden(False) self.pb_select.clicked.connect(self.close) self.pb_help_1 = pb_create(texts.pb_help) self.pb_help_1.setFixedHeight(40) self.pb_help_1.setEnabled(True) self.pb_help_1.setHidden(False) self.pb_help_1.clicked.connect(self.help) self.pb_help_1.setShortcut('Ctrl+H') self.hbox_select = QHBoxLayout() spacer = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) self.hbox_select.addItem(spacer) self.hbox_select.addWidget(self.pb_select) self.hbox_select.addWidget(self.pb_help_1) self.hbox_select.addItem(spacer) self.vbox_main.addLayout(self.hbox_select) # Title text = texts.actual_value + ' ' + self.name self.lb = QLabel(text) self.lb.setFont(font) self.lb.setFixedHeight(25) self.le = le_create() self.le.setFont(font) self.lb.setEnabled(False) self.lb.setHidden(True) self.le.setEnabled(False) self.le.setHidden(True) self.vbox_main.addWidget(self.lb) self.vbox_main.addWidget(self.le) # Buttons self.pb_save = pb_create(texts.pb_save) self.pb_save.setShortcut('Ctrl+S') self.pb_save.clicked.connect(self.edit_object) self.pb_save.setMaximumHeight(40) self.pb_help_2 = pb_create(texts.pb_help) self.pb_help_2.clicked.connect(self.help) self.pb_help_2.setShortcut('Ctrl+H') self.pb_help_2.setMaximumHeight(40) self.pb_leave = pb_create(texts.pb_leave) self.pb_leave.clicked.connect(self.close) self.pb_leave.setShortcut('Ctrl+Q') self.pb_leave.setMaximumHeight(40) self.hb_pb = hbox_create([self.pb_save, self.pb_help_2, self.pb_leave]) self.pb_save.setEnabled(False) self.pb_save.setHidden(True) self.pb_help_2.setEnabled(False) self.pb_help_2.setHidden(True) self.pb_leave.setEnabled(False) self.pb_leave.setHidden(True) self.vbox_main.addLayout(self.hb_pb) self.cb_select.currentIndexChanged.connect(self.obj_selected)
def __init__(self, main): """ Search movie by title. :param main: Reference for main windows. """ super(SearchMovieBox, self).__init__() self.session = DB.get_session() self.main = main self.row_select = -1 self.movies = self.session.query(Movie).\ filter(Movie.box_id == Box.id).all() windows_title = texts.search + ' ' + texts.movie_s + ' ' + \ texts.for_ + ' ' + texts.box self.setWindowTitle(windows_title) self.width = int(0.9 * main.frameSize().width()) self.height = int(0.9 * main.frameSize().height()) self.setGeometry(0, 0, self.width, self.height) self.subwindow = QWidget() p = self.palette() p.setColor(self.backgroundRole(), QColor(230, 230, 250)) self.setPalette(p) self.setWidget(self.subwindow) self.vbox_main = QVBoxLayout(self.subwindow) self.vbox_main.setContentsMargins(20, 20, 20, 20) # Title self.lb_box = QLabel(texts.box) self.lb_box.setMaximumSize(QSize(100, 25)) box = db_select_all(self.session, Box) self.cb_box = cb_create() populate_combobox(self.cb_box, box) # Words text = texts.or_s + ' ' + texts.with_the_p + ' ' + texts.term_p self.lb_term = QLabel(text) self.le_term = le_create(30, texts.with_term_tt) self.le_term.setPlaceholderText('pressione enter') self.le_term.editingFinished.connect(self.query_term) # HBoxSearch self.hbox_search = hbox_create( [self.lb_box, self.cb_box, self.lb_term, self.le_term]) spacer = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) self.hbox_search.addItem(spacer) self.vbox_main.addLayout(self.hbox_search) # total self.lb_total = QLabel(texts.lb_total) self.le_total = le_create(255) self.le_total.setMaximumWidth(100) # Buttons self.pb_clear = pb_create(texts.pb_clear, 11, 30) self.pb_clear.setMaximumWidth(100) self.pb_clear.setShortcut('Ctrl+L') self.pb_clear.clicked.connect(self.clear) self.pb_leave = pb_create(texts.pb_leave, 11, 30) self.pb_leave.setMaximumWidth(100) self.pb_leave.setShortcut('Ctrl+Q') self.pb_leave.clicked.connect(self.close) # Hbox_result self.hbox_result = hbox_create( [self.lb_total, self.le_total, self.pb_clear, self.pb_leave]) spacer = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) self.hbox_result.addItem(spacer) self.vbox_main.addLayout(self.hbox_result) # Table self.table = QTableWidget() self.table.setObjectName('table-search') self.rows = 0 self.clear_table() movies = self.session.query(Movie).filter( Movie.box_id.isnot(None)).all() self.set_table(movies) self.vbox_main.addWidget(self.table) self.cb_box.currentIndexChanged.connect(self.query_box)
def __init__(self, main, type): """ Search movie or series by title. :param main: Reference for main windows. :param type: String if is "movie" then search for movie if not search by "series". """ super(SearchMSTitle, self).__init__() self.session = DB.get_session() self.type = type self.main = main self.row_select = -1 if self.type == 'movie': self.obj = self.session.query(Movie).order_by(Movie.name) name = texts.movie_p else: self.obj = self.session.query(Series).order_by(Series.name) name = texts.series_p windows_title = texts.search + ' ' + name + ' ' + texts.for_ \ + ' ' + texts.title_p self.setWindowTitle(windows_title) self.width = int(0.9 * main.frameSize().width()) self.height = int(0.9 * main.frameSize().height()) self.setGeometry(0, 0, self.width, self.height) self.subwindow = QWidget() p = self.palette() p.setColor(self.backgroundRole(), QColor(230, 230, 250)) self.setPalette(p) self.setWidget(self.subwindow) self.vbox_main = QVBoxLayout(self.subwindow) self.vbox_main.setContentsMargins(20, 20, 20, 20) # Title self.lb_title = QLabel(texts.title_s) self.lb_title.setMaximumSize(QSize(100, 25)) self.cb_title = cb_create() self.cb_title.addItem('', 0) for ms in self.obj: self.cb_title.addItem(ms.name, ms.id) # Words text = texts.or_s + ' ' + texts.with_the_p + ' ' + texts.term_p self.lb_term = QLabel(text) self.le_term = le_create(30, texts.with_term_tt) self.le_term.setPlaceholderText('pressione enter') # # HBoxSearch self.hbox_search = hbox_create( [self.lb_title, self.cb_title, self.lb_term, self.le_term]) spacer = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) self.hbox_search.addItem(spacer) self.vbox_main.addLayout(self.hbox_search) # total self.lb_total = QLabel(texts.lb_total) self.le_total = le_create(255) self.le_total.setMaximumWidth(100) # Buttons self.pb_clear = pb_create(texts.pb_clear, 11, 30) self.pb_clear.setMaximumWidth(100) self.pb_clear.setShortcut('Ctrl+L') # self.pb_clear.clicked.connect(self.clear) self.pb_leave = pb_create(texts.pb_leave, 11, 30) self.pb_leave.setMaximumWidth(100) self.pb_leave.setShortcut('Ctrl+Q') self.pb_leave.clicked.connect(self.close) # Hbox_result self.hbox_result = hbox_create( [self.lb_total, self.le_total, self.pb_clear, self.pb_leave]) spacer = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) self.hbox_result.addItem(spacer) self.vbox_main.addLayout(self.hbox_result) # Table self.table = QTableWidget() self.table.setObjectName('table-search') self.rows = 0 self.clear_table() self.set_table(self.obj) self.vbox_main.addWidget(self.table) self.cb_title.currentIndexChanged.connect(self.query_title) self.le_term.editingFinished.connect(self.query_term)
def __init__(self, main): """ Class for edit series. :param main: Reference for main windows. """ super(EditSeries, self).__init__() self.session = DB.get_session() self.series = None self.cb_categories = [] self.cast_values = [] self.main = main windows_title = texts.edit + ' ' + texts.series_p self.setWindowTitle(windows_title) width = int(0.95 * main.frameSize().width()) height = int(0.8 * main.frameSize().height()) self.setGeometry(0, 0, width, height) table_width = (0.5 * width) - 50 self.subwindow = QWidget() p = self.palette() p.setColor(self.backgroundRole(), QColor(230, 230, 250)) self.setPalette(p) self.setWidget(self.subwindow) self.vbox_main = QVBoxLayout(self.subwindow) # Select Label and Combobox series = db_select_all(self.session, Series) self.lb_select = QLabel(texts.series_s) self.cb_select = cb_create() populate_combobox(self.cb_select, series) self.hbox_select = hbox_create([self.lb_select, self.cb_select]) spacer_item = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) self.hbox_select.addItem(spacer_item) self.hbox_select.setContentsMargins(20, 20, 20, 0) self.line = line_h_create('2px', '#000000') self.vbox_main.addLayout(self.hbox_select) self.vbox_main.addWidget(self.line) # Form Layout 1 self.fm_1 = QFormLayout() self.fm_1.setContentsMargins(20, 20, 20, 20) self.fm_1.setSpacing(10) # Title self.lb_title = QLabel(texts.title_s) self.le_title = le_create(255) self.fm_1.setWidget(0, QFormLayout.LabelRole, self.lb_title) self.fm_1.setWidget(0, QFormLayout.FieldRole, self.le_title) # Year self.lb_year = QLabel(texts.year_s) self.le_year = le_create(4) self.fm_1.setWidget(1, QFormLayout.LabelRole, self.lb_year) self.fm_1.setWidget(1, QFormLayout.FieldRole, self.le_year) # Media self.lb_media = QLabel(texts.media_s) media = db_select_all(self.session, Media) self.cb_media = cb_create() populate_combobox(self.cb_media, media) self.fm_1.setWidget(2, QFormLayout.LabelRole, self.lb_media) self.fm_1.setWidget(2, QFormLayout.FieldRole, self.cb_media) # Category 1 category = db_select_all(self.session, Category) self.lb_category_1 = QLabel(texts.category_1) self.cb_category_1 = cb_create() populate_combobox(self.cb_category_1, category) self.fm_1.setWidget(3, QFormLayout.LabelRole, self.lb_category_1) self.fm_1.setWidget(3, QFormLayout.FieldRole, self.cb_category_1) # Poster self.lb_poster = QLabel(texts.poster) self.le_poster = le_create(255) self.fm_1.setWidget(4, QFormLayout.LabelRole, self.lb_poster) self.fm_1.setWidget(4, QFormLayout.FieldRole, self.le_poster) # Search URL self.lb_search_url = QLabel(texts.lb_search_url) self.le_search_url = le_create(255) self.fm_1.setWidget(5, QFormLayout.LabelRole, self.lb_search_url) self.fm_1.setWidget(5, QFormLayout.FieldRole, self.le_search_url) # Web URL self.lb_web_url = QLabel(texts.lb_url) self.le_web_url = le_create(255) self.fm_1.setWidget(6, QFormLayout.LabelRole, self.lb_web_url) self.fm_1.setWidget(6, QFormLayout.FieldRole, self.le_web_url) # Form Layout 2 self.fm_2 = QFormLayout() self.fm_2.setContentsMargins(20, 20, 20, 20) self.fm_2.setSpacing(10) # Original Title self.lb_original_title = QLabel(texts.original_title_s) self.le_original_title = le_create(255) self.fm_2.setWidget(0, QFormLayout.LabelRole, self.lb_original_title) self.fm_2.setWidget(0, QFormLayout.FieldRole, self.le_original_title) # Seasons self.lb_seasons = QLabel(texts.season_p) self.le_seasons = le_create(tooltip=texts.season_num_tt) self.fm_2.setWidget(1, QFormLayout.LabelRole, self.lb_seasons) self.fm_2.setWidget(1, QFormLayout.FieldRole, self.le_seasons) # Director self.lb_creator = QLabel(texts.director_s) self.le_creator = le_create(tooltip=texts.director_tt) self.le_creator.setReadOnly(True) self.fm_2.setWidget(2, QFormLayout.LabelRole, self.lb_creator) self.fm_2.setWidget(2, QFormLayout.FieldRole, self.le_creator) # Category 2 category = db_select_all(self.session, Category) self.lb_category_2 = QLabel(texts.category_1) self.cb_category_2 = cb_create() populate_combobox(self.cb_category_2, category) self.fm_2.setWidget(3, QFormLayout.LabelRole, self.lb_category_2) self.fm_2.setWidget(3, QFormLayout.FieldRole, self.cb_category_2) # KeyWord keyword = db_select_all(self.session, Keyword) self.lb_keyword = QLabel(texts.keyword) self.cb_keyword = cb_create() populate_combobox(self.cb_keyword, keyword) self.fm_2.setWidget(4, QFormLayout.LabelRole, self.lb_keyword) self.fm_2.setWidget(4, QFormLayout.FieldRole, self.cb_keyword) # Search Url Label self.lb_url = QLabel('Wait URL') self.lb_url.setMaximumWidth(170) self.lb_url.setOpenExternalLinks(True) self.lb_url.setStyleSheet("padding: 4px; " "border: 1px solid black; " "background-color: rgb(219, 219, 219); " "color : blue;") self.fm_2.setWidget(5, QFormLayout.LabelRole, self.lb_url) # Horizontal Layout for Frame layout self.hbox_fms = hbox_create([]) self.hbox_fms.addLayout(self.fm_1) self.hbox_fms.addLayout(self.fm_2) self.vbox_main.addLayout(self.hbox_fms) # Cast Summary self.hbox_summary_cast = hbox_create([], 0) self.hbox_summary_cast.setContentsMargins(20, 0, 20, 0) self.vbox_summary = QVBoxLayout() # Summary self.lb_summary = QLabel(texts.summary_s) self.le_summary = QTextEdit() self.vbox_summary.addWidget(self.lb_summary) self.vbox_summary.addWidget(self.le_summary) self.vbox_summary.setSpacing(20) self.hbox_summary_cast.addLayout(self.vbox_summary) self.hbox_summary_cast.setSpacing(20) # Horizontal Layout for Frame layout self.hbox_fms = hbox_create([]) self.hbox_fms.addLayout(self.fm_1) self.hbox_fms.addLayout(self.fm_2) self.vbox_main.addLayout(self.hbox_fms) # Cast Summary self.hbox_summary_cast = hbox_create([]) self.hbox_summary_cast.setContentsMargins(20, 0, 20, 0) self.vbox_summary = QVBoxLayout() # Summary self.lb_summary = QLabel(texts.summary_s) self.le_summary = QTextEdit() self.vbox_summary.addWidget(self.lb_summary) self.vbox_summary.addWidget(self.le_summary) self.vbox_summary.setSpacing(20) self.hbox_summary_cast.addLayout(self.vbox_summary) self.hbox_summary_cast.setSpacing(20) # Cast Label Button self.vbox_cast = QVBoxLayout() self.lb_cast = QLabel() self.lb_cast.setText(texts.lb_no_edit_cast) self.hbox_cast = hbox_create([self.lb_cast]) spacer = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) self.hbox_cast.addItem(spacer) self.vbox_cast.addLayout(self.hbox_cast) # Cast Table self.table = QTableWidget() self.table.setColumnCount(3) self.headers = [ texts.actor_s.lower(), texts.character_s.lower(), texts.star.lower() ] self.table.setHorizontalHeaderLabels(self.headers) self.table.setColumnWidth(0, 0.45 * table_width) self.table.setColumnWidth(1, 0.45 * table_width) self.table.setColumnWidth(2, 0.10 * table_width) self.vbox_cast.addWidget(self.table) self.hbox_summary_cast.addLayout(self.vbox_cast) self.rows = 0 self.vbox_main.addLayout(self.hbox_summary_cast) # Buttons Save Clear self.grid_layout = QGridLayout() self.grid_layout.setContentsMargins(10, 10, 10, 10) self.grid_layout.setSpacing(10) self.pb_save = pb_create(texts.pb_save, height=40) self.pb_save.clicked.connect(self.edit_series) self.pb_save.setShortcut('Ctrl+S') self.grid_layout.addWidget(self.pb_save, 0, 0, 1, 1) self.pb_delete = pb_create(texts.pb_delete, height=40) self.pb_delete.clicked.connect(self.delete_series) self.pb_delete.setShortcut('Ctrl+Shift+D') self.grid_layout.addWidget(self.pb_delete, 0, 1, 1, 1) self.pb_clear = pb_create(texts.pb_clear, height=40) self.pb_clear.clicked.connect(self.clear) self.pb_clear.setShortcut('Ctrl+L') self.grid_layout.addWidget(self.pb_clear, 0, 2, 1, 1) self.pb_help = pb_create(texts.pb_help, height=40) self.pb_help.clicked.connect(self.help) self.pb_help.setShortcut('Ctrl+H') self.grid_layout.addWidget(self.pb_help, 0, 3, 1, 1) self.pb_leave = pb_create(texts.pb_leave, height=40) self.pb_leave.clicked.connect(self.close) self.pb_leave.setShortcut('Ctrl+E') self.grid_layout.addWidget(self.pb_leave, 0, 4, 1, 1) self.vbox_main.addLayout(self.grid_layout) # Tab Order self.le_title.setFocus() self.setTabOrder(self.le_title, self.le_original_title) self.setTabOrder(self.le_original_title, self.le_year) self.setTabOrder(self.le_year, self.cb_media) self.setTabOrder(self.cb_media, self.le_seasons) self.setTabOrder(self.le_seasons, self.cb_category_1) self.setTabOrder(self.cb_category_1, self.cb_category_2) self.setTabOrder(self.cb_category_2, self.cb_keyword) self.setTabOrder(self.cb_keyword, self.le_web_url) self.setTabOrder(self.le_web_url, self.le_poster) self.setTabOrder(self.le_poster, self.le_search_url) self.cb_select.currentIndexChanged.connect(self.fill_series) # Resize Event def resizeEvent(self, event): """ Resize actors and character combobox in table cast if windows resize. :param event: Window. """ width = event.size().width() self.tb_width = (0.5 * width) - 50 self.table.setColumnWidth(0, 0.30 * self.tb_width) self.table.setColumnWidth(1, 0.40 * self.tb_width) self.table.setColumnWidth(2, 0.15 * self.tb_width) self.table.setColumnWidth(3, 0.15 * self.tb_width) # Important don't delete it QMdiSubWindow.resizeEvent(self, event)
def __init__(self, main, type): """ Search movie by title. :param main: Reference for main windows. """ super(SearchMSMediaYear, self).__init__() self.session = DB.get_session() self.main = main self.type = type self.row_select = -1 if self.type == 'movie': self.obj = self.session.query(Movie).order_by(desc( Movie.year)).all() name = texts.movie_p else: self.obj = self.session.query(Series).order_by(desc( Series.year)).all() name = texts.series_p windows_title = texts.search + ' ' + name + ' ' + \ texts.for_ + ' ' + texts.media_s + '/' + texts.year_s self.setWindowTitle(windows_title) self.width = int(0.9 * main.frameSize().width()) self.height = int(0.9 * main.frameSize().height()) self.setGeometry(0, 0, self.width, self.height) self.subwindow = QWidget() p = self.palette() p.setColor(self.backgroundRole(), QColor(230, 230, 250)) self.setPalette(p) self.setWidget(self.subwindow) self.vbox_main = QVBoxLayout(self.subwindow) self.vbox_main.setContentsMargins(20, 20, 20, 20) # Media self.lb_media = QLabel(texts.media_s) self.lb_media.setMaximumSize(QSize(100, 25)) if self.type == 'movie': media = self.session.query(Media).\ filter(Media.id == Movie.media_id) else: media = self.session.query(Media). \ filter(Media.id == Series.media_id) self.cb_media = cb_create() self.cb_media.setMaximumWidth(300) populate_combobox(self.cb_media, media) # Year self.lb_year = QLabel(texts.year_s) self.cb_year = QComboBox() self.cb_year.addItem('', 0) self.cb_year.setMinimumWidth(100) if self.type == 'movie': years = self.session.query(Movie.year).distinct().\ order_by(desc(Movie.year)).all() years = [y[0] for y in years] else: years = self.session.query(Series.year).distinct().order_by( desc(Series.year)).all() years = [y[0] for y in years] self.cb_year.addItems(years) self.hbox_my = hbox_create( [self.lb_media, self.cb_media, self.lb_year, self.cb_year]) spacer = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) self.hbox_my.addItem(spacer) self.vbox_main.addLayout(self.hbox_my) # total self.lb_total = QLabel(texts.lb_total) self.le_total = le_create(255) self.le_total.setMaximumWidth(100) # Buttons self.pb_clear = pb_create(texts.pb_clear, 11, 30) self.pb_clear.setMaximumWidth(100) self.pb_clear.setShortcut('Ctrl+L') self.pb_clear.clicked.connect(self.clear) self.pb_leave = pb_create(texts.pb_leave, 11, 30) self.pb_leave.setMaximumWidth(100) self.pb_leave.setShortcut('Ctrl+Q') self.pb_leave.clicked.connect(self.close) # Hbox result self.hbox_result = hbox_create( [self.lb_total, self.le_total, self.pb_clear, self.pb_leave]) spacer = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) self.hbox_result.addItem(spacer) self.vbox_main.addLayout(self.hbox_result) # Table self.table = QTableWidget() self.table.setObjectName('table-search') if self.type == 'movie': self.num_col = 6 else: self.num_col = 5 self.rows = 0 self.clear_table() self.set_table(self.obj) self.vbox_main.addWidget(self.table) self.cb_media.currentIndexChanged.connect(self.query_media) self.cb_year.currentIndexChanged.connect(self.query_year)
def table_add_rows(self, order, star=None, mc=None): """ Add rows in table. :param order: SesonCast value for order column :param star: MovieCast or SeriesCast value for star column :param mc: MovieCast or SeriesCast value for id column """ self.table.insertRow(self.rows) cb = cb_create('') populate_combobox(cb, self.actor) self.cb_actor.append(cb) self.table.setCellWidget(self.rows, 0, self.cb_actor[self.cb_count]) cb = cb_create('') populate_combobox(cb, self.character) self.cb_character.append(cb) self.table.setCellWidget(self.rows, 1, self.cb_character[self.cb_count]) le = le_create(4) le.setStyleSheet('padding-left: 10px;') self.le_order.append(le) if order: self.le_order[self.cb_count].setText(str(order)) else: self.le_order[self.cb_count].setText('') self.table.setCellWidget(self.rows, 2, self.le_order[self.cb_count]) ch_star = QCheckBox() self.chbox_star.append(ch_star) if star: self.chbox_star[self.cb_count].setChecked(True) icon = QIcon() icon.addPixmap(QPixmap('images/star_yellow_16.png'), QIcon.Normal, QIcon.Off) else: icon = QIcon() icon.addPixmap(QPixmap('images/star_withe_16.png'), QIcon.Normal, QIcon.Off) i = self.cb_count self.chbox_star[i].stateChanged. \ connect(lambda: self.chbox_star_changed(self.chbox_star[i])) self.chbox_star[i].setIcon(icon) hb_star = hbox_create([self.chbox_star[i]], 0) hb_star.setAlignment(Qt.AlignCenter) cell_star = QWidget() cell_star.setLayout(hb_star) self.table.setCellWidget(self.rows, 3, cell_star) ch_del = None if mc: ch_del = QCheckBox() self.chbox_del.append(ch_del) hb_del = hbox_create([self.chbox_del[self.ch_del_count]], 0) hb_del.setAlignment(Qt.AlignCenter) cell_del = QWidget() cell_del.setLayout(hb_del) self.table.setCellWidget(self.rows, 4, cell_del) self.ch_del_count += 1 else: self.table.setItem(self.rows, 4, QTableWidgetItem(' ')) if self.rows % 2 != 0: self.table.cellWidget(self.rows, 0).setStyleSheet( 'background-color: #E6E6E6;' ) self.table.cellWidget(self.rows, 1).setStyleSheet( 'background-color: #E6E6E6;' ) self.table.cellWidget(self.rows, 2).setStyleSheet( 'background-color: #E6E6E6; padding-left: 10px;' ) self.table.cellWidget(self.rows, 3).setStyleSheet( 'background-color: #E6E6E6;' 'color: #E6E6E6;' ) if ch_del: self.table.cellWidget(self.rows, 4).setStyleSheet( 'background-color: #E6E6E6;' 'color: #E6E6E6;' ) else: self.table.item(self.rows, 4).setBackground( QColor(230, 230, 230)) self.table.setRowHeight(self.rows, 35) self.cb_count += 1 self.rows += 1
def __init__(self, main): """ Class for edit movie or series cast. :param main: Reference for main windows. :param type: Type object, movie or series. """ super(EditSeasonCast, self).__init__() self.main = main self.session = DB.get_session() self.id = None self.season_cast = None self.actor = self.session.query(Actor).order_by(Actor.name).all() self.character = self.session.query(Character).order_by( Character.name).all() windows_title = texts.season_p + ' ' + texts.cast_s self.setWindowTitle(windows_title) width = int(0.6 * main.frameSize().width()) height = int(0.8 * main.frameSize().height()) self.setGeometry(0, 0, width, height) self.subwindow = QWidget() p = self.palette() p.setColor(self.backgroundRole(), QColor(230, 230, 250)) self.setPalette(p) self.setWidget(self.subwindow) font = QFont() font.setPointSize(11) # Vbox Main self.vbox_main = QVBoxLayout(self.subwindow) self.vbox_main.setContentsMargins(20, 20, 20, 20) self.vbox_main.setSpacing(10) # Series series = db_select_all(self.session, Series) self.lb_series = QLabel(texts.series_p) self.lb_series.setFont(font) self.lb_series.setFixedHeight(25) self.cb_series = cb_create('') self.cb_series.setFont(font) self.cb_series.setFixedHeight(30) populate_combobox(self.cb_series, series) self.hbox_1 = hbox_create([self.lb_series, self.cb_series]) self.lb_seasons = QLabel(texts.season_p) self.cb_seasons = cb_create('') self.hbox_2 = hbox_create([self.lb_seasons, self.cb_seasons]) self.vbox_main.addLayout(self.hbox_1) self.vbox_main.addLayout(self.hbox_2) # Cast Table Add Row self.lb_cast = QLabel(texts.cast_s) self.lb_cast.setFont(font) self.lb_cast.setFixedHeight(25) self.pb_add_row = pb_create('+', 11, 25, 50) self.pb_add_row.setToolTip(texts.pb_add_row_tt) self.pb_add_row.setShortcut('Ctrl+T') self.pb_add_row.clicked.connect(self.table_add_rows) self.hbox_cast = hbox_create([self.lb_cast, self.pb_add_row]) spacer = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) self.hbox_cast.addItem(spacer) self.vbox_main.addLayout(self.hbox_cast) # Cast Table self.table = QTableWidget() self.table.setColumnCount(5) self.table.setContentsMargins(20, 0, 0, 0) font = QFont() font.setPointSize(12) self.headers = [ texts.actor_s, texts.character_s, texts.order, texts.star.capitalize(), 'Del' ] self.table.setHorizontalHeaderLabels(self.headers) # table set column width self.table.setColumnWidth(0, int(0.25 * (width - 50))) self.table.setColumnWidth(1, int(0.45 * (width - 50))) self.table.setColumnWidth(2, int(0.10 * (width - 50))) self.table.setColumnWidth(3, int(0.10 * (width - 50))) self.table.setColumnWidth(4, int(0.10 * (width - 45))) # self.table.horizontalHeader().setFixedHeight(30) self.table.horizontalHeader().setFont(font) self.table.horizontalHeader().setStyleSheet( 'background-color: rgb(230, 230, 230);') self.table.verticalHeader().setVisible(False) self.vbox_main.addWidget(self.table) self.rows = 0 self.cb_count = 0 self.ch_del_count = 0 self.cb_actor = [] self.cb_character = [] self.le_order = [] self.chbox_star = [] self.chbox_del = [] # Buttons Save Clear self.grid_layout = QGridLayout() self.grid_layout.setContentsMargins(0, 0, 0, 0) self.grid_layout.setSpacing(10) self.pb_save = pb_create(texts.pb_save, height=40) self.pb_save.clicked.connect(self.save_cast) self.pb_save.setShortcut('Ctrl+S') self.grid_layout.addWidget(self.pb_save, 0, 0, 1, 1) self.pb_clear = pb_create(texts.pb_clear, height=40) self.pb_clear.clicked.connect(self.clear) self.pb_clear.setShortcut('Ctrl+L') self.grid_layout.addWidget(self.pb_clear, 0, 1, 1, 1) self.pb_help = pb_create(texts.pb_help, height=40) self.pb_help.clicked.connect(self.help) self.pb_help.setShortcut('Ctrl+H') self.grid_layout.addWidget(self.pb_help, 0, 2, 1, 1) self.pb_leave = pb_create(texts.pb_leave, height=40) self.pb_leave.clicked.connect(self.close) self.pb_save.setShortcut('Ctrl+Q') self.grid_layout.addWidget(self.pb_leave, 0, 3, 1, 1) self.vbox_main.addLayout(self.grid_layout) self.cb_series.currentIndexChanged.connect(self.selected_series)