void imageCompareBase::setConnections() { connect(switchAction_, SIGNAL(triggered()), this, SLOT(switchSides())); connect(centerSplitterAction_, SIGNAL(triggered()), this, SLOT(centerSplitter())); connect(leftFocusAction_, SIGNAL(triggered()), this, SLOT(focusLeft())); connect(leftImageMenu_, SIGNAL(triggered(QAction* )), this, SLOT(processLeftImageMenuTrigger(QAction* ))); connect(leftImageListBox_, SIGNAL(activated(const QString& )), this, SLOT(processLeftBox(const QString& ))); connect(leftShowHide_, SIGNAL(triggered(bool )), this, SLOT(showHideLeft(bool ))); connect(leftDelete_, SIGNAL(triggered()), this, SLOT(deleteLeft())); connect(rightFocusAction_, SIGNAL(triggered()), this, SLOT(focusRight())); connect(rightImageMenu_, SIGNAL(triggered(QAction* )), this, SLOT(processRightImageMenuTrigger(QAction* ))); connect(rightImageListBox_, SIGNAL(activated(const QString& )), this, SLOT(processRightBox(const QString& ))); connect(rightShowHide_, SIGNAL(triggered(bool )), this, SLOT(showHideRight(bool ))); connect(rightDelete_, SIGNAL(triggered()), this, SLOT(deleteRight())); connect(dualZoomingAction_, SIGNAL(triggered(bool )), this, SLOT(updateDualZooming(bool ))); // connect scrolling on the two images setScrollingConnections(true); }
Tree deleteTree(Tree t, TreeEntry e, int *diminuiu) { // Node with entry e is supposed to exist. Before deleteTree, call searchTree. Tree aux, min; // step 1 - remove node with entry e if(e == t->entry) { if(isLeaf(t)) { // if node with entry e is a leaf, just (physically) remove it aux = t; t = NULL; free(aux); *diminuiu = 1; } else if(has1child(t)) { switch(t->bf) { // if node with entry e has only 1 child, check balance factor case LH: // overwrite node entry with left child entry and remove left child aux = t->left; t->entry = aux->entry; t->left = NULL; free(aux); break; case RH: // set node entry to right child entry and remove right child aux = t->right; t->entry = aux->entry; t->right = NULL; free(aux); break; } *diminuiu = 1; } else { // if node with entry e has both subtrees aux = minEntry(t->right); t->entry = aux->entry; // overwrite t's entry with the smallest entry in the right subtree t->right = deleteTree(t->right,aux->entry,diminuiu); } } else if(e < t->entry) t = deleteLeft(t, e, diminuiu); else t = deleteRight(t, e, diminuiu); // step 2 - rebalance the tree (if necessary) return t; }
int main(int argc, const char * argv[]) { DQUEUE_p_t queue = (DQUEUE_p_t)calloc(SIZE, sizeof(DQUEUE_t)); initQueue (queue); char choice; do { printf("\n------------------------------------------------------------\n | 1. Insert Left\n | 2. Insert Right\n | 3. Delete Left\n | 4. Delete Right\n | 5. Display Queue.\n | Q. Quit\n | Enter choice : "); choice = getchar(); getchar(); char * item = (char *)malloc(SIZE * sizeof(char)); if (choice == '1') { printf("\n | Enter item to be inserted: "); fgets(item, SIZE, stdin); insertLeft(queue, item); } else if (choice == '2') { printf("\n | Enter item to be inserted: "); fgets(item, SIZE, stdin); insertRight(queue, item); } else if (choice == '3') { item = deleteLeft(queue); if (item != UNDERFLOW_CHAR) printf("\n | Deleted item: %s\n", item); } else if (choice == '4') { item = deleteRight(queue); if (item != UNDERFLOW_CHAR) printf("\n | Deleted item: %s\n", item); } display(*queue); } while (choice >= '1' && choice <= '5'); return 0; }
//Key press event: Does most of the things in this editor: void CodeEditor::keyPressEvent(QKeyEvent *e) { e->accept(); /* Code Editor features: • Code completion • Auto Indentation • Autoclose for () [] {} " ' and comments */ //First: The keyboard controlling Qt::KeyboardModifiers mods = e->modifiers(); bool Shift = mods.testFlag(Qt::ShiftModifier); bool Ctrl = mods.testFlag(Qt::ControlModifier); // COMMAND key on Mac OS bool Alt = mods.testFlag(Qt::AltModifier); switch(e->key()) { //Movement & selection case Qt::Key_Right: moveRight(Ctrl,Shift); break; case Qt::Key_Left: moveLeft(Ctrl,Shift); break; case Qt::Key_Up: moveUp(Shift); break; case Qt::Key_Down: moveDown(Shift); break; case Qt::Key_Home: if(Ctrl)moveToBeginOfDocument(Shift); else moveToLineBegin(Shift); break; case Qt::Key_End: if(Ctrl)moveToEndOfDocument(Shift); else moveToLineEnd(Shift); break; //Deleting and clearing case Qt::Key_Backspace: deleteLeft(Ctrl); break; case Qt::Key_Delete: deleteRight(Ctrl); break; //Misc case Qt::Key_Escape: //Close the completer if it's shown break; case Qt::Key_Enter: case Qt::Key_Return: newLineAtCursor(); break; //Function keys case Qt::Key_Tab: insertTextAtCursor("\t"); break; case Qt::Key_Insert: if(Shift)paste(); else if(Ctrl)copySelection(); else insertMode=!insertMode; break; case Qt::Key_F3: //Search & replace functionality TODO: not important break; case Qt::Key_F1: case Qt::Key_F2: case Qt::Key_F4: case Qt::Key_F5: case Qt::Key_F6: case Qt::Key_F7: case Qt::Key_F8: case Qt::Key_F9: case Qt::Key_F10: case Qt::Key_F11: case Qt::Key_F12: case Qt::Key_F13: case Qt::Key_F14: case Qt::Key_F15: case Qt::Key_F16: case Qt::Key_F17: case Qt::Key_F18: case Qt::Key_F19: case Qt::Key_F20: case Qt::Key_F21: case Qt::Key_F22: case Qt::Key_F23: case Qt::Key_F24: //Just NO-OP for now! break; //NO-OPs: case Qt::Key_CapsLock: case Qt::Key_NumLock: case Qt::Key_ScrollLock: case Qt::Key_Pause: case Qt::Key_Print: case Qt::Key_SysReq: case Qt::Key_Control: case Qt::Key_Alt: case Qt::Key_AltGr: case Qt::Key_Super_L: case Qt::Key_Super_R: case Qt::Key_Meta: break; default: if(e->key()==Qt::Key_V && Ctrl)paste(); else if(e->key()==Qt::Key_C && Ctrl)copySelection(); else if(e->key()==Qt::Key_X && Ctrl){copySelection();clearSelection();} else if(e->key()==Qt::Key_Z && Ctrl)undo(); else if(e->key()==Qt::Key_Y && Ctrl)redo(); else if(e->key()==Qt::Key_A && Ctrl)selectAll(); //Type the character: else if(!Ctrl)insertTextAtCursor(e->text()); } cursorVisible=true; viewport()->repaint(); }