static gboolean onMouseReleased(GtkWidget *widget, GdkEventButton *ev, gpointer data) { /* Unused parameters. */ (void)widget; (void)data; /* forward on left click, backward on right click */ if (ev->type == GDK_BUTTON_RELEASE) { if (ev->button == 1) { nextSlide(); refreshPorts(); } else if (ev->button == 3) { prevSlide(); refreshPorts(); } } return TRUE; }
void Slideshow::keyPressEvent(QKeyEvent *e) { switch(e->key()) { case Qt::Key_Return: case Qt::Key_Enter: if(e->modifiers() & Qt::AltModifier) { if(this->isFullScreen()) { this->setWindowState(Qt::WindowMaximized); this->setGeometry(QDesktopWidget().screenGeometry(this).adjusted(50,50,-50,-50)); } else this->setWindowState(Qt::WindowFullScreen); } break; case Qt::Key_Space: togglePause(); break; case Qt::Key_Left: if(!m_paused) m_slidetimer->start(); prevSlide(); break; case Qt::Key_Right: if(!m_paused) m_slidetimer->start(); nextSlide(); break; case Qt::Key_Escape: this->close(); break; case Qt::Key_Plus: { int i = m_slidetimer->interval() + 500; m_slidetimer->setInterval(i); setTimerText(); m_timertext->show(); break; } case Qt::Key_Minus: { int i = m_slidetimer->interval() - 500; if(i>=1000) { m_slidetimer->setInterval(i); setTimerText(); } m_timertext->show(); break; } default: QGraphicsView::keyPressEvent(e); } }
static gboolean onScroll(GtkWidget *widget, GdkEventScroll *ev, gpointer data) { /* Unused parameters. */ (void)widget; (void)data; /* forward on down/right scroll, backward on up/left scroll */ if (ev->direction == GDK_SCROLL_DOWN || ev->direction == GDK_SCROLL_RIGHT) { nextSlide(); refreshPorts(); } else if (ev->direction == GDK_SCROLL_UP || ev->direction == GDK_SCROLL_LEFT) { prevSlide(); refreshPorts(); } return TRUE; }
static gboolean onKeyPressed(GtkWidget *widget, GdkEventKey *ev, gpointer data) { /* Unused parameters. */ (void)data; guint key = ev->keyval; gchar *msg = NULL; /* When inside the note pad, don't do anything here. */ if (isInsideNotePad) return FALSE; /* Jump command? * * Note: This works as long as the values of GDK keysyms satisfy: * 1) GDK_0 < GDK_1 < GDK_2 < ... < GDK_9 * 2) All of them must be >= 0. */ key -= GDK_0; if (key <= 9) { /* The initial value is -1, so we have to reset this on the * first key stroke. */ if (target_page < 0) target_page = 0; /* Do a "decimal left shift" and add the given value. */ target_page *= 10; target_page += (int)key; /* Catch overflow and announce what would happen. */ if (target_page < 0) { target_page = -1; setStatusText_strdup("Invalid page."); } else { msg = g_strdup_printf("Jump to page: %d", target_page); setStatusText_strdup(msg); g_free(msg); } return FALSE; } gboolean changed = TRUE; saveCurrentNote(); switch (ev->keyval) { case GDK_Right: case GDK_Down: case GDK_Page_Down: case GDK_space: nextSlide(); break; case GDK_Left: case GDK_Up: case GDK_Page_Up: prevSlide(); break; case GDK_F5: /* Switch to fullscreen (if needed) and start the timer * (unless it's already running). */ if (!isFullScreen) toggleFullScreen(); if (timerMode != 1) toggleTimer(); break; case GDK_F6: /* this shall trigger a hard refresh, so empty the cache. */ clearCache(); break; case GDK_w: runpref.fit_mode = FIT_WIDTH; break; case GDK_h: runpref.fit_mode = FIT_HEIGHT; break; case GDK_p: runpref.fit_mode = FIT_PAGE; break; case GDK_l: current_fixate(); break; case GDK_L: current_release(FALSE); break; case GDK_J: current_release(TRUE); break; case GDK_f: toggleFullScreen(); break; case GDK_s: toggleTimer(); changed = FALSE; break; case GDK_c: toggleCurserVisibility(); break; case GDK_r: resetTimer(); changed = FALSE; break; case GDK_Escape: case GDK_q: if (prefs.q_exits_fullscreen && isFullScreen) { toggleFullScreen(); if (prefs.stop_timer_on_fs) { toggleTimer(); } } else { changed = FALSE; onQuit(NULL, NULL, NULL); } break; case GDK_i: /* This must not work when we're on the beamer window. */ if (widget != win_beamer) setEditingState(TRUE); changed = FALSE; break; case GDK_Return: if (executeJump() == 0) nextSlide(); break; case GDK_G: executeJump(); break; case GDK_period: case GDK_b: toggleBlankBeamer(); changed = FALSE; break; default: changed = FALSE; } if (changed == TRUE) { refreshPorts(); } return TRUE; }