import sys
import os
import wx
from shutil import copy,move
from Dialogs.aboutme import AboutMeDialog,VersionDialog
from Dialogs.abcoption import ABCOptionDialog
from Dialogs.localupload import LocalSettingDialog
from webservice import WebDialog
from Utility.helpers import stopTorrentsIfNeeded
from TorrentMaker.btmaketorrentgui import TorrentMaker
from Utility.constants import *#IGNORE:W0611
################################
#
################################
class ABCBitmap(wx.Bitmap):
def __init__(self, utility, filename, trans_color = wx.Colour(200, 200, 200)):
self.utility = utility
self.trans_color = trans_color
self.filename = filename
self.path = os.path.join(utility.getPath(), 'icons', self.filename)
wx.Bitmap.__init__(self, self.path, wx.BITMAP_TYPE_BMP)
mask = wx.Mask(self, self.trans_color)
self.SetMask(mask)
################################
#
################################
class ABCAction:
def __init__(self,
utility,
filename = None,
shortdesc = None,
longdesc = None,
menudesc = None,
trans_color = wx.Colour(200, 200, 200),
kind = None,
id = None):
self.utility = utility
if id is None:
self.id = wx.NewId()
else:
self.id = id
if shortdesc is not None:
self.shortdesc = self.utility.lang.get(shortdesc)
else:
self.shortdesc = ""
if longdesc is not None:
self.longdesc = self.utility.lang.get(longdesc)
else:
self.longdesc = self.shortdesc
if menudesc is not None:
self.menudesc = self.utility.lang.get(menudesc)
else:
self.menudesc = self.shortdesc
self.kind = kind
if filename is not None:
self.bitmap = ABCBitmap(utility, filename, trans_color)
else:
self.bitmap = None
self.toolbars = []
def action(self, event = None):
pass
def addToMenu(self, menu, bindto = None):
if bindto is None:
bindto = menu
bindto.Bind(wx.EVT_MENU, self.action, id = self.id)
item = wx.MenuItem(menu, self.id, self.menudesc)
menu.AppendItem(item)
return self.id
def removeFromToolbar(self, toolbar):
if toolbar in self.toolbars:
self.toolbars.remove(toolbar)
removed = toolbar.DeleteTool(self.id)
if removed:
toolbar.toolcount -= 1
def addToToolbar(self, toolbar):
if (toolbar.firsttime):
#Find size of images so it will be dynamics
width = self.bitmap.GetWidth() + toolbar.hspacing
height = self.bitmap.GetHeight() + toolbar.vspacing
toolbar.SetToolBitmapSize(wx.Size(width, height))
toolbar.firsttime = False
if self.kind is None:
tool = toolbar.AddSimpleTool(self.id,
self.bitmap,
shortHelpString = self.shortdesc,
longHelpString = self.longdesc)
else:
tool = toolbar.AddCheckTool(self.id,
self.bitmap,
shortHelp = self.shortdesc,
longHelp = self.longdesc)
toolbar.Bind(wx.EVT_TOOL, self.action, tool)
if not toolbar in self.toolbars:
self.toolbars.append(toolbar)
return tool
################################
#
################################
class ABCActionMenu(ABCAction):
def __init__(self,
utility,
menudesc = None,
subactions = None):
ABCAction.__init__(self,
utility,
menudesc = menudesc)
if subactions is None:
subactions = []
self.subactions = subactions
def addToMenu(self, menu, bindto = None):
if bindto is None:
bindto = menu
submenu = wx.Menu()
for actionid in self.subactions:
if actionid == -1:
submenu.AppendSeparator()
else:
action = self.utility.actions[actionid]
action.addToMenu(submenu, bindto)
# wx.Menu and wx.MenuBar have different methods
# for appending submenus
if isinstance(menu, wx.Menu):
menu.AppendMenu(self.id, self.menudesc, submenu)
elif isinstance(menu, wx.MenuBar):
menu.Append(submenu, self.menudesc)
return self.id
|