diff demos/browser/urllineedit.d @ 73:7bfd46c330dc

more porting
author mandel
date Fri, 22 May 2009 10:59:00 +0000
parents 71b382c10ef6
children 37caa90ce503
line wrap: on
line diff
--- a/demos/browser/urllineedit.d	Wed May 20 22:44:31 2009 +0000
+++ b/demos/browser/urllineedit.d	Fri May 22 10:59:00 2009 +0000
@@ -41,338 +41,328 @@
 
 module urllineedit;
 
-import QtCore.QUrl;
-import QtGui.QWidget;
-import QtGui.QStyleOptionFrame;
+import qt.core.QUrl;
+import qt.core.QEvent;
+import qt.core.QDebug;
+
+import qt.gui.QWidget;
+import qt.gui.QStyleOptionFrame;
+import qt.gui.QApplication;
+import qt.gui.QCompleter;
+import qt.gui.QFocusEvent;
+import qt.gui.QHBoxLayout;
+import qt.gui.QLabel;
+import qt.gui.QLineEdit;
+import qt.gui.QPainter;
+import qt.gui.QStyle;
+import qt.gui.QStyleOptionFrameV2;
 
 import browserapplication;
 import searchlineedit;
 import webview;
 
-import QtCore.QEvent;
 
-import QtGui.QApplication;
-import QtGui.QCompleter;
-import QtGui.QFocusEvent;
-import QtGui.QHBoxLayout;
-import QtGui.QLabel;
-import QtGui.QLineEdit;
-import QtGui.QPainter;
-import QtGui.QStyle;
-import QtGui.QStyleOptionFrameV2;
-
-import QtCore.QDebug;
-
-
-/*
-QT_BEGIN_NAMESPACE
-class QLineEdit;
-QT_END_NAMESPACE
-
-class ClearButton;
-*/
 class ExLineEdit : public QWidget
 {
-    Q_OBJECT
+public:
+
+	this(QWidget parent = null)
+	{
+		super(parent);
+
+		m_leftWidget = 0;
+		m_lineEdit = new QLineEdit(this);
+		m_clearButton = 0;
 
-public:
-    this(QWidget *parent = null)
-{
-	super(parent);
-	
-	m_leftWidget = 0;
-     m_lineEdit = new QLineEdit(this);
-     m_clearButton = 0;
-	
-    setFocusPolicy(m_lineEdit.focusPolicy());
-    setAttribute(Qt.WA_InputMethodEnabled);
-    setSizePolicy(m_lineEdit.sizePolicy());
-    setBackgroundRole(m_lineEdit.backgroundRole());
-    setMouseTracking(true);
-    setAcceptDrops(true);
-    setAttribute(Qt.WA_MacShowFocusRect, true);
-    QPalette p = m_lineEdit.palette();
-    setPalette(p);
+		setFocusPolicy(m_lineEdit.focusPolicy());
+		setAttribute(Qt.WA_InputMethodEnabled);
+		setSizePolicy(m_lineEdit.sizePolicy());
+		setBackgroundRole(m_lineEdit.backgroundRole());
+		setMouseTracking(true);
+		setAcceptDrops(true);
+		setAttribute(Qt.WA_MacShowFocusRect, true);
+		QPalette p = m_lineEdit.palette();
+		setPalette(p);
 
-    // line edit
-    m_lineEdit.setFrame(false);
-    m_lineEdit.setFocusProxy(this);
-    m_lineEdit.setAttribute(Qt.WA_MacShowFocusRect, false);
-    QPalette clearPalette = m_lineEdit.palette();
-    clearPalette.setBrush(QPalette::Base, QBrush(Qt.transparent));
-    m_lineEdit.setPalette(clearPalette);
+		// line edit
+		m_lineEdit.setFrame(false);
+		m_lineEdit.setFocusProxy(this);
+		m_lineEdit.setAttribute(Qt.WA_MacShowFocusRect, false);
+		QPalette clearPalette = m_lineEdit.palette();
+		clearPalette.setBrush(QPalette.Base, QBrush(Qt.transparent));
+		m_lineEdit.setPalette(clearPalette);
 
-    // clearButton
-    m_clearButton = new ClearButton(this);
-    connect(m_clearButton, SIGNAL(clicked()),
-            m_lineEdit, SLOT(clear()));
-    connect(m_lineEdit, SIGNAL(textChanged(const QString&)),
-            m_clearButton, SLOT(textChanged(const QString&)));
-}
+		// clearButton
+		m_clearButton = new ClearButton(this);
+		m_clearButton.clicked.connect(&m_lineEdit.clear);
+		m_lineEdit.textChanged.connect(&m_clearButton.textChanged);
+	}
 
-    inline QLineEdit *lineEdit() { return m_lineEdit; }
+	QLineEdit lineEdit() { return m_lineEdit; }
 
-    void setLeftWidget(QWidget *widget)
-{
-    m_leftWidget = widget;
-}
+	void setLeftWidget(QWidget widget)
+	{
+		m_leftWidget = widget;
+	}
 
-    QWidget *leftWidget()
-{
-    return m_leftWidget;
-}
+	QWidget leftWidget()
+	{
+		return m_leftWidget;
+	}
 
-    QSize sizeHint()
-{
-    m_lineEdit.setFrame(true);
-    QSize size = m_lineEdit.sizeHint();
-    m_lineEdit.setFrame(false);
-    return size;
-}
+	QSize sizeHint()
+	{
+		m_lineEdit.setFrame(true);
+		QSize size = m_lineEdit.sizeHint();
+		m_lineEdit.setFrame(false);
+		return size;
+	}
 
-    QVariant inputMethodQuery(Qt.InputMethodQuery property)
-{
-    return m_lineEdit.inputMethodQuery(property);
-}
+	QVariant inputMethodQuery(Qt.InputMethodQuery property)
+	{
+		return m_lineEdit.inputMethodQuery(property);
+	}
 
 protected:
-    void focusInEvent(QFocusEvent *event)
-{
-    m_lineEdit.event(event);
-    QWidget::focusInEvent(event);
-}
+
+	void focusInEvent(QFocusEvent event)
+	{
+		m_lineEdit.event(event);
+		QWidget.focusInEvent(event);
+	}
+
+	void focusOutEvent(QFocusEvent event)
+	{
+		m_lineEdit.event(event);
+
+		if (m_lineEdit.completer()) {
+			m_lineEdit.completer().activated.connect(& m_lineEdit.setText);
+			m_lineEdit.completer().highlighted.connect(&m_lineEdit._q_completionHighlighted);
+		}
+		QWidget.focusOutEvent(event);
+	}
 
-    void focusOutEvent(QFocusEvent *event)
-{
-    m_lineEdit.event(event);
+	void keyPressEvent(QKeyEvent event)
+	{
+		m_lineEdit.event(event);
+	}
 
-    if (m_lineEdit.completer()) {
-        connect(m_lineEdit.completer(), SIGNAL(activated(QString)),
-                         m_lineEdit, SLOT(setText(QString)));
-        connect(m_lineEdit.completer(), SIGNAL(highlighted(QString)),
-                         m_lineEdit, SLOT(_q_completionHighlighted(QString)));
-    }
-    QWidget::focusOutEvent(event);
-}
+	void paintEvent(QPaintEvent event)
+	{
+		QPainter p(this);
+		QStyleOptionFrameV2 panel;
+		initStyleOption(&panel);
+		style().drawPrimitive(QStyle.PE_PanelLineEdit, &panel, &p, this);
+	}
+
+	void resizeEvent(QResizeEvent event)
+	{
+		assert(m_leftWidget);
+		updateGeometries();
+		QWidget.resizeEvent(event);
+	}
+
+	void inputMethodEvent(QInputMethodEvent e)
+	{
+		m_lineEdit.event(e);
+	}
 
-    void keyPressEvent(QKeyEvent *event)
-{
-    m_lineEdit.event(event);
-}
+	bool event(QEvent event)
+	{
+		if (event.type() == QEvent.ShortcutOverride)
+			return m_lineEdit.event(event);
+		return QWidget.event(event);
+	}
+
+protected:
+
+	void updateGeometries()
+	{
+		QStyleOptionFrameV2 panel;
+		initStyleOption(&panel);
+		QRect rect = style().subElementRect(QStyle.SE_LineEditContents, &panel, this);
+
+		int height = rect.height();
+		int width = rect.width();
+
+		int m_leftWidgetHeight = m_leftWidget.height();
+		m_leftWidget.setGeometry(rect.x() + 2,          rect.y() + (height - m_leftWidgetHeight)/2,
+		m_leftWidget.width(), m_leftWidget.height());
+
+		int clearButtonWidth = this.height();
+		m_lineEdit.setGeometry(m_leftWidget.x() + m_leftWidget.width(),        0,
+		width - clearButtonWidth - m_leftWidget.width(), this.height());
 
-    void paintEvent(QPaintEvent *event)
-{
-    QPainter p(this);
-    QStyleOptionFrameV2 panel;
-    initStyleOption(&panel);
-    style().drawPrimitive(QStyle::PE_PanelLineEdit, &panel, &p, this);
-}
+		m_clearButton.setGeometry(this.width() - clearButtonWidth, 0,
+		clearButtonWidth, this.height());
+	}
 
-    void resizeEvent(QResizeEvent *event)
-{
-    Q_ASSERT(m_leftWidget);
-    updateGeometries();
-    QWidget::resizeEvent(event);
-}
-
-    void inputMethodEvent(QInputMethodEvent *e)
-{
-    m_lineEdit.event(e);
+	void initStyleOption(QStyleOptionFrameV2 option)
+	{
+		option.initFrom(this);
+		option.rect = contentsRect();
+		option.lineWidth = style().pixelMetric(QStyle.PM_DefaultFrameWidth, option, this);
+		option.midLineWidth = 0;
+		option.state |= QStyle.State_Sunken;
+		if (m_lineEdit.isReadOnly())
+			option.state |= QStyle.State_ReadOnly;
+		version(QT_KEYPAD_NAVIGATION)
+		{
+			if (hasEditFocus())
+				option.state |= QStyle.State_HasEditFocus;
+		}
+		else
+		{
+			option.features = QStyleOptionFrameV2.None;
+		}
+	}
+	
+	QWidget m_leftWidget;
+	QLineEdit m_lineEdit;
+	ClearButton m_clearButton;
 }
 
-    bool event(QEvent *event)
-{
-    if (event.type() == QEvent::ShortcutOverride)
-        return m_lineEdit.event(event);
-    return QWidget::event(event);
-}
-
-protected:
-    void updateGeometries()
-{
-    QStyleOptionFrameV2 panel;
-    initStyleOption(&panel);
-    QRect rect = style().subElementRect(QStyle::SE_LineEditContents, &panel, this);
-
-    int height = rect.height();
-    int width = rect.width();
-
-    int m_leftWidgetHeight = m_leftWidget.height();
-    m_leftWidget.setGeometry(rect.x() + 2,          rect.y() + (height - m_leftWidgetHeight)/2,
-                              m_leftWidget.width(), m_leftWidget.height());
-
-    int clearButtonWidth = this.height();
-    m_lineEdit.setGeometry(m_leftWidget.x() + m_leftWidget.width(),        0,
-                            width - clearButtonWidth - m_leftWidget.width(), this.height());
-
-    m_clearButton.setGeometry(this.width() - clearButtonWidth, 0,
-                               clearButtonWidth, this.height());
-}
-
-    void initStyleOption(QStyleOptionFrameV2 *option)
-{
-    option.initFrom(this);
-    option.rect = contentsRect();
-    option.lineWidth = style().pixelMetric(QStyle::PM_DefaultFrameWidth, option, this);
-    option.midLineWidth = 0;
-    option.state |= QStyle::State_Sunken;
-    if (m_lineEdit.isReadOnly())
-        option.state |= QStyle::State_ReadOnly;
-version(QT_KEYPAD_NAVIGATION)
-    if (hasEditFocus())
-        option.state |= QStyle::State_HasEditFocus;
-}
-    option.features = QStyleOptionFrameV2::None;
-}
-
-    QWidget *m_leftWidget;
-    QLineEdit *m_lineEdit;
-    ClearButton *m_clearButton;
-};
 
 class UrlIconLabel : public QLabel
 {
+public:
 
-public:
-    this(QWidget *parent)
-{
-	super(parent);
-	m_webView = 0;
-    setMinimumWidth(16);
-    setMinimumHeight(16);
-}
+	this(QWidget parent)
+	{
+		super(parent);
+		m_webView = 0;
+		setMinimumWidth(16);
+		setMinimumHeight(16);
+	}
 
-
-    WebView *m_webView;
+	WebView m_webView;
 
 protected:
-    void mousePressEvent(QMouseEvent *event)
-{
-    if (event.button() == Qt.LeftButton)
-        m_dragStartPos = event.pos();
-    QLabel::mousePressEvent(event);
-}
+
+	void mousePressEvent(QMouseEvent event)
+	{
+		if (event.button() == Qt.LeftButton)
+			m_dragStartPos = event.pos();
+		QLabel.mousePressEvent(event);
+	}
 
-    void mouseMoveEvent(QMouseEvent *event)
-{
-    if (event.buttons() == Qt.LeftButton
-        && (event.pos() - m_dragStartPos).manhattanLength() > QApplication::startDragDistance()
-         && m_webView) {
-        QDrag *drag = new QDrag(this);
-        QMimeData *mimeData = new QMimeData;
-        mimeData.setText(QString::fromUtf8(m_webView.url().toEncoded()));
-        QList<QUrl> urls;
-        urls.append(m_webView.url());
-        mimeData.setUrls(urls);
-        drag.setMimeData(mimeData);
-        drag.exec();
-    }
-}
+	void mouseMoveEvent(QMouseEvent event)
+	{
+		if (event.buttons() == Qt.LeftButton
+				&& (event.pos() - m_dragStartPos).manhattanLength() > QApplication.startDragDistance()
+				&& m_webView) {
+			QDrag drag = new QDrag(this);
+			QMimeData mimeData = new QMimeData;
+			mimeData.setText(QString.fromUtf8(m_webView.url().toEncoded()));
+			QList<QUrl> urls;
+			urls.append(m_webView.url());
+			mimeData.setUrls(urls);
+			drag.setMimeData(mimeData);
+			drag.exec();
+		}
+	}
 
 private:
-    QPoint m_dragStartPos;
 
+	QPoint m_dragStartPos;
 }
 
 
-//class UrlIconLabel;
-//class WebView;
 class UrlLineEdit : public ExLineEdit
 {
-    Q_OBJECT
+public:
 
-public:
-    this(QWidget *parent = null)
-{
-	super(parent);
-	m_webView = 0;
-	m_iconLabel = 0;
-    // icon
-    m_iconLabel = new UrlIconLabel(this);
-    m_iconLabel.resize(16, 16);
-    setLeftWidget(m_iconLabel);
-    m_defaultBaseColor = palette().color(QPalette::Base);
+	this(QWidget parent = null)
+	{
+		super(parent);
+		m_webView = 0;
+		m_iconLabel = 0;
+		// icon
+		m_iconLabel = new UrlIconLabel(this);
+		m_iconLabel.resize(16, 16);
+		setLeftWidget(m_iconLabel);
+		m_defaultBaseColor = palette().color(QPalette.Base);
 
-    webViewIconChanged();
-}
-    void setWebView(WebView *webView)
-{
-    Q_ASSERT(!m_webView);
-    m_webView = webView;
-    m_iconLabel.m_webView = webView;
-    connect(webView, SIGNAL(urlChanged(const QUrl &)),
-        this, SLOT(webViewUrlChanged(const QUrl &)));
-    connect(webView, SIGNAL(loadFinished(bool)),
-        this, SLOT(webViewIconChanged()));
-    connect(webView, SIGNAL(iconChanged()),
-        this, SLOT(webViewIconChanged()));
-    connect(webView, SIGNAL(loadProgress(int)),
-        this, SLOT(update()));
-}
+		webViewIconChanged();
+	}
+	
+	void setWebView(WebView webView)
+	{
+		assert(!m_webView);
+		m_webView = webView;
+		m_iconLabel.m_webView = webView;
+		webView.urlChanged.connect(&this.webViewUrlChanged);
+		webView.loadFinished.connect(&this.webViewIconChanged);
+		webView.iconChanged.connect(&this.webViewIconChanged);
+		webView.loadProgress.connect(&this.update);
+	}
 
 protected:
-    void paintEvent(QPaintEvent *event)
-{
-    QPalette p = palette();
-    if (m_webView && m_webView.url().scheme() == QLatin1String("https")) {
-        QColor lightYellow(248, 248, 210);
-        p.setBrush(QPalette::Base, generateGradient(lightYellow));
-    } else {
-        p.setBrush(QPalette::Base, m_defaultBaseColor);
-    }
-    setPalette(p);
-    ExLineEdit::paintEvent(event);
+
+	void paintEvent(QPaintEvent event)
+	{
+		QPalette p = palette();
+		if (m_webView && m_webView.url().scheme() == QLatin1String("https")) {
+			QColor lightYellow(248, 248, 210);
+			p.setBrush(QPalette.Base, generateGradient(lightYellow));
+		} else {
+			p.setBrush(QPalette.Base, m_defaultBaseColor);
+		}
+		setPalette(p);
+		ExLineEdit.paintEvent(event);
 
-    QPainter painter(this);
-    QStyleOptionFrameV2 panel;
-    initStyleOption(&panel);
-    QRect backgroundRect = style().subElementRect(QStyle::SE_LineEditContents, &panel, this);
-    if (m_webView && !hasFocus()) {
-        int progress = m_webView.progress();
-        QColor loadingColor = QColor(116, 192, 250);
-        painter.setBrush(generateGradient(loadingColor));
-        painter.setPen(Qt.transparent);
-        int mid = backgroundRect.width() / 100 * progress;
-        QRect progressRect(backgroundRect.x(), backgroundRect.y(), mid, backgroundRect.height());
-        painter.drawRect(progressRect);
-    }
-}
+		QPainter painter(this);
+		QStyleOptionFrameV2 panel;
+		initStyleOption(&panel);
+		QRect backgroundRect = style().subElementRect(QStyle.SE_LineEditContents, &panel, this);
+		if (m_webView && !hasFocus()) {
+			int progress = m_webView.progress();
+			QColor loadingColor = QColor(116, 192, 250);
+			painter.setBrush(generateGradient(loadingColor));
+			painter.setPen(Qt.transparent);
+			int mid = backgroundRect.width() / 100 * progress;
+			QRect progressRect(backgroundRect.x(), backgroundRect.y(), mid, backgroundRect.height());
+			painter.drawRect(progressRect);
+		}
+	}
 
-    void focusOutEvent(QFocusEvent *event);
-{
-    if (m_lineEdit.text().isEmpty() && m_webView)
-        m_lineEdit.setText(QString::fromUtf8(m_webView.url().toEncoded()));
-    ExLineEdit::focusOutEvent(event);
-}
-
-private slots:
-    void webViewUrlChanged(const QUrl &url)
-{
-    m_lineEdit.setText(QString::fromUtf8(url.toEncoded()));
-    m_lineEdit.setCursorPosition(0);
-}
-
-    void webViewIconChanged()
-{
-    QUrl url = (m_webView)  ? m_webView.url() : QUrl();
-    QIcon icon = BrowserApplication::instance().icon(url);
-    QPixmap pixmap(icon.pixmap(16, 16));
-    m_iconLabel.setPixmap(pixmap);
-}
+	void focusOutEvent(QFocusEvent event);
+	{
+		if (m_lineEdit.text().isEmpty() && m_webView)
+			m_lineEdit.setText(QString.fromUtf8(m_webView.url().toEncoded()));
+		ExLineEdit.focusOutEvent(event);
+	}
 
 private:
-    QLinearGradient generateGradient(const QColor &color)
-{
-    QLinearGradient gradient(0, 0, 0, height());
-    gradient.setColorAt(0, m_defaultBaseColor);
-    gradient.setColorAt(0.15, color.lighter(120));
-    gradient.setColorAt(0.5, color);
-    gradient.setColorAt(0.85, color.lighter(120));
-    gradient.setColorAt(1, m_defaultBaseColor);
-    return gradient;
+	
+	void webViewUrlChanged(QUrl url)
+	{
+		m_lineEdit.setText(QString.fromUtf8(url.toEncoded()));
+		m_lineEdit.setCursorPosition(0);
+	}
+
+	void webViewIconChanged()
+	{
+		QUrl url = (m_webView)  ? m_webView.url() : QUrl();
+		QIcon icon = BrowserApplication.instance().icon(url);
+		QPixmap pixmap(icon.pixmap(16, 16));
+		m_iconLabel.setPixmap(pixmap);
+	}
+
+private:
+
+	QLinearGradient generateGradient(QColor color)
+	{
+		QLinearGradient gradient(0, 0, 0, height());
+		gradient.setColorAt(0, m_defaultBaseColor);
+		gradient.setColorAt(0.15, color.lighter(120));
+		gradient.setColorAt(0.5, color);
+		gradient.setColorAt(0.85, color.lighter(120));
+		gradient.setColorAt(1, m_defaultBaseColor);
+		return gradient;
+	}
+
+	WebView m_webView;
+	UrlIconLabel m_iconLabel;
+	QColor m_defaultBaseColor;
 }
-
-    WebView *m_webView;
-    UrlIconLabel *m_iconLabel;
-    QColor m_defaultBaseColor;
-}