def do_test(self, domsgbox=True): global myconfig self._tmp_home = None home_dir, config_name = gconsole.check_args() if not (config_name.find('/') >= 0 or config_name.find('\\') >= 0): config_name = os.path.join(home_dir, config_name) log.debug("config file used: %s", config_name) myconfig = config.Config(file=config_name) initialize.locations(self, home_dir) gettext.install('griffith', self.locations['i18n'], unicode=1) search_successful = '' search_unsuccessful = '' get_successful = '' get_unsuccessful = '' # test all plugins ? test_all = True dialog = gtk.MessageDialog( None, gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, gtk.MESSAGE_QUESTION, gtk.BUTTONS_NONE, 'Test all plugins ?') dialog.add_buttons(gtk.STOCK_YES, gtk.RESPONSE_YES, gtk.STOCK_NO, gtk.RESPONSE_NO) dialog.set_default_response(gtk.RESPONSE_NO) dialog.set_skip_taskbar_hint(False) response = dialog.run() dialog.destroy() if not response == gtk.RESPONSE_YES: test_all = False # iterate through all testable plugins for i in self.test_plugins: if domsgbox and test_all == False: # ask for test of that specific plugin dialog = gtk.MessageDialog( None, gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, gtk.MESSAGE_QUESTION, gtk.BUTTONS_NONE, 'Test plugin %s ?' % i) dialog.add_buttons(gtk.STOCK_YES, gtk.RESPONSE_YES, gtk.STOCK_NO, gtk.RESPONSE_NO) dialog.set_default_response(gtk.RESPONSE_NO) dialog.set_skip_taskbar_hint(False) response = dialog.run() dialog.destroy() if not response == gtk.RESPONSE_YES: continue print "Starting test of plugin: %s" % i plugin = __import__(i) # search test if self.do_test_searchplugin(i, False): search_successful = search_successful + i + ', ' else: search_unsuccessful = search_unsuccessful + i + ', ' # movie test if self.do_test_plugin(i, False): get_successful = get_successful + i + ', ' else: get_unsuccessful = get_unsuccessful + i + ', ' if domsgbox: gutils.info( 'SearchPluginTests\n Success: %s\n Failed: %s\n\nPluginTests\n Success: %s\n Failed: %s' % (search_successful, search_unsuccessful, get_successful, get_unsuccessful))
def do_test(self, domsgbox=True): global myconfig self._tmp_home = None home_dir, config_name = gconsole.check_args() if not (config_name.find('/') >= 0 or config_name.find('\\') >= 0): config_name = os.path.join(home_dir, config_name) log.debug("config file used: %s", config_name) myconfig = config.Config(file=config_name) initialize.locations(self, home_dir) gettext.install('griffith', self.locations['i18n'], unicode=1) search_successful = '' search_unsuccessful = '' get_successful = '' get_unsuccessful = '' # test all plugins ? test_all = True dialog = gtk.MessageDialog(None, gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, gtk.MESSAGE_QUESTION, gtk.BUTTONS_NONE, 'Test all plugins ?') dialog.add_buttons(gtk.STOCK_YES, gtk.RESPONSE_YES, gtk.STOCK_NO, gtk.RESPONSE_NO) dialog.set_default_response(gtk.RESPONSE_NO) dialog.set_skip_taskbar_hint(False) response = dialog.run() dialog.destroy() if not response == gtk.RESPONSE_YES: test_all = False # iterate through all testable plugins for i in self.test_plugins: if domsgbox and test_all == False: # ask for test of that specific plugin dialog = gtk.MessageDialog(None, gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, gtk.MESSAGE_QUESTION, gtk.BUTTONS_NONE, 'Test plugin %s ?' %i) dialog.add_buttons(gtk.STOCK_YES, gtk.RESPONSE_YES, gtk.STOCK_NO, gtk.RESPONSE_NO) dialog.set_default_response(gtk.RESPONSE_NO) dialog.set_skip_taskbar_hint(False) response = dialog.run() dialog.destroy() if not response == gtk.RESPONSE_YES: continue print "Starting test of plugin: %s" % i plugin = __import__(i) # search test if self.do_test_searchplugin(i, False): search_successful = search_successful + i + ', ' else: search_unsuccessful = search_unsuccessful + i + ', ' # movie test if self.do_test_plugin(i, False): get_successful = get_successful + i + ', ' else: get_unsuccessful = get_unsuccessful + i + ', ' if domsgbox: gutils.info('SearchPluginTests\n Success: %s\n Failed: %s\n\nPluginTests\n Success: %s\n Failed: %s' % (search_successful, search_unsuccessful, get_successful, get_unsuccessful))
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()