def SetIcon(hwnd, name, add=False): # Try and find a custom icon if '--noicon' in sys.argv: return print "SetIcon(%s)" % name hinst = GetModuleHandle(None) from tortoisehg.util.paths import get_tortoise_icon iconPathName = get_tortoise_icon(name) if iconPathName and os.path.isfile(iconPathName): icon_flags = win32con.LR_LOADFROMFILE | win32con.LR_DEFAULTSIZE hicon = LoadImage(hinst, iconPathName, win32con.IMAGE_ICON, 0, 0, icon_flags) else: print "Can't find a Python icon file - using default" hicon = LoadIcon(0, win32con.IDI_APPLICATION) flags = NIF_ICON | NIF_MESSAGE | NIF_TIP nid = (hwnd, 0, flags, win32con.WM_USER+20, hicon, APP_TITLE) action = NIM_MODIFY if add: action = NIM_ADD try: Shell_NotifyIcon(action, nid) except pywintypes.error: # This is common when windows is starting, and this code is hit # before the taskbar has been created. print "Failed to add the taskbar icon - is explorer running?"
def load_icon(name): from tortoisehg.util.paths import get_tortoise_icon iconPathName = get_tortoise_icon(name) if iconPathName and os.path.isfile(iconPathName): icon_flags = win32con.LR_LOADFROMFILE | win32con.LR_DEFAULTSIZE hicon = LoadImage(win32con.NULL, iconPathName, win32con.IMAGE_ICON, 16, 16, icon_flags) else: print "Can't find a Python icon file - using default" hicon = LoadIcon(0, win32con.IDI_APPLICATION) return hicon
def get_icon_pixbuf(name, size=gtk.ICON_SIZE_MENU): if name.startswith('gtk'): return _renderer.render_icon(name, size) else: path = paths.get_tortoise_icon(name) if path: try: w, h = gtk.icon_size_lookup(size) return gtk.gdk.pixbuf_new_from_file_at_size(path, w, h) except: pass return None
def icon(self, iname): return paths.get_tortoise_icon(iname)
def __init__(self, parent=None): super(AboutDialog, self).__init__(parent) self.setWindowIcon(qtlib.geticon('thg_logo')) self.setWindowTitle(_('About')) self.setWindowFlags(self.windowFlags() & ~Qt.WindowContextHelpButtonHint) self.vbox = QVBoxLayout() self.vbox.setSpacing(8) self.logo_lbl = QLabel() self.logo_lbl.setMinimumSize(QSize(92, 50)) self.logo_lbl.setScaledContents(False) self.logo_lbl.setAlignment(Qt.AlignCenter) thglogofile = paths.get_tortoise_icon('thg_logo_92x50.png') self.logo_lbl.setPixmap(QPixmap(thglogofile)) self.vbox.addWidget(self.logo_lbl) self.name_version_libs_lbl = QLabel() self.name_version_libs_lbl.setText(' ') self.name_version_libs_lbl.setAlignment(Qt.AlignCenter) self.name_version_libs_lbl.setTextInteractionFlags( Qt.TextSelectableByMouse) self.vbox.addWidget(self.name_version_libs_lbl) self.getVersionInfo() self.copyright_lbl = QLabel() self.copyright_lbl.setAlignment(Qt.AlignCenter) self.copyright_lbl.setText('\n' + _('Copyright 2008-2013 Steve Borho and others')) self.vbox.addWidget(self.copyright_lbl) self.courtesy_lbl = QLabel() self.courtesy_lbl.setAlignment(Qt.AlignCenter) self.courtesy_lbl.setText( _('Several icons are courtesy of the TortoiseSVN project') + '\n') self.vbox.addWidget(self.courtesy_lbl) self.download_url_lbl = QLabel() self.download_url_lbl.setMouseTracking(True) self.download_url_lbl.setAlignment(Qt.AlignCenter) self.download_url_lbl.setTextInteractionFlags(Qt.LinksAccessibleByMouse) self.download_url_lbl.setOpenExternalLinks(True) self.download_url_lbl.setText('<a href=%s>%s</a>' % ('http://tortoisehg.org', _('You can visit our site here'))) self.vbox.addWidget(self.download_url_lbl) # Let's have some space between the url and the buttons. self.blancline_lbl = QLabel() self.vbox.addWidget(self.blancline_lbl) self.hbox = QHBoxLayout() self.license_btn = QPushButton() self.license_btn.setText(_('&License')) self.license_btn.setAutoDefault(False) self.license_btn.clicked.connect(self.showLicense) self.hspacer = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) self.close_btn = QPushButton() self.close_btn.setText(_('&Close')) self.close_btn.setDefault(True) self.close_btn.clicked.connect(self.close) self.hbox.addWidget(self.license_btn) self.hbox.addItem(self.hspacer) self.hbox.addWidget(self.close_btn) self.vbox.addLayout(self.hbox) self.setLayout(self.vbox) self.layout().setSizeConstraint(QLayout.SetFixedSize) self._readsettings() # Spawn it later, so that the dialog gets visible quickly. QTimer.singleShot(0, self.getUpdateInfo) self._newverreply = None
def __init__(self, parent=None): super(AboutDialog, self).__init__(parent) self.setWindowIcon(qtlib.geticon('thg_logo')) self.setWindowTitle(_('About')) self.setWindowFlags(self.windowFlags() & ~Qt.WindowContextHelpButtonHint) self.vbox = QVBoxLayout() self.vbox.setSpacing(8) self.logo_lbl = QLabel() self.logo_lbl.setMinimumSize(QSize(92, 50)) self.logo_lbl.setScaledContents(False) self.logo_lbl.setAlignment(Qt.AlignCenter) thglogofile = paths.get_tortoise_icon('thg_logo_92x50.png') self.logo_lbl.setPixmap(QPixmap(thglogofile)) self.vbox.addWidget(self.logo_lbl) self.name_version_libs_lbl = QLabel() self.name_version_libs_lbl.setText(' ') self.name_version_libs_lbl.setAlignment(Qt.AlignCenter) self.name_version_libs_lbl.setTextInteractionFlags( Qt.TextSelectableByMouse) self.vbox.addWidget(self.name_version_libs_lbl) self.getVersionInfo() self.copyright_lbl = QLabel() self.copyright_lbl.setAlignment(Qt.AlignCenter) self.copyright_lbl.setText( '\n' + _('Copyright 2008-2012 Steve Borho and others')) self.vbox.addWidget(self.copyright_lbl) self.courtesy_lbl = QLabel() self.courtesy_lbl.setAlignment(Qt.AlignCenter) self.courtesy_lbl.setText( _('Several icons are courtesy of the TortoiseSVN project') + '\n') self.vbox.addWidget(self.courtesy_lbl) self.download_url_lbl = QLabel() self.download_url_lbl.setAlignment(Qt.AlignCenter) self.download_url_lbl.setMouseTracking(True) self.download_url_lbl.setAlignment(Qt.AlignCenter) self.download_url_lbl.setTextInteractionFlags( Qt.LinksAccessibleByMouse) self.download_url_lbl.setOpenExternalLinks(True) self.download_url_lbl.setText( '<a href=%s>%s</a>' % ('http://tortoisehg.org', _('You can visit our site here'))) self.vbox.addWidget(self.download_url_lbl) # Let's have some space between the url and the buttons. self.blancline_lbl = QLabel() self.vbox.addWidget(self.blancline_lbl) self.hbox = QHBoxLayout() self.license_btn = QPushButton() self.license_btn.setText(_('&License')) self.license_btn.setAutoDefault(False) self.license_btn.clicked.connect(self.showLicense) self.hspacer = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) self.close_btn = QPushButton() self.close_btn.setText(_('&Close')) self.close_btn.setDefault(True) self.close_btn.clicked.connect(self.close) self.hbox.addWidget(self.license_btn) self.hbox.addItem(self.hspacer) self.hbox.addWidget(self.close_btn) self.vbox.addLayout(self.hbox) self.setLayout(self.vbox) self.layout().setSizeConstraint(QLayout.SetFixedSize) self._readsettings() # Spawn it later, so that the dialog gets visible quickly. QTimer.singleShot(0, self.getUpdateInfo) self._newverreply = None
def set_tortoise_icon(window, thgicon): ico = paths.get_tortoise_icon(thgicon) if ico: window.set_icon_from_file(ico)
def __init__(self): super(AboutDialog, self).__init__() gtklib.set_tortoise_keys(self) lib_versions = ', '.join([ "Mercurial-%s" % hglib.hgversion, "Python-%s" % make_version(sys.version_info[0:3]), "PyGTK-%s" % make_version(gtk.pygtk_version), "GTK-%s" % make_version(gtk.gtk_version), ]) comment = _("Several icons are courtesy of the TortoiseSVN project") newver = (0,0,0) upgradeurl = 'http://tortoisehg.org' try: f = urllib2.urlopen(_verurl).read().splitlines() newver = tuple([int(p) for p in f[0].split('.')]) upgradeurl = f[1] # generic download URL platform = sys.platform if platform == 'win32': from win32process import IsWow64Process as IsX64 platform = IsX64() and 'x64' or 'x86' # linux2 for Linux, darwin for OSX for line in f[2:]: p, url = line.split(':') if platform == p: upgradeurl = url.strip() break except: pass ver = version.version() if '+' in ver: ver = ver[:ver.index('+')] try: curver = tuple([int(p) for p in ver.split('.')]) except: curver = (0,0,0) if newver > curver: comment = _('A new version of TortoiseHg is ready for download!') self.set_website(upgradeurl) else: self.set_website('http://tortoisehg.org') self.set_name("TortoiseHg") self.set_version(_("(version %s)") % version.version()) if hasattr(self, 'set_wrap_license'): self.set_wrap_license(False) self.set_copyright(_("Copyright 2008-2010 Steve Borho and others")) thg_logo = paths.get_tortoise_icon('thg_logo_92x50.png') thg_icon = paths.get_tortoise_icon('thg_logo.ico') try: license_file = paths.get_license_path() if license_file.endswith('.gz'): import gzip lic = gzip.open(license_file, 'rb').read() else: lic = open(license_file, 'rb').read() self.set_license(lic) except (ImportError, IOError): license = hgtk.shortlicense.splitlines()[1:] self.set_license('\n'.join(license)) self.set_comments(_("with %s") % lib_versions + "\n\n" + comment) if thg_logo: self.set_logo(gtk.gdk.pixbuf_new_from_file(thg_logo)) if thg_icon: self.set_icon_from_file(thg_icon) self.connect('response', self.response)