Ejemplo n.º 1
0
void ActionHandler::updateZoomActions(qreal zoomFactor, qreal minZoomFactor, qreal maxZoomFactor)
{
	if (m_zoomInAction)
		m_zoomInAction->setEnabled(zoomFactor < maxZoomFactor);
	if (m_zoomOutAction)
		m_zoomOutAction->setEnabled(zoomFactor > minZoomFactor);
	if (m_zoomAction)
	{
		disconnect(m_zoomAction, SIGNAL(zoomFactorAdded(qreal)), m_zoomReceiver, m_zoomSlot);
		m_zoomAction->setZoomFactor(zoomFactor);
		connect(m_zoomAction, SIGNAL(zoomFactorAdded(qreal)), m_zoomReceiver, m_zoomSlot);
	}
}
Ejemplo n.º 2
0
void ZoomAction::setZoomFactor(qreal zoomFactor)
{
	// adjust zoom factor
	zoomFactor = qBound(s_minZoomFactor, zoomFactor, s_maxZoomFactor);

	// add current zoom factor to the list of zoom factors
	const QString zoomFactorString = formatZoomFactor(zoomFactor * 100);
	const int zoomFactorIndex = items().indexOf(zoomFactorString);
	if (zoomFactorIndex >= 0)
		setCurrentItem(zoomFactorIndex);
	else
		setCurrentZoomFactor(zoomFactor);

	Q_EMIT zoomFactorAdded(zoomFactor);
}
PrintPreviewDialog::PrintPreviewDialog(QPrinter *printer, QWidget *parent)
	: QDialog(parent)
{
	m_initialized = false;

	QVBoxLayout *mainLayout = new QVBoxLayout;

	m_printPreviewWidget = new QPrintPreviewWidget(printer, this);
	connect(m_printPreviewWidget, SIGNAL(paintRequested(QPrinter*)), this, SIGNAL(paintRequested(QPrinter*)));
	connect(m_printPreviewWidget, SIGNAL(previewChanged()), this, SLOT(updateZoomFactor()));

	ToolBar *toolBar = new ToolBar("printpreview_toolbar", this);
	Action *action = new Action(Icon("zoom-fit-width"), tr("Fit &width"), this, "printpreview_fit_width");
	connect(action, SIGNAL(triggered()), m_printPreviewWidget, SLOT(fitToWidth()));
	toolBar->addAction(action);
	action = new Action(Icon("zoom-fit-best"), tr("Fit p&age"), this, "printpreview_fit_page");
	connect(action, SIGNAL(triggered()), m_printPreviewWidget, SLOT(fitInView()));
	toolBar->addAction(action);
	m_zoomToAction = new ZoomAction(Icon("zoom-original"), tr("&Zoom"), this, "printpreview_zoom_to");
	connect(m_zoomToAction, SIGNAL(zoomFactorAdded(qreal)), this, SLOT(setZoomFactor(qreal)));
	toolBar->addAction(m_zoomToAction);
	toolBar->addAction(StandardAction::zoomIn(this, SLOT(zoomIn()), this));
	toolBar->addAction(StandardAction::zoomOut(this, SLOT(zoomOut()), this));
	action = new Action(Icon("document-print"), tr("&Print"), this, "printpreview_print");
	connect(action, SIGNAL(triggered()), this, SLOT(print()));
	toolBar->addAction(action);
	action = new Action(Icon("window-close"), tr("&Close"), this, "printpreview_close");
	connect(action, SIGNAL(triggered()), this, SLOT(reject()));
	toolBar->addAction(action);

	mainLayout->addWidget(toolBar);
	mainLayout->addWidget(m_printPreviewWidget);
	setLayout(mainLayout);

	m_zoomToAction->setZoomFactor(1.0);
}
void PrintPreviewDialog::updateZoomFactor()
{
	disconnect(m_zoomToAction, SIGNAL(zoomFactorAdded(qreal)), this, SLOT(setZoomFactor(qreal)));
	m_zoomToAction->setZoomFactor(m_printPreviewWidget->zoomFactor());
	connect(m_zoomToAction, SIGNAL(zoomFactorAdded(qreal)), this, SLOT(setZoomFactor(qreal)));
}
Ejemplo n.º 5
0
QAction *ActionHandler::action(PdfView::PdfViewAction action, QObject *receiver, const char *slot)
{
	switch (action)
	{
		case PdfView::ZoomIn:
			if (!m_zoomInAction)
			{
				m_zoomInAction = new QAction(tr("Zoom &In", "Action"), this);
#ifndef QT_NO_SHORTCUT
				m_zoomInAction->setShortcut(QKeySequence::ZoomIn);
#endif
				m_zoomInAction->setObjectName(QLatin1String("pdfview_zoom_in"));
				connect(m_zoomInAction, SIGNAL(triggered()), receiver, slot);
			}
			return m_zoomInAction;
			break;

		case PdfView::ZoomOut:
			if (!m_zoomOutAction)
			{
				m_zoomOutAction = new QAction(tr("Zoom &Out", "Action"), this);
#ifndef QT_NO_SHORTCUT
				m_zoomOutAction->setShortcut(QKeySequence::ZoomOut);
#endif
				m_zoomOutAction->setObjectName(QLatin1String("pdfview_zoom_out"));
				connect(m_zoomOutAction, SIGNAL(triggered()), receiver, slot);
			}
			return m_zoomOutAction;
			break;

		case PdfView::Zoom:
			if (!m_zoomAction)
			{
				m_zoomAction = new ZoomAction(tr("&Zoom", "Action"), this);
				connect(m_zoomAction, SIGNAL(zoomFactorAdded(qreal)), receiver, slot);
				m_zoomReceiver = receiver;
				m_zoomSlot = new char[strlen(slot) + 1];
				strcpy(m_zoomSlot, slot);
//				m_zoomSlot = (char *)slot; // XXX this seems to work, if an unknown crash occurs, replacing this by the above might be a better idea
			}
			return m_zoomAction;
			break;

		case PdfView::GoToStartOfDocument:
			if (!m_goToStartAction)
			{
				m_goToStartAction = new QAction(tr("&Beginning of the Document", "Action"), this);
				m_goToStartAction->setIconText(tr("Start", "Action icon text: go to start of document"));
#ifndef QT_NO_SHORTCUT
				m_goToStartAction->setShortcut(QKeySequence::MoveToStartOfDocument);
#endif
				m_goToStartAction->setObjectName(QLatin1String("pdfview_go_start_document"));
				connect(m_goToStartAction, SIGNAL(triggered()), receiver, slot);
			}
			return m_goToStartAction;
			break;

    case PdfView::AmkhlvDn:
      if (!m_amkhlvDnAction)
        {
                m_amkhlvDnAction = new QAction(tr("Scroll Dn Fine", "Action"), this);
                m_amkhlvDnAction->setIconText(tr("ScrollDnFine", "Action icon text: fine scroll dn"));
// #ifndef QT_NO_SHORTCUT
// 				m_amkhlvDnAction->setShortcut(QKeySequence::MoveToEndOfDocument);
// #endif
				m_amkhlvDnAction->setObjectName(QLatin1String("amkhlv_dn"));
				connect(m_amkhlvDnAction, SIGNAL(triggered()), receiver, slot);
        }
      return m_amkhlvDnAction;
      break;
    case PdfView::AmkhlvUp:
      if (!m_amkhlvUpAction)
        {
                m_amkhlvUpAction = new QAction(tr("Scroll Up Fine", "Action"), this);
                m_amkhlvUpAction->setIconText(tr("ScrollUpFine", "Action icon text: fine scroll up"));
				m_amkhlvUpAction->setObjectName(QLatin1String("amkhlv_up"));
				connect(m_amkhlvUpAction, SIGNAL(triggered()), receiver, slot);
        }
      return m_amkhlvUpAction;
      break;
    case PdfView::AmkhlvDnF:
      if (!m_amkhlvDnFAction)
        {
                m_amkhlvDnFAction = new QAction(tr("Scroll Dn Medium", "Action"), this);
                m_amkhlvDnFAction->setIconText(tr("ScrollDnMedium", "Action icon text: medium scroll dn"));
				m_amkhlvDnFAction->setObjectName(QLatin1String("amkhlv_dn_fast"));
				connect(m_amkhlvDnFAction, SIGNAL(triggered()), receiver, slot);
        }
      return m_amkhlvDnFAction;
      break;
    case PdfView::AmkhlvUpF:
      if (!m_amkhlvUpFAction)
        {
                m_amkhlvUpFAction = new QAction(tr("Scroll Up Medium", "Action"), this);
                m_amkhlvUpFAction->setIconText(tr("ScrollUpMedium", "Action icon text: medium scroll up"));
				m_amkhlvUpFAction->setObjectName(QLatin1String("amkhlv_up_fast"));
				connect(m_amkhlvUpFAction, SIGNAL(triggered()), receiver, slot);
        }
      return m_amkhlvUpFAction;
      break;

    case PdfView::AmkhlvRt:
      if (!m_amkhlvRtAction)
        {
                m_amkhlvRtAction = new QAction(tr("Scroll Rt Fine", "Action"), this);
                m_amkhlvRtAction->setIconText(tr("ScrolRtFine", "Action icon text: fine scroll rt"));
				m_amkhlvRtAction->setObjectName(QLatin1String("amkhlv_rt"));
				connect(m_amkhlvRtAction, SIGNAL(triggered()), receiver, slot);
        }
      return m_amkhlvRtAction;
      break;
    case PdfView::AmkhlvLt:
      if (!m_amkhlvLtAction)
        {
                m_amkhlvLtAction = new QAction(tr("Scroll Lt Fine", "Action"), this);
                m_amkhlvLtAction->setIconText(tr("ScrollLtFine", "Action icon text: fine scroll lt"));
				m_amkhlvLtAction->setObjectName(QLatin1String("amkhlv_lt"));
				connect(m_amkhlvLtAction, SIGNAL(triggered()), receiver, slot);
        }
      return m_amkhlvLtAction;
      break;
    case PdfView::AmkhlvRtF:
      if (!m_amkhlvRtFAction)
        {
                m_amkhlvRtFAction = new QAction(tr("Scroll Rt Medium", "Action"), this);
                m_amkhlvRtFAction->setIconText(tr("ScrollRtMedium", "Action icon text: medium scroll rt"));
				m_amkhlvRtFAction->setObjectName(QLatin1String("amkhlv_rt_fast"));
				connect(m_amkhlvRtFAction, SIGNAL(triggered()), receiver, slot);
        }
      return m_amkhlvRtFAction;
      break;
    case PdfView::AmkhlvLtF:
      if (!m_amkhlvLtFAction)
        {
                m_amkhlvLtFAction = new QAction(tr("Scroll Lt Medium", "Action"), this);
                m_amkhlvLtFAction->setIconText(tr("ScrollLtMedium", "Action icon text: medium scroll lt"));
				m_amkhlvLtFAction->setObjectName(QLatin1String("amkhlv_lt_fast"));
				connect(m_amkhlvLtFAction, SIGNAL(triggered()), receiver, slot);
        }
      return m_amkhlvLtFAction;
      break;


		case PdfView::GoToEndOfDocument:
			if (!m_goToEndAction)
			{
				m_goToEndAction = new QAction(tr("&End of the Document", "Action"), this);
				m_goToEndAction->setIconText(tr("End", "Action icon text: go to end of document"));
#ifndef QT_NO_SHORTCUT
				m_goToEndAction->setShortcut(QKeySequence::MoveToEndOfDocument);
#endif
				m_goToEndAction->setObjectName(QLatin1String("pdfview_go_end_document"));
				connect(m_goToEndAction, SIGNAL(triggered()), receiver, slot);
			}
			return m_goToEndAction;
			break;

		case PdfView::GoToPreviousPage:
			if (!m_goToPreviousPageAction)
			{
				m_goToPreviousPageAction = new QAction(tr("&Previous Page", "Action"), this);
				m_goToPreviousPageAction->setIconText(tr("Previous", "Action icon text: go to previous page"));
				m_goToPreviousPageAction->setObjectName(QLatin1String("pdfview_go_previous_page"));
				connect(m_goToPreviousPageAction, SIGNAL(triggered()), receiver, slot);
			}
			return m_goToPreviousPageAction;
			break;

		case PdfView::GoToNextPage:
			if (!m_goToNextPageAction)
			{
				m_goToNextPageAction = new QAction(tr("&Next Page", "Action"), this);
				m_goToNextPageAction->setIconText(tr("Next", "Action icon text: go to next page"));
				m_goToNextPageAction->setObjectName(QLatin1String("pdfview_go_next_page"));
				connect(m_goToNextPageAction, SIGNAL(triggered()), receiver, slot);
			}
			return m_goToNextPageAction;
			break;

		case PdfView::GoToPage:
			if (!m_goToPageAction)
			{
				m_goToPageAction = new SelectPageAction(this);
//				connect(m_goToPageAction, SIGNAL(pageSelected(int)), receiver, slot);
				m_goToPageReceiver = receiver;
				m_goToPageSlot = new char[strlen(slot) + 1];
				strcpy(m_goToPageSlot, slot);
//				m_goToPageSlot = (char *)slot; // XXX this seems to work, if an unknown crash occurs, replacing this by the above might be a better idea
			}
			return m_goToPageAction;
			break;

		case PdfView::Print:
			if (!m_printAction)
			{
				m_printAction = new QAction(tr("&Print...", "Action"), this);
#ifndef QT_NO_SHORTCUT
				m_printAction->setShortcut(QKeySequence::Print);
#endif
				m_printAction->setObjectName(QLatin1String("pdfview_print"));
				connect(m_printAction, SIGNAL(triggered()), receiver, slot);
			}
			return m_printAction;
			break;

		case PdfView::MouseToolBrowse:
			if (!m_mouseToolsActionGroup)
				m_mouseToolsActionGroup = new QActionGroup(this);
			if (!m_mouseBrowseAction)
			{
				m_mouseBrowseAction = new QAction(tr("&Browse Tool", "Action: choose mouse tool"), this);
				m_mouseBrowseAction->setCheckable(true);
				m_mouseBrowseAction->setData(qVariantFromValue(PdfView::Browsing));
				m_mouseBrowseAction->setObjectName(QLatin1String("pdfview_mouse_browse"));
				connect(m_mouseBrowseAction, SIGNAL(triggered()), receiver, slot);
				m_mouseToolsActionGroup->addAction(m_mouseBrowseAction);
			}
			return m_mouseBrowseAction;
			break;

		case PdfView::MouseToolMagnify:
			if (!m_mouseToolsActionGroup)
				m_mouseToolsActionGroup = new QActionGroup(this);
			if (!m_mouseMagnifyAction)
			{
				m_mouseMagnifyAction = new QAction(tr("&Magnify Tool", "Action: choose mouse tool"), this);
				m_mouseMagnifyAction->setCheckable(true);
				m_mouseMagnifyAction->setData(qVariantFromValue(PdfView::Magnifying));
				m_mouseMagnifyAction->setObjectName(QLatin1String("pdfview_mouse_magnify"));
				connect(m_mouseMagnifyAction, SIGNAL(triggered()), receiver, slot);
				m_mouseToolsActionGroup->addAction(m_mouseMagnifyAction);
			}
			return m_mouseMagnifyAction;
			break;

		case PdfView::MouseToolSelection:
			if (!m_mouseToolsActionGroup)
				m_mouseToolsActionGroup = new QActionGroup(this);
			if (!m_mouseSelectionAction)
			{
				m_mouseSelectionAction = new QAction(tr("&Selection Tool", "Action: choose mouse tool"), this);
				m_mouseSelectionAction->setCheckable(true);
				m_mouseSelectionAction->setData(qVariantFromValue(PdfView::Selection));
				m_mouseSelectionAction->setObjectName(QLatin1String("pdfview_mouse_selection"));
				connect(m_mouseSelectionAction, SIGNAL(triggered()), receiver, slot);
				m_mouseToolsActionGroup->addAction(m_mouseSelectionAction);
			}
			return m_mouseSelectionAction;
			break;

		case PdfView::MouseToolTextSelection:
			if (!m_mouseToolsActionGroup)
				m_mouseToolsActionGroup = new QActionGroup(this);
			if (!m_mouseTextSelectionAction)
			{
				m_mouseTextSelectionAction = new QAction(tr("&Text Selection Tool", "Action: choose mouse tool"), this);
				m_mouseTextSelectionAction->setCheckable(true);
				m_mouseTextSelectionAction->setData(qVariantFromValue(PdfView::TextSelection));
				m_mouseTextSelectionAction->setObjectName(QLatin1String("pdfview_mouse_text_selection"));
				connect(m_mouseTextSelectionAction, SIGNAL(triggered()), receiver, slot);
				m_mouseToolsActionGroup->addAction(m_mouseTextSelectionAction);
			}
			return m_mouseTextSelectionAction;
			break;

		case PdfView::ShowForms:
			if (!m_showFormsAction)
			{
				m_showFormsAction = new QAction(tr("Forms", "Action"), this);
				m_showFormsAction->setObjectName(QLatin1String("pdfview_show_forms"));
				m_showFormsAction->setCheckable(true);
				connect(m_showFormsAction, SIGNAL(toggled(bool)), receiver, slot);
			}
			return m_showFormsAction;
			break;

		case PdfView::NoPdfViewAction:
		default:
			return 0;
	}
	return 0;
}