def restore(self): """restores a griffith compressed backup""" filename = gutils.file_chooser(_("Restore Griffith backup"), \ action=gtk.FILE_CHOOSER_ACTION_OPEN, buttons= \ (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, \ gtk.STOCK_OPEN, gtk.RESPONSE_OK)) if filename[0]: try: zip = zipfile.ZipFile(filename[0], 'r') except: gutils.error(self, _("Can't read backup file"), self.widgets['window']) return False mypath = os.path.join(self.locations['posters']) for each in zip.namelist(): file_to_restore = os.path.split(each) if not os.path.isdir(file_to_restore[1]): if file_to_restore[1] == '': continue if file_to_restore[1].endswith('.jpg'): myfile = os.path.join(mypath,file_to_restore[1]) else: myfile = os.path.join(self.locations['home'],file_to_restore[1]) outfile = open(myfile, 'wb') outfile.write(zip.read(each)) outfile.flush() outfile.close() zip.close() # restore config file self.config = config.Config(file=os.path.join(self.locations['home'],'griffith.conf')) filename = os.path.join(self.locations['home'], self.config["default_db"]) self.db.metadata.engine.dispose() # close DB from sqlalchemy.orm import clear_mappers clear_mappers() # check if file needs conversion if self.config['default_db'].lower().endswith('.gri'): self.debug.show('Old database format detected. Converting...') from dbupgrade import convert_from_old_db from initialize import location_posters if convert_from_old_db(self, filename, os.path.join(self.locations['home'], 'griffith.db')): self.config.save() location_posters(self.locations, self.config) else: print 'Cant convert old database, exiting.' import sys sys.exit(4) self.db = sql.GriffithSQL(self.config, self.debug, self.locations['home']) from initialize import dictionaries, people_treeview dictionaries(self) people_treeview(self) # let's refresh the treeview self.clear_details() self.populate_treeview() self.go_last() self.treeview_clicked() self.count_statusbar() gutils.info(self, _("Backup restored"), self.widgets['window'])
def save_preferences(self): w = self.widgets['preferences'] c = self.config global spell_support was_false = notes_was_false = plot_was_false = 1 if c.get('gtkspell', False, section='spell') == True: was_false = 0 if c.get('notes', False, section='spell') == True: notes_was_false = 0 if c.get('plot', False, section='spell') == True: plot_was_false = 0 # number if w['view_number'].get_active(): c.set('number', 'True', section='mainlist') else: c.set('number', 'False', section='mainlist') # image if w['view_image'].get_active(): c.set('image', 'True', section='mainlist') else: c.set('image', 'False', section='mainlist') # original title if w['view_o_title'].get_active(): c.set('otitle', 'True', section='mainlist') else: c.set('otitle', 'False', section='mainlist') # title if w['view_title'].get_active(): c.set('title', 'True', section='mainlist') else: c.set('title', 'False', section='mainlist') # director if w['view_director'].get_active(): c.set('director', 'True', section='mainlist') else: c.set('director', 'False', section='mainlist') # genre if w['view_genre'].get_active(): c.set('genre', 'True', section='mainlist') else: c.set('genre', 'False', section='mainlist') # seen if w['view_seen'].get_active(): c.set('seen', 'True', section='mainlist') else: c.set('seen', 'False', section='mainlist') # year if w['view_year'].get_active(): c.set('year', 'True', section='mainlist') else: c.set('year', 'False', section='mainlist') # runtime if w['view_runtime'].get_active(): c.set('runtime', 'True', section='mainlist') else: c.set('runtime', 'False', section='mainlist') # rating if w['view_rating'].get_active(): c.set('rating', 'True', section='mainlist') else: c.set('rating', 'False', section='mainlist') # sortby if w['sortby'].get_active(): field = self.sort_criteria[w['sortby'].get_active()] if field: c.set('sortby', field, section='mainlist') else: c.set('sortby', 'number', section='mainlist') c.set('sortby_reverse', w['sortby_reverse'].get_active(), section='mainlist') c.set('limit', str(int(w['s_limit'].get_value())), section='mainlist') # pdf font if w['font'].get_filename(): c['font'] = w['font'].get_filename() # spellchecker if w['spellchecker'].get_active(): c.set('gtkspell', True, section='spell') else: c.set('gtkspell', False, section='spell') if w['spell_notes'].get_active(): c.set('notes', True, section='spell') else: c.set('notes', False, section='spell') if w['spell_plot'].get_active(): c.set('plot', True, section='spell') else: c.set('plot', False, section='spell') # rating image c['rating_image'] = str(w['rating_image'].get_active()) #defaults media_id = self.media_ids[w['media'].get_active()] if media_id is None: media_id = 0 c.set('media', media_id, section='defaults') vcodec_id = self.vcodecs_ids[w['vcodec'].get_active()] if vcodec_id is None: vcodec_id = 0 c.set('vcodec', vcodec_id, section='defaults') c.set('condition', str(w['condition'].get_active()), section='defaults') c.set('region', str(w['region'].get_active()), section='defaults') c.set('layers', str(w['layers'].get_active()), section='defaults') c.set('color', str(w['color'].get_active()), section='defaults') # email reminder if w['mail_use_auth'].get_active(): c.set('use_auth', True, section='mail') else: c.set('use_auth', False, section='mail') if w['mail_use_tls'].get_active(): c.set('mail_use_tls', True, section='mail') else: c.set('mail_use_tls', False, section='mail') c.set('smtp_server', w['mail_smtp_server'].get_text(), section='mail') c.set('mail_smtp_port', w['mail_smtp_port'].get_text(), section='mail') c.set('username', w['mail_username'].get_text(), section='mail') c.set('password', w['mail_password'].get_text(), section='mail') c.set('email', w['mail_email'].get_text(), section='mail') # default movie plugin if w['default_plugin'].get_active(): c['default_movie_plugin'] = \ gutils.on_combo_box_entry_changed(w['default_plugin']) # search for: c.set('s_classification', w['s_classification'].get_active(), section='add') c.set('s_country', w['s_country'].get_active(), section='add') c.set('s_director', w['s_director'].get_active(), section='add') c.set('s_genre', w['s_genre'].get_active(), section='add') c.set('s_image', w['s_image'].get_active(), section='add') c.set('s_notes', w['s_notes'].get_active(), section='add') c.set('s_o_site', w['s_o_site'].get_active(), section='add') c.set('s_o_title', w['s_o_title'].get_active(), section='add') c.set('s_plot', w['s_plot'].get_active(), section='add') c.set('s_rating', w['s_rating'].get_active(), section='add') c.set('s_runtime', w['s_runtime'].get_active(), section='add') c.set('s_site', w['s_site'].get_active(), section='add') c.set('s_studio', w['s_studio'].get_active(), section='add') c.set('s_title', w['s_title'].get_active(), section='add') c.set('s_trailer', w['s_trailer'].get_active(), section='add') c.set('s_cast', w['s_cast'].get_active(), section='add') c.set('s_year', w['s_year'].get_active(), section='add') mcounter = 0 for p in self.plugins: plugin_module = os.path.basename(p).replace('.py','') plugin_name = plugin_module.replace('PluginMovie','') if gutils.on_combo_box_entry_changed(w['default_plugin']) == plugin_name: self.d_plugin = mcounter mcounter = mcounter + 1 self.widgets['add']['source'].set_active(self.d_plugin) if self.windows: save_reader = '' else: save_reader = w['epdf_reader'].get_text() c.set('lang', w['spell_lang'].get_text(), section='spell') c['pdf_reader'] = save_reader c.set('amazon_locale', w['amazon_locale'].get_active(), section='add') if spell_support: if c.get('gtkspell', False, section='spell') == False and not was_false: self.notes_spell.detach() self.plot_spell.detach() elif c.get('gtkspell', False, section='spell') == True and was_false: initialize.initialize_gtkspell(self) else: pass if c.get('gtkspell', False, section='spell') == True: if c.get('plot', True, section='spell') == False and not plot_was_false: self.plot_spell.detach() elif c.get('plot', True, section='spell') == True and plot_was_false: self.plot_spell = gtkspell.Spell(self.widgets['add']['plot']) self.plot_spell.set_language(c.get('lang', 'en', section='spell')) else: pass if c.get('notes', True, section='spell') == False and not notes_was_false: self.notes_spell.detach() elif c.get('notes', True, section='spell') == True and notes_was_false: self.notes_spell = gtkspell.Spell(self.widgets['add']['notes']) self.notes_spell.set_language(c.get('lang', 'en', section='spell')) else: pass self.pdf_reader = save_reader # database old = c.toDict(section='database') c.set('host', w['db_host'].get_text(), section='database') c.set('port', int(w['db_port'].get_value()), section='database') c.set('name', w['db_name'].get_text(), section='database') c.set('user', w['db_user'].get_text(), section='database') c.set('passwd', w['db_passwd'].get_text(), section='database') db_type = int(w['db_type'].get_active()) if db_type == 1: c.set('type', 'postgres', section='database') elif db_type == 2: c.set('type', 'mysql', section='database') elif db_type == 3: c.set('type', 'mssql', section='database') else: c.set('type', 'sqlite', section='database') if old['type'] != c.get('type', section='database') or (old['type']!='sqlite' and (\ old['host'] != c.get('host', section='database') or \ old['port'] != c.get('port', section='database') or \ old['user'] != c.get('user', section='database') or \ old['passwd'] != c.get('passwd', section='database'))) or \ old['name'] != c.get('name', section='database'): self.debug.show('DATABASE: connecting to new db server...') # new database connection import sql self.initialized = False self.db.metadata.clear() from sqlalchemy.orm import clear_mappers from sqlalchemy.exceptions import InvalidRequestError clear_mappers() try: self.db = sql.GriffithSQL(c, self.debug, self.locations['home']) except InvalidRequestError, e: self.debug.show(str(e)) c.set('type', 'sqlite', section='database') w['db_type'].set_active(0) self.db = sql.GriffithSQL(c, self.debug, self.locations['home']) self.debug.show("New database Engine: %s" % self.db.metadata.engine.name) # initialize new database self.total = int(self.db.Movie.count()) self.count_statusbar() from initialize import dictionaries, people_treeview, location_posters c['posters'] = None # force update location_posters(self.locations, self.config) dictionaries(self) people_treeview(self, False) self.initialized = True
def save_preferences(self): w = self.widgets['preferences'] c = self.config global spell_support was_false = notes_was_false = plot_was_false = 1 if c.get('use_gtkspell', 'False') == 'True': was_false = 0 if c.get('spell_notes', 'False') == 'True': notes_was_false = 0 if c.get('spell_plot', 'False') == 'True': plot_was_false = 0 # image if w['view_image'].get_active(): c['view_image'] = 'True' else: c['view_image'] = 'False' # original title if w['view_o_title'].get_active(): c['view_otitle'] = 'True' else: c['view_otitle'] = 'False' # title if w['view_title'].get_active(): c['view_title'] = 'True' else: c['view_title'] = 'False' # director if w['view_director'].get_active(): c['view_director'] = 'True' else: c['view_director'] = 'False' # sortby if w['sortby'].get_active(): field = self.sort_criteria[w['sortby'].get_active()] if field: c['sortby'] = field else: c['sortby'] = 'number' c['sortby_reverse'] = w['sortby_reverse'].get_active() # pdf font if w['font'].get_filename(): c['font'] = w['font'].get_filename() # spellchecker if w['spellchecker'].get_active(): c['use_gtkspell'] = 'True' else: c['use_gtkspell'] = 'False' if w['spell_notes'].get_active(): c['spell_notes'] = 'True' else: c['spell_notes'] = 'False' if w['spell_plot'].get_active(): c['spell_plot'] = 'True' else: c['spell_plot'] = 'False' # rating image c['rating_image'] = str(w['rating_image'].get_active()) #defaults c['media'] = self.media_ids[w['media'].get_active()] c['vcodec'] = self.vcodecs_ids[w['vcodec'].get_active()] c['condition'] = str(w['condition'].get_active()) c['region'] = str(w['region'].get_active()) c['layers'] = str(w['layers'].get_active()) c['color'] = str(w['color'].get_active()) # email reminder if w['mail_use_auth'].get_active(): c['mail_use_auth'] = 'True' else: c['mail_use_auth'] = 'False' c['mail_smtp_server'] = w['mail_smtp_server'].get_text() c['mail_username'] = w['mail_username'].get_text() c['mail_password'] = w['mail_password'].get_text() c['mail_email'] = w['mail_email'].get_text() # default movie plugin if w['default_plugin'].get_active(): c['default_movie_plugin'] = \ gutils.on_combo_box_entry_changed(w['default_plugin']) # search for: c['s_classification'] = w['s_classification'].get_active() c['s_country'] = w['s_country'].get_active() c['s_director'] = w['s_director'].get_active() c['s_genre'] = w['s_genre'].get_active() c['s_image'] = w['s_image'].get_active() c['s_notes'] = w['s_notes'].get_active() c['s_o_site'] = w['s_o_site'].get_active() c['s_o_title'] = w['s_o_title'].get_active() c['s_plot'] = w['s_plot'].get_active() c['s_rating'] = w['s_rating'].get_active() c['s_runtime'] = w['s_runtime'].get_active() c['s_site'] = w['s_site'].get_active() c['s_studio'] = w['s_studio'].get_active() c['s_title'] = w['s_title'].get_active() c['s_trailer'] = w['s_trailer'].get_active() c['s_cast'] = w['s_cast'].get_active() c['s_year'] = w['s_year'].get_active() mcounter = 0 for p in self.plugins: plugin_module = os.path.basename(p).replace('.py','') plugin_name = plugin_module.replace('PluginMovie','') if gutils.on_combo_box_entry_changed(w['default_plugin']) == plugin_name: self.d_plugin = mcounter mcounter = mcounter + 1 self.widgets['add']['source'].set_active(self.d_plugin) if self.windows: save_reader = '' else: save_reader = w['epdf_reader'].get_text() c['spell_lang'] = w['spell_lang'].get_text() c['pdf_reader'] = save_reader c['amazon_locale'] = w['amazon_locale'].get_active() if spell_support: if c.get('use_gtkspell', 'False') == 'False' and not was_false: self.notes_spell.detach() self.plot_spell.detach() elif c.get('use_gtkspell', 'False') == 'True' and was_false: initialize.initialize_gtkspell(self) else: pass if c.get('use_gtkspell', 'False') == 'True': if c.get('spell_plot', 'True') == 'False' and not plot_was_false: self.plot_spell.detach() elif c.get('spell_plot', 'True') == 'True' and plot_was_false: self.plot_spell = gtkspell.Spell(self.widgets['add']['plot']) self.plot_spell.set_language(c.get('spell_lang', 'en')) else: pass if c.get('spell_notes', 'True') == 'False' and not notes_was_false: self.notes_spell.detach() elif c.get('spell_notes', 'True') == 'True' and notes_was_false: self.notes_spell = gtkspell.Spell(self.widgets['add']['notes']) self.notes_spell.set_language(c.get('spell_lang', 'en')) else: pass self.pdf_reader = save_reader # database old = { 'db_type': c['db_type'], 'db_host': c['db_host'], 'db_port': c['db_port'], 'db_name': c['db_name'], 'db_user': c['db_user'], 'db_passwd': c['db_passwd'], } c['db_host'] = w['db_host'].get_text() c['db_port'] = int(w['db_port'].get_value()) c['db_name'] = w['db_name'].get_text() c['db_user'] = w['db_user'].get_text() c['db_passwd'] = w['db_passwd'].get_text() db_type = int(w['db_type'].get_active()) if db_type == 1: c['db_type'] = 'postgres' elif db_type == 2: c['db_type'] = 'mysql' else: c['db_type'] = 'sqlite' if old['db_type'] != c['db_type'] or (old['db_type']!='sqlite' and (\ old['db_host'] != c['db_host'] or \ old['db_port'] != c['db_port'] or \ old['db_name'] != c['db_name'] or \ old['db_user'] != c['db_user'] or \ old['db_passwd'] != c['db_passwd'])): self.debug.show('DATABASE: connecting to new db server...') # new database connection import sql self.initialized = False self.db.metadata.clear() from sqlalchemy.orm import clear_mappers clear_mappers() self.db = sql.GriffithSQL(c, self.debug, self.locations['home']) self.debug.show("New database Engine: %s" % self.db.metadata.engine.name) # initialize new database self.total = int(self.db.Movie.count()) self.count_statusbar() from initialize import dictionaries, people_treeview, location_posters c['posters'] = None # force update location_posters(self.locations, self.config) dictionaries(self) people_treeview(self, False) self.initialized = True self.clear_details() self.populate_treeview() self.go_last() c.save()
def __init__(self, *args, **kwds): # debug object global debug debug = self.debug = gdebug.GriffithDebug() gconsole.check_args(self) initialize.locations(self) initialize.i18n(self, self.locations['i18n']) self.posix = (os.name == 'posix') # Configuration if self._tmp_config.find('/') >=0 or self._tmp_config.find('\\') >=0: configFileName = self._tmp_config else: configFileName = os.path.join(self.locations['home'], self._tmp_config) self.config = config.Config(file=configFileName) initialize.location_posters(self.locations, self.config) # convert old database filename = os.path.join(self.locations['home'], self.config.get('file', 'griffith.db', section='database')) if self.config.get('file', 'griffith.db', section='database').lower().endswith('.gri'): debug.show('Old database format detected. Converting...') from dbupgrade import convert_from_old_db if convert_from_old_db(self, filename, os.path.join(self.locations['home'], 'griffith.db')): self.config.save() initialize.location_posters(self.locations, self.config) else: print 'Cant convert old database, exiting.' sys.exit(4) # create/connect db from sql import GriffithSQL self.db = GriffithSQL(self.config, self.debug, self.locations['home']) # let's check any console arguments to parse gconsole.check_args_with_db(self) self.filter_l = False # begin wxGlade: MainFrame.__init__ kwds["style"] = wx.DEFAULT_FRAME_STYLE wx.Frame.__init__(self, *args, **kwds) self.window_1 = wx.SplitterWindow(self, -1, style=wx.SP_3D|wx.SP_BORDER|wx.SP_LIVE_UPDATE) self.window_1_pane_2 = wx.Panel(self.window_1, -1) self.notebook_1 = wx.Notebook(self.window_1_pane_2, -1, style=0) self.window_1_pane_1 = wx.Panel(self.window_1, -1) # Menu Bar self.main_frame_menubar = wx.MenuBar() wxglade_tmp_menu = wx.Menu() self.new = wx.MenuItem(wxglade_tmp_menu, 1, _("&New"), _("Start a blank database"), wx.ITEM_NORMAL) wxglade_tmp_menu.AppendItem(self.new) self.save_as = wx.MenuItem(wxglade_tmp_menu, 2, _("Save as..."), _("Make a backup of the database"), wx.ITEM_NORMAL) wxglade_tmp_menu.AppendItem(self.save_as) self.revert = wx.MenuItem(wxglade_tmp_menu, 3, _("Revert"), _("Revert to a previous database backup"), wx.ITEM_NORMAL) wxglade_tmp_menu.AppendItem(self.revert) wxglade_tmp_menu.AppendSeparator() self.import_data = wx.MenuItem(wxglade_tmp_menu, 4, _("Import"), "", wx.ITEM_NORMAL) wxglade_tmp_menu.AppendItem(self.import_data) self.export_data = wx.MenuItem(wxglade_tmp_menu, 5, _("Export"), "", wx.ITEM_NORMAL) wxglade_tmp_menu.AppendItem(self.export_data) wxglade_tmp_menu.AppendSeparator() self._print = wx.MenuItem(wxglade_tmp_menu, 6, _("Print"), "", wx.ITEM_NORMAL) wxglade_tmp_menu.AppendItem(self._print) wxglade_tmp_menu.AppendSeparator() self.exit = wx.MenuItem(wxglade_tmp_menu, wx.ID_EXIT, _("Exit"), _("Terminate the program"), wx.ITEM_NORMAL) wxglade_tmp_menu.AppendItem(self.exit) self.main_frame_menubar.Append(wxglade_tmp_menu, _("File")) wxglade_tmp_menu = wx.Menu() self.add = wx.MenuItem(wxglade_tmp_menu, 7, _("Add"), _("Add a new record"), wx.ITEM_NORMAL) wxglade_tmp_menu.AppendItem(self.add) self.delete = wx.MenuItem(wxglade_tmp_menu, 8, _("Delete"), _("Deletes a record"), wx.ITEM_NORMAL) wxglade_tmp_menu.AppendItem(self.delete) self.edit = wx.MenuItem(wxglade_tmp_menu, 9, _("Edit"), _("Edit a record"), wx.ITEM_NORMAL) wxglade_tmp_menu.AppendItem(self.edit) self.duplicate = wx.MenuItem(wxglade_tmp_menu, 10, _("Duplicate"), _("Duplicates a record"), wx.ITEM_NORMAL) wxglade_tmp_menu.AppendItem(self.duplicate) wxglade_tmp_menu.AppendSeparator() wxglade_tmp_menu_sub = wx.Menu() self.open = wx.MenuItem(wxglade_tmp_menu_sub, 11, _("Open"), _("Opens the poster viewer"), wx.ITEM_NORMAL) wxglade_tmp_menu_sub.AppendItem(self.open) self.fetch = wx.MenuItem(wxglade_tmp_menu_sub, 12, _("Fetch from Amazon"), _("Fetches a poster using Amazon service"), wx.ITEM_NORMAL) wxglade_tmp_menu_sub.AppendItem(self.fetch) self.erase = wx.MenuItem(wxglade_tmp_menu_sub, 13, _("Erase"), _("Erase the current poster"), wx.ITEM_NORMAL) wxglade_tmp_menu_sub.AppendItem(self.erase) wxglade_tmp_menu.AppendMenu(wx.NewId(), _("Poster image"), wxglade_tmp_menu_sub, "") self.main_frame_menubar.Append(wxglade_tmp_menu, _("Edit")) wxglade_tmp_menu = wx.Menu() self.view_toolbar = wx.MenuItem(wxglade_tmp_menu, 14, _("Toolbar"), _("Toggles toolbar visibility"), wx.ITEM_CHECK) wxglade_tmp_menu.AppendItem(self.view_toolbar) wxglade_tmp_menu.AppendSeparator() self.view_not_seen = wx.MenuItem(wxglade_tmp_menu, 15, _("Not seen"), _("View only not seen"), wx.ITEM_RADIO) wxglade_tmp_menu.AppendItem(self.view_not_seen) self.view_loaned = wx.MenuItem(wxglade_tmp_menu, 16, _("Loaned"), _("View only loaned"), wx.ITEM_RADIO) wxglade_tmp_menu.AppendItem(self.view_loaned) self.view_all = wx.MenuItem(wxglade_tmp_menu, 17, _("All"), _("View all records"), wx.ITEM_RADIO) wxglade_tmp_menu.AppendItem(self.view_all) self.main_frame_menubar.Append(wxglade_tmp_menu, _("View")) wxglade_tmp_menu = wx.Menu() self.suggest = wx.MenuItem(wxglade_tmp_menu, 18, _("Suggest"), _("Suggest an unseen film"), wx.ITEM_NORMAL) wxglade_tmp_menu.AppendItem(self.suggest) wxglade_tmp_menu_sub = wx.Menu() self.print_cover_builtin = wx.MenuItem(wxglade_tmp_menu_sub, 19, _("Built-in"), _("Prints a cover with record data"), wx.ITEM_NORMAL) wxglade_tmp_menu_sub.AppendItem(self.print_cover_builtin) self.prints_cover_custom = wx.MenuItem(wxglade_tmp_menu_sub, 20, _("Custom"), _("Prints a cover with a custom image"), wx.ITEM_NORMAL) wxglade_tmp_menu_sub.AppendItem(self.prints_cover_custom) wxglade_tmp_menu.AppendMenu(wx.NewId(), _("Print cover"), wxglade_tmp_menu_sub, "") wxglade_tmp_menu.AppendSeparator() self.preferences = wx.MenuItem(wxglade_tmp_menu, wx.ID_PREFERENCES, _("Preferences"), _("Define the preferences"), wx.ITEM_NORMAL) wxglade_tmp_menu.AppendItem(self.preferences) self.main_frame_menubar.Append(wxglade_tmp_menu, _("Tools")) wxglade_tmp_menu = wx.Menu() self.loan_film = wx.MenuItem(wxglade_tmp_menu, 22, _("Loan"), _("Loans a film"), wx.ITEM_NORMAL) wxglade_tmp_menu.AppendItem(self.loan_film) self.return_film = wx.MenuItem(wxglade_tmp_menu, 23, _("Return"), _("Returns a previously loaned film"), wx.ITEM_NORMAL) wxglade_tmp_menu.AppendItem(self.return_film) self.email_reminder = wx.MenuItem(wxglade_tmp_menu, 24, _("E-mail reminder"), _("Sends an automatic loan reminder e-mail message "), wx.ITEM_NORMAL) wxglade_tmp_menu.AppendItem(self.email_reminder) wxglade_tmp_menu.AppendSeparator() self.people = wx.MenuItem(wxglade_tmp_menu, 25, _("People"), _("Manages people information"), wx.ITEM_NORMAL) wxglade_tmp_menu.AppendItem(self.people) self.main_frame_menubar.Append(wxglade_tmp_menu, _("Loans")) wxglade_tmp_menu = wx.Menu() self.homepage = wx.MenuItem(wxglade_tmp_menu, 26, _("Homepage"), _("Visit Griffith's homepage"), wx.ITEM_NORMAL) wxglade_tmp_menu.AppendItem(self.homepage) self.forum = wx.MenuItem(wxglade_tmp_menu, 27, _("Forum"), _("Visit Griffith's community forum"), wx.ITEM_NORMAL) wxglade_tmp_menu.AppendItem(self.forum) self.reportbug = wx.MenuItem(wxglade_tmp_menu, 28, _("Reportbug"), _("Report a new bug"), wx.ITEM_NORMAL) wxglade_tmp_menu.AppendItem(self.reportbug) wxglade_tmp_menu.AppendSeparator() self.about = wx.MenuItem(wxglade_tmp_menu, wx.ID_ABOUT, _("About"), _("Display information about this program"), wx.ITEM_NORMAL) wxglade_tmp_menu.AppendItem(self.about) self.main_frame_menubar.Append(wxglade_tmp_menu, _("Help")) self.SetMenuBar(self.main_frame_menubar) # Menu Bar end self.main_frame_statusbar = self.CreateStatusBar(1, 0) # Tool Bar self.main_frame_toolbar = wx.ToolBar(self, -1, style=wx.TB_HORIZONTAL|wx.TB_DOCKABLE|wx.TB_TEXT) self.SetToolBar(self.main_frame_toolbar) self.main_frame_toolbar.AddLabelTool(1004, _("First"), wx.Bitmap("images/go-first.png", wx.BITMAP_TYPE_ANY), wx.NullBitmap, wx.ITEM_NORMAL, "", "") self.main_frame_toolbar.AddLabelTool(1003, _("Previous"), wx.Bitmap("images/go-previous.png", wx.BITMAP_TYPE_ANY), wx.NullBitmap, wx.ITEM_NORMAL, "", "") self.main_frame_toolbar.AddLabelTool(1004, _("Next"), wx.Bitmap("images/go-next.png", wx.BITMAP_TYPE_ANY), wx.NullBitmap, wx.ITEM_NORMAL, "", "") self.main_frame_toolbar.AddLabelTool(1005, _("Last"), wx.Bitmap("images/go-last.png", wx.BITMAP_TYPE_ANY), wx.NullBitmap, wx.ITEM_NORMAL, "", "") self.main_frame_toolbar.AddSeparator() self.main_frame_toolbar.AddLabelTool(1006, _("Add"), wx.Bitmap("images/document-new.png", wx.BITMAP_TYPE_ANY), wx.NullBitmap, wx.ITEM_NORMAL, _("Add a new film"), _("Add a new film to the collection")) self.main_frame_toolbar.AddLabelTool(1008, _("Delete"), wx.Bitmap("images/user-trash.png", wx.BITMAP_TYPE_ANY), wx.NullBitmap, wx.ITEM_NORMAL, _("Delete this film"), _("Deletes this film from collection")) self.main_frame_toolbar.AddLabelTool(1009, _("Edit"), wx.Bitmap("images/edit-select-all.png", wx.BITMAP_TYPE_ANY), wx.NullBitmap, wx.ITEM_NORMAL, _("Edit film details"), _("Edit film details")) self.main_frame_toolbar.AddSeparator() self.main_frame_toolbar.AddLabelTool(1010, _("Webpage"), wx.Bitmap("images/applications-internet.png", wx.BITMAP_TYPE_ANY), wx.NullBitmap, wx.ITEM_NORMAL, _("Go to the film webpage"), _("Go to the film webpage")) self.main_frame_toolbar.AddSeparator() self.main_frame_toolbar.AddLabelTool(1013, _("Amazon Poster"), wx.Bitmap("images/applications-graphics.png", wx.BITMAP_TYPE_ANY), wx.NullBitmap, wx.ITEM_NORMAL, _("Add Poster From Amazon"), _("Try to find a poster using the Amazon Services on the web")) self.main_frame_toolbar.AddSeparator() self.main_frame_toolbar.AddLabelTool(1014, _("People"), wx.Bitmap("images/system-users.png", wx.BITMAP_TYPE_ANY), wx.NullBitmap, wx.ITEM_NORMAL, "", "") # Tool Bar end self.label_1 = wx.StaticText(self, -1, _("Filter")) self.tc_filter = wx.TextCtrl(self, -1, "") self.bt_clear_filter = wx.Button(self, -1, _("clear")) self.cb_criteria = wx.ComboBox(self, -1, choices=[], style=wx.CB_DROPDOWN) self.main_listcontrol = wx.ListCtrl(self.window_1_pane_1, -1, style=wx.LC_REPORT|wx.SUNKEN_BORDER) self.number = wx.StaticText(self.window_1_pane_2, -1, _("label_2")) self.o_title = wx.StaticText(self.window_1_pane_2, -1, _("label_2")) self.title = wx.StaticText(self.window_1_pane_2, -1, _("label_2")) self.poster = wx.BitmapButton(self.window_1_pane_2, -1, wx.NullBitmap, style=wx.BU_AUTODRAW) self.plot = wx.TextCtrl(self.notebook_1, -1, "", style=wx.TE_MULTILINE|wx.TE_READONLY|wx.TE_RICH2|wx.TE_AUTO_URL|wx.TE_LINEWRAP|wx.TE_WORDWRAP) self.cast = wx.TextCtrl(self.notebook_1, -1, "", style=wx.TE_MULTILINE|wx.TE_READONLY|wx.TE_RICH2|wx.TE_AUTO_URL|wx.TE_LINEWRAP|wx.TE_WORDWRAP) self.notes = wx.TextCtrl(self.notebook_1, -1, "", style=wx.TE_MULTILINE|wx.TE_READONLY|wx.TE_RICH2|wx.TE_AUTO_URL|wx.TE_LINEWRAP|wx.TE_WORDWRAP) self.__set_properties() self.__do_layout() self.Bind(wx.EVT_MENU, self.OnNew, self.new) self.Bind(wx.EVT_MENU, self.OnSaveAs, self.save_as) self.Bind(wx.EVT_MENU, self.OnRevert, self.revert) self.Bind(wx.EVT_MENU, self.OnImport, self.import_data) self.Bind(wx.EVT_MENU, self.OnExport, self.export_data) self.Bind(wx.EVT_MENU, self.OnPrint, self._print) self.Bind(wx.EVT_MENU, self.OnExit, self.exit) self.Bind(wx.EVT_MENU, self.OnAdd, self.add) self.Bind(wx.EVT_MENU, self.OnDelete, self.delete) self.Bind(wx.EVT_MENU, self.OnEdit, self.edit) self.Bind(wx.EVT_MENU, self.onDuplicate, self.duplicate) self.Bind(wx.EVT_MENU, self.OnPosterOpen, self.open) self.Bind(wx.EVT_MENU, self.OnPosterFromAmazon, self.fetch) self.Bind(wx.EVT_MENU, self.OnPosterErase, self.erase) self.Bind(wx.EVT_MENU, self.OnViewToolbar, self.view_toolbar) self.Bind(wx.EVT_MENU, self.OnViewNotSeen, self.view_not_seen) self.Bind(wx.EVT_MENU, self.OnViewLoaned, self.view_loaned) self.Bind(wx.EVT_MENU, self.OnViewAll, self.view_all) self.Bind(wx.EVT_MENU, self.OnSuggest, self.suggest) self.Bind(wx.EVT_MENU, self.OnPrintCoverBuiltin, self.print_cover_builtin) self.Bind(wx.EVT_MENU, self.OnPrintCoverCustom, self.prints_cover_custom) self.Bind(wx.EVT_MENU, self.OnPreferences, self.preferences) self.Bind(wx.EVT_MENU, self.OnLoanFilm, self.loan_film) self.Bind(wx.EVT_MENU, self.OnReturnFilm, self.return_film) self.Bind(wx.EVT_MENU, self.OnEmailReminder, self.email_reminder) self.Bind(wx.EVT_MENU, self.OnPeople, self.people) self.Bind(wx.EVT_MENU, self.OnHomepage, self.homepage) self.Bind(wx.EVT_MENU, self.OnForum, self.forum) self.Bind(wx.EVT_MENU, self.OnReportBug, self.reportbug) self.Bind(wx.EVT_MENU, self.OnAbout, self.about) self.Bind(wx.EVT_TOOL, self.OnFirst, id=1004) self.Bind(wx.EVT_TOOL, self.OnPrevious, id=1003) self.Bind(wx.EVT_TOOL, self.OnNext, id=1004) self.Bind(wx.EVT_TOOL, self.OnLast, id=1005) self.Bind(wx.EVT_TOOL, self.OnAdd, id=1006) self.Bind(wx.EVT_TOOL, self.OnDelete, id=1008) self.Bind(wx.EVT_TOOL, self.OnEdit, id=1009) self.Bind(wx.EVT_TOOL, self.OnWebpage, id=1010) self.Bind(wx.EVT_TOOL, self.OnAddAmazonPoster, id=1013) self.Bind(wx.EVT_TOOL, self.OnPeople, id=1014) self.Bind(wx.EVT_TEXT, self.OnFilterChange, self.tc_filter) self.Bind(wx.EVT_BUTTON, self.OnClearFilter, self.bt_clear_filter) self.Bind(wx.EVT_TEXT, self.OnChangeCriteria, self.cb_criteria) self.Bind(wx.EVT_LIST_DELETE_ITEM, self.OnMainListDelete, self.main_listcontrol) self.Bind(wx.EVT_LIST_ITEM_SELECTED, self.OnMainListSelected, self.main_listcontrol) self.Bind(wx.EVT_LIST_COL_CLICK, self.OnMainLColumnClicked, self.main_listcontrol) self.Bind(wx.EVT_BUTTON, self.OnPosterClick, self.poster) # end wxGlade initialize.locations_misc(self) #initialize.toolbar(self) initialize.treeview(self) #initialize.loans_treeview(self) #initialize.lang_treeview(self) initialize.dictionaries(self) initialize.combos(self) #initialize.preferences(self) #initialize.movie_plugins(self) #initialize.export_plugins(self) #initialize.people_treeview(self) #initialize.web_results(self) self.initialized = True #self.restore_state() #self.clear_details() self.populate_treeview()