Create TOC

2010년 6월 18일

Safari/유용한플러그인

확장 프로그램

Safari 5.0 부터 확장 프로그램(Extention)이 기능으로 추가되었다. 개발자용 메뉴에서 확장 프로그램 활성화 기능을 켜주면 사용할 수 있다.

기능을 활성화 시킨 후 환경설정을 보면 확장 프로그램탭이 추가되어 있는 것을 확인할 수 있다.

이름설명
AdBlockAdBlock의 Extension 버전.
Gentle Status BarChrome과 비슷한 상태표시줄을 만들어준다.
ClickToFlashClickToFlash의 Extention 버전.
Better Google Reader구글 리더에 몇 가지 기능을 추가해준다.
greader-bgtabs구글 리더에서 v키로 현재 글을 새 tab으로 열 때 배경 탭으로 열리게 해준다.
SafariRestoreSafari를 종료할 때 열려있던 탭 정보를 기억했다가 복구해준다. 비슷한 기능이 SafariStand에도 들어있지만 Extention 쪽이 좀 더 자연스럽게 동작하는 것 같다.
MiddleButtonScroll마우스 가운데 버튼을 클릭하고 마우스를 이동하면 그대로 스크롤이 된다.

SIMBL

SIMBL의 플러그인 형태로 기능을 확장할 수 있다

이름설명
GreaseKitSafari에서 User Script를 사용할 수 있게 해준다.
Safari StandSafari에서 Quick Search등의 기능을 추가해준다
SafariGesturesSafari에서 마우스 제스쳐를 지원해준다.
megazoomerCocoa Application을 전체 화면으로 실행시켜 준다

2010년 6월 6일

OS/X - PyQt 설치

이 문서는 Snow Leopard에서 PyQt를 설치하는 방법을 기술한다.

준비

아래 경로에서 Cocoa 버전의 QT 를 다운 받는다.

http://qt.nokia.com/downloads/qt-for-open-source-cpp-development-on-mac-os-x

아래 경로에서 PyQt를 다운 받는다.

http://www.riverbankcomputing.co.uk/software/pyqt/download

아래 경로에서 sip를 다운 받는다.

http://www.riverbankcomputing.co.uk/software/sip/download

PyQt 빌드 및 설치

sip

우선 터미널에서 아래와 같이 sip를 빌드하고 설치한다.

$ export MACOSX_DEPLOYMENT_TARGET=10.6
$ python configure.py --universal --arch=i386 --arch=x86_64 -s MacOSX10.6.sdk
$ make
$ sudo make install

PyQt 빌드

$ export QTDIR=/Developer/Applications/Qt
$ python configure.py --confirm-license --use-arch=i386 --use-arch=x86_64
$ make
$ sudo make install

테스트

아래와 같은 python 코드를 저장하고 실행해본다

import sys
from PyQt4 import QtCore, QtGui


def translate(widgetname, defstr):
    return QtGui.QApplication.translate(widgetname, defstr)


class Sample(QtGui.QMainWindow):
    def __init__(self, parent=None):
        super(Sample, self).__init__(parent)

        self.setWindowTitle(translate(u'mainwindow', u'Sample'))
        self.resize(250, 150)
        self.setCenter()

        self.statusBar().showMessage(translate(u'mainwindow', u'Ready'))

        workarea = QtGui.QWidget(self)

        quit = QtGui.QPushButton(translate(u'mainwindow', u'Close'), workarea)
        workarea.connect(quit, QtCore.SIGNAL('clicked()'), self, QtCore.SLOT('close()'))
        quit.setToolTip(translate(u'mainwindow', u'This is a close button.'))
        QtGui.QToolTip.setFont(QtGui.QFont(u'Tahoma', 10))

        hbox = QtGui.QHBoxLayout()
        hbox.addStretch(1)
        hbox.addWidget(quit)

        vbox = QtGui.QVBoxLayout()
        vbox.addStretch(1)
        vbox.addLayout(hbox)
        workarea.setLayout(vbox)
        self.setCentralWidget(workarea)

    def closeEvent(self, event):
        reply = QtGui.QMessageBox.question(
            self,
            translate(u'messagebox', u'Question'),
            translate(u'messagebox', u'Are you sure to quit?'),
            QtGui.QMessageBox.Yes,
            QtGui.QMessageBox.No)

        if QtGui.QMessageBox.Yes == reply:
            event.accept()
        else:
            event.ignore()

    def setCenter(self):
        screen = QtGui.QDesktopWidget().screenGeometry()
        size = self.geometry()
        self.move((screen.width() - size.width()) / 2, (screen.height() - size.height()) / 2)

if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    main = Sample()
    main.show()
    sys.exit(app.exec_())

실행하면 아래와 같은 화면이 표시된다.