summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/apps/opie-console/widget.cpp5
1 files changed, 0 insertions, 5 deletions
diff --git a/noncore/apps/opie-console/widget.cpp b/noncore/apps/opie-console/widget.cpp
index c51983f..4a578be 100644
--- a/noncore/apps/opie-console/widget.cpp
+++ b/noncore/apps/opie-console/widget.cpp
@@ -742,542 +742,537 @@ void Widget::mouseMoveEvent(QMouseEvent* ev)
742 pntSel.y() == iPntSel.y() && pntSel.x() < iPntSel.x() ); 742 pntSel.y() == iPntSel.y() && pntSel.x() < iPntSel.x() );
743 swapping = left_not_right != old_left_not_right; 743 swapping = left_not_right != old_left_not_right;
744 744
745 // Find left (left_not_right ? from here : from start) 745 // Find left (left_not_right ? from here : from start)
746 QPoint left = left_not_right ? here : iPntSel; 746 QPoint left = left_not_right ? here : iPntSel;
747 i = loc(left.x(),left.y()); 747 i = loc(left.x(),left.y());
748 selClass = charClass(image[i].c); 748 selClass = charClass(image[i].c);
749 while ( left.x() > 0 && charClass(image[i-1].c) == selClass ) 749 while ( left.x() > 0 && charClass(image[i-1].c) == selClass )
750 { i--; left.rx()--; } 750 { i--; left.rx()--; }
751 751
752 // Find left (left_not_right ? from start : from here) 752 // Find left (left_not_right ? from start : from here)
753 QPoint right = left_not_right ? iPntSel : here; 753 QPoint right = left_not_right ? iPntSel : here;
754 i = loc(right.x(),right.y()); 754 i = loc(right.x(),right.y());
755 selClass = charClass(image[i].c); 755 selClass = charClass(image[i].c);
756 while ( right.x() < columns-1 && charClass(image[i+1].c) == selClass ) 756 while ( right.x() < columns-1 && charClass(image[i+1].c) == selClass )
757 { i++; right.rx()++; } 757 { i++; right.rx()++; }
758 758
759 // Pick which is start (ohere) and which is extension (here) 759 // Pick which is start (ohere) and which is extension (here)
760 if ( left_not_right ) 760 if ( left_not_right )
761 { 761 {
762 here = left; ohere = right; 762 here = left; ohere = right;
763 } 763 }
764 else 764 else
765 { 765 {
766 here = right; ohere = left; 766 here = right; ohere = left;
767 } 767 }
768 } 768 }
769 769
770 if (here == pntSel && scroll == scrollbar->value()) return; // not moved 770 if (here == pntSel && scroll == scrollbar->value()) return; // not moved
771 771
772 if ( word_selection_mode ) { 772 if ( word_selection_mode ) {
773 if ( actSel < 2 || swapping ) { 773 if ( actSel < 2 || swapping ) {
774 emit beginSelectionSignal( ohere.x(), ohere.y() ); 774 emit beginSelectionSignal( ohere.x(), ohere.y() );
775 } 775 }
776 } else if ( actSel < 2 ) { 776 } else if ( actSel < 2 ) {
777 emit beginSelectionSignal( pntSel.x(), pntSel.y() ); 777 emit beginSelectionSignal( pntSel.x(), pntSel.y() );
778 } 778 }
779 779
780 actSel = 2; // within selection 780 actSel = 2; // within selection
781 pntSel = here; 781 pntSel = here;
782 emit extendSelectionSignal( here.x(), here.y() ); 782 emit extendSelectionSignal( here.x(), here.y() );
783} 783}
784 784
785void Widget::mouseReleaseEvent(QMouseEvent* ev) 785void Widget::mouseReleaseEvent(QMouseEvent* ev)
786{ 786{
787//printf("release [%d,%d] %d\n",ev->x()/font_w,ev->y()/font_h,ev->button()); 787//printf("release [%d,%d] %d\n",ev->x()/font_w,ev->y()/font_h,ev->button());
788 if ( ev->button() == LeftButton) 788 if ( ev->button() == LeftButton)
789 { 789 {
790 if ( actSel > 1 ) emit endSelectionSignal(preserve_line_breaks); 790 if ( actSel > 1 ) emit endSelectionSignal(preserve_line_breaks);
791 preserve_line_breaks = TRUE; 791 preserve_line_breaks = TRUE;
792 actSel = 0; 792 actSel = 0;
793 793
794 //FIXME: emits a release event even if the mouse is 794 //FIXME: emits a release event even if the mouse is
795 // outside the range. The procedure used in `mouseMoveEvent' 795 // outside the range. The procedure used in `mouseMoveEvent'
796 // applies here, too. 796 // applies here, too.
797 797
798 QPoint tL = contentsRect().topLeft(); 798 QPoint tL = contentsRect().topLeft();
799 int tLx = tL.x(); 799 int tLx = tL.x();
800 int tLy = tL.y(); 800 int tLy = tL.y();
801 801
802 if (!mouse_marks && !(ev->state() & ShiftButton)) 802 if (!mouse_marks && !(ev->state() & ShiftButton))
803 emit mouseSignal( 3, // release 803 emit mouseSignal( 3, // release
804 (ev->x()-tLx-blX)/font_w + 1, 804 (ev->x()-tLx-blX)/font_w + 1,
805 (ev->y()-tLy-bY)/font_h + 1 ); 805 (ev->y()-tLy-bY)/font_h + 1 );
806 releaseMouse(); 806 releaseMouse();
807 } 807 }
808} 808}
809 809
810void Widget::mouseDoubleClickEvent(QMouseEvent* ev) 810void Widget::mouseDoubleClickEvent(QMouseEvent* ev)
811{ 811{
812 if ( ev->button() != LeftButton) return; 812 if ( ev->button() != LeftButton) return;
813 813
814 QPoint tL = contentsRect().topLeft(); 814 QPoint tL = contentsRect().topLeft();
815 int tLx = tL.x(); 815 int tLx = tL.x();
816 int tLy = tL.y(); 816 int tLy = tL.y();
817 QPoint pos = QPoint((ev->x()-tLx-blX)/font_w,(ev->y()-tLy-bY)/font_h); 817 QPoint pos = QPoint((ev->x()-tLx-blX)/font_w,(ev->y()-tLy-bY)/font_h);
818 818
819 // pass on double click as two clicks. 819 // pass on double click as two clicks.
820 if (!mouse_marks && !(ev->state() & ShiftButton)) 820 if (!mouse_marks && !(ev->state() & ShiftButton))
821 { 821 {
822 emit mouseSignal( 0, pos.x()+1, pos.y()+1 ); // left button 822 emit mouseSignal( 0, pos.x()+1, pos.y()+1 ); // left button
823 emit mouseSignal( 3, pos.x()+1, pos.y()+1 ); // release 823 emit mouseSignal( 3, pos.x()+1, pos.y()+1 ); // release
824 emit mouseSignal( 0, pos.x()+1, pos.y()+1 ); // left button 824 emit mouseSignal( 0, pos.x()+1, pos.y()+1 ); // left button
825 return; 825 return;
826 } 826 }
827 827
828 828
829 emit clearSelectionSignal(); 829 emit clearSelectionSignal();
830 QPoint bgnSel = pos; 830 QPoint bgnSel = pos;
831 QPoint endSel = QPoint((ev->x()-tLx-blX)/font_w,(ev->y()-tLy-bY)/font_h); 831 QPoint endSel = QPoint((ev->x()-tLx-blX)/font_w,(ev->y()-tLy-bY)/font_h);
832 int i = loc(bgnSel.x(),bgnSel.y()); 832 int i = loc(bgnSel.x(),bgnSel.y());
833 iPntSel = bgnSel; 833 iPntSel = bgnSel;
834 834
835 word_selection_mode = TRUE; 835 word_selection_mode = TRUE;
836 836
837 // find word boundaries... 837 // find word boundaries...
838 int selClass = charClass(image[i].c); 838 int selClass = charClass(image[i].c);
839 { 839 {
840 // set the start... 840 // set the start...
841 int x = bgnSel.x(); 841 int x = bgnSel.x();
842 while ( x > 0 && charClass(image[i-1].c) == selClass ) 842 while ( x > 0 && charClass(image[i-1].c) == selClass )
843 { i--; x--; } 843 { i--; x--; }
844 bgnSel.setX(x); 844 bgnSel.setX(x);
845 emit beginSelectionSignal( bgnSel.x(), bgnSel.y() ); 845 emit beginSelectionSignal( bgnSel.x(), bgnSel.y() );
846 846
847 // set the end... 847 // set the end...
848 i = loc( endSel.x(), endSel.y() ); 848 i = loc( endSel.x(), endSel.y() );
849 x = endSel.x(); 849 x = endSel.x();
850 while( x < columns-1 && charClass(image[i+1].c) == selClass ) 850 while( x < columns-1 && charClass(image[i+1].c) == selClass )
851 { i++; x++ ; } 851 { i++; x++ ; }
852 endSel.setX(x); 852 endSel.setX(x);
853 actSel = 2; // within selection 853 actSel = 2; // within selection
854 emit extendSelectionSignal( endSel.x(), endSel.y() ); 854 emit extendSelectionSignal( endSel.x(), endSel.y() );
855 emit endSelectionSignal(preserve_line_breaks); 855 emit endSelectionSignal(preserve_line_breaks);
856 preserve_line_breaks = TRUE; 856 preserve_line_breaks = TRUE;
857 } 857 }
858} 858}
859 859
860void Widget::focusInEvent( QFocusEvent * ) 860void Widget::focusInEvent( QFocusEvent * )
861{ 861{
862 862
863 // do nothing, to prevent repainting 863 // do nothing, to prevent repainting
864} 864}
865 865
866 866
867void Widget::focusOutEvent( QFocusEvent * ) 867void Widget::focusOutEvent( QFocusEvent * )
868{ 868{
869 // do nothing, to prevent repainting 869 // do nothing, to prevent repainting
870} 870}
871 871
872bool Widget::focusNextPrevChild( bool next ) 872bool Widget::focusNextPrevChild( bool next )
873{ 873{
874 if (next) 874 if (next)
875 return false; // This disables changing the active part in konqueror 875 return false; // This disables changing the active part in konqueror
876 // when pressing Tab 876 // when pressing Tab
877 return QFrame::focusNextPrevChild( next ); 877 return QFrame::focusNextPrevChild( next );
878} 878}
879 879
880 880
881int Widget::charClass(char ch) const 881int Widget::charClass(char ch) const
882{ 882{
883 // This might seem like overkill, but imagine if ch was a Unicode 883 // This might seem like overkill, but imagine if ch was a Unicode
884 // character (Qt 2.0 QChar) - it might then be sensible to separate 884 // character (Qt 2.0 QChar) - it might then be sensible to separate
885 // the different language ranges, etc. 885 // the different language ranges, etc.
886 886
887 if ( isspace(ch) ) return ' '; 887 if ( isspace(ch) ) return ' ';
888 888
889 static const char *word_characters = ":@-./_~"; 889 static const char *word_characters = ":@-./_~";
890 if ( isalnum(ch) || strchr(word_characters, ch) ) 890 if ( isalnum(ch) || strchr(word_characters, ch) )
891 return 'a'; 891 return 'a';
892 892
893 // Everything else is weird 893 // Everything else is weird
894 return 1; 894 return 1;
895} 895}
896 896
897void Widget::setMouseMarks(bool on) 897void Widget::setMouseMarks(bool on)
898{ 898{
899 mouse_marks = on; 899 mouse_marks = on;
900 setCursor( mouse_marks ? ibeamCursor : arrowCursor ); 900 setCursor( mouse_marks ? ibeamCursor : arrowCursor );
901} 901}
902 902
903/* ------------------------------------------------------------------------- */ 903/* ------------------------------------------------------------------------- */
904/* */ 904/* */
905/* Clipboard */ 905/* Clipboard */
906/* */ 906/* */
907/* ------------------------------------------------------------------------- */ 907/* ------------------------------------------------------------------------- */
908 908
909#undef KeyPress 909#undef KeyPress
910 910
911void Widget::emitSelection() 911void Widget::emitSelection()
912// Paste Clipboard by simulating keypress events 912// Paste Clipboard by simulating keypress events
913{ 913{
914#ifndef QT_NO_CLIPBOARD 914#ifndef QT_NO_CLIPBOARD
915 QString text = QApplication::clipboard()->text(); 915 QString text = QApplication::clipboard()->text();
916 if ( ! text.isNull() ) 916 if ( ! text.isNull() )
917 { 917 {
918 text.replace(QRegExp("\n"), "\r"); 918 text.replace(QRegExp("\n"), "\r");
919 QKeyEvent e(QEvent::KeyPress, 0, -1, 0, text); 919 QKeyEvent e(QEvent::KeyPress, 0, -1, 0, text);
920 emit keyPressedSignal(&e); // expose as a big fat keypress event 920 emit keyPressedSignal(&e); // expose as a big fat keypress event
921 emit clearSelectionSignal(); 921 emit clearSelectionSignal();
922 } 922 }
923#endif 923#endif
924} 924}
925 925
926void Widget::emitText(QString text) 926void Widget::emitText(QString text)
927{ 927{
928 QKeyEvent e(QEvent::KeyPress, 0, -1, 0, text); 928 QKeyEvent e(QEvent::KeyPress, 0, -1, 0, text);
929 emit keyPressedSignal(&e); // expose as a big fat keypress event 929 emit keyPressedSignal(&e); // expose as a big fat keypress event
930} 930}
931 931
932void Widget::pasteClipboard( ) 932void Widget::pasteClipboard( )
933{ 933{
934 emitSelection(); 934 emitSelection();
935} 935}
936 936
937void Widget::setSelection(const QString& t) 937void Widget::setSelection(const QString& t)
938{ 938{
939#ifndef QT_NO_CLIPBOARD 939#ifndef QT_NO_CLIPBOARD
940 // Disconnect signal while WE set the clipboard 940 // Disconnect signal while WE set the clipboard
941 QObject *cb = QApplication::clipboard(); 941 QObject *cb = QApplication::clipboard();
942 QObject::disconnect( cb, SIGNAL(dataChanged()), 942 QObject::disconnect( cb, SIGNAL(dataChanged()),
943 this, SLOT(onClearSelection()) ); 943 this, SLOT(onClearSelection()) );
944 944
945 QApplication::clipboard()->setText(t); 945 QApplication::clipboard()->setText(t);
946 946
947 QObject::connect( cb, SIGNAL(dataChanged()), 947 QObject::connect( cb, SIGNAL(dataChanged()),
948 this, SLOT(onClearSelection()) ); 948 this, SLOT(onClearSelection()) );
949#endif 949#endif
950} 950}
951 951
952void Widget::onClearSelection() 952void Widget::onClearSelection()
953{ 953{
954 emit clearSelectionSignal(); 954 emit clearSelectionSignal();
955} 955}
956 956
957/* ------------------------------------------------------------------------- */ 957/* ------------------------------------------------------------------------- */
958/* */ 958/* */
959/* Keyboard */ 959/* Keyboard */
960/* */ 960/* */
961/* ------------------------------------------------------------------------- */ 961/* ------------------------------------------------------------------------- */
962 962
963//FIXME: an `eventFilter' has been installed instead of a `keyPressEvent' 963//FIXME: an `eventFilter' has been installed instead of a `keyPressEvent'
964// due to a bug in `QT' or the ignorance of the author to prevent 964// due to a bug in `QT' or the ignorance of the author to prevent
965// repaint events being emitted to the screen whenever one leaves 965// repaint events being emitted to the screen whenever one leaves
966// or reenters the screen to/from another application. 966// or reenters the screen to/from another application.
967// 967//
968// Troll says one needs to change focusInEvent() and focusOutEvent(), 968// Troll says one needs to change focusInEvent() and focusOutEvent(),
969// which would also let you have an in-focus cursor and an out-focus 969// which would also let you have an in-focus cursor and an out-focus
970// cursor like xterm does. 970// cursor like xterm does.
971 971
972// for the auto-hide cursor feature, I added empty focusInEvent() and 972// for the auto-hide cursor feature, I added empty focusInEvent() and
973// focusOutEvent() so that update() isn't called. 973// focusOutEvent() so that update() isn't called.
974// For auto-hide, we need to get keypress-events, but we only get them when 974// For auto-hide, we need to get keypress-events, but we only get them when
975// we have focus. 975// we have focus.
976 976
977void Widget::doScroll(int lines) 977void Widget::doScroll(int lines)
978{ 978{
979 scrollbar->setValue(scrollbar->value()+lines); 979 scrollbar->setValue(scrollbar->value()+lines);
980} 980}
981 981
982bool Widget::eventFilter( QObject *obj, QEvent *e ) 982bool Widget::eventFilter( QObject *obj, QEvent *e )
983{ 983{
984 if ( (e->type() == QEvent::Accel || 984 if ( (e->type() == QEvent::Accel ||
985 e->type() == QEvent::AccelAvailable ) && qApp->focusWidget() == this ) { 985 e->type() == QEvent::AccelAvailable ) && qApp->focusWidget() == this ) {
986 static_cast<QKeyEvent *>( e )->ignore(); 986 static_cast<QKeyEvent *>( e )->ignore();
987 return true; 987 return true;
988 } 988 }
989 if ( obj != this /* when embedded */ && obj != parent() /* when standalone */ ) 989 if ( obj != this /* when embedded */ && obj != parent() /* when standalone */ )
990 return FALSE; // not us 990 return FALSE; // not us
991 if ( e->type() == QEvent::Wheel) { 991 if ( e->type() == QEvent::Wheel) {
992 QApplication::sendEvent(scrollbar, e); 992 QApplication::sendEvent(scrollbar, e);
993 } 993 }
994 994
995#ifdef FAKE_CTRL_AND_ALT 995#ifdef FAKE_CTRL_AND_ALT
996 static bool control = FALSE; 996 static bool control = FALSE;
997 static bool alt = FALSE; 997 static bool alt = FALSE;
998// odebug << " Has a keyboard with no CTRL and ALT keys, but we fake it:" << oendl;
999 bool dele=FALSE; 998 bool dele=FALSE;
1000 if ( e->type() == QEvent::KeyPress || e->type() == QEvent::KeyRelease ) { 999 if ( e->type() == QEvent::KeyPress || e->type() == QEvent::KeyRelease ) {
1001 QKeyEvent* ke = (QKeyEvent*)e; 1000 QKeyEvent* ke = (QKeyEvent*)e;
1002 bool keydown = e->type() == QEvent::KeyPress || ke->isAutoRepeat(); 1001 bool keydown = e->type() == QEvent::KeyPress || ke->isAutoRepeat();
1003 switch (ke->key()) { 1002 switch (ke->key()) {
1004 case Key_F9: // let this be "Control" 1003 case Key_F9: // let this be "Control"
1005 control = keydown; 1004 control = keydown;
1006 e = new QKeyEvent(QEvent::KeyPress, Key_Control, 0, ke->state()); 1005 e = new QKeyEvent(QEvent::KeyPress, Key_Control, 0, ke->state());
1007 dele=TRUE; 1006 dele=TRUE;
1008 break; 1007 break;
1009 case Key_F13: // let this be "Alt" 1008 case Key_F13: // let this be "Alt"
1010 alt = keydown; 1009 alt = keydown;
1011 e = new QKeyEvent(QEvent::KeyPress, Key_Alt, 0, ke->state()); 1010 e = new QKeyEvent(QEvent::KeyPress, Key_Alt, 0, ke->state());
1012 dele=TRUE; 1011 dele=TRUE;
1013 break; 1012 break;
1014 default: 1013 default:
1015 if ( control ) { 1014 if ( control ) {
1016 int a = toupper(ke->ascii())-64; 1015 int a = toupper(ke->ascii())-64;
1017 if ( a >= 0 && a < ' ' ) { 1016 if ( a >= 0 && a < ' ' ) {
1018 e = new QKeyEvent(e->type(), ke->key(), 1017 e = new QKeyEvent(e->type(), ke->key(),
1019 a, ke->state()|ControlButton, QChar(a,0)); 1018 a, ke->state()|ControlButton, QChar(a,0));
1020 dele=TRUE; 1019 dele=TRUE;
1021 } 1020 }
1022 } 1021 }
1023 if ( alt ) { 1022 if ( alt ) {
1024 e = new QKeyEvent(e->type(), ke->key(), 1023 e = new QKeyEvent(e->type(), ke->key(),
1025 ke->ascii(), ke->state()|AltButton, ke->text()); 1024 ke->ascii(), ke->state()|AltButton, ke->text());
1026 dele=TRUE; 1025 dele=TRUE;
1027 } 1026 }
1028 } 1027 }
1029 } 1028 }
1030#endif 1029#endif
1031 1030
1032 if ( e->type() == QEvent::KeyPress ) { 1031 if ( e->type() == QEvent::KeyPress ) {
1033 QKeyEvent* ke = (QKeyEvent*)e; 1032 QKeyEvent* ke = (QKeyEvent*)e;
1034 actSel=0; // Key stroke implies a screen update, so Widget won't 1033 actSel=0; // Key stroke implies a screen update, so Widget won't
1035 // know where the current selection is. 1034 // know where the current selection is.
1036 1035
1037// odebug << "key pressed is 0x" << ke->key() << "" << oendl;
1038
1039 if( ke->state() == ShiftButton && ke->key() == Key_Tab) { //lets hardcode this sucker 1036 if( ke->state() == ShiftButton && ke->key() == Key_Tab) { //lets hardcode this sucker
1040
1041// odebug << "key pressed 2 is 0x" << ke->key() << "" << oendl;
1042 emitText("\\"); // expose 1037 emitText("\\"); // expose
1043 } else 1038 } else
1044 emit keyPressedSignal(ke); // expose 1039 emit keyPressedSignal(ke); // expose
1045 ke->accept(); 1040 ke->accept();
1046#ifdef FAKE_CTRL_AND_ALT 1041#ifdef FAKE_CTRL_AND_ALT
1047 if ( dele ) delete e; 1042 if ( dele ) delete e;
1048#endif 1043#endif
1049 return true; // stop the event 1044 return true; // stop the event
1050 } 1045 }
1051 if ( e->type() == QEvent::Enter ) { 1046 if ( e->type() == QEvent::Enter ) {
1052 QObject::disconnect( (QObject*)cb, SIGNAL(dataChanged()), 1047 QObject::disconnect( (QObject*)cb, SIGNAL(dataChanged()),
1053 this, SLOT(onClearSelection()) ); 1048 this, SLOT(onClearSelection()) );
1054 } 1049 }
1055 if ( e->type() == QEvent::Leave ) { 1050 if ( e->type() == QEvent::Leave ) {
1056 QObject::connect( (QObject*)cb, SIGNAL(dataChanged()), 1051 QObject::connect( (QObject*)cb, SIGNAL(dataChanged()),
1057 this, SLOT(onClearSelection()) ); 1052 this, SLOT(onClearSelection()) );
1058 } 1053 }
1059 return QFrame::eventFilter( obj, e ); 1054 return QFrame::eventFilter( obj, e );
1060} 1055}
1061 1056
1062/* ------------------------------------------------------------------------- */ 1057/* ------------------------------------------------------------------------- */
1063/* */ 1058/* */
1064/* Frame */ 1059/* Frame */
1065/* */ 1060/* */
1066/* ------------------------------------------------------------------------- */ 1061/* ------------------------------------------------------------------------- */
1067 1062
1068void Widget::frameChanged() 1063void Widget::frameChanged()
1069{ 1064{
1070 propagateSize(); 1065 propagateSize();
1071 update(); 1066 update();
1072} 1067}
1073 1068
1074/* ------------------------------------------------------------------------- */ 1069/* ------------------------------------------------------------------------- */
1075/* */ 1070/* */
1076/* Sound */ 1071/* Sound */
1077/* */ 1072/* */
1078/* ------------------------------------------------------------------------- */ 1073/* ------------------------------------------------------------------------- */
1079 1074
1080void Widget::Bell() 1075void Widget::Bell()
1081{ 1076{
1082 QApplication::beep(); 1077 QApplication::beep();
1083} 1078}
1084 1079
1085/* ------------------------------------------------------------------------- */ 1080/* ------------------------------------------------------------------------- */
1086/* */ 1081/* */
1087/* Auxiluary */ 1082/* Auxiluary */
1088/* */ 1083/* */
1089/* ------------------------------------------------------------------------- */ 1084/* ------------------------------------------------------------------------- */
1090 1085
1091void Widget::clearImage() 1086void Widget::clearImage()
1092// initialize the image 1087// initialize the image
1093// for internal use only 1088// for internal use only
1094{ 1089{
1095 for (int y = 0; y < lines; y++) 1090 for (int y = 0; y < lines; y++)
1096 for (int x = 0; x < columns; x++) 1091 for (int x = 0; x < columns; x++)
1097 { 1092 {
1098 image[loc(x,y)].c = 0xff; //' '; 1093 image[loc(x,y)].c = 0xff; //' ';
1099 image[loc(x,y)].f = 0xff; //DEFAULT_FORE_COLOR; 1094 image[loc(x,y)].f = 0xff; //DEFAULT_FORE_COLOR;
1100 image[loc(x,y)].b = 0xff; //DEFAULT_BACK_COLOR; 1095 image[loc(x,y)].b = 0xff; //DEFAULT_BACK_COLOR;
1101 image[loc(x,y)].r = 0xff; //DEFAULT_RENDITION; 1096 image[loc(x,y)].r = 0xff; //DEFAULT_RENDITION;
1102 } 1097 }
1103} 1098}
1104 1099
1105// Create Image /////////////////////////////////////////////////////// 1100// Create Image ///////////////////////////////////////////////////////
1106 1101
1107void Widget::calcGeometry() 1102void Widget::calcGeometry()
1108{ 1103{
1109 //FIXME: set rimX == rimY == 0 when running in full screen mode. 1104 //FIXME: set rimX == rimY == 0 when running in full screen mode.
1110 1105
1111 scrollbar->resize(QApplication::style().scrollBarExtent().width(), 1106 scrollbar->resize(QApplication::style().scrollBarExtent().width(),
1112 contentsRect().height()); 1107 contentsRect().height());
1113 switch(scrollLoc) 1108 switch(scrollLoc)
1114 { 1109 {
1115 case SCRNONE : 1110 case SCRNONE :
1116 columns = ( contentsRect().width() - 2 * rimX ) / font_w; 1111 columns = ( contentsRect().width() - 2 * rimX ) / font_w;
1117 blX = (contentsRect().width() - (columns*font_w) ) / 2; 1112 blX = (contentsRect().width() - (columns*font_w) ) / 2;
1118 brX = blX; 1113 brX = blX;
1119 scrollbar->hide(); 1114 scrollbar->hide();
1120 break; 1115 break;
1121 case SCRLEFT : 1116 case SCRLEFT :
1122 columns = ( contentsRect().width() - 2 * rimX - scrollbar->width()) / font_w; 1117 columns = ( contentsRect().width() - 2 * rimX - scrollbar->width()) / font_w;
1123 brX = (contentsRect().width() - (columns*font_w) - scrollbar->width() ) / 2; 1118 brX = (contentsRect().width() - (columns*font_w) - scrollbar->width() ) / 2;
1124 blX = brX + scrollbar->width(); 1119 blX = brX + scrollbar->width();
1125 scrollbar->move(contentsRect().topLeft()); 1120 scrollbar->move(contentsRect().topLeft());
1126 scrollbar->show(); 1121 scrollbar->show();
1127 break; 1122 break;
1128 case SCRRIGHT: 1123 case SCRRIGHT:
1129 columns = ( contentsRect().width() - 2 * rimX - scrollbar->width()) / font_w; 1124 columns = ( contentsRect().width() - 2 * rimX - scrollbar->width()) / font_w;
1130 blX = (contentsRect().width() - (columns*font_w) - scrollbar->width() ) / 2; 1125 blX = (contentsRect().width() - (columns*font_w) - scrollbar->width() ) / 2;
1131 brX = blX; 1126 brX = blX;
1132 scrollbar->move(contentsRect().topRight() - QPoint(scrollbar->width()-1,0)); 1127 scrollbar->move(contentsRect().topRight() - QPoint(scrollbar->width()-1,0));
1133 scrollbar->show(); 1128 scrollbar->show();
1134 break; 1129 break;
1135 } 1130 }
1136 //FIXME: support 'rounding' styles 1131 //FIXME: support 'rounding' styles
1137 lines = ( contentsRect().height() - 2 * rimY ) / font_h; 1132 lines = ( contentsRect().height() - 2 * rimY ) / font_h;
1138 bY = (contentsRect().height() - (lines *font_h)) / 2; 1133 bY = (contentsRect().height() - (lines *font_h)) / 2;
1139} 1134}
1140 1135
1141void Widget::makeImage() 1136void Widget::makeImage()
1142//FIXME: rename 'calcGeometry? 1137//FIXME: rename 'calcGeometry?
1143{ 1138{
1144 calcGeometry(); 1139 calcGeometry();
1145 image = (Character*) malloc(lines*columns*sizeof(Character)); 1140 image = (Character*) malloc(lines*columns*sizeof(Character));
1146 clearImage(); 1141 clearImage();
1147} 1142}
1148 1143
1149// calculate the needed size 1144// calculate the needed size
1150QSize Widget::calcSize(int cols, int lins) const 1145QSize Widget::calcSize(int cols, int lins) const
1151{ 1146{
1152 int frw = width() - contentsRect().width(); 1147 int frw = width() - contentsRect().width();
1153 int frh = height() - contentsRect().height(); 1148 int frh = height() - contentsRect().height();
1154 int scw = (scrollLoc==SCRNONE?0:scrollbar->width()); 1149 int scw = (scrollLoc==SCRNONE?0:scrollbar->width());
1155 return QSize( font_w*cols + 2*rimX + frw + scw, font_h*lins + 2*rimY + frh ); 1150 return QSize( font_w*cols + 2*rimX + frw + scw, font_h*lins + 2*rimY + frh );
1156} 1151}
1157 1152
1158QSize Widget::sizeHint() const 1153QSize Widget::sizeHint() const
1159{ 1154{
1160 return size(); 1155 return size();
1161} 1156}
1162 1157
1163void Widget::styleChange(QStyle &) 1158void Widget::styleChange(QStyle &)
1164{ 1159{
1165 propagateSize(); 1160 propagateSize();
1166} 1161}
1167 1162
1168#ifndef QT_NO_DRAGANDDROP 1163#ifndef QT_NO_DRAGANDDROP
1169 1164
1170/* --------------------------------------------------------------------- */ 1165/* --------------------------------------------------------------------- */
1171/* */ 1166/* */
1172/* Drag & Drop */ 1167/* Drag & Drop */
1173/* */ 1168/* */
1174/* --------------------------------------------------------------------- */ 1169/* --------------------------------------------------------------------- */
1175 1170
1176 1171
1177void Widget::dragEnterEvent(QDragEnterEvent* e) 1172void Widget::dragEnterEvent(QDragEnterEvent* e)
1178{ 1173{
1179 e->accept(QTextDrag::canDecode(e) || 1174 e->accept(QTextDrag::canDecode(e) ||
1180 QUriDrag::canDecode(e)); 1175 QUriDrag::canDecode(e));
1181} 1176}
1182 1177
1183void Widget::dropEvent(QDropEvent* event) 1178void Widget::dropEvent(QDropEvent* event)
1184{ 1179{
1185 // The current behaviour when url(s) are dropped is 1180 // The current behaviour when url(s) are dropped is
1186 // * if there is only ONE url and if it's a LOCAL one, ask for paste or cd 1181 // * if there is only ONE url and if it's a LOCAL one, ask for paste or cd
1187 // * in all other cases, just paste 1182 // * in all other cases, just paste
1188 // (for non-local ones, or for a list of URLs, 'cd' is nonsense) 1183 // (for non-local ones, or for a list of URLs, 'cd' is nonsense)
1189 QStrList strlist; 1184 QStrList strlist;
1190 int file_count = 0; 1185 int file_count = 0;
1191 dropText = ""; 1186 dropText = "";
1192 bool bPopup = true; 1187 bool bPopup = true;
1193 1188
1194 if(QUriDrag::decode(event, strlist)) { 1189 if(QUriDrag::decode(event, strlist)) {
1195 if (strlist.count()) { 1190 if (strlist.count()) {
1196 for(const char* p = strlist.first(); p; p = strlist.next()) { 1191 for(const char* p = strlist.first(); p; p = strlist.next()) {
1197 if(file_count++ > 0) { 1192 if(file_count++ > 0) {
1198 dropText += " "; 1193 dropText += " ";
1199 bPopup = false; // more than one file, don't popup 1194 bPopup = false; // more than one file, don't popup
1200 } 1195 }
1201 1196
1202/* 1197/*
1203 KURL url(p); 1198 KURL url(p);
1204 if (url.isLocalFile()) { 1199 if (url.isLocalFile()) {
1205 dropText += url.path(); // local URL : remove protocol 1200 dropText += url.path(); // local URL : remove protocol
1206 } 1201 }
1207 else { 1202 else {
1208 dropText += url.prettyURL(); 1203 dropText += url.prettyURL();
1209 bPopup = false; // a non-local file, don't popup 1204 bPopup = false; // a non-local file, don't popup
1210 } 1205 }
1211*/ 1206*/
1212 1207
1213 } 1208 }
1214 1209
1215 if (bPopup) 1210 if (bPopup)
1216 // m_drop->popup(pos() + event->pos()); 1211 // m_drop->popup(pos() + event->pos());
1217 m_drop->popup(mapToGlobal(event->pos())); 1212 m_drop->popup(mapToGlobal(event->pos()));
1218 else 1213 else
1219 { 1214 {
1220 if (currentSession) { 1215 if (currentSession) {
1221 //currentSession->getEmulation()->sendString(dropText.local8Bit()); 1216 //currentSession->getEmulation()->sendString(dropText.local8Bit());
1222 QByteArray tmp; 1217 QByteArray tmp;
1223 // ibot: this should be pretty wrong... 1218 // ibot: this should be pretty wrong...
1224 // now it sends to the right layer 1219 // now it sends to the right layer
1225 currentSession-> emulationLayer()->send( tmp.setRawData( dropText.local8Bit())); 1220 currentSession-> emulationLayer()->send( tmp.setRawData( dropText.local8Bit()));
1226 } 1221 }
1227 // kdDebug() << "Drop:" << dropText.local8Bit() << "\n"; 1222 // kdDebug() << "Drop:" << dropText.local8Bit() << "\n";
1228 } 1223 }
1229 } 1224 }
1230 } 1225 }
1231 else if(QTextDrag::decode(event, dropText)) { 1226 else if(QTextDrag::decode(event, dropText)) {
1232// kdDebug() << "Drop:" << dropText.local8Bit() << "\n"; 1227// kdDebug() << "Drop:" << dropText.local8Bit() << "\n";
1233 if (currentSession) { 1228 if (currentSession) {
1234 //currentSession->getEmulation()->sendString(dropText.local8Bit()); 1229 //currentSession->getEmulation()->sendString(dropText.local8Bit());
1235 QByteArray tmp; 1230 QByteArray tmp;
1236 currentSession->emulationLayer()->send( tmp.setRawData( dropText.local8Bit())); 1231 currentSession->emulationLayer()->send( tmp.setRawData( dropText.local8Bit()));
1237 } 1232 }
1238 // Paste it 1233 // Paste it
1239 } 1234 }
1240} 1235}
1241#endif 1236#endif
1242 1237
1243 1238
1244void Widget::drop_menu_activated(int item) 1239void Widget::drop_menu_activated(int item)
1245{ 1240{
1246#ifndef QT_NO_DRAGANDDROP 1241#ifndef QT_NO_DRAGANDDROP
1247 QByteArray tmp; 1242 QByteArray tmp;
1248 switch (item) 1243 switch (item)
1249 { 1244 {
1250 case 0: // paste 1245 case 0: // paste
1251 //currentSession->getEmulation()->sendString(dropText.local8Bit()); 1246 //currentSession->getEmulation()->sendString(dropText.local8Bit());
1252 currentSession->emulationLayer()->send( tmp.setRawData( dropText.local8Bit())); 1247 currentSession->emulationLayer()->send( tmp.setRawData( dropText.local8Bit()));
1253 1248
1254// KWM::activate((Window)this->winId()); 1249// KWM::activate((Window)this->winId());
1255 break; 1250 break;
1256 case 1: // cd ... 1251 case 1: // cd ...
1257 //currentSession->getEmulation()->sendString("cd "); 1252 //currentSession->getEmulation()->sendString("cd ");
1258 tmp.setRawData( "cd " ); 1253 tmp.setRawData( "cd " );
1259 currentSession->emulationLayer()->send( tmp ); 1254 currentSession->emulationLayer()->send( tmp );
1260 struct stat statbuf; 1255 struct stat statbuf;
1261 if ( ::stat( QFile::encodeName( dropText ), &statbuf ) == 0 ) 1256 if ( ::stat( QFile::encodeName( dropText ), &statbuf ) == 0 )
1262 { 1257 {
1263 if ( !S_ISDIR(statbuf.st_mode) ) 1258 if ( !S_ISDIR(statbuf.st_mode) )
1264 { 1259 {
1265/* 1260/*
1266 KURL url; 1261 KURL url;
1267 url.setPath( dropText ); 1262 url.setPath( dropText );
1268 dropText = url.directory( true, false ); // remove filename 1263 dropText = url.directory( true, false ); // remove filename
1269*/ 1264*/
1270 } 1265 }
1271 } 1266 }
1272 dropText.replace(QRegExp(" "), "\\ "); // escape spaces 1267 dropText.replace(QRegExp(" "), "\\ "); // escape spaces
1273 QByteArray tmp2; 1268 QByteArray tmp2;
1274 tmp.setRawDate( dropText.local8Bit() + "\n" ); 1269 tmp.setRawDate( dropText.local8Bit() + "\n" );
1275 //currentSession->getEmulation()->sendString(dropText.local8Bit()); 1270 //currentSession->getEmulation()->sendString(dropText.local8Bit());
1276 //currentSession->getEmulation()->sendString("\n"); 1271 //currentSession->getEmulation()->sendString("\n");
1277 currentSession->emulationLayer()->send( tmp ); 1272 currentSession->emulationLayer()->send( tmp );
1278// KWM::activate((Window)this->winId()); 1273// KWM::activate((Window)this->winId());
1279 break; 1274 break;
1280 } 1275 }
1281#endif 1276#endif
1282} 1277}
1283 1278