def on_show_close_splash(self, subject, changetype, objectID, *args): gui_image_manager = GuiImageManager.getInstance() bm = gui_image_manager.getImage(u'closescreen.png') self.close_splash = GaugeSplash(bm, "Closing...", self.CLOSE_GAUGE_SPLASH_TICKS) if self.close_completed: self.destroy_close_splash(None, None, None, None)
def __init__(self, parent): wx.StatusBar.__init__(self, parent, style=wx.ST_SIZEGRIP) # On Linux/OS X the resize handle and icons overlap, therefore we add an extra field. # On Windows this field is automatically set to 1 when the wx.ST_SIZEGRIP is set. self.SetFieldsCount(7) self.SetStatusStyles([wx.SB_FLAT] * 7) self.SetStatusWidths([-1, 250, 50, 19, 19, 19, 19]) self._gui_image_manager = GuiImageManager.getInstance() self.guiutility = GUIUtility.getInstance() self.utility = self.guiutility.utility self.library_manager = self.guiutility.library_manager self.ff_checkbox = wx.CheckBox(self, -1, 'Family filter', style=wx.ALIGN_RIGHT) self.ff_checkbox.Bind(wx.EVT_CHECKBOX, self.OnCheckbox) self.ff_checkbox.SetValue(self.guiutility.getFamilyFilter()) self.speed_down_icon = self._gui_image_manager.getBitmap(self, u"arrow", self.GetBackgroundColour(), state=0) self.speed_down_sbmp = wx.StaticBitmap(self, -1, self.speed_down_icon) self.speed_down_sbmp.Bind(wx.EVT_RIGHT_UP, self.OnDownloadPopup) self.speed_down = wx.StaticText(self, -1, '') self.speed_down.Bind(wx.EVT_RIGHT_UP, self.OnDownloadPopup) self.speed_up_icon = self.speed_down_icon.ConvertToImage().Rotate90().Rotate90().ConvertToBitmap() self.speed_up_sbmp = wx.StaticBitmap(self, -1, self.speed_up_icon) self.speed_up_sbmp.Bind(wx.EVT_RIGHT_UP, self.OnUploadPopup) self.speed_up = wx.StaticText(self, -1, '') self.speed_up.Bind(wx.EVT_RIGHT_UP, self.OnUploadPopup) self.free_space_icon = self._gui_image_manager.getImage(u"drive.png") self.free_space_sbmp = wx.StaticBitmap(self, -1, self.free_space_icon) self.free_space = wx.StaticText(self, -1, '') self.searchConnectionImages = [u"progressbarEmpty.png", u"progressbarFull.png"] self.searchConnectionImages = [self._gui_image_manager.getImage(image) for image in self.searchConnectionImages] self.activityImages = [u"statusbar_activity.png", u"statusbar_noactivity.png"] self.activityImages = [self._gui_image_manager.getImage(image) for image in self.activityImages] self.connection = HorizontalGauge(self, self.searchConnectionImages[0], self.searchConnectionImages[1]) self.activity = wx.StaticBitmap(self, -1, self.activityImages[1]) self.activity_timer = None self.channelconnections = 0 self.bmp_firewall_warning = self._gui_image_manager.getImage(u"statusbar_warning.png") self.bmp_firewall_ok = self._gui_image_manager.getImage(u"statusbar_ok.png") self.firewallStatus = ActionButton(self, -1, self.bmp_firewall_warning) self.firewallStatus.SetSize((16, 16)) self.firewallStatus.SetCursor(wx.StockCursor(wx.CURSOR_DEFAULT)) self.firewallStatus.SetToolTipString('Port status unknown') self.firewallStatus.Enable(False) self.firewallStatus.SetBitmapDisabled(self.bmp_firewall_warning) self.SetTransferSpeeds(0, 0) self.Bind(wx.EVT_SIZE, self.OnSize) self.library_manager.add_download_state_callback(self.RefreshTransferSpeed)
def Notify(self, title, msg='', icon=wx.ART_INFORMATION): if not self or not self.frame or not self.frame.actlist: return if sys.platform == 'win32' and not self.frame.IsShownOnScreen(): self.frame.tbicon.Notify(title, msg, icon) else: if isinstance(icon, basestring): icon = wx.ArtProvider.GetBitmap(icon, wx.ART_FRAME_ICON) or \ GuiImageManager.getInstance().getImage(u"notify_%s.png" % icon) self.frame.actlist.Notify(msg or title, icon)
def on_show_startup_splash(self, subject, changetype, objectID, *args): gui_image_manager = GuiImageManager.getInstance() bm = gui_image_manager.getImage(u'splash.png') self.startup_splash = GaugeSplash(bm, "Loading...", self.START_GAUGE_SPLASH_TICKS) # Check if the destroy message has already arrived. Loading the splash takes a while, # so the setup may have already been completed. if self.startup_completed: self.destroy_startup_splash(None, None, None, None)
def GetFilterPanel(self, parent): panel = wx.Panel(parent) panel.SetMinSize((-1, 25)) panel.SetBackgroundColour(self.GetBackgroundColour()) panel.SetForegroundColour(self.GetForegroundColour()) self.icon_down = GuiImageManager.getInstance().getBitmap(self, 'arrow', self.GetBackgroundColour(), state=0) self.icon_right = self.icon_down.ConvertToImage().Rotate90(False).ConvertToBitmap() self.sortby_icon = wx.StaticBitmap(panel, -1, self.icon_right) self.sortby = LinkStaticText(panel, 'Sort by', None, font_colour=wx.BLACK) self.sortby.Bind(wx.EVT_LEFT_DOWN, self.OnPopupSort) self.filetype_icon = wx.StaticBitmap(panel, -1, self.icon_right) self.filetype = LinkStaticText(panel, 'File type', None, font_colour=wx.BLACK) self.filetype.Bind(wx.EVT_LEFT_DOWN, self.OnPopupFileType) self.filesize_str = StaticText(panel, -1, 'File size:') self.filesize = MinMaxSlider(panel, -1) self.filesize.SetFormatter(size_format) self.search = wx.SearchCtrl(panel) self.search.SetDescriptiveText('Filter results') self.search.Bind(wx.EVT_TEXT, self.OnKey) if sys.platform == 'darwin': self.search.SetMinSize((175, 20)) else: self.search.SetMinSize((175, -1)) hSizer = wx.BoxSizer(wx.HORIZONTAL) hSizer.AddSpacer((self.spacers[0], -1)) hSizer.Add(self.sortby_icon, 0, wx.CENTER | wx.RIGHT, 3) hSizer.Add(self.sortby, 0, wx.CENTER) hSizer.AddSpacer((45, -1)) hSizer.Add(self.filetype_icon, 0, wx.CENTER | wx.RIGHT, 3) hSizer.Add(self.filetype, 0, wx.CENTER) hSizer.AddSpacer((45, -1)) hSizer.Add(self.filesize_str, 0, wx.CENTER | wx.RIGHT, 10) hSizer.Add(self.filesize, 0, wx.CENTER) hSizer.AddStretchSpacer() hSizer.Add(self.search, 0, wx.CENTER) hSizer.AddSpacer((self.spacers[1], -1)) self.filter_sizer = hSizer vSizer = wx.BoxSizer(wx.VERTICAL) vSizer.Add(hSizer, 1, wx.EXPAND) panel.SetSizer(vSizer) return panel
def avantar(self): if is_android(): return None from Tribler.Main.vwxGUI.GuiImageManager import GuiImageManager, SMALL_ICON_MAX_DIM, data2wxBitmap gui_image_manager = GuiImageManager.getInstance() data = None if self.peer_id is None: mime, data = self.get_mugshot() if data: data = data2wxBitmap(mime, data, SMALL_ICON_MAX_DIM) if data is None: data = gui_image_manager.getImage(u"PEER_THUMB", SMALL_ICON_MAX_DIM) return data
def __createBitmap(self, parent, background, type, flag=0): self._logger.debug("Creating new sorting bitmaps %s %s %s", parent, background, type) gui_image_manager = GuiImageManager.getInstance() down = gui_image_manager.getBitmap(parent, type, background, flag) img = down.ConvertToImage() up = img.Rotate90().Rotate90().ConvertToBitmap() empty = wx.EmptyBitmap(up.GetWidth(), up.GetHeight()) dc = wx.MemoryDC(empty) dc.SetBackground(wx.Brush(background)) dc.Clear() dc.SelectObject(wx.NullBitmap) del dc return [down, up, empty]
def __init__(self, parent, parent_list): wx.Panel.__init__(self, parent) self.guiutility = GUIUtility.getInstance() self.SetBackgroundColour(FILTER_GREY) self.SetForegroundColour(parent.GetForegroundColour()) self.icon_down = GuiImageManager.getInstance().getBitmap(self, 'arrow', self.GetBackgroundColour(), state=0) self.icon_right = self.icon_down.ConvertToImage().Rotate90(False).ConvertToBitmap() self.parent_list = parent_list self.header_cols = [{'name': 'Name', 'fontSize': 2, 'showColumname': False}] self.header_list = self.GetHeaderList(self) vSizer = wx.BoxSizer(wx.VERTICAL) vSizer.Add(self.header_list, 1, wx.EXPAND) self.SetSizer(vSizer)
def __init__(self, parent, fullscreen=True): wx.Panel.__init__(self, parent, -1) self.SetBackgroundColour(wx.WHITE) self.guiutility = GUIUtility.getInstance() self.utility = self.guiutility.utility self.session = self.utility.session self.dispersy = self.utility.session.lm.dispersy self.swarm = GuiImageManager.getInstance().getImage(u"darknet.png") self.font_small = self.GetFont() self.font_large = self.GetFont() self.font_large.SetPointSize(self.font_large.GetPointSize() + 2) self.circuits = {} self.circuits_old = None self.hop_to_colour = {} self.colours = [ wx.RED, wx.Colour(156, 18, 18), wx.Colour(183, 83, 83), wx.Colour(254, 134, 134), wx.Colour(254, 190, 190) ] self.selected_circuit = None self.hop_hover_evt = None self.hop_hover = None self.hop_active_evt = None self.hop_active = None self.hops = -1 self.fullscreen = fullscreen self.radius = 20 if self.fullscreen else 12 self.line_width = 2 if self.fullscreen else 1 self.margin_x = self.margin_y = self.radius self.swarm_size = wx.Size(180, 60) self.AddComponents() self.tunnel_community = None self.try_community()
def __init__(self, parent, fullscreen=True): wx.Panel.__init__(self, parent, -1) self.SetBackgroundColour(wx.WHITE) self.guiutility = GUIUtility.getInstance() self.utility = self.guiutility.utility self.session = self.utility.session self.dispersy = self.utility.session.lm.dispersy self.swarm = GuiImageManager.getInstance().getImage(u"darknet.png") self.font_small = self.GetFont() self.font_large = self.GetFont() self.font_large.SetPointSize(self.font_large.GetPointSize() + 2) self.circuits = {} self.circuits_old = None self.hop_to_colour = {} self.colours = [wx.RED, wx.Colour(156, 18, 18), wx.Colour(183, 83, 83), wx.Colour(254, 134, 134), wx.Colour(254, 190, 190)] self.selected_circuit = None self.hop_hover_evt = None self.hop_hover = None self.hop_active_evt = None self.hop_active = None self.hops = -1 self.fullscreen = fullscreen self.radius = 20 if self.fullscreen else 12 self.line_width = 2 if self.fullscreen else 1 self.margin_x = self.margin_y = self.radius self.swarm_size = wx.Size(180, 60) self.AddComponents() self.tunnel_community = None self.try_community()
def AddComponents(self): self.SetForegroundColour(wx.SystemSettings.GetColour(wx.SYS_COLOUR_WINDOWTEXT)) self._logger.debug("TopSearchPanel: OnCreate") gui_image_manager = GuiImageManager.getInstance() if sys.platform == 'darwin': self.searchField = wx.SearchCtrl(self, -1, "", style=wx.TE_PROCESS_ENTER | wx.NO_BORDER) self.searchField.Bind(wx.EVT_SEARCHCTRL_SEARCH_BTN, self.OnSearchKeyDown) self.searchField.Bind(wx.EVT_TEXT_ENTER, self.OnSearchKeyDown) self.searchField.SetDescriptiveText('Search Files or Channels') self.searchField.SetMinSize((400, 20)) else: self.searchFieldPanel = FancyPanel(self, radius=5, border=wx.ALL) self.searchFieldPanel.SetBorderColour(SEPARATOR_GREY, highlight=TRIBLER_RED) self.searchField = TextCtrlAutoComplete(self.searchFieldPanel, style=wx.NO_BORDER, entrycallback=self.complete) # Since we have set the style to wx.NO_BORDER, the default height will be # too large. Therefore, we need to set the correct height. _, height = self.GetTextExtent("Gg") self.searchField.SetMinSize((-1, height)) self.searchFieldPanel.SetMinSize((400, 25)) self.searchFieldPanel.SetBackgroundColour(self.searchField.GetBackgroundColour()) self.searchField.Bind(wx.EVT_KILL_FOCUS, self.searchFieldPanel.OnKillFocus) self.searchField.Bind(wx.EVT_TEXT_ENTER, self.OnSearchKeyDown) self.go = ProgressButton(self, -1) self.go.SetMinSize((50, 25)) self.go.Bind(wx.EVT_LEFT_UP, self.OnSearchKeyDown) ag_fname = os.path.join(self.guiutility.utility.getPath(), LIBRARYNAME, 'Main', 'vwxGUI', 'images', 'search_new.gif') self.ag = wx.animate.GIFAnimationCtrl(self, -1, ag_fname) self.ag.UseBackgroundColour(True) self.ag.SetBackgroundColour(wx.Colour(244, 244, 244)) self.ag.Hide() download_bmp = gui_image_manager.getImage(u"download.png") self.download_btn = ActionButton(self, -1, download_bmp) self.download_btn.Enable(False) upload_bmp = gui_image_manager.getImage(u"upload.png") self.upload_btn = ActionButton(self, -1, upload_bmp) self.upload_btn.Enable(False) stop_bmp = gui_image_manager.getImage(u"pause.png") self.stop_btn = ActionButton(self, -1, stop_bmp) self.stop_btn.Enable(False) delete_bmp = gui_image_manager.getImage(u"delete.png") self.delete_btn = ActionButton(self, -1, delete_bmp) self.delete_btn.Enable(False) play_bmp = gui_image_manager.getImage(u"play.png") self.play_btn = ActionButton(self, -1, play_bmp) self.play_btn.Enable(False) add_bmp = gui_image_manager.getImage(u"add.png") self.add_btn = ActionButton(self, -1, add_bmp) self.SetButtonHandler(self.add_btn, self.OnAdd, 'Download an external torrent.') settings_bmp = gui_image_manager.getImage(u"settings.png") self.settings_btn = ActionButton(self, -1, settings_bmp) self.SetButtonHandler(self.settings_btn, self.OnSettings, 'Change settings.') mainSizer = wx.BoxSizer(wx.HORIZONTAL) if sys.platform != 'darwin': vSizer = wx.BoxSizer(wx.VERTICAL) vSizer.AddStretchSpacer() vSizer.Add(self.searchField, 0, wx.EXPAND | wx.RESERVE_SPACE_EVEN_IF_HIDDEN | wx.LEFT | wx.RIGHT, 5) vSizer.AddStretchSpacer() self.searchFieldPanel.SetSizer(vSizer) vSizer.Layout() # Add searchbox etc. self.searchSizer = wx.BoxSizer(wx.VERTICAL) searchBoxSizer = wx.BoxSizer(wx.HORIZONTAL) if sys.platform == 'darwin': searchBoxSizer.Add(self.searchField, 1, wx.CENTER | wx.RESERVE_SPACE_EVEN_IF_HIDDEN) else: searchBoxSizer.Add(self.searchFieldPanel, 1, wx.CENTER | wx.RESERVE_SPACE_EVEN_IF_HIDDEN) searchBoxSizer.Add(self.go, 0, wx.CENTER | wx.LEFT | wx.RESERVE_SPACE_EVEN_IF_HIDDEN, 5) # add searchbutton searchBoxSizer.Add(self.ag, 0, wx.CENTER | wx.LEFT | wx.RESERVE_SPACE_EVEN_IF_HIDDEN, 5) # add animation self.searchSizer.Add(searchBoxSizer, 1, wx.EXPAND) # finished searchSizer, add to mainSizer mainSizer.Add(self.searchSizer, 0, wx.EXPAND | wx.LEFT, 10) mainSizer.AddSpacer((40, 0)) # add buttons buttonSizer = wx.BoxSizer(wx.HORIZONTAL) buttonSizer.Add(self.download_btn, 0, wx.CENTER | wx.RIGHT, 5) buttonSizer.Add(self.upload_btn, 0, wx.CENTER | wx.RIGHT, 5) buttonSizer.Add(self.stop_btn, 0, wx.CENTER | wx.RIGHT, 5) buttonSizer.Add(self.delete_btn, 0, wx.CENTER | wx.RIGHT, 5) buttonSizer.Add(self.play_btn, 0, wx.CENTER | wx.RIGHT, 5) buttonSizer.AddSpacer((35, 0)) buttonSizer.AddStretchSpacer() buttonSizer.Add(self.add_btn, 0, wx.CENTER | wx.RIGHT, 5) buttonSizer.Add(self.settings_btn, 0, wx.CENTER | wx.RIGHT, 5) mainSizer.Add(buttonSizer, 1, wx.EXPAND) self.SetSizer(mainSizer) self.Layout()
def __init__(self, parent, utility, vlcwrap, bg_color): wx.Panel.__init__(self, parent, -1) self._logger = logging.getLogger(self.__class__.__name__) self._gui_image_manager = GuiImageManager.getInstance() self.utility = utility self.guiutility = utility.guiUtility self.videoplayer = self.guiutility.videoplayer self.parent = parent self.SetBackgroundColour(bg_color) self.fullscreenwindow = None self.download = None self.download_hash = None self.update = True self.timeoffset = None self.oldvolume = 0 vSizer = wx.BoxSizer(wx.VERTICAL) self.vlcwrap = vlcwrap if vlcwrap: self.vlcwin = VLCWindow(self, vlcwrap) self.vlcwin.SetMinSize(EmbeddedPlayerPanel.VIDEO_SIZE) vSizer.Add(self.vlcwin, 1, wx.EXPAND, 0) self.logowin = LogoWindow(self) self.logowin.SetMinSize(EmbeddedPlayerPanel.VIDEO_SIZE) vSizer.Add(self.logowin, 1, wx.EXPAND, 0) self.ctrlpanel = FancyPanel(self, border=wx.TOP) self.ctrlpanel.SetMinSize((-1, 30)) self.ctrlpanel.SetBorderColour(SEPARATOR_GREY) self.ctrlpanel.SetBackgroundColour(GRADIENT_LGREY, GRADIENT_DGREY) self.ctrlsizer = wx.BoxSizer(wx.HORIZONTAL) self.slider = VideoSlider(self.ctrlpanel) self.slider.Enable(False) self.timeposition = TransparentText(self.ctrlpanel, -1, "--:-- / --:--") self.bmp_muted = self._gui_image_manager.getImage(u"video_muted.png") self.bmp_unmuted = self._gui_image_manager.getImage(u"video_unmuted.png") self.mute = ActionButton(self.ctrlpanel, -1, self.bmp_unmuted) self.mute.Bind(wx.EVT_LEFT_UP, self.MuteClicked) self.bmp_pause = self._gui_image_manager.getImage(u"video_pause.png") self.bmp_play = self._gui_image_manager.getImage(u"video_play.png") self.ppbtn = ActionButton(self.ctrlpanel, -1, self.bmp_play) self.ppbtn.Bind(wx.EVT_LEFT_UP, self.PlayPause) self.ppbtn.Enable(False) self.sbtn = ActionButton(self.ctrlpanel, -1, self._gui_image_manager.getImage(u"video_stop.png")) self.sbtn.Bind(wx.EVT_LEFT_UP, self.OnStop) self.sbtn.Enable(False) self.volctrl = VideoVolume(self.ctrlpanel, -1) self.volctrl.SetVolumeHandler(self.OnVolumeChanged) self.volctrl.SetMinSize((30, 17)) self.volctrl.Enable(False) self.fsbtn = ActionButton(self.ctrlpanel, -1, self._gui_image_manager.getImage(u"video_fullscreen.png")) self.fsbtn.Bind(wx.EVT_LEFT_UP, self.FullScreen) self.fsbtn.Enable(False) self.ctrlsizer.AddSpacer((10, -1)) self.ctrlsizer.Add(self.ppbtn, 0, wx.ALIGN_CENTER_VERTICAL | wx.TOP, 1) self.ctrlsizer.AddSpacer((10, -1)) self.ctrlsizer.Add(self.sbtn, 0, wx.ALIGN_CENTER_VERTICAL | wx.TOP, 1) self.ctrlsizer.AddSpacer((10, -1)) self.ctrlsizer.Add(self.slider, 1, wx.ALIGN_CENTER_VERTICAL | wx.RIGHT, 5) self.ctrlsizer.Add(self.timeposition, 0, wx.ALIGN_CENTER_VERTICAL) self.ctrlsizer.AddSpacer((10, -1)) self.ctrlsizer.Add(self.mute, 0, wx.ALIGN_CENTER_VERTICAL | wx.TOP, 1) self.ctrlsizer.AddSpacer((5, -1)) self.ctrlsizer.Add(self.volctrl, 0, wx.ALIGN_CENTER_VERTICAL | wx.TOP, 1) self.ctrlsizer.AddSpacer((10, -1)) self.ctrlsizer.Add(self.fsbtn, 0, wx.ALIGN_CENTER_VERTICAL | wx.TOP, 1) self.ctrlsizer.AddSpacer((10, -1)) self.ctrlpanel.SetSizer(self.ctrlsizer) vSizer.Add(self.ctrlpanel, 0, wx.ALIGN_BOTTOM | wx.EXPAND) self.notifier = self.guiutility.utility.session.notifier self.SetSizer(vSizer) self.playtimer = None self.timer = None if self.vlcwrap: self.SetMinSize((EmbeddedPlayerPanel.VIDEO_SIZE[0], -1)) self.vlcwin.Show(True) self.logowin.Show(False) self.ctrlsizer.ShowItems(True) self.guiutility.frame.Layout() self.guiutility.library_manager.add_download_state_callback(self.OnStatesCallback) self.guiutility.utility.session.add_observer(self.OnVideoBuffering, NTFY_TORRENTS, [NTFY_VIDEO_BUFFERING]) self.videoplayer.set_internalplayer_callback(self.LoadAndStartPlay)
def __create_s6(self, tree_root, sizer): exp_panel, exp_vsizer = create_section(self, sizer, "Anonymity") item_id = self._tree_ctrl.AppendItem(tree_root, "Anonymity", data=wx.TreeItemData(exp_panel)) exp_s1_sizer = create_subsection(exp_panel, exp_vsizer, "Anonymity in Tribler", 1, 3) self._become_exitnode = wx.CheckBox(exp_panel, label="Allow being an exit node") exp_s1_sizer.Add(self._become_exitnode, 0, wx.EXPAND) exp_s1_faq_text = wx.StaticText( exp_panel, label="By allowing Tribler to be an exit node, your computer will act as a proxy for other Tribler users' bittorrent traffic, be it seeding or downloading. \n" "Check your local laws and make sure you are aware of the implications of enabling this checkbox.") exp_s1_sizer.Add(exp_s1_faq_text, 0, wx.EXPAND | wx.TOP, 10) # Add slider self._lbls = [] self.sliderlabels = wx.BoxSizer(wx.HORIZONTAL) lbl = wx.StaticText(exp_panel, -1, 'High speed\nMinimum anonymity', style=wx.ALIGN_CENTRE_HORIZONTAL) self._lbls.append(lbl) self.sliderlabels.Add(lbl) self.sliderlabels.AddStretchSpacer() lbl = wx.StaticText(exp_panel, -1, 'Low speed\nStrong anonymity', style=wx.ALIGN_CENTRE_HORIZONTAL) self._lbls.append(lbl) self.sliderlabels.Add(lbl) self.slider_images = [GuiImageManager.getInstance().getImage(u"scale_%d.png" % i) for i in range(6)] self.slider_bitmap = wx.StaticBitmap(exp_panel, -1, self.slider_images[0]) self._sliderhops = wx.Slider(exp_panel, -1, 1, 1, 3, wx.DefaultPosition, style=wx.SL_AUTOTICKS | wx.SL_HORIZONTAL) self._sliderhops.Bind(wx.EVT_SLIDER, self.OnSlideHops) hop_count = wx.BoxSizer(wx.HORIZONTAL) hop_count.AddSpacer((10, -1)) for count in xrange(1, 4): lbl = wx.StaticText(exp_panel, -1, '%d' % count, style=wx.ALIGN_CENTRE_HORIZONTAL) self._lbls.append(lbl) hop_count.Add(lbl) if count != 3: hop_count.AddStretchSpacer() else: hop_count.AddSpacer((10, -1)) labels_and_slider = wx.BoxSizer(wx.VERTICAL) labels_and_slider.Add(self.sliderlabels, 0, wx.EXPAND) labels_and_slider.Add(self._sliderhops, 0, wx.EXPAND) labels_and_slider.Add(hop_count, 0, wx.EXPAND) slider_sizer = wx.BoxSizer(wx.HORIZONTAL) slider_sizer.Add(labels_and_slider, 1, wx.RIGHT, 10) slider_sizer.Add(self.slider_bitmap) proxytext = wx.StaticText(exp_panel, -1, 'Please select how many encrypted hops you want to use for your downloads:') exp_s2_sizer = create_subsection(exp_panel, exp_vsizer, "Proxy downloading", 1, 3) exp_s2_sizer.Add(proxytext, 0, wx.EXPAND | wx.BOTTOM, 10) exp_s2_sizer.Add(slider_sizer, 0, wx.EXPAND | wx.TOP | wx.BOTTOM, 5) # load values self._become_exitnode.SetValue(self.utility.session.get_tunnel_community_exitnode_enabled()) self._sliderhops.SetValue(self.utility.read_config('default_number_hops')) return exp_panel, item_id
def InitStage1(self, installdir, autoload_discovery=True, use_torrent_search=True, use_channel_search=True): """ Stage 1 start: pre-start the session to handle upgrade. """ # Make sure the installation dir is on the PATH os.environ['PATH'] += os.pathsep + os.path.abspath(installdir) self.gui_image_manager = GuiImageManager.getInstance(installdir) # Start Tribler Session defaultConfig = SessionStartupConfig() state_dir = defaultConfig.get_state_dir() # Switch to the state dir so relative paths can be used (IE, in LevelDB store paths) if not os.path.exists(state_dir): os.makedirs(state_dir) os.chdir(state_dir) cfgfilename = Session.get_default_config_filename(state_dir) self._logger.debug(u"Session config %s", cfgfilename) try: self.sconfig = SessionStartupConfig.load(cfgfilename) except: try: self.sconfig = convertSessionConfig(os.path.join(state_dir, 'sessconfig.pickle'), cfgfilename) convertMainConfig(state_dir, os.path.join(state_dir, 'abc.conf'), os.path.join(state_dir, STATEDIR_GUICONFIG)) except: self.sconfig = SessionStartupConfig() self.sconfig.set_state_dir(state_dir) self.sconfig.set_install_dir(self.installdir) # TODO(emilon): Do we still want to force limit this? With the new # torrent store it should be pretty fast even with more that that. # Arno, 2010-03-31: Hard upgrade to 50000 torrents collected self.sconfig.set_torrent_collecting_max_torrents(50000) dlcfgfilename = get_default_dscfg_filename(self.sconfig.get_state_dir()) self._logger.debug("main: Download config %s", dlcfgfilename) try: defaultDLConfig = DefaultDownloadStartupConfig.load(dlcfgfilename) except: try: defaultDLConfig = convertDefaultDownloadConfig( os.path.join(state_dir, 'dlconfig.pickle'), dlcfgfilename) except: defaultDLConfig = DefaultDownloadStartupConfig.getInstance() if not defaultDLConfig.get_dest_dir(): defaultDLConfig.set_dest_dir(get_default_dest_dir()) if not os.path.isdir(defaultDLConfig.get_dest_dir()): try: os.makedirs(defaultDLConfig.get_dest_dir()) except: # Could not create directory, ask user to select a different location dlg = wx.DirDialog(None, "Could not find download directory, please select a new location to store your downloads", style=wx.DEFAULT_DIALOG_STYLE) dlg.SetPath(get_default_dest_dir()) if dlg.ShowModal() == wx.ID_OK: new_dest_dir = dlg.GetPath() defaultDLConfig.set_dest_dir(new_dest_dir) defaultDLConfig.save(dlcfgfilename) self.sconfig.save(cfgfilename) else: # Quit self.onError = lambda e: self._logger.error( "tribler: quitting due to non-existing destination directory") raise Exception() if not use_torrent_search: self.sconfig.set_enable_torrent_search(False) if not use_channel_search: self.sconfig.set_enable_channel_search(False) session = Session(self.sconfig, autoload_discovery=autoload_discovery) session.add_observer(self.show_upgrade_dialog, NTFY_UPGRADER, [NTFY_STARTED]) self.upgrader = session.prestart() while not self.upgrader.is_done: wx.SafeYield() sleep(0.1) return session
def __create_s1(self, tree_root, sizer): general_panel, gp_vsizer = create_section(self, sizer, "General") item_id = self._tree_ctrl.AppendItem(tree_root, "General", data=wx.TreeItemData(general_panel)) # Tribler Profile gp_s1_sizer = create_subsection(general_panel, gp_vsizer, "Tribler Profile", 2) add_label(general_panel, gp_s1_sizer, "Nickname") self._my_name_field = wx.TextCtrl(general_panel, style=wx.TE_PROCESS_ENTER) self._my_name_field.SetMaxLength(40) gp_s1_sizer.Add(self._my_name_field, 1, wx.EXPAND) add_label(general_panel, gp_s1_sizer, "Profile Image") self._thumb = wx.StaticBitmap(general_panel, size=(80, 80)) self._edit = wx.Button(general_panel, label="Change Image") gp_s1_porfile_vsizer = wx.BoxSizer(wx.VERTICAL) gp_s1_porfile_vsizer.Add(self._thumb, 0, wx.LEFT, 1) gp_s1_porfile_vsizer.Add(self._edit) gp_s1_sizer.Add(gp_s1_porfile_vsizer, 0, wx.TOP, 3) # Download Location gp_s2_sizer = create_subsection(general_panel, gp_vsizer, "Download Location", 1) gp_s2_label = wx.StaticText(general_panel, label="Save files to:") gp_s2_sizer.Add(gp_s2_label) gp_s2_hsizer = wx.BoxSizer(wx.HORIZONTAL) self._disk_location_ctrl = EditText(general_panel, validator=DirectoryValidator()) gp_s2_hsizer.Add(self._disk_location_ctrl, 1, wx.ALIGN_CENTER_VERTICAL) self._browse = wx.Button(general_panel, label="Browse") gp_s2_hsizer.Add(self._browse) gp_s2_sizer.Add(gp_s2_hsizer, 0, wx.EXPAND) self._disk_location_choice = wx.CheckBox(general_panel, label="Let me choose a location for every download") self._disk_location_choice.Bind(wx.EVT_CHECKBOX, self.OnChooseLocationChecked) self._disk_location_choice.SetValue(False) gp_s2_sizer.Add(self._disk_location_choice) self._default_anonymous_label = wx.StaticText(general_panel, label="Default Anonymous Level:") self._default_anonymity_dialog = AnonymityDialog(general_panel) gp_s2_sizer.Add(self._default_anonymous_label, 0, wx.EXPAND) gp_s2_sizer.Add(self._default_anonymity_dialog, 0, wx.EXPAND) # Minimize if sys.platform == "darwin": self._minimize_to_tray = None else: gp_s3_sizer = create_subsection(general_panel, gp_vsizer, "Minimize", 1) self._minimize_to_tray = wx.CheckBox(general_panel, label="Minimize to tray") self._minimize_to_tray.SetValue(False) gp_s3_sizer.Add(self._minimize_to_tray) self._edit.Bind(wx.EVT_BUTTON, self.EditClicked) self._browse.Bind(wx.EVT_BUTTON, self.BrowseClicked) # nickname self._my_name_field.SetValue(self.utility.session.get_nickname()) # thumbnail mime, data = self.utility.session.get_mugshot() if data is None: gui_image_manager = GuiImageManager.getInstance() mugshot = gui_image_manager.getImage(u"PEER_THUMB") else: mugshot = data2wxBitmap(mime, data) self._thumb.SetBitmap(mugshot) # download location if self.utility.read_config('saveas'): location_dir = self.utility.read_config('saveas') else: location_dir = self.defaultDLConfig.get_dest_dir() self._disk_location_ctrl.SetValue(location_dir) self._disk_location_choice.SetValue(self.utility.read_config('showsaveas')) self.OnChooseLocationChecked(None) # minimize to tray if sys.platform != "darwin": min_to_tray = self.utility.read_config('mintray') == 1 self._minimize_to_tray.SetValue(min_to_tray) return general_panel, item_id
def __init__(self, parent, utility, vlcwrap, bg_color): wx.Panel.__init__(self, parent, -1) self._logger = logging.getLogger(self.__class__.__name__) self._gui_image_manager = GuiImageManager.getInstance() self.utility = utility self.guiutility = utility.guiUtility self.videoplayer = self.guiutility.videoplayer self.parent = parent self.SetBackgroundColour(bg_color) self.fullscreenwindow = None self.download = None self.download_hash = None self.update = True self.timeoffset = None self.oldvolume = 0 vSizer = wx.BoxSizer(wx.VERTICAL) self.vlcwrap = vlcwrap if vlcwrap: self.vlcwin = VLCWindow(self, vlcwrap) self.vlcwin.SetMinSize(EmbeddedPlayerPanel.VIDEO_SIZE) vSizer.Add(self.vlcwin, 1, wx.EXPAND, 0) self.logowin = LogoWindow(self) self.logowin.SetMinSize(EmbeddedPlayerPanel.VIDEO_SIZE) vSizer.Add(self.logowin, 1, wx.EXPAND, 0) self.ctrlpanel = FancyPanel(self, border=wx.TOP) self.ctrlpanel.SetMinSize((-1, 30)) self.ctrlpanel.SetBorderColour(SEPARATOR_GREY) self.ctrlpanel.SetBackgroundColour(GRADIENT_LGREY, GRADIENT_DGREY) self.ctrlsizer = wx.BoxSizer(wx.HORIZONTAL) self.slider = VideoSlider(self.ctrlpanel) self.slider.Enable(False) self.timeposition = TransparentText(self.ctrlpanel, -1, "--:-- / --:--") self.bmp_muted = self._gui_image_manager.getImage( u"video_muted.png") self.bmp_unmuted = self._gui_image_manager.getImage( u"video_unmuted.png") self.mute = ActionButton(self.ctrlpanel, -1, self.bmp_unmuted) self.mute.Bind(wx.EVT_LEFT_UP, self.MuteClicked) self.bmp_pause = self._gui_image_manager.getImage( u"video_pause.png") self.bmp_play = self._gui_image_manager.getImage(u"video_play.png") self.ppbtn = ActionButton(self.ctrlpanel, -1, self.bmp_play) self.ppbtn.Bind(wx.EVT_LEFT_UP, self.PlayPause) self.ppbtn.Enable(False) self.sbtn = ActionButton( self.ctrlpanel, -1, self._gui_image_manager.getImage(u"video_stop.png")) self.sbtn.Bind(wx.EVT_LEFT_UP, self.OnStop) self.sbtn.Enable(False) self.volctrl = VideoVolume(self.ctrlpanel, -1) self.volctrl.SetVolumeHandler(self.OnVolumeChanged) self.volctrl.SetMinSize((30, 17)) self.volctrl.Enable(False) self.fsbtn = ActionButton( self.ctrlpanel, -1, self._gui_image_manager.getImage(u"video_fullscreen.png")) self.fsbtn.Bind(wx.EVT_LEFT_UP, self.FullScreen) self.fsbtn.Enable(False) self.ctrlsizer.AddSpacer((10, -1)) self.ctrlsizer.Add(self.ppbtn, 0, wx.ALIGN_CENTER_VERTICAL | wx.TOP, 1) self.ctrlsizer.AddSpacer((10, -1)) self.ctrlsizer.Add(self.sbtn, 0, wx.ALIGN_CENTER_VERTICAL | wx.TOP, 1) self.ctrlsizer.AddSpacer((10, -1)) self.ctrlsizer.Add(self.slider, 1, wx.ALIGN_CENTER_VERTICAL | wx.RIGHT, 5) self.ctrlsizer.Add(self.timeposition, 0, wx.ALIGN_CENTER_VERTICAL) self.ctrlsizer.AddSpacer((10, -1)) self.ctrlsizer.Add(self.mute, 0, wx.ALIGN_CENTER_VERTICAL | wx.TOP, 1) self.ctrlsizer.AddSpacer((5, -1)) self.ctrlsizer.Add(self.volctrl, 0, wx.ALIGN_CENTER_VERTICAL | wx.TOP, 1) self.ctrlsizer.AddSpacer((10, -1)) self.ctrlsizer.Add(self.fsbtn, 0, wx.ALIGN_CENTER_VERTICAL | wx.TOP, 1) self.ctrlsizer.AddSpacer((10, -1)) self.ctrlpanel.SetSizer(self.ctrlsizer) vSizer.Add(self.ctrlpanel, 0, wx.ALIGN_BOTTOM | wx.EXPAND) self.notifier = self.guiutility.utility.session.notifier self.SetSizer(vSizer) self.playtimer = None self.timer = None if self.vlcwrap: self.SetMinSize((EmbeddedPlayerPanel.VIDEO_SIZE[0], -1)) self.vlcwin.Show(True) self.logowin.Show(False) self.ctrlsizer.ShowItems(True) self.guiutility.frame.Layout() self.guiutility.library_manager.add_download_state_callback( self.OnStatesCallback) self.guiutility.utility.session.add_observer( self.OnVideoBuffering, NTFY_TORRENTS, [NTFY_VIDEO_BUFFERING]) self.videoplayer.set_internalplayer_callback(self.LoadAndStartPlay)
def AddComponents(self): self.SetForegroundColour( wx.SystemSettings.GetColour(wx.SYS_COLOUR_WINDOWTEXT)) self._logger.debug("TopSearchPanel: OnCreate") gui_image_manager = GuiImageManager.getInstance() # TODO martijn: on OS X, the wx.SearchCtrl element is bugged (doesn't show a placeholder unless focussed). # for now, we replaced the occurrences of wx.SearchCtrl with wx.TextCtrl elements. if sys.platform == 'darwin': self.searchField = wx.TextCtrl(self, -1, style=wx.TE_PROCESS_ENTER) self.searchField.Bind(wx.EVT_TEXT_ENTER, self.OnSearchKeyDown) self.searchField.SetHint('Search Files or Channels') self.searchField.SetMinSize((400, 22)) else: self.searchFieldPanel = FancyPanel(self, radius=5, border=wx.ALL) self.searchFieldPanel.SetBorderColour(SEPARATOR_GREY, highlight=TRIBLER_RED) self.searchField = TextCtrlAutoComplete( self.searchFieldPanel, style=wx.NO_BORDER, entrycallback=self.complete) # Since we have set the style to wx.NO_BORDER, the default height will be # too large. Therefore, we need to set the correct height. _, height = self.GetTextExtent("Gg") self.searchField.SetMinSize((-1, height)) self.searchFieldPanel.SetMinSize((400, 25)) self.searchFieldPanel.SetBackgroundColour( self.searchField.GetBackgroundColour()) self.searchField.Bind(wx.EVT_KILL_FOCUS, self.searchFieldPanel.OnKillFocus) self.searchField.Bind(wx.EVT_TEXT_ENTER, self.OnSearchKeyDown) self.go = ProgressButton(self, -1) self.go.SetMinSize((50, 25)) self.go.Bind(wx.EVT_LEFT_UP, self.OnSearchKeyDown) ag_fname = os.path.join(self.guiutility.utility.getPath(), LIBRARYNAME, 'Main', 'vwxGUI', 'images', 'search_new.gif') self.ag = wx.animate.GIFAnimationCtrl(self, -1, ag_fname) self.ag.UseBackgroundColour(True) self.ag.SetBackgroundColour(wx.Colour(244, 244, 244)) self.ag.Hide() download_bmp = gui_image_manager.getImage(u"download.png") self.download_btn = ActionButton(self, -1, download_bmp) self.download_btn.Enable(False) upload_bmp = gui_image_manager.getImage(u"upload.png") self.upload_btn = ActionButton(self, -1, upload_bmp) self.upload_btn.Enable(False) stop_bmp = gui_image_manager.getImage(u"pause.png") self.stop_btn = ActionButton(self, -1, stop_bmp) self.stop_btn.Enable(False) delete_bmp = gui_image_manager.getImage(u"delete.png") self.delete_btn = ActionButton(self, -1, delete_bmp) self.delete_btn.Enable(False) play_bmp = gui_image_manager.getImage(u"play.png") self.play_btn = ActionButton(self, -1, play_bmp) self.play_btn.Enable(False) add_bmp = gui_image_manager.getImage(u"add.png") self.add_btn = ActionButton(self, -1, add_bmp) self.SetButtonHandler(self.add_btn, self.OnAdd, 'Download an external torrent.') settings_bmp = gui_image_manager.getImage(u"settings.png") self.settings_btn = ActionButton(self, -1, settings_bmp) self.SetButtonHandler(self.settings_btn, self.OnSettings, 'Change settings.') mainSizer = wx.BoxSizer(wx.HORIZONTAL) if sys.platform != 'darwin': vSizer = wx.BoxSizer(wx.VERTICAL) vSizer.AddStretchSpacer() vSizer.Add( self.searchField, 0, wx.EXPAND | wx.RESERVE_SPACE_EVEN_IF_HIDDEN | wx.LEFT | wx.RIGHT, 5) vSizer.AddStretchSpacer() self.searchFieldPanel.SetSizer(vSizer) vSizer.Layout() # Add searchbox etc. self.searchSizer = wx.BoxSizer(wx.VERTICAL) searchBoxSizer = wx.BoxSizer(wx.HORIZONTAL) if sys.platform == 'darwin': searchBoxSizer.Add(self.searchField, 1, wx.CENTER | wx.RESERVE_SPACE_EVEN_IF_HIDDEN) else: searchBoxSizer.Add(self.searchFieldPanel, 1, wx.CENTER | wx.RESERVE_SPACE_EVEN_IF_HIDDEN) searchBoxSizer.Add(self.go, 0, wx.CENTER | wx.LEFT | wx.RESERVE_SPACE_EVEN_IF_HIDDEN, 5) # add searchbutton searchBoxSizer.Add(self.ag, 0, wx.CENTER | wx.LEFT | wx.RESERVE_SPACE_EVEN_IF_HIDDEN, 5) # add animation self.searchSizer.Add(searchBoxSizer, 1, wx.EXPAND) # finished searchSizer, add to mainSizer mainSizer.Add(self.searchSizer, 0, wx.EXPAND | wx.LEFT, 10) mainSizer.AddSpacer((40, 0)) # add buttons buttonSizer = wx.BoxSizer(wx.HORIZONTAL) buttonSizer.Add(self.download_btn, 0, wx.CENTER | wx.RIGHT, 5) buttonSizer.Add(self.upload_btn, 0, wx.CENTER | wx.RIGHT, 5) buttonSizer.Add(self.stop_btn, 0, wx.CENTER | wx.RIGHT, 5) buttonSizer.Add(self.delete_btn, 0, wx.CENTER | wx.RIGHT, 5) buttonSizer.Add(self.play_btn, 0, wx.CENTER | wx.RIGHT, 5) buttonSizer.AddSpacer((35, 0)) buttonSizer.AddStretchSpacer() buttonSizer.Add(self.add_btn, 0, wx.CENTER | wx.RIGHT, 5) buttonSizer.Add(self.settings_btn, 0, wx.CENTER | wx.RIGHT, 5) mainSizer.Add(buttonSizer, 1, wx.EXPAND) self.SetSizer(mainSizer) self.Layout()
def __create_s6(self, tree_root, sizer): exp_panel, exp_vsizer = create_section(self, sizer, "Anonymity") item_id = self._tree_ctrl.AppendItem(tree_root, "Anonymity", data=wx.TreeItemData(exp_panel)) exp_s1_sizer = create_subsection(exp_panel, exp_vsizer, "Anonymity in Tribler", 1, 3) self._become_exitnode = wx.CheckBox(exp_panel, label="Allow being an exit node") exp_s1_sizer.Add(self._become_exitnode, 0, wx.EXPAND) exp_s1_faq_text = wx.StaticText( exp_panel, label= "By allowing Tribler to be an exit node, your computer will act as a proxy for other Tribler users' bittorrent traffic, be it seeding or downloading. \n" "Check your local laws and make sure you are aware of the implications of enabling this checkbox." ) exp_s1_sizer.Add(exp_s1_faq_text, 0, wx.EXPAND | wx.TOP, 10) # Add slider self._lbls = [] self.sliderlabels = wx.BoxSizer(wx.HORIZONTAL) lbl = wx.StaticText(exp_panel, -1, 'High speed\nMinimum anonymity', style=wx.ALIGN_CENTRE_HORIZONTAL) self._lbls.append(lbl) self.sliderlabels.Add(lbl) self.sliderlabels.AddStretchSpacer() lbl = wx.StaticText(exp_panel, -1, 'Low speed\nStrong anonymity', style=wx.ALIGN_CENTRE_HORIZONTAL) self._lbls.append(lbl) self.sliderlabels.Add(lbl) self.slider_images = [ GuiImageManager.getInstance().getImage(u"scale_%d.png" % i) for i in range(6) ] self.slider_bitmap = wx.StaticBitmap(exp_panel, -1, self.slider_images[0]) self._sliderhops = wx.Slider(exp_panel, -1, 1, 1, 3, wx.DefaultPosition, style=wx.SL_AUTOTICKS | wx.SL_HORIZONTAL) self._sliderhops.Bind(wx.EVT_SLIDER, self.OnSlideHops) hop_count = wx.BoxSizer(wx.HORIZONTAL) hop_count.AddSpacer((10, -1)) for count in xrange(1, 4): lbl = wx.StaticText(exp_panel, -1, '%d' % count, style=wx.ALIGN_CENTRE_HORIZONTAL) self._lbls.append(lbl) hop_count.Add(lbl) if count != 3: hop_count.AddStretchSpacer() else: hop_count.AddSpacer((10, -1)) labels_and_slider = wx.BoxSizer(wx.VERTICAL) labels_and_slider.Add(self.sliderlabels, 0, wx.EXPAND) labels_and_slider.Add(self._sliderhops, 0, wx.EXPAND) labels_and_slider.Add(hop_count, 0, wx.EXPAND) slider_sizer = wx.BoxSizer(wx.HORIZONTAL) slider_sizer.Add(labels_and_slider, 1, wx.RIGHT, 10) slider_sizer.Add(self.slider_bitmap) proxytext = wx.StaticText( exp_panel, -1, 'Please select how many encrypted hops you want to use for your downloads:' ) exp_s2_sizer = create_subsection(exp_panel, exp_vsizer, "Proxy downloading", 1, 3) exp_s2_sizer.Add(proxytext, 0, wx.EXPAND | wx.BOTTOM, 10) exp_s2_sizer.Add(slider_sizer, 0, wx.EXPAND | wx.TOP | wx.BOTTOM, 5) # load values self._become_exitnode.SetValue( self.utility.session.get_tunnel_community_exitnode_enabled()) self._sliderhops.SetValue( self.utility.read_config('default_number_hops')) return exp_panel, item_id
def __create_s1(self, tree_root, sizer): general_panel, gp_vsizer = create_section(self, sizer, "General") item_id = self._tree_ctrl.AppendItem( tree_root, "General", data=wx.TreeItemData(general_panel)) # Tribler Profile gp_s1_sizer = create_subsection(general_panel, gp_vsizer, "Tribler Profile", 2) add_label(general_panel, gp_s1_sizer, "Nickname") self._my_name_field = wx.TextCtrl(general_panel, style=wx.TE_PROCESS_ENTER) self._my_name_field.SetMaxLength(40) gp_s1_sizer.Add(self._my_name_field, 1, wx.EXPAND) add_label(general_panel, gp_s1_sizer, "Profile Image") self._thumb = wx.StaticBitmap(general_panel, size=(80, 80)) self._edit = wx.Button(general_panel, label="Change Image") gp_s1_porfile_vsizer = wx.BoxSizer(wx.VERTICAL) gp_s1_porfile_vsizer.Add(self._thumb, 0, wx.LEFT, 1) gp_s1_porfile_vsizer.Add(self._edit) gp_s1_sizer.Add(gp_s1_porfile_vsizer, 0, wx.TOP, 3) # Download Location gp_s2_sizer = create_subsection(general_panel, gp_vsizer, "Download Location", 1) gp_s2_label = wx.StaticText(general_panel, label="Save files to:") gp_s2_sizer.Add(gp_s2_label) gp_s2_hsizer = wx.BoxSizer(wx.HORIZONTAL) self._disk_location_ctrl = EditText(general_panel, validator=DirectoryValidator()) gp_s2_hsizer.Add(self._disk_location_ctrl, 1, wx.ALIGN_CENTER_VERTICAL) self._browse = wx.Button(general_panel, label="Browse") gp_s2_hsizer.Add(self._browse) gp_s2_sizer.Add(gp_s2_hsizer, 0, wx.EXPAND) self._disk_location_choice = wx.CheckBox( general_panel, label="Let me choose a location for every download") self._disk_location_choice.Bind(wx.EVT_CHECKBOX, self.OnChooseLocationChecked) self._disk_location_choice.SetValue(False) gp_s2_sizer.Add(self._disk_location_choice) self._default_anonymous_label = wx.StaticText( general_panel, label="Default Anonymous Level:") self._default_anonymity_dialog = AnonymityDialog(general_panel) gp_s2_sizer.Add(self._default_anonymous_label, 0, wx.EXPAND) gp_s2_sizer.Add(self._default_anonymity_dialog, 0, wx.EXPAND) # Minimize if sys.platform == "darwin": self._minimize_to_tray = None else: gp_s3_sizer = create_subsection(general_panel, gp_vsizer, "Minimize", 1) self._minimize_to_tray = wx.CheckBox(general_panel, label="Minimize to tray") self._minimize_to_tray.SetValue(False) gp_s3_sizer.Add(self._minimize_to_tray) self._edit.Bind(wx.EVT_BUTTON, self.EditClicked) self._browse.Bind(wx.EVT_BUTTON, self.BrowseClicked) # nickname self._my_name_field.SetValue(self.utility.session.get_nickname()) # thumbnail mime, data = self.utility.session.get_mugshot() if data is None: gui_image_manager = GuiImageManager.getInstance() mugshot = gui_image_manager.getImage(u"PEER_THUMB") else: mugshot = data2wxBitmap(mime, data) self._thumb.SetBitmap(mugshot) # download location if self.utility.read_config('saveas'): location_dir = self.utility.read_config('saveas') else: location_dir = self.defaultDLConfig.get_dest_dir() self._disk_location_ctrl.SetValue(location_dir) self._disk_location_choice.SetValue( self.utility.read_config('showsaveas')) self.OnChooseLocationChecked(None) # minimize to tray if sys.platform != "darwin": min_to_tray = self.utility.read_config('mintray') == 1 self._minimize_to_tray.SetValue(min_to_tray) return general_panel, item_id
def InitStage1(self, installdir, autoload_discovery=True, use_torrent_search=True, use_channel_search=True): """ Stage 1 start: pre-start the session to handle upgrade. """ self.gui_image_manager = GuiImageManager.getInstance(installdir) # Start Tribler Session defaultConfig = SessionStartupConfig() state_dir = defaultConfig.get_state_dir() # Switch to the state dir so relative paths can be used (IE, in LevelDB store paths) if not os.path.exists(state_dir): os.makedirs(state_dir) os.chdir(state_dir) cfgfilename = Session.get_default_config_filename(state_dir) self._logger.debug(u"Session config %s", cfgfilename) self.sconfig = SessionStartupConfig.load(cfgfilename) self.sconfig.set_install_dir(self.installdir) if not self.sconfig.get_watch_folder_path(): default_watch_folder_dir = os.path.join(get_home_dir(), u'Downloads', u'TriblerWatchFolder') self.sconfig.set_watch_folder_path(default_watch_folder_dir) if not os.path.exists(default_watch_folder_dir): os.makedirs(default_watch_folder_dir) # TODO(emilon): Do we still want to force limit this? With the new # torrent store it should be pretty fast even with more that that. # Arno, 2010-03-31: Hard upgrade to 50000 torrents collected self.sconfig.set_torrent_collecting_max_torrents(50000) dlcfgfilename = get_default_dscfg_filename( self.sconfig.get_state_dir()) self._logger.debug("main: Download config %s", dlcfgfilename) if os.path.exists(dlcfgfilename): defaultDLConfig = DefaultDownloadStartupConfig.load(dlcfgfilename) else: defaultDLConfig = DefaultDownloadStartupConfig.getInstance() if not defaultDLConfig.get_dest_dir(): defaultDLConfig.set_dest_dir(get_default_dest_dir()) if not os.path.isdir(defaultDLConfig.get_dest_dir()): try: os.makedirs(defaultDLConfig.get_dest_dir()) except: # Could not create directory, ask user to select a different location dlg = wx.DirDialog( None, "Could not find download directory, please select a new location to store your downloads", style=wx.DEFAULT_DIALOG_STYLE) dlg.SetPath(get_default_dest_dir()) if dlg.ShowModal() == wx.ID_OK: new_dest_dir = dlg.GetPath() defaultDLConfig.set_dest_dir(new_dest_dir) defaultDLConfig.save(dlcfgfilename) self.sconfig.save(cfgfilename) else: # Quit self.onError = lambda e: self._logger.error( "tribler: quitting due to non-existing destination directory" ) raise Exception() if not use_torrent_search: self.sconfig.set_enable_torrent_search(False) if not use_channel_search: self.sconfig.set_enable_channel_search(False) session = Session(self.sconfig, autoload_discovery=autoload_discovery) session.add_observer(self.show_upgrade_dialog, NTFY_UPGRADER, [NTFY_STARTED]) while not session.upgrader.is_done: wx.SafeYield() sleep(0.1) return session